What it's like contributing to open source
February 15, 2012 8:26 AM   Subscribe

Open Source for You, or "Your Day Job Sucks, Make Programming Fun Again". Stephen McDonald, creator of Mezzanine, shares his experience of "what it's like contributing to open source".
posted by philipy (18 comments total) 13 users marked this as a favorite

Contributing to open source, both through helping other projects and making own, is basically my hobby these days. I've gotten contracting jobs through it and I got my current full-time job partly based on the source on my github.

As he says, open source is mostly about enlightened self-interest. Nobody that I know does it for purely philanthropic purposes, but rather to scratch an itch that just won't go away.
posted by zrail at 8:41 AM on February 15, 2012 [2 favorites]

I love this line from the article. "There are more modern technology stacks out there that are much more elegant, yet for a variety of non-technical reasons, you�re not allowed to use them at work."

I call this person the Jackdaw Programmer.

I love the assumption that new == better. Sometimes it is, but if it doesn't work well with what you already have, do you have the resources, time, and far importantly, doggedness to change *everything* to make sure it works with your new shiny thing? Just bolting it on the side doesn't work.

There is also the other problem with new. It's only new for a few months, and then, well, there's this NEW thing, why am I working with the old shit? Stupid "political" reasons, grumble. So, the jackdaws that built the thing are now off chasing a new shiny, and who's working on it now?

There's a huge reason, both technical and not, that professional shops and professional OSS projects (FreeBSD, the Linux Kernel, Apache, etc.) aren't built by jackdaws chasing every new thing. There's a reason they don't change development languages and toolsets every six months.

New is shiny, and if you can scratch that itch in a side project, hey, great. The problem I run into, almost every day, is that for this type of developer, you can never scratch that itch. They want to be the first to the new thing. I want the best of the thing that we're actually using, because I people to make sure it still runs down the line, while the jackdaw programmer is off playing with Haskell++ on Monorails.

Part of me says they must be useful -- for one thing, they'll get the initial user base you need to actually find most of the big flaws in a new thing. But I wonder, sometimes, if I want them around my projects at all.

I'd probably be more kind if I wasn't having to fight with the one thing in my job realm that's written in Java again. I'm probably going to have to spend time and money rewriting that so I can make sure it's supportable. That's time and money I can't spend on other things. All because the Jackdaw wanted coffee that month.


(on preview, zrail hits the scratch-ability problem before me...)
posted by eriko at 9:09 AM on February 15, 2012 [2 favorites]

There is en exponentialy increasing amount of backbone.js + Sinatra + fibers + coffeescript mini frameworks appearing every day. Pretty soon all developers will simply by developing mini frameworks. I'm not joking, there are like 5 new frameworks a day.

Is there an OSS c# 1.0 LOB app I can contribute to somewhere? Maybe a nice billing systems. I don't want to work on a new "rails done right" mini framewok.
posted by Ad hominem at 9:15 AM on February 15, 2012


> I love the assumption that new == better.

Come on man - you *know* that unless it's developed in the trendy, web-centric scripting language du jour, using functional programming or whatever it is this week, then it's no good. ;)
posted by GallonOfAlan at 9:20 AM on February 15, 2012

Well often "new" is better. For instance, Node.js is "better" in that it's the first event-driven framework that's getting a lot of programmers successfully building asynchronous web app servers. Would I build a major e-commerce site on Node.js? Certainly not, the VM isn't mature enough yet. Would I prefer to hire engineers who'd played with Node.js in an open source project and understood how it was different from a traditional thread based web app server? Absolutely. Anyway, that's all a derail, the main point of this article is that open source projects let you work on things for fun. For most folks, new frameworks are more fun. (In other words, do you really love writing code using ServletFactoryInjectionInterface?)

I like how he explains open source as a cultural thing. I continue to be amazed at how quickly GitHub is changing the whole open source world. When I was a young pup, the way to get "cred" was to somehow get some patches into the FSF code tree, maybe a bug fix or an emacs mode. Now there's a much more free-wheeling community of open source hackers. And they have a whole social network, for code, and it's immensely productive.
posted by Nelson at 9:30 AM on February 15, 2012 [1 favorite]

I hadn't really paid attention to github until reading about this debacle involving trolling and penis ascii art. Which didn't give me much of a warm fuzzy feeling about them. Are they actually awesome, aside from the love of penis ascii art?
posted by rmd1023 at 9:37 AM on February 15, 2012

Your opinion of github comes from something Zed Shaw wrote? Wat? But if you want to go to that source, it seems he is still finding it useful for Mongrel2. I'm glad, because the one trolling incident he talks about was really stupid and very atypical for GitHub. (If not, somehow, for Zed).

A good large project on Github is the node.js project and it's 1496 forks, 13000 watchers, 100 pull requests, etc. But Node is big enough that it could have its own community run by something godawful like SourceForge and Trac. I'm much more interested in how GitHub enables little projects like PigMap, a Minecraft mapper. Such a healthy community of forks, patches, shared development when one guy gets bored and another picks up the project. Git's model of distributed VCS enables this really great decoupled developer community.
posted by Nelson at 9:57 AM on February 15, 2012 [1 favorite]

Well sure, you don't want to base a business on jumping on every bandwagon and cool programming language that comes out. But open source projects are more a labor of love than of pragmatics. That's the point of open source. You're working for the project, instead of for an employer.
posted by deathpanels at 10:00 AM on February 15, 2012

Yeah one of the things I was poking fun at was sinatra for node.js that come out yesterday.

