[openstack-dev] [fuel] [puppet] State of collaboration: it just works

Dmitry Borodaenko dborodaenko at mirantis.com
Sat Oct 24 02:14:20 UTC 2015

I haven't been sending Fuel-Puppet "state of collaboration" emails for a
while now. First couple of months, both projects were very cautious and
it took a great deal of number crunching and persuasion to demonstrate
that the efforts to reconcile are going pay off. Now, I already have
seen enough benefits for both projects to confidently say: yes, it did
pay off, and it's worth going forward with this and doing more of the

Lets have a closer look at the facts to see if my impression is correct.

Last 30 days contribution stats, compared to August [0]:

Denis Egorenko (#2):   87.5% -> 76.7%  (disagreements 13.9% -> 4.8%)
Alex Schultz (#4):     80%   -> 93.0%  (disagreements 26.7% -> 9.6%)
Ivan Berezovskiy (#7): 92.3% -> 91.2%  (disagreements 3.8%  -> 7.0%)
Sergey Kolekonov:      95.7% -> 69.2%  (disagreements 13%   -> 15.4%)
Ekaterina Chernova:             100.0% (disagreements 23.5%)
Max Yatsenko:          100%  -> 100.0% (disagreements 17.4% -> 6.7%)
Kirill Zaitsev:                 91.7%  (disagreements 0%)
Matthew Mosesohn:               80.0%  (disagreements 0%)
Alexander Tivelkov:             100.0% (disagreements 0%)

[0] http://lists.openstack.org/pipermail/openstack-dev/2015-August/072313.html

First thing that sticks out is that the + percentage seems to have gone
up for most reviewers (except Denis and Sergey: nice job both of you!).
Considering that the same is true across the board (only 3 of top 10
reviewers are below 90%), while the disagreements percentage has gone
down noticeably, I choose to interpret this as a sign of an improvement
in quality of initial submissions, rather than reduced scrutiny.

Between 9 of 20 top reviewers and 30.4% of reviews, I think it's fair to
pronounce that Puppet OpenStack benefits from a high-quality code review
effort contributed by Fuel developers. A fact obviously recognized by
the project as Denis, our best upstream reviewer, was nominated and
approved as a core in PuppetOpenstack. Thanks Emilien!

Still, it would be nice if the load was spread out more evenly among
more than a handful of top reviewers, with more top reviewers
contributing equally to both fuel-library and upstream (thanks Alex!).

Weekly IRC meeting participation has also continued to improve:

Oct-6: 10 of 18 participants, 104 of 276 lines
Oct-13: 9 of 23 participants, 80 of 307 lines
Oct-20: 9 of 18 participants, 62 of 171 lines

Commit stats remain good, although not quite as good as I expected:

Over the first two weeks of October, we've got 14 commits merged (15.2%
of total commits merged), which is slightly down from 19 commits (18.4%)
in August. At the same time, patch sets per commit ratio has crept up
from 5.6 to 7.14 (while average for Puppet OpenStack went down from 6.5
to 4.38), and Fuel's share of patch sets has gone up from 15.9% to
24.8%). I think we can and should do better here, I've seen Puppet team
merge the first patch set immediately when it's simple enough [1], and
there haven't been any Fuel related commits stuck without review for a
few weeks now.

[1] https://review.openstack.org/236169

On the other hand, the progress with eliminating duplication of Puppet
OpenStack code in fuel-library is much better than I expected: we don't
have any forks of Puppet OpenStack code left in fuel-library.

Of 60 modules in fuel-library, 32 are now managed by librarian and
pulled into fuel-library package at build time [2].

[3] https://github.com/openstack/fuel-library/blob/master/deployment/update_modules.sh

This includes 9 modules from Puppet OpenStack project:
- ceilometer
- cinder
- glance
- heat
- horizon
- ironic
- keystone
- neutron
- nova

Of the modules remaining inside fuel-library, there's two that overlap
with Puppet OpenStack even though they are not forks: ceph and murano.
We plan to replace the former with the upstream puppet-ceph module as
part of upgrading the supported Ceph release from Firefly to Hammer in
Fuel 8.0. For the latter, we have put the Fuel module on life support
and started a clean-room reimplementation in upstream [4] in September,
and we will switch to that as soon as it reaches feature parity with the
Fuel version (which I expect to be only a few commits away).

[4] https://github.com/openstack/puppet-murano/commit/518800e37f4f8805ce489ca58169299accc346e1

There's going to be more work to migrate the few remaining non-OpenStack
modules to librarian (haproxy, mysql, rabbitmq etc.), but at least for
the OpenStack modules we're in a good shape. Once again, many thanks to
Alex Schultz for starting and spearheading this work!

Comparing the upstream contribution numbers with commit, patch set, and
review stats in fuel-library over the same time period (600 patch sets,
626 reviews) tells me that upstream Puppet OpenStack contribution now
constitutes 15-25% of the Puppet related development effort in Fuel,
while constituting 25-30% of total development effort that goes into
Puppet OpenStack. In other words, roughly 15-20% of combined Fuel
Library and Puppet OpenStack effort is now spent on something that
equally benefits both projects. A non-trivial overlap with still more
room for improvement: based on the ratio between OpenStack and
non-OpenStack modules in fuel-library, a full alignment would produce an
overlap of roughly 30%.

To sum up, I think we've reached the point where the value contributed
to the Puppet OpenStack project outweighs the burden of onboarding and
code review initially carried by Puppet OpenStack core reviewers, and
the value Fuel project gains from directly consuming upstream modules
outweighs the effort spent on collaborating with Puppet OpenStack.

Dmitry Borodaenko

More information about the OpenStack-dev mailing list