We in the Binary District are intensively on Go. In two days, you can learn to understand the ideology and insides of Go, to write clean, testable code. But this is the first step, and then - practice, practice, practice: read someone else's code, write and edit your own.
Open source is ideal for this:
- Open source enhances abundance. You can indiscriminately explore the source.
- Open source provides an incentive to write as clean code as possible and document logic.
- Contributing to open source traffic improves karma.

')
Together with a graduate of our
Go-course, Sergei
Tolsi, we have compiled a list of open
- ended projects of various levels and orientations that are suitable for learning how to write good code and at the same time make the world a better place.
Tolsi strategy:
“If you want to use open source for learning, first decide on a specific area of work and set a goal - for example, make a website or a game, some kind of service - and then find a similar project or framework with examples. For example, I work in the field of cryptocurrency and found out that on Go they write the implementation of the Lightning network to speed up transfers on the Bitcoin network and the most stable node for Ethereum is geth . ”
1. Docker
Let's start with one of the most complex and voluminous projects known far beyond the Go Community.
Docker since 2013 is distributed freely, under the Apache 2.0 license, and is a system for creating isolated virtual machines with any environment necessary for application testing. Its key component,
libcontainer, is the standard for this kind of systems. The best implementation of the "sandbox" for the example is not found.
2. Kubernetes
Another interesting project that appeared in mid-2014 is closely related to Docker:
Kubernetes , software for group container management on a large fleet of devices. It is possible that you have already dealt with him, but did you look under the hood of this project?
If you are learning Go, it’s worth it, if only because Google programmers wrote Kubernetes, and RedHat, IBM and Microsoft are among the project’s contributors. The Kubernetes code base is provided with good guidance from the
Kubernetes Contributor guide , and you can chat with the development team on Slack during
regular question and answer sessions .
3. Syncthing
Syncthing is a well-designed project with no noticeable technical problems and critical bugs, created with an eye on
Effective Go practices.
This implementation of the BitTorrent Sync distributed file-sharing system is based on the open-source Block Exchange protocol (BEP).
Compared to Kubernetes, Syncthing has a very simple architecture consisting of only three main layers. The program code corresponds to the standard Go library and combines it with LevelDB and several more libraries. They are used to encrypt network connections, calculate hashes, and store data. To understand its code base will help
guide from the official site and a
lively forum .
4. G3N
What about a 3D engine created by programmers for programmers? This title wears
G3N , and is also entirely written on Go. The engine is suitable for games, but is positioned as a tool for writing interactive applications.
5. GoLearn
Machine learning and Python are almost synonyms, however, Go can also be useful for data scientists. This language
contains a simple and flexible
GoLearn machine learning
library . It uses the
BLAN shell
from Gonum and supports the basic machine learning algorithms, including: support vector machine, linear regression, neural networks, random forest, decision trees, and the naive Bayes classifier.
6. Gorgonia
The low-level go-
gorg machine learning solution —
Gorgonia — also deserves attention. This library, reminiscent of the
TensorFlow concept, uses the concept of representing equations as a graph and is packaged in a single binary file.
7. acra
An interesting experience could be the study of the
acra codebase , a tool for encrypting and securely storing databases developed for microservices on mobile platforms and on the web. This is an opportunity to study really safe code and learn to detect and protect against data leaks and integrate cryptography into a project.
In addition, the
AcraWriter client library is available not only on Go, but also on Ruby, Python, NodeJS, iOS (Objective-C / Swift), Android Java and
PHP — you can compare implementations and learn some of the subtleties of software porting in practice.
The latest version of Acra documentation and tutorials is available on the official
Cossack Labs server .
8. ConnectorDB
ConnectorDB is suitable if you do not just want to learn someone else’s code, but also do something useful for yourself. This is an open source platform for deploying your own segment of the Internet of things based on the devices you already have at hand. It aggregates data from computers, smartphones from browsers and processes them.
Having understood the code, you can write new modules and connect almost any device to ConnectorDB, set up monitoring of your own life, starting with monitoring physical activity and ending with counting productivity and mood assessment.
And also ...
The ideal place to start your search is
the Awesome Go list , where the community collects links to the best open source libraries and applications on Go. In addition, the Wiki is useful in the language repository It has lists of
potentially useful articles ,
courses, and
books .
By analyzing the project code and contributing, you can develop acquired skills and update knowledge. There is a chance to get involved in the open source movement, and there is only one way to find out how deep and for a long time. And for those who are going to start from scratch and want to immediately join the development, on December 8 and 9 in the Binary District there will be a
practical intensive programming course on Go .