Remote Synthesis
Search my blog:
Viewing By Entry / Main
Jul 30, 2008

Part 1 - Structuring for your Open Source Project

This is part of the ongoing series I introduced in my prior post. I would love to hear from other open-source developers as to whether they agree/disagree with my analysis.

So you've decided to join the world of open-source software developers; welcome! As you may or may not realize, there are a lot of things to consider when open-sourcing a project. It isn't simply a matter of setting your code free into some anarchic void. For starters, you need to consider a software license, the means of distribution, creating documentation, how to manage contributions and whether you intend to offer support. Also, keep in mind that when we refer to open-source, we don't necessarily mean free. If I haven't scared you off already then let's get started.

Step 1: Structuring Your Project

Depending on how and why you started your project will likely influence how you choose to structure your project. More than likely, you've probably started your project for one of three reasons:

  1. You created the project for yourself and decided to share.
    Of all the categories of open-source projects this one is probably the most numerous. For example, you create a tool for your day job and decide that others may benefit, so you release it (with the full knowledge and permission of your employer of course). While there may be many of these projects, they often fail for lack of time and attention - often because the author(s) didn't realize how much effort the project would take once people started actually using it.

  2. You created the project due to a perceived community need.
    In this scenario, you recognize that a particular type of software is lacking in your language of choice - either altogether lacking or lacking in a free and open-source version. For instance, in the ColdFusion world, the cfCommerce project began because a number of individuals recognized the lack of an open-source e-commerce package in ColdFusion. Unfortunately, many of these projects languish due to people having day jobs and/or a lack of an organized team or clear means of contribution.

  3. You are open-sourcing an new or existing commercial project as part of a professional open-source software business plan.
    While open-source business plans seem to be quite popular these days, this is still likely the smallest category of projects. This type of project generally supports itself via support contracts or training. Some projects, like MySQL for example, also make money through paid contracts offering a less restrictive open-source license. While this group is small, but growing, it also generally contains many of the larger, most comprehensive and well-documented projects.


Some commercial projects are open-sourced as a means of end-of-life-ing an unsuccessful or outdated product, such as Spectra, but we'll overlook this group since they don't succeed as open-source generally by design. Keep in mind that while your project may begin life as a Type 1 or Type 2, it could become a Type 3.

Solo Developer
Typically Type 1 projects are created and maintained by a solo developer. This can be sufficient for small projects that are limited in scope, but its important to consider that the workload tends to increase the more people use the project. Generally, if your project has garnered some limited acclaim you will be able to find people willing to contribute but, in my opinion, transitioning from a solo project to a project with multiple contributors is difficult (and at first doesn't necessarily reduce the workload). I will be covering managing contributions in more detail in a future post.

Multiple Contributors
Type 2 projects are occasionally solo projects, but more often, in my experience, they are group efforts comprising anywhere from 2 or more developers. This is partially because the Type 2 project is open-source by design (while Type 1's are generally open-sourced after the fact). This allows the time and consideration for the organization and scope of the project prior to creating it where the project organizer seeks the input of interested contributors. Its important though to ensure that the people joining the project (including yourself) have the time and a real desire to contribute as many of these projects stagnate in the planning phase.

Type 3 projects are almost always multiple contributor projects whose structure is dictated by the business they are associated with. Some professional open-source software projects are a single product released by a company with a larger scope of business and in other cases they form the core of the business plan. For example, in the ColdFusion world, there are a handful of these projects including FarCry, Razuna, Transfer and ColdBox. FarCry and Razuna were commercial products that were open-sourced as part of a revised business plan for the product. ColdBox and Transfer were open-source projects that grew to have a large user-base and are in the process of transitioning to a POSS (i.e. for profit) model based upon offering training and support options.

In the next edition we will discuss the Holy Grail of open-source topics, choosing a license.

Comments
Daniel
Hello Brian,

Kudos, very interesting read! As I've also (gently) entered the world of open source developers (http://code.google.com/p/tandem) I am looking forward to the upcoming posts.

Regards,
Daniel


Dan Vega
I find the biggest hold up for me when it comes to open source projects is design. If I had someone give me a layout it would make my life a bit easier. I know there are places for templates out there but most of them seem very bland and lack some originality. Is it just me or is the design community much more closed than the programming community. I have 2 projects I would like to start and this is the major hold up for me in both. I would love to hear some thoughts on this as I think it faces many programmers.

Great Series, can not wait to see more.


Nitai Aventaggiato
@Brian
Nice post. I think the only way a open source project, be it type 1, 2 or 3, can survive and gain some market share is by building a community. Sounds like a easy thing, just release the code and see how it does, but building a community is one of the biggest challenges for any open source project.

Looking forward to the licensing post. I have gone into lengthy discussions before releasing Razuna about licensing. It might be interessting to see your findings.

Thank you for mentioning Razuna.


Lu Sancea
Awesome post and I can't wait to see this series. Keep up the good work and tweet more.


Robert Myers
Check out this book as an excellent primer: "Micro-ISV: From Vision to Reality" by Bob Walsh

Not so much about open source as preparing yourself for the opportunities a successful open source project might bring your way!


Write your comment



(it will not be displayed)