Workflow Overview

Introduction

This section describes the Agile methodologies that we use to develop our projects. You will find here a detailed description of the tools and processes that we use to collaborate on Open Source projects.

This topic is explained from scratch, assuming that the reader is not familiar with Git nor GitHub. Even that we try to make it as beginner-friendly as possible, developing software is a complex process that takes time to learn and master.

TLDR

We use Git for version control, and we host our projects on GitHub. We communicate asynchronously using Issues, Pull Requests, and code reviews to work collaboratively on the repositories. We manage our GitHub notifications with Octobox, and we use Zoom and Telegram to coordinate a couple of times a week.

Goals and use cases

Our workflow helps us work asynchronously and maximize our productivity. Implementing software development best practices allows us to keep track of all our work, and increase the overall quality of our projects.

Thanks to that we can speed up our development cycle, reduce the number of mistakes in our code base, and fix errors quickly.

A nice side effect of this workflow is that it not only allows the community to keep track of how our code-base evolves, but also makes accessible the whole development and decision-making process behind the released code.

Pros & Cons

  • Pros

    • Efficient and asynchronous collaboration among developers

    • Complete understanding of the evolution of our code base

    • Documents the design and decision-making processes of the projects

    • Consistent across different projects

    • Agile-friendly and completely transparent

    • Relies on few tools that are free

  • Cons

    • Complex process that takes time to learn

    • Rough learning curve

    • Taking shortcuts will increase the technical debt

    • Errors and issues with the tooling or processes slow down development a lot.

Requirements and background

There are no hard requirements to understand this topic, but knowing about the following topics is helpful:

  • Agile development

  • Git and version control

  • How to use GitHub

  • Software development and code reviews

  • Basic knowledge of GNU/Linux

Learning

  1. We recommend understanding what Git is first. These slides provide a gentle introduction to Git, and the main advantages that Git can offer. After that, reading the Git handbook can help you understand better what you can do with Git.

  2. Git is learned by practise, go through the interactive labs to learn a lot very quickly.

  3. Learn about GitHub, and what are Issues and Pull requests.

  4. Take a look at the how to document to learn about its features.

  5. Learn the fundamentals of code review.

  6. Practise by opening issues and PRs in this repo.

Reference

We recommend using the Git Cheat Sheet for looking up commands, and the Pro Git book to look up the most arcane features of git.