2016-02-11 9:15 GMT+01:00 Bryce Harrington <bryce@...961...>:
On Mon, Feb 08, 2016 at 10:31:05AM +0100, Sebastian Zartner wrote:
> Dear Martin, dear Bryce,
>
> thank you very much for replying and giving some more details on this.
>
> On 7 February 2016 at 02:54, Bryce Harrington <bryce@...961...> wrote:
> >
> > On Thu, Feb 04, 2016 at 08:42:38AM -0500, Martin Owens wrote:
> > > On Thu, 2016-02-04 at 10:23 +0100, Sebastian Zartner wrote:
> > > > While I am currently not involved in the Inkscape development at all,
> > > > I have some experience with release processes and may help to define a
> > > > proper development and release cycle.
> > >
> > > Dear Sebastian,
> > >
> > > There is a process for releases and the main component is a release
> > > sponsor or main coordinator. I believe the lack of sponsor is the main
> > > reason for not getting a 0.92 version released any sooner. Although I
> > > would love to see one on the sooner side.
> >
> > No, the duty here is on me.  It's not a problem of lack of a belly
> > button for the task, but more of a time overcommitment issue.
> >
> > For 0.92, the specific thing blocking the release from proceeding is
> > needing to get the cmake build system fully squared away.  To that end,
> > I recently posted a list of remaining tasks where I need help:
> >
> >   http://wiki.inkscape.org/wiki/index.php/CMake_Tasks
> >
> > Some of those may already be done, but need to be doublechecked.  Once
> > all the 0.92 priorities are crossed off, then I think we can go ahead
> > and proceed with the release.
> >
> > Besides cmake, the one other thing that must be done is a review of the
> > current release stability.  But so long as we don't have any development
> > work in intermediate stages, and no absolutely killer bugs, I think we
> > could cut a release and plan on a point release.  We did a pretty
> > through scrub last time we were all focusing on getting 0.92 done, and
> > assuming things haven't majorly deteriorated since then, I think this
> > would be fine.
> >
> > > Bryce, do you have links we can share with Sebastian showing the
> > > organisational side for 0.91? Maybe they can help make the process
> > > better for the next release?
> >
> > Yeah I've been keeping the release coordination links on wiki pretty up
> > to date with the specifics of the process.  However, with the build
> > system and now potentially the vcs system likely to change soon, a lot
> > is in flux.
> >
> > The #1 best thing that can be done right now to improve the release
> > process is to strengthen the build system.  A lot of manual tasks in the
> > release will go away or be more easily automated once we can get unified
> > onto cmake (indeed this is my primary motivation for hammering on the
> > cmake transition).
> >
> > Automating the procedure of actually uploading the distribution package
> > to the website and making the associated web collateral get updated
> > would be a big improvement too, but honestly that work is pretty small
> > scope in the grand scheme of things.  But boiling the release process
> > down to a single script or small number of scripts that can be run, is a
> > long term goal.  With our current release cadence the benefit will be
> > minimal, but if we move to a faster cadence it could help a lot.  I seem
> > to recall once we decide to cut a release, it is on the order of a
> > couple evenings to get it out.
> >
> > Frankly the actual mechanics of doing a release, while more cumbersome
> > than they should be, aren't where we usually get hung up and delayed.
> > What causes the delays are unfinished work and bugs, and needing to
> > verify that we are indeed stable enough to release.  And that's an area
> > I would definitely love to see some discussion around how we could
> > improve.
>
> Regarding unfinished work and bugs I agree with Olof that this needs
> some changes in the workflow. What I would do different in regard of
> Olof's proposal is to create a branch for every (bigger) feature
> instead of having one dev branch.  Also, a release may not be done at a
> fixed date, you may also do it depending on the number of new
> features/changes. If you remember, I already mentioned that earlier[1]
> (and you already agreed to this[2]).
> This would also play nicely with the workflow on GitHub and its pull
> requests if your discussion about switching to git concludes to use it
> as platform.

I hear you.  I am a strong proponent of use of branches, particularly
for features, but really any work that isn't trivial.  In theory, what
you're describing should be a very good system.

Unfortunately in practice there are other aspects that make it not so
easy.

Most notably, volunteer developers like to see their work used by
others (both for technical reasons - i.e. testing, as well as for
earning kudos from users).  But if you are diligent and disciplined
about keeping your work off on a branch, it's unlikely you'll be able to
get either of these.  Someone who is not branch-disciplined and instead
pushes directly to trunk, gets both rapid feedback from testing and
more instant recognition of their work.

So, essentially, the incentive structure kind of works against feature
branches.

If we were a company we could simply mandate workflows, but in a
volunteer project like ours, we risk alienating developers or at least
reducing the incentives they get for keeping up their efforts.

Not to say that feature branches are a bad idea - like I said up front,
I'm a strong advocate for that and use it myself.  I think a lot of
developers also do work on branches on their own initiative.  But
implementing it project-wide has some trickiness to it.

Last release I did experiment with having people work on their feature
branches, and then land them into an 'experimental' branch parallel to
the stable release tree, and then we merged that work in post-release.
I don't think I could call it a resounding success; I think people
mostly put up with it, or maybe even just took a development vacation.
With there being a split between stable and experimental, a lot of
people simply ran one or the other depending on their interest, thus
splitting our testing efforts.  Bugfixing activity was not noticeably
better, and I don't think I could honestly say it improved our release
velocity.  It did increase the workload and complexity for our bug team.
In terms of stability, I don't think I'd necessarily say the
experimental branch ended up being that much more buggy than the stable
branch; folks were pretty good about cleaning up problems as they
cropped up.

It is possible that things could be different with git.  Merging in git
seems like it ends up working better than with bzr (maybe it's just
me).  git rebase and format-patch and other such tools are well suited
for doing more highly distributed feature coding work.

Bryce


This is an interesting discussion in times of Continuous Integration, Continuous Delivery, DevOps and all other fancy names for it. For me it all boils down to a few things; merge to trunk/master often (at least once every hour) and always keep it buildable and runnable without critical crashes for the end user. My feeling is that more and more companies/projects move away from time-slotted releases and try to release several times every day. Just last week the following showed up on hackernews [1] as an example. Instead of an Inkscape release every 6 months I would rather see daily/weekly releases, mostly automated from Travis CI, Jenkins or similar system. Of course, a bump in the major version number would require manual intervention for such a release, but that shouldn't require more than a push of a button.

[1] http://engineering.skybettingandgaming.com/2016/02/02/how-we-release-so-frequently/

--
Christoffer Holmstedt