Skip to main content

Command Palette

Search for a command to run...

LOG-4 Week 2: (Going back part- 2) "My first MR "

Updated
4 min read

Before I could start contributing, I had to actually get Mailman running on my mac.
Sounds obvious, but for many people setting up the development environment is mini-challenge on its own.
Mailman has a contributor guide at docs.mailman3.org/en/latest/devsetup.html that walks you through it.

Start
The process involved forking the Mailman Core repository.
then you need to work through the dependencies step by step- Python 3, tox, Postfix, and a handful of other things that you install when you need them, rather than all at once. I did it that way too: read what was needed, install it, run into something, read again, then install that. It wasn't all at once and it worked.

The test suite runs via tox, which creates a virtual environment, installs everything into it, and then runs the tests in isolation. Once that is passed, you know you get a working setup!

Finding Issues
Especially for the next GSoC aspirants reading this: I was not in the position of someone who had spent weeks reading every corner of the codebase and had a list of ideas. I was behind. The community bonding period had already surfaced contributors who were not just solving issues but also reviewing each other's MRs, suggesting things on other people's threads, behaving more like junior maintainers than newcomers.

{One of them was Satoh Fumiyasu (@fumiyas). He later went on to leave review comments on one of my MRs too, and helped me get a CI pipeline passing on it.}

So I made a practical decision: I would not try to find my own novel issue to open. I would look at the issues the mentors themselves had filed. That is how I found issue #1252.

My first Issue
Issue #1252 was a cleanup task. The attribute encode_ascii_prefixes existed in Mailman's database model and style system, but it was never actually used, not in Mailman 3, and apparently not meaningfully in Mailman 2 either. It was a ghost column that was sitting in the database, set in styles/base.py during list initialization, referenced in a test, but doing absolutely nothing.

The fix seemed almost embarrassingly simple: remove the DB column from model/mailinglist.py, remove the setter from styles/base.py's Identity.apply method, and clean up the corresponding test in utilities/tests/test_import.py.

Four files were touched. A handful of lines were removed, but no new logic was added. I almost second-guessed myself , but went ahead anyway and opened the issue, made the changes, and submitted MR !1453.

Review of my first MR
the review however wasn't what I expected!
I expected that someone would look at it and say "yeah, looks good," and merge it. It wasn't much you know. But what actually happened was a three-way discussion between me, two project owners (Mark Sapiro @msapiro and Stephen Turnbull @yaseppochi), and a contributor named Danil Smirnov (@danil-smirnov). Honestly I freaked out at once.
Check out MR !1453 for overview!! ;)

Either way, the moment It Merged was Pure joy.
( TL;DR I had submitted code to a real project, that real people use, that has been running mailing lists since before I was thinking about software, and it had been reviewed by actual project owners and an engaged contributor community. Bwahahahahaha!!!)

Finish
And so similarly I went on to open two other MRs of my own and managed to become a part of the community i so feared to enter once..

My note to the fam targeting for GSoC:
Get on the the train and do not stop until you reach your destination, because some day you will, just catch the train early and don't be like me!

Next up - LOG-5: Understanding Mailman's Architecture. Because after community bonding, I had to actually build something. And to build it, I needed to understand what I was building on.

Thanks
Navya, Naveeeya
(Linkedin)

13 views