Re: Upgrading without central packaging

[prev] [thread] [next] [lurker] [Date index for 2005/04/23]

From: Michael G Schwern
Subject: Re: Upgrading without central packaging
Date: 17:15 on 23 Apr 2005
On Sat, Apr 23, 2005 at 09:50:41AM -0500, Peter da Silva wrote:
> Dependencies are bad. Tools to resolve dependencies are only good when the
> dependencies are necessary. Tools to MANAGE dependencies and let you see
> what they are so you can avoid them when you don't need them are rare. Hell,
> it's often hard to even SEE what the dependencies are, particularly in open
> source software.

Dependencies might be bad but ya know what's worse?  Everybody reinventing
the wheel 20 times over and each getting it wrong in subtly different ways
AND hard coding their bug into the software.  Oh look, ANOTHER half assed
regex-based HTML parser that breaks when you throw anything complex at it.
Here's one that tries to send mail with /usr/lib/sendmail.  Oh look, this
one gets the leap year calculation wrong.  This one can only one handle one
date format.  Oh goody, ANOTHER templating language to learn!  I want to
patch the tests on this one but its using some crappy home-rolled testing
library.  Great, ANOTHER POD parser that gets tripped up by complex POD.

I've seen it all.  I hate it.

Modules and dependencies suck less.  If nothing else at least you only
have to install them once, its automatable and the bugs are in one place.
They introduce new hate but overall hate is reduced.


> So what I see is a perl script to do something useful, the guy who used it
> wanted to do something and there was a CPAN module that did a lot of other
> stuff but also seemed to be a bit easier way of doing whatever he wanted than
> writing a couple dozen lines of code himself. So he uses it. He never sees
> that that module pulls in 20 others, and then it says "SillyJokes::Unicorns
> needs Perl5.0003.34 and you're using perl5.0003.16" and the next thing I
> know it's pulled down perl5.0004.12, and built that...
> 
> HATE

The problem of the CPAN shell pulling down perl been fixed for quite some 
time.  I hated it, too.


> So I go in to the original program, and find that it's using some XML parser
> to grep a fixed format web page for a chunk of text that doesn't even include
> any HTML, and I replace it with a regexp, and the resulting code is 20 times
> faster.
> 
> HATE

This is partially a consequence of Perl's weak dependency system.  You 
depend on something or you don't.  RPM has a similar problem.  A new system 
is being introduced via Module::Build with a much more rich dependency 
system (modeled on uncoincidentally dpkg) including things like "recommends" 
which lets you avoid the problem of installing the universe just because 
you *might* need something.  Similar to the way you can very easily install 
something like XEmacs under Debian without having X.  This system is not 
all in place yet.

Perl has the additional issue that we've traditionally avoided bundling
modules together into great big wads like Java does.  It boils down to the
shared vs static libraries debate which I'm not going to get into.  At
least now the tools exist to wad a Perl application's dependencies together
using PAR.

All its implementation hate aside, its the only language that's usefully 
solved the problem of automatic dependency installation and upgrade at the 
language level!  Most languages don't even try or they have some crappy web 
site (RAA, Vaults of Pernasis, CodeZoo) or they just smash as much as they 
can into the base distribution (Java, PHP) or they let individual operating
system vendors figure it out (C).

Anyhow, that's Perl-specific hates.  We're talking about Apple.


> Most commercial operating systems and many applications have mechanisms to
> automatically update themselves. I ALWAYS turn these off sooner or later,
> because all too often I have had the "new, improved" version break things.
> 
> Developers do stupid things, sometimes. They remove functionality. They break
> functionality they don't care about. They change configuration files. They
> don't necessarily want the same thing out of their software that I do.
> 
> Would you want to be automatically updated to something like Netscape 6?
> What if you want to keep the functionality that was dropped in later versions
> of Gnomeapps, and you're not a geek who can edit the config files?

If the new version sucks then reinstall the old version. 

What's worse?  Manually checking and upgrading 100 pieces of software every 
week/month?  Or doing it automatically and having to rollback one 
application every once in a while?  Or maybe you just let everything get
dusty.  Keep in mind this is a desktop machine, not a server.

What's going to consume more of your time in the long run?

And if you don't like the new version is fucked, what's the alternative?  
Use the old version forever?  Do you still use Netscape 4?  No, if newer 
versions continue to be fucked you're going to dump the app entirely and 
switch to something else.

Looking at this MacUpdate Desktop thing it looks like it has per-version
ratings so you can get an idea if its going to be a lousy update before
you let it update.

You can't avoid upgrading forever.  This is hateful but it is less hateful
than dealing with having to work with and write for ancient versions of 
software.


> > No complex packaging system or registry is required because Apple already 
> > has such a system, the .app bundle.  It could have been something as simple 
> > as an extra file in the .app directory describing where to check for and 
> > download the latest version.
> 
> The version number is already there in every .app directory. There's already
> third party tools that promise to take care of you, using their own databases
> or the ones at MacUpdate or Versiontracker. I think Macupdate sells one.

I paid $1500 for this machine and operating system and (if I actually paid
for upgrades) $140 for each OS upgrade.  I shouldn't have to pay another
$40/year for a basic packaging system.  A $300 PC with a free OS can manage
it.  Why not Apple?

Yes, I expect to get my money's worth.

Otherwise, that MacUpdate Desktop looks like what I want.  Thank you.


> Apple has made a painful task trivial, without forcing people like me to work
> like people like you, AND there's software for people like you. It's a MUCH
> less hateful solution than Debian or CPAN or even FreeBSD Ports.

There's no forcing you to work like me.  You can allow automation without
forcing automation.  The dmgs would still be downloadable by hand if you 
really wanted to, same as they are now.  Same as how you can grab all the 
stuff provided by Software Update by hand if you really wanted to do that.

I miscast the order of the upgrade algorithm.  Currently it is not O(n) (ie.
worst case is N) it is omega(n).  The BEST case is n.  I want theta(1) with
O(n).  Average case upgrading should be one step.  Worst (or in your case,
desired) case its n.

Which is, I guess, the point.  If you don't want to do automatic upgrades
fine, but don't stop me from doing it.  And especially don't let me have
a taste (Software Update) and then not do it for everything.

There's stuff above here

Generated at 02:00 on 03 May 2005 by mariachi 0.52