Like many FOSS fans, I always wanted to be an active part of the movement. My last big project was for the Amiga in the past millennium though. Nowadays I’m happy that after years of small-scale dabbling on various projects I’ve found my haven. I’d like to share my way to my recent gain of push privileges on the Python project and hope to inspire some of you to do the same.
It isn’t easy to start contributing to FOSS. Some projects seem even not to be particularly interested in new contributors – because everyone wants to contribute for fame and glory. Others could use help but aren’t eager to get new patches because of ample amounts of code rotting in the bug tracker. But there are plenty of projects that want you to help.
And yes, even CPython — i.e. the most widespread Python implementation as of 2012, I’ll call it just “Python” henceforth — needs your help! That’s the reason it’s active in its outreach to new contributors. Please note I said “contributors”, you don’t have to be a programmer – or do programmer’s work – to help.
Python core development has always been a welcoming place. But Jesse tried to push things even farther. And he succeeded at that – it’s easily one of the best places to hang out with people way smarter than you (or at least me) without being patronized.
But it’s hard to get started with new code and often even harder to get started with a new community. So what’s the most important personal attribute to get into a high profile open source project like Python, Django or Twisted? Hint: it’s like with everything important in life you can’t buy.
People sense that but don’t believe it. It’s just like kids don’t believe they’ll ever become adults and their parents were where they are now at some point in prehistoric times. And just like that, the now famous CPython developers once started submitting patches to a tracker and prayed for someone to notice.
I’m in no way famous but I think that’s exactly what it makes easier for you to relate to me.
Please compare the dates between my first patch (2011-08-08) to the bug tracker and the day I got my push rights (2012-05-14): nine months. What’s even worse, my first real code patch rotted for four months in the tracker. I’ll be honest with you: I walked away from Python core development at this point.
“If they don’t want my help, I’ll look elsewhere.”
Fortunately, Antoine gave me my “christmas presents” and committed it at last out of nowhere. That made me come back and I’m really happy about that. But was it really necessary for me to forfeit my ambitions? Not really. I’ll try to draw a picture of the real situation.
The problem is: the delay didn’t indicate that Python isn’t interested in my help. It proved it needs my help very much.
Although there are lots of committers, only few of them are active (try running
hg churn -c -d '2012 to 2013' if you don’t believe me). Committing code to a project like Python is different than dabbling on some small project. We have a high responsibility to not break stuff livelihoods depend on. Someone who commits your code has to fully understand what it’s doing and takes responsibility for your patch (although breaking stuff isn’t really a crime as long as it breaks loudly, that’s what we have buildbots for).
So, logically few active committers means few checkins means long delays on patches.
So in the beginning, you really need some patience. It also helps to hang out and socialize on Freenode’s #python-dev or the Python mailing lists (although I’m rather shy on posting on mailing lists myself; it doesn’t feel good to ask basic stuff that gets archived forever). Your also gain good karma but reviewing code of others and generally being active on the bug tracker. Once some of your patches have been committed, other developers will be much more open to look at your code. We’re all human in the end and you would also rather help out a friend, no?
And that would have been the better way for instead of retiring. While I was on IRC, I wasn’t really active on the tracker building up reputation. After my first patches were committed and I started triaging and reviewing, people even started asking me whether I need to have something reviewed.
When you arrive at this point, you’re over the hump. Contributing becomes much less of a insular patience game and much more of a social experience. You’re part of a community hacking on something cool – and while there’ll always be friction where people gather and you’ll still have to wait for reviews – it’s a lot of fun.
And one day – out of the blue – you’ll get extended privileges offered. At this point it’s important to keep your cool; too many people started doing way too much, burning out and stopping doing anything at all.
What Python Needs Most
We need triagers that weed through tickets – new and old – and help to close them. Be it by reviewing code, checking spelling, grammar and wording, trying to reproduce the problems – we’re especially in need of capable Windows users – or just pinging stale tickets and adding suitable developers to the watch lists. There’s a lot to do and the current team is glad to be able keep up with new stuff, but there are 1,500 and growing tickets with patches open – and I’d like very much to change that.
Let me stress at this point that it’s unlikely that you get commit rights if you just add own patches and wait for them to be committed. It’s expected from you to take part at the whole development process.
So my foremost priority for the next months is doing exactly that: cut back on own coding and weed through tickets and make people happy by getting simple stuff merged or at least noticed. I know from personal experience that ignored patches are worse than rejected ones.
But I could use the help of people like you, who speak Python or English and are willing to learn Python’s development process! Get an account on the tracker, familiarize yourself with our triaging process and start triaging! Meanwhile, feel free to ask your questions on Freenode’s #python-dev or our core-mentorship mailing list.
Your efforts will be noticed. And nothing’s as fun as breaking all buildbots with one commit. :)