Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 8 years ago.
Improve this questionI 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 wou开发者_运维技巧ld 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.
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.
Don't miss the great e-book from Karl Fogel, Producing Open Source Software available at no cost online.
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) https://www.youtube.com/watch?v=Q52kFL8zVoM
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.
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:
- http://www.codeplex.com/
- http://www.codeproject.com/
- http://sourceforge.net/
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.
精彩评论