On Contribution

May 5th, 2011 § 16 comments

Pre­am­ble

A recent post on Hacker News enti­tled “Why I still don’t con­tribute to open source” raised a series of thoughts in my head — but then, before I could even take the time to gen­er­ate the small­est of replies, Brian Curtin swooped in and made prob­a­bly one of the sin­gle best com­ments in reply, and on the sub­ject of con­tri­bu­tion that I’ve ever read. The orig­i­nal post; and Brian’s excel­lent reply were enough to get me obsess­ing about this sub­ject again — eager to share my thoughts and feel­ings on it.

A while ago (almost exactly a year, oddly enough) I posted a ques­tion here to my blog — “Why aren’t You Con­tribut­ing (to Python)” — the replies to that post, both in the orig­i­nal com­ments, Hacker News, Red­dit and other thought­ful responses by Tim GoldenYaniv Aknin and Brian Curtin made me sit back and think for a long time what we — as a “python core” team could do to help reduce the fric­tion and over­all bar­rier to con­tribut­ing to core itself. It also made me take a step back and ask myself why I con­tribute to Python — not just via core, but also to PyCon and the PSF.

In the replies; there was a com­mon series of “bar­ri­ers” cited — and as you read through those posts above, you will note that many of them aren’t just applic­a­ble to Python-Core itself. They are applic­a­ble to open source in gen­eral. This is some­thing impor­tant to note, as solu­tions to these prob­lems iden­ti­fied by “us” and other projects can be glob­ally applied to projects “suf­fer­ing” from a “lack of new blood” and new contribution.

New con­tri­bu­tion is the lifeblood of projects — it brings new, fresh per­spec­tives and ideas, new solu­tions to old prob­lems, in addi­tion to adding band­width to a project’s main­te­nance overall.

The key “bar­ri­ers” were:

  • Time — this is the eas­i­est to extract; all of us are incred­i­bly busy peo­ple. Espe­cially peo­ple with fam­i­lies, or hob­bies out­side of just hack­ing on code, tech­nol­ogy. We have our day jobs, or school — or we have won­der­ful lit­tle chil­dren and beau­ti­ful spouses that absorb (deservedly so) our time. This leaves a finite amount of time wherein peo­ple can con­tribute if it’s some­thing they have any time to do at all. Most of us don’t get paid to con­tribute to open source projects, and even then, if we do, once again it’s a finite amount of time (let’s say, 25%).
  • Knowl­edge — A lot of peo­ple cited dif­fi­cul­ties in find­ing infor­ma­tion about how to help and where help is needed. Still oth­ers men­tioned they didn’t even know there was a bug tracker, etc. Hav­ing a low bar­rier to entry — mean­ing a low fric­tion method of hav­ing some­one con­tribute some­thing (a bug, a patch, a doc fix, etc) is crit­i­cal. Hope­fully the new Dev Guide helps, and hope­fully the core-mentors project helps too.
  • Fric­tion — Many peo­ple cited (both pub­licly and pri­vately) that they felt that responses on the bug tracker and mail­ing lists were extremely hos­tile. Not only is there a per­ceived high bar­rier — it’s a high bar­rier loaded with fric­tion. Ignor­ing the hos­til­ity, real or per­ceived, there’s also the fric­tion of debate over changes, and the fric­tion of time. If I sub­mit a patch, and noth­ing hap­pens for months, I am going to be less inclined to con­tribute anything.
  • Hos­til­ity — While I men­tion this in the fric­tion part; it’s impor­tant to note on it’s own — peo­ple that don’t feel wel­come or that they can safely ask ques­tions or explore ideas with­out being “yelled” at or judged harshly. Email is a ter­ri­ble forum to trans­mit emo­tion, so even if the per­son writ­ing the email didn’t mean for it to come off as such, very fre­quently, emails that are short and to the point come off as cold, hard and some­times insult­ing. Hav­ing a global devel­oper com­mu­nity that spans cul­tures fur­ther com­pli­cates elec­tronic exchanges.
  • Qual­i­fi­ca­tions — many peo­ple felt that they were sim­ply unqual­i­fied to con­tribute, in any way. Peo­ple are daunted by projects like Python, and JQuery — any­thing with a user base or estab­lished “niche” seems to auto­mat­i­cally gen­er­ate higher bar­ri­ers and more fric­tion due to the sim­ple fact peo­ple are scared they are not skilled enough to contribute.

