Your dream operating system: a reality?

Dennis Marer
Thu, 10 Dec 92 16:23:37 PDT


    My name is Dennis Marer, and I'm writing this message as an invitation to
join in a project which could change the way we use our personal computers.
Nearly fifty (yes, 50) or so of you recently expressed interest in posts I made
regarding a 'dream operating system', and your suggestions have helped me to
formulate a plan to bring this dream into reality.  It's an adventurous project
at the very least, but one I promise will be worthwhile and rewarding to
participate in.  As a side note, this project is in no way connected with Intel
or any other commercial interests, and is being undertaken in my own time.

    We're now several years into the second decade of personal computing, and
we seem to be plagued with two recurring problems which desperately need
solving.  First, many of us (with IBM PC's) are still using the original tool
which helped bring the personal computer to where it is now, MS-DOS.  While it
has served its purpose well, I believe its time to put this old friend to rest
and find a better way to accomplish our tasks.  There are some new contenders
which are able to take advantage of our more advanced machines, but this is
where the second problem can be discovered.

    Over the past 10 or so years, the capabilities of our little silicon
boxes have grown to one time unimaginable heights.  Along with the growth in
IC technology has come faster and cheaper memories, as well as larger and
more compact mass storage devices.  Computers of yesterday were restricted to
almost ridiculously small memory spaces and usually only floppy disks to hold
their precious data.  Today we have access to machines with many hundred
times more memory space and well over a thousand times more mass storage.

    Along with these changes, the applications we're running have also grown
proportionally in size.  As new features are added, more demands are placed
on our machines with respect to memory and storage space.  In addition, the
operating systems which support these applications have become more complex
to handle these advanced needs.  Of the options available today, all place
extremely high demands on a system's resources, leaving applications only
a small amount of room to work with.  Though many times more powerful than
the early ancestors of the personal computer, it feels as though our machines
today are nearly as restricted.

------------------------------ A brief history -------------------------------

    Many months ago, I began researching the 386 and 486 CPUs found in many
of our personal computers today, and discovered some startling facts: for
compatibility with MS-DOS, both are being operated in their most restrictive
mode.  My system cannot directly access memory above 1 megabyte, any sort of
multi-tasking is crude and slow, and virtual memory is a concept not easily
implemented.  These three items are what the 386+ architecture was designed
to handle best, leading me to search for a better solution.

    So far I've come up with three options.  First, I could use OS/2 or the
forthcoming Windows NT to finally take advantage of my system's protected
mode.  Unfortunately, since both of these require a huge amount of hard drive
space and 8MB of memory to run nicely, I'd most likely have to upgrade my
system.  Unix-like operating systems are now available for the 386+ platform
and can be used with X Windows as an accepted multi-user environment, though
once again at a cost.  I can safely say that at least 99% of all personal
computer users will never need multi-user capabilities, which makes such
features and the resources consumed unnecessary.  Rather than pay this
expensive price for full access to my system, I've decided the second option,
waiting to see what else comes along, may be the more wise choice.

    The third option, of course, would have been to develop a new operating
system on my own.  I bounced this idea off a few people, and all seemed very
interested in the prospect of an operating system which allows full access to
the personal computers of today without consuming too many resources itself.
I began writing the initial specifications for what I believed to be the
operating system of the 90's, and started my research.

    In an effort to gather information about bypassing BIOS in protected
mode, I posted a single message to a newsgroup and discovered something
important: I'm not the only one who is interested in such a beast.  Sighs
of relief that something is finally being done about this situation were
heard from across the globe.  Several other people had begun writing their
own operating systems also, but without significant results due to the sheer
size of such an undertaking.

    Since then, I've been working on coordinating an effort that will give
us an operating system worthy of the machines it will be run on.  I'm
contacting each and every one of you with this message to invite you to
become part of the process.  By collaborating on the specification, design,
and implementation, we could quickly develop something which has potential
to breathe new life into our personal computers.  I feel this is just in
time as we step into yet another year of the second decade of the personal
computing era.

---------------------- What we're trying to accomplish -----------------------

    From the start, I've envisioned developing an operating system which is
simple yet flexible enough to meet the needs of the programmer.  The concepts
of object-oriented programming could be seamlessly integrated into the kernel
itself, allowing extensions to this system to be made simply and painlessly.
The full features of the advanced microprocessors found in our personal
computers would finally be opened up.  Initially I've decided on the name
'Moose' for 'Multi-tasking Object oriented Operating SystEm', though a better
name could probably be found in time for its initial release.

    This will be a fully functional operating system targeted for the
personal computer environment, including a full graphical user interface and
eventually a suite of applications.  It will be developed first for IBM PC
and compatibles with a 386 or better CPU, but other environments may follow
if the initial release is received well.  By making all of Moose as system
independent as possible, applications written for one platform could be
easily ported to another.  I believe Moose should be offered as freeware
from the start, though distributing source code for the kernel is probably
not a sound idea.  Source code for device drivers and such should be made
available to the public for free as examples.  Right now there is no way to
collect and distribute funds in a fair and impartial manner.

    From the ground up, Moose will be designed with the object oriented
paradigm in mind.  Operating system concepts, such as processes and device
drivers, could be handled by Moose as objects, each with its own methods and
attributes.  For example, all video display drivers could be descendants of
a 'display' object, giving applications a singular interface to a variety
of display devices.  More complicated display devices could implement a more
suitable interface, allowing applications which are optimized for such
devices to utilize extended features as well.

    The operating system could also implement the concept of a module, which
is a collection of related functions, data, and objects.  These items could
then be linked to and shared dynamically at run-time by other modules,
requiring only a single copy of each module in memory at one time.  Dynamic
linking also would allow new or better device drivers to replace the ones
provided with the Moose system without modifying the applications which use
them.  Objects would also be freely shareable among applications.

    Complete multi-tasking capabilities might allow an application to request
a guaranteed slice of the CPU, if available.  Precise event timing would also
be available to give Moose some real-time processing capabilities.  The
features we could implement in such a system have not yet been decided, but
by carefully choosing these features we can provide ourselves with a solid
base from which to proceed with the specification and development of the
Moose operating system.

---------------------------- Getting coordinated -----------------------------

    The most important aspect of this project will be the coordination of our
efforts.  Due to the physical distance separating all of us, the best method
of communication will be through electronic mail.  Because of the sometimes
unreliable delivery and delay using this method, a hierarchical structure can
be used to reduce the communication needs.  A single coordinator will
communicate directly with the managers of several workgroups, each being
responsible for the development for a portion of the system as a whole.
Each workgroup's manager is then responsible for passing information on to
each of that group's members, and the coordinator will be responsible for
making sure the pieces from each of the workgroups will fit together.

    Instead of having the chain of command trickle down from the top of the
hierarchy to the bottom, each group will be responsible for performing a
task.  The responsibility of the manager of each group will be to coordinate
the efforts to insure each of the pieces will fit together as expected.
By trickling information instead of command, I believe we'll be much more
productive in out efforts.

    To get things started, I've assumed the position of coordinator.  I'd
like to continue at this position at least until the workgroups are set up,
and if a more appropriate choice of coordinator is found I'd be willing to
let her or him take over from that point.  I am perfectly happy to continue
where I am indefinitely because I'm becoming personally attached to this
project.  I've got some strong opinions about how the final product should
turn out, so I'd like to stay right in the middle of things.

    At this time, I'm requesting that anybody with the time and interest to
become a workgroup manager please contact me immediately, as the sooner we
develop a system of communication the sooner things will progress.  To take
on such a position does not require you to be a computer guru, but rather all
that is necessary is dedication and good organization skills.  I've listed
below the different groups I've come up with so far, so please volunteer to
lead whichever ones interest you.  Suggestions are welcome for any other
groups which may be necessary, or possibly different distributions.

        The kernel      - Overall system operation, process/device handling
        File systems    - Disk access, file access, networked file systems
        User I/O        - Display and printers, mouse, keyboard, and so on
        General I/O     - Serial and parallel ports, SCSI devices, networks
        Tools           - Assembler/compiler development and porting, etc.

    Once you've all replied, I'll make a selection of group leaders based
mostly on overall qualifications and time issues.  Someone with only a small
amount of time and good knowledge of the subject is less likely to be chosen
than someone with abundant time and less knowledge.  I feel if your time is
limited, your efforts should be put directly towards the technical aspects
of this project instead of the managerial aspects.  Please don't be offended
by my choices of group leaders, as I am trying to make these decisions in as
professional manner as I am able  Everybody is equally important here.

    I'd like for everyone else to choose a couple areas you feel qualified
to lend your expertise towards.  Whether or not you can contribute only a
little or 99% of your time, if you only plan to contribute knowledge, design
ideas, or just to write as much code as possible, know that your efforts will
be directly responsible for making the Moose operating system a success.
Everyone has the opportunity to contribute and will be recognized equally
regardless of your qualifications, so I encourage you to join us in our
quest.  Now is also a good time to recruit friends and colleagues who are
interested in our pursuit.  What you will gain from your work here will be
intense experience and absolutely no pay. :-)

