On 11 February 2016 at 19:35, Christoffer Holmstedt <christoffer.holmstedt@...400...> wrote:
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-freq...
A really interesting article, Christoffer!
I am on your side for a highly automated release process. Though I've not heard so far of any desktop software doing daily stable releases. Also for Inkscape I wouldn't go for a daily or weekly release of main versions, as I assume the network infrastructure wouldn't allow a huge amount of daily downloads. Having said that - as I mentioned earlier - I do agree that there should be nightly releases for testing purposes and regular alpha and beta releases accompanied by some release notes for people wanting to try out the latest features.
Sebastian