I have an idea for a project I want to start. Probably am going to go the haskel++01 route so at least I have something i can point to that isn't MS stack.
posted by Ad hominem at 10:01 AM on February 15, 2012

Git's model of distributed VCS

The curious thing about Github is the way it turns a distributed VCS back into a centralized one by convincing everyone to store their code on a single service.
posted by Mars Saxman at 10:06 AM on February 15, 2012 [3 favorites]

Nelson: I haven't actually done anything with github, and while I've seen it mentioned a fair bit, that was the first thing about them that floated up to my attention. I'm glad to know it's not a hive of scum and villainy. I've run into enough sexism and homophobia and general asshabadashery in the open source community that I end up often being wary of unknown-to-me groups/projects.
posted by rmd1023 at 10:07 AM on February 15, 2012

Zed Shaw is obviously a little... Zed. But I don't think you can see a clear example of how adding someone to a project without their consent can be abusive and not ask "why exactly isn't there a simple option to require my confirmation before adding me to a project?" Hell, you can make it default to off.

I dunno. Who knows what the whole story is but personally I'd be aghast if my free-to-the-public project was used to grief someone. Plugging that hole would be at the top of my todo list.
posted by phearlez at 10:15 AM on February 15, 2012

The curious thing about Github is the way it turns a distributed VCS back into a centralized one by convincing everyone to store their code on a single service.

Nothing about Github compromises any of git's distributed nature. Distribution has to happen from somewhere, and Github provides a convenient way to find and see other people's code and let them find and see yours.
posted by Zed at 10:52 AM on February 15, 2012

I've never contributed to open source, so I'm interested to hear about people's experiences of doing it. The most surprising and intriguing thing in the piece for me was this:

A lot of my projects are only a few dozen lines of code. People have found them useful in ways I couldn’t have imagined.

After he said it, it made sense. Beforehand that was not at all my picture of what open source was, and I'd never have considered putting anything that small into the public domain.

As for...

yet for a variety of non-technical reasons, you're not allowed to use them at work

This isn't a piece advocating that new fangled tech X should be used in the workplace. It's a piece for people who are jaded by doing the same old same old, telling them about something that they probably haven't considered, probably had misconceptions about, and which might make their life more fun.

It doesn't for example say that those non-technical reasons are anything other than compelling, or that every new thing is always better than every old thing.
posted by philipy at 11:01 AM on February 15, 2012

I started an open source project recently, and I did it partly because I just really wanted to build the thing that I built so that I could use it myself, and partly because I just really wanted more experience in architecting a modern application from the ground up and developing it using actual object-oriented design/development techniques in ways my programming day job doesn't often afford opportunity to. While I'm kind of enthusiastic about object oriented programming, often in my industry (primarily government services IT work), there aren't an awful lot of opportunities to work on doing much more than stitching together various pre-fab software components to meet some very narrow set of requirements. Especially now that fewer and fewer people can afford to spend the money to really architect and build a system properly in my state. For me, it's about learning new programming techniques and getting a chance to actually put some of the theory I'm expected to understand as a programmer into practice.

It's not just about learning the latest buzz-worthy technologies so much as becoming more independent and learning to be an objectively better programmer.
posted by saulgoodman at 11:48 AM on February 15, 2012

As for what my experience with open source development has been, so far it's been pretty cool just realizing that I can build something on my own that others might find a use for or make their own, even if it's a relatively simple thing. I'm looking forward to seeing what others do with the project (assuming it ends up going anywhere).
posted by saulgoodman at 11:57 AM on February 15, 2012 [1 favorite]

He makes a bullshit argument. Sure, I've been at a job where I was actively trying to innovate to reduce workload and I was directly and repeatedly shut down. This is incredibly frustrating, especially when you know it's the right stitch in time thing to do. I quit that job, not because the work stunk or wasn't interesting, but because the surrounding environment stunk and I had no way to change it.

I went to a start up company where every engineer was a rock star and we wanted that place to have a positive environment, so we built it that way. Sadly, the company didn't win the lottery, but I learned how to build a solid engineering team and a healthy environment.

Now I'm working in an environment where I am one of the key contributors, not just to the software but to the surrounding environment. I always want this environment to be a happy place for engineers so I will be happy here. Complete self-interest.

And here's the funny thing - I'm working on exactly the same technology I was in that first job 15 years ago.

The difference is the environment and the ability to enact positive change. When the environment stinks and I can't make it better, I'm gone.

This has nothing to do with open source and everything to do with a good team and good management and good communication.
posted by plinth at 1:32 PM on February 15, 2012 [2 favorites]

He makes a bullshit argument

That is, shall we say, very harsh. What applies to you doesn't apply to everyone.

There are plenty of environments that are pretty pleasant, and yet people are a little or a lot bored doing the same kind of things over and over.

There are for that matter some technologies and problem domains which might have people learning and growing and having fun for 15 years or more, and others where they'd run out of any of that after a couple of years.

There are also plenty of people with homes and families that are reasonably content and don't feel like uprooting themselves to go look for something else, possibly in another city or another country.

And at the end of the day the number of jobs available in start ups where everyone is a rock star is probably orders of magnitude less than the number of programmers on the planet in the situations described.

Luckily not everyone wants to be a rock star or make a big change anyway.

His points are not bullshit any more than yours are. They both may be helpful and relevant to some subset of people.
posted by philipy at 5:03 AM on February 16, 2012

« Older A new kind of game   |   Vinod Thakur's Got Talent Newer »

This thread has been archived and is closed to new comments