Documentation

 

We Open Source

Not many things are more fun that 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!

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.

The Web

  • detour - An alternate, MVC-based, approach to HTTP applications in Go.
  • go-aws-auth - Signs requests to Amazon S3 and STS.

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?