[penguicon-general] A couple of thoughts about programming

Rob Landley rob at landley.net
Sun Apr 29 14:50:00 CDT 2007


On Sunday 29 April 2007 11:58 am, Robert Meier wrote:

> > POSIX became largely irrelevant to Linux because the spec isn't freely 
> > available.  (You have to pay for it.)
> 
> I believe the above is unfortunately widely accepted FUD,

Oh please don't call FUD on the computer historian.  Not without citing 
references. :)

Quoting from a footnote in The Art of Unix Programming, here:

http://www.faqs.org/docs/artu/ch17s02.html#ftn.id2999397

> One Linux distributor, Lasermoon in Great Britain, did achieve POSIX.1 FIPS
> 151-2 certification — and went out of business, because potential customers
> didn't care.  

Here's memorials to their (circa 1996) enthusiasm for their certification:

http://www.linuxjournal.com/article/131
http://www.ukuug.org/newsletter/linux-newsletter/linux%40uk21/posix.shtml

> that misleadingly implies unavailability of practical interoperability in
> the linux/unix community.

Linux is compatible with other Linux.  BSD and Solaris and such are 
interoperable via emulating Linux.

I researched this fairly extensively while rebutting SCO's first amended 
complaint (Halloween 9).  This is from my rebuttal to paragraph 43:

> The 86Open Project was an effort to define a common binary executable format
> to allow the same programs to run without modification on all the various
> x86 Unix variants. The first meeting of the group took place at SCO's
> corporate headquarters, on August 22, 1997. Shortly thereafter, a SCO
> developer named Michael Davidson wrote the utility lxrun, which allowed
> Linux utilities to run on OpenServer and UnixWare. Davidson made lxrun an
> open-source project, which allowed Sun to port lxrun to Solaris, and on July
> 25, 1999 the 86Open group declared victory and dissolved, with the Linux
> executable format now being the lingua franca of the x86 Unix world.        

The links in that paragraph are:

http://www.telly.org/86open/
http://www.ugcs.caltech.edu/~steven/lxrun/
http://wwws.sun.com/software/linux/compatibility/lxrun/

You can also learn there about the Linux Kernel Personality for UnixWare (not 
that anyone cares anymore).

The response to Paragraph 47 tells you about the Intel Binary Compatability 
Standard (ibcs2) along with lots more links, some of which might be stale by 
now since I did all this research in 2003, but archive.org is your friend.

Attempts to unify the fractured Unix market along the lines of standards were 
so common they were a RUNNING JOKE.  The following is almost 20 years old:

http://www.gshotts.com/HUMOR/unixland.htm


> > >        POSIX (write once, run aix, hp-ux, linux, sunOS, SGI, ...)
> You can read the lastest 2004 specification online with a free (i.e. 0.00 
USD)
> registration (only an email required)
>     http://www.unix.org/single_unix_specification/
>     http://www.unix-systems.org/version3/online.html 

Hello, I mentioned SUSv3 in my original email.  Would you bother to read the 
darn thing before going all huffy about it?

It's a relevant standard to Linux because it's freely available online.  It 
contains much of Posix (although it's not always an exact match, no matter 
what they say).  I spent three years using the online version of that spec to 
implement BusyBox against, although that was just a first pass because you 
then had to go see what gnu extensions people were actually using and 
reproduce those too, which I did.

Try to build the Linux kernel with a posix-only "make".  I dare you.  Try to 
find a Linux implementation of sccs.

Linux cares about posix compliance, but it's by no means a primary goal, and 
Linus Torvalds himself has expressed it in so many words:
  http://lwn.net/2000/0330/a/linus.html

