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