Google Go - see top ten projects powering with Go

Jump in to see the top ten notable projects that were made with the use of Google Go - a quickly compiled and lightweight code.

You’d have a hard time finding a better success story for Go than Docker, at least for now. In a little more than a year, this software-containerization technology has become the poster child for Go’s suitability to large-scale, distributed software projects. The Docker team liked Go because it offered a slew of benefits: static compilation with no dependencies, a strong standard library, a full development environment, and the ability to build for multiple architectures with minimal hassle.

Project: Docker

If Docker is written in Go, it stands to reason that some of the most significant projects expanding on it are also written in Go. Kubernetes, Google’s orchestration project for Docker, is a Go project, along with the Docker networking project Weave and the Shipyard cluster-management system. Since building on top of Docker means facing the same technical challenges as Docker, it only makes sense to continue that project’s work using its own idioms and choice of language.

Project: Kubernetes

Etcd and Fleet
CoreOS uses Docker to turn Linux into a herd of loosely coupled containers, a possible path away from the tangled skein of dependencies that has become the sine qua non of Linux package management. It’s no surprise, then, that CoreOS leverages Docker to accomplish this magic -- and that two of CoreOS’s fundamental services, etcd and fleet, are both written in Go. Fleet lets you “treat your CoreOS cluster as if it shared a single init system"; etcd, a distributed key-value store, handles the synchronization of settings between Docker applications and CoreOS instances. Both were written in Go because of Go’s “excellent cross-platform support, small binaries and a great community behind it."

Project: Etcd and Fleet

If Docker constitutes the bottom strata of a pyramid, with CoreOS as the middle level, Deis could be the capstone. It gives developers a Heroku-esque PaaS built entirely out of open source components and with a lightweight overall construction. Anything that can be put into a Docker container can be deployed, along with existing Heroku build packs if you still happen to have those lying around. The whole package is assembled out of the aforementioned pieces: Docker for the container structure and CoreOS for the OS layer, with Deis itself also written in Go (with some Python for the API server).

Project: Deis

A Y Combinator-supported project, Flynn has many of the same concepts and conceits as Deis, but with subtle differences. Like Deis, Flynn can also work with Heroku buildpacks and Dockerfiles, and it's built using elements of CoreOS, although not directly on top of it. Unlike Deis, though, Flynn is built around a two-tier system architecture, with the lower tier inspired by the Google Omega project, a scalable scheduling system for compute clusters, and the upper tier designed to handle the actual deployment and maintenance. Both layers are written in Go, of course.

Project: Flynn

Many of Go’s features are a strong complement for distributed server applications, so it’s little surprise the major Go projects are server- and cloud-oriented. But desktop applications written in Go are starting to turn up, too, and Lime is a good one. It’s a re-creation of the widely used and loved Sublime Text editor -- which, for all of its positive attributes, is not open source, to the chagrin of many who work with and depend on it. Lime is still heavily prototypical, so it shouldn’t be used for production work, but with almost 10,000 stars on GitHub as of this writing and almost 800 forks, it’s making fast progress.

Project: Lime

One sign of real-world language traction is when developers build commonly used tools with it, such as a Web framework. Enter Revel, a “high-productivity, full-stack Web framework" written in Go. It’s outfitted with all the features you’d expect: routing, caching, parameter parsing, templating. It also sports a few features you might not expect, such as internationalization, a testing framework, and a modular design that lets developers add their own request processing systems (aka filters) to Revel without having to rip everything apart. While Revel is technically production-ready, the Revel team is still holding off on applying the all-important 1.0 moniker before a few more pieces are snapped into place.

Project: Revel


InfluxDB is “distributed time series database with no external dependencies." The term “time series" means InfluxDB is mainly concerned with taking in metrics or events, and allowing them to be analyzed in real time. “No external dependencies" means you need no other software to use InfluxDB; it’s entirely self-contained. Data can be written to or read from the database by way of REST calls that submit JSON, and queries can be made via a simple SQL language that even allows regexes. InfluxDB is highly elastic and horizontally scalable, and it’s likely Go was chosen as the language to make those features possible and easy.

Project: InfluxDB

Syncthing could be either a desktop or server project, given that it’s theoretically useful in both contexts, but it’s tempting to call it the former for the sake of noting that Go is also useful for desktop applications.

Syncthing implements a protocol for synchronizing folders between multiple devices, à la the BitTorent Sync project. The developers’ rationale for using Go revolves around many of the language’s most praised features: simplicity, speed, concurrency, ease of deployment across architectures, and so on. Although nothing is stopping anyone else from building Syncthing clients in Python or C, the Go version is here and is clearly aimed at cross-platform use.

Project: Syncthing

Gogs (Go Git Service)
Ever wanted to host your own Git service, like GitHub but on your own hardware and under your own control? Gogs (Go Git Service) was written to fill that need and can do it across all major OS platforms (Linux, Windows, and Mac OS X). All that’s needed is a copy of Git, a database of some kind -- MySQL, PostgreSQL, and SQLite3 (included) are all supported -- and the binaries.

Project: Gogs (Go Git Service)