[arch-general] A universal Operating System API - why don't we have it?
Hi all It dawned on my that lots of industries have standards and companies generally keep to them. For example slabs of aluminium have standard sizes, building materials have well defined specifications, or take electrical components: there's a huge list of standardized components. You can expect between 220 and 240 VAC from your wall socket, fuses have standard formats and ratings, 1 meter here is exactly the same as 1 meter in another country, etc... Even CD's, which have been around for decades by now, have always been created using the same format (albeit extended somewhat, over time, but a normal CD pressed now should still play in a CD player that's 20 years old). It allows for a very competitive market where choices are made based on price, quality, availability, etc... Why doesn't the computer business have something similar? Sure processors are interchangeable in a limited way, we use standardized RAM, standard interfaces for accessing our peripherals, etc... But not when it comes to software. Why don't we have one universal API that works on every operating system? Yes there is libc, the language C is defined "in some way", but I'm talking about stuff that would make applications 100% portable. Things like enumerating all hardware devices, configuring a network interface, drawing a window, ejecting the CD-ROM drive, getting notified about new hardware plugged in, etc... It's different on every operating system. You cannot write a driver for Linux and expect it to work on FreeBSD. You cannot write an application for windows and expect it to work on Linux. When you buy a piece of hardware you usually hope for the best that it'll work out-of-the-box including all "extra" features. So why is that? Why hasn't someone stepped up and even try and create a universal operating system API? Is it because the computer business is still a "child" in some way, compared to other industries? Just a thought. Glenn
2009/12/18 RedShift <redshift@pandora.be>:
Hi all
It dawned on my that lots of industries have standards and companies generally keep to them. For example slabs of aluminium have standard sizes, building materials have well defined specifications, or take electrical components: there's a huge list of standardized components. You can expect between 220 and 240 VAC from your wall socket, fuses have standard formats and ratings, 1 meter here is exactly the same as 1 meter in another country, etc... Even CD's, which have been around for decades by now, have always been created using the same format (albeit extended somewhat, over time, but a normal CD pressed now should still play in a CD player that's 20 years old).
It allows for a very competitive market where choices are made based on price, quality, availability, etc...
Why doesn't the computer business have something similar? Sure processors are interchangeable in a limited way, we use standardized RAM, standard interfaces for accessing our peripherals, etc... But not when it comes to software. Why don't we have one universal API that works on every operating system? Yes there is libc, the language C is defined "in some way", but I'm talking about stuff that would make applications 100% portable. Things like enumerating all hardware devices, configuring a network interface, drawing a window, ejecting the CD-ROM drive, getting notified about new hardware plugged in, etc... It's different on every operating system. You cannot write a driver for Linux and expect it to work on FreeBSD. You cannot write an application for windows and expect it to work on Linux. When you buy a piece of hardware you usually hope for the best that it'll work out-of-the-box including all "extra" features.
So why is that? Why hasn't someone stepped up and even try and create a universal operating system API? Is it because the computer business is still a "child" in some way, compared to other industries?
Just a thought.
Glenn
Isn't this what POSIX was, albeit quite old now, but still a standard?
I think it's because computers develop too quickly to have it. Some of the other things you mention such as building materials have been around for years, even centuries, and are the way they are going to be. I think if someone developed a bright new way of creating aluminum ingots for instance, that the aluminum industry would be thrown into chaos because some of the "old way of doing it" wouldn't fit, just in the way the computer industry is now. When the computer industry settles down and quits developing so quickly then it will have a certain accepted way of doing things too. Of course then it won't be nearly as interesting, and I for one, if I'm still around by that point, will have to find something else to tinker with.
On Fri, Dec 18, 2009 at 3:26 AM, Damien Churchill <damoxc@gmail.com> wrote:
Isn't this what POSIX was, albeit quite old now, but still a standard?
POSIX and the SUSv3 (Single Unix Specification)
On 12/18/2009 01:26 AM, Damien Churchill wrote:
Isn't this what POSIX was, albeit quite old now, but still a standard?
imagine that: some people out there still think posix is THE standard and people should read the spec BEFORE reimplementing basics in the name of making things "cross platform". even windows gains more posix implementation every version. The only ones actually going slowly AWAY from the standard are the GNUs. -- Arvid Asgaard Technologies
For example slabs of aluminium have standard sizes
I would guess there are at least 50 different standards available for alu plates. But the difference to the computer world is, you can take any of that plates, drill a hole and mount stuff.
building materials have well defined specifications
With an emphasis on specification_s_. Sometimes it's troublesome to keep up with the changes (or complete overhauls).
So why is that? Why hasn't someone stepped up and even try and create a universal operating system API? Is it because the computer business is still a "child" in some way, compared to other industries?
Computers are still in it's childhood, i would say, too. I would say, if you create such unified API now, you would delimit the functionalty to the intersection of all hardware that is now availbale. If everybody would develop on this base, it would lead to restricted (and slow) software. (I'm no programmer, so i mighty be wrong here.) But i think we already have a big abstraction level in software nowadays. Think of Java or Python. Nobody has to write everything in assembler. I think things have to iron out themselves in the computer bussines. I read today about the computer simulation of the construction of the roof from the munich Olypmic stadium. The result of that calculations is on 600.000 punched cards. That was only 25 years ago. Now think of what long way metallurgy has gone in our history. So i think it is too early for hat. Most people even don't know, what they want from computers. Cheers, Fabian
There are things like that (think NDIS - it's Microsoft, but it's a step in the right direction), just not enough , but I think it's a question of time. -- catwell
Pierre Chapuis <catwell@archlinux.us> writes:
There are things like that (think NDIS - it's Microsoft, but it's a step in the right direction), just not enough , but I think it's a question of time.
And then there's the UDI (universal driver interface) (UDI), which Stallman doesn't like. I can certainly see arguments for both sides of that issue. As an aside, I interviewed for a job with MS last year. At some point, the device driver issue was discussed. One of my interviewers made the comment that a universal driver interface would be a bad thing, because it "reduces competition". I don't think that they like commoditized things at all. -- Chris
On Fri, Dec 18, 2009 at 5:31 PM, Chris Brannon <cmbrannon79@gmail.com> wrote:
Pierre Chapuis <catwell@archlinux.us> writes:
There are things like that (think NDIS - it's Microsoft, but it's a step in the right direction), just not enough , but I think it's a question of time.
And then there's the UDI (universal driver interface) (UDI), which Stallman doesn't like. I can certainly see arguments for both sides of that issue.
As an aside, I interviewed for a job with MS last year. At some point, the device driver issue was discussed. One of my interviewers made the comment that a universal driver interface would be a bad thing, because it "reduces competition". I don't think that they like commoditized things at all.
Was that a private joke or something ? :) The only thing MS has ever done or tried to do is killing competition. And who writes drivers ? Isn't it / shouldn't it be the hardware makers who designed the hardware in the first place ? And most of them probably invest 99% of the resources for Windows, and 1% for all the other os. Well it probably depends a lot on the hardware/drivers we talk about, so it is probably difficult to stay general. And to be honest, I probably don't have a good picture of it. But it just sounds like a funny argument to me.
Le vendredi 18 à 10:24, RedShift a écrit :
Things like enumerating all hardware devices, configuring a network interface, drawing a window, ejecting the CD-ROM drive, getting notified about new hardware plugged in, etc... It's different on every operating system.
Isn't it one of the goals of hal ? It does exist outside of Linux (in FreeBSD for instance: <http://www.freebsd.org/gnome/docs/halfaq.html>).
You cannot write a driver for Linux and expect it to work on FreeBSD. You cannot write an application for windows and expect it to work on Linux. When you buy a piece of hardware you usually hope for the best that it'll work out-of-the-box including all "extra" features.
If OS internals are to be so similar that they expose the same API to hardware drivers, where is there room for differentiation between two OSes? FreeBSD, to continue with "the unkwown giant", prides itself with writing a very well designed OS, whereas Linux (kernel & userland) does not have the same quality standards. As a result, things evolve less quickly in FreeBSD, but are usually more stable. I'm talking about the architecture of the code; when was the last time a major subsystem of FreeBSD was rewritten? (I mean, except the USB stack in 8). -- Fred
Le Sat, 19 Dec 2009 23:10:29 +0100, Frédéric Perrin <frederic.perrin@resel.fr> a écrit :
Le vendredi 18 à 10:24, RedShift a écrit :
Things like enumerating all hardware devices, configuring a network interface, drawing a window, ejecting the CD-ROM drive, getting notified about new hardware plugged in, etc... It's different on every operating system.
Isn't it one of the goals of hal ? It does exist outside of Linux (in FreeBSD for instance: <http://www.freebsd.org/gnome/docs/halfaq.html>).
The problem is that it's deprecated. But you have a point that the FreeDesktop initiative tries to fulfill part of those wishes. -- catwell
You cannot write an application for windows and expect it to work on Linux.
Java? The success of the language is based around the fact that almost every computer has the runtime installed, regardless of operating system. Does that not count as a global API? Laurie
2009/12/20 Laurie Clark-Michalek <bluepeppers@archlinux.us>
You cannot write an application for windows and expect it to work on Linux.
Java? The success of the language is based around the fact that almost every computer has the runtime installed, regardless of operating system. Does that not count as a global API?
Laurie
I can't resist to quote awarenetwork (http://www.awarenetwork.org/usr/?q=11 ): "saying java is good because it runs on all platforms is like saying anal sex is great because it works on all genders" :-) Manu
On Sun, Dec 20, 2009 at 7:52 AM, Laurie Clark-Michalek <bluepeppers@archlinux.us> wrote:
You cannot write an application for windows and expect it to work on Linux.
Java? The success of the language is based around the fact that almost every computer has the runtime installed, regardless of operating system. Does that not count as a global API?
Laurie
Say whaaat? Java? Girl, don't take it bad, but .. NO, or you want a bloated and crappy OS?. -- Angel Velásquez angvp @ irc.freenode.net Arch Linux Trusted User Linux Counter: #359909 http://www.angvp.com
2009/12/21 Angel Velásquez <angvp@archlinux.com.ve>:
On Sun, Dec 20, 2009 at 7:52 AM, Laurie Clark-Michalek <bluepeppers@archlinux.us> wrote:
You cannot write an application for windows and expect it to work on Linux.
Java? The success of the language is based around the fact that almost every computer has the runtime installed, regardless of operating system. Does that not count as a global API?
Laurie
Say whaaat? Java? Girl, don't take it bad, but .. NO, or you want a bloated and crappy OS?.
-- Angel Velásquez angvp @ irc.freenode.net Arch Linux Trusted User Linux Counter: #359909 http://www.angvp.com
Hey now, lets chill it a bit, I never said it was good... just universal. And on the anal sex point... actually, I think it'd be better for the convocation as a whole if we dropped that analogy. Laurie
Le lundi 21 à 18:57, Laurie Clark-Michalek a écrit :
And on the anal sex point... actually, I think it'd be better for the convocation as a whole if we dropped that analogy. ^^^^ Is that what they call a Freudian slip?
-- Fred
2009/12/21 Frédéric Perrin <frederic.perrin@resel.fr>:
Le lundi 21 à 18:57, Laurie Clark-Michalek a écrit :
And on the anal sex point... actually, I think it'd be better for the convocation as a whole if we dropped that analogy. ^^^^ Is that what they call a Freudian slip?
-- Fred
I never should have said anything *facepalm* Laurie
On 12/21/2009 01:31 PM, Frédéric Perrin wrote:
Le lundi 21 à 18:57, Laurie Clark-Michalek a écrit :
And on the anal sex point... actually, I think it'd be better for the convocation as a whole if we dropped that analogy. ^^^^ Is that what they call a Freudian slip?
I laughed. -- Arvid Asgaard Technologies
Laurie Clark-Michalek <bluepeppers@archlinux.us> writes:
Java? The success of the language is based around the fact that almost every computer has the runtime installed, regardless of operating system. Does that not count as a global API?
The concept is called "write once, run anywhere". An early example is UCSD Pascal, developed in the late 1970s. UCSD Pascal's P-code is somewhat analogous to JVM bytecode. There were implementations of the P-code interpreter for many early microcomputers. Perhaps UCSD Pascal would have been more popular if it weren't so expensive. IIRC, the IBM PC version was priced at $495. MS-DOS was cheaper. Java may be the most popular example of "write once, read anywhere", but it was not the first. -- Chris
On Fri, Dec 18, 2009 at 4:24 AM, RedShift <redshift@pandora.be> wrote:
Hi all
It dawned on my that lots of industries have standards and companies generally keep to them. For example slabs of aluminium have standard sizes, building materials have well defined specifications, or take electrical components: there's a huge list of standardized components. You can expect between 220 and 240 VAC from your wall socket, fuses have standard formats and ratings, 1 meter here is exactly the same as 1 meter in another country, etc... Even CD's, which have been around for decades by now, have always been created using the same format (albeit extended somewhat, over time, but a normal CD pressed now should still play in a CD player that's 20 years old).
It allows for a very competitive market where choices are made based on price, quality, availability, etc...
I look at it this way: an OS is a *tool,* whereas electricity, CDs and such are commodities, and need to be fungible. Tools are *not* fungible; the way you interface with a tool is very tightly coupled with the purpose of that tool, which is why you should never use a hammer to pull a screw. The abstractions OSs (and also programming languages) present represent what they're designed to do, so making a one-size-fits-all tool is worse than useless. The "desktop wars" and such arguments all commit the fallacy that OSs are a pretty shell over computer hardware, whereas they are (or should be) tools targeted at (more or less) specific solutions. -- Ryan W Sims
participants (15)
-
Aaron Griffin
-
Angel Velásquez
-
Arvid Picciani
-
Chris Brannon
-
Chris Brannon
-
Damien Churchill
-
Emmanuel Gras
-
Fabian Schölzel
-
Frédéric Perrin
-
Laurie Clark-Michalek
-
Pierre Chapuis
-
RedShift
-
Ryan Sims
-
sherryhowell50@gmail.com
-
Xavier