[Gllug] Linux on Desktop

Nix nix at esperi.org.uk
Wed Feb 7 00:09:59 UTC 2007


On 5 Feb 2007, Chris Jones said:
> Christopher Hunter wrote:
>> It breaks compatibility with old programmes
>> (necessitating re-purchase of existing software), it has serious
>
> Good. I keep coming across this argument about backwards compatibility
> and I think Microsoft *should* break it at least semi-regularly.
>
> At least part of the reason why the Windows APIs are such an insane
> tangle of different APIs to do the same thing is that throughout
> Windows' lifetime, stupid third party developers have done stupid things
> and MS has to keep adding workaround after workaround to keep their
> stupid apps running.

Welcome to closed-source apps and the mess which is PE library
versioning.

> I read an MSDN blog post recently about a piece of software that was
> inserting Explorer context menu entries by offsetting them from the
> bottom of the menu rather than using a more correct approach, so XP or
> Vista or whatever have to have an explicit hack that means programs
> doing that will still look right to the user even after the context menu
> structure has changed in Windows.

This is endemic on all OSes that care more about their closed-source
ecosystem than about code elegance/maintainability. Some amazingly ugly
application-specific hacks went into OS/2 as well, and I'm sure went
into every other major closed-source OS ever. (Yes, literally
app-specific: the Unix analogue would be `if your app is named
/usr/bin/foo these syscalls will operate differently'. Windows has done
this too.)

The closest Linux analogue is the long-term ABI stability of the syscall
interface and of shared library interfaces: but that's quite
different. Bugs still get fixed there, even if the change disrupts
programs (consider the changed semantics of nice() in glibc 2.3 I think
it was), and no program gets a magic look in (although if a change in
glibc or GCC breaks Emacs too badly RMS may ask for people to look for
alternative fixes ;) ).

> Compare the situation to FOSS - we break ABIs and APIs *all* the time
> and it doesn't really stop software from working.

That's because we don't break APIs too badly; often a recompile is all
that's needed. It's not as if we've often ditched libpng's API and
replaced it with something entirely different. The closest case I can
think of to that is the transition to gtk-2.0, and it took *years* for
every app to migrate. Plus, gtk-2.0 could be installed in parallel with
gtk-1.0, so the consequences weren't too horrendous.

What's really wrong with Windows's API revision stuff is that the PE
executable format has no equivalent of Linux's versioned symbols, or
even Solaris's weaker variant (without the @@ defaults). Combine that
with the lack of a shared library versioning convention, the absence of
SONAMEs or anything like them, the absence of weak symbols and symbol
aliases, and the awful crock used instead of LD_LIBRARY_PATH (let alone
/etc/ld.so.{conf,cache}) and it's really amazing that MS have done as
well as they have.

Of course they can't make major changes to their executable format, any
more than we can: but their format is much less extensible than ELF.
(Reasonably large changes, like DT_GNU_HASH and enhanced section
grouping support, have gone in without any visible change to users ---
other than, in the former case, a slowdown if they move programs
compiled with the non-default -Wl,--hash-style=gnu option to systems
running an older glibc and don't prelink them.)

We escaped this because we transitioned from a.out ten years or so
ago. Of course MS couldn't do this: closed-source ecosystem, again.

>                                               The only downside is
> that it scares off ISVs, presumably because they are more interested in
> writing something as quickly as possible, compiling it once and never
> having to care about it again other than making money from it. Frankly,
> they can get bent :)

Yeah, closed-source code is a boat anchor (in the sense of `it drags on
the sea bed and slows you to a halt') and should be mostly ignored if it
gets in the way of structural improvements. (Not that Linux has lost the
ability to run ancient binaries! :) )

-- 
`In the future, company names will be a 32-character hex string.'
  --- Bruce Schneier on the shortage of company names
-------------- next part --------------
-- 
Gllug mailing list  -  Gllug at gllug.org.uk
http://lists.gllug.org.uk/mailman/listinfo/gllug


More information about the GLLUG mailing list