Skip to content

Latest commit

 

History

History
1157 lines (988 loc) · 52.6 KB

File metadata and controls

1157 lines (988 loc) · 52.6 KB

Custom OS Blueprint – Full Development Roadmap

Version: 2.0 – Extended and corrected Goal: A completely independent, modern operating system with a Windows-like GUI, developed from scratch.


Part 1: Architecture Target State

1.1 Boot & Platform Layer

Component Description
UEFI Loader Loads Kernel + Initramfs, gets Memory Map, GOP Framebuffer, ACPI Tables (RSDP/XSDT), then ExitBootServices()
Disk Layout GPT with EFI System Partition (FAT32, 512MB) for Loader/Kernel + Root-Partition (CoW-FS)
Boot Protocol Custom protocol or Multiboot2 compatible (decision required)
Kernel Command Line Parsing for debug flags, root device, init path, log level

1.2 Kernel (Monolithic, Preemptive, SMP)

Core Subsystems

Subsystem Features
CPU Management SMP, APIC (Local + I/O), HPET, TSC Calibration, Per-CPU Data
Memory 4-Level Paging, User/Kernel Split, NX, W^X, Guard Pages, ASLR, Stack Canaries
Scheduler Preemptive, Priorities, Fair Scheduling (CFS-like), Tickless optional
Processes/Threads Separate Address Spaces, Kernel/User Threads, Handles, Signals or IPC alternative
Synchronization Spinlocks (IRQ-safe), Mutexes, RW-Locks, Futex, Condition Variables, Semaphores
IPC Pipes, Message Queues, Shared Memory (mmap), Unix Domain Sockets
Syscalls Stable versioned ABI, SYSCALL/SYSRET, Central Capability Checks

Debugging & Diagnostics

Feature Description
Serial Logger Ring buffer, Log levels (DEBUG/INFO/WARN/ERROR/PANIC)
Panic Handler Bluescreen with register dump, stacktrace, error code
GDB Stub Remote debugging via Serial/Virtio console
Kernel Symbols Symbol resolution for stacktraces
Assertions KASSERT with file/line/message

1.3 Driver Architecture

┌─────────────────────────────────────────────────────────────┐
│                        Userland                             │
├─────────────────────────────────────────────────────────────┤
│  VFS  │  Network Stack  │  USB Stack  │  Input Framework    │
├─────────────────────────────────────────────────────────────┤
│        Block Layer      │    Net Layer    │   HID Layer     │
├─────────────────────────────────────────────────────────────┤
│ Virtio │ NVMe │ AHCI    │ Virtio │ e1000  │  xHCI  │  HID   │
├─────────────────────────────────────────────────────────────┤
│                    PCIe Enumeration                         │
├─────────────────────────────────────────────────────────────┤
│                    ACPI / Platform                          │
└─────────────────────────────────────────────────────────────┘

Driver Development Order

Phase Driver Platform
1. QEMU Virtio-blk, Virtio-net, Virtio-console Emulation
2. QEMU+ AC97/Intel HDA (Audio), USB (xHCI emulated) Emulation
3. Real HW NVMe or AHCI, Intel e1000/i225, xHCI Bare Metal
4. Optional Realtek NICs, USB Storage, Basic GPU Bare Metal

1.4 Filesystem Architecture

VFS Layer

┌─────────────────────────────────────────────┐
│              Userland (libc)                │
├─────────────────────────────────────────────┤
│   open/read/write/close/stat/mmap/ioctl     │
├─────────────────────────────────────────────┤
│                   VFS                       │
│  ┌─────────┬─────────┬─────────┬─────────┐  │
│  │ Mounts  │  Dcache │  Icache │  Pcache │  │
│  └─────────┴─────────┴─────────┴─────────┘  │
├──────┬──────────┬──────────┬────────────────┤
│ CoW  │  FAT32   │  DevFS   │    ProcFS      │
│  FS  │  (EFI)   │          │                │
└──────┴──────────┴──────────┴────────────────┘

Custom CoW Filesystem ("BetterFS")

Feature Priority Description
B-Tree Metadata P0 Efficient lookup, O(log n)
Extent-based P0 Reduced fragmentation
Copy-on-Write P0 Atomic updates, no corruption
Checksums P0 CRC32C or xxHash for all blocks
Journaling P0 Intent-Log for crash recovery (or CoW-only)
Snapshots P1 Cheap via CoW
Compression P2 LZ4 (fast) or ZSTD (better)
Subvolumes P2 Separate Namespaces
Quotas P3 Per-User/Group Limits
Encryption P3 Per-File or Per-Subvolume

1.5 GUI Architecture

┌──────────────────────────────────────────────────────────────┐
│                      Applications                            │
│  ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────────────┐ │
│  │ Notepad  │ │  Paint   │ │ FileMgr  │ │    Settings      │ │
│  └──────────┘ └──────────┘ └──────────┘ └──────────────────┘ │
├──────────────────────────────────────────────────────────────┤
│                    Widget Toolkit                            │
│  Button │ Label │ TextBox │ ListView │ TreeView │ Canvas    │
├──────────────────────────────────────────────────────────────┤
│                    Window Manager                            │
│  Focus │ Z-Order │ Decorations │ Tiling/Floating            │
├──────────────────────────────────────────────────────────────┤
│                      Compositor                              │
│  Alpha Blending │ Shadows │ Animations │ VSync │ Damage     │
├──────────────────────────────────────────────────────────────┤
│                   Display Protocol                           │
│  Shared Memory Surfaces │ Input Events │ Damage Rects       │
├──────────────────────────────────────────────────────────────┤
│                    2D Renderer                               │
│  CPU (SIMD) │ Rect │ Blit │ Line │ Text │ (later GPU)       │
├──────────────────────────────────────────────────────────────┤
│                    Font Engine                               │
│  TrueType Parser │ Rasterizer │ Glyph Cache │ Text Layout   │
├──────────────────────────────────────────────────────────────┤
│                      Kernel                                  │
│  Framebuffer │ Input Events │ Shared Memory │ Timers        │
└──────────────────────────────────────────────────────────────┘

Display Protocol (Wayland-like, simplified)

Message Direction Description
surface_create App → Compositor Register new window
buffer_attach App → Compositor Assign shared memory buffer
damage App → Compositor Report changed rectangles
commit App → Compositor Frame ready to render
input_event Compositor → App Keyboard/Mouse events
configure Compositor → App Window size changed
close Compositor → App Window should close

