Installing software should be a quick, painless operation, the installer should not assume the user has an internet connection. If the application requires libraries which are not included in the system they should be supplied with the install medium, be that CD, DVD, zip or binary. Under no circumstances should the system (and especially not the user) have to go looking for additional files or "dependancies", it may be OK if you are supplying software to geeks who like to roll their own but not if you also intend to target casual users.
Users and programs should be forbidden from changing system components. Changing components leads to problems like "DLL hell" where a program installed system library can cause program or even system failures. Malicious programs can also get in and change Libraries causing problems. By preventing users and programs from changing OS components any program which is installed can expect a specific environment in which to run and can test against. As indicated in the previous part of this series even if something could change a system component the system would automatically replace it.
Of course DLL hell can still happen when 3rd party libraries are involved. This could be avoided by allowing multiple library files with same name but different version. If one program wants version X they get version X, at the same time a different program asking for version Y can get Y - without conflicts (Microsoft .net can do this). Additionally the system should search for libraries in case they are in the wrong place.
Usability should even apply to development. Computer programming should not be a black art only practised by those in the know.
Many of the different platforms available in the 1970s / 80s had a version of BASIC supplied with them and many programmers started on them, unfortunately this is an example of a good idea which has been discarded. I would do the same and include a language for users along with examples and instructions to help them get started.
This would be the "default" language which could be used for everything from just playing around, shell & application scripting as well as full applications. The default language would not preclude the use of other languages of course but having a standard language would encourage development and if it's an easy enough language may even encourage non-programmers to try it out. I would most likely use Python for the default language as it has the specific aim of ease of programming and can be used for all the purposes I mentioned.
There is no logic in having different languages in different parts of the system unless there is a pressing need for them, there would be no other shell scripting language supplied for instance. Being able to program multiple parts of the system with a single, easy to use language will in my opinion, be highly beneficial. Again this is only by default, it would still allow other languages to be installed and used.
There would of course also have a default "performance" language such as C++ or Objective-C for normal developers in which I expect the majority of applications would be developed. I'd also like to see a good implementation of Java but I'd like to see it's rich class library be made available to the rest of the system.
Today usability is an important part of any system but it is far from perfect and hasn't even reached some areas. A new platform would give us the ability to spread usability into every area making the computer truly a tool for everyone, but not a tool which will can be sabotaged easily or accidentally.
It's easy to believe all the computer can do is what it can do today, but each new platform brings with it new possibilities and new applications. In the next part we go into how you would actually use a new system and the new flexible GUI I'd include.
This series is not meant to be a definitive description of the state of the art in any given field, I don't know everything and don't pretend to. If you know of technologies I've not mentioned that would be appropriate feel free to them in the comments.
References / Further Reading
[Proximal] The Proximal Interface
[Fitts] Fitts' law
[Case] Case Sensitivity
Cornell University HIG
Summary of The Humane Interface
Nielsen Norman Group HIG
User Interface Hall of Shame
User Interface Hall of Fame
© Nicholas Blachford July 2004
About the Author:
Nicholas Blachford is a 33 year old British ex-pat, who lives in Paris but doesn't speak French (yet). He is interested in various geeky subjects (Hardware, Software, Photography) and all sorts of other things especially involving advanced technologies. He is not currently working.
If you would like to see your thoughts or experiences with technology published, please consider writing an article for OSNews.