Let’s assume that all of these are real bar­ri­ers (I feel they are) and there’s a lim­ited num­ber of things to counter these things in place. Why bother?

Moti­va­tion

Brian’s com­ment touches on some­thing I think is important:

I strongly believe that every­one, and I mean every­one, is ready to con­tribute to OSS. On the Python project, Jesse Noller recently started a “core men­tor­ship” group to help peo­ple put the rub­ber to the road. There’s an almost end­less amount of work to be done on CPython, and we’ll lit­er­ally take any­one with any amount of knowl­edge and help them con­tribute. Whether it’s peo­ple con­tribut­ing to OSS for the first time, or peo­ple new to con­tribut­ing to Python, we can find something.

If you under­stand Eng­lish, you can write doc­u­men­ta­tion. If you can write Python code, which is obvi­ously a com­mon skill for some­one inter­ested in con­tribut­ing to Python, there’s plenty of work. If you know C, dig right in.

The group of core con­trib­u­tors ranges from 18 to the upper 60s, from the self-taught to multi-PhDs, from stu­dents to Googlers. I think the only peo­ple who aren’t ready to con­tribute, wouldn’t be inter­ested in con­tribut­ing in the first place.

(minor quib­ble: s/write documentation/improve documentation/ — see also JKM’s post on great doc­u­men­ta­tion, just like code, doc­u­men­ta­tion con­tri­bu­tions dif­fer in scale)

Brian is dead right — I, like him, believe that every­one and any­one con­tribute to OSS, and in the local case — the Python case — every­one can con­tribute some­thing no mat­ter who they are, or what their skill set it. If you know eng­lish (espe­cially bet­ter than I write it) then man, help with doc­u­men­ta­tion — a seem­ing blind spot for many projects. If you’re a designer, we both know most OSS needs some design help — web site design­ing, the­me­ing, GUI work, and so on. The num­ber of OSS projects out there with bad UI/UX and or just a bad inter­face (I’m look­ing at you, git) is astound­ingly large.

I truly, fun­da­men­tally believe that OSS is is the per­fect proof that any­one and every­one can con­tribute to some­thing. Why? Code and projects are blind — or if they aren’t, they should be. They don’t care if you’re a sen­tient ham sand­wich, they don’t care if you don’t have the proper school­ing, how old you are, the color of your skin, or your reli­gious beliefs. They don’t care where you are located or what you did before you con­tributed some­thing. They just care about what you have con­tributed — doc patch, code patch or fea­ture. That thing you have sub­mit­ted should be able to stand on its own mer­its, regard­less of any­thing out­side of that atomic change. I’m not say­ing that what you’ve changed, pro­posed or patched won’t be debated (see: bikesheds) — it will — but if it passes tech­ni­cal muster, then there should be noth­ing stand­ing in the way of that change.

Why do I feel this way? Because — they (they being you — the Python com­mu­nity) wel­comed me — I’m not qual­i­fied for con­tribut­ing to some­thing as large and amaz­ing as Python! I’m barely qual­i­fied to raise my dog. I suf­fer from near con­stant impos­tor syn­drome — I run across things inside of Python that fre­quently blow my mind, things I don’t even grasp. I’m hot headed, brash and bel­liger­ent. I lead with my pas­sion and my beliefs and I’ll fight for some­thing until I pass out from exhaus­tion. I over­com­mit, stretch myself thin. I signed up to main­tain a mod­ule, then I had a kid and changed jobs. I’m not exactly a good pro­gram­ming citizen.

Even today, as I sit on the board of the Python Soft­ware Foun­da­tion, and I am now chair for PyCon, I look around in con­stant won­der and ask “why accept me”?

