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!


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:

SmartyStreets 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?
This site uses cookies for analytics, personalized content, and ads. By continuing to browse this site, you agree to this use.
Consuming raw or undercooked cookie dough may increase your risk of foodborne illness.