Contributing to the Debian Brazil Project
As the final contribution project in our Open Source Software Development course, our professor introduced us to Charles and Lucas Kanashiro, two active maintainers and contributors from the Debian Brazil community. Through them, we got to know the Debian project better and made a small contribution during class.
The Debian Project
In the first of two classes on this topic, we were introduced to the Debian project, its philosophy, and how the release process works.
Debian is a fully open source initiative that began in 1997. It’s guided by a compelling philosophy of giving back to the free software ecosystem, enabling contributors from all around the world to collaborate and shape this kernel-based distribution. The guests, Lucas Kanashiro and Charles, were really kind and patient with us while explaining the project.
What caught my attention the most was that the community has well-established principles (the Social Contract) to ensure Debian is as free as software can be (at least from my still-limited understanding of the topic). It was also interesting to finally grasp what being a “distro” really means and how Debian’s development workflow functions.
Setup
To contribute, we needed a “pure” Debian OS installed on our machines. Since I use Ubuntu, the solution was to configure a virtual Debian machine. Thanks to the very helpful tutorial prepared by our TA David, the process went smoothly. It was my second time setting up a VM (the first was for the kernel project), and this time I really understood what I was doing—what each configuration step meant (again, David played a key role by answering my questions). As a computer science student, knowing how to properly set up a VM is important, and now I finally feel confident doing it on my own.
Contributing to Packaging
After the setup and the explanation provided by the guests on how Debian packages work, the second class was hands-on: contributing to the packaging process.
Although this might sound straightforward, deploying software into production is rarely simple. Anyone with real-world development experience knows how complex this process can be—it often involves hours of configuration, extensive dependency management, and careful attention to detail. To help us understand our task, we received a solid introduction to Debian’s internal components and packaging system.
We worked specifically on two important files in the ruby-mime-types-data
package: debian/control
and debian/changelog
.
- The
control
file is responsible for package metadata, including crucial information like dependencies and compatibility. - The
changelog
file serves as a historical log, documenting every update made to the package, especially those related to packaging.
See the commits below:
Although our contribution was relatively small, it gave us valuable insight into how Debian works and showed us how even minor contributions can have a meaningful impact in large-scale open source projects.
The process went really well—the package built successfully, and we opened a Merge Request on GitLab. A day or two later, we received confirmation that our change had been accepted :)