My blog has been moved to ariya.ofilabs.com.

Wednesday, March 12, 2008

Common characteristics of failed open-sourced projects

Who am I to write this one? But, really, it is what I observe in the last couple of years watching some open-sourced projects die slowly.

Start with something big. Imagine you want to create a next-gen music player, sort of Amarok-killer. Don't worry about skinning, lastfm integration, support for Oracle DB, automation with infrared remote control etc. One step at a time. Just make your player plays MP3 files (or Ogg, pick anything you like) and continue from there. Keep the horizon in your vicinity so that the journey does not look like an impossible intergalactic travel.

Blind design. Don't get me wrong, design phase is a very important one. However, if you are new to the field, don't bother too much with the design because your project will need a rewrite anyway. If you never study physics/electrical engineering before and your boss asks you to build a transatlantic fiber optic transmission system, I bet you would need to redesign your system several times so at first no need to talk about transmission impairments, price, modularity, and other issues. If your first serious project is supposed to be a new revolutionary spreadsheet program, never mind about its scalability, multicore CPU support, and Excel interoperability, until you get the core spreadsheet functionalities right first. Design is important, and so is experience.

Smoke without fire. Unless your project is about a web application, then there is little point of discussing which CMS to use, where to host the website, how can we get the artists, etc etc. Sure, good looking web site, developers blog, and maintained forum can give more exposures to the project. But if you are only at the early stage, then just focus on the important part: the application. If you place your project on the host service like Google Code (avoid SourceForge), then the basic tools like subversion/wiki/issue tracker are already at your disposal. No need to show up your PHP skills there or to argue which artwork should be chosen for the logo, that can be done when finally your project has enough users. Spend your precious time doing something more helpful to the project's important lifecycle.

Lack of passion. This is not work, this is supposed to be fun. Nobody holds a gun and tells you to do something. If you want to create a web browser but you hardly browse the web, forget it right away. Think twice: even if you are flamed and criticized, are you still going to love your new baby or not?

Too many mock-ups (will kill you). Yes, mock-ups are wonderful, they help people to visualize the end result of the project. But mock-up only without any code will not drive the project to success. You can't post hundreds of mock-ups and hope that one or two real coders would step in and implement everything for you. In the open-source world, it is close to impossible to ask people to do what you want (unless you have billions to spare).

Follow the fashion. If you want the fame, do not waste your time doing software and do something more sensible (e.g. practice a lot for the next year's Idol program). The problem with cool stuff is, when it is not the trend anymore, you are deserted. So stick with common sense and do what you think you can do best, not always what others think must be urgently done. Imagine if we have a dozen of PointCast clones...

Reinvent the wheels. Yes, this is so obvious. But let us talk about the components here. For example, even if you hate STL, just use it while you are kickstarting your project. If your design is correct, you can replace it later on (often not trivial, but still better than wasting time creating another library). When you need scripting support, just pick Lua/JavaScript/Python/etc at first. If finally it is absolutely necessary, you can hook your own script interpreter. Focus on building the application, not all the nitpicky details which can be improved with time.

Underestimate the maintenance. Just check SF, how many projects did become orphaned in the last years? You can create two dozens open-source projects if you want, but if you think you won't be able to maintain them, then think about it again. Most of the time, we always hope that someone will take over the maintenance, but only a handful projects manage this. I assume, partly because maintaining something is not the fun part of the game. You may get slashdotted when magically you create something out of nothing, while when you fix a bug it is often (sometimes not at all) noticed only by the bug reporter.

Wanna add some other points?

(Don't be trapped in the fallacy: if you see these signs on the project you are working on, it does not mean that your project is bound to fail).

16 comments:

Leo S said...

Nice list. Very insightful. I've made mistakes 1, 2, and 5...

Anonymous said...

Good list; I would add:

Over-organization. As your project grows, don't try to organize its social structure too much. Hierarchies, committees, votes, "democracy" ... tend to slow down technical work, lead to worse technical decisions, and above all, poison the relations between developers. The most active projects are usually meritocracies where "he who codes, gets to decide thereby".

Ariya Hidayat said...

@Leo: one way or another, I've been trapped in each.

@Benoit: good point!

Anonymous said...

Thanks for the good overview. As I myself am in the urge of publishing my first project I need to adhere to these points.

Ric Johnson said...

I would argue that most successful Open Source projects need a "Linus" -- someone who has final say. IT can be everyone's vision. Even if I'm the coder, if what I wrote is not in line with the overall scheme then I need to be set straight. "Meritocracy," yes, but only if "merit" is defined properly.

Ric Johnson said...

"IT can" should read "It can't" above.

Anonymous said...

I 100% agree with you. The most important is to play modest at the start. I have failed a few open sources projects for thinking too big (multiple platforms multiple frontends vi clone anyone ...).

On the other hand, some very small projects are still alive, requesting a bit of maintenance every year which sometimes even is too much for my limited time...

Anonymous said...

Lack of competition? Lack of objectives? Lack of interest?

Anonymous said...

@good point benoit.
i would add :
it is your bussines, is your fun!
democracy don't works.

Ronald Widha said...

Very valid points.

To someone still new in the open source game (as well as in the process of starting a new project), I can see some of the mentioned pitfall that I'm falling into.

Anonymous said...
This comment has been removed by the author.
Anonymous said...

thank you this post mr hidayat

muratoloji

Unknown said...

To someone still new in the open source game (as well as in the process of starting a new project), I can see some of the mentioned pitfall that I'm falling into. yes ı think that Bursa Otel Hotel thanks

Dinlesen said...

Thanks..

Dinle65 said...

Nice List..thanks a lot.

Unknown said...

Over-organization. As your project grows, don't try to organize its social structure too much. Hierarchies, committees, votes, "democracy" ... tend to slow down technical work, lead to worse technical decisions, and above all, poison the relations between developers. The most active projects are usually meritocracies where "he who codes, gets to decide thereby".iyimi