views:

279

answers:

6

I am working in a small team on some projects in my spare time. We are having the problem that we seem to go in circles and are not able to get our products developed - however this is not a problem during my day job. The lack of face-to-face communication seems to have a real impact on productivity.

Any examples of software or methodologies in use by the open source development community would be appreciated.

+1  A: 

My guess is that your private projects are all run and coded by developers. Developers are known to... keep on developing. The big difference, in my experience is that a company has experienced managers that can define when things are DONE. I'd recommend putting someone on the task of defining goals and decide when things are done.

miccet
+1  A: 

No real methodology here, but I think 2 things are important:

  1. Have well defined goals and responsibilities.
  2. Let each developer have the last say in how their allocated part should be done.

In open source projects the only real and strongest motivation is the fun to be had coding the product. Relating to #2 above, if people are told what to do, and they don't agree with it, the motivation starts lacking. Of course there will always be a bit of give-and-take like in any other type of relationship.

Also about the face time, Skype is great for having face to face meetings, which I recommend at least once a week or month (depending on the size and momentum of the project)

Mladen Mihajlovic
+2  A: 

I've been on some projects where we had a lot more talkers than developers. My inclination is to ignore the talkers and listen to the coders. Even then there's usually one person who is in charge of accepting patches. There may be political issues they have to tread lightly around, but for all intents and purposes they have final say.

Linus has had some fairly famous issues with the same problem. Take note of this thread from 2006: Talk is cheap. Show me the code.

One more thing. Since you say in the comments that you do have code, just a lot of rewrites, I'd highly suggest you read Eric Raymond's The Cathedral and the Bazzaar. Eric's a bit of a nutter actually, but the essay is priceless for anyone wanting to run a Free Software project.

T.E.D.
@T.E.D - i like your thought about "talk is cheap". could you take a look at this? http://stackoverflow.com/questions/2328631/
Evgeny
I looked, but I don't really have much new to add. I have to admit I haven't run a project lately, so I'm not really up on how the interactions between new distributed revision control systems and new social media capabilities might alter the dynamics. I'm guessing you're still doing way better than average to get even one other real contributor though.
T.E.D.
+2  A: 

This is a difficult question to answer because "open source projects" is a very broad selection of projects. I think the defining characteristic is the project has a single unifying goal (perhaps, a set of related goals).

Are you on any open source mailing lists? I am subscribed to my favorite distro's mailing list and the developers e-mail each other many times a day. Also, there are other avenues of communication such as IRC / Instant Messenger.

I am not a RoR developer, but I would suggest skimming through Getting Real for some inspiration.

omg rep > 200, no more ads! thank you! thank you!
+2  A: 

If you read the history of most open source projects, they start with one person doing a lot of the initial work. If there's a team, it's small, and one person actually leads the team.

To pick one example. In the Python community, they refer to Guido van Rossum as the Benevolent Dictator for Life (BDFL). His word is (more-or-less) final. In many cases there are folks don't agree with him -- but for the sake of the Python community -- they seem to acquiesce to his judgment.

I think every open source project has a (singular) lead programmer who assures that decisions get made, and made in a consistent way.

Back in the olden days, Fred Brooks (The Mythical Man Month) described "chief programmer teams". Same concept. Someone is in charge of the technical content. Emphasis on the one. Nowadays we call the the "architect" or some such term.

S.Lott
A: 

I'd have a think about your and your team mate's motivation and goals in this project. Are they to:

a) Create an awesome product

or

b) play around with software, and learn some new things

Both answers are equally valid, and i'm guessing it'd be a mix with a leaning towards one or the other.

If it's more of (a) then look at suggestions on methodology etc. Maybe even consider forming a company around your awesome idea. Because making such a thing takes work.. and well you probably get enough of that at work.

If it's mostly (b) then you're going to have a harder time making an awesome product, but an easier time in that you can forgive yourself for not getting there right away and suffering multiple re-writes. And you will all be learning new skills each time you look at it and work together which are very applicable to your long term careers.

Firstly i suggest you all be clear with each other on why you are there. Then look at paring back on what you are planning on doing, and release early and release often. If your project is made up of three components and one is complete, then release that as a separate component and start building a community of users. This will pay off as these users will possibly help you with your code, plus form a solid core of users for the full product and let you assess how you are going early rather than later.

Good luck.

Mark Nold