This page proposes a new way to coordinate Boson releases.
Current situation
It has been more than 6 months since last release and no active development has happened for several months now.
Currently latest version 0.11 was under development for nearly 1.5 years before it got released.
We should try to avoid such situations (delaying releases, development inactivity), because it results in loss of interest for both users and developers.
Proposal
We need a better way to coordinate development and releases. I'm proposing to use milestone-based released scheme:
- After every release, we compile a list of major features (actually of all bigger changes, e.g. some bugfixes might also fall into this category) that need to be in the next release. This should happen during 1-2 weeks following the release
AB: can you name at least one currently? I can't! What makes you think we will be able to for the next release?
- The list should always contain "no critical bugs" item
umm.. a "critical" bug is pretty much defined as a "we wont release with that bug", so it's kinda redundant to include that...
- Every entry in the list must be associated with a developer (or developers) who is responsible for implementing this feature
- All the features in the list should take about 2-3 months to develop, thus we'd have a release every 2-3 months. I think we mostly know how much time we can devote to Boson in next 2-3 months, so with that timeframe we should be able to make quite realistic feature lists
AB: I have never been able to guess how much time I need for a larger project. Actually, estimating the required time for projects is one of THE most difficult tasks in software engineering at all. So this restriction excludes lots of things in advance (people tend NOT to add things to lists if they are not sure if they are allowed to add them) and thus many things won't get done. I don't like this.
- Once the feature list has been finalized, it shouldn't be changed, except for emergency situations (which should be really rare), e.g. sudden lack of time or the release being delayed by a single unimplemented item
AB: Ok, now I have moved from the "don't really like this" to the "I hate this" fraction. I am not allowed to work on what I want to work on right now?? Hello??
- Once all features in the list have been implemented, we will test it for about a week and then make a release
- No bigger features/changes should be implemented except for those in the list. This should make sure that the development stays concentrated towards the releases instead of everyone just picking features they want to work on most. If you want to make a bigger change, you just need to wait until the next release (<= 3 months usually)
AB: I think this requirement does pretty much the opposite of what you're trying to achieve. It means you cannot start a larger projects anymore once you are close to release. The idea is of course that you concentrate on "more important" things for now. The usual effect in open source is, that that person does work on nothing at all. I am pretty sure this would apply to me - I tend to work on what I want to work on and do the boring work "when I have time" (which happens pretty often actually). A requirement like this would make me move to other projects of mine (e.g. learning for uni or so) and thus me doing nothing for boson. This has actually been the main reason for a lack of development from me lately.
So the release cycle would be:
- Compilation of the feature list for the next release - 1-2 weeks
- Implementing features in the list - 2-3 months
- Testing & preparing for the release - about 1 week
- Release!
Total length of the cycle would be no more than 4 months
AB: In theory. I have yet to see a release schedule that actually worked as expected.
Advantages
- We'd have more releases and less time between them -> increases interest (I hope)
AB: by who? Users? Probably. But developers (i.e. you and me)? Due to the reasons listed above, I'd disagree.
- Development stays concentrated as you've got a schedule to keep up with (you define your schedule yourself though, so it's flexible)
AB: assuming the developers are willing (!!) to stick to the plan
Disadvantages
- Schedules and more strict release/development policy might scare away potential contributors (but hell, we don't have any anyway...)
- A very formal release schedule for a 2 person development team. Say, do you need a formal schedule? If so - sure, go ahead. But don't expect me to stick to it, cause I won't. I can cope with a certain level of formality, but after all the reason that I work on an open source game, is that I don't like too much formality. And I don't see the point of it in a 2 person team at all.
- The plan goes completely crazy when things turn out differently to what has been estimated. Assume your features take actually 4 months to get implemented, mine take 2 weeks (you underestimated and I overestimated the required work). What then? I should just stop doing anything for 3 months? If I am allowed (as an exception
) to make an addition to the plan: what if that project turns out to take even longer than 4 months? Maybe even because I lose interest at some point and it just gets boring (and I'm not allowed to do anything else for a while according to the plan)?
- You need to know in advance what features should get implemented
Alternative
Alternative solution would be to have a fixed-length release cycle of, say, 3 months.
This would also fix we-don't-have-any-releases problem, but it might lead to releases which don't have many new features compared to the previous release.
AB: I don't consider this a problem