OK... to answer your questions, in some semblance of similar order... no, it isnt JUST Windows. BUT... Windows has more similar issues than any other OS I have ever used - and I've used virtually every Apple OS, numerous Commodore OS's, every version of OS/2 since v2.0 beta, every version of Windows since 2.?, numerous versions of Linux, AIX, SunOS, Solaris, various versions of Netware...
Heck, Apple changed both their hardware (drastically) and their core OS... and still maintained backwards compatibility to a FAAAAR greater level.
If you add all such
problems up from EVERY other OS (excepting Linux), MS *STILL* has them all beat. Now as for Linux, it depends on the distro... it's not a matter of incompatibility due to stupidity (as it is in MS's case), it's a matter of different libraries/code being compiled into a distro.
Now as for Windows, while all your programs may work, I have run into the exact opposite - too numerous times to count. Most people wont run into that problem as most people upgrade their software, or purchase software for their new machine (which has already been updated to run on the new version of Windows)... but that isnt the case for a lot of people who like to hold on to that old copy of _______ (pick a program) and re-install it on their new machine.
As for examples, when Win95 was in beta, Lotus SmartSuite and WordPerfect ran (the Win3.1 versions). There were a bunch of issues for them once the final release of Win95 came out. WP and Lotus had to scramble to come out with updates. As for more current examples under WinXP, I love to play Final Fantasy VII - but it acts quirky, or doesnt run, or doesnt install without a lot of hassles, doesnt access the sound subsystem "properly" (because things changed in the APIs), doesnt access the graphics/screen subsystem properly (same reason)... or lets move a little further forward. Norton AV and Norton Internet Security didnt work under Vista until an update came out. This was again a last minute thing - which required Symantec to send us (at CompUSA - which is where I worked at the time) a re-written/fixed version until they could get disks made and shipped to us. Every AV company was in that same boat. Even various portions of Office 2003 were prone to problems (but at least got updated during automatic updates) - while older versions had even greater issues. Many accounting packages (which dont make any special system calls) also wouldnt run on Vista - and the list of games having issues because they "broke" things in the DirectX subsystem (and elsewhere) is pretty big as well.
Other OS's strove for and achieved
far better backwards compatibility. OS/2, even with numerous changes, will still run virtually any OS/2 1.X software (and that's after IBM re-wrote most of OS/2 for the 2.X and 3.X releases). As another example, under OS/2, IBM updated a lot of the REXX subsystem - but still maintained backwards compatibility... for instance, they added Y2K type results for some of the calls that were previously non-Y2K compliant - yet the old calls still worked - AS EXPECTED - with the same exact results that previous versions would produce.
As an end user, you may not run into that problem... as a tech in the field who has seen sometimes upwards of 20 machines in a day, I ran into that problem (on Windows) frequently. As someone (not me) coding wrappers in Odin, they have to be aware of such problems and write work-arounds as needed.
As for your other suggestion about a different method of writing Odin, I think (my opinion) that the method that they are using is probably easier... at least they have something to start from... then find the inconsistencies, and work around them.
As for MS apps, one BIG problem is that MS often uses undocumented APIs... they have been in court here and elsewhere because of that (and lost cases in the EU because of it). It gives them an edge over their competition (in that they can use faster and/or better APIs to do the same things that their competitors cant), but makes getting many MS apps working via Odin a massive task.
As for this:
So if we assume that the API works and if we just remap the calls to a way that OS/2 understands verbatim, we wont break anything, right? Because we aren't changing it, we are just making sure it all gets interpreted, right?
No... OS/2 will (virtually) always do things the EXPECTED way. Windows does NOT. I'm not MS bashing - though believe me I could... it is just a fact.
As for Windows running and running well, I think you must be kidding yourself there... and if you think you aren't then answer this question... and lets use Windows XP as an example...
Why does XP require 5 times the hardware WinNT 3.5 needed?
- OS/2 will run on a Pentium 1 STILL
- Linux will run on a Pentium 1 STILL
- XP with it's necessary fixes and updates needs a high-end PIII to a P4 to get the same performance that NT3.5 gets on a Pentium 1.
My laptop is running WSeB v4.52 CP PF 2 (latest Warp Server) - it was originally a PII 233... it is now a PII 300. EVERYTHING (except Mozilla - which is a Windows port) runs blazingly fast. I can even watch movies on it.
Here's a bunch of the problems... much of the code in Windows was bought or "acquired" elsewhere... from what is evident in just how the APIs are set up and keep changing, instead of adding functionality, MS often writes kludges to get different functionality - which changes things vital to some apps, and slows down the system. MS actually has written maybe 5% of their software catalog... bought or acquired the rest and been modifying them from then till now.
Now, lets get to OpenOffice... unfortunately, as a (mostly) Windows port, it isnt nearly as fast as it could be on OS/2 - Describe for OS/2 and Maul Publisher shows the speed a word processor should work under OS/2. And even on Windows, MS Office has a big advantage (calling APIs from DLLs loaded with Windows - often undocumented ones that the OO team couldnt use even if they wanted to - which from what I understand, they dont - it would break cross platform compatibility).
Ever wonder why many Windows programs are so much larger than Linux or OS/2 ones? Simple. If I want to write an OS/2 app, I can simply call OS/2 to do a ton of the work... and it will run on virtually any new version with very little care on my part. Yeah, if I call an API from WSeB that wasnt in the earlier releases, it wont work... but it WILL work on every new release. Hence, places like Hobbes have ancient programs (a decade or more old) that will still run - even with numerous changes to OS/2 - because IBM put effort into NOT breaking APIs.
For instance, I want Office XP/2003 (hate office 2007, probably a shitload of dependencies on other MS APIs (.net framework maybe?)). Instead of a WINE type API solution to it, would it be easier for someone to somehow compile custom .DLL and .SYM files in a little Odin Office XP/2003 package? What then? Does the current Odin environment load it through its PE.exe using the new .dll and .sym files? If this approach works for one app compiled by one guy, and another person wants another app but it shares some files, wont there be overlap?
No... that would require knowledge of the APIs (including the bugs), and re-writing them. The result would virtually be re-writing the entire app. And worse... many MS products use undocumented calls to Windows that seem virtually impossible to track down and/or duplicate. You correctly see the problem with Office... but it isnt just .Net API dependencies... it's also stuff they migrated into the core OS code. And that is going to get worse. MS has filed a few patents just recently for their new advertising framework. This new advertising framework will allow them to advertise to you more accurately by spying on everything you do - whether it's creating a Word document, using email, web, instant messenger, Excel, or any MS Live service. To do that, a lot more stuff is in the core OS, so that what you type can be indexed and sent to MS so they can profile you. Some component updates are already hitting the automatic updates. They have even back-ported a bunch of them to XP (since Vista isnt selling as well as they hoped).
So... how do you get an app working through Odin that requires (often undocumented) APIs that have been migrated into the OS's core DLLs? I dont know. Is it many APIs? I dont know... but it just takes one.
Windows runs. It runs my programs, all the time, without issue. Office always works. AIM always works. Photoshop ALWAYS works. As a matter of fact, I almost never have program crashes (Notable exception, Lycos Sonique 1.96 but I love it anyway). Now, If i were talking about OS/2 and its performance, well, this would be a different story entirely...
Get an older version of Photoshop, try it on Vista. Get an older version of AutoCad... (depending on what version) try it on XP or Vista. Get a year old copy of TurboTax or QuickBooks and try it on Vista. Get a BRAND NEW HP from the original Vista launch and try to use the web cam with anything but the specialized HP Software (wont work). Get a multi-function printer from the Vista launch days and try to get anything more than printing working (wont work). Get various network cards from the Vista launch period (wont work). ALL required code updates to work on Vista because MS changed or broke things. The picture isnt as rosy as you think. If you have XP... yeah, the stuff out there will run... 6 years have passed... any issues in the software have been fixed. With Vista... well, I covered that. If you got XP when it first came out, you would have run into the same problems many Vista immediate buyers ran into.
As for performance, Windows still doesnt touch OS/2... in any configuration - with one class of exceptions... and that is certain Windows ports on OS/2 (OpenOffice, and Firefox for example). Netscape 4.61 FLEW on OS/2 compared to it's Windows counterpart.
RANT below:As for bashing MS... that's easy. They INTENTIONALLY force upgrade cycles. Soon, if their pressure on game vendors is successful, you will HAVE TO get Vista to play games... WHY? because they changed some things in DirectX and added some other things - and are trying to force game vendors to write to those changes only (forcing users to buy Vista so their games will run). Some of those changes to VERY OLD EXISTING APIs are why games as recent as this year dont run properly under Vista - MS is trying to force the game developers to re-write for Vista, hoping they wont write two "versions" (one for XP, one for Vista), hence driving Vista sales.
They also have tried "working" hand-in-hand with hardware manufacturers and hardware vendors (like CompUSA) to get US to push their newest OS with the understanding that they would in turn push hardware sales by understating the hardware requirements forcing users to come back in for upgrades.
And no, that's not speculation or fabrication. You ever try to run Vista, or XP, or 95 on it's "Minimum requirements"? They know those requirements are understated. As a matter of fact, if you find the first release of Win95, you will see that the boxes said "4MB of RAM required" - which was an OUTRIGHT LIE. They later changed the boxes to read 8MB. We had a tech video conference call with them (when I worked at CompUSA) before it was released (but after we had gotten in palettes of the "mislabelled" boxes). It went something like this... we, the techs were pissed with the games they were playing... The Win95 Software Manager (Ballmer I think?) and another MS stoogie were on the video call (one way video from them, two way phone to all the stores on a call-in basis that every store could hear). So, my managers put me up to asking them the questions that MS was lying to the public about...
First call... (paraphrased)
ME: "Why are you telling customers that Win95 is a true 32bit OS?"
MS: "It is true 32bit"
ME: "No, it is really DOS and Win16, and some Win32 calls grafted on top through a thunking layer."
MS: "Well, the customers wont know that. So it doesnt matter."
ME: "So you expect us to lie to them too?"
CLICK... end of call.
We tried calling back, and they had blocked our number "The CompUSA Video Teleconference you are trying to access isnt valid" - we tried multiple times... then my General Manager (who was enjoying this immensely because he wasnt too fond of having to perpetrate MS's lies on our customers) dialed it from his line and passed me the phone (his line went through).
ME: "So, your Win95 box says that it needs 4MB of RAM... thats outrageous. It needs at least 8MB"
MS: "Yeah, we know, but you all should be happy, it means you will get a lot of people coming back in to get upgrades"
ME: "So, we should lie to them when they come in to buy it, and then rip them off on upgrades the box says they shouldnt need?"
MS: "You'll make lots of money in upgrades."
ME: "Well, we arent in the business of lying to our customers or ripping them off. And us techs dont make more money from lying to them - even if we were willing to."
MS: (nastily) "What store do you work for and who's your general manager?"
ME: "His name's Todd, and he is standing right next to me... this is his line I am calling on. Why, you want to speak to him? I'll gladly put him on for you."
MS: "No..." CLICK
So, when some of what us OS/2 users says seems like MS bashing, it's often more accurately annoyance from being burned by MS from just that type of attitude. When it comes to OS/2, I have found that I can run it on less hardware than required - and because of the way it handles resources, I can run apps that require more resources than I have (for instance, when my Thinkpad was a PII 233 with 192MB of RAM, I was running Win98 under VirtualPC to play Sim City 3000)... VPC needing 500MB of RAM, and a processor at least twice as fast... yet OS/2 still ran it. I run WinXP in a virtual session on this machine - even though it has 200MB less RAM than VPC says it needs. I have Opera, Firefox, AVG, and quite a few other apps installed on it... it's about as speedy as XP on a similar clean box... OS/2 is just that much better at handling resources.
And I LOVE the fact that when eCS 2.0 comes out, every machine I have is far more overpowered than I need (even though some are quite ancient by computer standards). Heck, my webserver is only a Quad Xeon 550MHz... and I've successfully done load testing on it that shows it can handle over 3 million requests a day (with every one of them requiring server side scripts AND MySQL calls AND dynamic pages being built).
Don't get me wrong. Windows is great for a lot of people... I dont mind a little work to get a system running. Or a little work to find a suitable app for OS/2. My point in this one is that (even if Windows could handle such a load) Windows could NEVER handle that load on such an "underpowered" CPU with XP or up. And there are no fixes coming out for NT or 2000... so I would be FORCED to upgrade to XP - or more likely Vista/Server 200#.... and then be forced to upgrade the hardware just to keep the same performance/load capabilities... and then be forced to upgrade IIS (since the older versions for NT wont run on Server200? or Vista). Viscous cycle. Not for me.
Most users replace their machines every few years. This isnt an issue for most users... so DONT mistake this as a rant against other's choices - in OS's or hardware. Yeah, I may keep my gaming machine pretty state-of-the art... but my programming machines are 900MHz, 1GHz, and 300MHz... and will be replaced if and when they die... not before. I like to CHOOSE when I need to upgrade my hardware & software - yet still be able to upgrade my OS
without having to upgrade the hardware and apps.
I know all of that is very long winded, but I was trying to point out (and hope I have) that what a lot of alternative OS users (Mac, Linux, OS/2) say isnt bashing against Windows USERS... it's being upset over the choices (or lack thereof) that MS leaves them.
-Robert