Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I would like to start an open source project, and would like to do a collaborative effort in starting it.

I have a clear idea of what I want, but not yet a formal specification (I would like to do also the design as a collaborative effort, as well as the choice of the language and platform).

  • What should I do before the start?

  • Then where should I host the project and especially where can I advertise it to find collaborators?

  • Is there a (free) tool to help the collaborative design? Can I simply rely on a wiki + forum?

I wrote the question as generic as possible in order for being useful for all the audiences.

I know that usually open source projects just starts with the initial work of one or few developers, but I'm really trying to avoid that development model (I want to start from scratch in a collaborative way).

Please don't answer "you shouldn't" (which would be an off topic answer). I want to go that way anyway, starting by building a "product team" just like any company would do for any non-trivial project.

share|improve this question

closed as off topic by Jim G., gnat, Walter, Dynamic, JeffO Dec 24 '12 at 16:14

Questions on Programmers Stack Exchange are expected to relate to software development within the scope defined by the community. Consider editing the question or leaving comments for improvement if you believe the question can be reworded to fit within the scope. Read more about reopening questions here.If this question can be reworded to fit the rules in the help center, please edit the question.

My guess is that you can't get an open source project done yourself and you're finding it a lot of work, and that's why you're coming with that "collaborative project from the start". Sorry to say it like this. But realize that most people jump on the bandwagon only after the project (and its leader) have proved their merits as history of open source shows. Otherwise you're just entering into a venture with equal partners and have very little say. It's not "your own open source project" anymore. – jblue Oct 13 '10 at 1:02
For example, who owns the trademark to this project. You think you? Can't be, you only worked 10% of the initial project and brought others to carry the load and teach you, so you're definitely not the leader and that trademark doesn't make sense to be yours. Others aren't stupid and they're not your slaves you know. They all did the main work. It doesn't make sense to bill this project as "your open source project". – jblue Oct 13 '10 at 1:04
Also, in the first couple of months, someone might (or will) disagree and take off and rebuild the idea into their separate project (even a commercial application if they wanted), because in the first 6 months, not much code has been written yet so those who don't like the group can rewrite the whole thing themselves and start their own project. This way they also get true credit for what they're really doing. – jblue Oct 13 '10 at 1:06
So understand that open source projects are created by highly motivated, highly technical, highly hard working people, and the rest see the benefit they're getting from their leadership and choose to jump on the bandwagon and start contributing "back". So just saying, you have to put a lot of hard work leading first. As others have told you, you'll be hard pressed to find many projects that started the way you're describing. – jblue Oct 13 '10 at 1:08
@jblue who said that hes not going to do any work himself. as you imply? – alternative Oct 16 '10 at 14:08
up vote 12 down vote accepted

I tried that too - the "collaborative design" - when I started making games. The truth is, very few people want to work on design, even if you start with a blank page; they want you to give them explicit, clear and simple tasks they can do without getting too involved. Those who do like designing often have their own projects and just won't work on yours.

My advice is: start working on code until you have something interesting, talk about your project, and be ready to do a lot of management.

share|improve this answer
Agree, no one wants to work on design, but everyone likes complaining about bad or missing design... – Wizard79 Nov 16 '10 at 14:02

