Path: utzoo!attcan!utgpu!jarvis.csri.toronto.edu!rutgers!cs.utexas.edu!uunet!mcvax!ukc!stl!stc!datlog!torch!richard From: richard@torch.UUCP (Richard Nuttall) Newsgroups: comp.unix.wizards Subject: Re: What kinds of things would you want in the GNU OS? Keywords: GNU OS features kernel fun! Message-ID: <350@torch.UUCP> Date: 6 Jun 89 10:32:30 GMT References: <106326@sun.Eng.Sun.COM> Organization: TORCH Computers Ltd., Cambridge, England Lines: 76 No one has yet mentioned the User Interface. I think that considering the User Interface component of your system at the earliest stage is essential. (Or do you intend just to give everyone VT100 emulators and SHi 8-| ). Points to consider: 1) What UI are software developers going to use on your system? 2) What low-level primitives could you provide in the OS that will make UI development easier? 3) Do you want the machine to boot up directly into a fancy graphical interface rather than the standard console? 4) What languages are you going to provide for the users? Will the choice of languages have an impact on how you write the OS? 5) What graphics system are you going to provide? Is it going to allow code to be ported to/from it? Here are some of the answers I would like to see. 1) The system will use a widely available UI, which will be bundled in with the system. This will consist of (e.g. X, with PEX), as a portability layer, and a UI style on top (MOTIF? but this would probably cost money :-) ). Something like what the NeXT machine came with. 2) If you are going for X, then there are several low-level primitives that would help considerably. a) Very fast context switching, so that Server and Client can swap quickly. (This would obviously be of great benefit elsewhere). b) A fast IPC mechanism, that can cope with large amounts of data (e.g. a 1024 X 1024 X 8bits Pixmap) 3) The "average" user is not interested in the console, and wants to have a powerfull interface immediately available on boot up ("O.K., so configure the system" I hear you say). If you always have this interface available, the OS can use it to communicate with the user, i.e with popup menus, message boxes, dialog boxes, and configuration panels. 4) Presumably you will provide C (GCC ? ). How about G++ as standard. Now you can go further. How about a fully object oriented standard library, (with C header files for those that don't want to use C++). File IO, for instance can be based around the FILE object and its methods, this in turn has the low-level file IO object as a parent in the class hierarchy. Windows, menus, message boxes, scrollbars can all be such objects. Again, the NeXT machine gives you some idea of what I want. But, don't go as far as the Mac, in removing terminals, etc! I still want to be able to type a command occasionally 8-) . 5) Using X/PEX will make things fairly portable, but, this clashes with my wish to have everything object oriented and in C++. I don't have an easy answer here. My preference would be to allow a C interface, but to encourage C++ and an object oriented approach where possible. Footnote: I know it is possible to program in an object oriented manner in C, but it is hard work and not very pretty (Just try writing an X11 widget!!!!!). -- Richard Nuttall | ukc!stc!datlog!torch!richard Torch Technology Ltd. | 0223 841000 X 309 Cambridge England |