[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Linux Core Consortium

> > me
> Ian Murdock (quotes out of order)

> > If the LSB only attempts to certify things that haven't forked, then
> > it's a no-op.  Well, that's not quite fair; I have found it useful to
> > bootstrap a porting effort using lsb-rpm.  But for it to be a software
> > operating environment and not just a software porting environment, it
> > needs to have a non-trivial scope, which means an investment by both
> > ISVs and distros.
> That's precisely what we're trying to do. :-)

The context of my remark was your claim that "by definition, the LSB
codifies existing
standards, i.e., things everyone already agree[s] with".  If that's
true, then the LSB doesn't represent a non-trivial investment on the
distros' part, and no one should be surprised that the ISVs don't care
about it.  Agreeing on a set of LCC binaries would be non-trivial for
the distros but its entire justification would be that it's trivial
for the ISVs.  That would be fine (on the assumption that ISV success
is what matters) except that I don't think it will work.

I respect your efforts to make commercial software on Linux more
viable.  But be careful what you wish for -- you might get it.  Make
it impossible to remove implementation warts because the binaries are
more authoritative than the specification, and pretty soon you have a
thriving ISV market -- for antivirus software, system repair
utilities, interface hacks, and virtual machines to graft
unreproducible system images onto new hardware.

> Wishing the ISVs operated a different way doesn't really get us any
> closer to a solution..

You seem to have missed my point.  I don't "wish" for ISVs to operate
a different way; I cope daily with the way that they _do_ operate, and
am distressed by proposals that I think will make it worse.  In my
opinion, catering to poor software engineering practice by applying
Holy Penguin Pee to a particular set of "core" binaries is unwise.  I
would have expected you and Bruce to agree -- in fact, to hold rather
more radical opinions than I do -- so I must be missing something. 
Here's the case I would expect a Debian founder to be making.

In short, I don't think that ISVs can afford for their releases to
become hothouse flowers that only grow in the soil in which they
germinated.  It's understandable for ISVs to pressure distros to pool
their QA efforts and to propose that this be done at a tactical level
by sharing binaries.  But I think that's based on a naive analysis of
the quality problem.  Inconsistent implementation behavior from one
build to another is generally accompanied by similar inconsistencies
from one use case to another, which don't magically get better by
doing fewer builds.

The requirement that software run on multiple distros today serves as
a proxy for the much more important requirement that it run on the
same distro today and tomorrow.  It's a poor substitute for testing in
a controlled environment, exposing only functionality which is common
denominator among distros, but that takes skill, understanding, and
labor beyond what ISVs are willing to invest.  In practice, there are
still going to be things that break when bits change out from under
them.  But it makes a great deal of difference whether an ISV is
committed to fixing accidental dependencies on binary internals.

Suppose I want to use an ISV's product on Debian myself, or to support
its use on systems that I control.  Usually the ISV's approach to
Linux is to list a set of supported RedHat and SuSE distributions
(often from years ago) on which they have more or less tested their
software.  That gives me some idea of what its de facto environmental
requirements are.  Then I reverse engineer the actual requirements
(shared library versions, which shell /bin/sh is assumed to be, which
JVM installed where, etc.) and select/adapt Debian packages
accordingly.  This is a pain but at least I get to use competently
packaged open source code for all of the supporting components, and I
can fix things incrementally without expecting much help from the ISV.

If I'm going to go to this trouble, it's actually to my advantage that
Debian packages are completely independently built -- separate
packaging system, separate configure parameters, separately chosen
patches.  I find a lot of things up front that would otherwise hit me
in the middle of an urgent upgrade -- calls to APIs that are supposed
to be private, incorrectly linked shared objects (I do an ldd -r -v on
everything), code built with dubious toolchains, weird uses of
LD_LIBRARY_PATH, FHS violations.  Sometimes ISVs even appreciate a
heads-up about these problems and fix them in the next build.

Given this strategy for ISV handling, obviously I prefer the ABI /
test kit approach to distro convergence.  For one thing, if commercial
distros cooperated that way, it would make the reverse engineering
easier.  More importantly, any ISV which publicly buys into ABI-based
testing will immediately gain credibility with me in a way that I can
explain to others in terms of robustness against security updates to
the supported platforms, without bringing in the issue of distro
defects.   Anyone who has supported, say, a CAD application on Solaris
understands that a patch-and-rebuild cycle often introduces accidental
changes to undocumented properties of OS-provided binaries, and a
vendor commitment to fix its product when an ABI-neutral change breaks
it is a Good Thing.

When the support chain is more indirect, or when packaging tools which
have to work under conditions it's hard for me to test independently
(e. g., a hardware RAID monitoring utility), I have to do it the ISV's
way.  So I go with a chroot of the last commercial Linux distro that
more or less worked like an open source project, namely SuSE 8.0 (not
that "enterprise" crap).  (Getting hard to find a mirror now, though.)
 When that stops working for me, I guess I'll start looking at Fedora

Don't get me wrong; there's a place for commercial distros -- a place
which in my mind is labelled "Solaris Lite".  They're commercial
branches of a shared code base, just like vendor UNIXes and most of
the BSDs.  I've been happy enough working with both open and closed
source code, using open source tools, on Solaris and many other
vendor-supported OS's, including RedHat, SuSE, and Mandrake.  But I
don't consider these distros open source any more, and haven't since
well before RedHat started playing trademark games.  (FreeBSD I would
consider open source, though; and there are some other Linux and BSD
distros I don't know well enough to judge.)

My criterion for open-source-ness in a distro is, can I take control
over the scheduling of incremental changes to central components --
kernel, toolchain, glibc, packaging and installation tools -- without
effectively forking the distro and taking on the entire support load? 
There was a time when I felt confident doing that with RedHat, but in
retrospect I was just lucky not to hit the bad times.

Here are a few things I dodged by exercising my own change control,
with the help of good fortune and a tendency to overreact when I first
stub my toe:

  - early 2.4 release kernels with broken subsystems merged in (I
froze at 2.4.0test9 and did my own ATM and netfilter merge work, and
didn't move from there until 2.4.5);  needless to say, I have
approached 2.6 (and backports from 2.6) with extreme prejudice, so I
missed out on rmap VM pathologies and broken NPTL / TLS backports;

  - the gcc "2.96" fiasco -- I happened to see Linus's comment
archived at http://www.uwsg.iu.edu/hypermail/linux/kernel/0012.1/1252.html
when it was first sent (except for trial builds, I didn't leave 2.95
until 3.2.2 for C and 3.3.2 for C++, so I actually skipped several

  - early glibc2.3 (I tried it the first time it hit unstable, hit
pthreads weirdness, immediately reverted to the last Debian 2.2.5 +
fixes from the tip of the 2.2 CVS branch, and waited another year
before trying it again);

  - rpm binaries built against broken Berkeley DB versions (for
backwards compatibility of on-disk format with SuSE 8.0, I built rpm
3.0.6 against the working DB 1.85 emulation in Debian glibc; I
bootstrap chroots from the outside); sticking to RPM v3 has also saved
me the kind of agony documented in the Debian changelog for the rpm

Obviously most IT shops don't have the skills for self-reliance (or
have other priorities for the use of these skills), don't know how to
(or don't have the time or the desire to) judge the competence of a
third party to fix and adapt to their requirements, and therefore
don't mind that they have no recourse but to call the vendor when
something breaks.  They pick a commercial Linux distro and treat it as
a sort of low-budget UNIX clone.  Sometimes they find out that, while
you don't always get what you pay for, you rarely fail to pay for what
you get, sooner or later, in one currency or another.

- Michael

Reply to: