From 9c103218d028be6b4f1e94536dd04ba376920001 Mon Sep 17 00:00:00 2001 From: Karina Date: Fri, 30 Jan 2026 00:52:43 +0400 Subject: [PATCH] docs: readme and roadmap --- README.md | 37 +++++++++++++++++- ROADMAP.md | 110 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 145 insertions(+), 2 deletions(-) create mode 100644 ROADMAP.md diff --git a/README.md b/README.md index dfd5e8e..e6afd30 100644 --- a/README.md +++ b/README.md @@ -4,6 +4,39 @@

-Just a hobby, won't be big and professional like Linux +> "Just a hobby, won't be big and professional like Linux." +> — *Linus Torvalds (and now me)* -Really WIP. And really just a hobby. +**termOS** is a 64-bit, UNIX-hating, bespoke operating system written from scratch in C. + +Current Kernel: **Dewar** (v0.5.x) + +## Philosophy + +- **Zero Bloat:** We don't port libraries; we write them. +- **Custom Everything:** Why use ELF when you can invent **HOT!**? Why use GRUB when you can write your own bootloader (soon)? + +## Features (v0.5.2) + +- **Architecture:** x86_64 / UEFI. +- **Memory Management:** PMM (Bitmap), VMM (PML4 + Higher Half Direct Map), Kernel Heap. +- **Multitasking:** Preemptive scheduler with Round Robin. +- **Isolation:** Ring 0 (Kernel) / Ring 3 (Userspace) protection. +- **Binaries:** Custom **HOT!** executable format (parsed via custom `elf2hot` toolchain). +- **Filesystem:** VFS abstraction with CPIO Initramfs support. +- **Graphics:** `ShitGUI` (yes, really) linear framebuffer driver. +- **Shell:** `ksh` (Kernel Shell) -> transitioning to userspace `ush` + +## 🔥 The HOT! Format + +termOS uses its own executable format called **HOT!**. +Because parsing ELF headers is too mainstream. HOT! is a flat, segment-based format designed specifically for the Dewar kernel loader. +Made only because ELF is *Not-invented-here* + +## Roadmap + +See [ROADMAP.md](ROADMAP.md) for the detailed plan of world domination (or at least self-hosting). + +## License + +**GPL-3.0-or-later**. \ No newline at end of file diff --git a/ROADMAP.md b/ROADMAP.md new file mode 100644 index 0000000..b19638e --- /dev/null +++ b/ROADMAP.md @@ -0,0 +1,110 @@ +# termOS Roadmap + +## Legend +- ✅ **Done**: Implemented and working. +- 🚧 **WIP**: Currently under active development. +- 📅 **Planned**: Scheduled for future releases. +- 🤔 **Vision**: Long-term goals for v1.0. + +--- + +## Current Status: v0.5.2 (Alpha) +*Where we are now.* +- **Core:** Ring 0 / Ring 3 isolation implemented. +- **Mem:** PMM (bitmap), VMM (PML4, HHDM). +- **Exec:** Custom **HOT!** executable format (static loader). +- **FS:** VFS + Initramfs (CPIO, read-only). +- **User:** Basic jump to userspace (hardcoded stack, no heap yet). + +--- + +## 📅 Phase 1 +*Goal: Transform the decorative userspace into a functional mechanism.* + +### v0.5.3 (Immediate Priority) +*Focus: Lifecycle & Memory* +- [ ] **Syscall: Memory Management** + - Implement `sys_sbrk` or `sys_mem`. + - Allow userspace to dynamically allocate pages (User Heap). +- [ ] **Syscall: Process Lifecycle** + - `sys_spawn(path)`: Load `.hot` files via VFS, create new process structures. + - `sys_exit(code)`: Proper termination, ZOMBIE state, resource cleanup in scheduler. +- [ ] **Userspace Lib (mini-libc)** + - Wrappers: `malloc`, `free`, `exec`, `exit`. + - `crt0.asm` for proper `main()` entry. + +### v0.5.4 (The Shell Update) +*Focus: Interactive Userspace* +- [ ] **Userspace Shell (`ush`)** + - Porting `ksh` logic into a standalone `.hot` binary. + - Standard I/O abstraction (stdin/stdout) to pass keyboard input to active process. +- [ ] **Basic Utils** + - `ls`, `cat`, `echo`, `ver` as standalone programs. + - Remove built-in commands from the kernel. + +--- + +## 📅 Phase 2 +*Goal: Total independence from external libraries and architectural hygiene.* + +### v0.6.0 (Architecture Overhaul) +- [ ] **Bootloader Independence** + - Remove `posix-uefi` library. + - Write custom UEFI entry point (pure PE). + - Kernel itself becomes a valid `.hot` executable (or loaded by custom bootloader). +- [ ] **HOT! Format Hardening** + - Fix segment alignment (Page Alignment) in `elf2hot` and kernel loader. + - Add metadata headers (stack size, permissions). +- [ ] **Concurrency Fixes** + - Implement spinlocks (`spinlock`). + - Protect allocator and process lists from interrupt race conditions. + +--- + +## 📅 Phase 3 +*Goal: Prepare the environment for self-hosting. We cannot compile on a Read-Only FS.* + +### v0.7.0 (Filesystem & Input) +- [ ] **Write Support** + - Storage driver (NVMe/AHCI or Writable RAMDisk). + - Writable Filesystem (FAT32 or custom simple FS). +- [ ] **Input Subsystem** + - Input buffering, Pipe (`|`) support in shell. + - Basic TTY/PTY abstraction. + +### v0.8.0 (The Editor) +- [ ] **Text Editor** + - Write a simple editor (nano-like) in userspace. + - Capabilities: Open, Edit, Save files. + +--- + +## 📅 Phase 4 +*Goal: Self-Hosting.* + +### v0.9.0 (The Toolchain) +- [ ] **Linker (`hld`)** + - Native linker capable of outputting `.hot` files (running inside termOS). +- [ ] **Compiler Port** + - Port **TCC (Tiny C Compiler)** to termOS. + - Adapt libc headers for the OS environment. + +### 🤔 v1.0.0 (Self-Hosting) +- [ ] **Bootstrapping** + - Compile the Dewar kernel *inside* termOS. + - Boot from the newly compiled kernel. + - Total victory. + +--- + +## 📜 History + +| Version | Date | Key Features | +| :--- | :--- | :--- | +| **v0.5.2** | 2026-01-30 | **HOT!** format, Ring 3 isolation, VFS, CPIO parsing. | +| **v0.5.1** | 2026-01-29 | Initial userspace jumps, syscall mechanics. | +| **v0.5.0** | 2026-01-29 | Kernel officially named "Dewar". Versioning standardized. | +| **v0.4.x** | 2026-01-28 | Basic VFS, Shell improvements, basic multitasking. | +| **v0.3.x** | 2025-12-30 | Scheduler, ~~Composer~~, Heap manager. | +| **v0.2.x** | 2025-12-28 | `ksh`, Keyboard driver, HHDM, PMM/VMM. | +| **v0.1.x** | 2025-12-21 | First boot, GDT/IDT, Serial/Console, Panic handler. |