
SerenityOS – a graphical Unix-like OS for x86, with 90s aesthetics - yankcrime
https://github.com/SerenityOS/serenity
======
akling
Hello friends, author here! Fun to see my project on HN again.

If you would like to see the system in action, I did a demo video in March[1]
and one in April[2].

I’m happy to answer any questions you might have about the system. I’m not an
expert on operating systems, but I can be pretty productive :)

[1] [https://youtu.be/hE52D-zbX3g](https://youtu.be/hE52D-zbX3g)

[2] [https://youtu.be/RBr5If8GrM4](https://youtu.be/RBr5If8GrM4)

~~~
pizlonator
This is seriously awesome work. Productive is an understatement, damn.

~~~
hestefisk
Second that statement. I don’t know how you have time or money to develop
something mine this. Shock and awe!

------
userbinator
_Roughly speaking, the goal is a marriage between the aesthetic of late-1990s
productivity software and the power-user accessibility of late-2000s_ nix.*

In other words, a Windows GUI with a Unix-like CLI? That's something I can
certainly agree with --- Windows has traditionally been very lacking with its
CLI, while the Unix-ish systems (including Linux) seem to be quite fragmented
and awkward at GUIs.

I also thought the terminal font looked familiar, then realised it's either
the same as or a very close version of the "misc-fixed" fonts[1] that I use in
my terminals and for editing plaintext (including source code) --- it even has
the slashed zero that I added to mine, and which the original fonts lacked.
The general UI font looks like a proportional version of it, which I've
honestly never seen before but think it's quite pleasing too.

[1]
[https://en.wikipedia.org/wiki/Fixed_(typeface)](https://en.wikipedia.org/wiki/Fixed_\(typeface\))

~~~
akling
Totally agree about Windows GUI's and Unix CLI's. Sprinkle some MacOS on there
and you have my vision for Serenity.

All the fonts are hand-bitmapped by me, using the included FontEditor
application. I was trying to construct the imaginary love-child of Tahoma and
Fixed, so you are definitely on the right track there.

~~~
sbuk
Surely OpenSTEP does this?

~~~
toothandtail
[https://en.wikipedia.org/wiki/NeXTSTEP](https://en.wikipedia.org/wiki/NeXTSTEP)

------
reaperducer
I think this is an impressive achievement, and certainly something I could
never do. But I'm a little disappointed in the state of desktop operating
systems these days. I don't see any innovation. Every OS is just splashing
chrome on the same WIMP paradigm that's been available to consumers for 35
years.

Maybe I'm looking for the equivalent of a flying car, but I wish someone would
come up with an OS, or even just an OS feature that makes people say "wow!"

Is there a college lab or a research department or some other place where
people are trying really _different_ things?

~~~
nineteen999
At the risk of sounding inflammatory (which is not my intention), what I'd
like to see is the FP and RIIR crowds getting their hands dirty and write a
hobby OS like this up to this level in their language of choice. If that means
they need to assemble a stable ABI/API that other programmers can build
against, then that's the challenge.

C/C++ programmers have been building their own hobby OS's non-stop since Linux
came out. There's lots of example code out there for initializing the bare
metal, writing bootloaders, task switching, controlling the MMU there for
those languages. I even got a certain distance myself nearly 20 years ago, and
I'm a complete hack. I only gave up because I never figured out how to
initialize VESA graphics from protected mode, and I sure as hell didn't want
do it with 16-bit code from the bootloader.

We all know what a disaster area C/C++ are, the number of CVE's we see in the
Linux kernel and userland because of this, etc etc, we hear about it every day
on HN. So I personally like to see some of those people put their money where
their mouth is. I think that would be an innovation.

~~~
iamnothere
The Redox OS project is doing this, in Rust. [https://www.redox-
os.org/](https://www.redox-os.org/)

~~~
nineteen999
Yes I'm aware of this one as well. Although again, the GUI toolkit doesn't
look like much yet compared to the example we're discussing. And this one is
written by one guy, Redox not so much.

Great to see examples that are getting close though, although I think my point
stands that they are nowhere near as numerous or complete as their C/C++
counterparts.

~~~
iamnothere
True, although I'd personally rather see a focus on getting the backend right
-- I think that's what Redox is focusing on. There are many options for
"pretty" frontends, especially on Linux, but there are very few OSes out there
with a decent approach to security. (Rust's inherent safety should help with
that, although it's not magic security fairy dust by any means.)

------
eismcc
Previous discussion on HN:

[https://news.ycombinator.com/item?id=19537807](https://news.ycombinator.com/item?id=19537807)

------
poisonarena
34 year old here.. about every year I set up a whole OS 9 emulation deal
because of my obsession with Mac OS 9, I dont know if I am sad and dwelling on
the past, but I just loved that OS so much and keep trying to get back to it
and I know I am not alone. I love to see projects like these

~~~
asark
Screenshots of 90s operating systems are so _relaxing_. I miss interfaces that
looked like interfaces, and distinct from content.

~~~
seanvk
BeOS is another one that comes to mind.

~~~
asark
That BeOS didn't become a serious, long-term contender in the desktop OS
market is a sure sign we're not living in the best of all possible worlds.

~~~
coldacid
That Amiga never achieved any success outside of niche SFX markets is a sure
sign we're not living in the best of all possible worlds. (Although that's
more 80s than 90s.)

------
Sendotsh
I love the idea of a modern OS with the 90s function-over-form aesthetic.
There’s immense beauty for me in function, and the 90s was without a doubt the
peak of OS design.

~~~
davidw
> and the 90s was without a doubt the peak of OS design. reply

Also, and surely not at all correlated with my youth, it was the peak of good
music.

~~~
ianai
90s kid, you’re both wrong. OSX was a forreal big deal. Would google or Apple
have built smartphones on FOSS OSes without an OSX? Music has definitely blown
up and gone full post modern though. You can probably get an endless stream of
whatever sound floats your boat for 10$/ month. Or free.

~~~
forgotmypw3
OS X Server 1.0, which I agree is an amazing OS, came out in 1999.

It was based on NeXTSTEP, first released in 1988 and developed up to 2000.

------
nonbirithm
I love the aesthetic of 90's/00's desktop interfaces and use bb4win and
openbox to recreate the look. It's too bad everything is so much flatter and
antialiased in most recent operating systems. I purposely got myself a lower
resolution monitor (in 4:3) so the bitmapped fonts I use are easier to see. I
wonder if there's a WM that can mimic the look of old versions of GNOME/KDE
more closely.

~~~
Crinus
> I purposely got myself a lower resolution monitor (in 4:3) so the bitmapped
> fonts I use are easier to see.

Unless you use a CRT, i'd recommend to get a 1366x768 monitor with a VA panel.
The low DPI makes pixels look crisp, if you game you'll get great performance
even with low end hardware while you'll be able to play a lot of older games
in a natively supported resolution (1024x768, centered) without UI issues and
(the reason for VA) you get deep blacks (not as deep as OLED but certainly
better than the washed out garbage you get with IPS panels) which are great on
both movies and games. The main negative of VA is low refresh, but unless you
are playing competitive games you should be fine.

If you use a CRT, then carry on. Although note that those guns wont live
forever and they do wear out. I use mine only on the occasion i want to play
some old 2D game that simply doesn't work with anything other than its
"native" resolution.

~~~
RandomGuyDTB
CRT rot... the grim reaper lurking behind the few remaining good monitors. I
wish someone would make high-quality CRTs again, every time I use my C1701 I
feel like I'm slowly desecrating an artifact- that I shouldn't be so
shamelessly using such a limited resource. I suppose there's a chance I'll be
able to keep up using CRTs until I die but I really am not ready to switch my
old setup to an LCD.

~~~
AnIdiotOnTheNet
It's interesting that no one does. Between the various retro-gaming and
computing crowds one would think there's enough of a market for CRTs that at
least one company would still be making them.

~~~
Crinus
Well, most CRTs had mediocre image quality and people today remember a only
the best of them (Sony, LG) which limits options and even then AFAIK it isn't
exactly easy to make and distribute them which means a new CRT of good quality
will cost _a lot_ (in the four digit category). Also consider that it is
already impossible to find OLED PC monitors and OLED panels are still is mass
production so the machinery is there (CRT production machinery is probably
either rotting or gone).

But yeah, if there was a brand new one i'd buy it without much thought.

------
TBF-RnD
Kinda broke right now but consider his patreon the world needs more of this!!

~~~
akling
Thank you for shouting out my Patreon![1]

I'm never going to ask anyone for money, but I'm extremely grateful that some
people have chosen to support this project financially.

The only "goal" I have set up on Patreon is hitting 1000 supporters. If things
ever get that crazy, I'll stop whatever I'm doing and focus only on Serenity.
For now that's just a fun daydream though :)

[1] [https://www.patreon.com/serenityos](https://www.patreon.com/serenityos)

~~~
repolfx
If you don't mind me asking, how do you support yourself and why did you
choose to dedicate your time to this project?

~~~
akling
Sure, I don't mind. I've been living off of savings for a while, trying to
figure out what to do with myself. Savings don't last forever though, so I'm
actually starting a programming job next week.

I originally thought I would learn something new instead of programming, but
then I started working on this and got caught up in all the fun. It wasn't a
"business decision" of any kind :)

~~~
TBF-RnD
What a hero!

I sympathize since I am also doing open source projects full time so I know
that the struggle is real!

------
PunksATawnyFill
Sure the aesthetic is old-school, but look how much more informative a proper
GUI is. You can tell immediately which item in the task bar is active.

"Flat" UI is both lazy and an overreaction to the ridiculous skeuomorphism
that plagued us years ago.

~~~
Kuraj
> "Flat" UI is both lazy and an overreaction to the ridiculous skeuomorphism
> that plagued us years ago.

I like to think that by trial and error we will eventually get back there.
Microsoft is already moving away from the flat aesthetic to a more
"materialish" design.

------
sscarduzio
I love the retro look and feel, would be cool to have something like this as a
theme or window manager for (modern) linux.

------
xvilka
CDE project also should move from SourceForge to GitHub or GitLab to gain
better visibility, and more contributors.

------
jasoneckert
I'm somewhat disappointed that they didn't call it SerenityNOW...

~~~
awifstrand
An Operating System for The Rest of Us.

------
Waterluvian
I've been conditioned to think crashy windows 95 when I see that aesthetic.
Which is unfair. Because it's really quite clean and straightforward.

------
logicprog
I would so love to contribute to this! I love the layout, aesthetic, and the
approach to the internals that you've taken; I would use this in a heartbeat
to be honest.

Unfortunately although I know C++ I don't really know much about OSdev. If
there's any way I can help, I have a few months of free time (summer break)
that I'm looking to fill!

~~~
akling
There’s so much more to operating systems than what people usually think of as
“OS dev”.

Wanna write a Tetris game for an obscure new OS? Here’s your chance! How about
a bitmap editor (like MS Paint)? Maybe some cool graphical effect demos?
Perhaps you’d like to write a telnet client? An FTP client? Or a disk usage
visualization tool! Just look at all the stuff that comes with an OS like
Win2K or your average Linux distro. :)

~~~
logicprog
That's very true! Just starting out working on your project with the File
Manager showed me that there's a lot I can contribute.

My short term goal is to make a settings manager.

------
initself
Why "unix-like" and not just Linux underneath, with the (really) cool 90s
productivity software on top?

~~~
andrekandre
probably because that’s just not as fun, i would imagine a huge part of it is
implementing everything from the low level to the high, and seeing how it all
works together ^_^

~~~
akling
Correct! It's fun to control the whole stack. And while I've been programming
on POSIX systems for over 10 years, I've learned more about POSIX programming
in the last year than in all the preceding years. There's no better way to
understand something than to implement it.

And staying within a Unix-y paradigm means that if some part(s) become too
good, they can be semi-easily ripped out and turned into portable
libraries/programs instead.

------
bradenb
This looks amazing. I love the aesthetic. I wish I could bring myself to
commit to such a large hobby project.

------
0815test
Looks a lot like Linux with a fvwm95 interface on top. I mean, it's always
great and so exciting to see something totally new being created from scratch!
But you don't actually _need_ to switch to some entirely homegrown, untested
kernel for that 1990s UI fix! ;-)

~~~
coldacid
One could always also throw together a virtual machine for running Windows 3.1
like I keep doing.

~~~
Jaruzel
For _most_ non-technical people, a Windows 3.1 type GUI is all they need.

~~~
AnIdiotOnTheNet
Stop this. It's condescending and part of the reason no one like tech people.
It's also one of the core reasons the Linux Desktop never took off: "you don't
need that, you just need (simple usecase that I envisioned because it was
easy)."

~~~
Jaruzel
Really? I'd argue that Android and iOS have proven that the simpler the GUI,
the easier it is for the masses to use them.

Imagine if working a car was as complicated as your average desktop OS. There
would be a lot less people driving that's for sure.

~~~
IggleSniggle
A lot less people driving, but the people who did drive would have a higher
chance of being able to repair them without going to a specialist.

------
pcdoodle
Dude, the "VB6 like" window builder is amazing. The whole process of put
button on form, double click button to put code inside button is what got me
started in programming. Will you have something like this?

~~~
akling
Hi pcdoodle. I am also very fond of that style of programming, and it's
something I'd like to explore down the line.

In the immediate future though, the visual builder tool is limited to
generating C++ that you then glue together with the rest of your program. But
one day :)

------
Koshkin
Also, a good example of a clean modern C++ code.

~~~
humanrebar
Mostly. A good portion of the AK subdirectory should be replaced with standard
and/or boost functionality, though:

[https://github.com/SerenityOS/serenity/tree/9153666e72effdf5...](https://github.com/SerenityOS/serenity/tree/9153666e72effdf56ce19332f953caff7d173a7e/AK)

~~~
olliej
Presumably the intent is not to depend on boost, but rather only standardized
parts of the language.

Also using something like boost ties you to a specific version of boost due to
the wonders of c++ abi - your OS libraries can’t expose anything that
explicitly or implicitly includes things that aren’t ABI stable.

(I’m sure kling is already requiring 100% stable abi :) )

~~~
humanrebar
Fair, but I was replying to this being a good example of modern C++. It's
atypical that implementing your own vector and string is even a good idea, let
alone exemplary.

~~~
Crinus
On the contrary, the standard vector and string classes are garbage UX-wise
(e.g. unlike pretty much every other single dynamic array implementation in
existence, vector does not have something like an "index of element" method
and instead you are supposed to use std::find and subtract iterators with a
special check for when the element wasn't found... like, WTF).

~~~
humanrebar
OK, fine. Then use std::string_view, etc., which are cleaner and more
efficient usually. There are several reasons why C++ open source is hard to
reuse, and not using standard types appropriately is one of them.

~~~
akling
This entire project is about implementing already-existing functionality in
its own way, with minimal dependencies, for fun.

Its use of the C++ _language_ strives to be modern. There is no attempt to use
modern 3rd-party C++ frameworks.

------
hardbop200
Awesome work!

Just curious: Why did you choose to take on the entire OS instead of building
on top of an existing distro as a base?

~~~
akling
Thanks hardbop200! Partly it's because I'm the kind of person who just loves
hacking on tall stacks. Before this, I was doing browsers for many years,
which has many traits in common with operating systems.

Speaking more emotionally, I feel like *nix used to be a lot of fun and full
of hacker's spirit, and it's just not like that anymore. Things aren't simple
anymore, and they can't easily be taken apart and understood in an evening,
like they used to. So I figured I can just make my own then, just the way I
like it :)

~~~
nickpsecurity
If you like understandable tools, you might enjoy some of the projects the
bootstrapping crowd posted to the page below. It's not very organized since it
was just a dump site for work that a small crowd of people were taking
inspiration from.

[https://bootstrapping.miraheze.org/wiki/Main_Page](https://bootstrapping.miraheze.org/wiki/Main_Page)

------
meddlepal
This is awesome. Love the 90s aesthetic!

------
agumonkey
Can't say that the screenshot made me feel at peace. It seems like a sweet
spot for non newb usages.

------
ben165
Interesting project. How far are you away from including a native
compiler/assembler?

~~~
akling
GNU's binutils and GCC have both been ported to Serenity and work right now.
So not very far away at all! I got it working properly ~1 month ago, here's a
video I posted that day:
[https://www.youtube.com/watch?v=lO4XBggjZGk](https://www.youtube.com/watch?v=lO4XBggjZGk)

(A lot of performance work followed after that recording. There's still a lot
to do, but the 30 second compile time is now down to ~2.5 seconds. 80% of the
speedup was from implementing DMA disk transfers, and the other 20% from a
faster malloc().)

------
8lall0
Joining the best of both worlds, i love it. Kudos :)

------
sys_64738
Looks like Windows 95.

~~~
mixmastamyk
Which looks like nextstep.

~~~
oblio
Does it, though?

Windows 95:
[https://en.wikipedia.org/wiki/Windows_95#/media/File:Windows...](https://en.wikipedia.org/wiki/Windows_95#/media/File:Windows_95_at_first_run.png)

vs Nextstep:
[https://en.wikipedia.org/wiki/NeXTSTEP#/media/File:NeXTSTEP_...](https://en.wikipedia.org/wiki/NeXTSTEP#/media/File:NeXTSTEP_desktop.png)

Yeah they're both light grey, but other than that, they don't really look
similar to me...

~~~
ch_sm
When comparing Windows 95 to other Operating Systems of its era (Windows 3.1,
Mac OS 7.1/7.5 or OS/2) it becomes more apparent that they must have gotten
inspired by NeXTSTEP.

------
_bspline
>A graphical OS for x86, with 90s aesthetics

>90s

>aesthetics

wat?

~~~
AnIdiotOnTheNet
Yes. Simplicity and function over form. 90s buttons looked like buttons, for
instance. And theming was a simple matter of changing your fonts and colors.
Windows 95 didn't need a special 'dark mode' supported by the OS, because you
just changed your colors in the GUI tool for changing colors and fonts and you
were done.

Modern GUIs are ridiculous and stupid and overcomplicated. Much like most of
modern computing.

~~~
TurkTurkleton
> Windows 95 didn't need a special 'dark mode' supported by the OS, because
> you just changed your colors in the GUI tool for changing colors and fonts
> and you were done.

You're over-romanticizing the past. There were plenty of apps even in the
Windows 95 era that drew their own widgets and only half-respected the colors
you set in the control panel, and that consequently looked like pureed ass if
you changed the colors from the default.

~~~
AnIdiotOnTheNet
Yes, and just like today that was stupid. It was just a lot less common than
today's Electron bullshit. Hell, there were _games_ that used native widgets.

One of the big complaints about Java used to be that it didn't use native
widgets and consequently looked out of place, but nowadays that is basically
every application.

It's ridiculous.

------
sfUsr
Serenity now!

------
apotatopot
couldn't you just contribute to lxde or xfce or something?

------
joshenders
Get Actual Pixel Artists To Design The UI

~~~
akling
I don't have the money to spend on that sort of thing. I do have a dreamer
Patreon for the project, but it's all very modest :)

I'll continue iterating on the look though. Here's a more recent demo that
shows a bunch of pixel-related improvements:
[https://www.youtube.com/watch?v=pS56tlXFmEk](https://www.youtube.com/watch?v=pS56tlXFmEk)

~~~
spronkey
May I suggest using the Windows 2000 warm grey instead of the Windows 95 grey?

It does a lot to make the UI feel less dark

~~~
akling
That's not a bad idea! I spend a lot of time hacking at night, with my monitor
in "night mode" (warmer colors), so I didn't think much about how cold they
look in the daylight.

I should eventually add color theming so this can be done from a single place,
and then I'll be sure to add a warmer option, too. And probably make it the
default after I see how nice it looks :)

~~~
spronkey
Even better, haha! Seriously impressive work though - one of these projects
that show just how absurdly bloated and slow mainstream OS development has
become.

Also for reference for those unfamiliar with the difference in greys:
[http://actsofvolition.com/images/screenshots/Display-95-thro...](http://actsofvolition.com/images/screenshots/Display-95-through-
XP.png)

