The Brief
To create a minimal operating system which is a nice
alternative to existing mainstream systems.
The Goals
These are the intended features of NOUS.
It is required that the system:
- is simple enough to be understood, maintained and
modified (to a reasonable extent) by the user.
- is fast, small, efficient, elegant, clear, well-integrated, exposed.
- has a quick startup: ideally just a few seconds of
booting-up, with a return to ones previous session.
- is configurable via text tables, though has no textual
redundancy (eg. a menu list has only one form, in one location).
- has its documentation integrated and hyperlinked (not via
a separate help system).
- is pleasing and aesthetic in its interface & presentation.
- has programming & scripting via a highly efficient PostScript/Forth-based
language.
- uses the current minimum standard of 32-bit processing
and flat memory (which have been available since 1985).
This version is Intel-based.
- is suitable even for 80386 computers, eg. only 2 megabytes of RAM
and a 40 MHz chip; it should take advantage of newer systems for their speed &
extended machine-level functionality, and not burden them with trivial/cosmetic
enhancements which bring overall performance back to mediocrity.
This also addresses hardware redundancy, a wasteful symptom of the modern computer
industrys pace.
- is linear tasking, or multi-scheduled only simply (for known background operations,
and when this does not jeopardize users realtime needs).
- runs connected batches of small programs, rather than single giant ones.
- has a single (primary) user and no outside connections except to peripheral devices;
though distinct multiple users of the same computer are catered for.
A multi-user networked or periodically synchronized version might
lie in the future.
- is secure with regard to intellectual property.
- is not for entertainment (eg. it can control a good DVD player,
rather than be a mediocre one); it is rather a tool for the mind.
Thus it would seem that NOUS is not for everybody.
- has an easy interface for control of external devices,
and good realtime capabilities.
- does not take control of the user, but the user is in
command of a sophisticated tool.
- does not require fussing with tiny moves and multi-clicks of a mouse; nor fussing
with resizing & shifting of windows to see behind them.
- shouldnt always need context-sensitive menus and options:
functions and behaviour should be obvious, logical, natural.
- does not clutter the screen with instructions aimed only at first-time users.
- executables live side-by-side with their description & documentation.
- uses fresh and meaningful metaphors of interface: document not desktop;
glyphs not icons; fancy text not labeled pictures.
- can handle all basic aspects of document text production
(a native PostScript helps with this).
- can create, use and convert between various graphical formats intuitively;
eg. a font can be designed, typed with and used as part of an image, without
needing a series of partial and lossy conversion utilities.
- uses basic HTML as a key model for the document concept.
General Comments
Operating systems are traditionally viewed as being difficult
to design, create and fully administer, mainly because of the following issues:
- multi-tasking.
- multi-user & networking (shared resources).
- discontiguous files.
- programs larger than available memory.
- putting external black box modules into memory
(eg. object libraries and DLLs).
- being compatible with both new and existing technology.
- fulfilling trivial or imagined user demands.
- higher & higher levels of programming and design (OOP, components, UML, etc)
- desire for over-fanciness & complexity for their own sakes.
The production of systems with high functionality is also
complicated by less abstract issues:
- deadlines & other external restrictions can create unready or compromised
results, so complex management practices are required..
- it makes commercial sense to keep users (buyers) wanting to need upgrades:
a simple, final solution does not help in this regard.
By doing away with these things, or finding simple work-arounds, an OS becomes a
programming task accessible to people of medium expertise, both in the creation and
in the understanding. This reduces the distance between the machine/programmer and
the user, and enables the latter to become a more central factor in the system,
rather than a peripheral one (or an after-thought, or a sales target). And keeping
users as directors of their own future with regards to their computer implementation
- an increasingly important life accessory - creates a better result for
users, in the long run. This is the basic philosophy of NOUS.
Origins & Motivations
The author had a number of things in mind while designing NOUS.
- The pleasure provided by tinkering with Microsoft DOS.
While it was limited in many ways, it was bare and simple enough to allow users (and
especially amateur programmers) endless hours of creative exploration. By providing
just the essentials of file management, disk access, and screen addressing, it was
enough to give life to our thoughts.
- The disillusionment with more modern systems offering more and more
features. These turned out to be part of someone elses
very detailed but largely irrelevant concept of what users must do with their
computers; and they also slowed down and over-filled the machine. Related to this is
the enforcement of metaphors like WIMP (windows, icons, menus
& pop-ups) to represent available user tasks, and the imagined
superiority of mouse clicks and buttons over text. The often quite inane
representation of human knowledge and thinking upon the computer screen seemed to go
unnoticed or unchallenged by most owners of these operating systems.
- The realization that, at the core of most large computer software systems lie
standards and design ideals cobbled together by commitees more interested in
promoting their industry than in expanding users creativity; their visions were
more market-based than knowledge-based, and full of compromises. Shouldnt the
vision come from (or at least inspire) the user?
- The increasing complexity and obstruseness associated with programming under
modern operating systems, which can hamper creativity, especially when the results
must adhere to, and remain limited by, the rules of an unfriendly or mediocre
computer environment.
- It is important to be able to understand the tool of work (our
computer) like a craftsperon, and not just use it like a slave. For that
matter, if we are bound to a desktop, doesnt that make us a kind of
civil servant?>
- A design paradigm should have aesthetics and respect for the users
intelligence at the top of its charter, not as optional or user-configurable extras.
Hence the word Nice.
- Many interesting alternative OSs have appeared (such as NeXT, BeOS,
QNX, MenuetOS) which showed there was a felt need for more attractive, more tailored
and/or less fancy systems than the major players provided.
- A careful, do-it-yourself, gordian-knot-cutting approach by one amateur
programmer could produce something of as much value as that produced by teams of
experts.
Possible & Imagined Shortcomings
It may appear that NOUS lacks resources or
features deemed essential to modern users, such as:
- full independent multi-tasking.
- fancy 3D graphics, imaging & multimedia applications.
- networking & the Internet.
- other sophisticated or professional or
industrial-strength functions.
- native compilers for assembly language and/or a widely known language like C.
These are beyond the author at this stage, and are outside of the stated Goals.
The last item would be nice for development purposes, but hopefully the assembly kernel is
solid enough, and the
programming resources powerful enough, in the meantime.
Then it may seem to lack:
- many familiar methods & metaphors.
- a pervasive visual theme.
- free abandon for the user (eg. impressive arrays of user preferences,
being able to resize a window, being able to dump files anywhere).
- games.
A careful, objective look at current mainstream systems will reveal that these are
trivial, distracting issues, and applicable to a different paradigm.
- compatibility with existing systems?
This item is also fairly trivial if one accepts that a users creativity is
more important than a softwares required format; NOUS keeps
everything open and/or text-based, so if a translation is needed, a translator can be
created.
- ease of use for first-time users?
First-time use is a temporary state. Like any sophisticated and powerful tool, a
computer should require a period of familiarity. But unlike many systems, whose
daunting complexity (or cocoon of over-simple metaphors) keeps most users at the
novice level, NOUS provides full accessibility to the
computers potential for users of moderate curiousity.
NOUS in more detail
- About general use
- About more advanced use
- About the structure & design
- Expanded contents
- Appendix
The SOUL programming language
|
|