I always think the separation in application vs data storage vs operating system to be a little weird. It get weirder as you consider Ajax blurring the line between client-side application and server-side web-application (not that Ajax is particularly clever, IMO, but that's another story). The thinking goes: you run an application on the operating system. You use the application to open and manipulate data. You save your changes back into the operating system (file system). The operating system manages the file system as well as various library functions and hardware interfaces which the application might make use of. The holy trinity of desktop computing: operating system, application and data.
The thing is that this separation is wholly artificial. I admit that there is some merit in it's simplicity - as Pirsig would have it, the intellectual scalpel cuts cleanly here. The corporate advantage is that it leaves the door open for application-builders to develop their applications and sell them. However it does start to break down towards the edges, and I believe it is now really starting to show it's faults.
The downsides stem from this separation. Take auto-save as an example. The functionality was a god-send to so many who had forgotten to save when a crash had happened. The crash would wipe all data since the last save. At least auto-save would improve the frequency of making those saves. However, the auto-save was a hack to get around the separation between the operating system and the application: instead of integrating more closely with that file system we get something which, in effect, polls quicker. The problem was that the operating system hadn't supplied the libraries to help fix the problem. If the operating system was to maintain the data storage properly it must be responsible for all reads and writes. This security is crude, particularly on Windows, but even on other systems only really serves to demonstrate the separation.
I once asked a programmer friend how many interpreters he'd written - he said, 'none'. I pointed out that all programs which act upon data are interpreting it and are hence interpreters. When I asked again his answer was now, 'loads, but..', he was still unconvinced. I maintain that any data is really a set of instructions to an interpreter, we just choose to think of it the other way round - data vs application. Think about almost all modern operating systems: the programs themselves are held as files, as well as the data. It's not too hard to think of a Word document as a set of instructions which are interpreted by Word to render a document. The editor is just a fancy programming environment, further blurring the holy trinity.
There used to be lisp machines that held the whole shebang in one 'environment'. There was no operating system in any true sense, instead the systems comprised a complex web of function calls. The functions were themselves the data (at least nominally, but that's also another story), which could in turn be operated upon by other functions. Within this, 'saving' wasn't necessary because the system automatically persisted itself to whatever long-term storage medium was available as necessary, effectively the swap-disk was the long-term persistence. These systems were, on an intellectual level, a structure which the user interacted with. The blur here is almost complete - there is no difference between any part of our modern holy trinity.
There are a number of systems here which demonstrate a blurring of the sharp definitions of operating system, data and applications. I think the next step is to contemplate an environment similar to those lisp machines, but updated for today's audience.
The new environment would be a graph of 'objects', linked together and intrinsically persisted to whatever storage medium was necessary - just like the old lisp machines. Further, this environment could be networked into other systems - creating a worldwide, peer-to-peer operating system. Objects can be free to roam around this network thus moving closer to where they're used more.
To stop virii and crackers, the environment would implement security at the level of object-dispatches, passing a priviledged context in which the call is made. In old Lisp machines I'm sure the resources were not available for this, in unix and other operating systems the file system has a complex set of user permissions. This is just a step further on, inside the functionality itself.
Now, to visualise this massive amount of information, I suspect a full 3D environment would be necessary (or at least an interesting and fun idea). This would have to be created to show and hide detail as necessary depending on the level of skill of the operator. Linking environments together now becomes one of spatial geometry.
Finally, the corporate angle? Hardly the point, I know, but worth considering. Firstly, there must be objects to interface to hardware. Secondly there will be objects which can be used as user-interface artifacts (word processor, spread-sheets, etc) but remember that these interface with other objects - hence standardising all 'file formats' (which wouldn't really exist any more).
A brave new world, where there's just you and the environment. What will happen to religion then?
Monday, January 16, 2006
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment