Project #2 - Amarant & Thoughts on Modern Computing

Published June 03, 2011
Advertisement
Computing these days is becoming a mess. On one side we have your standard desktop and laptop computers running Windows, Mac OS and one of the million other Unices available, then on the other side you have mobile computing platforms that are revolutionizing the industry. Yet all I've been reading is that there is no merger, no midpoint where we can have both in a comfortable platform. Microsoft is trying this with Windows 8 and while I think the Tiling Window Manager (which isn't revolutionary; Tiling WMs have existed for years) is a fantastic leap for Microsoft, I was appalled when I saw the screen switch back to what looked exactly like Windows 7 on a tablet. I've used Windows 7, and have found that compared to any previous version of Windows it was the most intuitive and powerful I have used. I do not however think it should be run on a tablet; the interface was not designed for touch. Some of you will try and say something along the lines of, "hey, but Windows 8 is supposed to run on a desktop as well, some without multitouch screens!" You're absolutely right, and I think that the classic interface of Windows seems to work well for that but I still stand by my belief that it won't be comfortable on a touch screen tablet.

I am not here to bash Microsoft though. Microsoft is making a bold move by trying to merge the two and I think somewhere down the line it needs to be done; I just think they're 'doing it wrong'. So I wanted to propose Amarant in this post. Amarant is a concept for an operating system for desktop and mobile computing platforms that I have been working on with a few friends for over a year now. When I say "working on" I don't mean that I've been coding the blasted thing; instead we've simply been brainstorming ideas for a modern computing platform that would allow users to someday worry much less about the differences between their phone and their home computer. Because of the time however my ideas my come out a bit odd, please try and bear with me.

The heart of the operating system would be the standard OS kernel. It controls normal OS tasks such as threading, IPC, memory management, etc. My personal preference would be to use a microkernel here, and keep the kernel separate from any and all device drivers, but in practice this is still a few years away from being optimal for overall performance. Above the kernel is a basic runtime layer. The runtime layer has many powerful apis for running tasks optimally across multiple cores, much like Apple's Grand Central Dispatch, and makes use of these apis in most applications where it is appropriate.

The runtime layer also provides a restrictive environment which developers would design software around. This restrictive environment encourages developers to define an application based on Data Sets and Operations rather than on functions. How does this differ from standard computing methods? Data Sets are a common set of structures and libraries that define how a user works with data. One example would be a phone number or an address. Both of these are Data Sets. These Data Sets can also be nested under another Data Set, in the case of a 'Contact' which may contain a 'Name', 'Phone Number(s)', 'Address', 'Email(s)', etc.

So I still haven't explained why this Data Set differs from a standard C structure or class. Honestly it isn't different internally, but what becomes different about it is that the developer is no longer spending so much time writing an interface that works on one device to work with this data. Instead, developers write an application consisting of Data Sets, Actions and Operations. Data Sets define what the user will interact with. The operating system then decides how to display this data to the user, based on the device and peripherals. If we're on a tablet with no keyboard or mouse, then the operating system knows to display a touch-based interface with the given data. It then relies on developer chosen Actions to define what happens when a user does something with the data. A developer may choose to allow Phone fields to be edited, deleted or added. Then what happens as a result of these Actions is defined in Operations. Operations can validate, query, or manipulate data. This can be a simple process such as checking to see that the phone number has 'x' amount of digits, or can be a complicated process of validating an address through google, pulling a map from google maps and displaying the map with directions for the user.

This really isn't anything revolutionary. The concept is more an extension of technologies already used in mobile and desktop platforms, but with a more restrictive environment. This isn't to say that the OS can't handle just about any application a modern computer can. What differs is the process in which the application and the OS interact. In Amarant, the Application cooperates with the OS by providing data to it, rather than directly to the user. The OS should know a more appropriate way to display data to the user than the application. The application also does not consume horrible amounts of resources to run. The core of the application is not a loop as in most other OSes. The core of the program is the Data Sets, the Actions and the Operations the application provides to the OS.

This does create a problem for video games though and seeing as how this site is tailored to game development primarily I wish to propose my ideas above with the hopes that someone is willing to come discuss their solution to running games in such a platform. In such a platform where most functionality is based on reaction, how should games be developed?

This will hopefully not be my last post about Amarant. I hope that maybe someone will find interest in discussing this project and will motivate me to continue writing about it on gamedev. Please leave any comments and/or criticisms below.

Thank you all for taking the time to read this,
-Wynter Woods
0 likes 0 comments

Comments

Nobody has left a comment. You can be the first!
You must log in to join the conversation.
Don't have a GameDev.net account? Sign up!
Profile
Author
Advertisement
Advertisement