I've been thinking to myself lately. I'm not pleased with the direction
computers are going. Windows still has the monopoly on the operating
system, Linux is still too complicated for the average user, and OS X
doesn't have the software array. Why are we doing this?
Here's a suggestion: a royalty free jointly managed set of standards
that computers in general should follow. This would include network
protocols (and which ones are used), operating system API calls, etc...
Programs would also be required to run in their own safe subset of
memory. Security would be first and foremost, making sure LUA was
required. Furthermore, software would only have access to specific
locations for modifying data. One would be a repository to save
configuration data for all users. The second would be a repository for
saving configuration data for a specific user. This could be hooked up
to a (reinvisioned) domain system, where a user could sit at another
computer, install a piece of software (say, MSN Messenger), and the
system would know to download and use the individual user's
configuration data they set up on another computer. To achieve this,
programs would be required to identify themselves with a series of
indentification fields (GUIDs, whatever). More on that below.
To install software (which would not require any steps involving the
location, etc...) a program would be required to identify itself with a
series of indification fields. One for the publishing company's name,
and one for the software name. A four party version would also be
embedded. Additional fields such as friendly names and friendly
versions (MSN Messenger 7.0 instead of Microsoft Messenger 7.0.1.244).
This would allow easy and completely secure lockdown of computers in an
enterprise setting (allowing a user to install / uninstall software
freely except certain subsets). To achieve this, some sort of central
jointly managed database of indentification fields would be created. To
allow your software to be distributed on this new system, you would
have to initially register it with this database. A cache would be
securely created on the operating system, and in the event that a user
tries to install software that the operating system does not have an
updated cache to identify, a newer one would be downloaded.
An open and royalty free system of DRM would also be estabilished and standardized (*groan*).
API calls to draw on the screen would also be standardized. A modified
form of WPF (Avalon)? This would allow any application to be run on any
operating system that used these specifications.
The file system would be reinvisioned and rebuilt, taking a lot from
WinFS. The idea being that all a user's music would be in one place,
all a user's documents would be in another, etc... This goes along with
a standard way of saving program configuration data (above).
These standards would be managed and updated. Operating systems would
be built in such a way that an updated set of standards could be
downloaded and installed. Software would have to identify themselves
with what version of the standards they work with, so the operating
system wouldn't install incompatible software.
There's much, much, more. These are just a few of my ideas. The idea
being that instead of any company relying on a monopoly in a certain
area, they would have to compete with good, old-fashioned, competition.
MIcrosoft Office could be used natively on any operating system. The
only need to recompile would be if a native application was needed on a
different architecture (32-bit to 64-bit). Obviously developing in .NET
would remove this issue

.
So, there's some of the things I've been thinking about. Computers have
matured so much in the past few decades, but it seems as if we're still
clinging on to the same system. Anyone have any thoughts?