Open Source Content Management Framework

PROPOSAL: New MidCOM commit policy

1 2 next
  1. PROPOSAL: New MidCOM commit policy

    Fri October 10 2008 09:46:59 UTC

    Ragnaroek is now out, and so it is time to put a new commit policy in order. With 2.8 everybody has been bitten many times with nasty breaking changes and regressions, and the plan is to prevent that for the future, while keeping the necessary creative freedom for our committers.

    To ensure these policies are functional we will appoint a "VCS tyrant" who will police all incoming commits and revert them if necessary. This worked well for establishing MidCOM coding standards under Torben, and we hope it will work well again. I'd propose Rambo for this.

    MidCOM 2.8

    With Ragnaroek being new stable, Thor (Midgard 1.8 and MidCOM 2.8) goes to bugfix-only mode. The proposed schedule and limits related to this are:

    • October 2008: No breaking changes allowed, commits only referring to bug number and backported from 8.09
    • January 2009: No new components
    • March 2009: Security fixes only

    MidCOM 8.09

    Ragnaroek is the LTS version, meaning that maintenance and development will happen in this branch (SVN trunk at the moment) for a long time to come. Therefore, the proposed schedule is quite simple:

    • October 2008: No breaking changes allowed, commits only referring to bug number

    New components will be welcome to the branch for several years to come.

    MidCOM 3

    MidCOM3 is the "new world" MidCOM that will be running in the 9.03 Vinland release onwards. To ensure smooth running, we should try to adhere to some rules:

    • January 2009: "master" is stable, work happens in feature branches
    • April 2009: No breaking changes to core or core components, "contrib" remains a wild west
    • June 2009: No commits without corresponding unit tests

    Definitions

    • "No breaking changes": all commits must be backwards compatible. If backwards compatibility needs to be broken, then the component must be forked. Core backwards compatibility will not be broken.

    • "Feature branches": each new feature or bug fix is worked in its own git branch, and only merged to master when it has been properly tested. Master remains stable.

    • "No new components": only bug fixes or minor feature additions to existing components are allowed. This is to ensure new work moves to current stable branch.

    • "Security fixes only": at this point all real work has moved off the branch and only security fixes are done as needed.

    • "Commits only referring to bug number": Each commit must include referral to corresponding bug in the commit message. This means every new feature or a bug fix must first be reported into the bug tracker.

    • "No commits without unit tests": Every commit must be covered by a unit test.

    Some links

    •  Reply
  2. Re: [midgard-dev] PROPOSAL: New MidCOM commit policy

    Mon October 13 2008 00:09:37 UTC
    Henri Bergius schrieb:
    > Ragnaroek is now out, and so it is time to put a new commit policy in order. With 2.8 everybody has been bitten many times with nasty breaking changes and regressions, and the plan is to prevent that for the future, while keeping the necessary creative freedom for our committers.
    >
    > To ensure these policies are functional we will appoint a "VCS tyrant" who will police all incoming commits and revert them if necessary. This worked well for establishing MidCOM coding standards under Torben, and we hope it will work well again. I'd propose Rambo for this.
    >
    > MidCOM 2.8
    > ----------
    >
    > With Ragnaroek being new stable, Thor (Midgard 1.8 and MidCOM 2.8) goes to bugfix-only mode. The proposed schedule and limits related to this are:
    >
    > * October 2008: No breaking changes allowed, commits only referring to bug number and backported from 8.09
    > * January 2009: No new components
    > * March 2009: Security fixes only
    >
    > MidCOM 8.09
    > -----------
    >
    > Ragnaroek is the LTS version, meaning that maintenance and development will happen in this branch (SVN trunk at the moment) for a long time to come. Therefore, the proposed schedule is quite simple:
    >
    > * October 2008: No breaking changes allowed, commits only referring to bug number

    Well, ideally, there should never be any breakage in SVN, but I'm not
    sure if it's not a bit too early for a rule like tat. I bet that half of
    the components in the tree were not even run yet on 2.9 or even 2.8 yet
    (net.nehmer.jobmarket, anyone?), while others are in need of quite
    drastic rewrites (DM1 to DM2 can be quite messy f.x. and hard to
    reproduce the functionality exactly). For core components, such a policy
    is fine, but I have to admit that I don't really know which ones are
    core. The only indication is the distinction made by m.a.babel, but I
    don't know if that is really accurate (it sure would be nice if you
    could tell from the component name, if f.x. all core components would be
    called midcom.core.something, but I guess it's a bit too late for that now).

    To make commits refer to bug numbers is a good idea, but it would be
    more useful if we had better milestones. F.x. trac says that there are
    115 fixed bugs for 8.09, but I have no easy way to know if the fixes are
    present in the .0 release, in the .1 release or still only in SVN. Other
    projects (like the trac project itself) usually close milestones when a
    release is done and reassign all tickets which are still open to the
    following point release. With a system like that, you could also easily
    generate changelogs, by just copy-n-pasting the list of closed tickets
    into the release notes.

    But the problem with this approach is that there is not really one
    release, MidCOM is at .1 at the moment and Midgard is at .0 while the
    components have completely different numbering systems and release
    times. Maybe there should be separate milestones at least for MidCOM
    core, MidCOM others, and Midgard. Because otherwise, there'd soon be
    hundreds of open and closed tickets for the 8.09 milestone without any
    real way of managing them.


    Bye,

    Andreas


    >
    > New components will be welcome to the branch for several years to come.
    >
    > MidCOM 3
    > --------
    >
    > MidCOM3 is the "new world" MidCOM that will be running in the 9.03 Vinland release onwards. To ensure smooth running, we should try to adhere to some rules:
    >
    > * January 2009: "master" is stable, work happens in feature branches
    > * April 2009: No breaking changes to core or core components, "contrib" remains a wild west
    > * June 2009: No commits without corresponding unit tests
    >
    > Definitions
    > -----------
    >
    > * "No breaking changes": all commits must be backwards compatible. If backwards compatibility needs to be broken, then the component must be forked. Core backwards compatibility will not be broken.
    >
    > * "Feature branches": each new feature or bug fix is worked in its own git branch, and only merged to master when it has been properly tested. Master remains stable.
    >
    > * "No new components": only bug fixes or minor feature additions to existing components are allowed. This is to ensure new work moves to current stable branch.
    >
    > * "Security fixes only": at this point all real work has moved off the branch and only security fixes are done as needed.
    >
    > * "Commits only referring to bug number": Each commit must include referral to corresponding bug in the commit message. This means every new feature or a bug fix must first be reported into the bug tracker.
    >
    > * "No commits without unit tests": Every commit must be covered by a unit test.
    >
    > Some links
    > ----------
    >
    > * MidCOM coding standards: <http://www.midgard-project.org/documentation/concepts-midcom-specs-components-styleguide/>
    >
    > * Feature branching with git: <http://bergie.iki.fi/blog/feature_branches_in_midgard_development_with_git.html>
    >
    > * Midgard synchronized releases process: <http://www.midgard-project.org/discussion/developer-forum/read/093499085eed11dd85376322b5d26f366f36.html>
    >
    > * PHPunit: <http://www.phpunit.de/>
    > _______________________________________________
    > dev mailing list
    > dev@lists.midgard-project.org
    > http://lists.midgard-project.org/mailman/listinfo/dev
    •  Reply
  3. Re: [midgard-dev] PROPOSAL: New MidCOM commit policy

    Mon October 13 2008 05:59:37 UTC
    Hi,

    2008/10/13 Andreas Flack <flack@contentcontrol-berlin.de>:
    > I bet that half of the components in the tree were not even run yet on 2.9 or even 2.8 yet
    > (net.nehmer.jobmarket, anyone?)

    Well, the point is that while some rules are in place, we can still
    try to remain sensible. If a component never worked in 8.09, then
    there can be no "breaking change" to it, can there ;-)

    With the "unproven" components that have fallen out of maintenance we
    have basically two options:

    * Drop them from SVN and PEAR
    * Have somebody adopt them (like happened with org.openpsa.*)

    > while others are in need of quite drastic
    > rewrites (DM1 to DM2 can be quite messy f.x. and hard to reproduce the
    > functionality exactly).

    DM1 to DM2 transition can indeed be a bit messy, especially if users
    run those components with custom schemas or custom templates. But I
    think as that has been accepted as a general goal in the Ragnaroek
    branch, we can deal with it.

    The important thing is to just let users know well in advance that it
    is going to happen. In 2.8, too often such changes (where templates
    would be affected) would be noticed only after a "pear upgrade-all"
    broke something. Unclear and breaking changes have hurt our reputation
    quite badly, and with Ragnaroek we must remedy that.

    > For core components, such a policy is fine, but I
    > have to admit that I don't really know which ones are core. The only
    > indication is the distinction made by m.a.babel, but I don't know if that is
    > really accurate (it sure would be nice if you could tell from the component
    > name, if f.x. all core components would be called midcom.core.something, but
    > I guess it's a bit too late for that now).

    It is too late for naming indeed, but in MidCOM componentloader there
    is a is_core_component() method to determine this.

    In MidCOM3 I think we should keep separate repositories (or at least
    separate directories) for core and contrib components.

    With Ragnaroek, the rules should be adhered to more strictly when
    dealing with core components, but in general we should avoid
    uncommunicated and undiscussed breakage also with the non-core ones.

    The main point about all this in the proposal is that:

    1. Changes should have some communication related to them (i.e. a bug in trac)
    2. VCS Tyrant has the final say on what is OK and what isn't

    > To make commits refer to bug numbers is a good idea, but it would be more
    > useful if we had better milestones. F.x. trac says that there are 115 fixed
    > bugs for 8.09, but I have no easy way to know if the fixes are present in
    > the .0 release, in the .1 release or still only in SVN. Other projects (like
    > the trac project itself) usually close milestones when a release is done and
    > reassign all tickets which are still open to the following point release.
    > With a system like that, you could also easily generate changelogs, by just
    > copy-n-pasting the list of closed tickets into the release notes.

    Actually, a good idea. It is much a question on how granular
    milestones we want to manage. Anybody else have opinions on this?

    If it is desired, I can easily open Ragnaroek .1 and .2 milestones
    there and start reassigning bugs.

    > Andreas

    /Henri

    --
    Henri Bergius
    Motorcycle Adventures and Free Software
    http://bergie.iki.fi/

    Skype: henribergius
    Jabber: henri.bergius@gmail.com
    Jaiku: http://bergie.jaiku.com/
    _______________________________________________
    dev mailing list
    dev@lists.midgard-project.org
    http://lists.midgard-project.org/mailman/listinfo/dev
    •  Reply
  4. Re: [midgard-dev] PROPOSAL: New MidCOM commit policy

    Mon October 13 2008 07:29:42 UTC
    Henri Bergius writes:
    > Hi,

    Hi!

    >> To make commits refer to bug numbers is a good idea, but it would be more
    >> useful if we had better milestones. F.x. trac says that there are 115 fixed
    >> bugs for 8.09, but I have no easy way to know if the fixes are present in
    >> the .0 release, in the .1 release or still only in SVN. Other projects (like
    >> the trac project itself) usually close milestones when a release is done and
    >> reassign all tickets which are still open to the following point release.
    >> With a system like that, you could also easily generate changelogs, by just
    >> copy-n-pasting the list of closed tickets into the release notes.
    >
    > Actually, a good idea. It is much a question on how granular
    > milestones we want to manage. Anybody else have opinions on this?
    >
    > If it is desired, I can easily open Ragnaroek .1 and .2 milestones
    > there and start reassigning bugs.

    Good option would be to keep all fixed bugs opened till next bugfix
    release is made.
    But on the other hand, it's enough to commit bugfix with 'Fixes #NNN'
    log to mark ticket as fixed.
    Minore milestones are good idea, but I am a bit worry if we are able to
    keep them up to date.

    Other than that +1 from me for minor milestones.

    Piotras
    _______________________________________________
    dev mailing list
    dev@lists.midgard-project.org
    http://lists.midgard-project.org/mailman/listinfo/dev
    •  Reply
  5. Re: [midgard-dev] PROPOSAL: New MidCOM commit policy

    Mon October 13 2008 08:09:01 UTC
    Hi, all

    On Mon, Oct 13, 2008 at 10:29 AM, Piotr Pokora <piotrek.pokora@gmail.com> wrote:
    > Good option would be to keep all fixed bugs opened till next bugfix
    > release is made.

    That is possibly even harder to keep track of.

    > Minore milestones are good idea, but I am a bit worry if we are able to
    > keep them up to date.
    >
    > Other than that +1 from me for minor milestones.

    Now that we have the synchronized releases (and possibly VCS Tyrant,
    if the proposal is accepted), we need some coordination here anyway.

    In 2.8 world we lived in the "wild west" where everybody committed
    whatever, and components and their fixes were released whenever. On
    the other hand this meant that bugfix releases were "out there"
    faster, but it also meant that nobody exactly knew what was fixed, and
    what breaking changes were introduced. This made "pear upgrade" like
    Russian roulette. The fact that we have MidCOM 2.8.24 tells something.

    If we want to get organized, we should really focus on a coordinated
    effort here. This means that we should:

    * Have a separate bug tracking milestone for each .x release
    * Connect all (or most) commits to a ticket assigned to its correct milestone
    * Make a coordinated .x release of all affected packages (midcom,
    midgard, components)
    - Of course, if in that milestone there are no commits to some
    package, that package doesn't need to go out
    * Maintain proper per-milestone changelogs for each package
    (documentation/CHANGES is currently practically dead)
    - In future these could maybe be autogenerated from commit messages,
    but on release we can also get these from milestone's closed tickets
    * Actually announce what issues have been fixed in that point release
    (supported by milestone info in Trac)
    * Communicate it clearly with users when the next .x release fixing
    their issue is due to come out

    Of course, the way I'm looking at this is from customer service point
    of view. We have gotten a lot of flak about the "wild west" model that
    MidCOM has been worked on in past, and a lot of customers have been
    pissed off when things suddenly break. If we want to fix that, we need
    to work in a more coordinated fashion.

    To make things work, we of course need people responsible for various
    things. Something that is "everybody's responsibility" often ends up
    being nobody's responsibility. I'd suggest the following roles:

    * VCS Tyrant: responsible for watching incoming commits and
    reverting/correcting faulty ones (Rambo?)
    * Bug Manager: responsible for shuffling things between milestones (Bergie?)
    * Release Manager: responsible for actually pushing new packages, and
    creating the release notes (Piotras)

    Now, the challenge is, can we make things more coordinated and still
    keep it fun and flexible enough for all committers. I think we can.

    > Piotras

    /Henri

    --
    Henri Bergius
    Motorcycle Adventures and Free Software
    http://bergie.iki.fi/

    Skype: henribergius
    Jabber: henri.bergius@gmail.com
    Jaiku: http://bergie.jaiku.com/
    _______________________________________________
    dev mailing list
    dev@lists.midgard-project.org
    http://lists.midgard-project.org/mailman/listinfo/dev
    •  Reply
  6. Re: [midgard-dev] PROPOSAL: New MidCOM commit policy

    Mon October 13 2008 08:19:58 UTC
    Hi,

    On Mon, Oct 13, 2008 at 11:09 AM, Henri Bergius <henri.bergius@iki.fi> wrote:
    > * Have a separate bug tracking milestone for each .x release
    > * Make a coordinated .x release of all affected packages (midcom,
    > midgard, components)

    Related to this, I suggest making first coordinated Ragnaroek
    milestone 8.09.2, as MidCOM and some components have already slipped
    out a .1 release.

    /Henri

    --
    Henri Bergius
    Motorcycle Adventures and Free Software
    http://bergie.iki.fi/

    Skype: henribergius
    Jabber: henri.bergius@gmail.com
    Jaiku: http://bergie.jaiku.com/
    _______________________________________________
    dev mailing list
    dev@lists.midgard-project.org
    http://lists.midgard-project.org/mailman/listinfo/dev
    •  Reply
  7. Re: [midgard-dev] PROPOSAL: New MidCOM commit policy

    Mon October 13 2008 08:21:56 UTC
    Henri Bergius writes:
    > Hi,

    Hi!

    > On Mon, Oct 13, 2008 at 11:09 AM, Henri Bergius <henri.bergius@iki.fi> wrote:
    >> * Have a separate bug tracking milestone for each .x release
    >> * Make a coordinated .x release of all affected packages (midcom,
    >> midgard, components)
    >
    > Related to this, I suggest making first coordinated Ragnaroek
    > milestone 8.09.2, as MidCOM and some components have already slipped
    > out a .1 release.

    That way we loose 8.09.1 minor release :)
    I like the way how we can quckly provide fixes on midcom level, if it
    workarounds core issues for example.
    What about 8.09.x.y versioning for midcom hotfixes?

    Piotras
    _______________________________________________
    dev mailing list
    dev@lists.midgard-project.org
    http://lists.midgard-project.org/mailman/listinfo/dev
    •  Reply
  8. Re: [midgard-dev] PROPOSAL: New MidCOM commit policy

    Mon October 13 2008 08:24:37 UTC
    On 13.10.2008, at 11.09, Henri Bergius wrote:
    >
    > * Have a separate bug tracking milestone for each .x release
    > * Connect all (or most) commits to a ticket assigned to its correct
    > milestone

    Hi.

    I would like to take this idea to future. When MidCOM 3 is out and if
    we have concept of "core" components and the contrib ones. I would
    like to see that there's no commit to the "core" that is not related
    to some ticket.

    If you are doing something new in a feature branch there must be a
    feature ticket opened for it. This enables us to keep really track
    what is happening.

    > Now, the challenge is, can we make things more coordinated and still
    > keep it fun and flexible enough for all committers. I think we can.

    And from this point of view the VCS Tyrant is a must in the future
    with the "core" components. Especially if we don't want any
    unexpected breaking up of things.
    Keeping things fun and flexible the "contrib" components serve that
    well I think. It can be the more "wild" west.

    If I look this as my point of view, it's not amount of more or less
    stable components that are out. It' about good covering set of very
    stable basic components + a very stable simple core. And with MidCOM
    3 and component heritance even the wild west can benefit this. So
    basically this means that more "creative" core service
    implementations don't need to reside inside the stable MidCOM's core
    code.

    - Tero

    --
    Tero Heikkinen
    http://teroheikkinen.iki.fi

    _______________________________________________
    dev mailing list
    dev@lists.midgard-project.org
    http://lists.midgard-project.org/mailman/listinfo/dev
    •  Reply
  9. Re: [midgard-dev] PROPOSAL: New MidCOM commit policy

    Mon October 13 2008 09:05:46 UTC
    Hi,

    On Mon, Oct 13, 2008 at 11:21 AM, Piotr Pokora <piotrek.pokora@gmail.com> wrote:
    > That way we loose 8.09.1 minor release :)

    Yep. This is intentional, as MidCOM managed to release .1 before we
    were able to move into this new model. So Midgard has to jump directly
    from .0 to .2 :-)

    Please note that this new model adds some new responsibilities to you,
    as you need to compile the change lists of both Midgard and MidCOM for
    that particular .x release, make packages etc.

    But I imagine most of these .x's will affect only some components, so
    that should be OK. Actually, this is the explanation for why Midgard
    skipped 8.09.1, as there simply weren't any fixed bugs to release for
    that :-)

    As to testing this model, how would 8.09.2 next week sound?

    > I like the way how we can quckly provide fixes on midcom level, if it
    > workarounds core issues for example.
    > What about 8.09.x.y versioning for midcom hotfixes?

    +1, though this mechanism should be only used for major bug and security fixes.

    > Piotras

    /Bergie

    --
    Henri Bergius
    Motorcycle Adventures and Free Software
    http://bergie.iki.fi/

    Skype: henribergius
    Jabber: henri.bergius@gmail.com
    Jaiku: http://bergie.jaiku.com/
    _______________________________________________
    dev mailing list
    dev@lists.midgard-project.org
    http://lists.midgard-project.org/mailman/listinfo/dev
    •  Reply
  10. Re: [midgard-dev] PROPOSAL: New MidCOM commit policy

    Mon October 13 2008 10:02:17 UTC
    Henri Bergius writes:
    > Hi,

    Hi!

    > Please note that this new model adds some new responsibilities to you,
    > as you need to compile the change lists of both Midgard and MidCOM for
    > that particular .x release, make packages etc.

    Yes, but it's not fun using trac's timeline.

    > But I imagine most of these .x's will affect only some components, so
    > that should be OK. Actually, this is the explanation for why Midgard
    > skipped 8.09.1, as there simply weren't any fixed bugs to release for
    > that :-)
    >
    > As to testing this model, how would 8.09.2 next week sound?

    Major issues should be fixed by this time, but we need to test them
    before releasing.

    >> I like the way how we can quckly provide fixes on midcom level, if it
    >> workarounds core issues for example.
    >> What about 8.09.x.y versioning for midcom hotfixes?
    >
    > +1, though this mechanism should be only used for major bug and security fixes.

    Agreed.

    Piotras
    _______________________________________________
    dev mailing list
    dev@lists.midgard-project.org
    http://lists.midgard-project.org/mailman/listinfo/dev
    •  Reply
1 2 next
Designed by Nemein, hosted by Anykey