[dev] Branches (again), Horde 4.1/5, recent IMAP changes
Michael M Slusarz
slusarz at horde.org
Mon Oct 31 20:01:54 UTC 2011
Quoting Jan Schneider <jan at horde.org>:
> Even though there are still some complaints, I think the switch to
> PEAR based releases was a great overall success. With a whopping 780
> (seven hundred and eighty!) package releases since we started the
> new PEAR server, we brought the paradigm of "release early, release
> often" to new heights, at least for Horde's standards. That, and the
> implicit dependency management makes me never want to go back.
Agreed.
> But that's not the only thing we changed for Horde 4, we also
> intended to set new rules for release management
> (http://wiki.horde.org/Doc/Dev/ReleaseCycle) and branch management
> (http://wiki.horde.org/Doc/Dev/Branches). This is the area where we
> still need to improve.
>
> We are currently in our 2nd release cycle since we released Horde 4,
> and everybody noticed by now that there is no Horde 4.1 in the
> works, let alone Horde 5. The reason is that we simply didn't have
> any new features or larger changes in our stable code base that
> hadn't been released yet anyway. That's why we focused on releasing
> the "missing bits" during this release cycle, i.e. the until now
> unreleased applications that had to be ported to Horde 4.
>
> The reason for the lack of new features is that we kept adding new
> stuff to the master branch, i.e. to the stable branch, and still
> shuffled things around with new stable releases. I let this happen,
> despite this being against the release/branch rules, because I felt
> like there still were some teething troubles with our young Horde 4
> release (and Michael even explicitly expressed that he considered
> our stable release too early at one point) We also had some
> important things missing originally, that shouldn't had to wait
> another half a year. But at the same time I was intent to get an
> agreement to more strictly enforce these rules once the 2nd release
> cycle is over.
> Because the flip-side of the coin is that (even though some of those
> changes in stable releases were necessary to fix bugs), the "stable"
> releases were much less stable than they should have been. Too often
> some of those larger changes caused intermediate regressions.
> Fortunately this didn't have such a high impact, thanks to our new
> release model (see above). I still think we should stop this now
> though. People should not be prepared to experience regressions due
> to code restructuring (like the mailbox encoding in IMP), notable UI
> changes (like in dynamic Kronolith) or new features suddenly popping
> up (like in - everywhere), while they update within a minor version.
> Such changes need more testing through RCs (yeah, I know, they won't
> be tested properly anyway, but that's a different story), and with
> piling them up for the next minor version, we actually *have* some
> minor version to release.
I don't necessarily disagree with this. Two things to add:
1) As the person in charge of the IMP related stuff, the major changes
are/were necessary because they were critical bugs. Fixing a critical
bug that results in spinoff bugs for the new code is, unfortunately,
unavoidable. But I disagree with the statement that it somehow made
the code "less" stable. A critical bug is a critical bug. Both major
issues that cropped up with IMP (issues with suhosin; not being able
to access certain mailboxes due to UTF8->UTF7IMAP conversions; POP3
access being completely broken with certain POP3 servers) needed to be
immediately fixed. As an end user, the inability to access mailboxes
is a dealbreaker.
2) From my perspective, a lot of the new features that have been added
is a direct result of the limited release schedule for the .0.0
releases. There was a bunch of stuff that needed to be added, or did
not become apparent until feedback/bug fixes were made, that did not
seem appropriate to wait 6 months - year to add.
I have been holding back changes related to UTF-8 mail sending, a
drafts refactor, and a blocks CSS refactor specifically for the next
version. These are local - I find the 'develop' branch very difficult
and unintuitive to use, so it is not helpful for me to push there, and
pushing topic branches is pretty pointless since nobody really looks
at them.
> Thus the recent Horde_Imap_Client_Mailbox changes make me very
> strong headaches. This is exactly the kind of changes that has
> potential of causing more trouble than solving problems (for a bug
> fix release, that is). It introduces new dependencies, touches large
> parts of important code in IMP, and even converts existing user
> preferences.
I disagree. I have been testing this code for about 3 weeks now -
this is not something I threw together at the last minute. And it
fixes an extremely critical issue - it prevents ANY access to certain
mailboxes. That is completely unacceptable.
These changes do NOT change backward compatibility at all with the
Imap_Client code. I specifically made sure this was the case, even
though it needlessly complicates the code.
Not to bring this up again, but I will again raise my frustrations
with working on IMP, especially as it relates to critical code
changes. *NO* other application relies so heavily on Horde-level code
- e.g. MIME, IMAP, Text_Filtering code - and that makes it extremely
difficult to fix certain items. It takes me many times longer to fix
an issue, simply because I have to go through the mental gymnastics of
having to figure out how not to break existing APIs. IMP should not
be less stable, or less able to be bugfixed, simply because it has
more of a reliance on global Horde libraries but unfortunately, that
is the case.
> This is unacceptable for a simple bug fix release IMO. I *strongly*
> suggest to revert this on master, and re-apply it to the develop
> branch, so that it gets more and longer testing and won't be
> released before a IMP 5.1 RC.
Please look at the commit again. There is almost ZERO code changed
within IMP. The changed code essentially consists of removing all
UTF8 -> UTF7-IMAP string conversions and converting all mailbox
parameters passed to Horde_Imap_Client to the object representations.
And all of these changes are made in a single method within a single
library (IMP_Imap), which is why I designed it this way. Neither is
likely to add bugs that are more critical than the bug being solved.
The only major difference in IMP is the preferences/config options
changing. But I felt that it was a necessary evil for several reasons:
1) The fixed_folders option is not heavily used (there was a fairly
major issue related to this I recently fixed which most likely would
have resulted in broken behavior, and I had not heard anything about
it). To require the tiny percentage of people using this config
option - and not only using this config option, but also having at
least one of the mailboxes encoded in UTF7-IMAP - was not enough to
prevent a critical fix from happening.
2) The prefs options are a bit of a closer call, but my guess is that
most people are using the defaults and, even if not using the
defaults, the vast majority of local entries do not use UTF7-IMAP
mailboxes. Both of these changes are clearly indicated in UPGRADING.
However, we can't wait several more months to apply these changes.
The impetus for me fixing this critical bug was because I was bit by
it several weeks ago. Created one of the mailboxes that cannot be
accessed given the current code - as an enduser, this would
potentially be a dealbreaker.
Obviously, this decision can be disagreed with and I respect that.
But as I mentioned back during the first H4 release discussion, I am
against slavishly following release management guidelines where
critical bug fixes are necessary. If 5.1 can be released within 1-2
weeks, I will gladly pull this out. But that doesn't seem to be a
realistic timeframe.
michael
___________________________________
Michael Slusarz [slusarz at horde.org]
More information about the dev
mailing list