🎉 Celebrating 25 Years of GameDev.net! 🎉

Not many can claim 25 years on the Internet! Join us in celebrating this milestone. Learn more about our history, and thank you for being a part of our community!

OS Lib - What Do You Think?

Started by
11 comments, last by Chai Peddler 23 years, 9 months ago
I have been concerned about Microsoft's apparent monopoly with operating systems for some time now. I have an idea that I'd like to share, so please discuss. The particular issue I see as critical to OS liberation is the ability to make cross platform software. In other words, just as writing DirectX or OpenGL allows us to write one program to handle many video hardware manufacturers, apply this logic to the OS market. Many, many computer professionals and some regular PC users have complaints about MS Windows, and have had complaints for many years. However, it is not possible to run existing, recent software on alternative operating systems. Presently, software must be written for a particular OS, or rewritten for each OS (which is not common). I say create a common OS core protocol, which all major OS manufacturers can comply with and input into. Create an independent organization responsible for creating and maintaining the core protocol. This organization should be in regular contact with all major OS manufacturers, and not just Microsoft. So, what do you think? By the way, I don't mean to start any flame wars. Just dealing with the facts. CP "Can't you see it's only life! We can laugh about it!" - Seal Edited by - Chai Peddler on 8/27/00 9:10:49 AM
Advertisement
Well I think it already exists. Things like CodeWarrior for instance... Now if you''re talking about a _free_, _open source_ library which could be used to write programs for all major, I don''t know. I''d definitely like to see it, but it''s such a large project than it would require a huge community (like for linux) or a dedicated team. The latter would probably lead to a commercial product.

Anyway, I''m all for it
Forgive my lack of knowledge, for I am a newbie.

I am not familiar with CodeWarrior. If you mean CodeWarrior allows the programmer to compile a single program for multiple OS platforms, that''s great to know. Thanks!

What I''m saying is one step further, though.

Let me clarify my point. I would like to see a core OS protocol, which is basically an abstraction layer between the programmer and the various operating systems. So, instead of having CodeWarrior compile one version of my game for Windows 98, another version for Linux, a third for Mac, etc.., I could compile one version for this abstract protocol, and every OS can support this protocol and hence run my software.

In other words, when you go to your favorite software store, instead of seeing labels on boxes stating "For Windows 95/98" or "For Mac" or "For Linux," you''d see no such separation. Everything would be compliant with the independent OS protocol, and would run on every platform compatible with the protocol.

I''m thinking in terms of the end user, who sees 90 percent of all software compatible with Win 95/98. A great reason to buy Win 98... and thus a major contributing factor to MS''s monopoly, in my opinion.

So I could now buy the Linux OS and not be concerned about finding software that''s written for Linux. Or even Mac, or BeOS, or your favorite OS. All software would be compatible on all operating systems.

CP

"Can't you see it's only life! We can laugh about it!" - Seal
I agree that this would be a great idea to carry out. But like MuteAngel said, it would take cooperation from a lot of major developers and in this competitive business, stuff like that doesn''t happen a lot. Still, with the breakup of Microsoft to deal with their Wintel "monopoly", an API like this may not be too far off as other OSes slowly start to make their way back into the mainstream market. The OS API you want may just become as needy as DirectX was to uphold gaming on a major platform, or in this case, a number of major platforms. We can only hope right?

******************************
"I do not fear computers, I fear the lack of them"

- Isaac Asimov

Drew Sikora
Napali Networks, Inc.
******************************"I do not fear computers, I fear the lack of them" - Isaac AsimovDrew SikoraNapali Networks, Inc.
I wish this were the case.
Look up POSIX. It was intended to be a standard API to any OS. Many OS''s implement it to a varying degree: UNIX, Linux, and MS claims NT has a POSIX layer (though I''ve never seen docs for it).
This ''protocol'' exists, but in different formats.

POSIX is one mentioned by another user.

