Not logged in
Log in now
Create an account
Subscribe to LWN
LWN.net Weekly Edition for May 16, 2013
A look at the PyPy 2.0 release
PostgreSQL 9.3 beta: Federated databases and more
LWN.net Weekly Edition for May 9, 2013
(Nearly) full tickless operation in 3.10
Kamp: A Generation Lost in the Bazaar
Posted Aug 20, 2012 16:55 UTC (Mon) by drag (subscriber, #31333)
I wish Solaris would just curl up and die, but ZFS has it hanging on a bit longer. Oracle's Dtrace implementation on Linux is hopefully interesting and may lead to another nail in the coffin for SunOS. I strongly suspect that Oracle wouldn't mind seeing Solaris die off either.
And that is pretty much it for classic Unix systems. Between Microsoft and Linux there isn't much room left for it.
AIX and the like will still matter to some, but nobody wants to move to using those systems if they can help it. They are kinda like 'Blackbeard the pirate' during his heyday. Psychologically damaged relics of a bygone era.
Nowadays it's ridiculous to talk about portable software and not to automatically assume that you are including OS X or Windows into the discussion.
Posted Aug 20, 2012 20:07 UTC (Mon) by wahern (subscriber, #37304)
The elephant in the room is Windows. Compared to the differences among AIX, Linux, Solaris, OS X, FreeBSD, NetBSD, OpenBSD, etc, Windows is a completely alien dimension. The world would be much better off if more projects stopped to trying to be portable to it. It's almost always a red-headed step child in a build, and the demand seems to come entirely from developers and techies who refuse to give up Windows as their personal development environment. Instead they weigh the burden on the rest of us in the form of crappy implementations.
Supporting Windows is almost like supporting TRON, in terms of common functionality of the platform. The least-common-denominator interfaces are stuck in the 1980s, and a project makes an immense sacrifice in complexity and/or usefulness by trying to work on both. Obviously it _can_ be done, but in the vast majority of cases it probably _shouldn't_ be done.
The only standard Windows cares about is C++. They have no support for contemporary POSIX/SUS or C standards. And their fundamental approach to API design conflicts with that of Unix derivatives. I'm not saying it's better or worse, just very different. And that makes porting sophisticated software difficult, to say the least.
Posted Aug 20, 2012 20:21 UTC (Mon) by apoelstra (subscriber, #75205)
The reason that developers try to support Windows is to increase their userbase and (hopefully) gain more developers, because the vast majority of open-source projects are hopelessly understaffed. Nobody really likes it, or likes being portable to it. But the fact is that a lot of people use it, and if we're writing software for people to use, we need to support it.
The fact that these developers -don't- use Windows as their personal development environment is the reason that implementations are so crappy.
Posted Aug 20, 2012 21:20 UTC (Mon) by Cyberax (✭ supporter ✭, #52523)
And that's OK, because otherwise there'd be no need for different operating system. We'd just all happily use One True Faceless OS.
And I also disagree about Windows being a horrible OS for build systems. It's actually a GREAT OS for build systems because it forces you to avoid hacky shortcuts like assuming that /usr/include always has all the relevant libraries or always installing binaries into /usr/bin.
Posted Aug 21, 2012 13:14 UTC (Tue) by Wol (guest, #4433)
Last I heard, and I'm sure it's speeded up since then, a "make clean, make" took A WEEK on an 8-core Windows monster.
My 3-core gentoo box takes a couple of hours.
Posted Aug 21, 2012 14:43 UTC (Tue) by Cyberax (✭ supporter ✭, #52523)
Posted Aug 21, 2012 19:21 UTC (Tue) by knico (guest, #67323)
If your files are on a network drive, Windows builds are very, very slow. Visual Studio seems to have huge network latencies due to its sub-optimal dependency checking.
Posted Aug 20, 2012 21:39 UTC (Mon) by epa (subscriber, #39769)
Posted Aug 20, 2012 22:48 UTC (Mon) by drag (subscriber, #31333)
Actually it's not. Microsoft started off as a Unix vendor and even though it has a lot of VMS influences the Unix influence definitely shines through.
It's certainly a lot more Unix-like then, say, AS/400 or VSE/ESA. Ever used a thirty-_ONE_ bit operating system? I have. It's not pleasant.
>They have no support for contemporary POSIX/SUS or C standards.
Actually Microsoft Windows does have POSIX/SUS support.
The NT kernel has the ability to support multiple 'userspace personalities'. This is a side effect of it's layered 'Hybrid Microkernel' design with internal APIs and message passing. Originally it only supported the NT userland. Later one, with windows 2000, win32 support was added. POSIX is just yet another 'native' userland API that is supported by Microsoft Windows.
Numerous government entities have POSIX requirements for operating systems.. In order to get contracts with those entities Microsoft must provide a POSIX operating system. Microsoft does this previously through SFU in the past and now through SUA.
One of the options you get for the higher priced versions of Windows Visa and Windows 7 is that they can be effectively a Unix operating system, depending on your specific configuration. Of course nobody gives a flying flick about POSIX so it's being depreciated in Windows 8.
Maybe this will help put the whole 'POSIX' thing into perspective. Maybe not.
If POSIX is all that important then why are not people using native BSD-style user-land that Microsoft offers rather then trying to shoe-horn a Linux environment via third-party win32 binary? (aka Cygwin or other proprietary competitors) The answer, it seems, is that it's a lot easier to ignore POSIX completely if you are aiming for portability.
Posted Aug 21, 2012 0:27 UTC (Tue) by wahern (subscriber, #37304)
That's just one example. I18N and L10N is another. The list goes on-and-on.
The best way for an application to simultaneously support Unix and Windows is to not support it for those components which heavily rely on system-specific features. That particularly applies to GUI software.
The problem is that people try to design highly detailed, portable interfaces, when instead of thinking about small details they should think big. That is, break out huge chunks of the application and develop them in parallel, but separately. Trying to write them "portably" as one cohesive whole is foolhardy.
Same logic applies to the build environment. Trying to write or find the "one build system to rule them all" is a fool's errand. You can do better than autotools or CMake by simply not trying to accomplish what those two tools ultimately fail to do. Not developing the Windows portion of a GUI application completely in Visual Studio is just asking for endless and unnecessary headaches.
Point being, if you don't mix portable and non-portable code, you don't really need a complex, "portable" build solution.
Posted Aug 21, 2012 0:36 UTC (Tue) by wahern (subscriber, #37304)
Windows is presumably dropping their ancient POSIX support for the same reason they've never supported newer C versions and perhaps for the same reason their commitment to C# was so short lived--because their management team doesn't really care about anything other than the old Win32 API which keeps vendors locked in to the platform.
Supporting POSIX or C isn't going to draw people to the platform, it'll just make everybody else's life easier. Attempt to support newer C++ features is what will help draw and keep developers, as will their typical overhyped promises about an SDK/API revolution in the next Windows product.
Posted Aug 23, 2012 5:38 UTC (Thu) by quotemstr (subscriber, #45331)
Posted Aug 21, 2012 9:54 UTC (Tue) by tialaramex (subscriber, #21167)
- There is no real "NT userland". The NT-specific stuff all lives below the personalities, and is thus accessible from all of them. Unlike a Unix Microsoft does not officially document and support the system call interface to their kernel.
- Win32 originates in Windows NT (although obviously the design owes plenty to Win16) and was present as a personality essentially from the platform début. This is the "native" personality of NT operating systems, and the one with access to all the nice toys invented in the last 25 years.
- The original POSIX and OS/2 subsystems date to the early 1990s too.
You're correct that POSIX is present because it was felt to be advantageous in contract negotiations. You would be wrong if you imagined that Microsoft intended /anyone/ to use this interface. It's drastically hobbled, implementing only a bare minimum of POSIX features and serving to demonstrate (as someone has commented above) that POSIX is "useless" because it doesn't specify enough to build much real software. BSD sockets, for example, are not a mandatory POSIX feature, and thus Microsoft omits them. Likewise X is not present, nor is any alternative Unix-like windowing system.
The OS/2 personality is there for the same reason. It's a checkbox item. Can this all-singing all-dancing NT run our old OS/2 software? Yes says the salesman. Then the NT stuff is installed, the OS/2 app doesn't work, and Microsoft explains that oops, that's using an unsupported API but hey, one of the many Windows ISVs will be happy to offer you an alternative that does run on NT.
Services For Unix isn't an evolution of the POSIX personality. It's Microsoft reluctantly accepting the reality that people wanted to actually _run_ Linux software (hence all the GNU utilities) on their expensive NT systems and that all too often now the IT management is present when the salesman makes his pitch and will laugh uncontrollably if the POSIX personality is mentioned. They needed a new pig, as my old CEO would say. So they bought Interix (which is what customers who desperately needed this stuff to actually work had been using instead of the POSIX personality) and renamed it SFU (I'm surprised they couldn't find an excuse to insert a 'T' in that abbreviation) but of course they've essentially allowed it to stagnate so that it's becoming irrelevant again.
It's a mistake to imagine that NT's innards resemble those of a Unix at all. It's similarly _capable_ but that's all. Roughly everything you can do on Linux from a certain era you can also do on NT from that era. But the /way/ you do them is very different. There is a different philosophy at work in the Microsoft kernel team than in Linus' project.
Today the Microsoft salesman will deflect questions about cross platform compatibility by suggesting that you can run all your "legacy" (ie non-Microsoft) software in a virtual machine. If you're dumb enough to fall for that, you deserve everything you will get.
Posted Aug 21, 2012 13:39 UTC (Tue) by Wol (guest, #4433)
Which may be true for stuff MS wrote, but I have problems running WordPerfect on XP, and on 7 it won't even think of installing!
Posted Aug 22, 2012 12:09 UTC (Wed) by vonbrand (subscriber, #4458)
It's not. A MSFT written game (forgot details) for Win98 which exactly met WinNT 4.0's specifications wouldn't make it past its splash screen.
Posted Aug 22, 2012 15:01 UTC (Wed) by cortana (subscriber, #24596)
Posted Aug 22, 2012 8:42 UTC (Wed) by drag (subscriber, #31333)
Microsoft SUA supports BSD sockets. In Ipv6, no less. But that's neither here nor there and thanks for the mini lesson on NT personalities. I am not a NT guy.
I am sure that we all can agree at this point that POSIX has no relevance any more if your concern is about portable software. It still may be useful for some API lawyering, but besides that it is entirely insufficient for most software.
Posted Aug 23, 2012 5:35 UTC (Thu) by quotemstr (subscriber, #45331)
You think that's bad? Emacs still has a fully-maintained DOS build. Not too long ago, we had a long discussion about 8.3 filenames.
AIX is dying too ...
Posted Aug 21, 2012 13:11 UTC (Tue) by Wol (guest, #4433)
But AIX is now very definitely a profit centre. When it can no longer compete in customers' minds, and starts losing money, it will be gone.
Posted Aug 21, 2012 13:59 UTC (Tue) by drag (subscriber, #31333)
It's hella expensive to migrate away from it. Just like any enterprise platform that a large-ish corp depends on for core functionality. The time and money it will take for most companies to move away from AIX far outstrips the cost of keeping it.
(Not to also mention the risk to your career if you decide to take something that is working and replace it with something that is cheaper... only to find the new solution doesn't work.)
IBM knows this and sets up licensing accordingly and will continue to make a killing for a very long time.
If it wasn't for this fact 'big iron unix' would of been dead years ago, I expect.
Posted Aug 21, 2012 17:46 UTC (Tue) by dgm (subscriber, #49227)
Posted Aug 21, 2012 18:03 UTC (Tue) by dark (subscriber, #8483)
Copyright © 2013, Eklektix, Inc.
Comments and public postings are copyrighted by their creators.
Linux is a registered trademark of Linus Torvalds