1.6 Userland

System Services (Daemons)

Service Task
init PID 1, starts all services, process reaping
devd Hotplug, create device nodes
logd Central log aggregation
netd Network Stack (if running in userspace)
audiod Audio Mixing, PCM Playback
compositor Display Server
sessiond Login, Session Management

Runtime Environment

Component Description
libc POSIX-like: stdio, stdlib, string, math, pthread
libsys OS-specific APIs: Handles, IPC, GUI
Dynamic Linker ELF, RELA, Lazy Binding, TLS
Shell Minimal sh-compatible shell

1.7 Security Model

Layers

┌─────────────────────────────────────────┐
│          Application Sandbox            │
│    Capabilities │ Seccomp-like Filters  │
├─────────────────────────────────────────┤
│           Process Isolation             │
│    Address Space │ Handle Validation    │
├─────────────────────────────────────────┤
│            Permissions                  │
│    UID/GID │ Mode Bits │ ACLs           │
├─────────────────────────────────────────┤
│           Kernel Security               │
│    W^X │ ASLR │ Stack Canaries │ NX     │
├─────────────────────────────────────────┤
│            Boot Security                │
│    Secure Boot │ Signed Kernel          │
└─────────────────────────────────────────┘

Capability System

Capability Description
CAP_NET_BIND Bind to ports < 1024
CAP_SYS_ADMIN Change system configuration
CAP_FS_MOUNT Mount filesystems
CAP_PROC_KILL Kill foreign processes
CAP_HW_RAW Direct hardware access

Part 2: Development Checklist (0 → 100%)

Rule: Work linearly. Each task must be "Done" before moving to the next.

Phase 0: Infrastructure (Weeks 1-2)

# Task Dependency Done Criteria
0.1 Repository Setup (Git, .gitignore, README) - Repo exists, cloneable
0.2 Document Coding Standards 0.1 STYLE.md exists
0.3 Build Cross-Compiler (x86_64-elf-gcc) 0.1 make crosscompiler succeeds
0.4 Build System (Makefile/Meson) 0.3 make builds everything
0.5 QEMU + OVMF Setup 0.4 make run boots QEMU with UEFI
0.6 CI Pipeline (GitHub Actions) 0.5 Push triggers build + boot test

Phase 1: UEFI Loader (Weeks 3-5)

# Task Dependency Done Criteria
1.1 UEFI "Hello World" 0.5 Text visible in QEMU
1.2 Serial Output in Loader 1.1 Output in QEMU Serial
1.3 Load Kernel Binary from Disk 1.2 Kernel in RAM, address known
1.4 Load Initramfs 1.3 Initramfs in RAM
1.5 Get and format Memory Map 1.4 Struct with usable RAM available
1.6 Get GOP Framebuffer Info 1.5 Address, Width, Height, Pitch known
1.7 Find and pass ACPI RSDP 1.6 RSDP pointer passed to kernel
1.8 Parse Kernel Command Line 1.7 Args struct passed to kernel
1.9 Execute ExitBootServices() 1.8 No UEFI crash, Kernel running
1.10 Document Boot Protocol 1.9 BOOT_PROTOCOL.md written

Phase 2: Kernel Basics (Weeks 6-10)

# Task Dependency Done Criteria
2.1 Kernel Entry (64-bit Long Mode verified) 1.9 RIP inside Kernel code
2.2 Serial Logger (kprintf + Ringbuffer) 2.1 kprintf() working
2.3 Log Levels (DEBUG/INFO/WARN/ERROR) 2.2 Filterable via cmdline
2.4 Panic Handler (Message + Halt) 2.3 panic() halts cleanly
2.5 Register Dump on Panic 2.4 All GPRs + RIP + RFLAGS
2.6 GDT Setup (Kernel/User CS/DS, TSS) 2.5 lgdt executed
2.7 IDT Setup (all 256 Entries) 2.6 lidt executed
2.8 Exception Handlers (Stubs 0-31) 2.7 Div-by-Zero caught
2.9 Page Fault Handler (Basic) 2.8 PF shows Address + Error Code
2.10 Stacktrace on Exceptions 2.9 RBP-Chain walking working
2.11 Load Kernel Symbols 2.10 Symbol names in Stacktrace

Phase 3: ACPI & Timers (Weeks 11-13)

# Task Dependency Done Criteria
3.1 Validate RSDP 2.11 Checksum OK
3.2 Parse XSDT/RSDT 3.1 List of all tables
3.3 Parse MADT (APIC IDs, I/O APICs) 3.2 Struct with all APICs
3.4 Parse HPET Table 3.3 HPET Base Address known
3.5 Parse FADT (for Shutdown) 3.4 PM1a/PM1b known
3.6 Initialize Local APIC 3.5 APIC enabled, SVR set
3.7 Initialize I/O APIC 3.6 IRQ Routing configured
3.8 Initialize HPET 3.7 HPET ticks
3.9 HPET as Timer Source 3.8 Interrupt fires periodically
3.10 TSC Calibration via HPET 3.9 TSC frequency known
3.11 APIC Timer Setup 3.10 Scheduler-Tick possible

Phase 4: Memory Management (Weeks 14-18)

# Task Dependency Done Criteria
4.1 Early/Bootstrap Allocator (Bump) 3.11 Allocates pages for paging
4.2 Memory Map → Free List 4.1 All usable pages known
4.3 Physical Page Allocator (Bitmap) 4.2 alloc_page/free_page works
4.4 Buddy Allocator (optional, better) 4.3 O(log n) Allocation
4.5 4-Level Paging Setup 4.4 PML4 → PDPT → PD → PT
4.6 Kernel High-Half Mapping 4.5 Kernel at 0xFFFF...
4.7 Remove Identity Map 4.6 Only High-Half active
4.8 Physical Memory Mapping 4.7 Physical RAM mapped
4.9 vmalloc (Virtual Kernel Allocation) 4.8 Arbitrary sizes mappable
4.10 Kernel Heap (Slab Allocator) 4.9 kmalloc/kfree working
4.11 Slab Caches for common objects 4.10 task_struct, inode, etc.
4.12 Enable NX-Bit 4.11 Data-Pages not executable
4.13 Enforce W^X Policy 4.12 No RWX mappings
4.14 Guard Pages for Kernel Stacks 4.13 Stack Overflow → Page Fault
4.15 KASLR (optional) 4.14 Kernel base randomized

Phase 5: SMP & Synchronization (Weeks 19-23)

