Why are we doing releases again?

Jordan K. Hubbard jkh at brierdr.com
Mon Apr 2 01:52:51 PDT 2007

OK, I'm sure what I'm about to say will identify me as a total kill- 
joy who also somehow doesn't remember the bad old days of base/  
instability or synchronization issues between base/ and dports/, but  
please just take it as a given that I DO remember those problems and  
still feel compelled, given some of the more negative trade-offs I've  
been seeing, to make the following statement anyway:

I don't think MacPorts should be doing releases.

Why?   Because I think they're premature for the project in general  
(given where it is in terms of resources and technology), I think  
they're largely arbitrary in what they're able (or willing) to  
promise to users and I think that they tend to create more problems  
than they solve as users attempt to follow the releases for base/ but  
still want to effectively follow ToT for dports/, leading to  
something which looks more like FrankenPorts than a genuinely  
coherent and stable branch.

What's worse is the fact that these "releases" are highly misleading  
in the sense that a "release" for any other software product is  
something that enjoys not just a "freeze" period but some sort of  
quality control and testing which ensures that all the respective  
pieces actually hang together and there aren't any really egregious  
problems with the product on the date that it ships.  MacPorts, on  
the other hand, does not have any sort of testing infrastructure to  
guarantee (or hell, even KNOW) that a significant majority of the  
ports are working at that particular time or that base/ and dports/  
synchronization problems have not broken things in various dusty  
corners of the ports collection.   This is why I say that the  
MacPorts project itself is simply not release-ready; it's more like a  
project going through its early Alpha stages where "be careful, you  
might cut yourself!" is about the best advice any user can be given.

Of course, we could attempt to dodge the issue here and claim that  
releases were really only for base/ and dports was the uncharted  
territory, but that would be silly given that if you add up every  
single line (of anything) in base/, you're looking at 156,000 lines  
of Makefiles, C, Tcl and other miscellaneous goop whereas for dports,  
that number is over 713,000 lines.   If anything needs release  
control, it's dports/, and one possibly helpful analogy would be to  
suppose that Mac OS X was released every time xnu looked stable  
enough, never mind everything else that depended on xnu.   "Not  
really our problem", the Mac OS X engineers might say. "People will  
certainly tell us if Mail, Final Cut Pro or various 3rd party are  
completely hosed and we can always fix that in the next release."   
That would sure be a lot easier (and I could spend the bulk of the  
year on Maui instead of worrying about the bulk of the bugs I worry  
about) but it wouldn't be a release.

1.4, despite all the hard work people have put into it, is also not a  
release.  Neither was 1.3, or 1.2, or anything that DarwinPorts/ 
MacPorts has done.  They've been fingers stuck in the wind and a  
highly subjective attempt to decide "what would be a good time"  
without the benefit of any actual end-to-end testing or regression  
analysis.    If that's all they were, I also probably wouldn't say  
anything, figuring "ah, what the heck, let the kids have their fun!",  
but I'm noticing more and more that these pseudo-releases are also a  
drain on productivity and end up spending cycles doing merges and  
trying to figure out how to change the behavior of things in base/ in  
ways that might effects many different ports, even when those  
improvements are worthwhile.

My proposal is that work continue on ToT and this premature notion of  
releases be dropped until MacPorts is truly ready to run through all  
of its ports and figure out what's broken and what's not.   
Speculative development can still be done on branches and need not  
perturb ToT until all the pieces are ready to come together, but ToT  
should simply be the commonly-advancing front of MacPorts and if  
something is broken, a user who tracks it can generally be assured of  
a fix (either in base/ or dports/ as applicable) simply by keeping  
their tree up to date and waiting 24 hours.

As I've also implied in the previous paragraph, I don't think  
releases are a bad idea *eventually*, I just don't think it's  
something MacPorts should be doing until it substantially improves  
its technology to the point where the general health of MacPorts, and  
I do mean all the ports and possibly even "their popular variants"  
are testable.

- Jordan

More information about the macports-dev mailing list