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¶
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.
Git is learned by practise, go through the interactive labs to learn a lot very quickly.
Learn about GitHub, and what are Issues and Pull requests.
Take a look at the how to document to learn about its features.
Learn the fundamentals of code review.
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.