For years now, I’ve been looking (on and off) for a GUI/shell/operating system/database/CMS/what-have-you that would suit my preferred way of working on the desktop, regardless of the operating system. So far, I have found little that even approaches it.
So I’m posting this short specification here in the off-chance that some developer may find this, who knows about these things and might be able to tell me where I can find what I want, or be inspired to create something along these lines, or tell me why the idea is impractical so I don’t waste any more time thinking about it.
If anyone is interested in this idea, please get in touch. If it could ever be developed into anything, I’d be more than happy to help write the full spec.
1.Regardless of what follows, the user is still able to run conventional applications for the OS in their conventional ways. However, this may enable a different way of writing applications.
2.Everything in the environment that is user-accessible in any way, whether software, hardware, on the computer or in the cloud, is an object that can be exposed to the user on the desktop (and there will be multiple desktops to expose them on). By everything, I mean everything. For example:
- Files, including documents, spreadsheets and so on
- System devices and configurations
- Programs and scripts
- Web pages, emails and other communications
- databases and database objects
3.Every object in the above (where it is meaningful) has a class object that can also be exposed on the desktop and used to create new instances of the objects above.
4.The desktop has method(s) (for example, right-click menus) that enable the user to bring any of the existing objects or classes on to the desktop, or to create new objects or classes where this is feasible.
5.Every object has a set of methods that represent things that the user can do with this object, for example, read, edit, play and so on. This set of methods is accessed (say) by a right-click on the object on the desktop. The user can create a new method where this is feasible (if necessary by programming a new use of that object). (This is not all that different from what you can do on the Windows desktop already.)
6.Every object can have an indefinite number of independent associations with any other objects in the environment, where these are meaningful. These associations can be represented and defined graphically. Some of these associations may be built-in, others are user-definable. For example:
- The underlying file system is a built-in association between objects
- A user might be able to define a notebook, and then associate a variety of objects with a page of that notebook, say a few documents, some emails, some web pages and a program all related to a particular subject
- The user could look up the emails, above, together with a number of other files all associated through having been received from or written by a particular person
- Some objects could be defined as personal, others related with different aspects of work
7.An association is, itself, an object.
8.Methods can be put together in sequences of execution, macro fashion. Such a macro might itself be an object.
9.Export and import can be to and from XML files.