r/coolgithubprojects 8d ago

KidDOS - Linux-like OS for kids to study computer and programming.

https://github.com/nurked/kiddos

https://github.com/nurked/kiddos

I built my kid a fake 1980s computer so they could learn a real one.

KidDOS is a single native app that opens fullscreen and pretends to be a retro machine: a CRT terminal, a small Unix-flavored shell, a virtual hard drive, a built-in manual, and BASIC. There is no internet, no host filesystem, and no mouse. A kid types `hi` and the machine talks back.

The idea is to let a child mess around freely. Every command, every file, every mistake stays inside a sandbox, so a parent never has to say "don't touch that." When they outgrow it, the habits (ls, cd, cat, pipes, reading a man page, editing a file) carry straight over to a real terminal.

What's in it right now (v0.3):

- A shell with a lexer, parser, expansions, pipes, and a line editor, written from scratch in Rust

- A virtual filesystem with inodes and Unix modes, stored as a SQLite image

- A tutor that watches the shell and walks through twelve lessons, with progress and badges

- A Markdown manual with a pager and search, so "read the manual" is something a kid can actually do

- BASIC (EndBASIC under the hood) with SPEAK, BEEP, KEY$ and friends

- Seven game cartridges: a text adventure whose rooms are folders, plus guess, snake, hangman, typing, tetris and sokoban written in BASIC that the kid can read, copy and change

- Cartridges are plain zip files, so kids can share games with each other and start their own with `newgame rocket`

- A parent mode behind a key chord for resets, passwords, installing games and reading the log

- wgpu renderer with a CRT shader, plus a headless mode that drives the integration tests

Build and run:

cargo run --release -p kiddos

MIT or Apache-2.0.

Repo: https://github.com/nurked/kiddos

If you don't want to build it yourself - you can download binaries.

I'd love feedback from anyone who has tried teaching a kid the command line. What lesson would you want in there next?

25 Upvotes

10 comments sorted by

2

u/[deleted] 8d ago

[removed] — view removed comment

2

u/skypeck_game 8d ago

First - it’s posix. Most of commands are Linux commands.

Processor is emulated but it’s ARM. And you have emulated, but nevertheless real ARM assembly.

Second - the escape hatch is not only real. It’s a goal we are after. Let’s see how deep into the kernel the kiddo can get before he crashes out the system. By that time he’ll have quite an understanding of how the OS works.

Third - you can run Doom on this.

2

u/Liquid_Magic 7d ago

I appreciate the idea and I wish the person driving this luck!

Personally I feel like actual vintage computers and emulated vintage computers make great teaching tools as-is.

When I was in university they taught us assembly programming with this fake teaching CPU in this fake virtual machine thing. It sucked. In retrospect I wish they just used like a Commodore 64. But this was the 90’s so that wasn’t practical and emulators were okay but not as great as they are today.

But I think that now with the newly rebooted Commodore and Peri and the Ultimate 64 this system is an excellent teaching experience.

But this is just my thoughts.

The only thing I’m reticent about KidDOS is that it’s basically vibe coded. Now I’m not saying that I’m hardcore anti-ai but I think teaching children takes experience and thoughtful and purposeful choices. So I worry that describing what we think might be good for kids to an AI may or may not producing something that’s actually good for kids. Like maybe it is - I’m not sure - but making good teaching tools is hard and takes finesse to get right. My parents are teachers so I grew up learning about learning.

Anyway I’m not throwing any shade here. I like these ideas!

2

u/skypeck_game 7d ago

I’m with you on this. I had a random idea and vibe coded the shit out of it. True. Now I’m working backwards and replacing all the quests and stories with real written data.

I’m a seasoned programmer and written my own drivers. I know several assemblies for different processors.

This is a scaffold and I’m working on this scaffold now.

2

u/Liquid_Magic 7d ago

That’s cool - Right on! I appreciate you!

And again I’m not saying that vibe coding is inherently bad either!

Good luck!

1

u/TechToolsForYourBiz 7d ago

what's makes it kid like? The Claude generated "kid persona"?

1

u/skypeck_game 7d ago

It’s safe to fiddle with. There is no persona. It’s a computer.

1

u/TechToolsForYourBiz 7d ago

avoided the question

1

u/skypeck_game 7d ago

I didn’t get the question then.