Is Open Source a Crap Idea?
The graph at right is from a story in the Economist on Open Source. It illustrates, fairly effectively, that talking and doing are very different and that it's way easier to talk than do - or at least, it must be since so few people do and so many talk.
There are a number of choice tidbits in the article. This sure is true:
"The contributors are typically motivated less by altruism than by self-interest."
When I joined the DasBlog project after the 1.6 release, it was totally because DasBlog wasn't meeting my needs (scale, features, etc) and I thought it'd be easier to contribute than to jump to another engine. Omar has said before that he joined the team to be a better programmer.
As I worked on it more, I used DasBlog, selfishly, as a place to try out ideas and techniques that I would eventually put to use at work.
"Of the roughly 130,000 open-source projects on SourceForge.net, an online hub for open-source software projects, only a few hundred are active, and fewer still will ever lead to a useful product."
Yikes. That's scathing; I wonder if it's true. SF seems a lot more active and vibrant than that to me, but I could be just seeing what I want to see. Only a few hundred active projects?
With all projects there's a lot of talk, and a lot of time pressure as everyone has a life. It's a little frustrating when folks submit a bug when they could submit a bug and a patch. CVS and Universal Diffs make this a lot easier, but I'm as guilty as the next guy. If it's not fantastically simple to post a patch and have it heard, who has the time to bother? Stuart has offered a number of patches to Subversion, and really struggled to get them into the final product - or even to be heard.
How easy should it be? Is "Right-Click | Make Patch" then "email patch" easy enough?
I'm sure there are (sadly) lots of folks who submitted bugs or asked for help but just happened to pick a bad week where Omar, myself, Tom or the rest of the team was busy with life.
Aside: I wonder if there are crucial patches to the Linux Kernel that didn't get in because Linus had a bad day when the patch was submitted?
It's very difficult to get folks to commit themselves to a project that pays them nothing. The hours are long, the tech support brutal, the users unforgiving and the bugs neverending.
If you work on a Open Source Project, why do you do it? When will you stop?
About Scott
Scott Hanselman is a former professor, former Chief Architect in finance, now speaker, consultant, father, diabetic, and Microsoft employee. He is a failed stand-up comic, a cornrower, and a book author.
About Newsletter
My motives have never been altruistic. I joined because of my needs and stayed because I found it very rewarding. At the time I joined, I was the Director of Technology at a software company. I was no longer able to "touch" code. DotNetNuke allowed me to pursue this passion. Since that time, DotNetNuke has become my fulltime job. I couldn't be happier.
Having surfed through SourceForge, and having been active in OS myself, I do not find it unreasonable that only a small percentage of projects remain active. It takes a lot of energy to remain committed to a project for a long period of time. Out of 40 or so original Core Team members on DotNetNuke, only about 8 still remain. If you surf beyond the first couple of pages on sourceforge you see a vast wasteland of projects that weren't able to develop a robust community to continue providing new developers with fresh ideas to keep the project going. Look at DasBlog: what if you and Omar hadn't been willing to take up the development?
Depending on how those numbers are reached, I think they are accurate.
I find many good projects on SF that I would use... but it has been 1 year, or 6 months or such between releases. Often you can't tell if there is any activity or not. The "news" pages aren't updated, the repository doesn't appear to have much activity, and there are no new releases. Not even recent bug fixes.
Depending on the project, I may use it, or move on to a competitor. Depends on my needs, and the competitors offers.
My suggestion is start a project on sourceforge when you actually started working on code and post some code so people know that you're genuinely are working on it instead of soliciting help without showing anything.
At least sourceforge now lists projects by activity. It used
to be a waste of my time to do a search and most of the projects have no activity. I emailed them long time ago that there needs to be a search function for projects that have files. They listened.
I wish .NET had a lot more open source projects like php.
Abdu
I can also see were a developer is hot on an idea, puts some code together and publishes it. The project grows and becomes popular but then the developer/creator gets bored with it and wants to find something New and Exciting to work on. In this case who will take ownership?
In part, it's all about managing personal expectations. Part of me wants to catch up and surpass TypePad and WordPress. The more pragmatic (and controlling) part realizes that I'll be happy to plug away adding features I think are cool and using it as a platform to improve my coding skills.
Of course, this doesn't always produce great software. For example, you'll never find open source tax software, because no one wants to take the time to make it. That's drudgery from start to finish. We'd all rather pay $50 or whatever and use TurboTax. (Actually I use the free version so can't say about that :)
But it's interesting Scott that you cite Apache as your example of a "crap idea". Unless you are really biased, you can see the Apache is a pretty good web server. It's one of (the?) most popular web servers out there. So despite the flaw that there are more people that talk then contribute, it still produces a good product. I think that's evidence that open source is not, in general, a "crap idea."
Of course, open source is not a silver bullet. What inevitably happens in an open source project is that even if its code is stellar, the documentation is left to rot. So if there's a bug or any problems, you have to really get into the guts of what's going on and work it out yourself.
Regarding both that issue and the problem of too many people talking and not enough patching, I definitely think the cost of contributing has an impact there. If you look at the cost of contributing to open source (learning CVS, subversion, the build process, patching tools) you see that it's pretty high. Compare to the cost of contributing to, say, Wikipedia, and you can see part of the reason why Wikipedia does so well. There's a lot the open source community could do to lower the hurdle of contributing, but I believe the group think is "if they're smart enough to write code, they should know how to make a patch." But of course if you look at incentives in the open source land, no one has an incentive to lower this hurdle by himself, when he has the more immediate concern of getting work done on his own project. So, predictably, it doesn't happen.
My point about all this is that no, open source is not a crap idea, but it isn't trying to rival proprietary software, and it never was. This is something a lot of people don't understand. It's filling a different market, and it has completely different market forces behind it. It's not easy to explain to people who have only been working for dollars their whole lives. It's not perfect, but it does produce useful software much of the time.
(P.S. For people who have only ever worked in proprietary software, you should know that open source != free software. Free software is this (IMHO) nuts concept that no software should ever be owned by anyone. There's a lot of open source guys (like me) that really have nothing to do with "the free software movement.")
However, one thing - I checked my post twice and I don't see anywhere where I cite Apache as a crap idea. The chart isn't mine, and only shows that the Apache Foundation and their projects have a lot of folks talking. Just making sure you don't get my ideas twisted.
I should point out that the following qualities from the article are no less present in proprietary software:
- "it lacks ways of ensuring quality"
- "still working out better ways to handle intellectual property."
- One of the advantages to traditional proprietary businesses is that anyone can can start one; the drawback is that sometimes just about anyone does.
Your overarching insight is that humans are generally lazy and inefficient -- welcome to Planet Earth.
Comments are closed.
I think Omar's reason for working on DasBlog is probably the best of all self-interest reasons. When working on Java projects, I tend to contribute to C# projects to keep my .NET skills up to date and vice-versa.
Equally, when you look at DasBlog you can tell that it has features in it that you find especially useful - that is fine. Adding the features that you want and sharing those with the wider world is a good thing, if everybody does the same then all the features everybody wants will eventually end up in the product...
I find it massively annoying when somebody takes the time to email me about a change they made to the code but doesn't bother to send it me so I can add it to the main code base. Yet I'm as guilty as anyone else of saying I was going to do something on a project that seemed really interesting then not getting the time. I've also had bad weeks were code had been sent to me and I've ignored it because I'm too busy with life.
I once had a manager that stated he wanted a distributed project I was working on to work more like an Open Source project - I had to tell him this was a crazy idea. Open Source projects are massively wasteful in terms of effort. As a developer I will often lurk on the mailing lists for a long time trying to get up to speed with the code before I dare ask a question or even still submit a patch.
Having said that, the power of the internet to bring all these personal project together is amazing. In the old days I remember working on little pet projects and they would live for a while when I was interested in them but would soon die and live on a floppy disk in the cupboard for a few years until that disk format became obsolete. Now these projects can live on. When one person looses interest another can take over the lead and the pet projects can grow and grow with the combined efforts of many interested people.
I think it is a fact of human nature that the majority of volunteer work has some element of self-interest, even if that self-interest is just that it makes you feel good. If you only contribute out of blatant raw self interest then you are still contributing in a way that others can benefit from and so you should give yourself a little pat on the back from time to time (as long as you keep yourself grounded as to the real reasons why you are doing what you are doing).