I think that we need a change in the way that we do development to reduce the barriers to new contributors joining the project to be as low as possible. We have lots of people who look like they want to contribute, or are even trying to contribute, but not enough people actually become productive contributors.

Thusfar in the project our 'policy' on SVN/CVS access has essentially been "do something to get noticed, and convince us that you could be a good contributor, and we will give you access".

I think that this might be too limiting. Many potentially good contributors don't get noticed or offered access. So, I'm going to propose a fairly dramatic change: I think we should give SVN access to almost anyone who wants it, as long as they follow some simple rules.

The main rule is, only make changes that you think are definite improvements to the game which are unlikely to provoke controversy. Seek approval from someone more senior in the appropriate area to make changes that may be controversial.

So, adding or removing a unit, or changing a unit's stats, or adding or removing a campaign can't be done without approval. Adding an animation to a unit that doesn't have one can be. Improving a unit's image is generally okay if the contributor feels their change is a definite improvement. Changing poor grammar in a campaign or fixing an obvious problem in the WML is also fine.

Changes to C++ code would have somewhat stricter rules. Basically we wouldn't want someone to make a change that they feel is an improvement, leave the project, and then have their change have introduced a subtle bug which is very difficult for developers to track down.

The wide availability of SVN access would also make it easier to streamline approval for changes. If someone comes to me and says "hey I think in scenario 16 of HttT the AI should recruit more trolls" rather than saying "yeah I guess....I'll look into it when (if) I get a chance" I can just say "hey great idea, go ahead and make that change." If someone says "hey I want to add this unit to the game", rather than the current ordeal they'd have to go through, we could say "sure, commit it, we'll try it for a release or two, and if it works out we'll keep it." With code changes, if someone obviously competent comes with a patch, it can be waved through rather than requiring a long stay on the patches page.

I think the main objections to us adopting this approach would be the potential for bad changes -- i.e. regressions -- to be introduced. However, I don't think that is that much of an issue. If someone changes a unit graphic and makes it worse instead of better, then no big deal, just roll back the change in SVN. If someone intentionally nukes the repository, then we can remove their access and roll back the change. If someone adds a poor quality animation or sound for a unit, well, it's possibly better than nothing at all, and will just encourage us to slot something in that is actually of good quality.

Thoughts on this change?

David

Reply via email to