It’s because OSS, and espe­cially the Python com­mu­nity, of which I am very proud, truly doesn’t care who you are — if you’re a dog who can beat tim­sort, we’ll take the patch if you can prove it. We accept social mis­an­thropes, per­fectly nor­mal peo­ple with 2.5 kids, a dog and soc­cer prac­tice on Sundays.

You’ve got to be pas­sion­ate.

I’ll admit — I’m not a cold, cal­cu­lat­ing math­e­mat­i­cal engi­neer. Seri­ously, big sur­prise. What I am is insanely pas­sion­ate about some­thing, and the com­mu­nity around some­thing most peo­ple con­sider “just a tool” (e.g. a lan­guage). I’m pas­sion­ate about its com­mu­nity — I’m pas­sion­ate about the lan­guage phi­los­o­phy. My moti­va­tion comes from that very pas­sion. The rea­son I am involved in OSS in any way is because I found myself incred­i­bly pas­sion­ate about some­thing that changed my life. The rea­son why I steal time from my fam­ily, my job, and myself to work on these things is because they kin­dle a fire inside of me. See­ing some­thing I’ve done help some­one, make some­thing bet­ter, change someone’s life in some small way just feeds that fire.

I’m not in this due to a higher “human call­ing” — I don’t con­tribute because I owe some­thing to my fel­low man — in fact, many times I’ve had to make the deci­sion not to do some­thing so I could spend more time putting food on the table for my fam­ily and myself. I con­tribute patches, ideas and what I can because it makes me feel good, it makes me feel rewarded and self-fulfilled.

If you’re approach­ing con­tribut­ing to a project — to a com­mu­nity — out of a sense that “you just should” or some bro­ken ideal that you have to serve the greater good — it’s just another job you’re not pas­sion­ate about. You’re look­ing at con­tri­bu­tion from the stand­point of a solemn duty, and not what it should be — some­thing that is reward­ing, excit­ing — some­thing that when you look up and see some­one using what you’ve made, fixed or improved you feel accom­plished and awarded.

You have to pick a project, and some­thing within that project that gives you that thrill, that fires up your pas­sion (even if it’s anger). You have to do it because you’re inspired and you want to do it. Sure — there’s a lot of drudge work at the end of the day — clean­ing things up, fix­ing bro­ken test suites, the equiv­a­lent to sweep­ing the floors once the party is over, but heck — you did some­thing amaz­ing, or some small thing that’s going to change someone’s life, go ahead and pick up a broom while you’ve still got that glow.

I con­tribute not from altru­ism; I con­tribute because I like to and I want to (and some­times need to). Some part of me feels that yes, I am pay­ing back some amount of debt — but no amount of social or moral debt will make you over­come the bar­ri­ers I out­lined in the pre­am­ble. Not amount of social extor­tion will make you pay the bill — only you can moti­vate you, and you have to want to do it. OSS is about scratch­ing your itch; if some­thing like python-core isn’t itchy for you — find some­thing that is.

Mechan­ics

After that lit­tle side rail into moti­va­tion — espe­cially what dri­ves me — I think it’s impor­tant to go back to the mechan­ics. Those bar­ri­ers are real — and as Brian points out, we (python-core) are work­ing on them as a team, and the Python Soft­ware Foun­da­tion is work­ing on them as a community. Since the orig­i­nal post I’ve been lucky to help spin up the python sprints project — the goal of which is to onboard new devel­op­ers via face to face pro­gram­ming sprints. It’s been pretty suc­cess­ful, and we still have lots we can and should do with it, but I like to think that we’ve done some work address­ing the Knowl­edge, Fric­tion and Qual­i­fi­ca­tions issues on a local, sprint level.

Peo­ple don’t com­mu­ni­cate face to face quite the same way they do on a mail­ing list, and a lot of peo­ple are much more com­fort­able sit­ting next to you ask­ing ques­tions then wad­ing into/navigating the jun­gle of a mail­ing list. Espe­cially when so many peo­ple expect neg­a­tive “go look in the archives” and “RTFM”. Mailing lists answer spe­cific ques­tions well, but tend to suck for get­ting big-picture infor­ma­tion needed to get rolling on something.

