Fork it: 8 projects on Go, in the source code of which it is interesting to dig

    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 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 the simplest 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 is useful for data scientists. This language is written in 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

    Go- Gorgonia's low-level machine learning solution  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, integrate cryptography into the 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 to 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 at 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, practical programming on Go will be held in the Binary District .

    Also popular now: