← Back to team overview

fuel-dev team mailing list archive

Re: Process improvements revisited

 

On 12/11/2013 11:06 AM, Oleg Gelbukh wrote:
Bogdan,

You might be interested in the approach taken by Swift team for long-term development effort of erasure coding storage option:
http://lists.openstack.org/pipermail/openstack-dev/2013-July/012102.html
Thank you, the approach is good indeed. Do we have a rights or work-flow for creating WIP branches of our main repos?

--
Best regards,
Oleg Gelbukh


On Wed, Dec 11, 2013 at 1:02 PM, Bogdan Dobrelya <bdobrelia@xxxxxxxxxxxx <mailto:bdobrelia@xxxxxxxxxxxx>> wrote:

    Hello.


    On 12/10/2013 09:14 PM, Dmitry Borodaenko wrote:

        All,

        We still have a few pain points left in our development
        process that I
        think are easy to fix with a bunch of simple rules. I think
        releasing
        4.0 will be less painful if we try to address these.

        1. Branch management for maintenance releases

        We already had this discussion during 3.2.1 release cycle, and
        agreed
        to follow the approach that is in line with what OpenStack and
        most
        other free software projects are following. Still, I think we
        should
        do better at actually following the process we agreed to.

        To see how good we were at following it for 3.2.1, open two
        terminal
        windows and run:

        git whatchanged 3.2..3.2-fixes
        git whatchanged 3.2..master

        and for each commit in 3.2-fixes, try to find a matching fix in
        master. Last time I checked there were still many cases where
        bugfixes
        were merged to 3.2-fixes before (or even without) merging them to
        master. Did anyone actually check that we're not missing any
        important
        fixes from 3.2.1 in 4.0?

        We should create a new stable/4.0 branch as soon as 4.0 code
        freeze is
        announced (ideally, the announcement itself should direct
        committers
        to the new branch). Reviewers should REJECT all commits to
        stable/4.0
        that have not been merged into master, unless a justification is
        provided in the COMMIT MESSAGE.

    Can Jenkins help us by -1 such patches?
    I.e. Jenkins could put -1 to any patch targeted for non-master,
    unless its commits were found in master.


        2. Management and code review of feature development branches

        Yet another thing that everyone seems to agree on is that huge
        long-lived feature branches with many commits and thousands of
        lines
        worth of changes are evil and dangerous. Luckily, the move to
        Gerrit
        will make it hard enough to maintain and merge multi-commit
        branches,
        and will push people towards committing and merging changes in
        smaller
        self-sufficient chunks.

    That should we do for long running researches, such as HA improvements
    (started at 3.1, targeted to 4.1 only), or torrent based provisioning?
    Should we melt down hundreds of commits into a single patch in WIP
    branch,
    before submitting new feature to review?


        A recent negative example is the fuel-library pull request
        #911 that
        has merged 104 duplicate commits from ancient alternative
        history into
        master, instead of simply rebasing a single commit. The only
        way to
        prevent something like this from happening is to summarily reject
        changes that are too large and/or contain messy revision history.

    Jenkins could come to help here as well. E.g. -1, if any commit in
    PR are
    already present in target branch's history.


        The other side of the same problem is holding back small
        reasonable
        changes for too long, placing unnecessary burden on authors to
        keep
        rebasing their change on top of other changes that got merged
        earlier.

        For example, my own fuel-docs pull request #67 sat unreviewed
        for a
        week only to be obsoleted by the move of the repo to
        StackForge (after
        being obsoleted couple more times by changes that were merged
        ahead of
        it). I suspect most other developers had similar experiences.
        On top
        of obvious frustration, holding a change back tempts the author to
        keep piling changes onto the same request instead of creating
        a new
        review request on top of updated master for their next set of
        changes.
        To use the same example, most of the third commit on #67
        should really
        have been a separate pull request.

        The fix is once again rather obvious: when going through reviews,
        start with fixes for critical bugs, then go through remaining
        reviews
        starting with the least recently updated ones. Don't merge a
        review
        request if there's an older review request that can also be
        merged.

        I'm using this link to see all our outstanding review requests:
        https://review.openstack.org/#/q/status:open+project:^stackforge/fuel-.*,n,z

        Right now I see that there are review requests that have +1
        from CI
        and from reviewers (meaning they can be merged) sitting unchanged
        since Nov 25, and a few unreviewed requests going as far back
        as Nov
        3. We shouldn't have a request sit untouched by an approver
        for more
        than a week, let alone a month. If there's a any reason you
        don't want
        to merge it, give it -1 and explain. Otherwise, there's no
        reason not
        to give it +2. If you have time to review and merge a newer
        request,
        you have time for that older one, too.

        3. Bugs triage

        Moving our bug tracking to public launchpad was an important step
        towards opening up our development process, now we should improve
        visibility of our bugs triage and release management processes. In
        addition to announcing target release dates, we should also
        have well
        defined release criteria (for example, no critical bugs
        affecting the
        upcoming release, no more than 5 bugs with high importantce,
        etc.),
        and documented rules on how to set importance of a bug. We
        don't have
        to be rigid and beaurocratic about it, but having documented
        criteria
        will help all participants of the process prioritize their own
        work
        and understand how it fits into the state of the whole project. It
        will also help avoid situations like missing an important
        bugfix in a
        release, by forcing us to review priorities of all open bugs
        before
        announcing a release.



-- Best regards,
    Bogdan Dobrelya,
    Researcher TechLead, Mirantis, Inc.
    +38 (066) 051 07 53
    Skype bogdando_at_yahoo.com <http://bogdando_at_yahoo.com>
    38, Lenina ave.
    Kharkov, Ukraine
    www.mirantis.com <http://www.mirantis.com>
    www.mirantis.ru <http://www.mirantis.ru>
    bdobrelia@xxxxxxxxxxxx <mailto:bdobrelia@xxxxxxxxxxxx>



-- Mailing list: https://launchpad.net/~fuel-dev
    <https://launchpad.net/%7Efuel-dev>
    Post to     : fuel-dev@xxxxxxxxxxxxxxxxxxx
    <mailto:fuel-dev@xxxxxxxxxxxxxxxxxxx>
    Unsubscribe : https://launchpad.net/~fuel-dev
    <https://launchpad.net/%7Efuel-dev>
    More help   : https://help.launchpad.net/ListHelp




--
Best regards,
Bogdan Dobrelya,
Researcher TechLead, Mirantis, Inc.
+38 (066) 051 07 53
Skype bogdando_at_yahoo.com
38, Lenina ave.
Kharkov, Ukraine
www.mirantis.com
www.mirantis.ru
bdobrelia@xxxxxxxxxxxx


Follow ups

References