A process proposal for 3.10

Yann Monclair yann at monclair.info
Tue Oct 17 09:24:01 UTC 2006


We could use initiatives like the SummerTalk, to sponsor students to get 
some needed work done in Squeak. It would involve finding a tutor 
willing to give time over the summer, and also to take(find?) the time 
to write the project plans. But it could be both a good experience for 
the student and a benefit to squeak and its users.

It would also bring a satisfaction to the student, knowing his work is 
used :)

Yann , SummerTalk student
http://yann.monclair.fr/summertalk

karl wrote:
> I agree with Andreas. But I think we should consider the possibility of 
> the community to pay for someone to do some of the dirty work, for 
> example to make the maintenance of the process easier. There have been 
> people willing to put up money for projects like this. We could identify 
> what are the big bottlenecks in the process and what can be done about 
> them. Then we can look for a reasonable solution and make a offer/bounty 
> for a solution.
> Karl
> 
> 
> 
> 
> Andreas Raab skrev:
>> Hi Giovanni -
>>
>> I fully agree with the meta goals of your proposal, namely to enable 
>> people to do their own development and to limit the amount of time 
>> spend on each individual part of the release.
>>
>> That said, I'm in almost complete disagreement with the rest of your 
>> proposal ;-) The fundamental flaw in it is that you are trying to 
>> commit other people's time. Starting from "the board appoints a 
>> release team" (phase 0) over "the teams announce the development 
>> plans" (phase 1) and "code will get dropped" (phase 2) up until "the 
>> VMMaker team will want to..." (the example) you're happy committing 
>> other people's time. In my experience this has *always* been a fatal 
>> error in a volunteer open source project.
>>
>> The *only* time you can commit is your own. And given that, how much 
>> of your proposal works if the only time that you can count on is your 
>> own? Even if we want to change the release process we cannot change 
>> some fundamentals about the environment we're in. And one of those 
>> fundamentals is that (on a scale where it matters) you can't tell 
>> people what to do. They're doing it voluntarily, they're doing it for 
>> their own reasons and trying to change that simply won't work.  To 
>> give a more concrete example, the maintenance work I do for FFI, 
>> Graphics, Balloon, and Compression packages is purely a volunteer 
>> effort. If you ask me about my "development plans" for the next six 
>> months, all I can say is "uhm ... ". Most importantly, because I have 
>> a fulltime job in a startup I for example couldn't possibly commit to 
>> a six months active development plan. It's simply not doable and even 
>> if it were I'd reject it on the grounds that unless you pay me for it 
>> I'm not going to treat this serious enough to make six month plans ;-)
>>
>> Both Stef and Markus understand that basic point. They both understand 
>> that in reality, all they can count on is their own time and they have 
>> reacted by investing more and more of their own time and effort in the 
>> process. And I would like us to change that process from one that 
>> leaves people burned out into one that can be done in a reasonable 
>> amount of time with a sustainable amount of energy.
>>
>> That change starts by admitting that we're all volunteers. Whether 
>> something will happen depends on so many factors that it's basically 
>> useless to try to do serious upfront planning for it. And again this 
>> is meant on scale - for each individual team it may make perfect sense 
>> but on scale I think you really can't.
>>
>> To emphasize that point even more I'll give you two recent examples: 
>> First, we have been talking for *years* about changing the source 
>> pointer in the methods. That it happens *now* is (from my point of 
>> view) exclusively due to the fact that we got a new sources file in 
>> 3.9 and lost the entire previous history for the single reason of the 
>> source limitations. Could anyone really have planned for that? I don't 
>> think so. Second, the SSL implementation we got recently. A while ago 
>> we started looking at SSL ourselves and decided to go with OpenSSL - 
>> we talked about Crypto team and their work but honestly, I would have 
>> called anyone a nut who would have told me that this stuff will be 
>> ready by now (I probably would have just laughed them out of the 
>> room). At least for me, this project came out of the blue, completely 
>> unforeseen and again nothing you could have possibly planned for.
>>
>> My point here is (in case you haven't guessed it by now) that in a 
>> volunteer community "planning" on the scale you are looking at is in 
>> many ways a futile exercise. Things happen for their own reasons at 
>> their own speed and not because you want them. And unless you want to 
>> put in endless amounts of energy by developing all the stuff that 
>> "your release" needs, you better find a way of dealing with that.
>>
>> Which brings me to the proposal I made earlier. The main goal of that 
>> proposal is really to get away from the upfront feature planning 
>> process and deal with the chaotic reality of open source development 
>> by *embracing* it. So instead of feature list of things that we SHOULD 
>> do, I'd like us to discuss things we HAVE done. Instead of wishful 
>> thinking I'd like us to talk about all the cool stuff that is actually 
>> happening!
>>
>> I think that this may be the only way to make sure we can survive the 
>> release process in a volunteer community like ours and it's 
>> surprisingly similar to what we did at SqC - the main difference is 
>> that SqC (instead of the community) picked which of the contributions 
>> got adopted and which ones didn't. At SqC (or any other commercial 
>> entity that I have been involved in) we have always been aware of 
>> error 33 and therefore never relied on the open source effort to 
>> produce specific results in a specific time frame. That's what 
>> companies do, that's why they take money to do it. However, anything 
>> that happened was always welcome and often a surprise. And I can say 
>> for sure that during those times nobody got burned out by the 
>> process.  And I think that process can be recreated.
>>
>> Cheers,
>>   - Andreas
>>
>> Giovanni Corriga wrote:
>>> Hi all,
>>>
>>> since we've started discussing 3.10/4.0, I'd like to relay some thoughts
>>> that I've expressed some times ago on #squeak about a possible
>>> development process for Squeak 3.10.
>>>
>>> This proposal is based on two points:
>>> - decentralization of development
>>> - fixed duration of iterations ("timeboxing")
>>>
>>> "Decentralization of development" means moving most of the
>>> responsibility of development from the release team to the single
>>> package mantainers (stewards). The release team should just be an
>>> integrator of the code blessed by the stewards, and should facilitate
>>> coordination between the stewards of different packages.
>>> "Timeboxing" means having a fixed length release cycle, at the end of
>>> which a new stable version is released. This means that if there are
>>> some problems with a new feature, the deadline doesn't get postponed;
>>> instead it's the feature that gets dropped from the current development
>>> release and rescheduled for the next release.
>>>
>>> How would this work? Here's a more detailed description.
>>> -----------------------------------------------------------------------
>>> PHASE 0: RELEASE TEAM FORMATION
>>> The SqF board will appoint a release team for 3.10. This team will have
>>> 3-7 members; 5 would be the sweet spot.
>>> The first task for the release team will be to find a mantainer for each
>>> one of the packages currently in the image. If they can't find a
>>> mantainer for a package, than said package _will get dropped from the
>>> image_ without any further discussion.
>>>
>>> PHASE 1: RELEASE PLAN
>>> After having found mantainers for every package, there's a package
>>> selection phase, during which the team and the maintainers:
>>> - decide which packages currently in the image should get removed from
>>> the image and turned into SqueakMap-loadable packages.
>>> - decide which new packages can be added to the image or replace other
>>> packages currently in the image.
>>> Input from the community and the stakeholders will be taken into
>>> account.
>>>
>>> After deciding which packages will be in the 3.10 image, the release
>>> team, the mantainers and the community will work on creating the release
>>> plan.
>>> Each package mantainer will announce what it plans to do for 3.10. The
>>> release team will integrate these proposals into a coherent release
>>> plan, solving possible conflicts and coordination problems. The
>>> community will be able to make comments and/or requests.
>>>
>>> After all these steps, which shouldn't take more than a month, the
>>> development of 3.10 can start.
>>>
>>> PHASE 2: DEVELOPMENT
>>> Development will have three stages:
>>> - a 3 months alpha stage
>>> - a 2 months beta stage
>>> - a 1 month gamma/RC stage.
>>> The deadline for each stage will be decided at the beginning of the
>>> iteration.
>>> Every week during each stage the release team will integrate the new
>>> releases of each package blessed by the package mantainers.
>>>
>>> Package mantainers will be the main responsible for development of their
>>> package and they'll be free to manage development as they like; ideally
>>> they should create a development team.
>>>
>>> If at the end of the alpha stage some of the work items of the plan
>>> aren't near completion, _these items and the corresponding code will get
>>> dropped_. If this is not possible, the code will be kept in the image,
>>> but it will have not to break the other code in the image.
>>>
>>> During the beta and gamma stages, no new features will get added to the
>>> image; only bug fixes can go in. During the gamma stage, only
>>> showstopper bugs will be fixed; other bug fixes (eg. cosmetical fixes)
>>> will be scheduled for 3.10.1.
>>>
>>> During the gamma stage of 3.10, the release team for 3.11 (or 4.1 or
>>> whatever) will get appointed and will work with the package mantainers
>>> to form the release plan for the next version.
>>>
>>> EXAMPLE
>>> Here's a an example of how things could possibly work.
>>>
>>> Release plan:
>>> During phase 1, the various package mantainers propose work items. So
>>> let's pretend that...
>>>   - VMMaker team will want to:
>>>     * integrate the async event patches useful for SqueakGtk.
>>>     * integrate the Ffenestri code in all VMs, including the Unix one.
>>>     * work with the Kernel team/maintainer on CompiledMethod cleanup.
>>>   - Nebraska team will work on removing it from the image.
>>>   - Pavel will want to work with various mantainers to integrate his
>>> patches for his KernelImage system.
>>>   - Tools team will want to:
>>>     * better integrate AST and the Refactoring services.
>>>     * make Omnibrowser the default browser.
>>>
>>> Now let's pretend that at the end of the alpha stage, the Tools team
>>> still hasn't produced an Omnibrowser based debugger. Since it's the end
>>> of the alpha stage, the OBDebugger will be punted to the next release,
>>> and 3.10 will have a class browser based on OB but still the old
>>> debugger.
>>> -----------------------------------------------------------------------
>>>
>>> I believe a process such as the one I'm proposing can work and help
>>> produce good quality releases.
>>>
>>> I'd like to hear comments on this, even if they just say that my
>>> proposal sucks.
>>>
>>>     Ciao,
>>>
>>>         Giovanni
>>>
>>>
>>>
>>
>>
>>
> 
> 



More information about the Squeak-dev mailing list