------------------------------ Work done so far ------------------------------

    For the past few weeks, I've been collecting ideas from the general net
population, and more are coming in every day.  I've distributed a general
survey to several newsgroups asking for input on a 'dream operating system',
and am in the process of compiling this information.  When complete, this
'wish list' will serve as a valuable tool in specifying what features we'd
like to implement in this project.  If you haven't seen this survey posted
and would like to participate, I strongly recommend contacting me as soon as

    On 12/21/92, I expect to be finished with compiling the results, and will
post back to the original newsgroups as well as sending these results on to
you.  In addition, by this date I expect to have compiled the first revision
of what will eventually become the initial specifications for the Moose
operating system, which will be sent to you also.

    Because the period between 12/21 and 12/31 might be used for vacation by
many people, it will give each of us a good chance to ponder the wondrous
possibilities and opportunities of our project.  I suggest we begin actively
communicating again soon after the start of the new year with fresh ideas in
mind and begin ironing out features and flaws of Moose within our workgroups.

--------------------------------- What now? ----------------------------------

    I've come up with a few issues which need to be decided within the next
few weeks.  Most importantly, you need to contact me and specify what sort
of involvement you'd like to have in this project!  All levels are acceptable
though you must actively participate to be a member of a workgroup.  We can't
afford to support dead wood for efficiency reasons, so your being active is
most important to our success.

    Naturally, we ought to start collection names for this operating system
