I apologize I didn’t reply to the earlier thread about “what should go
in each release.”
I respectfully disagree with the idea that 1.0.x is “just bug-fixes.”
I think we have to be careful, but pragmatic. Introducing new plugins
(particularly new extensions) is not necessarily a bad thing. I think
it should be done on a case-by-case basis.
I disagree with this approach, and do not see many other projects using
it. New extensions introduce new strings, and break any notion of a string
freeze to improve translation coverage. They also risk introducing new
compilation bugs, portability issues and UI changes that affect any
documentation for a given release. This creates headaches for packages,
and means that our patch releases are not just bug fix and so need to be
treated more carefully.
First off, just attempting to fix translations creates a large number
of new strings. And I just performed the obvious thing – removing
source files like pocketdialog and wiitrackextension which were being
picked up for string translation, but just aren’t used.
I am not sure what you mean here. If no new strings are introduced in a
stable branch, then the translation coverage will improve over time as
translators get time to work on it. There are numerous examples of
projects that support i18n and freeze their strings.
Secondly, we need to be pragmatic about timing. I think we made
releases too frequently in the beta series (i.e., monthly). So IMHO,
in the absence of a truly horrific bug (e.g., data loss, nasty crash,
security), we’ll probably make 1.0.x releases, every ~2 months?
In this case I think a 1.0.1 is called for, there are some compilation
bugs caused by the CMake file I mistakenly removed, several bugs that
caused crashes. In general I would be happy with a bug fix release every
2-3 months though.
So where does that leave 1.1.x and 1.2? Maybe 6-8 months from now?
We need a mechanism to incorporate new, stable plugins. As I said,
let’s discuss these on a case-by-case basis. They don’t break the
library API or ABI, but they can add nice feature for users.
Why not do this with parallel beta releases? I.e. we make a 1.1.y release
every 3-4 months (or whatever time period people are happiest with), it is
a beta version for users that want to try new features. More cautious
users can stick to the 1.0 release, or wait for 1.2. This seems like a
nice middle ground to me, and people seemed to like the idea when we
discussed this last (or were busy and did not respond).
Let’s take a few obvious cases:
- Make the update checker default – I noticed the Mac 1.0 builds
default to off. That’s fixed now for 1.0.1 and nightly builds
Should probably be default on Windows and Mac, likely not on Linux. I
disabled this by default due to changes made in Qt 4.5.3 that were causing
crashes. I fixed those before the release, but neglected to change the
default.
- What about the z-matrix editor? This is technically in 1.0, but not
enabled (or very functional).
- What about the Dalton generator? These sorts of plugins seem like
obvious additions – they add nice functionality for users of Dalton,
and don’t break things for others.
Again, what is wrong with an unstable release series or nightly builds
that track head development. Move bug fixes to the branches as and when
they make sense. This should allow the best of both worlds, and if we find
no one uses the stable branch because it is boring then stop supporting
that.
The introduction of new features risks the introduction of new bugs. Every
new feature can cause bugs, and so I guess it depends on how stable a
stable branch should be. There is lots of precedent for the approach I
suggested (KDE, Qt, Linux Kernel, Gwyddion, Gnome), but if our community
is not interested in that level of stability then I will stop pushing for
it.
So that leaves the Cartesian editor. Personally, I’d like to see some
improvements – can’t it still be a table embedded in a QDialog? I
like being able to sort by z-axis. I can imagine all the copy/paste
buttons would still work.
But even if the Cartesian editor is less of a “clear win,” I think
it’s something we should contemplate for 1.0.x. Otherwise, it might
not be incorporated until … March?
Why not make a 1.1.0 release in December to get wider testing on some new
features we are playing with? Label it beta, don’t worry about
translation. Give packagers the option to package stable Avogadro, or a
more experimental development branch.
I know from a packaging point of view I always hate upstreams that add new
features in patch releases, as they are not really patch releases. That
being said, if we want to do that then we should be explicit about what
our policy is and stick to it. Make it clear to translators, users and
packagers that new features may be added in patch releases.
These are just my honest opinions. I thought we had already agreed up on
the release methodology I proposed, it is the one I would prefer we adopt.
Do others have opinions on this?
Marcus