We ❤️ open source
Few things are more fun than discovering that someone has already gone to the trouble of solving your problem for you in the form of an open-source software project.
In the case that no one has solved your problem yet, it can be very satisfying to invent a solution in the form of an open-source software project—especially if your project becomes successful.
We've experienced both scenarios in our work on address verification software, and we've created some successful open-source projects that we've shared with the world. In some cases, "successful" is a word which means that we had a need, wrote some software which met the need, and eventually published the code to GitHub. Here is a listing of some of that code, grouped according to a few simple categories. Feel free to check out the code. We hope it's helpful!
Changelogs
Much of our code is actually closed-source, but that hasn't stopped us from publishing an open-source changelog for said closed-source software:
github.com/smartystreets/changelog
Smarty SDKs
We've built SDKs that allow easy integration with each of our cloud APIs. Each is completely open-source and hosted on Github:
Testing tools
- gunit - xUnit-style testing in Go.
- assertions - Comprehensive assertion functions for Go.
- scantest - Auto test runner (with web UI) for Go tests.
- GoConvey - BDD testing for Go in the browser.
Libraries that facilitate testing
- clock - Drop-in replacement for time.Now, time.Sleep allowing control over time in tests.
- logging - Drop-in replacement for the Go log package which captures log statements.
- random - Generates randomized values in production, deterministic values for testing.
Utility libraries
- version-tools - POSIX-compatible shell scripts with no dependencies to facilitate calculation of semantic version values and to tag SCM (Git, etc.) repositories with a version.
- scanners - Variations on the bufio.Scanner interface over various types of sources (csv, strings.Fields, fixed-width, etc.).
- nu - Convenient constructor functions for Go standard library types.
The web
- detour - An alternate, MVC-based, approach to HTTP applications in Go.
- s3 - Signs requests to Amazon S3. A near drop-in replacement for http.NewRequest.
Wireup and devops
- configo - Flexible application configuration for Go programs.
- metrics - Instrumentation for Go applications.
- go-packaging - Various packaging tools for Go.
- apt-transport-s3 - S3 transport for APT.
- raptr - A simple, shell-based APT Repository builder and updater.
Research and development
- go-disruptor - A port of the LMAX Disruptor to the Go language.
- mafsa - Minimal Acyclic Finite State Automata in Go. Sounds fancy, huh?