Andrew Bennett's Blog

Just another WordPress.com site

Community Driven Development

leave a comment »

My apologies, I’ve been struggling to find a way to concisely summarise what I’ve been thinking about recently, but this post may have turned into a rant. I’ve been trying to think of a good development workflow that would support open source and community driven projects. Here’s a rant-free diagrammatic summary, feel free to read further if you’re interested:

Summary

Is this actually simpler?

Rant

The problem with community driven not-for-profit projects in my opinion is that they often don’t have the funding or the focus they need to make a cohesive polished product.  Projects are often forked in so many ways by having different people working on them with different goals, levels of commitment, design methodologies and technological biases. I’m not saying diversity is a bad thing, but when someone wants something new they often seem to either start from scratch or completely fork a project.

Documentation

Documentation seems to be one of the big problems here. You need someone with the skills to document something for people completely unfamiliar with a technology, you need them to be accepted inside that community, and then you need them to have incentives to help. There needs to be introductory high level documentation, that allows new users to easily gauge what they can do and then there needs to be lower level documentation to show them how to do it. There needs to be a clear separation between user and contributor documentation, as it is so important that people know how to contribute but not to scare away or confuse users.

So what does main do?

Extensibility

From a programming point of view I really like OpenGL and OpenCL, they have clear low level and fairly extendable programming interfaces.  For me one of the most important things in community driven projects is well designed APIs.  In my opinion beyond normal design practices a good API needs two things:

It must be extremely modular

For example, if I want to look at your arithmetic coder I won’t come back an hour after getting it to fetch dependencies to find it has downloaded half of KDE. Yes, this happened.  Ideally dependencies should be minimised, modules should be compact and be able to be run with fewer features if dependent modules are missing.

It must be easily extensible

Blender is something I use a lot, as an artist, but as a programmer I’ve never been able to make much progress.  Recently however they’ve made drastic improvements to the API and UI allowing plugins to seamlessly integrate themselves into the Application without a recompile.  Ideally the creation of these plugins is well documented and then they can be easily integrated into the base system.

Community Funding

Minecraft Money ShotYou would not believe how many posts there are on the Minecraft forums.  Notch made the initial release of Minecraft in a week and the community has now driven it to the point where he is a multimillionaire from the pre-purchases of a game that was still in beta.  This next bit is a brainspasm, let’s call this freewriting. Often software companies gather usage statistics on their users, I think it’d be really interesting to optionally tell users statistics of what went into what they use. For example, 1000 users use spend one hour on 10 of the features of your program, and it took 5 programmers $500 worth of time and resources to implement those features. Your program could then credit those programmers and say they each donated $100 of their time to providing those features, $0 has been payed for so far and you are responsible for 0.1% of the total usage of those features. Perhaps you’d like to donate 50c or more?

User driven features

Often implementers are awful at design and aesthetics, as well as predicting what users want from their product and even how they will use it.  I love the idea of user devised features, as it gives implementers well discussed, often clearly defined, and above all, popular goals.  I’d really like to see a polished open source community driven feature request system, tied into something like the SPP, where implementers could set a minimum cost of producing a feature and when donations reach the required amount to make it happen the feature can be implemented.

Just another use case

</Rant>

This whole rant started when I read an appeal from Wikipedia founder Jimmy Wales, asking for donations to keep wikipedia going.  I use wikipedia all the time as a first stop summary of things I’m unfamiliar with and would probably be curled up in a corner in the foetal position if it went under. Just FYI, that banner is HUGE!

HUGE!

Advertisement

Written by therealbnut

November 26, 2010 at 3:11 am

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Connecting to %s

Follow

Get every new post delivered to your Inbox.