Below is a list of packages we use for various projects. Awesome Go is a great list, but it includes a lot of options. Below are the packages we have standardized on in the Cyber & Information Security Research Group (CISR) at ORNL.
Tools
- Editor: atom with go-plus
- Package management: dep - dep is the official experiment, but not yet the official tool
- Development/deployment platform: docker with swarm
Packages
- Command line/configuration: urfave/cli - package for building command line apps in Go
- RPC: gRPC - HTTP/2 based RPC
- Serialization: protobuf and gogoprotobuf (for faster marshalling and unmarshalling)
- JSON: easyjson - faster JSON marshalling and unmarshalling
- Logging: zap or zerolog - zero allocation logging (gRPC zap middleware)
- Performance monitoring: prometheus - metrics and alerting (gRPC prometheus middleware)
- Diagnostics: gops
- Testing: testify
- Embedded data store: badger - fast key-value store
- HTTP framework: echo
- Embedding resources: go.rice
- Communications: mangos - a pure Go implementation of nanomsg
- Configuration: BurntSushi/toml - TOML parser
- Console progress bar: pb