Hence why we’ve also started the Python Core Men­tor­ship pro­gram — which, if luck holds out, should be mod­er­ately suc­cess­ful in help­ing us ramp up new core devel­op­ers in an envi­ron­ment that aims to remove the final bar­ri­ers — we can’t bend time. But I’ll be damned if we can not lower the knowl­edge, fric­tion, hos­til­ity bar­ri­ers and make every per­son feel wel­come and qual­i­fied, no mat­ter who they are. I want the OSS world — even “my” own small cor­ner of it to be wel­com­ing when my chil­dren one day wan­der into it (if they want to).

We (as a com­mu­nity) have a long way to go — Python-Core as a team is still evolv­ing — as a com­mu­nity, and as a devel­op­ment team — we have plenty of work to do to make con­ver­sa­tions and dis­cus­sions more civil, more wel­com­ing. We have bar­ri­ers that pre­vent us from being as diverse as we could be (notice I avoided should) — these are things we can help fix with out­reach, lead­er­ship and guid­ance. We have to make it easy for peo­ple to con­tribute, and we have to make it friendly and fun. We have to take peo­ple who are afraid and make them feel con­fi­dent and worth­while (As Brian put it — “Hav­ing early suc­cess is key to hav­ing con­tin­ued fun on the project.”).

But Python-core isn’t the cen­ter of the uni­verse, nor should it be. The Python Soft­ware Foun­da­tion itself is sim­ply a mar­ket­ing and legal arm of a mas­sive community. If lan­guage main­te­nance or com­mu­nity efforts aren’t your thing — go find one of thou­sands of PyPi pack­ages and help that project out, help it get a men­tor­ship pro­gram, help it’s docs, UX/UI. If you have a pas­sion that’s not solved — make a library and release it on github, bit­bucket and PyPi and con­tribute that way. As I said in “Explain­ing the Python Soft­ware Foun­da­tion (Part 1)”:

… Each and every Python pro­gram­mer, author, and indi­vid­ual talk­ing about Python right now is per­form­ing the mis­sion of the PSF. Every bit of work (from writ­ing code and doc­u­men­ta­tion, to answer­ing a ques­tion) moves Python’s ecosys­tem for­ward. Every per­son read­ing this post or com­ment­ing about Python moves it for­ward. Essen­tially — if the ecosys­tem is a code­base — all of you have the com­mit bit.

Con­tri­bu­tion can be “as small” as a doc­u­men­ta­tion exam­ple (some­times, more impor­tant than the code) — or it could be a PEP for a new lan­guage fea­ture. Con­tri­bu­tion could be orga­niz­ing a con­fer­ence, answer­ing ques­tions on a mail­ing list or intro­duc­ing new peo­ple to the com­mu­nity and tools around you that you’re pas­sion­ate about. It has to be inter­est­ing and chal­leng­ing to you.

You have to be fired up about it, maybe you’re angry about a bug, maybe you love the tool, remem­ber though a mil­lion bees with one sting can take down an ele­phant - you already know how to pro­gram, or how to write — this isn’t mon­keys at type­writ­ers, this you, an intel­li­gent and bright per­son work­ing with other intel­li­gent, bright peo­ple towards a com­mon goal. You want to make, or con­tribute some­thing awe­some — you want to make the best damned ham­mer in history.

It can be daunt­ing; it can feel like a shark tank — but trust in the fact that there are oth­ers out there that feel like you, and do want to help — and despite the fact that they won’t express thanks (or don’t know how) — every­thing you do con­tribute that’s more than ran­dom non­con­struc­tive crit­i­cism on a blog, email thread or bug report, or con­stantly telling peo­ple “you’re doing it wrong” — is appre­ci­ated (Even when poorly expressed in an inap­pro­pri­ate loca­tion, con­struc­tive crit­i­cism can still prove use­ful in the long run).

