OS/84 aka Final OS, is the codename for my own hobbyist operating system that perhaps one day will be more than just a private hobby. Since I first started programming around 1992, I have been captivated most of my life by digital computers and software engineering in particular. Unfortunately, contemporary software development has not kept pace with the underlying hardware. As an experienced engineer, I find today's personal computing devices are predominently a design abomination. OS/84 is my take on operating systems and application design.
I nicknamed it 'Final OS' because we have come far enough along in the history of computing for us to cater to the traditional personal computing realm and do so in a consistent, robust and aesthetically appealing way; across many facets, OS/84 should represent, if not be, the last desktop operating system anyone will ever need. The '84' is a tribute to the birth year (1984) of the computer that sparked my interest in computers and upon which I spent many of my developmental years - the Apple Macintosh. It is also the machine and it's early years of operating system design that I focus upon as a logical starting point for my own endeavours.
Why 'reinvent the wheel'? The classic Mac operating system serves as an ideal starting point for a number of reasons.
Firstly, it is a graphical environment where the user experience was one of the foremost concerns of the original engineers and designers. Fairly radical user interface reform is one of my long-term objectives for this project, but, it helps to have a solid starting point. Secondly, using an existing system design as a starting point alleviates many of the inumerable choices and nuanced decisions that would otherwise have to be made before development could ensue productively, and as there is only one man on this project anything that will help speed it in the right general direction is welcome! Third, the system software of the early 1990s was still relatively simple in architecture. Although lacking certain features that today's system engineers deem essential, it was still generally performant for the time. Later versions of the Mac operating system gradually became heavier and increasingly cluttered, both visually and architecturally. Despite these humble beginnings, this particular period of system development produced results that would still find significant utility today were it not for the lack of hardware support and the equally abominable direction of modern Internet development (but that's another story...) Fourth, as one of the core principles is minimalism, starting with a relatively minimal system design and implementation, and working toward running the system on legacy hardware is a good way to make sure development proceeds down those lines. Fifth, the nostalgia aspect of working with the operating systems of my youth once more.
Lastly, the only kind of hobby operating system I could justify and enjoy spending my time upon must be one which I could conceivably use for productive work, and given my goals, ideally replace existing infrastructure in time. As such, a system where the graphical shell is a core component and not an afterthought is a necessity rather than mere wishful thinking.
Although I have a lot of detailed thoughts on OS/84 and will attempt to discuss some of those ideas on here, my effort will largely be on implementing the project rather than describing what it is I intend to do at this time.
At this stage, a rough outline of development might look like the following:
In what way does OS/84 differ from what is available in contemporary production operating systems? There are a number of functions and/or design facets, planned and implemented, that differentiate OS/84. These 'features' serve as both a rationale for the project and the means by which the OS will meet the key principles already outlined.
This list is very much a work in progress - watch this space:
As of late November 2016, the project is proceding quickly and better than I would have imagined at this early stage. I have implemented enough of the original Mac APIs to serve as an inspirational structure upon which to build a newer and better system. Frankly, the more I looked into it, the more I realised how much of it was a kludge as a result of certain design decisions made early in the life of that particular product. I have now turned my attention toward refactoring many of these old APIs into something less ugly and more compatible with my objectives, in parallel with my work on the first application, the graphical shell for file management and that which will greet the user shortly after startup.
The early Mac operating system was architecturally divided into a collection of 'Managers' - units of related functionality devoted to a specific operating system or user interface task. These early routines were what gave the Mac it's characteristic user-friendly interface and made the task of writing suitable application software relatively straightforward. They also implemented all the drudgery conventioally cosidered essential to an operating system, such as low-level disk control, mouse and keyboard I/O, memory management and even multitasking (such as it was back then.)
The content of Inside Macintosh volumes I-III was a helpful starting point. This three-volume tome was The technical documentation for the early Macintosh.
Current work is now around refactoring the early APIs of the classic Mac and developing my replacement for the Macintosh Finder - the graphical shell the user uses to begin their work, and manage files and folders.
The following table lists the various 'Managers' and 'Toolbox' components currently slated for development and their status as at 4 December, 2016. Status is colored according to approximate progress: Unimplemented, Early Implementation, Partial Implementation and Implemented.
|Resource Manager||Partially implemented; resource updates not yet supported|
|Font Manager||Early partial implementation; currently upports the System font|
|Toolbox Event Manager||Implemented; minor bug fixes pending|
|Window Manager||Partially implemented; resizing, rounded-window WDEF, template loading and minor redraw optimisations pending|
|Control Manager||Partially implemented; standard CDEFs not yet implemented|
|Menu Manager||Partially implemented; minor support routines and resource loading pending|
|TextEdit||Not yet implemented; will port pre-existing work that already does everything required and in a similar fashion|
|Dialog Manager||Early partial implementation|
|Desk Manager||Not yet implemented; controversial due to the peculiar implementation of early desk accessories - whilst I appreciate the interface model the implementation is arguably far from satisfactory|
|Scrap Manager||Not yet implemented|
|Toolbox Utilities||Partially implemented|
|Package Manager||Not yet implemented|
|Binary-Decimal Conversion Package||Partially implemented|
|International Utilities Package||Not yet implemented|
|Standard File Package||Not yet implemented; System 6 era will be implemented and later removed once a multitasking Finder is available to take over these functions as it should have been done|
|Memory Manager||Preliminary implementation; will be rewritten to be standalone|
|Segment Loader||Not yet implemented|
|Operating System Event Manager||Mostly implemented; keyboard character mapping and device interface pending|
|File Manager||Partial implementation; provides a driver-based virtualfile system model with support for network file systems, and currently uses a driver that provides substantial access to a file system provided by a host operating system|
|Printing Manager||Not yet implemented|
|Device Manager||Preliminary implementation; including a simple keyboard driver|
|Sound Driver||Not yet implemented|
|Serial Drivers||Not yet implemented|
|AppleTalk Manager||Not yet implemented|
|Vertical Retrace Manager||Not yet implemented; can be easily emulated despite lack of CRT in modern designs and is useful for some tasks perhaps, though the nomenclature is now dubious|
|System Error Handler||Preliminary implementation; yet to use proper resources and has no 'Restart' button!|
|Operating System Utilities||Partial implementation; parameter RAM, clock and calendar pending|
|Disk Initalization Package||Not yet implemented|
|Floating-point and Trancendental Functions Packages||Not yet implemented|
In addition to the core OS itself, a handful of essential utilities and development tools, and later, example productivity applications will be developed. These tools will facilitate testing and later development, provide evidence of the maturity of the system as it develops and ultimately permit the productive use of the system. A system without applications is not particularly useful!
Although I am considering permitting the running of old classic MacOS executables at some much later stage of development, core system components such as the Finder need to be modernised and have source code freely available to meet the objectives of this project. As such, the running of old closed-source applications is considered a nice feature, but in no way a priority.
|Control Panel||Not yet implemented|
|Desk Accessories||Not yet implemented|
|ResEdit||Not yet implemented|
|Programmer's Workbench||Not yet implemented|
|BASIC||Not yet implemented|
|TeachText||Not yet implemented|
|Write||Not yet implemented|
|Draw||Not yet implemented|
|Paint||Not yet implemented|
|CinsImp||Not yet implemented|
|TCP/IP||Not yet implemented|
|Email Client||Not yet implemented|
|Web Browser||Not yet implemented|
|Media Player||Not yet implemented|
Such a substantial project will necessiate it's own documentation. Along side this work is an opportunity to use the system in an educational context, to teach operating systems design in a more familiar and engaging way than typical materials on the subject. Desktop operating systems are as much, if not more about the human-computer interface as they are about underlying technology such as memory management, schedulers, device drivers and multithreading. The predominent view of an operating system in such circles seems to emphasise the kernel and maybe a handful of utilities or tools. Graphical shells and interface design if they're mentioned at all are presented as a totally different topic for discussion in a different context. This deprives the aspiring software engineer of much that is exciting about the technology and leaves the student stranded somewhere between the command-line and the mouse.
Nothing exists in isolation, all things are interdependent. This project is an early technical expression of the kind of world which I would like to build. The project emphasis on usability and simplicity is a reflection of the importance I place upon form and aesthetics in physical things, not merely function. Just as the original 1984 Macintosh seemed to have a 'spirit', contemporary computing appliances ought not to be without a soul, yet they often feel hollow.
Whilst the initial work will be liberally inspired by the early Mac, the long-term direction is away from any association with contemporary consumer culture. By constructing a free and open system, conspicuously devoid of and averse to branding of any kind, it is my intent to call into question the principles of capitalist economic structures, that are arguably extremely destructive and long past their utility in human development.
By constructing in a relatively short timeframe, what would by many be considered a lifelong undertaking, it is my intent to draw attention to the potential of every individual to realise his or her creative goals. The only impediment for many in the developed world is I would suggest, a lack of awareness of deeply habituated patterns of thought and behaviour which serve only to distract and distort, and cause untold suffering.
I dance for a deeply compassionate, creative and empowered society. A society where access to information and the ability to collaborate constructively is unimpeded by private property. A society where nobody is left behind and everyone is nurtured to their full creative potential. A society of leisure and creative pursuit, where technology is once again a tool and no longer just another distraction in the mind and heart of man.
13 November 2016: Working Menus
13 November 2016: Moving a window
This page modified: 4 December 2016 at 11:35am AEST