Hi! It has now been three weeks since my internship in Debian started. In my first post I said a few words about the project I am working on, but I’d like to list the key points again.
The central part of the project is the census collecting detailed information about Debian derivatives (software distributions based on Debian). Derivatives may be quite different depending on which Debian release they are based on and how they modify or extend it. Each derivative has its own wiki page where its maintainer is expected to keep the most up-to-date information, like links to the official website, wiki, blogs, forums, git (or other VCS) repositories and mirrors, as well as contact information and apt sources.list snippets.
The census scripts take information from the wiki pages and process it for integration into various parts of the Debian infrastructure. For example, they find a link to the derivative’s blog, download its web pages, use automatic feed discovery algorithms to find a link to the blog’s Atom/RSS feed and then produce a configuration snippet to be added to the aggregated one in the Planet Debian repository. Once it is added, the post from the blog will appear in the Planet Debian Derivatives feed.
Some of the derivatives in the census are marked as inactive as they are no longer maintained for some reasons. Their information is still present in the wiki but is not processed by the census scripts, so it is mostly preservation of history. And if you are wondering why some distro is inactive, on the wiki page there is often a link to a discussion with its maintainer or to some other source where the reason is explained.
Directories and files produced by the census scripts are listed here. If the scripts fail to download or process some data or some other issue occurs, there often are mail templates to be sent to the maintainers. For now there is no option to send notifications automatically, but it will appear in the nearest future as it is the first of the two blockers (main integration tasks). I am already working on the subscription system and hope to finish it by the New Year :)
During the last three weeks I have been working on several small tasks:
- some that helped to re-enable the census (make its scripts produce data daily):
- implementing an option to disable some scripts
- adding my email to the crontab files to receive the output of the scripts
- some connected to Planet Debian Derivatives:
- preparations for the future work on the subscription system:
- synchronizing the census output produced by three parallel jobs and thus having errors listed quite randomly
- removing some errors from the output
Every two weeks interns receive a mail from Outreachy organizers with guidelines and goals for the next couple of weeks. There also are some topics that we are suggested to talk about in our blogs to help future applicants and interns. This week’s topic is “Everybody struggles”, about getting stuck and asking for help. (All my future posts will probably have the how-I-got-stuck section too, because it happens all the time!)
For me getting stuck is as much a part of the learning process as reading, making notes, trying new tools and approaches, searching for the code samples and so on. I only feel foolish when I realize I had misunderstood something at the very start and was moving in the wrong direction. But I try to remind myself that even then it is not a waste of time, as I learn something anyway.
For future applicants and interns You can’t escape being stuck while working on a complex project. And after focusing intensively on some task and still not moving any closer to the solution you will probably feel frustrated. But all this doesn’t just drain your energy, it also shapes your understanding of the task and helps you find useful tools for your future work. So don’t regret the time spent! And if you feel confused and question your chosen approach, mentors are always here to guide you.
In my post about the application process I wrote about some difficulties I had faced while making my first contributions. At that time I was hesitant to ask for help and scared of making mistakes. Also being a non-native English speaker I felt more secure when contacting the project’s mentors by email, so it often took more time to get help than if I used instant messaging1. Later I slowly began talking in IRC and even got used to discussing my code publicly. There was no pressure to do so, only encouragement, and I just decided to try one day and all went good. I started receiving help almost immediately and although I continue making mistakes from time to time, I am not as upset about them as in the beginning.
For future applicants and interns After all you aren’t supposed to know everything! You are here to learn. Good luck to you all!
1 BTW, I really struggled to find an IRC client for my Android phone until I came across Riot Matrix client. It is super cool. It integrates several IRC networks like Freenode and OFTC and can work as an IRC bouncer (you remain connected and don’t lose message history). There also are web and desktop versions. Hope it will be of use to someone.