of ours which I've dubbed as 'Moose'.  Hopefully we can collect a list of
possible names within the next few months and vote on the best choice.  I
just don't think 'Moose' sounds very, well...professional?  Let me know your
ideas there, but be sure not to make it sound like 'Unix'.

    Also, I think we should decide on a name for this group, and quick.  It
will give our effort more identity, and not just seem like we're a random
bunch of people.  By sounding like an actual business, we may be able to
get better recognition than a loose collaboration of programmers.  Please
send these as soon as possible so I can compile a list to be voted on.  The
one idea I had was 'TDM Collaborations', where 'TDM' comes from the following
poem by an author whose name I forget:

                    I really hate This Damn Machine,
                        I wish that they would sell it.
                    It never does quite what I want,
                        Only what I tell it.

------------------------- Becoming further acquainted ------------------------

    I'd like to get some detailed information on all of you to keep for my
records and to distribute to everyone involved with this effort.  Please send
me this information as soon as possible also so I can compile the results
and relay it back to everyone else.  Use a format similar to the following:

Name:           Dennis Marer


Snail mail:     P.O. Box 1006
                Los Gatos, CA 95031-1006

Education:      B.S. Computer Engineering
                University of the Pacific, Stockton, CA

Occupation:     Software Engineer at Intel Corporation, Santa Clara, CA, USA
                Development of software to assist in the production of IC's,
                CAD based applications, placement of test circuitry and
                alignment marks for mask generation.

