Skip to content
probonopd edited this page Jul 7, 2019 · 48 revisions

Welcome to the hello wiki!

This repository is currently just a placeholder for this wiki, where ideas are collected on hello. Partly inspired by my six-part series about #LinuxUsability.

Objectives

  • Build a modern, elegant desktop operating system that matches the simplicity of Macintosh System 1
  • Binary compatibility (newer apps always must run on older versions of the OS)

Must read

Must watch

Design principles

Technology

  • Debian or Ubuntu based
  • The operating system is contained inside a single read-only image that the user cannot mess with (think of it as the "System" file in Macintosh System 1). This is booted using SystemImageKit
  • AppImages are used for the applications
  • A custom or customized desktop environment is used that uses concepts (not: copies the look and feel of) Macintosh System 1 and Mac OS X around 10.4, e.g., global menus, application bundles, no launcher, no applications menu, no app store, just drag-and-drop in the file manager
  • (At least) the ABI guarantees and lifecycle of RHEL/CentOS

What to do

  • Stand on the shoulders of giants
  • Change the world

What NOT to do

  • Build another "Linux distribution" (use an existing one "under the hood")

Design

Prior Art

Other systems

Classic MacOS

In the original 1984 Macintosh desktop, every application was a single file that could be freely moved around in the file system. No installation was necessary. The system used a desktop database that automatically associated files with the applications that had created them (using the type and creator resrouces). The desktop information was stored in two files, Desktop DB and Desktop DF).

apple_macintosh_desktop

Source: Wikipedia

Note that when after the merger with NeXT, Apple went on to create Mac OS X, they explicitly stated in 2000 (16 years after Classic Mac OS) that it was their objective to match that level of simplicity for modern applications.

screenshot_2018-11-24_11-04-27

(Source: Apple WWDC 2000 Session 144 - Mac OS X: Application Packaging and Document Typing, 3:22)

NeXTStep, NeXTSTEP, OPENSTEP

NeXTSTEP was an operating system launched by Steve Jobs' NeXT Computer in the late 1980s and is the predecessor to today's macOS. It had a concise concept application system integration. Let's the system describe itself:

next1

Source: https://medium.com/@probonopd/make-it-simple-linux-desktop-usability-part-6-1c03de7c00a9

This is how NeXT Workspace Manager (in 1989) automatically handled file associations using the Apps directory. Note that no files (other than the application itself) have to be copied around, no databases have to be manually triggered.

The applications themselves were directories that the file manager showed like files, but the terminal showed like directories:

filesys

Source: https://medium.com/@probonopd/make-it-simple-linux-desktop-usability-part-6-1c03de7c00a9

NeXTSTEP 1.0 filesystem in Terminal vs. Directory Browser GUI

Mac OS X

When Mac OS X was created around 2000, Application Packaging and Document Typing merged the simplicity of Classic Mac OS single-file applications with the benefits of NeXT-style application directories, and introduced a new bundle format and Launch Services. This is explained in detail in

What needs to be built

  • hello Desktop: What draws the global menu bar, windows etc. ("desktop environment" including "window manager" in Linux terminology?)
  • hello Filer: File manager (Finder replacement, "Filer"?), e.g., based on https://github.com/rodlie/qtfm with support for AppDir and AppImage and SystemImageKit so that you can manage the system and the apps by drag-and-drop in the file manager ("File manager" in Linux terminology?)
  • hello Launch Services: The equivalent of https://developer.apple.com/documentation/coreservices/launch_services (has no Linux equivalent as of yet?)
  • hello System: Live ISO image containing the above components, e.g., based on CentOS (known for its ABI stability guarantees)
Clone this wiki locally