# Task Dependency Done Criteria
5.1 Per-CPU Data Structure 4.15 GS-Base points to Per-CPU
5.2 BSP Stack + Per-CPU Area 5.1 BSP runs with custom stack
5.3 AP Trampoline Code (16-bit) 5.2 Code placed under 1MB
5.4 Send SIPI to APs 5.3 APs start
5.5 APs → Long Mode 5.4 APs enter 64-bit mode
5.6 AP Stack + Per-CPU Setup 5.5 Each AP gets its own stack
5.7 AP reports to BSP 5.6 All CPUs accounted for
5.8 Spinlock Implementation 5.7 Ticket or MCS
5.9 IRQ-safe Spinlocks 5.8 No deadlocks on IRQs
5.10 Mutex (sleeping) 5.9 Long-term locks
5.11 RW-Lock 5.10 Reader/Writer semantics
5.12 IPI Framework 5.11 CPU-to-CPU Messaging
5.13 TLB Shootdown 5.12 Sync Page Table changes
5.14 Verify Atomics 5.13 atomic_add, cmpxchg, etc.

Phase 6: Scheduler & Threads (Weeks 24-30)

# Task Dependency Done Criteria
6.1 Thread Structure (task_struct) 5.14 Struct defined
6.2 Create Kernel Thread 6.1 Thread exists
6.3 Context Switch (save/restore) 6.2 Register swap works
6.4 Run Queue (per CPU) 6.3 Threads enqueued
6.5 Scheduler Tick Hook 6.4 Timer calls schedule()
6.6 Basic Round-Robin 6.5 Threads context-switching
6.7 Thread Priorities 6.6 Higher priority goes first
6.8 sleep()/wakeup() 6.7 Threads blockable
6.9 Wait Queues 6.8 Wakeup on events
6.10 Preemption Points 6.9 Kernel preemptable
6.11 Idle Thread (per CPU) 6.10 HLT when nothing to do
6.12 Load Balancing (basic) 6.11 Work stealing
6.13 CFS-like Scheduler 6.12 Fair Scheduling
6.14 Thread Exit + Cleanup 6.13 Resources freed
6.15 Thread Join 6.14 Waiting for a thread

Phase 7: Processes & Userspace (Weeks 31-38)

# Task Dependency Done Criteria
7.1 Process Structure (pid, address space) 6.15 Struct defined
7.2 Address Space per Process 7.1 Separate PML4
7.3 User-Kernel Page Separation 7.2 User can't see Kernel
7.4 User Mode Entry (iretq) 7.3 Ring 3 reached
7.5 Syscall Mechanism (SYSCALL/SYSRET) 7.4 Syscall works
7.6 Syscall Dispatcher 7.5 ID → Handler mapping
7.7 copyin/copyout (safe) 7.6 User data validated
7.8 Syscall ABI v1 documented 7.7 SYSCALL.md
7.9 Handle/FD Table per Process 7.8 Handles managed
7.10 sys_exit 7.9 Process ends
7.11 sys_write (stdout) 7.10 Output works
7.12 sys_read (stdin) 7.11 Input works
7.13 "Hello World" Userspace Binary 7.12 Runs, prints, exits
7.14 ELF Loader (ET_EXEC) 7.13 Static binaries loadable
7.15 ELF Loader (ET_DYN, PIE) 7.14 Position-Independent Execs
7.16 User ASLR 7.15 Stack/Heap randomized
7.17 Stack Canaries (User) 7.16 Buffer Overflow Detection
7.18 sys_brk / sys_mmap 7.17 Heap allocation
7.19 mmap MAP_ANONYMOUS 7.18 Large allocations
7.20 mmap MAP_SHARED 7.19 Shared Memory
7.21 munmap 7.20 Free memory
7.22 mprotect 7.21 Change permissions
7.23 fork() or spawn() 7.22 New Process
7.24 exec() 7.23 Replace program
7.25 waitpid() 7.24 Wait for child
7.26 Zombie Reaping 7.25 No zombie leaks
7.27 Process Groups 7.26 Job Control basis
7.28 Signals OR Event IPC 7.27 Async Notifications
7.29 kill() 7.28 Send Signal/Event
7.30 Environment Variables 7.29 envp to main()
7.31 argv Passing 7.30 argc/argv to main()
7.32 Central Capability Checks 7.31 Syscalls guarded

Phase 8: IPC & Synchronization (Weeks 39-42)

# Task Dependency Done Criteria
8.1 Pipes (unidirectional) 7.32 pipe(), read, write
8.2 Pipes (bidirectional) 8.1 Optional
8.3 Named Pipes (FIFO) 8.2 mkfifo, open
8.4 Message Queues 8.3 mq_send/mq_receive
8.5 Unix Domain Sockets 8.4 Local socket IPC
8.6 Futex (Fast Userspace Mutex) 8.5 FUTEX_WAIT/WAKE
8.7 Condition Variables (User) 8.6 pthread_cond_*
8.8 Semaphores (User) 8.7 sem_wait/post
8.9 eventfd / signalfd (optional) 8.8 Event Notification
8.10 poll / select 8.9 I/O Multiplexing
8.11 epoll (better, optional) 8.10 Scalable I/O

Phase 9: VFS & Filesystems (Weeks 43-52)

# Task Dependency Done Criteria
9.1 VFS Interfaces (inode_ops, file_ops) 8.11 Abstraction defined
9.2 Superblock Structure 9.1 FS instance managed
9.3 Dentry (Directory Entry) Cache 9.2 Fast path lookup
9.4 Inode Cache 9.3 Cached metadata
9.5 Path Resolution 9.4 /path/to/file → inode
9.6 Mount Table 9.5 Mountpoints managed
9.7 Mount/Umount Syscalls 9.6 mount(), umount()
9.8 Root Mount (Initramfs) 9.7 / is mounted
9.9 Ramfs (RAM-based, simple) 9.8 Tmpfs-like
9.10 DevFS (/dev) 9.9 Device Nodes
9.11 ProcFS (/proc) 9.10 Process Info
9.12 SysFS (/sys) 9.11 Kernel objects
9.13 stat / fstat / lstat 9.12 Read metadata
9.14 Permissions (mode bits) 9.13 rwxrwxrwx
9.15 UID/GID per File 9.14 Ownership
9.16 Permission Checks 9.15 Access validated
9.17 Directory Ops (mkdir, rmdir) 9.16 Create/delete folders
9.18 Link / Unlink 9.17 Hardlinks
9.19 Symlinks 9.18 Softlinks
9.20 Rename 9.19 Move files
9.21 Truncate 9.20 Truncate file size
9.22 FAT32 Read-Only 9.21 EFI partition readable
9.23 FAT32 Read-Write 9.22 EFI partition writable
9.24 Block Layer 9.23 Disk abstraction
9.25 Page Cache 9.24 Disk data cached
9.26 Writeback (async) 9.25 Background sync
9.27 fsync / fdatasync 9.26 Explicit sync
9.28 ACLs (optional) 9.27 Extended permissions

