Skip to content
Johan Manuel edited this page Jan 1, 2021 · 6 revisions

Goals

Ultimately, SnowflakeOS is a learning project. It's about seeing how far one can go by implementing things as needed, in the way that seems most obvious at the time. It's the opposite of over-engineering. It's not about being POSIX-compatible, except for the most needed parts, those that allow porting cool software like DOOM.

It'd be awesome to have a community of contributors to this project too, like a shared gardening project of sorts. This wiki is here to guide that spirit! Check out the roadmap below for general (and non-exhaustive) pointers, the list of open issues, and the other wiki pages for contributing guidelines.

Roadmap

Where exactly is this project going? Everywhere, according to this list of goals the author feels would be cool to have:

  • good file system support
    • virtual files representing processes, maybe windows, maybe other things
    • pipes of some sort
    • stdout support: reworking processes
  • more drivers
    • a disk driver
    • an ethernet card driver, and who knows, a full ip stack
    • a soundcard driver!
  • a window manager in userspace
    • shared memory
    • resizing windows
    • a fixed memory pool for clipping rects
  • a more complete C library
    • ✓ enough to satisfy DOOM
    • ✓ a solid and complete sprintf family of functions
  • a general purpose ui library
    • text elements
    • more customization options
  • more userspace apps
    • basic versions of the usual ones like cat, grep, ps
    • graphical ones
      • an application launcher
      • improving the existing paint clone: saving, opening, colorpicker, brushes...
      • ✓ making the calc app actually do anything
      • a more proper file manager than the existing files app
      • a text editor!
      • a terminal that's separate from the shell it runs
Clone this wiki locally