Alan Cox Quits As Linux TTY Maintainer — "I've Had Enough"
linux.slashdot.org
linux.slashdot.org
I'd like to think I am poised and dedicated, but I doubt I am even half so as Alan.
In other words, for such people, the technical merits of an idea supersede all other aspects.
That's some attitude.
> This code worked with the older TTY code, but broke with 2.6.31. There is probably no way to fix it which doesn't saddle the kernel with maintaining weird legacy bug-compatibility code
"Maintaining weird legacy bug-compatibility code" is the essence of professional and responsible platform software engineering - the software that other software relies upon. It's one of the reasons why platform software development is so hard and why software engineers are paid as much as they are.
There's another misguided notion mentioned that I see a lot in both open source and Wikipedia, two kinds of crowd-sourcing efforts which generally desperately seek authority-figures of some kind, like "standards":
> Alan thinks this behavior is reasonable; it complies with the applicable standards
Compliance to the "applicable standards" isn't worth anything if it breaks software and makes users' lives worse. It's not for nothing than POSIXLY_CORRECT applies to many GNU apps, and is not enabled by default.
I disagree completely. Maintaining ABI compatibility is crucially important, and the kernel development community understands that. But ABI compatibility does not mean going to all lengths to enabling buggy code to continue to work. In this case, "fixing" kdesu would have required putting in code to recognize this specific data stream and ensure that a read terminated exactly where it always used to so kdesu wouldn't get confused and throw away good data. It would be an albatross around the neck of any developer working in the TTY layer for years, and those developers are already up to their asses in albatrosses. All to perpetuate an easily-fixed bug in an open-source application.
That kind of "compatibility" wrecks your platform over the course of a few years; you simply can't maintain code like that. A "professional and responsible" software engineer needs to recognize that and avoid it.
Quick answers aside, those guys work hard to try and make everyone happy with the resources they have available, and it's not an easy job.
History suggests otherwise.
Compare that to Sun's attitude, which is if your old binary doesn't run on the latest Solaris then it's a bug in our code and we'll fix it.
Software development is about trade-offs and apparently linux wasn't hurt as bad by the occassional ABI breakage as solaris was hurt by the "backwards compatibility above all" mindset (which ofcourse reaches way beyond the basic ABI).
It's all about the albatrosses.
Backwards compatibility in Solaris is a matter of minor annoyances (e.g. ksh93) it hasn't hindered it being a cutting-edge Unix.
And the userland/package manager problem is neatly addressed by Blastwave.org.
What came first, Jumpstart or Kickstart? Again, Linux is playing catch-up.
Jumpstart, Kickstart? Well, I guess they were hot in 2001, yes.
All sizable solaris deployments I know today are struggling with FAI, puppet and a lot of custom glue scriptery to enable at least a basic grasp on their deployments. JET and the ilk is just not even touching a worthwhile real-world problem.
And the userland/package manager problem is neatly addressed by Blastwave.org.
Likewise I can only scratch my head over reading blastwave and "neat" in the same sentence. Have you even used it?
I'm in fact a bit surprised it still exists because most solaris admins seem to either scoff at the idea altogether and stick with the regular pkgadd, or look for greener pastures in OpenSolaris - which wisely refrained from any attempts to re-invent apt.
Well, but as said, my initial point wasn't even about discussing implementation details in one way or another. There is no doubt solaris displays great technical excellence in some areas. Unfortunately too often these are not the areas that people in the real world care about.
The point I am making it: a serious OS doesn't break backwards compatibility on an individual developer's whim, no matter how famous they are.
Well, most people seem to like their OS a little bit less serious nowadays.
Or, more seriously, over here in the real world this is simply a non-issue for almost everybody. Binary compatibility between OS revisions was important when compile-runs would take days. Nowadays you just compile for your target platform and move on.
I couldn't disagree more with your point.
Open source is about openness. This is about evolving a platform in a clean and open way. If someone's program is buggy and does weird things it shouldn't do, then the bug should get fixed, not a bug be added to another piece of software in order to make the buggy program (that worked properly only by accident) still work. A feature that is not needed is a bug all in itself.
If your old program won't work with your new OS, then don't upgrade. There is no pressing need to run the latest and greatest OS, at least not in "professional and responsible" environments.
That's also why Linux distros don't use the latest kernels: to allow the userland programs they package into them to run until they get fixed and the latest kernel can be added. While I know my Ubuntu doesn't run yesterday's kernel, I am happy it runs perfectly well with last month's kernel.
I've been watching parent get upmodded and my comment get downmodded with increasing disbelief. Time was that +16 used to mean it was not to be missed, and -4 was a troll or ad hominem.
What with recent issues with egotistical libc maintainers, people throwing their pacifiers over having to support junk, people moaning about ext4 (even though it works fine and is poor app behaviour), it doesn't give people much confidence.
Confidence is key.
There should be a pony too.
How can the kernel not have lots of hacks? It deals with hardware, which is often weird.
POSIX rarely changes. They should start there and work backwards.
UNIX nearly died because vendors wouldn't allow interoperability. Don't let it happen again.
Look at Win32 - still works like it did back in '91 (with Win16).
http://www.joelonsoftware.com/articles/APIWar.html
That's a good overview of how much "Maintaining weird legacy bug-compatibility code" you need in an OS with any history whatsoever.
The reason it still works is that they thought about it properly to start with. There have been very few extensions. The main one being adjusting pointer sizes (which are hidden behind a typedef like LPSTR anyway so that is irrelevent).
And for the record I take anything Joel says with a pinch of salt. The guy is a trendy blog mouth piece.
http://blogs.msdn.com/oldnewthing/archive/2003/10/15/55296.a... http://blogs.msdn.com/oldnewthing/archive/2003/12/23/45481.a...
Here's a quote:
This is just the tip of the iceberg with respect to application compatibility. I could probably write for months solely about bad things apps do and what we had to do to get them to work again (often in spite of themselves). Which is why I get particularly furious when people accuse Microsoft of maliciously breaking applications during OS upgrades. If any application failed to run on Windows 95, I took it as a personal failure. I spent many sleepless nights fixing bugs in third-party programs just so they could keep running on Windows 95.
Granted, backwards ABI compatibility is a huge, complicated, thankless task for which you get no notice if you do the job perfectly. The ideal spot for the "break old programs" vs. "cripple new programs to avoid breaking old ones" dial is different for every project. Sometimes the right thing to do is keep the code base from degenerating into a pile of back-hacks. Sometimes it's all about bending over backwards to keep a long-gone vendor's bug from biting your end users.
I've dragged some stuff which we wrote for NT4, recompiled it with VC++ 2008 (plus spent some time frigging VS settings) and it just worked on Win2k8. The original binaries, even though they were compiled 12 years ago, still run on Win2k3 fine and past the test suite (!).
The better definition concerning Linux is that Confidence is "Built Up". Linux started as an unknown and has forced itself into people's confidence.
Linux operates well 24x7x365 in many places, and that rate of Confidence build up is way more than any rate of loss due to Steering Committee squabbles.
http://msdn.microsoft.com/en-us/library/ms632680%28VS.85%29....
Unchanged since 27 July 1993. Used trillions of times a day by millions/billions of computers.
I wanted to edit that it would be freaking hilarious if Alan went and worked with Microsoft.