How will the future operating systems look like? How the user interface, the inner workings, the security policies and the networking will interact? In any case, innovation is the key.
If you visit OSNews once in a while, you will of course know everything about the present and about the future of operating systems. Somewhere between 2005 and 2007, Microsoft will release Windows codename Longhorn, and until that happens Gnome and KDE need to fill the gap between themselves and Windows XP. And if everything goes well, they will implement some Longhorn features as well. On the other side, we have the innovative Mac OS X. It is the user-friendliest computer system on earth, built on UNIX and has OpenGL acceleration of the screen.
Wait. Read that again, and think for yourself: how much innovation has there been and will there be? Let’s start with Gnome and KDE. They are mainly copying the user interface of Windows. Yes, Gnome places the application menu on the top of the screen instead of the bottom, and KDE has invented KIO. But almost everything else is plain copying. KDE even has the window buttons in exactly the same place as Windows. There is a reason for this. A quite simple one, actually. Most people today work with Windows, and when they make a desktop environment that behaves radically different, they are afraid they scare people so that they continue to use Windows.
But how is Windows doing? Is Windows innovative? This page says Windows is innovating, and says Windows is to the Macos what Java is to C++. That’s not entirely true: C++ was a bad fix to C, and Java cleaned everything up. On the other hand. MacOS was a clean, new implementation of a graphical OS while Windows was just a way to fix DOS. From that, we can say that Windows is to MacOS as if C++ had been invented as a reaction to Java. And when we look a bit closer: what things has Microsoft invented. They copied the overlapping windows. The Explorer is a copy of the Finder, while SMB is a copy of AppleTalk. Word was a reaction to WP and Internet Explorer is just an improved version of NSCA Mosaic. And there is a reason Windows does not really innovate: it doesn’t want to lose its market share, so it takes care not to scare users. When the Windows interface would radically change, they could switch to Linux just as well as upgrading to the new Windows version.
You might have noticed that Windows stole quite some things from Apple. So, are they innovating? In 1984, they were. The Macintosh was a nice new computer; one of the first (if not the first) home computer that was not character based anymore and had the mouse as a mandatory input device. Shortly thereafter, they invented AppleTalk, with which networking computers became as easy as plugging in the network cable. After that, only minor system updates have come out until Mac OS X was released. It was called innovative. But what does it do? It’s effectively a MacOS-like GUI with a UNIX-core, so in fact it does nothing more than combining two technologies, both being decades old. That has a reason, too: Apple’s marketshare is small, and in this way they can keep their former customers while they can also attract new ones: their OS is now built on the “proven reliability” of UNIX thanks to it being 30 years old. Apparently, they have not read the Unix-Haters Handbook, from which it seems UNIX was rather unstable even 10 years ago.
Does that mean the current operating systems are the best; that better is simply impossible? Most likely not, the most logical reason for the lack of innovation is the fear to loose market share by inventing something better, er, different. So here is my proposal: if you build an entirely new operating system, why not make it different from the ones that exist, so that it can try out ideas that might be better than the current ones, and it might even attract users, namely those who want a different operating system for a change, one with an identity. In the rest of this article, I will lay out such a proposal. I’ll need to see whether I have time to work on an actual implementation, but thanks to the nature it luckily isn’t necessary to start with the bootloader 🙂
1 Virtual machine
Nowadays new processors are being invented: the Itanium and the AMD-64. To take advantage of these processors, the operating system and all applications that run on it at least need to be recompiled and parts of them need to be rewritten. That is not very practical, something Sun realized when it invented Java. Microsoft has also seen this and started on the .NET project. Both these implement a Virtual Machine that can run binaries specially adapted to it. The advantage is that the same binaries can always run on the virtual machine, no matter what the host OS or the hardware is.
As this is very practical, I will take such a virtual machine (VM for short) as the basis of the OS idea. Not very innovative, I know, but rather practical. It makes the OS and it’s applications completely hardware-indepent and also has the advantage that the VM can first be implemented as running on another OS, so that work can immediately start on the VM and OS itself, without needing to code a boot loader and extended hardware support first.
2 The user interface
The user interface should be friendly and practical, both for the newbie as for the experienced computer user. Therefore, no POSIX compatibility is needed and no GNU utilities need to be ported. And why should they? In this modern world, we want to use more than text. We want fonts, webpages, flash animations, music, pictures and movies. The command line is not suitable for them, so a graphical interface (GI) is really necessary.
2.1 The general layout
However, this does not mean copying the GUIs of Windows or MacOS. They can namely be rather confusing. For example, most GUI’s has overlapping windows, which are confusingThe Xerox Star people already knew this and therefore didn’t allow windows to overlap. The confusing thing is the following: imagine you have two windows, say a maximized Outlook Express and a normal New Message window on top. When you accidentally click the Outlook Express window, it will look like the message you were typing is lost. Of course, it’s just hidden behind the window you just clicked, but that is not obvious. . The solution is to take the idea of the original MacOS even further: not only hide other applications when you activate one, but make all windows maximized instead. That solves the overlapping window problem and does away with the title bar taking precious screen space.
Now you will probably notice that drag and drop is not possible anymore, at least not between applications and also not between windows. That is not practical, because it forms a much more visual way of moving objects than the copy-past way Windows introduced. Therefore, the GI should offer a split-screen mode, in which two windows, can be visible next to eachoter.
2.2 Dialog windows
Of course, configuration and property windows don’t need the entire screen. Therefore, they can appear in smaller, document-modal (see below) windows. If you open one, the full-screen view behind it should be grayed out, so that the window containing the things you can do appears lightened up, so that it really gets your attention.
The appearance of MacOS 8/9 also has this effect, but it is lots more confusing because it makes no difference between windows that can’t be activated because of a dialog (as in my proposal) and windows that are plain inactive and can be switched to with a single mouseclick.
2.3 The widgets an sich
Nowadays everybody points out that Gnome should be used instead of KDE because it looks more polished, that you should use MacOS X because Aqua looks so cool and that Longhorn is even better because it provides hardware accelerated control drawing. Sounds great? It actually isn’t. Those fancy user interfaces waste precious CPU and GPU cycles, making your computer slower than it needs to be, thus making you work slower. In return, you are distracted from your work so that your productivity is even lower.
Looking at future developments, however, it seems to be rather practical to have a resolution indepent GUI. In that way, applications have no problems running on low-res devices such as a palmtop or a TV, while still being able to take advantage of high-res computer screens. To have something to brag about, the VM graphics system should offer nested canvases remembering their content, so that one could say that ” the new OS has a GUI in which each control is drawn with hardware acceleration”.
3 The document model
After having done away the windows, we should also get rid of applications, because they are also confusing. On Windows, you can open documents in two ways: from an empty application window and from the Explorer. The same applies to creating new documents, but strangely enough not to saving them. On the MacOS, that is also the case and it is even more confusing: an application can be active and running without displaying any windows. That means you see the desktop and the finder, but that the menu bar is different because you are effectively running another application. Those are enough reasons to leave the application model.
Instead, the only thing the user should see are documents. Nothing more and nothing less. When the user clicks a document, it is opened, and when he closes it, the document is closed. What software is used to accomplish this should not be visible in any way. The way this can be implemented is by making applications effectively applets (like KParts or OLE objects). When a document is opened, a new full-screen view is created and the document is embedded into it, along with the application.
3.1 OLE!
The advantage of the applet model above applications is that no seperate logic is needed to provide embedding documents – the parent document’s applet just needs to embed another applet into it, and for that applet it is not visible whether it runs full-screen or embedded.
For normal documents, data will come from a file, either on disk or embedded in another document. That’s the way it also works on Windows, MacOS and KDE. However, sometimes that is not practical. Imagine that you want to make a chart application. You will probably want to link the data to the spreadsheet it is embedded in. It should be obvious that would not work. Therefore, we need to create the GUI equivalent of pipes, so that you can use (a selection of) your spreadsheet data as the input of the chart applet. That can create powerful systems: functions like bibliographies and tables of contents can be placed in separate applets that can be embedded in the document they are used in.
3.2 DDF
The documents can be stored in any format – the applet can determine it. To make embedding more flexible, a standard output format should be made, however. For this new OS, it should be designed from the ground up – this to support a few important things for the embedding to work properly. The reason for this is that besides the well-known object embedding, it should also provide text embedding, to make things like Table of Contents-applets possible.
Embedding objects is easy. The host applet defines, within the DDF, a region containing a sub-ddf and pastes the output of the embedded applet within it.
Embedding text is more difficult, and that has a reason. With embedded objects, the host decides how large the frame is in which the object is embedded. With embedded text however, the applet needs to decide the size as you can’t just rescale a text. Additionally, it would not look nice if embedded texts would not have advanced features like, say, automatic hyphenation. A solution would be to let the host application decode the DDF the embedded object outputs. That is not a clean solution, however, as the host applet needs to sport a complete DDF interpreter.
I believe the solution can come from breaking a monolithic program into several applets. The usual word processor can be split up into two pieces. The first one will be for composing formatted text. Let it support feautures like word wrap and embedding of other texts. The other applet will do the layout: it will put the text (and images) into frames, possibly on multiple pages, supporting text flow, page numbers and so on. In that way, you can still edit complex documents, but you have more flexibility, and can use the same advanced text formatting in both the word processor and the spreadsheet program.
4 The Network is the Computer
In these days, networking has become an essential part of every computer system, be it a standalone PC, a file server or a mobile phone. Well, you are right, the dishwasher has no network connection… yet. So the new OS certainly needs to be network enabled. That does not mean that there is no room for improvement, however. We have the Static, DHCP and Zeroconf methods of getting IP adresses, NFS and SMB to share files, Cups, LPR and SMB to share printers, NIS, NIS+ and LDAP to have the same user accounts everywhere, and Remote Desktop, VNC and X for remote logins.
These existing systems work. Sometimes. After editing a lot of settings and configuration files. And that is not how it should be. When networking should be practical, it should be really practical, for everyone. After all, a home user wanting to take advantage of the network they have made for internet sharing, does not want to dive into the world of TCP/IP, DHCP servers, gateways, DNS and so on. They want a network that just works. And what would be rather practical, is if you were able to edit the same document no matter whether you are working on the desk computer, the laptop or the refrigator.
Such a thing cannot be accomplished easily. Rendezvous is a step in the right direction, but it is still bound to one single computer: you don’t instantly have access to your documents – you need to search through other computers for the resource you need and login to that computer before you have access.
4.1 The basic idea
This is a rather interesting question. Imagine you have a home network with two computers. On the one hand, you want to be able to login to both of them, even when the other one is down. On the other hand, you don’t want that a hacker can enter the network with his laptop and have access to everything. And in a larger network, you don’t want each PC to store all user data, as such a network probably does have a server running 24/7.
That does already imply that there would be two “modes” of operation: one for the home user, where each PC knows all accounts, and another one for centralized networks where a server knows them. In a perfect world, these two could be matched, so let’s look how that can be done.
4.2 Peer-to-peer and server-client implementation
In principle, each PC operates in decentralized mode. Without a network, that means that it has one user (with associated ID) that owns everything. If two such computers meet eachother, both will learn the user data from eachother. Now, you can login to both computers with exactly the same result.
In a larger network, a server can be added. In a similar p2p-method as with decentralized mode, the server information is shared (but only its address, not the accounts themselves). When someone wants to login now, first the local user database is checked and when there is no match, the computer will also look at the server. The latter will send the account information to the local PC, and if everything is right you will get logged in and have access to the network, most likely the printers and drive space attached to the server. Additionally, the account now exists on your local PC too, so that you can use it even when you aren’t connected to the network.
4.3 Account modification
The only problem left is changing your password, as the new password needs to be propagated through the network without allowing hackers to change your password. Luckily, for this there is a solution, too, and it is rather easy. The new password will have the old one “within itself”, so that the new password can identify itself. In this way, no hacker can change your password without knowing the current one, while you can do it. To solve the problem for when two password changes meet, the date of each password can be stored in the account. This also makes it possible to remove obsolete passwords after a certain amount of time.
5. The end result
Finally, it might be useful to look at the results of the proposal: is it innovative, and almost more important, is it useful and user-friendly?
I believe the proposed GUI does indeed break with the current tradition and does this in a useful way. Doing away the windowed interface seems going back, but removes something which is rather confusing for new computer users (and has no advantage over split-screen like windowing other than wasting space because windows don’t fit to eachother). Not having a too fancy interface is also a good thing, as it doesn’t distract you from your work and does not scare away people (yes, people fear Windows XP as it is different from 98/Me).
The document format, on the other hand, does not offer much more than Display PDF or something like that. Combined with the linking model, however, it becomes more powerful than what we have today, allowing to use pipes, famous within the Unix world, within a graphical environment, which serverely extends possibilities and reduces complexity.
The network model, finally, unifies the traditional, server-based systems like UNIX and Netware, and the peer-to-peer networks like AppleShare and SMB in one package, allowing for one consistent, interface for both types of networks, still powerful but also comprehensible for the average home user.
Though this proposal might never see a working implementation, I still believe it shows there is a lot of room for innovation in the current operating systems. So I hope that they will not only innovate behind the scenes (SMP support, NTPL, WinFS, …) but that one of them will take the step to break with the past to allow new concepts in, so that the end user will finally get improvements as well.
Overlapping windows are useful. For drag and drop, indeed. IMHO drag-and-drop is a clear way of doing certain things, as it is clear to the user what is moved from where to where.
The advantage of overlapping windows has little to do with drag & drop, it’s about maximising the amount of useful information you can get on the screen.
Newbies (generally) only use a single program at a time and mutliple programs can be confusing. The solution to this is the maximise function built into Windows (and others). You get all the simplicity of a single, full screen app without crippling the entire UI for advanced users.
However, for us advanced users that need to keep multiple windows open and visible at once, having to keep switching back and forth between full screen applications would be a nightmare. Only being able to see two applications at once on my two 1280×1024 screens mostly defeats the purpose of having them.
No overlapping windows (implemented at the GUI level) is a dumb idea, plain and simple. It offers no advantages whatsoever and has significant drawbacks.
However, for us advanced users that need to keep multiple windows open and visible at once, having to keep switching back and forth between full screen applications would be a nightmare. Only being able to see two applications at once on my two 1280×1024 screens mostly defeats the purpose of having them.
Then how about a system like the ION window manager (and the window manager of Windows 1.x)? You can have multiple windows at a time with them, because you can split each screen part as you like.
This also offers Power Users the advantage of being able to display multiple applications at the same time, and does have its advantages:
– It’s easier for newbies as they don’t need to maximize each window
– It’s easier for Power Users, as the screen space is always optimally used. Arranging your windows in the layout you can see at the URL below is easy using a split-screen like WM, while it is rather time-consuming on Windows and the like (sorry for the banner):
members.lycos.nl/daang/goed.html
The presented ideas in designing the OS of Tomorrow sounds a lot like PalmOS to me. So, there is nothing new.
I have the feeling that a lot of these suggestions are reinvented ideas and that a lot of software projects started with one of those magnificent ideas, but in the long run came to the conclusion that the basic idea didn’t work or that the project got to complex.
Let’s take KDE as an example. It used the browser as a basis to do most of the things in KDE 1.x series. But the browser was far from complete. The browser was redesigned in KDE 2.x and 3.x to do everything, but also the rest of the desktop was completely redesigned and added with extra functionality (kparts, kio, etc.). The Whole desktop became to complex for inexperienced users. And now they try to reorganize things to improve the usability in KDE 3.2.1.
But to really improve the situation you have to redesign the whole desktop again or loose some of the functionality. Both routes are difficult and so they are taking the easy route by reorganizing things.
I think the Palm(OS) is still that same simple device (/OS) it ever was, but the people want everytime something new to play with. Even when this new gadget is complex/difficult to operate, so they can or screw up or can show someone they can do something he/she doesn’t. That is the reason why people want Pocket PC’s nowadays.
Then how about a system like the ION window manager (and the window manager of Windows 1.x)? You can have multiple windows at a time with them, because you can split each screen part as you like.
Some people like these. Personally, I don’t – they’re inefficient because they waste screen space. Many windows I don’t need to be able to see *all* off, just the portion with the documentation I’m reading, or the bottom 1/4 of a terminal tailing a logfile, etc, etc.
Also, the early version of Windows wasn’t lacking overlapping windows because of a UI or policy decision, it was lacking them because it literally didn’t have the technology to handle them.
This also offers Power Users the advantage of being able to display multiple applications at the same time, […]
Not really. I can easily have a dozen terminal windows monitoring machines if they are overlapped and only showing a small part, but probably not even four if they had to be tiled – and that’s assuming I didn’t want anything else running.
– It’s easier for newbies as they don’t need to maximize each window
A default-maximise policy avoids this.
– It’s easier for Power Users, as the screen space is always optimally used.
No, it isn’t, because it makes assumptions as to which part of the window to display based on how the “master screen” has been divvied up. Not to mention unless you have *massive* amounts of screen space and can display multiple full application windows at once, you need to scroll within application windows, which is tedious and time consuming.
Arranging your windows in the layout you can see at the URL below is easy using a split-screen like WM, while it is rather time-consuming on Windows and the like (sorry for the banner)
Actually, with a marginally more intelligent “tile windows” command (one, say, that used the same algorithm as ION does), it would be trivial.
I don’t understand why you dislike overlapping windows, I really don’t. The one example you gave is only applicable to absolute beginners and is largely negated by the Taskbar, as it shows a list of all open windows. The negative aspects of not allowing overlapping windows – particularly for advanced users – far outweighs the miniscule benefits.
And what about an application like Mozilla or Word? Their toolbars take up space but can’t be moved outside the screen, because they are in the top of the window (yes, in KDE you can use Alt+drag but that is not really intuitive).
For your terminal: how about resizing it, so that it is only a few lines high? I believe all terminal applications can do this, even cmd.exe
And about wasting screen space: why should toolbars be displayed in inactive applications? You most likely keep them visible just because they are a reference (for seeing output of a terminal job, for reading help pages as you work). And in case you wonder: Apple/ClarisWorks does this since version 5.0.
So I think that combining ideas that never really caught on can produce something useful. Hiding the ClarisWorks toolbar didn’t really offer anything extra, and ION is inefficient with screen space. Now when you combine these things, isn’t the end result better than what we have now?
By the way, I didn’t say it were political reasons that Windows 1.0 only had tiled windows. By the way, what technology didn’t Windows 1.0 have? Its applications run even under Windows XP (see toastytech.com) – with window overlapping.
On the one hand, the author wants to use Java. On the other, complains that eye candy uses too many CPU cycles. Does this person know ANYTHING about software? Java has gotten faster over the years, but all the eye candy in the world isn’t going to slow things down nearly as much as basing the entire affair on Java!
On the one hand, the author wants to use Java. On the other, complains that eye candy uses too many CPU cycles. Does this person know ANYTHING about software? Java has gotten faster over the years, but all the eye candy in the world isn’t going to slow things down nearly as much as basing the entire affair on Java (or any other VM, for that matter)!
The author’s lack of basic knowledge continues to be demonstrated. The flaws are too numerous to list.
Everyone is entitled to their opinion about how OSs should behave, and it is possible (and useful) to write a detailed artilce about that. It is clear that the author has very little knowlege about the guts of hardware and software work. That’s fine! Write an opinion piece about the UI – just don’t pretend you know how to implement it.
Good programmers listen to user’s input about how they want software to work. We get turned off when they tell us how it should be implemented.
And what about an application like Mozilla or Word? Their toolbars take up space but can’t be moved outside the screen, because they are in the top of the window (yes, in KDE you can use Alt+drag but that is not really intuitive).
I’m not quite sure what you’re driving at here.
For your terminal: how about resizing it, so that it is only a few lines high? I believe all terminal applications can do this, even cmd.exe
Because then when I want to actually use the thing, I have to resize it again (and then when I’m finished, size it back down). Tedious, annoying and inefficient.
And about wasting screen space: why should toolbars be displayed in inactive applications?
So you can click through to them if you want to (ie: activate a button without having to change UI focus first).
I can’t see how it is a problem. The screen space of toolbars and menus in inactive windows is only “wasted” when you can’t use it for other things – ie: if you can’t overlap windows. In a system with overlapping windows, the only wasted space is the space you choose to waste.
So I think that combining ideas that never really caught on can produce something useful. Hiding the ClarisWorks toolbar didn’t really offer anything extra, and ION is inefficient with screen space. Now when you combine these things, isn’t the end result better than what we have now?
Generally, ideas that didn’t catch on, didn’t catch on for a reason. I can’t see how getting rid of overlapping windows is anything but a step backwards. I also can’t see how anything you’ve suggested just here will make a better end result than we have now.
By the way, I didn’t say it were political reasons that Windows 1.0 only had tiled windows.
No, but you certainly implied it was a deliberate, UI-driven decision rather than an unfortunate side effect of technical limitations.
By the way, what technology didn’t Windows 1.0 have?
It couldn’t overlap windows. I don’t know why off the top of my head, but if I had to guess I’d say it probably had no way of “remembering” what the portion of one window that was covered by another “looked like” to redisplay it when the covering window moved, or telling the application to redraw its window.
Its applications run even under Windows XP (see toastytech.com) – with window overlapping.
The problem (clearly) wasn’t in the apps, it was in the underlying display system.
You really need to explain your apparently religous hatred of overlapping windows. Certainly, the points you’ve raised thus far don’t warrant reducing UI functionality.
On the one hand, the author wants to use Java. On the other, complains that eye candy uses too many CPU cycles. Does this person know ANYTHING about software? Java has gotten faster over the years, but all the eye candy in the world isn’t going to slow things down nearly as much as basing the entire affair on Java!
Wait. Java’s biggest problem seems to be it’s memory usage. JBuilder5, for example, didn’t work nice on 64MB RAM, but when I upgraded my RAM to 128 MB it suddenly worked perfectly.
That argument about wasting CPU cycles is quite nonsensical indeed, but I still think that for example the XP Luna look is too busy and distracting. I have not really often used MacOS X so I cannot comment on that.
“For your terminal: how about resizing it, so that it is only a few lines high? I believe all terminal applications can do this, even cmd.exe”
Because then when I want to actually use the thing, I have to resize it again (and then when I’m finished, size it back down). Tedious, annoying and inefficient.
I don’t understand you here. When you have 10 terminals all partly hidden behind eachother and other applications, and then bring one of the terminals to the front, you need to click about half of them to re-order the Z-stack as it was, right? How is that more efficient?
Generally, ideas that didn’t catch on, didn’t catch on for a reason. I can’t see how getting rid of overlapping windows is anything but a step backwards. I also can’t see how anything you’ve suggested just here will make a better end result than we have now.
The reason Caldera DOS failed was because of certaion Microsoft business policy (making Windows 3 intentionally incompatible with it). The reason Video2000 didn’t make it was the price. And why do people use MS Office, even though C’T has shown several times that OpenOffice is lots better and even free? It really isn’t always the best idea that survives.
A little note: though I focussed mainly on UI, I did also think a little about implementation.
– Why not implement a real-time like scheduler, to prevent multimedia players from skipping and such things?
– Why not divide the OS in services (yes, I hear you, Mach)? With – unlike in Windows and MacOS – an optional GUI so that you can’t misuse, say, security flaws in the screensaver to gain root access.
By the way, someone mentioned PalmOS. I think we are moving in such a direction. The Tablet PC is already invented, and I think it will push the PC to becoming a more “everyday” thing – not only to write documents on for your work, but also for making quick notes etc. I think the OS should be adapted to that – simple and easy in everyday use, for everyone. Having only tiled windows fits into this scheme. I believe they make computer operating easier for most people, as it does away with the Z-stack. Maybe it makes the life of the Power User a little more difficult, but we aren’t all Power Users – in fact, most people aren’t. Here on osnews the majority probably is more compter-savvy than the average person.
And in case you are wondering how Power User I am: Hardware: I know what all components in a PC case do and how I can replace them. OS-es: Used DOS, Windows 3.1, Windows 98, Windows 2000 for years. I have also used Linux, NetBSD and FreeBSD for about the past two years as dual-boot. Before that, I have used MacOS Classic for years too. Development I know QuickBasic, Visual Basic, Turbo Pascal, Delphi and the basics of Assembly. OthersI can use PortUpgrade (FreeBSD) and can understand the files that form a port. On the Mac I understand a little ResEdit hacking (so that the Lemmings patch can work on the French version, for example) So I don’t believe I am a complete n00b.
Plain and simple…author did not do his homework before making many unfounded and inaccurate claims. Eugenia, please filter this stuff a little better in the future.