At the end of the day, it is pretty cool to be able to do this on a mod­ern, ship­ping oper­at­ing system:

ben­der:~ jesse$ grep –r “Jesse Noller” /Library/Frameworks/Python.framework/

/Library/Frameworks/Python.framework/Resources/English.lproj/Documentation/_sources/whatsnew/2.6.txt:     PEP writ­ten by Jesse Noller and Richard Oudkerk;

And yes. You can help. All of you can, all of you do.

For fur­ther read­ing, you can also see:

Spe­cial thanks to my wife, Brian Curtin and Nick Cogh­lan for read­ing drafts of this post.

  • http://jljl.myopenid.com/ Jes­sica

    Find­ing some­thing I’m pas­sion­ate about is how I finally got started. Also, the project mem­bers are very welcoming.

  • http://alanfranz.pip.verisignlabs.com/ Alan Fran­zoni

    I think I had ignored some highly-subjective rea­sons, like “I don’t think I’m skilled enough”, on the other hand I strongly believe that the high­est bar­rier to con­tribut­ing really comes from project poli­cies — what you resume under Knowl­edge, Fric­tion and Hostility.

    The oth­ers are just con­se­quences — If I don’t have lots of time, I’ll just be pissed off if I need 10 min­utes to fix a prob­lem and 3 hours to sub­mit a patch and open a ticket, and if I’m yelled at I’ll think I’m unskilled and just stop sub­mit­ting patches.

    I’ve writ­ten about what I think should be the best prac­tices of OSS/community projects some time ago:

    http://ollivander.franzoni.eu/search/label/community

    I think that projects fol­low­ing such advice really make con­tri­bu­tions easier.

  • http://twitter.com/iamnotcasey Casey Dun­can

    I think there is one other key bar­rier related to, but not exactly the same as time, or lack thereof: It is the cost/benefit ratio of con­tri­bu­tion. The cost of con­tri­bu­tion involves time, energy, tech­ni­cal, social and emo­tional invest­ment. As humans, we want to believe that when we make such an invest­ment that there will be a ben­e­fit, that it will make some dif­fer­ence to our­selves and hope­fully oth­ers too.

    Being a lit­tle fish in the big pond that is Python (and other large OSS projects), the ini­tial cost for an indi­vid­ual can be daunt­ing, even to some­one that already has all of the req­ui­site tech­ni­cal skills. The ben­e­fit that one indi­vid­ual can make by his or her­self how­ever, is at least ini­tially not entirely clear. Some folks have the per­son­al­ity such that they can sim­ply opti­misti­cally ignore these sorts of doubts and sim­ply believe that they can make a dif­fer­ence that is impor­tant regard­less (I think you fall into this camp). Many peo­ple, how­ever, can’t do this on their own, and may never get there with­out some seri­ous goad­ing. I think the efforts here to try to draw these sorts of folks in are laudable.

    Still other peo­ple find it very dif­fi­cult to fit their ego into the exist­ing group’s ego (I think I fall into this camp). Unfor­tu­nately I’m not sure what solu­tion there is for that. Some­times folks that are oth­er­wise per­fectly capa­ble aren’t going to fit in. I have to say per­son­ally that I am much more fond of Python the lan­guage than Python the project. But I have found that I have a sim­i­lar feel­ing about other larger projects. Some folks are sim­ply not going to be happy with a tiny stake in a large project I guess.

  • Anony­mous

    Make me want to con­tribute… As in make it attrac­tive. Not money or any­thing like that, but spare me the bull­shit about telling me how great your project is and instead tell me how I can fur­ther improve it and what I and the gen­eral com­mu­nity will gain out of it.

  • http://jessenoller.com jnoller

    Why would I want to try to sell you some­thing you don’t care about already? For exam­ple, I don’t care about Node.js, nor do I use it — no amount of mar­ket­ing and sell­ing on the part of Node.js will make me want to con­tribute to it.

    This is sort of the point of my post: Con­tribute, but con­tribute to the things you care about.

  • http://jessenoller.com jnoller

    This is an excel­lent point Casey, and not one I touched on in the arti­cle — which is sur­pris­ing given how much of a startup guy I am (http://jessenoller.com/2011/05/01/getting-to-do-what-you-love-with-people-that-are-awesome/). Your com­ment deserves a post almost in and of itself — I’ll try to reply more in depth later on!

  • Anony­mous

    Never said I don’t care about it. I “care” about jQuery and PHP, and use them in my projects reg­u­larly. But why should I develop for them when the project com­mu­nity and web­sites make them seem like they are already well taken care of and that they dont need me?

  • Jeremy Dunck

    IMHO, con­tribut­ing to an exist­ing project (that you care about and find use­ful) is almost always bet­ter than start­ing your own thing, because the chances of your new project being found and found use­ful are fairly slim. I’ve been involved in Django since it started. I don’t feel I’ve made a major con­tri­bu­tion to the code — but I know I have to the community.

    Seeds grow into trees. Your small con­tri­bu­tion, used by thou­sands, is likely more use­ful (to you as well as oth­ers) than a small project used by few.

    If you open source some­thing and nobody ever uses or con­tributes any­thing– what then?

  • http://jessenoller.com jnoller

    See, now that’s a dif­fer­ent thing — and some­thing I’ve been work­ing on for core-Python, which is explain­ing why we need help, and what we need help with. With the con­text of your reply, your orig­i­nal com­ment makes a lot of sense. Projects *should* explain how con­tribut­ing helps, and maybe not all projects need (or want) more help — but if they do want it, it should be explained.

  • gasche

    The “Moti­va­tion” part of your arti­cle def­i­nitely ring a bell. It’s a beau­ti­ful call for what all free soft­ware projects should aim to achieve. The posts you link to are have pro­vided me inter­est­ing reads; thanks for that also.

    I’m not con­vinced by your “pas­sion­ate” part. It could be read as “If you don’t feel pas­sion­ate, don’t con­tribute”. The prob­lem is, dif­fer­ent per­sons have dif­fer­ent sen­ti­ments, and let­ting a shy per­son think that “I don’t feel pas­sion­ate enough, maybe this isn’t my thing” would be coun­ter­pro­duc­tive. It’s nice to read your per­sonal emo­tion when con­tribut­ing, but those things don’t con­vey well to other peo­ple, other cul­tures, etc.

    I find your “remem­ber, you’re one intel­li­gent bright per­son talk­ing to another one” word­ing also awk­ward, as it is in direct con­tra­dic­tion to what you said ear­lier, that even not-considering-themselves-stellar peo­ple can pro­vide valu­able contribution.

    Finally, I regret that, besides PyPi, all the place you name to host a free soft­ware project are actu­ally pro­pri­etary host­ing plat­forms. I deeply respect the huge work and pol­ish achieved by the peo­ple work­ing for github and bit­bucket, but there are also sat­is­fy­ing free soft­ware alter­na­tives, such as gito­ri­ous, that should also be men­tioned (or you could go for neu­tral­ity and not name any­one spe­cific). I under­stand that not all peo­ple care about that and are care­ful to be “polit­i­cally cor­rect” in that respect, but at least it mat­ters to me.

  • Python­ista

    I feel like you’re miss­ing a big bar­rier. I’ll never con­tribute to ©Python, but I might some­day con­tribute to PyPy — and specif­i­cally *because* Python is writ­ten in C.

    Time, Knowl­edge, Fric­tion, Hos­til­ity, Qual­i­fi­ca­tions? I think that writ­ing a compiler/runtime in C in 2011 is a fun­da­men­tal mis­take. Any­thing in C in 2011 is a fun­da­men­tal mis­take — that’s why I’m using Python! Writ­ing in C takes a lot more Time than writ­ing in a higher-level lan­guage. It requires more Knowl­edge (I *can* write assem­bly lan­guage if I need to but the lower you are the more knowl­edge it takes), you see more Fric­tion, it has more restric­tive Qual­i­fi­ca­tions. I was close to say­ing that only Hos­til­ity is unre­lated to writ­ing in a low-level lan­guage, but I think the insis­tence of core devel­op­ers on still using a low-level lan­guage is itself a kind of hostility.

    I know there are ways to con­tribute to Python with­out touch­ing C, but where’s my moti­va­tion to con­tribute if I think the project is not at its fun­da­men­tals mov­ing in the right direc­tion? Meh.

  • gasche

    While you may be right that a com­piler (eg. to python byte­code) would cer­tainly ben­e­fit from a higher-level lan­guage, C, or some­times C++, is still the norm for byte­code inter­preters and run­time sys­tem. If your byte­code is done right, there shouldn’t be so much work left to the inter­preter, and using a lower-level lan­guage is a good speed/convenience trade­off; after all, the whole point of byte­code com­pi­la­tion is to lower the abstrac­tion level of the pro­gram, and a low-level lan­guage ought to inter­pret cor­rectly another low-level language.

    This doesn’t apply to PyPy so much because they JIT, so there is hope­fully no inter­pre­ta­tion done by Python in the hot cases. But, to my under­stand­ing, CPython uses a threaded inter­preter, and you absolutely shouldn’t use Python to do that.

  • http://jessenoller.com jnoller

    @d40d0983c79ff0c8abc4d004db032624:disqus I real­ize that pas­sion may not trans­late well to other peo­ple and cul­tures — that why’s this is fun­da­men­tally an arti­cle for me, as much as it is for the world. It helps remind me, and provider oth­ers with an exam­ple as to what might moti­vate a person.

    I *want* peo­ple to *care* when they’re con­tribut­ing — and if pas­sion is too strong a word, then so be it — but the fact remains, if you don’t care — if you’re not fired up, pas­sion­ate, angry or excited about some­thing, then you *won’t* con­tribute, and you *won’t* stick around long. Espe­cially given how much you have to deal with (see, the bar­ri­ers) in order to contribute.

    As for the final point: Project host­ing — I did not, and do not intend for it to be com­pre­hen­sive. Oth­er­wise I would have men­tioned Google Code (http://code.google.com/ — pro­pri­etary), Source­forge (http://sourceforge.net/ — pro­pri­etary), or I could have just linked to http://en.wikipedia.org/wiki/Comparison_of_open_source_software_hosting_facilities

    As much as this blog is me writ­ing things for the world, it is also about my expe­ri­ences — and in my expe­ri­ence, I don’t *hear* about projects hosted on http://gitorious.org/ — so while it could be awe­some, it fails on two fronts — 1> I don’t know any­one using it 2> It’s git (and I hate git).

    So thank you for bring­ing it up — but I’m not con­cerned about the pro­pri­etary nature of code host­ing or col­lab­o­ra­tion, spe­cially given CPython uses pri­vate hg repos. Pri­vately hosted repos is how, frankly, I’m used to work­ing. I’m not inter­ested in pro­mot­ing, or not pro­mot­ing a given solu­tion — but I do know where most of the things I work on, or peo­ple I talk to, spend their time, hence me men­tion­ing only a few options (the ones with the most trac­tion, AFAIK).

    If you couldn’t tell by the post: I am not a FOSS per­son, as defined by the FSF and truly “Free Soft­ware Crowd”. I go out of my way not to spend a lot of time on GPL/AGPL/etc code or con­tribut­ing there, and part of the rea­son I love con­tribut­ing to Python specif­i­cally — because of it’s “truly free” (in my mind) licensing.

  • http://jessenoller.com jnoller

    @391d53ef7854ab153273f13fea0141c4:disqus At first, I was tempted to dis­count this as a clever troll. But I can see a valid point, and actu­ally a com­mon mis­con­cep­tion in your com­ment. In real­ity — you don’t need to know any C code to con­tribute to CPython. I’m seri­ous. For exam­ple, only small pieces of the core stan­dard library are writ­ten in C. Sure, the core inter­preter is all in C, but *very* few peo­ple hack on the core inter­preter. Most bugs, most fixes and the most time is spent out­side of that core.

    There is not insis­tence on CPython being, in well, C — it’s a tech­ni­cal legacy, and there has yet to be some­thing bet­ter that allows us to do what we need to do on the inter­preter level come around. We have to do OS level func­tions which are impos­si­ble with­out hav­ing C/C++ as the plat­form — and no — Java is not a valid plat­form for a vari­ety of reasons.

    PyPy has a bright future, to be sure — I would not have handed them a check for 10,000$ on behalf of the PSF at PyCon if I didn’t think so, and I — like you — look for­ward to not hav­ing to deal with C code any­more one day in the future. But even PyPy need to “fall back” to some­thing closer to the metal — e.g. RPython, and from RPython, into C. Sooner or later your abstrac­tion fail you, and you have to talk to the machine on it’s level.

    So Yes, I can see your point that C is daunt­ing, and a “hos­tile” require­ment — but again, I must reit­er­ate, you don’t need to know or touch C code to con­tribute to Python, PyPy, etc. You sim­ply don’t. In fact, I go out of my way to avoid it — I don’t like it. I only like writ­ing things in Python. I know other core devel­op­ers who feel much the same.

    Does knowl­edge in C help? Yes — you can dive fur­ther than some­one who doesn’t know C can, but it’s not a required fundamental.

    As for the fun­da­men­tals mov­ing in the right direc­tion? CPython has to sup­port 20 years of installed users and plat­forms. That’s legacy, and I doubt we will ever escape that. PyPy, in that regard, has a much brighter future.

  • gasche

    Thank you for you answer. I fully under­stand that, for things one doesn’t care about, one fol­lows the least-effort path. In this case this would be “I don’t care about host­ing plat­form so I only name the ones I remem­ber”. How­ever, net­work effects also have their very vis­i­ble dan­gers, and it is in the inter­est of nobody that net­work effects estab­lish a monop­oly of two pro­pri­etary host­ing providers. Maybe the next time you want to give a few names, you’ll by chance remem­ber this con­ver­sa­tion and also cite, say, gito­ri­ous or Launchpad.

    I would also like to point out that the Qt project(s) exten­sively uses gito­ri­ous (as e.g. WebKit, but this is not their main VCS), and that Source­Forge recently open-sourced a new forge, based on a Python soft­ware stack.

    - https://qt.gitorious.org/

    -
    http://compoundthinking.com/blog/index.php/2011/03/15/open-source-sourceforge/

  • http://www.boredomandlaziness.org Nick Cogh­lan

    PyPy actu­ally dives *deeper* than CPython in this regard: to imple­ment the JIT com­piler, they emit their own x86 and x86-64 *assem­bly code*. The direct use of x86 assem­bly code was also one of the major draw­backs to Psyco. It used to be a prob­lem for Stack­less as well, but I believe they man­aged to get rid of their cus­tom assem­bler code as C com­pil­ers improved.

    The beauty of C is its role as portable assem­bly code. You can get some sub­set of CPython work­ing on just about *any* plat­form. Some things may or may not work based on the avail­able sys­tem libraries, but the core eval loop will com­pile on just about any­thing with a C com­piler (which is just about any­thing with a proces­sor in it).

    This is why ARM remains a work-in-progress for PyPy — since they aren’t rely­ing on the exist­ing C com­piler sup­port the way CPython does, they have more work they have to do them­selves in order to sup­port each new proces­sor architecture.

    As in many things, this is a trade-off. The JIT com­piler lets the PyPy folks do some seri­ously cool things, but that power cer­tainly didn’t come for free. Many other “high level” lan­guages involve sim­i­lar trade-offs: you’re buy­ing into *some­one else’s* vision for plat­form sup­port (e.g. by tar­get­ing the JVM or CLR or a Javascript engine).

What's this?

You are currently reading On Contribution at jessenoller.com.

meta

  • Categories

  • Recent Posts