My First GNU Mailman Patch

It has been more than 10 months since I have written a blog post. A lot has happened since then. I have 5 incomplete blog drafts, completed my undergrad, joined a startup as the software engineer, enrolled myself for “Basic Mountaineering Course” at HMI Darjeeling, attended PyCon India 2016, met many awesome people there, met awesome people of DgpLUG and many more exciting things.

Among all these important events of my life, another equally important thing happened. I got my first patch to GNU Mailman accepted. 

I am an open source and Python enthusiast. During my college days, I have attended many open source meetups and events. During one such event, I made my first open source contribution to Mozilla Gecko JS rendering engine. Though it was a very small change of just 3-4 lines but it gave me a taste of what open source is. I wanted to contribute to open source project but due to many factors, I was not able to get a start.

How and why GNU Mailman?

Since my college days, I have heard a lot about GNU Mailman from friends in my college, open source blog posts etc. I also heard that GNU Mailman has an awesome software architecture, it’s powered by Python, used by thousands of organizations & open source project and is maintained by some of the smartest people.

All these things and my hunger to learn more motivated me to start contributing to GNU Mailman. On Aug 18, 2016, 5:38pm I opened a Gitlab account, forked and cloned the Mailman repo and started navigating the Mailman source code.

At first, I felt overwhelmed(and sometimes lost). I started reading the Mailman docs and contribution guide. A good thing about Mailman architecture is that it uses Zope Interfaces. Zope interfaces are awesome and it can help new contributors like me to get a start. It gives a high-level view of what all objects are used in the codebase and how they are linked to each other. I started reading the docstring of interfaces code base and it helped me to get a good start then I started looking for some bugs to fix. On 12th September I opened my first merge request MR1 on the same day opened another merge request MR2 and a 3rd request MR3 on 25thSeptember. While my first 2 MR’s are still under review and probably would need lots of improvements before getting merged, today my third MR got accepted to be merged to Mailman core :).

I am very happy and I have learned many things during this short period. Looking forward to doing lots of contributions to MM and open source.