The C/C++ standards are another: program in standard C, and the ''abstraction layer'' of the compiler deals with making that conform to an individual system. Code is portable, binaries are not. In essence, the runtime libraries provided by Microsoft in Visual C++ are one implementation of the ''OS abstraction layer'' you speak of.

The Java runtime environment is one more: that executes bytecode which is the same no matter what platform you make it on. In this case, both code and binaries are portable. However, it can be slower than C/C++ or other compiled languages, because of the layer of abstraction from bytecode->virtual machine->cpu.


Perhaps what you don''t realise (as a self-proclaimed newbie )is that software is almost always compiled down to a binary executable format. The specifications of this are only minimally decided by the operating system, it is more defined by the instruction set available to the processor, whether that processor is 16/32/64 bit, etc. The OS specifics in the code itself are only a small part of it. Also, there are billions of different peripheral configurations: these tend to converge some way towards given standards, but also remain somewhat divergent due to technological improvements and competition. The only way that the OS is used in this sense, is that Microsoft made software and distributes it as ''part'' of their OS that provides an intermediate protocol to interact with all this hardware on your behalf, yet that software only runs on their operating system. This would be what they call DirectX. In essence, MS already provide what you are asking for, on a different level. Of course, they make it highly entwined with their own programming models etc, but they will not be interested in changing that.

If a 3rd party was to produce such software, eg. an API, that allowed direct interfacing with the hardware (again, the OS is not the important party here) that ran on several operating systems, this goes a long way to achieving your goal. There -are- several of these already in existence. However, since they don''t have MS''s billions funding them, they are taking a while to catch up. I believe Clanlib and OpenML are 2 examples, and I could find 2 or 3 more in a short time, I''m sure.

Of course, your idea is a little idealistic, as the lack of a protocol is what MS thrives on. If software was available on all platforms, how many people would willingly run MS Windows and endure the blue screens and crashes when we have Linux, BeOS etc available? (Hint: even if the average user didn''t know the difference, the computer vendors would certainly prefer to sell systems with the OS that results in lower support costs...) So, Microsoft probably wouldn''t comply with such a body if one came into being. And even if they -did-, I doubt anyone could come to any agreements on how to resolve several key philosophical issues, one example being the filesystem hierarchy.
As a former OS Developer for almost 7 year. Lets understand the reality here. Development of Operation System is a major task and to make a common libary is even harder. Like it or not, the most popular game libary came from Microsoft. Also dealing with an operating system ( compatibility reasons ) is 1000 times more difficult then any program ( game or not ). Why? Well lakes take a wacky program that find a new algorith with a keyboard interupt, this work in previous release but to it also needs to work in a future release.

So taking account that a OS libary would be difficult, what could be done. I think makeing a game development system that could both generate code ( for multiple platforms ) and have common support.

I am not from Microsoft but another solution is to write an emulation layor of Microsoft Direct X API for another system.
Isn''t that what the new Amiga is doing? I think they created an API that runs on Mac, Linux, and Motorola cell phones.... Doesn''t need recompiling.

And, isn''t Java (in it''s pristine pure sense) the same? You just send the .class file and Java VM runs is. Maybe Java is your answer...
I kept my post idealistic on purpose. Though, if truth be told, it can be done I am sure, with enough support in time. Anything is possible.

I do understand that every processor and configuration has its own machine language and architecture - ah, assembly language memories...

That''s no problem, I believe. Just as DirectX handles a variety of hardware configurations, the protocol would handle a variety of processors and OS''s. This might (I imagine) require hardware compliance from the hardware manufacturers. Just as Direct3D support must be built in to 3D graphics cards to allow Direct3D to do its voodoo.

As far as computer vendors seeking the cheapest OS... well, if enough support is garnered for this new protocol, they would be forced to include it, right?

In the meantime, when I get a chance, I''ll definitely look into POSIX and the other mentioned stuff.

Thanks all for your responses! Remember to laugh...

CP

"Can't you see it's only life! We can laugh about it!" - Seal

This topic is closed to new replies.

Advertisement