Quotes of the week
Posted Aug 31, 2012 13:55 UTC (Fri) by khim
In reply to: Quotes of the week
Parent article: Quotes of the week
I'm talking about ABI and conformance for third party software, not performance.
What's your point? If that's a simple whine that creation of stable ABI is hard then I agree, it is hard. It's also necessary.
Do we compile stable and unstable symbols in the same shared object?
The same, of course. What's the point of splitting them?
That works, but it requires re-linking the entire planet because you really want to bump the SONAME so that applications using the internal ABI can actually be updated.
Absolutely not. ELF Symbol Versioning was proposed as a solution for this problem decade ago. Other solutions are possible, too (it's hard to use C++ with ELF Symbol Versioning, but there are it's own solution).
You provide library with both internal and external symbols on the live OS and you provide shims with just public symbols for the external developers. This is how Windows does that, this is how MacOS does that, this is how LSB does that if you want an example closer to the Linux!
if you bump the SONAME, though, applications linking against the external ABI will also need to be relinked, otherwise they won't be able to find the shared object - look at all the apps linking against boost, and breaking after 12 months because nobody ships the old version of boost they use any more.
Well, the problem is obviously not boost. The problem is the stupid idea to include it in a "system code" without accepting the support burden. If you include library like boost in a system core then yes, you need to ship bazillion versions of the same library in a said code. It's a fee you pay for compatibility.
Sane libraries (such as GTK+ or GLibC) bump versions very rarely which reduces said price.
so at this point third party apps are in the same situation as they are now, even if they use a supposedly stable ABI.
That's not a stable ABI. That's a perverse joke. Stable ABI means one simple thing: I can take binary compiled 10 years (or 5 years if 10 years is too much for you), start it - and it'll work. This is an ideal, 100% stable ABI is not really possible (even in Windows some programs stop working). But this is what you should strive for. Is it hard? Oh yes, there are countless stories about silly application developers and insane solution Microsoft comes with (for example programs called
setup.exe are handled in slightly different fashion than
whatsisname.exe). But this is what OS (any OS) is supposed to provide.
it's always easy to assume that people outside of your restricted area of interest are assholes that do not understand the problem space, especially if you spent about 15 minutes to think about it. I can assure you: we people working on the GNOME core platform discuss this shit all the time. there is simply no good solution, or good enough solution yet.
Are you sure you are "discuss this shit" with a goal to find a solution and not with a goal to find an excuse? If I understand correctly you are discussing that "unsolvable problem" for a decade while other people come and solve it and then do it again and again.
KDE was a good example till they decided to drop everything and create a new incompatible version. What was fine for the library (developers can always choose to use one version or another) is not fine for an OS: it must support old interfaces for a long time (years) till most applications (even obscure ones) will catch up to the new ABI. My favorite example is FCB: introduced in CP/M back in 1973, ported to MS-DOS in 1981, obsoleted in 1983 yet supported till Windows 2000. And even then people complained about their beloved WordStart!
And it's not impossible to provide stable ABI even if you do radical redesign. Think MacOS: it provided stable ABI in all transitions. From m68k to PPC to x86-64, from MacOS classic to MacOS X. Every time you had the ability to run old programs. Yes, Apple is not Windows, it drops support for older ABIs regularly. But it only does that when they have persuaded most ISVs (at least the major ones) to switch to a new ABI and when people have mostly upgraded their applications to a new version.
When other companies do the same idiotic radical ABI breakage GNOME and other Linux desktop are doing they suffer the same fate: witness Windows Phone 7.
to post comments)