tags:

views:

202

answers:

7

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

+1  A: 

Some code repository sites do a lot of the management work for you. They provide the licenses, they handle versioning (in some cases) and they obviously handle the repository.

look at these sites:

Gabriel McAdams
Codeplex is a Microsoft project and if you want open source community cred you should probably avoid that. Codeproject always struck me as a bit spammish and flash-advertisey, and sourceforge has gone downhill. Choosing a license is easy enough to do on one's own that I think one is better served by using a site like GitHub or Gitorious. I'm especially liking Gitorious's feature of commenting directly on lines of code in the version diffs: http://blog.gitorious.org/2009/11/06/awesome-code-review/
Hostile Fork
@Hostile Fork: GitHub also has the line-by-line code review comments.
Dan Dyer
@Dan Dyer: Ah, I see... not as well exposed a feature, though (you have to hover in an invisible space). Good to know! Still, my main recent favoritism toward gitorious is because it is open source so you can run it on your own intranet...
Hostile Fork
The project is written in C#, so I'm not sure I am going to attract the anti-MS crowd anyway. Thanks for the suggestions and critiques though, this is very useful info.
JohnFx
A: 

The very minimum that you need to do is post the code as a zip, with a suitable license file. You can do that at Google Code - it's really easy to use. As for which license, start with an unrestrictive one such as MIT (Google Code has all the license texts) - you can always re-license later, provided you haven't accepted any updates.

As for books/links, take a look at Producing Open Source Software - it's not perfect, but I don't know of anything better.

anon
I disagree that it's good to choose an unrestrictive license and then restrict it later. That can come off as opportunistic, and look at what happened to ExtJS when they relicensed from LGPL to GPL. Choosing something like the Affero GPL to start and then loosening it (to LGPL, MIT, whatever) is more aboveboard, regardless of whether you've accepted updates from others or not.
Hostile Fork
I disagree. AGPL is a horrible license. And remember, the people who used the code under the MIT (or whatever) license can continue to do so - licenses cannot be unilaterally revoked.
anon
...and I especially disagree that open source projects should ship their code as ZIP files instead of using a modern DVCS (or at worst, subversion!)
Hostile Fork
Note my use of the phrase "very minimum" - If the OP doesn't know SVN or Hg (in the Google Code case), it seems to me more important to get the code out there than spend time learning them.
anon
My point isn't about a particular license. My point is that if you ever intend to consider a *more restrictive* license down the road, start with that license instead of starting *less restrictive* and changing it later. ExtJS users could have kept on using the LGPL version too and forked it...but they didn't. They just got mad and the reputation of the project was permanently tarnished.
Hostile Fork
"Provided you haven't accepted any contributions" is a very important point. And I think this answer doesn't apply to the OP, since he said (more or less) the first thing he wants to do is accept contributions.
Roger Pate
+3  A: 

If you're already familiar with VCS (Versioning Control System) you should be fine. I recommend www.github.org to host the repository, and maybe at some point a website to talk about the app. Github is nice because it makes it especially easy for people to contribute code. It's ridiculously simple, although git has a bit of a learning curve.

And then, a way to communicate! A mailing list.. Maybe googlewave.. Maybe a forum.

Trevoke
An alternative to github is bitbucket. It uses Mercurial which is a bit more friendlier alternative to git. Both are awesome websites/tools. Just an FYI.
xyld
+2  A: 

Wikinomics

Read this book: Wikinomics

In one of the chapters, for example, the author explains the challenges faced by IBM when they first joined open source projects on Linux.

Bruno Rothgiesser
+1  A: 

I don't have any personal advice on hand, but I found the following video very interesting. It's a recollection of the experiences of some Google employees and the lessons they learned whilst managing their open source projects.

How Open Source Projects Survive Poisonous People (And You Can Too) http://video.google.com/videoplay?docid=-4216011961522818645#

MauriceL
+4  A: 

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.

Dan Dyer
+2  A: 

Don't miss the great e-book from Karl Fogel, Producing Open Source Software available at no cost online.

Klaus Hofeditz