Phase 10: Block Drivers (Weeks 53-58)

# Task Dependency Done Criteria
10.1 PCIe Enumeration 9.28 All devices found
10.2 BAR Mapping 10.1 MMIO registers accessible
10.3 MSI/MSI-X Setup 10.2 Interrupts configured
10.4 Virtio Common Setup 10.3 Virtqueues initialized
10.5 Virtio-blk Driver 10.4 Disk read/write in QEMU
10.6 Request Queue 10.5 Async I/O
10.7 Scatter-Gather I/O 10.6 Large transfers
10.8 AHCI Controller Init 10.7 Ports detected
10.9 AHCI Command Issue 10.8 Disk I/O works
10.10 NVMe Controller Init 10.9 Admin Queue
10.11 NVMe I/O Queues 10.10 Submissions/Completions
10.12 NVMe Namespace 10.11 Disk readable
10.13 Partition Table (GPT) 10.12 Partitions recognized
10.14 Bootable USB Image 10.13 Boot on real hardware

Phase 11: Custom Filesystem (Weeks 59-70)

# Task Dependency Done Criteria
11.1 On-Disk Format Design 10.14 Documented
11.2 Superblock 11.1 FS identifiable
11.3 B-Tree Implementation 11.2 Insert/Delete/Search
11.4 Inode Table (B-Tree) 11.3 Inodes persistent
11.5 Directory B-Tree 11.4 Name → Inode
11.6 Extent Allocation 11.5 Space for files
11.7 Free Space Tracking 11.6 Bitmap or B-Tree
11.8 Read Path 11.7 Read files
11.9 Write Path (in-place) 11.8 Write files
11.10 Copy-on-Write Semantics 11.9 Never overwrite in place
11.11 Atomic Root-Pointer Updates 11.10 Crash-safe
11.12 Checksums (CRC32C) 11.11 Data integrity
11.13 Checksum Verification 11.12 Corruption detected
11.14 mkfs Tool 11.13 Create new FS
11.15 fsck Tool 11.14 Repair FS
11.16 Crash Recovery Test 11.15 Simulate power loss
11.17 Snapshots (CoW-based) 11.16 Create snapshot
11.18 Snapshot Rollback 11.17 Revert to snapshot
11.19 Compression (LZ4) 11.18 Compressed blocks
11.20 Compression (ZSTD) 11.19 Better ratio
11.21 Subvolumes 11.20 Separate namespaces
11.22 Quotas 11.21 Space limits
11.23 Online Resize 11.22 Enlarge FS
11.24 Defragmentation 11.23 Optimize extents

Phase 12: Networking (Weeks 71-85)

# Task Dependency Done Criteria
12.1 Virtio-net Driver 11.24 Send/receive packets
12.2 Network Buffer (sk_buff) 12.1 Manage packets
12.3 Ethernet Frame Parsing 12.2 MAC addresses identified
12.4 ARP Table 12.3 IP → MAC mapping
12.5 ARP Request/Reply 12.4 ARP functional
12.6 IPv4 Header Parsing 12.5 IP packets identified
12.7 ICMP Echo (Ping) 12.6 Ping Reply functional
12.8 Routing Table (basic) 12.7 Forward packets
12.9 UDP Sockets 12.8 send/recv
12.10 DNS Resolver 12.9 Name → IP
12.11 DHCP Client 12.10 Automatic IP
12.12 TCP State Machine 12.11 RFC 793 States defined
12.13 TCP Connect (3-Way) 12.12 Connection established
12.14 TCP Send/Recv 12.13 Data transfer
12.15 TCP Retransmission 12.14 Reliability
12.16 TCP Congestion Control 12.15 Reno/Cubic
12.17 TCP Out-of-Order 12.16 Reassembly
12.18 TCP Close 12.17 FIN/ACK handled
12.19 Socket API (BSD-like) 12.18 socket/bind/listen/accept
12.20 SO_REUSEADDR etc. 12.19 Socket Options
12.21 IPv6 (optional) 12.20 Dual-Stack
12.22 Intel e1000 Driver 12.21 Real hardware
12.23 Realtek RTL8139/8169 12.22 More hardware

Phase 13: USB & Input (Weeks 86-95)

# Task Dependency Done Criteria
13.1 xHCI Controller Detect 12.23 Controller found
13.2 xHCI Register Access 13.1 MMIO working
13.3 xHCI Reset 13.2 Controller ready
13.4 Device Context Setup 13.3 DCBAA configured
13.5 Command Ring 13.4 Send commands
13.6 Event Ring 13.5 Receive completions
13.7 Port Status Change 13.6 Device detected
13.8 Address Device 13.7 USB address assigned
13.9 Device Descriptor 13.8 Device identified
13.10 Configuration 13.9 Device configured
13.11 USB Hub Support 13.10 Hubs functional
13.12 HID Class Driver 13.11 Keyboard/Mouse detected
13.13 HID Report Parsing 13.12 Interpret input
13.14 Keyboard Driver 13.13 Keys → Keycodes
13.15 Keymap (US/DE) 13.14 Layout correct
13.16 Dead Keys 13.15 Special characters support
13.17 Mouse Driver 13.16 Movement + Buttons
13.18 Mouse Acceleration 13.17 Configurable curve
13.19 Input Event Framework 13.18 /dev/input/eventN
13.20 USB Mass Storage 13.19 Mount USB sticks
13.21 EHCI Fallback (optional) 13.20 Older hardware support

Phase 14: Audio (Weeks 96-102)

