The problem is in number 2, as many applications try to be os independent (or at least unix-flavor
independent).
This is the point that most people don't seem to grasp and perhaps why Linus was so harsh: Emacs
works on a large number of unixes, why is a breakage on Linux the fault of Emacs? Sure it may be
bug, but that would make it a bug that exists outside of Linux and the main purpose of Linux is and
was to be a independent unix-like posix compatible operation system.
This also means that probably Emacs (by virtue of it being a widely used application) was just first
to be impacted by this behavior. And since other applications are probably also directly impacted by
this change of semantics (read: effective ABI change) is not desirable.
The KDE bug is different in that there is a clear indication that it would also not work on other
unixes and probably went unnoticed due to different defaults in distributing KDE which caused that
part to be hardly used (or perhaps some ports has a local patch to fix it which never got upstream).
Posted Jul 30, 2009 8:07 UTC (Thu) by nix (subscriber, #2304)
[Link]
Just because something works doesn't mean it's not buggy. I don't know
about Emacs, but XEmacs's TTY code has had data-losing bugs before, and
worked on heaps of platforms until Linux 2.6 came along, when it started
doing exactly what we see Emacs doing now, losing the end of compilations
(but for a different underlying reason). It can happen.
Getting a new tty pot
Posted Jul 30, 2009 12:50 UTC (Thu) by foom (subscriber, #14868)
[Link]
I've seen that same buggy behavior of emacs losing the tail ends of compilations on various
versions of OSX. I think it's fixed now, I have no idea if it was fixed in the kernel or in emacs, and I
don't know if it's the same underlying cause or not...but it seems suspicious.
So the claim that this new version of Linux is fundamentally breaking the Unix ABI and that emacs
worked fine with all other OSes is not all at obvious!
Getting a new tty pot
Posted Aug 2, 2009 11:10 UTC (Sun) by iq-0 (subscriber, #36655)
[Link]
True, but it is not obvious that it's the other way round either. My point was merely that in these
cases (where we have a cross platform application) it's safer to assume the kernel is at fault until
proven otherwise. Which in these more obscure interactions between programs and kernels
probably means doing some research on what other systems do.
I'm not saying that always following the lead of other is better, but a standard is defined by it's
implementations and if all implementations make more or less the same (possibly) wrong
assumptions, those wrong assumptions arguably are the standard.
Even this doesn't mean we shouldn't deviate from that standard but doing so (breaking lines with
this implicit standard) probably does effectively constitute as a ABI change.
But it all comes down to wether it is more reasonable to play the "guilty until proven innocent"
versus the "innocent until proven guilty" card in these cases. Both (logically) in the end lead to the
same conclusion (if the problem is deterministic of course).