Search code examples
language-agnosticopen-sourceproject-management

Which factors determine the success of an open source project?


We have a series of closed source applications and libraries, for which we think it would make sense opening up the source code.

What has been blocking us, so far, is the effort needed to clean up the code base and documenting the source before opening up.

We want to open up the source only if we have a reasonable chance of the projects being successful -- i.e. having contributors. We are convinced that the code would be interesting to a large base of developers.

Which factors, excluding the "interestingness" and "usefulness" of the project, determine the success of an open source project?

Examples:

  • Cleanliness of code
  • Availability of source code comments
  • Fully or partially documented APIs
  • Choice of license (GPL vs. LGPL vs. BSD, etc...)
  • Choice of public repository
  • Investment in a public website

Solution

  • There are a several things which dominate the successfulness of code. All of these must be achieved for the slightest chance of adoption.

    • Market - There must be a market for your open source project. If your project is a orange juicer in space, I doubt that you'll be very successful. You must make sure your project gets a large adoption amongst users and developers. It is twice as likely to succeed if you can get other corporations to adopt it as well.
    • Documentation - As you touched on earlier documentation is key. Amongst this documentation is commented code, architectural decisions, and API notes. Even if your documentation contains bugs, or bugs about your software it is ok. Remember, transparency is key.
    • Freedom - You must allow your code to be "free" - by this I mean free as in speech, not as in beer. If you have a feeling your market is being a library for other corporations a BSD license is optimal. If your piece of software is going to run on desktops then GPL is your choice.
    • Transparency - You must write software in a transparent environment. Once you go open source there is no hidden secrets. You must explain everything you do, and what you are doing. This will piss off developers like no other
    • Developer Community - A strong developer community is required. This must be existing. Only about 5% of users contribute back to the project. If someone notices there haven't been any releases for a year they wont think "Wow, this piece of software is done," they will think "developers must of dumped it." Keep your developers working on it, even if it means they are costing you money.
    • Communications - You must make sure you community is able to communicate. They must be able to file bugs, discuss workarounds, and publish patches. Without feedback, it is pointless to opensource the project
    • Availability - Making your code easy to get is necessary, even if it means pissing off lawyers. You have to make sure your project is easy to download, and utilize. You don't want the user to have to jump through 18 nag screens and sign a contract in order to do this. You have to make things simple, and clean