> or purchase on CD (or as a bookshelf of hardcopy)
> for ~240 USD (less than the same size bookshelf of O'Reilly books).

Any spec I have to spend $240 on is not a spec I care about.

> You can purchase the 1991 specification on CD
>     http://www.opengroup.org/bookstore/catalog/t912.htm
> for 19.95 USD (less than Penguicon admission).
>
> I personally have no objection to paying the IEEE, Open Group or O'Reilly
> for their effort and publications.

If you're required to pay a gatekeeper for access to it, it isn't a standard.  
(Same way if you have to pay to see a copy of the law, it's not a law.)

I am not required to pay for SUSv3, and so I care.

> > > It's been subsumed by SUSv3, which you can find at 
> > > http://www.opengroup.org/onlinepubs/009695399/
> 
> <AFAIK>
> SUSv3 is a publication of the IEEE 1003 and other standards required by 
POSIX.
> SUSv3 does not subsume/replace POSIX anymore than "Learning Perl"
> (the camel book) subsumes/replaces perl.

SUSv3 is relevant.  POSIX is not.  There is overlap between then.  So what?

> ~2hr research (http://www.uspto.gov/) will show that POSIX is a trademark
> (1792095) like linux (1916230).  Commercial use of the POSIX trademark
> indicates certified compliance with FIPS-189, IEEE Std 1003 (a.k.a.
> ISO/IEC 9945), and several other standards.

I'm aware of this, and they are DEEPLY IRRELEVANT.  Both Windows NT and IBM's 
OS/360 got Posix certification.

http://www.opengroup.org/csq/view.mhtml?RID=ibm%2FXU1%2F2
http://www.microsoft.com/technet/archive/ntwrkstn/reskit/poscomp.mspx?mfr=true

Means nothing.

> The Open Group publishes the full POSIX spec, including IEEE Std 1003,
> and other standards as the Single Unix Specification, analagous to the
> as yet unreached target of the linux documentation project.

The Linux Documentation Project is a collection point for third-party 
documentation.  Possibly they meant the Linux Standards Base?  Ask 
Lamont "Piggy" Yarrol about the history of _that_ little fiasco... :)

> > >        rpm spec (wrapping tarballs with dependencies, and pushbutton 
build)
> > rpm is cpio based, deb is the one that's tar based.
> > (I believe ipkg, portage, and slackware are also tar based).
> 
> A source rpm is a cpio file which includes
>   o original unaltered package files (tarball, .zip, ...)
>   o patch files to copy-and-alter the original package files
>   o .spec file, macro processor input to produce shell scripts

Or you could just provide a tarball of source code, which works on Ubuntu and 
Gentoo and Debian and Slackware and Mepis and Linspire and so on.  These 
days, RPM is an increasingly specialized package format usable on a minority 
of systems.  (I note that Red Hat paid to have it be the only package manager 
mentioned in the Linux Standard Base, but see the above mention of why the 
LSB failed, which is a rant of its own.  And ask Garrett the uClibc++ guy 
about the LSB C++ standard, which is HILARIOUSLY bad...)

There's a reason RPM was unmaintained for a few years: lack of interest.

http://lwn.net/Articles/196523/

Admittedly that article embarassed Red hat into doing something about it...

> In typical unix do-things-reversibly fashion,
> a package developed as a tarball(, .zip, ...), can be wrapped as a source 
rpm,
> and a source rpm can yield the original tarball(, .zip, ...).
> 
> In typical unix textual fashion (like apache config files),
> the .spec file, is human readable,
> yet computer-automated description of build, test, relocate details.

You seem to be unaware I spent a year working at a company whose core product 
was TSRPM, the TimeSys RPM wrapper, that cross-compiled Fedora to various 
platforms Red Hat was uninterested in supporting because Red Hat sold the 
embedded division it got from Cygnus to concentrate on the enterprise market.

[fast-forwarding through the commercial...]
> rpm supports (but does not enforce by default) installations that are
> completely reversible (even when installation fails),

Remember when Eric Raymond hosed his system doing an RPM update a few months 
ago?  The first system I hosed doing an RPM update was Red Hat 6.0.  
Your "completely reversible" totally ignores shared libraries.

I once managed to corrupt my rpm database _without_root_access_.  (Still dunno 
how I did that one, but I did.  That was circa Red Hat 8, I think.)  Cathy 
just mentioned rpmq eating 100% cpu on her box.

But mostly, I don't deal with it anymore.  Eric's household was literally the 
last one I knew using Red Hat/Fedora outside of an "enterprise" context since 
2005.  (I'm sure there are others, I just don't know them.  And I'm not 
counting people who work for Red Hat.)

> As distros and package managers evolve, I believe many linux users
> would want to learn the features (and failings) of several package managers
> so the user can choose what's best for the user, without archive and distro
> package manager restrictions.

If you want to do a survey of package management systems, that's one thing.  
But RPM hasn't been "the default Linux package management system" since Red 
Hat 9 had 50% market share among Linux installs.  (Hint: Fedora is now 
actually in fourth place on the metrics I've seen.)

Rob


More information about the penguicon-general mailing list