views:

121

answers:

6

The producing open-source software book is a gold mine of information on starting open-source projects. Yet I am hoping to learn more from the experience of stackoverflow users and was wondering what are the mistakes you made when starting a new open-source project (or difficulties you encountered when attempting to contribute to a new project), and how would you avoid these traps to become a successful project*?

*Successful loosely defined as a project that is used, and attracts active contributors.

+7  A: 

My two biggest mistakes are:

  1. I expect the world to fall in love with my project as soon as I post it anywhere. If I don't get immediate feedback how great I am, I quickly lose interest.

  2. When I get quick feedback, I often don't respond on a timely basis because I have so many projects.

Aaron Digulla
+1 Chances are that nobody cares about your idea.
Thomas Jung
What would you define as timely? Hours? Days? Weeks? Would attempting to replying in a few days be enough and how would you value this time? Is 1 hour of responding to feedback equivalent to 1 hour of development?
Clinton
Timely is before the prospective user/fan/customer loses interest. My inbox is full of useful feedback that I just don't seem to be able to get back to :(
Aaron Digulla
@Aaron - What's your project?
Thomas Jung
@Thomas Jung: AROS, ePen, PyScan, upcscan, by blog, my SciFi book, and a couple more which I forgot or didn't publish.
Aaron Digulla
+2  A: 

The first pitfall is to start a new project when there are already plenty of existing projects that are planning to do the same thing.

Didier Trosset
But ... but ... reinventing the square wheel is fun!
Joey
+2  A: 

Currently I am starting a blog based on a talk that I have given on the FrOSCon here in germany. First article: There shall be light – things to keep in mind when starting a project

Maybe this helps. I don't know how long it will take to write the following 19 blog posts.

I'll answer clinton here:

Not so obvious stuff for new users is:

For User focused software:

  • getting started guide (Get the software to run quickly)
  • screenshots! Users love screenshots and too few projects provide them

For developer centric software:

  • getting started guide ("get to code quickly" for example by explaining dependencies, structure, compile and start process)
  • code of conduct

I'll think a little bit more about it and add it here.

Patrick Cornelissen
Interesting blog post; "Think about the kinds of users that you want to have and provide information targeted for them..." sounds like sensible advice, in the past what are the first pieces of information you would written for a project?
Clinton
I'm not sure what you mean. There are examples in the text above this quote.
Patrick Cornelissen
I was thinking in terms of documentation articles: installation and basic usage of your tool are the obvious ones. Do you have ideas on less obvious, but equally helpful for new-comers to your project?
Clinton
+3  A: 

"Eat Your Own Dog Food."

Be your first user. This is good:

  • to know what you're doing
  • to motivate yourself
  • to get early feedback

I think it's nearly impossible to write open source software you're not using yourself.

"Eat Your Own Dog Food" tries to break out of the vicious circle: Nobody uses the software because it is not useable; it is not useable because there is no user feedback. Try to develop something that is useful for you and see if it sticks and gains some traction.

Besides using the software yourself “Release Often, Release Early”. With release I do not mean publishing some source zip somewhere but a real end to end release.

Thomas Jung
Being your first user means that in many cases you are your only user, though. Chances are that the program is so specific to your own needs that no one else sees any value in it.
Joey
I would argue that's ok. You cannot plan to be the next big open source project. (I would expect that projects follow a pareto distribution: few with a lot of users and a lot of projects with near 0 users.)
Thomas Jung
Lets say that we wanted this project to have a bit more than 0 users, what techniques could you use to avoid creating a project that is narrowed to the point of being specific to only your own needs? How could you be your first user and still produce something that can be generalised to the needs of others?
Clinton
@Clinton - See Edit.
Thomas Jung
Coincidence: http://www.codinghorror.com/blog/archives/001313.html
Thomas Jung
Yes, Jeff had a great (and timely) post today. I have to agree with the development methodology, for closed or open-source projects.
Clinton
+2  A: 

Choosing the wrong license (for different values of 'wrong') is a common pitfall. Two examples:

1.) If you're using a license that does not allow for relicensing under different terms and you accept contributors code, you need to keep in mind that the code suddenly is not yours anymore. This is fine for some hobby project, but might limit your commercial options later. Of course, it also limits other's commercial options too.

An example for this is the GPL. Include contributed code under this license and you're bound to the GPL yourself and can't decide to dual-license later (unless you nail this down for every contributor). Even a simple change of the license to a similar OpenSource license is impossible: See the linux kernel - it's bound to GPL V2 and can't be updated to GPL V3.

2.) If you're using a permissive license (e. g. Apache, MIT, BSD) you need to keep in mind that not only you can go commercial and close the code later, but anybody else can do so too.

Don't get me wrong: I like the GPL, I'm happily contributing to GPL projects and am glad that these projects exist. I also like BSD, Apache, MIT (the permissive ones) and am contributing to projects that others exploit commercially, e.g. through "Enterprise Editions" of the software that I'm getting OpenSource. It's all fair game - you just have to be sure what options you want to have later. None is better, they're just different.

Olaf
Great answer, this sounds like potentially the "biggest" mistake a new open-source project could make.
Clinton
A: 

Positively super great documentation is a must.

Loadmaster