I currently have a few closed-source applications that I have developed to learn a particular technology or experiment with a programming technique. As a result, I have some software that is useful to others and that I have made freely available, but in closed-source format.
Some of the users of the software have asked if I would be willing to go open-source with the software so they could contribute to it. I’m all for it, but haven’t had any previous experience working on open-source projects, much less starting one.
Ideally I’d get my feet wet by contributing to an existing project first, but I don’t want quell enthusiasm of these volunteers by delaying too long. So I am going to forge ahead slightly blindly.
What I am looking for is a crash-course in managing an open-source project for someone just starting out on this track.
So let me phrase this as a question:
What advice do you have for someone
starting up their first open-source
project?
I’m also interested in recommendations for books/links that you think would be helpful
You have two important choices to make initially.
Firstly which licence should you use? There are dozens of Open Source licences, but it basically boils down to whether you want copyleft (GPL/AGPL) or non-copyleft (BSD, MIT, Apache) and that depends on your own objectives.
Secondly, you need to choose a version control system and, assuming you won’t be hosting it yourself, a provider. This is effectively a choice between Subversion or one of the distributed version control systems (Git, Mercurial, Bazaar, etc.). A DVCS may make it easier for you to manage contributions from other people if you don’t want to give them write access to your master repository.
Choice of VCS will influence your choice of host and vice versa as most providers only offer one VCS. A provider that will also host a website and/or wiki for you would be ideal. Most will provide some kind of rudimentary issue tracker and possibly mailing lists. You can also get mailing lists from Librelist.
I would recommend that you take a look at GitHub or Launchpad. I’m not particularly keen on Google Code or Sourceforge. Nothing against Subversion, I just don’t like their UIs.
If you want your project to become popular, and that might not be important to you, you’ll have to promote it. You can register it with Ohloh and Freshmeat. Writing blog articles about your project and submitting them to sites like Reddit and DZone would increase visibility. Remember also that Jeff is offering free advertising on StackOverflow for Open Source projects.
Anyway, as long as you have a public source repository and a website for people to download the software from, just write code and the rest will follow.