Release process (was Re: DarwinPorts 1.3.1)

Paul Guyot <[email protected]>
Newsgroups gmane.os.opendarwin.darwinports
Message-ID <[email protected]>
Le 2 août 06 à 11:48, Landon Fuller a écrit :

> If the release process isn't ferreting out bugs, or is not agile  
> enough to incorporate fixes quickly enough, do you have a  
> suggestion for improving the situation?
> Telling users to switch to CVS for the latest changes negates the  
> purpose of doing releases at all, which was to shield users from  
> unstable code in HEAD.

The recent fiascos of releases 1.3 and 1.3.1 show indeed that there  
is something wrong with the release process.
But it is not (only) a matter of the timing of release. It's mostly a  
matter of testing.

And this problem dates back to the introduction of selfupdate.

In an ideal selfupdate world, you have two classes of users:
- selfupdate users, who just get new versions when a new release  
comes out
- CVS users, who are ideally limited to the developers since all  
users should use selfupdate.

This is flawed because there isn't enough testing of base/. The very  
nature of Tcl requires a lot of testing (compared to compiled  
language, I'm not even talking about ML languages here) and the very  
nature of DP makes testing even more important. And in an ideal  
selfupdate world, testing of base/ is made by developers.

Developers:
- are savvy enough to test base/ and solve problems themselves when  
they encounter a problem which is strictly related to their  
installation. The problem should be avoided in the first place  
because users don't always realize the problem comes from their  
installation.
- use more recent OS versions and more recent hardware than users.  
darwintrace.c has been broken on 10.3 for a couple of week, no one  
noticed until jmpp tried to build the dmg for the 1.3 release.
- believe in DP principles. For example, they are believers that we  
should not have anything in /usr/local. The recent 1.3.1 fiasco shows  
that it's not the case from our user base. Another example: instead  
of using an installer for some software, such as i-packages for TeX,  
developers, unlike users, will develop the missing ports to have  
everything in /opt/local.
- might do things that work on their box but not on a selfupdate  
install. For example, the ${worksrcpath} is much larger with  
selfupdate/rsync and hdiutil doesn't like it. I've been bitten by  
this one for XeTeX because I committed a port that worked perfectly  
well on my box but failed on every selfupdate installs.
- want to take advantage of base/ new features in HEAD without always  
realizing that they're not available in the release version. There is  
no way for them to commit ports that use HEAD features and avoid  
failures on selfupdate-based installs.

The last point is pretty much important. How can we test a new  
feature that requires a change in a Portfile making it incompatible  
with the selfupdate version?

In a nutshell, developers are really bad testers because they're not  
representative of our user base, the one who actually faces problem.  
Consequently, when the release time comes, the code isn't ready and  
polished enough. And we encounter fiascos like the 1.3 series.

You're asking for solutions, as if there was nothing better than  
selfupdate.
I strongly disagree. There is an alternative. Actually, besides Paul  
Beard's suggestion, I can see three easy solutions that scale well  
with the size of the user base and the developer base.

Solution #1 is a release candidate or beta version.
This is the less appealing one, but what James and Juan came up with.  
I think if it's just a CVS branch or tag, it won't just work because  
no one who actually doesn't use HEAD will test it. I don't rule it  
out if it's a dmg that is advertised exactly everywhere the full  
release is advertised. Of course, the selfupdate feature of this one  
should be disabled to avoid users to revert to the previous release  
when they install the release candidate.

Solution #2 is encouraging users who hook up here to use CVS. This is  
the best short-term solution. This enlarges the testing user base and  
specifically targets people who will report any problem here. The  
bugs can then be quickly fixed.

Solution #3 is reverting to pure CVS. We should never have migrated  
to rsync+selfupdate in the first place. Non-savvy users don't update  
their installation when something changes in base/, so they're  
protected from unstable code in HEAD (if any, please let me remind  
you that heavy-development work happens on branches), and savvy do.  
The only drawback is the load and, considering the end of opendarwin,  
I think we should not revert to CVS now unless we find a host ready  
to cope with the traffic/box load.

Paul
-- 
Ministre ultraplénipotentiaire en disponibilité.
Mobile. Sans baignoire fixe.
http://www.kallisys.com/
http://www-poleia.lip6.fr/~guyot/
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.