A process proposal for 3.10
Andreas Raab
andreas.raab at gmx.de
Wed Oct 18 04:11:36 UTC 2006
Yes, that is exactly my point. Thanks for the nice reformulation.
Cheers,
- Andreas
brad fowlow wrote:
>
> The main idea in the kind of process being suggested here is
> the value of decoupling the release process from the development process.
> You don't define the release in terms of what's in it,
> but rather in terms of how things get into it.
>
> How do you do that, when one feeds the other?
>
> The same way an airline decouples its flight schedules from
> the passenger's process of getting their bags packed and getting their
> butts to the airport.
>
> You set up the release process as a small set of gating dates,
> and a set of criteria for what can pass through that "boarding" gate.
>
> I.e. declare that there's a release on April 2.
> To be in it, the development must be complete on December 2,
> and it must have integrated and passed tests by February 2. (Just
> examples here.)
>
> All you know about that release now is that it might be different from
> the current one,
> if anything makes the dates, and that it -will- be released on April 2.
>
> Meanwhile, as a developer, if you want to contribute,
> you know exactly what needs to be done:
> the release process tells you how to get stuff into a release.
> That information is just those same gating dates and criteria.
> The criteria are usually about submission format, quality,
> and who gets to issue 'tickets' for things you'd like to submit;
> usually there are gatekeepers for the broad functional areas,
> and they work in the usual consensus ways.
>
> So as a developer you know what you need to do, by when,
> and you know that if you do it, then you'll get that change into the
> release.
>
> If you want to make something that can't be ready for this release,
> or if you just don't make it, then no problem. You try for the next one.
>
> The 'gating' criteria need to be clear and workable for both bug fixes
> and major surgery, so you usually express them in terms of stability;
> the usual form is that you'll take things if they don't cause regressions,
> and if the relevant gatekeeper(s)
> (whose allegiance is to a functional component, not the release process)
> recommends the change.
>
> This kind of process is usually called date-driven, or 'train';
> it's different than a content-driven approach in that dates determine
> content, rather than the other way around.
>
> A lot of organizations have found it a good way to untangle the knots
> when managing large releases that have a lot of separately-developed
> moving parts;
> you let the subsystems (sometimes just one or two guys) run their own
> processes.
> If they pack your bags on time, and make it through security,
> they get on the flight.
>
> There is art in it. You have to manage the inflow and date staging
> so you don't flood the gating processes. But the focus there is on
> understanding
> the integration and testing and other "boarding" processes, not on
> predefining the content.
>
> Anyway, I just thought a rundown from that pure-process point of view
> might be helpful.
>
> It's not there isn't a place for setting vision and goals;
> it's just that those aren't part of this kind of a release process.
> They're part of the development processes, which are separate.
>
> - brad
>
>
>
>> I basically agree.
>> So in my proposal I was trying to see on what I want to work (based on
>> the artefacts already there and also what could
>> be vision) and see if other people are willing too.
>> Just making the list of things that should be integrated and integrate
>> them is a lot of time.
>> In general I would love to stop harvest fixes and produce more fun
>> stuff (but may be I'm a housekeeper that like to
>> clean stuff), may be I should stop because my job is different now.
>>
>> Stef
>>
>>> 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
|