* On 09 Apr 2013, Petr Pisar wrote: > distribitions have a testing phase where other people get involved. And all of > this work would be saved if mutt upstream released new versions more > frequently.
I think the fundamental parameter is not really time frequency but distance: how much development (e.g. measured in changesets) has occurred since the previous release. But that said, it's true that in recent years we've extended the period between releases substantially, probably to our detriment. Data is below. The catch is that with current mutt, to cut a "release" an quantity of work needs to be qualified in some way: stable, or beta-worthy, or at least internally consistent. Otherwise a release is no different from any other committed changeset. (Maybe that's ideal. It's how Mercurial does it, for example: every commit to the stable branch is pre-judged as release-worthy). On Mutt, a "release" is still meaningful because we still develop and release on HEAD, which means that someone needs to focus on vetting releases. And that's the rub: again we're down to limited time. A version number means that someone had a certain minimum amount of free time all at once. So: should we move to a dual-branch model for development, and do continuous release qualification such that a "stable" branch is always ready? That allows version numbers to become no more than semantic markers, and we can tag release numbers as often as we like. I would vote +1 for that. Jointly with a "crew" group, it could help us collect unvetted patches and do signoffs continuously instead of lurchingly, which could enable us to cut releases at shorter distances and help maintainers. Release delta data: #!/bin/bash lastrev=0 hg log -r 'tagged() or tip' --template='{rev} {tags}\n' | egrep 'rel|tip' | while read rev tag; do delta=$(($rev - $lastrev)) echo "$delta changesets between $lasttag and $tag" lastrev=$rev lasttag=$tag done | tail -n +2 24 changesets between mutt-0-92-12i-rel and mutt-0-92-13-rel 13 changesets between mutt-0-92-13-rel and mutt-0-92-14i-rel 10 changesets between mutt-0-92-14i-rel and mutt-0-94-5i-rel 11 changesets between mutt-0-94-5i-rel and mutt-0-93i-rel 24 changesets between mutt-0-93i-rel and mutt-0-93-1i-rel 19 changesets between mutt-0-93-1i-rel and mutt-0-93-2i-prerel 4 changesets between mutt-0-93-2i-prerel and mutt-0-93-2i-rel 6 changesets between mutt-0-93-2i-rel and mutt-0-94i-rel 6 changesets between mutt-0-94i-rel and mutt-0-94-6i-rel 44 changesets between mutt-0-94-6i-rel and mutt-0-94-1i-rel 2 changesets between mutt-0-94-1i-rel and mutt-0-94-7i-rel 47 changesets between mutt-0-94-7i-rel and mutt-0-94-2i-rel 7 changesets between mutt-0-94-2i-rel and mutt-0-94-8i-rel 58 changesets between mutt-0-94-8i-rel and mutt-0-94-9i-rel 12 changesets between mutt-0-94-9i-rel and mutt-0-94-3i-rel 47 changesets between mutt-0-94-3i-rel and mutt-0-94-10i-rel 20 changesets between mutt-0-94-10i-rel and mutt-0-94-4i-rel 73 changesets between mutt-0-94-4i-rel and mutt-0-94-13-rel 20 changesets between mutt-0-94-13-rel and mutt-0-94-14-rel 38 changesets between mutt-0-94-14-rel and mutt-0-94-15-rel 31 changesets between mutt-0-94-15-rel and mutt-0-94-16i-rel 31 changesets between mutt-0-94-16i-rel and mutt-0-94-17i-rel 19 changesets between mutt-0-94-17i-rel and mutt-0-94-18-rel 30 changesets between mutt-0-94-18-rel and mutt-0-95-rel 158 changesets between mutt-0-95-rel and mutt-0-95-2-rel 12 changesets between mutt-0-95-2-rel and mutt-0-95-3-rel 34 changesets between mutt-0-95-3-rel and mutt-0-95-4-rel 44 changesets between mutt-0-95-4-rel and mutt-0-96-rel 7 changesets between mutt-0-96-rel and mutt-0-95-6-rel 52 changesets between mutt-0-95-6-rel and mutt-0-96-1-rel 40 changesets between mutt-0-96-1-rel and mutt-0-95-7-rel 31 changesets between mutt-0-95-7-rel and mutt-0-96-2-slightly-post-release 2 changesets between mutt-0-96-2-slightly-post-release and mutt-1-0-pre1-rel 21 changesets between mutt-1-0-pre1-rel and mutt-1-0-pre2-rel 26 changesets between mutt-1-0-pre2-rel and mutt-0-96-3-rel 75 changesets between mutt-0-96-3-rel and mutt-1-0-pre4-rel 28 changesets between mutt-1-0-pre4-rel and mutt-1-0-rel 38 changesets between mutt-1-0-rel and mutt-1-0-1-rel 8 changesets between mutt-1-0-1-rel and mutt-0-96-4-rel 29 changesets between mutt-0-96-4-rel and mutt-0-96-5-rel 17 changesets between mutt-0-96-5-rel and mutt-0-96-6-rel 34 changesets between mutt-0-96-6-rel and mutt-0-96-7-rel 26 changesets between mutt-0-96-7-rel and mutt-0-96-8-rel 14 changesets between mutt-0-96-8-rel and mutt-1-1-rel 21 changesets between mutt-1-1-rel and mutt-1-1-1-rel 3 changesets between mutt-1-1-1-rel and mutt-1-1-1-1-rel 2 changesets between mutt-1-1-1-1-rel and mutt-1-1-1-2-rel 72 changesets between mutt-1-1-1-2-rel and mutt-1-1-2-rel 79 changesets between mutt-1-1-2-rel and mutt-1-1-3-rel 27 changesets between mutt-1-1-3-rel and mutt-1-1-4-rel 26 changesets between mutt-1-1-4-rel and mutt-1-1-5-rel 17 changesets between mutt-1-1-5-rel and mutt-1-1-6-rel 4 changesets between mutt-1-1-6-rel and mutt-1-1-7-rel 23 changesets between mutt-1-1-7-rel and mutt-1-1-8-rel 19 changesets between mutt-1-1-8-rel and mutt-1-1-9-rel 34 changesets between mutt-1-1-9-rel and mutt-1-1-10-rel 11 changesets between mutt-1-1-10-rel and mutt-1-1-11-rel 24 changesets between mutt-1-1-11-rel and mutt-1-1-12-rel 16 changesets between mutt-1-1-12-rel and mutt-1-1-13-rel 2 changesets between mutt-1-1-13-rel and mutt-1-1-14-rel 4 changesets between mutt-1-1-14-rel and mutt-1-2-rel 11 changesets between mutt-1-2-rel and mutt-1-3-rel 36 changesets between mutt-1-3-rel and mutt-1-2-1-rel 5 changesets between mutt-1-2-1-rel and mutt-1-2-2-rel 24 changesets between mutt-1-2-2-rel and mutt-1-2-3-rel 5 changesets between mutt-1-2-3-rel and mutt-1-2-4-rel 21 changesets between mutt-1-2-4-rel and mutt-1-2-5-rel 22 changesets between mutt-1-2-5-rel and mutt-1-2-5-1-rel 2 changesets between mutt-1-2-5-1-rel and mutt-1-3-1-rel 17 changesets between mutt-1-3-1-rel and mutt-1-3-2-rel 33 changesets between mutt-1-3-2-rel and mutt-1-3-3-rel 31 changesets between mutt-1-3-3-rel and mutt-1-3-4-rel 49 changesets between mutt-1-3-4-rel and mutt-1-3-5-rel 62 changesets between mutt-1-3-5-rel and mutt-1-3-6-rel 11 changesets between mutt-1-3-6-rel and mutt-1-3-7-rel 48 changesets between mutt-1-3-7-rel and mutt-1-3-8-rel 34 changesets between mutt-1-3-8-rel and mutt-1-3-9-rel 27 changesets between mutt-1-3-9-rel and mutt-1-3-10-rel 19 changesets between mutt-1-3-10-rel and mutt-1-3-11-rel 25 changesets between mutt-1-3-11-rel and mutt-1-3-12-rel 26 changesets between mutt-1-3-12-rel and mutt-1-3-13-rel 30 changesets between mutt-1-3-13-rel and mutt-1-3-14-rel 27 changesets between mutt-1-3-14-rel and mutt-1-3-15-rel 37 changesets between mutt-1-3-15-rel and mutt-1-3-16-rel 21 changesets between mutt-1-3-16-rel and mutt-1-3-17-rel 38 changesets between mutt-1-3-17-rel and mutt-1-3-18-rel 80 changesets between mutt-1-3-18-rel and mutt-1-3-19-rel 51 changesets between mutt-1-3-19-rel and mutt-1-3-20-rel 33 changesets between mutt-1-3-20-rel and mutt-1-3-21-rel 19 changesets between mutt-1-3-21-rel and mutt-1-3-22-rel 2 changesets between mutt-1-3-22-rel and mutt-1-3-22-1-rel 34 changesets between mutt-1-3-22-1-rel and mutt-1-3-23-rel 54 changesets between mutt-1-3-23-rel and mutt-1-3-23-1-rel 29 changesets between mutt-1-3-23-1-rel and mutt-1-3-23-2-rel 16 changesets between mutt-1-3-23-2-rel and mutt-1-3-24-rel 28 changesets between mutt-1-3-24-rel and mutt-1-3-25-rel 32 changesets between mutt-1-3-25-rel and mutt-1-3-26-rel 5 changesets between mutt-1-3-26-rel and mutt-1-3-27-rel 59 changesets between mutt-1-3-27-rel and mutt-1-3-28-rel 68 changesets between mutt-1-3-28-rel and mutt-1-3-99-rel 35 changesets between mutt-1-3-99-rel and mutt-1-4-rel 51 changesets between mutt-1-4-rel and mutt-1-4-1-rel 5 changesets between mutt-1-4-1-rel and mutt-1-4-2-rel 4 changesets between mutt-1-4-2-rel and mutt-1-4-2-1-rel 9 changesets between mutt-1-4-2-1-rel and mutt-1-4-2-2-rel 40 changesets between mutt-1-4-2-2-rel and mutt-1-5-1-rel 98 changesets between mutt-1-5-1-rel and mutt-1-5-2-rel 72 changesets between mutt-1-5-2-rel and mutt-1-5-3-rel 149 changesets between mutt-1-5-3-rel and mutt-1-5-4-rel 160 changesets between mutt-1-5-4-rel and mutt-1-5-5-rel 4 changesets between mutt-1-5-5-rel and mutt-1-5-5-1-rel 89 changesets between mutt-1-5-5-1-rel and mutt-1-5-6-rel 253 changesets between mutt-1-5-6-rel and mutt-1-5-7-rel 63 changesets between mutt-1-5-7-rel and mutt-1-5-8-rel 46 changesets between mutt-1-5-8-rel and mutt-1-5-9-rel 231 changesets between mutt-1-5-9-rel and mutt-1-5-10-rel 118 changesets between mutt-1-5-10-rel and mutt-1-5-11-rel 409 changesets between mutt-1-5-11-rel and mutt-1-5-12-rel 88 changesets between mutt-1-5-12-rel and mutt-1-5-13-rel 104 changesets between mutt-1-5-13-rel and mutt-1-5-14-rel 170 changesets between mutt-1-5-14-rel and mutt-1-5-15-rel 75 changesets between mutt-1-5-15-rel and mutt-1-4-2-3-rel 10 changesets between mutt-1-4-2-3-rel and mutt-1-5-16-rel 92 changesets between mutt-1-5-16-rel and mutt-1-5-17-rel 120 changesets between mutt-1-5-17-rel and mutt-1-5-18-rel 274 changesets between mutt-1-5-18-rel and mutt-1-5-19-rel 234 changesets between mutt-1-5-19-rel and mutt-1-5-20-rel 260 changesets between mutt-1-5-20-rel and mutt-1-5-21-rel 152 changesets between mutt-1-5-21-rel and tip -- David Champion • d...@bikeshed.us