Specialties:    Assembly language programming (I love it!)
                Object oriented software development
                Microprocessor/controller based system hardware design
                DSP hardware and software design for digital audio:
                    - Sampling and playback, esp. oversampling techniques
                    - Music synthesis using frequency modulation
                    - Effects processing
                Text parsing with error detection/recovery algorithms
                GUI based applications in X Windows and MS Windows
                Daydreaming and thinking about things which could be...

Experience:     Been working with computers since 1982, including the
                Atari 800, IBM PC's and compatibles, Unix systems, VAX/VMS.

                Co-op experience with Siemens AG, Erlangen, West Germany.
                Worked with code and project management tools for a large
                scale software project, plus designed a tool to verify
                source code file inclusions against MAKE files.

                Co-op experience with Intel, Santa Clara, CA, USA.  Developed
                software to model the effect of infrared light through thin-
                film layers on silicon substrates to extract film composition
                information from wavelength data.

                Permanent position with Intel (currently) since June.

Languages:      English, BASIC, Fortran, Pascal, C, C++, Forth, Mainsail,
                plus 80x86, 68000, 6502, and VAX assembly languages.

Publications:   No papers or books published, no patents held.

Interests:      Computer music and MIDI applications
                Piano, synthesizers, guitar, octave mandolin
                Techno pop, modern rock, industrial, Irish traditional music
                Poetry and similar writings

Other:          Organizing absurdly huge projects... :-)

---------------------------- What you need to do -----------------------------

Here is a quick review of what you need to do after reading this message:

    * Request from me the 'dream operating system' survey if you haven't
        already participated.  I'd like as much participation as possible!

    * Send me any other suggestions regarding operating systems in general
        and this project you may have.  Specific or general, anything helps.

    * Write me a message and let me know which workgroup you would like to
        be in charge of.  Pick more than one if your interests are divided,
        or create your own if you think it's necessary!

    * Write me and let me know which workgroups you'd like to work in.  Even
        if you're a workgroup manager, you should still be involved in other
        areas.  Specify 2 or 3 areas you're most interested in.

    * Send in your vote for the name of this operating system.  I'll collect
        these for a couple of months, so you've got time on this one...

    * Send in your vote for an overall group name.  This should be done as
        soon as possible so we can get started.  Logo ideas anyone?

    * Recruit friends and colleagues to support our effort.  It's really
        important we get a good number of people directly involved with this
        work.  Theoretically, our work will progress much faster with more
        help, though at some point we should draw the line.  Suggestions?

    * Fill out the information form on yourself.  In a few days, I'll compile
        this information for everyone who has responded and distribute it
        to each and every one of you.  (After you've responded, of course!)
        I'll keep this information updated and send you fresh copies every
        so often so we've all got the same mailing lists.

    Anything you send me will be answered (or at least given a quick answer)
within 2 or 3 days at the most.  If you do not get a speedy reply, be sure
to send to original message again - it may have gotten lost.

What you can expect to receive in the near future:

    * This message, again and again and again until I finally get some
        response from you whether or not you want to participate!

    * 12/14/92, the first listing of interested parties and information
        about each member.  Feel free to start talking with each other!

    * 12/18/92, a ballot to cast your vote for our group name.  Please
        return this promptly so I can count the ballots!

    * 12/21/92, the results of the 'dream operating system' survey.

    * 12/21/92, an initial rough draft of the general Moose specifications.

    * 1/5/92, a New Year's welcome, plus the final decision on a group name.
        At this time, we'll really get started with specifications!


    Take care, and I hope to hear from you very soon!  All input accepted,
good and bad.  If there is something you don't like so far, let's change it!

                                Dennis Marer
                                Acting coordinator