summaryrefslogtreecommitdiff
path: root/README.md
blob: f10c938d5469af817ea1ed98c4ae3373a6eaf68d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
# IndigoOS
IndigoOS (name likely to change) will be a Unix-like operating system for x86-64 computers. I'm hoping to implement many things a modern operating system would have, including a desktop environment, pre-emptive multithreading, ASLR, and memory protection. I'd also like to port games such as DOOM and Quake.

# Project scope
While I'm loving this project, I do want it to be "done" at some point so I can work on other things. Because of this, my OS will be very simple, monolithic, and may not have all the bells and whistles of other osdev projects. I'm not planning on implementing my own libc, and when I get to user space, will end up porting a few programs instead of writing my own (such as Xorg or QT). 
With all that out of the way, check out the features.

# Planned Features
* SMP multi-core support
* Preemptive multithreading
* VFS abstraction for filesystem modules
* Unix-like file structure (/proc, /sys, /dev)
* Port of ether X-org or wayland, combined with a complete WM
* Basic network stack
* ex2 filesystem built in
* Pseudoterminals
* Ports of other software I like, such as bash, vim, some old 3d games

# Project status
This project will likely go very slow and take multiple years, as I'm dealing with things such as college and adulting. If there are blatantly obvious bugs, or things look unfinished, I'm still working on them.
Additionally, there's some pretty messy code. I've improved while working on this project, so expect those things to be changed some time down the line.

# What I'm working on now
1. Ensuring palloc() and malloc() are smp safe (current)
2. Creating kernel space threads with primitive scheduler
3. VFS filesystem
4. ACPI, PCI
5. ext2 filesystem
6. Userspace processes!!!
7. IO buffering, process waitlists
8. Improve scheduler
9. Let's not get too ahead of ourselves...