Wed 12 March 2014
This is my report/talk material for the upcoming Debian-MiniConf 2014. Due to lack of adequate time, I was unable to apply for a visa and hence am presenting remotely. These are my observations about newcomer experience with regards to packaging, getting to know the community in Debian and drawing from experience in GNOME.
Who? Where? Why?
From 2006 - 2009 were my first accquaintances with GNU/Linux. I was majorly distro hopping, messing with my system installing unstable packages with some lather, rinse and repeat.
Fast forward 3 years later, as I was looking for a career change and a friend taught me how to make a patch and suddenly everything I knew about the GNU/Linux system made sense and so I went on to compete in Outreach Program for Women, Google Summer of Code, speak at conferences about GNOME and now mentor in the upcoming round of OPW :-) At this point, learning about Debian conf, made me recall the times I failed at packaging.
My first failed attempt at packaging was when I wanted to package cnetworkmanager for Ubuntu. In retrospect, I think that I lacked proper peer guidance and the clarity about contributing to FOSS and hence quickly abandoned my efforts. As recent as 2013, I wanted to package for Fedora but looking at the specs file, made me abandon my efforts again.
These past two years, I've been speaking to newcomers, teaching newcomers and learning with newcomers on how they approach learning FOSS and submlimally by telling them the best ways, I've learnt that in a nutshell, the ideal approach would be:
- Go to the official website, read their "get-involved", "help us" or "contribute to X" pages.
- Setup the development environment.
- Do your ground work.
- Find willing mentors and work with them.
Where's Debian in the picture?
I have used Ubuntu extensively and knew my way around apt-get but that’s about all the things I knew about Debian and debian-based distributions. I learnt about Debian-MiniConf 2014 through the Google Women in Tech grants page and decided to learn packaging to go back to those failed experiences and see what I could change about them and this would give me a headstart to be a part of Debian community
Choosing your tools
I am a regular Arch Linux user...gasp!? Well, so what? doesn't mean I cannot contribute to Debian but yes, setting up a new distro and a development environment means keeping in mind:
- Disk space
- Transferability of existing work and resources
- Time for setup
- Bandwidth required for downloading, upgrading packages etc.
In GNOME, we have a newcomers tutorial which offers a VM image that comes with the build system JHBuild pre-setup in it but there no such resources on Debian website. The plus side is that the tools required to be installed to start packaging are few and isn't hard to setup all by yourself and so I did.
I downloaded the Debian testing ISO and filled it with packaging tools and put into a Vagrant box. This meant I could now ssh into my running debian VM and go about my work and use SCP if I needed to transfer files and directories in and out of the VM. Even better though at this point would be to use Docker images.
My first experience with contributing to GNOME started with learning to make a patch, learning about concept of software in stable and unstable stages, releases (schedules and what they output). All of this information was pieced toghether over time of reading GNOME wiki pages, seeing what GNOME Love had to offer, interacting with my mentor and from knowledge gained about the previous distro hopping. So from what I knew about versions of software available in package repositories and what I learnt about releases in GNOME started coming together as a picture about software development in FOSS.
When I started off trying to make a contribution to Debian, I navigated the Debian website landing on a introductory page about Packages, Developer's Corner and the landing page for Documentation, clicking on every link that was related to Packaging. Since I knew about GNOME wiki, I figured there must be a Debian Wiki too. The Teams page helped me visualize the division of labour in Debian.
and when I got stuck, it was time to turn to the community for help.
Hello! I am...
In my excitement of wanting to generate a deb file (thinking at this point that this was all it took to do packaging), I summarised to #debian-devel, #debian-gnome, #debian-mentors and even on #debian-women all that I had done. But none of what they suggested made in sense, perhaps a case of misunderstood context? Even though I am fluent in English, it was frustrating to not be able to speak to someone who I could understand where I am coming from.
So I went back to #debian-bcn2014 and Ana understood my situation perfectly and calmly led me through the rest of the steps. Her ideology "Learn to package first and then a good package" suited me because that's the way I learnt.
So, this episode taught me that finding a mentor that assumes very little baseline of what you know and takes you step by step ahead is the really the recipe for a good mentor-student relationship and I've experienced this over 2 times with OPW and GSoC in GNOME.
So what did you do?
I am currently packaging GNOME Code Assistance and Gedit Code Assistance modules. The former provides code assistance services for GNOME. Basically, if you have an IDE or any editor in GNOME where you want to put in syntax error checking features for a particular language, this is the package that does it. While the latter is the package that emits the dbus signal in Gedit text editor back to GNOME Code Assistance so it take it to the correct backend enabled in the former (language we are checking errors for).
So far these are what I'd like to call these side-effects of learning to contribute to Debian:
Understanding “dependencies”: autotools meant bringing in dh-autoreconf and then looking at configure.ac and the config.log to figure out exactly which packages were required to enable all functionality in gnome-code-asssitance.
My next immediate concerns are:
- Package gnome-code-assistance for Debian Unstable.
- Update a QA package and request Ana to sponsor it.
- Get both software to work: Pursue the upstream author to track issue of segfault
- Learn to use it and document for end users.
From GNOME, with love
A few ideas that I feel Debian can take up to attract newcomers:
GNOME love concept in packaging. For example tagging packages that are orphaned and are in QA means they can be updated by anyone. This makes a great beginner contribution. Specifically having a tutorial to explain this task would be great.
Wiki pages about Packaging that make use of great videos from the previous debian confs, for example there is Debtags. Possibly including links to these videos:
Christopher Fergeau conducted an interesting session at FOSDEM 2010 and a reverse of this would also be good. Debian conducting sessions discussing how best can upstream help with downstream development? This would make an interesting session for upstream developers interested in giving back to their favorite distro.
A newcomers IRC channel or mailing list specifically for packaging?
Packaging workshops/parties/BOFs if this hasn't already been done before?
A video of me speaking the above content is here: http://youtu.be/g4-aei7A9L0
Thanks for reading and watching this far! Thank you to Debian-MiniConf team, especially Tassia and Ana who helped me put this together.