October 9, 2005
(Perhaps Obvious) Thoughts On Being an Individual Software Developer (Part II)
Part II - Making Open Source Work
From my experiences, there really seems to be a right way and a wrong way to
begin an open source project.
The Right Way
+ If you haven't already, write a usable working proof of concept of your software.
+ Do NOT create a sourceforge.net project for your software (see below).
+ Make a simple web page for your software. Provide downloads for the source and (if it runs on Windows or Mac) binaries. Perhaps even bundle the source with binaries, if it's not too big.
+ Put an email address on the web page with a link that says "send updates/patches/requests/etc to ". It often is also useful to put a list of things that you are intending to add, i.e. a "todo" list.
+ Continue to update and USE your software.
The big push here is that a sourceforge.net project should only be created
for a project once it has enough people working on it to warrant it (i.e. more than a few).
From my experiences it is much easier for developers to get involved with a
project if they can download a source tarball or ZIP file, make their changes,
and send them back to the project owner, who can then merge changes appropriately. While the project owner should definitely be using some sort of version
control, setting up a CVS server for other contributors isn't really that
important, at least until other people start doing a very big percentage
of the work, and having it as the recommended mechanism for access
initially is a really bad idea, because the barrier of entry is higher.
The other things I suggest are:
+ If you use other SDKs/libraries, include a text file with the names,
versions, and (preferably) download links for those SDKs/libraries.
+ Try to use only the most common libraries, to make it as easy as
possible for other people to run and build your code.
The ideal scenario is, you create the initial version of software and thus
begins the cycle:
+ Someone finds out about your software
+ That person wants a particular feature or functionality, so they add it
+ They send you a patch, you merge it into the main release
That's really all there is to it. Later on, if you have many people actively
working on your project, you might want to consider public CVS etc, but even
that isn't really that helpful, as you'll only want people whose code you trust
to have commit access.. anyway, hope this helps people! I know it might obvious, but hey, that's why I named this post what I did.