• Advertisement

Archived

This topic is now archived and is closed to further replies.

OS Lib - What Do You Think?

This topic is 6377 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

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

Share this post


Link to post
Share on other sites
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

Share this post


Link to post
Share on other sites
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

Share this post


Link to post
Share on other sites
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.

Share this post


Link to post
Share on other sites
Guest Anonymous Poster
I wish this were the case.

Share this post


Link to post
Share on other sites
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).

Share this post


Link to post
Share on other sites
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.

Share this post


Link to post
Share on other sites
Guest Anonymous Poster
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.

Share this post


Link to post
Share on other sites
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...

Share this post


Link to post
Share on other sites
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

Share this post


Link to post
Share on other sites
quote:
Original post by Chai Peddler

Just as DirectX handles a variety of hardware configurations, the protocol would handle a variety of processors and OS''s.


At this point, I have to wonder what you mean. A protocol simply means some sort of standard or formal method. Some of these were already listed above... are you trying to say that instead there should be just one, for everything? Why would anyone compile their C++ to conform to your protocol when they could just compile it for a target platform and have it run faster?

quote:

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.


Not really... although undoubtedly cards these days are built with Direct3D in mind, they are not physically built with D3D support as such, that is largely a driver issue. The driver model follows a protocol...

quote:

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?


Sure, but you''re avoiding all the real issues. Where would this support come from? Most PC gaming companies don''t care about non-Windows versions of their games as they don''t sell nearly as many copies. So they are unlikely to want to change their system. The OS manufacturers all cater to different audiences, and will not be interested in compromising to make some neutral grey mass of an OS. So they won''t be pushing it either. Most users don''t care what they are running providing it runs their software, so they won''t drive the revolution. Hardware manufacturers will also not necessarily make it easy... when a chip maker adds new instructions, if you can''t program directly in assembly you can''t take advantage of those.

I think that a combination of a standard programming language, and a cross-platform library is as close to a ''OS-independent protocol'' as is possible, given the state of computing in general.

Share this post


Link to post
Share on other sites
How about:
Bootable CD with Linux Kernel, MESA, a large set of graphics (and other )drivers and an autodetect feature, that automatically starts up your game when finished booting.

That way, it''s a Linux version, with the driver support for Linux, but it can run on any kind of PC hardware, because it boots straight off the CD.

[ call me realistic, but this is the only way I can see of getting somewhat close to what you''re trying to do... ]

Then you could build a tool that allows you to burn CDs like this, and program games for the system. The tool gets updated periodically, for new Linux kernel versions or something, and you can add new drivers as well.

The biggest problem: supporting LATER hardware. Your CD can''t be reburned for every new graphics card that comes out, so running an old CD on really new HW might cause serious compatibility problems.


Give me one more medicated peaceful moment.
~ (V)^|) |<é!t|-| ~
ERROR: Your beta-version of Life1.0 has expired. Please upgrade to the full version. All important social functions will be disabled from now on.

Share this post


Link to post
Share on other sites
That''s a great idea, MadKeithV!

I was just thinking... Some have mentioned Java, and how it is one step behind machine specific code, like a compiled C++ program, in that it is abstracted from machine code and therefore slower.

I have thought of an idea from this which seems much less ambitious than my previous idea.

Currently, a programmer compiles a program for Wintel, and additionally any other OS''s desired. The programmer/manufacturer burns CD''s containing compiled, machine code applications to run on Wintel, and other versions to run on other OS''s.

Instead, burn CD''s that contain source code and a compiler that will automatically compile to the user''s OS and machine. We can take existing (free?) compilers and modify them only slightly. The programmer can handle the details with a script and hardware/OS detection code, for the technologically challenged user. When the user clicks the Install button, the install program performs the extra step of compiling the source code.

One thought occurs to me to discourage this. Some authors may not want to give away their source code. However, any determined individual can reverse engineer an executable, anyway. Also, the programmer can discourage it by encrypting the source code. Copyrighting the source code protects the programmer''s legal rights.

CP

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

Share this post


Link to post
Share on other sites

  • Advertisement