On 29 October 2013 03:24, John Garbutt <j...@johngarbutt.com> wrote:

>> I based that on this statement, which I think sums it up well "If the patch
>> implements a feature, it should reference a blueprint. The blueprint should
>> be approved before the patch is merged"
>>
>> https://wiki.openstack.org/wiki/ReviewChecklist
>>
>> This does raise the question of what is consisted a feature though.
>
> Here is a really bad attempt at codifying what I think about features vs bugs:
> 1) If its a new API call, or a change in behaviour, or a new config
> setting, its a feature
> 2) If its just refactoring or just adding tests, it is neither a
> feature or a bug
> 4) A bug is a change to ensure the system operates "as expected" by
> the current documentation
> 3) A bug should be changed to a feature if it matches case (1)
>
> If we don't approve the blueprint first, we may end up not having
> enough information to create the required documentation, so I vote we
> enforce that a blueprint should be approved before we merge code.
>
> Getting a blueprint approved as low priority, should be quicker and
> easier than getting the associated code approved. Granted that might
> not be the case today, but we need to fix that.

I could certainly follow that algorithm, but the implication is that
all changes in behaviour are meant to go through careful design
review. Right now that certainly doesn't happen - and the blueprint
page also says 'major feature'. The algorithm you've put forward also
suggests that a blueprint is never needed unless there is a new API
call/change in behaviour/config setting - and I'd disagree with that,
because design review and approval is useful in major works (such as
behaviour preserving refactorings that change the DB schema/message
queue utilisation etc - not externally visible but still important to
get right).

-> I think 'bug vs feature' is the wrong language for framing the
problem we are trying to solve.

Here are my assumptions:
 - We have rigorous code review by folk who are a) familiar with the
domain b) familiar with the skeletons and c) familiar with project
history
   This will catch [most] poor works, whether large or small, at review time.
 - we want to respect the effort of our contributors and offer a means
to steer their work into good designs and avoid problematic designs
before significant development effort is invested. [Lets define
significant as 2 days coding].
 - we want to be able to say record that we said 'no' to some ideas
and reference that if they come up again
 - the same people doing code review are those doing design review, more or less
 - latency on design review will be worse than that on code review
(because written code is inventory, and we should be aiming to land it
and avoid rebase hell)

Any minor development effort - whether it includes a new config
setting, API call, or new behaviour - doesn't run the risk of
significant investment, so I think it's entirely appropriate to catch
that through code review. Catching it through code review will have
less latency that waiting for design review, and code review includes
design review anyway.

Any major development effort - whether it's a large scale refactoring
of unit tests, adding new functionality for users, splitting an
existing thing out, adding a new backend - *anything* that is more
than [significant effort cutoff point] - is something that will
benefit from design review: failing to get design review increases the
chance of bad things:
 - the patch being rejected as a bad idea
 - the approach needing rework [vs code level 'this would be better' requests]
 - reviewers disagreeing about the design and stalling the project

Design review addresses these problems by a) identifying bad ideas up
front, b) vetting the approach via high level walk throughs with
experienced reviewers in the project and c) forming consensus amongst
the -core reviews about the upcoming work.

So - to me - we should focus on the size of the change, not the nature
of the change, when talking about 'does it need a blueprint'.

-Rob

-- 
Robert Collins <rbtcoll...@hp.com>
Distinguished Technologist
HP Converged Cloud

_______________________________________________
OpenStack-dev mailing list
OpenStack-dev@lists.openstack.org
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev

Reply via email to