# Task Dependency Done Criteria
14.1 Audio Subsystem Design 13.21 Documented
14.2 Intel HDA Controller 14.1 Registers accessible
14.3 HDA Codec Enumeration 14.2 Codecs found
14.4 HDA Widget Tree 14.3 Audio paths known
14.5 HDA Output Stream 14.4 PCM playable
14.6 HDA Input Stream 14.5 Recording possible
14.7 Audio Buffer Management 14.6 DMA works
14.8 Audio Mixer (Kernel) 14.7 Volume Control
14.9 Audio Daemon (User) 14.8 Streams mixed
14.10 Per-App Volume 14.9 Individual volume levels
14.11 WAV Playback 14.10 Play .wav files
14.12 Sample Rate Conversion 14.11 Resampling
14.13 AC97 (QEMU Fallback) 14.12 Works in QEMU

Phase 15: Graphics & Compositor (Weeks 103-120)

# Task Dependency Done Criteria
15.1 Framebuffer Driver (GOP) 14.13 Settable pixels
15.2 Double Buffering 15.1 No tearing
15.3 Triple Buffering 15.2 Smoother output
15.4 VSync Timing 15.3 Stable 60 FPS
15.5 2D Primitives (rect, line) 15.4 Drawable shapes
15.6 Blit (memcpy optimized) 15.5 Copy sprites
15.7 SIMD Optimization (SSE/AVX) 15.6 4x faster rendering
15.8 Alpha Blending 15.7 Transparency
15.9 TrueType Parser 15.8 Read .ttf files
15.10 Glyph Rasterizer 15.9 Letters to bitmaps
15.11 Glyph Cache 15.10 Avoid re-rasterizing
15.12 Subpixel Rendering 15.11 LCD optimized text
15.13 Text Layout Engine 15.12 Word wrapping
15.14 Kerning 15.13 Letter spacing
15.15 Unicode/UTF-8 Support 15.14 International characters
15.16 Bidi (optional) 15.15 RTL languages
15.17 Display Protocol Design 15.16 Documented
15.18 Shared Memory Surfaces 15.17 Apps share buffers
15.19 Surface Handles 15.18 Kernel managed
15.20 Damage Tracking 15.19 Redraw only changed regions
15.21 Compositor Process 15.20 Starts up
15.22 Compositor Blending 15.21 Combine windows
15.23 Z-Order Management 15.22 Window stacking order
15.24 Focus Management 15.23 Active window
15.25 Hit Testing 15.24 Click routing
15.26 Input Routing 15.25 Events to active app
15.27 Window Decorations 15.26 Titlebar, buttons
15.28 Shadows 15.27 Drop shadows
15.29 Rounded Corners 15.28 Aesthetic corners
15.30 Animations (Easing) 15.29 Smooth UI effects
15.31 Cursor Rendering 15.30 Mouse pointer
15.32 Cursor Themes 15.31 Custom pointers

Phase 16: Desktop Shell & Widgets (Weeks 121-135)

# Task Dependency Done Criteria
16.1 Widget Base Class 15.32 Inheritance possible
16.2 Event Dispatch 16.1 Pass events to widgets
16.3 Layout Engine 16.2 Box Layout, Grid
16.4 Label Widget 16.3 Display text
16.5 Button Widget 16.4 Clickable
16.6 TextBox Widget 16.5 Enter text
16.7 Checkbox 16.6 Toggle on/off
16.8 Radio Button 16.7 Exclusive choice
16.9 Slider 16.8 Select values
16.10 Dropdown/Combobox 16.9 Select from list
16.11 ListView 16.10 Scrollable list
16.12 TreeView 16.11 Hierarchy view
16.13 Scrollbar 16.12 Scrolling content
16.14 Menubar 16.13 File/Edit menus
16.15 Context Menu 16.14 Right-click menus
16.16 Dialog (Modal) 16.15 Popup windows
16.17 Message Box 16.16 Alerts / Confirmations
16.18 File Dialog 16.17 Open/Save prompts
16.19 Progress Bar 16.18 Display progress
16.20 Taskbar 16.19 Show open windows
16.21 Start Menu 16.20 App launcher
16.22 System Tray 16.21 Tray icons
16.23 Desktop Icons 16.22 Double-click launches
16.24 Wallpaper 16.23 Desktop background
16.25 Clipboard Service 16.24 Copy/Paste text
16.26 Clipboard Bitmap 16.25 Copy/Paste images
16.27 Drag & Drop 16.26 Drag files/items
16.28 Theme Engine 16.27 Colors/Styles
16.29 Dark Mode 16.28 Toggle dark theme

Phase 17: Applications (Weeks 136-160)