There is no "start from scratch in a collaborative way" (unless, you're all starting as a team).

Linus once put it in a way that always remained stuck in my head.

Nobody should start to undertake a large project. You start with a small trivial project, and you should never expect it to get large. If you do, you'll just overdesign and generally think it's more important than it is likely at that stage. Or worse - you might be scared away by the sheer size of the work you envision. So start small, and think about the details. Don't think about some big picture and fancy design. It if doesn't solve some fairly immediate need, it's almost certantly over designed. And don't expect people to jump in and help you. That's not how it works. You need to get something half way first, and only then others will say "hey, that almost works for me", and get involved in the project. -- Linus Tordvalds

share|improve this answer
I want to find a team to start from scratch all together. – Wizard79 Sep 28 '10 at 16:38
@Lorenzo - Exactly. And this quote, and experiences of many tell us that it's not so easy. Most often one needs to start and push, and then (and only then) others will start to follow. It's just how a human society works, when you think of it. Not everyone likes to lead. Some like to follow. – Rook Sep 28 '10 at 18:13

I tried starting several projects over the number of years. They ALL failed. The main things I got out of it were:

  1. Do all of the work yourself. Everything. Just keep programming and doing it. It sucks no one is helping you but that's how it goes.

but also

  1. Get involved with the community and make occasional post. Like progress every month or so. Tell people about it so people know about it.

The idea is you're doing the whole thing yourself and people see that it is making progress. If they think you can do it all yourself and finish it they'll consider joining to make contributions so they can get (some) credit at the end.

I tried emailing and PMing specific guys (and girls) on art forums. I tried contacting a dozen programmers. I posted on many forums about the project and I even wrote out a huge doc and email people who did the project before and ask to assist with the one or two parts they know. That all failed. What I didn't do was continuously work on the project without having anyone to help and I think that was the major difference.

share|improve this answer

Just start. You are likely to gain collaboration only if you provide the initial momentum.

Where you host/find collaborators largely depends on what type of project it is. For example, for a new .NET framework/library, you should probably use CodePlex or GitHub. For something involving GNOME you would likely use either the GNOME infrastructure, or something like Launchpad. Similarly, like the other answer suggested, different programming languages or operating systems likely have 'core sites' that focus on that programming language/platform.

As far as collaborative design goes, some sites have tools like Launchpad's Blueprints.

share|improve this answer
Hmm the problem is that, if I just start, it will not be collaborative from the beginning. It would have too much imprinting from me. And what if I want to to a multi platform project? – Wizard79 Sep 23 '10 at 12:05
@Lorenzo solid open source projects started from a passion/desire to solve some problem. If the projects worth it, the devs will come. – Chris Sep 23 '10 at 12:16
4 if you're a Mercurial person. – Frank Shearar Sep 23 '10 at 12:34
@Lorenzo: I think you will be very hard pressed to find an open source project (excluding those that begin with commercial backing/support) that has been collaborative from day one. OSS evolves and grows. It's almost always up to the initial developer to plant the seed and do the initial work to let it grow. – Pete Sep 23 '10 at 12:42
@Lorenzo, giving a project a guiding direction can be a very good thing. It helps avoid the problem of design by committee, and avoids the initial stagnation that can occur when no one agrees on one way to do it. – Matt Olenik Sep 23 '10 at 14:39

If you know what language you want to use, why not talk about your project in that language's forum?

As an example, if I wanted to start up a project using Squeak, I'd talk about it in squeak-dev.

Added: since you want the choice of language to be part of the design, you'll need to find those collaborators in a language-agnostic way. You could, where appropriate, announce your intentions to start in whatever fora you usually frequent, or ask in your social circle.

share|improve this answer
The language choice should be part of the collaborative design effort. – Wizard79 Sep 23 '10 at 12:08

You will need physically close persons you can convince to work with you - and keep convincing - to get this started as a team project. You will never attract good programmers from the net to do this kind of work - they will look at your project and immediately walk away if you don't provide substantial value up front.

share|improve this answer

Who do you know personally that might be interested? Who have you encountered on-line and thought might be interested? You're going into the team-building phase with very little, so the only real credibility you've got is going to be you. I doubt many people will be interested in a project that's nothing but a neat idea.

Alternately, you could write a very basic implementation in Python as a proof of concept. (I'm suggesting Python as being generally readable, fast to work in, and often not the final language. There are other languages that may be suitable.) Put enough work in to make it clear what the idea is, and enough work to make a solid implementation, but no more than that. You don't want to discourage a potential collaborator from saying "Hey, this is great, but we should re-implement it in LOLCODE!" (well, maybe you do want to discourage some of that).

You've got two forms of credibility: yourself, and working code. Use your own credibility as much as possible, and go minimal on the code.

share|improve this answer

I want to go that way anyway, starting by building a "product team" just like any company would do for any non-trivial project.

You seem to forget that companies tend to pay their teams. You can also assemble a team that is not paid. However, that is by far more difficult.

You need people that want to solve the same problems you want to solve, want to solve them at the same time and have time for that now. Additionally these people hopefully didn't start without you and hopefully don't decide that they don't need you. Hopefully they are also of help to you.

Finding these people is not about the right project management/hosting, collaboration tool or programming language. This is about finding the right people in chatrooms, forums, conferences and other meeting places. Where these places are depends on what you want to do.

The odds for finding these people in less time than it would take you to actually complete the first version are not that good.

Good Luck.

share|improve this answer

Lorenzo you have got this idea of the perfect collaborative environment. Remember it is an open source project and it takes a lot to keep people motivated on an idea. That is what the posts are saying. The starting might be a thing you can get to actualize, but what happens 5 months along.

share|improve this answer

Not the answer you're looking for? Browse other questions tagged or ask your own question.