What type of software do you write at your workplace?

This page summarizes the projects mentioned and recommended in the original post on reddit.com/r/golang

Our great sponsors
  • Scout APM - Less time debugging, more time building
  • SonarLint - Deliver Cleaner and Safer Code - Right in Your IDE of Choice!
  • SaaSHub - Software Alternatives and Reviews
  • vcluster

    vcluster - Create fully functional virtual Kubernetes clusters - Each vcluster runs inside a namespace of the underlying k8s cluster. It's cheaper than creating separate full-blown clusters and it offers better multi-tenancy and isolation than regular namespaces.

    Kubernetes controller (it's like an extension for Kubernetes) - https://www.vcluster.com/ . Most of the Kubernetes ecosystem is written in Go, so you have all the API definitions, libraries, etc. that you can just import, and as a result people rarely go with other programming languages. Most used libs would be kubernetes/client-go, kubernetes-sigs/controller-runtime, spf13/cobra

  • TinyGo

    Go compiler for small places. Microcontrollers, WebAssembly (WASM/WASI), and command-line tools. Based on LLVM.

    But then I met TinyGo.

  • Scout APM

    Less time debugging, more time building. Scout APM allows you to find and fix performance issues with no hassle. Now with error monitoring and external services monitoring, Scout is a developer's best friend when it comes to application development.

  • PlatformIO

    A professional collaborative platform for embedded development :alien:

    I play with embedded a lot (have even done so professionally off and on). I never considered the Arduino IDE to be "industrial strength", so I avoid using it. I found "PlatformIO" to be a reasonable platform for a professional. It is written in Python and straps together 1000's of open-source projects. You can pick different frameworks, OSes and boards. It was "good enough" but in the back of my mind, it still always felt "fragmented". It presented lots of "choice", but many of those choices were bad. At least they encouraged and supported testing.

  • jsondiff

    JsonDiff library (by nsf)

    I currently work for a company that provides a security operations center to major corporations and governments. In my current role, the most important language is Python since any non-developer in our company still often knows Python due to the nature of their work, but I wrote a reasonably complicated Lambda in Go and have contributed to some Go open source projects we depend upon (Argo). There are a range of libraries I've used from github.com/nsf/jsondiff to AWS SDK stuff to Zap (a logging lib from Uber) to Hashicorp Vault stuff and testify for testing purposes. I've also had to use yaml, and I used the K8s library for that. I can't think of too much else I've used outside the standard library offhand.

  • Ory Hydra

    OpenID Certified™ OpenID Connect and OAuth Provider written in Go - cloud native, security-first, open source API security for your infrastructure. SDKs for any language. Works with Hardware Security Modules. Compatible with MITREid.

    For hobby work I've used Gorilla Mux for web APIs and written a UI in Angular and I depended upon Badgerdb for data storage since it's a fantastic in-process datastore and well supported since it's the backend for Dgraph. I'm quite happy with those choices, but I'm going to be rewriting my hobby work and using Postgres by way of Ent, playing with Go HTML templating, and using just the standard library for routing (probably... might go back to Gorilla). I might use ORY Hydra for all my auth needs this time around, but of course, hobby work moves far slower than professional work, so it's hard to say what all I will get around to doing.

  • Juju

    Universal Operator Lifecycle Manager (OLM) for Kubernetes operators, and operators for traditional Linux and Windows apps, with declarative integration between operators for automated microservice integration.

    At Canonical I work on two open-source projects written in Go: Juju, a large cloud-based application deployment tool, and Pebble, a small Linux service manager. Both include CLI clients and API-based server daemons. Juju in particular is a large distributed system.

  • pebble

    Take control of your internal daemons! (by canonical)

    At Canonical I work on two open-source projects written in Go: Juju, a large cloud-based application deployment tool, and Pebble, a small Linux service manager. Both include CLI clients and API-based server daemons. Juju in particular is a large distributed system.

  • SonarLint

    Deliver Cleaner and Safer Code - Right in Your IDE of Choice!. SonarLint is a free and open source IDE extension that identifies and catches bugs and vulnerabilities as you code, directly in the IDE. Install from your favorite IDE marketplace today.

  • pq

    Pure Go Postgres driver for database/sql

    We usually use chi for HTTP routing, gRPC for internal microservices (using gogoprotobuf for a more performant protobuf implementation), Sarama to talk to Kafka, sqlx and github.com/lib/pq to talk to Postgres, aws-sdk-go to talk to AWS services, internally developed libraries to integrate database/sql with AWS Athena and to read and write parquet files, zap for structured logging, stuff like that.

  • cobra

    A Commander for modern Go CLI interactions

    I just use Cobra (cli verbs and flags) and Viper (configuration) for the most part. github.com/spf13/cobra and github.com/spf13/viper

  • viper

    Go configuration with fangs

    I just use Cobra (cli verbs and flags) and Viper (configuration) for the most part. github.com/spf13/cobra and github.com/spf13/viper

  • Benthos

    Fancy stream processing made operationally mundane

    Scalable data streaming systems based on https://www.benthos.dev/

  • Gorgonia

    Gorgonia is a library that helps facilitate machine learning in Go.

    p/s I am the main contributor to Gorgonia which is a pure Go deep learning library that somewhat predates TensorFlow

  • turandot

    Compose and orchestrate and Kubernetes workloads using TOSCA

    I created Turandot, Candice, Reposure, Knap, CNCK, QCR, multusctl, and a whole bunch of dependent libraries, and also participate in a bunch of other K8s-related projects.

  • candice

    Cloud-Native Network Device Configurator

    I created Turandot, Candice, Reposure, Knap, CNCK, QCR, multusctl, and a whole bunch of dependent libraries, and also participate in a bunch of other K8s-related projects.

  • reposure

    Manage and access cloud-native container image registries for Kubernetes

    I created Turandot, Candice, Reposure, Knap, CNCK, QCR, multusctl, and a whole bunch of dependent libraries, and also participate in a bunch of other K8s-related projects.

  • knap

    Kubernetes Network Attachment Provider

    I created Turandot, Candice, Reposure, Knap, CNCK, QCR, multusctl, and a whole bunch of dependent libraries, and also participate in a bunch of other K8s-related projects.

  • cnck

    Cloud Native Configurations for Kubernetes

    I created Turandot, Candice, Reposure, Knap, CNCK, QCR, multusctl, and a whole bunch of dependent libraries, and also participate in a bunch of other K8s-related projects.

  • qcr

    Queued Custom Resources

    I created Turandot, Candice, Reposure, Knap, CNCK, QCR, multusctl, and a whole bunch of dependent libraries, and also participate in a bunch of other K8s-related projects.

  • multusctl

    CLI client for Multus CNI

    I created Turandot, Candice, Reposure, Knap, CNCK, QCR, multusctl, and a whole bunch of dependent libraries, and also participate in a bunch of other K8s-related projects.

  • gqlgen

    go generate based graphql server library

    Backend APIs with Graphql using https://github.com/99designs/gqlgen.

  • zap

    Blazing fast, structured, leveled logging in Go.

    Other packages of note: https://github.com/uber-go/zap https://github.com/go-ozzo/ozzo-validation

  • ozzo-validation

    An idiomatic Go (golang) validation package. Supports configurable and extensible validation rules (validators) using normal language constructs instead of error-prone struct tags.

    Other packages of note: https://github.com/uber-go/zap https://github.com/go-ozzo/ozzo-validation

  • or-tools

    Google's Operations Research tools:

    Neat. I was just seeing someone on this subreddit asking for a Go port of Google’s OR Tools.

  • compress

    Optimized Go Compression Packages

    https://github.com/klauspost/compress on critical paths which need to do compression/decompression: it's optimized for linux/amd64 and allows to pool compressors/decompressors.

  • safefile

    Go package safefile implements safe "atomic" saving of files.

    https://github.com/dchest/safefile a no-brainer package which implements (almost) proper atomic file rewriting.

  • clock

    Clock is a small library for mocking time in Go. (by LopatkinEvgeniy)

    https://github.com/LopatkinEvgeniy/clock an in-house package written to mock time in unit tests which need it (at the time it was written, its competitors were not quite on par; the situation had most probably changed since then).

  • goleveldb

    LevelDB key/value database in Go.

    https://github.com/syndtr/goleveldb for heavy-duty local data storage.

  • gojsonschema

    An implementation of JSON Schema, draft v4 v6 & v7 - Go language

    https://github.com/xeipuuv/gojsonschema to validate some incoming JSON docs.

  • colfer

    binary serialization format

    https://github.com/pascaldekloe/colfer high-perf binary sesialization format (for internal on-disk data storage).

  • jsoniter

    A high-performance 100% compatible drop-in replacement of "encoding/json" (by json-iterator)

    https://github.com/json-iterator/go an alternative JSON encoding package which allows to stream (flush out) encoded data as soon as it's able to (which is in contrast with the stock package which buffers everything until the encoding is known to be complete and OK).

  • easyjson

    Fast JSON serializer for golang.

    https://github.com/mailru/easyjson fast JSON (de)serializer which go generates code instead of using reflect at runtime.

  • mapstructure

    Go library for decoding generic map values into native Go structures and vice versa.

    https://github.com/mitchellh/mapstructure because we have JSON documents which contain rugged arrays ;-)

  • Testify

    A toolkit with common assertions and mocks that plays nicely with the standard library

    https://github.com/stretchr/testify in unit tests.

NOTE: The number of mentions on this list indicates mentions on common posts plus user suggested alternatives. Hence, a higher number means a more popular project.

Suggest a related project

Related posts