# Task Dependency Done Criteria
17.1 Terminal Emulator 16.29 Shell running inside
17.2 PTY Subsystem 17.1 /dev/pts/*
17.3 Shell (sh-compatible) 17.2 Execute commands
17.4 Core Utils (ls, cat, cp...) 17.3 Basic tools working
17.5 Notepad v1 17.4 Open, Edit, Save
17.6 Notepad: UTF-8 17.5 Unicode handling
17.7 Notepad: Undo/Redo 17.6 Revert changes
17.8 Notepad: Find/Replace 17.7 Search
17.9 Notepad: Tabs 17.8 Multiple files
17.10 Notepad: Line Endings 17.9 LF/CRLF
17.11 Notepad: Large Files 17.10 Virtual scrolling
17.12 Notepad: Syntax Highlight 17.11 Code styling
17.13 Notepad: Autosave 17.12 Crash Recovery
17.14 Calculator v1 17.13 Basic arithmetic
17.15 Calculator: Parser 17.14 Shunting-Yard
17.16 Calculator: History 17.15 Past calculations
17.17 Calculator: Scientific 17.16 sin/cos/log/^
17.18 Calculator: Variables 17.17 x = 5
17.19 Paint v1 17.18 Canvas, Brush
17.20 Paint: Shapes 17.19 Rect, Ellipse, Line
17.21 Paint: Colors 17.20 Color Picker
17.22 Paint: Layers 17.21 Multiple layers
17.23 Paint: Selection 17.22 Cut/Copy sections
17.24 Paint: Undo Stack 17.23 History
17.25 Paint: Save BMP 17.24 Export image
17.26 Paint: Save PNG 17.25 Compressed export
17.27 File Manager v1 17.26 Browse, Open
17.28 File Manager: Copy/Move 17.27 Relocate files
17.29 File Manager: Delete 17.28 Remove files
17.30 File Manager: Rename 17.29 Change names
17.31 File Manager: New Folder 17.30 Create directories
17.32 File Manager: Thumbnails 17.31 Image previews
17.33 File Manager: Quick View 17.32 Peek contents
17.34 File Manager: Permissions 17.33 chmod GUI
17.35 Settings App 17.34 System settings
17.36 Settings: Display 17.35 Resolution, DPI
17.37 Settings: Mouse 17.36 Sensitivity
17.38 Settings: Keyboard 17.37 Layouts
17.39 Settings: User Mgmt 17.38 Manage users
17.40 Settings: Network 17.39 IP configuration
17.41 Settings: Sound 17.40 Volume, Devices
17.42 Settings: Date/Time 17.41 Timezone
17.43 Settings: About 17.42 System info
17.44 Image Viewer 17.43 View BMP/PNG/JPEG
17.45 Audio Player 17.44 Play WAV
17.46 Network Tools 17.45 ping, traceroute
17.47 Simple Browser 17.46 HTTP GET, basic HTML

Phase 18: System & Security (Weeks 161-175)

# Task Dependency Done Criteria
18.1 Users/Groups Database 17.47 /etc/passwd, /etc/group
18.2 Password Hashing 18.1 bcrypt/scrypt
18.3 Login Service 18.2 Authentication
18.4 Session Management 18.3 Login → Desktop
18.5 su / sudo 18.4 Privilege Escalation
18.6 Capability Sets 18.5 Per-process Caps
18.7 Sandbox Profiles 18.6 App isolation
18.8 Seccomp-like Filters 18.7 Syscall whitelist
18.9 Code Signing 18.8 Signed apps
18.10 Signature Verification 18.9 Run only signed apps
18.11 Secure Boot Chain 18.10 UEFI → signed Kernel
18.12 Crash Reporter 18.11 Collect dumps
18.13 Log Persistence 18.12 Ringbuffer to file
18.14 Audit Logging 18.13 Security relevant events
18.15 Timezone Database 18.14 Correct local time
18.16 Locale Framework 18.15 i18n support

Phase 19: Power & Hardware (Weeks 176-185)

# Task Dependency Done Criteria
19.1 ACPI Shutdown 18.16 Clean poweroff
19.2 ACPI Reboot 19.1 System reset
19.3 ACPI Sleep (S3) 19.2 Suspend to RAM
19.4 Hibernate (S4) 19.3 Suspend to Disk
19.5 CPU Frequency Scaling 19.4 P-States
19.6 Thermal Management 19.5 Throttling
19.7 Battery Status 19.6 Laptop support
19.8 ACPI Button Events 19.7 Power Button triggers shutdown
19.9 GPU Detection 19.8 VGA/GPU detected
19.10 KMS-like Layer 19.9 Mode Setting
19.11 Simple GPU Accel 19.10 2D Blit via GPU

Phase 20: Installation & Recovery (Weeks 186-195)

# Task Dependency Done Criteria
20.1 Installer: UI 19.11 Graphical installer
20.2 Installer: Disk Detect 20.1 Detect available drives
20.3 Installer: Partitioning 20.2 Create GPT
20.4 Installer: Format 20.3 Create FS
20.5 Installer: Copy System 20.4 Transfer files
20.6 Installer: Bootloader 20.5 EFI entry created
20.7 Installer: User Setup 20.6 Create first user
20.8 Installer: Time/Locale 20.7 Configuration
20.9 Recovery Mode 20.8 Safe Boot option
20.10 Recovery: Safe Graphics 20.9 Fallback Framebuffer
20.11 Recovery: fsck GUI 20.10 Repair FS
20.12 Recovery: Rollback 20.11 Restore last snapshot
20.13 Recovery: Shell 20.12 Root command line
20.14 Update System 20.13 Install packages/updates
20.15 Update: Signatures 20.14 Verify before install
20.16 Update: Rollback 20.15 Revert if update fails

Phase 21: Polish & Release (Weeks 196-210)

# Task Dependency Done Criteria
21.1 Performance Profiling 20.16 Find bottlenecks
21.2 Input Latency < 16ms 21.1 Responsive UI
21.3 Compositor Perf 21.2 Stable 60 FPS
21.4 Memory Leak Check 21.3 Zero leaks
21.5 Stress Testing 21.4 Stable under load
21.6 Kernel Unit Tests 21.5 Automated test suite
21.7 Integration Tests 21.6 QEMU CI pipeline
21.8 Docs: Dev Guide 21.7 Developer documentation
21.9 Docs: Driver Guide 21.8 How to write drivers
21.10 Docs: ABI Reference 21.9 Syscall API documented
21.11 Docs: User Manual 21.10 Manual for end users
21.12 Release Image: ISO 21.11 Bootable CD
21.13 Release Image: USB 21.12 Live-USB flash
21.14 Release Notes 21.13 Changelog prepared
21.15 Release Candidate 21.14 RC ready for next phases

Phase 22: Swap & Disk Encryption (Weeks 211-220)

# Task Dependency Done Criteria
22.1 Swap Partition Support 21.15 Swap area recognized
22.2 Swap File Support 22.1 File-based swap works
22.3 Page-Out Policy (LRU) 22.2 Pages pushed to disk
22.4 Page-In (Demand Paging) 22.3 Pages retrieved on access
22.5 OOM Killer 22.4 Kills process on memory exhaustion
22.6 Swappiness Parameter 22.5 Configurable swap aggression
22.7 Crypto Primitives 22.6 AES, SHA, ChaCha20 tested
22.8 /dev/urandom 22.7 CSPRNG + RDRAND
22.9 LUKS-like Volume 22.8 Encrypted Block Device
22.10 Key Derivation 22.9 Argon2/PBKDF2
22.11 Encrypted Root Boot 22.10 OS boots from encrypted partition
22.12 Key Management 22.11 Kernel keyring

Phase 23: TLS & Cryptography (Weeks 221-235)

# Task Dependency Done Criteria
23.1 RSA Implementation 22.12 Sign/Verify/Encrypt works
23.2 ECDSA / Curve25519 23.1 Modern cryptography
23.3 X.509 Parsing 23.2 Read certificates
23.4 Certificate Chain Val. 23.3 Verify up to Root CA
23.5 Trust Store 23.4 Embedded trusted CAs
23.6 TLS 1.3 Handshake 23.5 ClientHello → ServerHello
23.7 TLS Record Protocol 23.6 Send/receive encrypted data
23.8 TLS Session Resumption 23.7 Fast reconnects
23.9 HTTPS Client 23.8 HTTPS GET works
23.10 Certificate Pinning 23.9 Extra security for OS updates

Phase 24: WiFi & Bluetooth (Weeks 236-260)

# Task Dependency Done Criteria
24.1 802.11 MAC Frame Parsing 23.10 Decode WiFi frames
24.2 802.11 Mgmt Frames 24.1 Beacon, Probe, Auth, Assoc
24.3 WiFi Scanning 24.2 Find available networks
24.4 WPA2-PSK Handshake 24.3 Encrypted connection
24.5 WPA3-SAE (optional) 24.4 Modern standard
24.6 WiFi Driver (iwlwifi/rtl) 24.5 At least one chipset working
24.7 Connect/Disconnect 24.6 Network roaming
24.8 WiFi Power Save 24.7 Idle power management
24.9 Network Manager GUI 24.8 Select WiFi in Settings
24.10 Bluetooth HCI Layer 24.9 Address BT controller
24.11 Bluetooth L2CAP 24.10 Logical channels
24.12 Bluetooth SDP 24.11 Service Discovery
24.13 Bluetooth Pairing (SSP) 24.12 Connect devices
24.14 BLE GATT (optional) 24.13 Low Energy devices
24.15 Bluetooth Audio (A2DP) 24.14 Headphones support

Phase 25: Advanced Networking (Weeks 261-275)

# Task Dependency Done Criteria
25.1 Packet Filter / Firewall 24.15 Inbound/outbound rules
25.2 NAT (Masquerading) 25.1 IP translation
25.3 Firewall Config Tool 25.2 CLI/GUI to set rules
25.4 NTP Client 25.3 Time syncs automatically
25.5 NTP System Clock Sync 25.4 RTC + NTP combined
25.6 mDNS / DNS-SD 25.5 Resolve hostname.local
25.7 NFS Client (v4) 25.6 Mount remote filesystems
25.8 SMB/CIFS Client 25.7 Access Windows shares
25.9 VPN (WireGuard-like) 25.8 Encrypted tunnels
25.10 VPN Config + GUI 25.9 Configure VPN in Settings

Phase 26: Package Manager & SDK (Weeks 276-295)

# Task Dependency Done Criteria
26.1 Package Format (.npkg) 25.10 Spec documented
26.2 Package Metadata 26.1 Read manifest (Deps, Ver)
26.3 Dependency Resolver 26.2 Resolve dependencies
26.4 Install/Remove Package 26.3 Working operations
26.5 HTTP Package Repository 26.4 Fetch index
26.6 Repository Signatures 26.5 Verify GPG-like signatures
26.7 System Update 26.6 Upgrade all packages
26.8 Update Rollback 26.7 Revert failed updates via Snapshot
26.9 SDK: Stable API Headers 26.8 Versioned headers
26.10 SDK: ABI Versioning 26.9 libfoo.so.1 → libfoo.so.2
26.11 SDK: pkg-config equivalent 26.10 Build flags for libraries
26.12 SDK: Cross-Compiler 26.11 Compile from Linux for PromptOS
26.13 App-Manifest 26.12 Declare required permissions
26.14 CLI Package Manager 26.13 npkg install/update
26.15 GUI Software Center 26.14 Graphical app store

Phase 27: Peripherals & Printing (Weeks 296-310)

# Task Dependency Done Criteria
27.1 Print Subsystem Design 26.15 Architecture documented
27.2 Print Spooler Daemon 27.1 Manage print jobs
27.3 IPP (Internet Printing) 27.2 Network printers
27.4 USB Printer Class Driver 27.3 Detect USB printers
27.5 PostScript/PDF Render 27.4 Print simple documents
27.6 Print Dialog (GUI) 27.5 Apps can initiate print
27.7 Webcam / V4L-like 27.6 USB camera → Video stream
27.8 Webcam App (Preview) 27.7 Display camera feed
27.9 Scanner Support (SANE) 27.8 USB scanner → Image
27.10 SD-Card Reader 27.9 Mount SD cards
27.11 Touchpad Multitouch 27.10 2-finger scroll, pinch-to-zoom
27.12 Touchpad Gestures Config 27.11 Adjust in Settings

Phase 28: Accessibility & Monitors (Weeks 311-330)

# Task Dependency Done Criteria
28.1 Accessibility Tree 27.12 AT-SPI-like widget roles/states
28.2 Screen Reader Basics 28.1 TTS engine, focus tracking
28.3 Screen Reader Navigation 28.2 Keyboard-driven UI tour
28.4 High Contrast Mode 28.3 System-wide high contrast
28.5 Zoom / Scaling 28.4 Scalable UI
28.6 Full Keyboard Nav 28.5 Tab/Enter reaches all elements
28.7 IME Framework 28.6 Complex input methods
28.8 CJK Input 28.7 Chinese/Japanese/Korean
28.9 Compose-Key / Dead-Keys 28.8 Diacritics support
28.10 Multi-Monitor (EDID) 28.9 Detect multiple screens
28.11 Multi-Monitor Layout 28.10 Configurable arrangement
28.12 Per-Monitor HiDPI 28.11 Different scaling per screen
28.13 Monitor Hot-Plug 28.12 Plug/unplug while running
28.14 Notification Daemon 28.13 Apps can send notifications
28.15 Notification Popups 28.14 Toast notifications visible

Phase 29: Advanced QA & v1.0 (Weeks 331-350)

# Task Dependency Done Criteria
29.1 POSIX Compliance Tests 28.15 Test libc against standard
29.2 Syscall Fuzzer 29.1 Random syscalls → no crash
29.3 Filesystem Fuzzer 29.2 Corrupt FS-images → no panic
29.4 Network Fuzzer 29.3 Malformed packets → no crash
29.5 Soak / Endurance Tests 29.4 Stable for 72h continuous run
29.6 Memory Leak Check 29.5 No kernel leaks under load
29.7 Lock Contention Profile 29.6 No deadlocks, hot locks optimized
29.8 HW Compatibility Matrix 29.7 Documented working hardware
29.9 CVE / Patch Process 29.8 Defined workflow for security fixes
29.10 Release Gates / Criteria 29.9 Checklist for every release
29.11 Automated Regression CI 29.10 CI blocks regressions
29.12 Reproducible Benchmarks 29.11 Performance measurable
29.13 Version 1.0 29.12 🎉 Ready as Daily Driver

Part 3: Architectural Decisions (MANDATORY before coding)

These decisions fundamentally impact the architecture. They must be answered before writing code.

E1: ABI Philosophy

Option Description Pro Con
POSIX-like fork(), exec(), FDs, signals Portability, familiar fork() is slow/complex
Clean Break spawn(), Handles, events Modern, simple Zero portability
Hybrid Handles internally, POSIX in libc Best of both worlds More work

Recommendation: Hybrid. Internal handles, POSIX via libc shim.


E2: Userland Linking

Option Description Pro Con
Static Everything in one binary Simple, no deps Large, no shared code
Dynamic Shared libraries (.so) Smaller, updates easy Weeks of extra work

Recommendation: Static until GUI runs, then transition to Dynamic.


E3: USB Controller Focus

Option Description Pro Con
xHCI only USB 3.0+ only Modern, single driver Legacy HW unsupported
xHCI + EHCI USB 3.0 + 2.0 High compatibility Two complex drivers

Recommendation: xHCI only. Legacy hardware is rare.


E4: Network IPv6

Option Description Pro Con
IPv4 first IPv6 later Faster to market Hard to retrofit
Dual-Stack Both from day 1 Future-proof High initial effort

Recommendation: IPv4 first, but design socket API to be IPv6-ready.


E5: Audio Target

Option Description Pro Con
AC97 Standard QEMU Fast to build Emulation only
Intel HDA Modern Hardware Bare Metal ready Very complex

Recommendation: Intel HDA. AC97 is obsolete.


E6: Graphics Target

Option Description Pro Con
Framebuffer GOP, no GPU Simple Slow
GPU Later Prepare KMS-like Extensible High abstraction overhead

Recommendation: Framebuffer with a clean abstraction layer for future GPU support.


E7: Font Stack

Option Description Pro Con
FreeType/HarfBuzz Existing Libs Fast GUI Not "from scratch"
Custom TrueType Built entirely self Full control Months of work

Recommendation: Custom parser for basic glyphs, HarfBuzz later for complex shaping (Arabic, etc.).


E8: Filesystem Design

Option Description Pro Con
btrfs-like (CoW) Snapshots, Checksums Modern, safe Complex
ext4-like Journaling, simpler Proven Fewer features

Recommendation: CoW-based. Crash-safety without a journal is elegant.


E9: App-Sandbox

Option Description Pro Con
Android-like Manifest per App Fine-grained Complex infra
Unix + Sandbox UID/GID + optional profiles Simpler Less modern

Recommendation: Unix as a base, Sandbox-profiles for critical apps.


E10: Target Hardware

Define 1-2 concrete configurations for driver priorities:

Component Recommendation
CPU Intel Core (Gen 8+) or AMD Ryzen
Disk NVMe (Primary), AHCI (Fallback)
NIC Intel i225/i226 (Primary), e1000 (Fallback)
USB xHCI (Intel/AMD integrated)
Audio Intel HDA (Realtek Codec)
GPU Framebuffer only (GOP), Intel iGPU later

Part 4: Resources & References

Specifications

Topic Document
UEFI UEFI Specification 2.10
ACPI ACPI Specification 6.5
x86-64 Intel SDM Vol. 1-4
PCIe PCI Express Base Spec 5.0
NVMe NVM Express Base Spec 2.0
xHCI xHCI Specification 1.2
USB USB 3.2 Specification
Intel HDA High Definition Audio Spec 1.0a
ELF ELF-64 Object File Format
TrueType TrueType Reference Manual

OSDev Resources

Resource URL
OSDev Wiki https://wiki.osdev.org
OSDev Forum https://forum.osdev.org
Bona Fide OS Dev http://www.osdever.net
Linux Kernel Source https://github.com/torvalds/linux
SerenityOS https://github.com/SerenityOS/serenity
ToaruOS https://github.com/klange/toaruos
Redox OS https://gitlab.redox-os.org/redox-os/redox

Appendix A: Syscall List v1 (Draft)

This list is a starting point. Expand as needed.

Process Management

No. Name Description
0 sys_exit Terminate process
1 sys_spawn Start new process
2 sys_exec Replace program
3 sys_waitpid Wait for child
4 sys_getpid Get own PID
5 sys_getppid Get parent PID
6 sys_kill Send Signal/Event

File Operations

No. Name Description
10 sys_open Open file
11 sys_close Close handle
12 sys_read Read
13 sys_write Write
14 sys_seek Change position
15 sys_stat Metadata
16 sys_fstat Metadata via handle
17 sys_mkdir Create directory
18 sys_rmdir Delete directory
19 sys_unlink Delete file
20 sys_rename Rename
21 sys_readdir List directory

Memory

No. Name Description
30 sys_mmap Map memory
31 sys_munmap Unmap memory
32 sys_mprotect Change permissions
33 sys_brk Expand heap

IPC

No. Name Description
40 sys_pipe Create pipe
41 sys_dup Duplicate handle
42 sys_dup2 Replace handle
43 sys_poll I/O Multiplexing
44 sys_futex Fast Userspace Mutex

Network

No. Name Description
50 sys_socket Create socket
51 sys_bind Bind address
52 sys_listen Listen
53 sys_accept Accept connection
54 sys_connect Connect
55 sys_send Send
56 sys_recv Receive
57 sys_setsockopt Socket Options

Time

No. Name Description
60 sys_clock_gettime Read time
61 sys_nanosleep Sleep

System

No. Name Description
70 sys_ioctl Device control
71 sys_mount Mount
72 sys_umount Unmount
73 sys_reboot Reboot/Shutdown
74 sys_sysinfo System info

Appendix B: Time Estimation

Phase Weeks Cumulative
Infrastructure 2 2
UEFI Loader 3 5
Kernel Basics 5 10
ACPI & Timers 3 13
Memory Management 5 18
SMP & Sync 5 23
Scheduler & Threads 7 30
Processes & Userspace 8 38
IPC 4 42
VFS & FS 10 52
Block Drivers 6 58
Custom FS 12 70
Networking 15 85
USB & Input 10 95
Audio 7 102
Graphics & Compositor 18 120
Desktop & Widgets 15 135
Applications 25 160
System & Security 15 175
Power & Hardware 10 185
Installation 10 195
Polish (RC) 15 210
Swap & Disk Encryption 10 220
TLS & Cryptography 15 235
WiFi & Bluetooth 25 260
Advanced Networking 15 275
Package Manager & SDK 20 295
Peripherals & Printing 15 310
Accessibility & Multi-Monitor 20 330
Advanced QA & v1.0 20 350

Total: ~350 Weeks ≈ 6.7 Years (Full-time, single developer)

The original 210 weeks covered ~60% of a full OS. The new phases 22–29 add ~140 weeks for the missing areas.

Significantly faster with an AI agent or team.


Good luck with the development!