
SerenityOS: From Zero to HTML in a Year - akling
http://www.serenityos.org/happy/1st/index.html
======
airstrike
This is the first time I hear of SerenityOS so I'm honestly amazed to see that
the warm gray of the 1990s is back in style! There's definitely something to
be said about the simplicity of that old school UI.

But more importantly, I really wanted to commend the author on their truly
inspiring approach to criticism (valid or invalid)

I was left with this impression just by looking at his comments on this
thread, but then later came across this video¹ which was posted as a response
to armchair critics on OS News... and the tongue-in-cheek tone is just too
nice for what I'm used to seeing on the internet these days! Congrats on this
huge feat after 1 year of development but above all kudos on being such a nice
person even in the face of seemingly pointless criticism

1\.
[https://www.youtube.com/watch?v=EoScn0X2DFM](https://www.youtube.com/watch?v=EoScn0X2DFM)

2\. Original thread [https://www.osnews.com/story/129716/serenity-a-new-unix-
like...](https://www.osnews.com/story/129716/serenity-a-new-unix-like-
operating-system/#comments)

~~~
akling
I actually brought in the warm gray after spronkey suggested it here on HN:
[https://news.ycombinator.com/item?id=19988813](https://news.ycombinator.com/item?id=19988813)

I ended up loving it so it's stuck since then!

As for handling criticism.. it's something new I've been trying in the last
year. I decided that I don't want to get sucked into negativity anywhere near
this project, so I strive to maintain a positive outlook 100% of the time. It
can be a bit taxing, but I'm convinced it's better than the alternative. :)

~~~
microcolonel
> _As for handling criticism.. it 's something new I've been trying in the
> last year._

Well, I hope you can handle praise. :- )

I unironically love the visual stylings and choice effects of Windows NT
4.0/2000, and where CUA menu bars exist, I often prefer the Mac-style
centralized ones (especially the new ones, with the global search keybinding).
I feel like the obvious idea of making buttons look iconically like _buttons_
should not have been abandoned so hastily, even if it makes it harder to
choose colours for dark backgrounds.

~~~
akling
Thanks microcolonel! (Love your nickname btw, the idle task in the Serenity
kernel is called the "colonel" process :))

Obviously I really dig this GUI style as well. It might seem petty, but part
of what motivates me to work on a browser is wanting to build one that doesn't
cede control over things like button appearance to the web. Not to mention
greater invasions like allowing sites access to desktop notifications, and
other things that should have ended up in a WHATWG trash can.

~~~
microcolonel
One thing I noticed with _Piano_ is that it relies on the keyboard layout. As
a Dvorak typist, I've often wondered if there's some way to do input handling
better, such that applications which are more interested in the position of a
key than its associated symbol (e.g. FPS games looking for "WASD") can just
get the key at that position, instead of looking for a "W". Another gripe I've
had with keyboard layout systems is that there's usually no way of indicating
to the OS that US Dvorak is the natural layout of a keyboard, so instead of
doing nothing when a "US" layout is selected, it translates it from US Dvorak
to US, and does nothing when a US Dvorak layout is selected in software.

Added clarification:

There are at least three important things about keyboards in my view of
things: the symbol or intent of the key, the "position" of the key in a set of
cultural contexts (e.g. typewriter-style keyboards, left hand character
movement controls, etc.), and the actual physical position (relative to other
keys) and form/scale (relative to the world).

~~~
akling
That's interesting. It could be neat to include key position as a field in the
system keyboard events, along with the character, shift states, etc.

In fact, the keyboard scan code is basically position information :)

------
akling
Hello friends! Thanks for checking out my project, it's always fun to have
visitors :)

If you would like to hear the story behind the "Serenity" name, and what led
up to the creation of this OS, I spoke about it a few days ago:
[https://www.youtube.com/watch?v=j3JkNGKZtqM](https://www.youtube.com/watch?v=j3JkNGKZtqM)

Also check out this 1 minute video of the Serenity Browser in action:
[https://www.youtube.com/watch?v=Cu9wONA1MHc](https://www.youtube.com/watch?v=Cu9wONA1MHc)

Ofc I'm happy to answer any questions about the system!

Previous HN discussions:

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

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

~~~
zamadatix
Hey, I'm really glad to see you've continued to work on this - it's one of
those projects that is just naturally fun to watch be made.

How far has the GCC port come? Is the project anywhere near self hosting being
a feasible task?

~~~
akling
Hey zamadatix! I’m glad too, it’s been tons of fun making it.

The GCC port is pretty decent. You can build about 90% of the system inside
itself but you eventually hit some kernel bug that crashes the build,
ironically usually while building the kernel itself. There’s debugging to be
done, but that’s true of the whole system.. We’ll get there eventually.

The fs/disk performance is also quite terrible and, which you can really feel
during builds with GCC. I need to look into what’s happening there as well :)

------
neogodless
Once I saw the screenshot with wallpaper, I felt like "he's done! It looks
done!"

The time commitment is impressive, and there's something reassuring in an age
of consolidated power to see individuals building various levels of software,
particularly where many of us probably haven't ventured due to the unknowns.

Very cool!

~~~
akling
Thanks neogodless! Every now and then I start to feel something like "oh yeah,
this is starting to look almost done" but before I can slow down, I find some
new aspect to work on and improve.

I've finally found a project big enough that even if I'm bored of it, I still
just go and work on some other part of it instead ;)

------
Crinus
This is incredibly interesting. How much time are you working on it?

While i'm not that interested in a full blown OS, some times i find myself
really wanting to work on a new GUI stack for Linux (above X) but the time i'd
need to put on it to become as i like it (which, incidentally, is very close
to what you have here in your OS) makes me think that i'll need to basically
do nothing else - and there are too many games i'd like to play :-P.

~~~
akling
Hi Crinus! As you might guess, I've spent a large percentage of my free time
over the last year on this.

Early on, I was unemployed and living alone, so I was putting 8+ hours a day
into it, every day of the week. Progress was very swift.

Over time I've scaled it down as I've moved to a new place, rejoined
civilization and started a job. Nowadays I'd say I'm doing 3-4 hours on
weekdays and 6-8 on weekends.

I regularly record screencasts of my work and post it to YouTube. I find that
it works amazingly well for staying focused and serious, sometimes I end up
solving something I would like to give up on, simply because I don't want to
abandon a video I've started recording :)

~~~
xvector
I am curious - what motivates you and drives you to contribute so much to
this?

I have been having a hard time motivating myself to do anything really

~~~
akling
It's a blend of a couple things.

First off, it's really fun(!) and I'm learning a ton of things about software,
hardware and even a little bit about people from working with the contributors
who want to help out.

Secondly, I'm building an operating system that I want to use. The
contemporary OS'es don't really appeal to me anymore, for one reason or
another. I realized that if I just focus for a long time, I could probably
build a replacement that looks and works exactly the way I would like instead.
So that's what I've been doing.

Thirdly, it keeps me sane. I've had some serious problems with addiction in
the past, and having something meaningful to dump all of my excess time,
energy and attention into, instead of drugs, has dramatically improved my life
over the last year. :)

------
s0l1dsnak3123
I've been following Andreas on Youtube for a few weeks now. His video on
porting DOOM was my first foray into his work. His videos are very interesting
if - like me - you have done plenty of web and app development, but less
systems-level work.

Keep at it Andreas :)

~~~
akling
Glad you've been enjoying the content! Porting DOOM was pleasantly
straightforward yeah, here's the video if someone is curious what that looked
like:
[https://www.youtube.com/watch?v=a0P_bB6wjhY](https://www.youtube.com/watch?v=a0P_bB6wjhY)

------
mysterydip
Amazing progress! Something I've always wanted to do but lacked the time, so
i'll have to live vicariously through your updates.

I like the VB inspired editor, I have yet to find one that matches the ease of
ise and power of old VB. Does your networking stack support UDP (and
multicast)? Looks like a fun thing to tinker with as a VM :)

~~~
akling
Thanks mysterydip! The networking stack supports UDP but not multicast (yet.)
I'd like to think it's pretty hackable though, if you're interested in that
sort of thing :)

------
doyoulikeworms
This is absolutely incredible!! Inspiring and awe inspiring. This is art and
more. Thank you for sharing!

------
daxterspeed
Looks like a fun project, all power too you for doing finding something that
has kept you excited for an entire year!

How far have you gotten into bootstrapping Serenity OS? Is there a public
"roadmap" for what feature you want to work on next?

~~~
akling
Hey daxterspeed! I'm not sure what you mean by bootstrapping.. if you mean
building Serenity inside itself, it's _almost_ possible. You can build most of
the libraries and userspace programs but the kernel panics when trying to
build the kernel itself.. I need to look into why that happens, but it's just
one many many things that need looking into :)

There's no roadmap of any kind, I'm just doing whatever seems interesting and
useful at the moment. I've been working on LibHTML and the Browser app for
over a week now though, and I suspect that's gonna be what I'm doing in the
immediate future as well!

------
isoprophlex
MAD PROPS to you!

Everything has been said by the other commenters but I still want to tell you
that you're doing some highly inspirational work. An antidote to cynicism.
It's nice to see someone doing something out of sheer love of the job.

------
milankragujevic
This is a piece of art. I bow and take my hat off to you, sir!

------
leowoo91
Great job! Can someone please make a series of DIY CPU that can have a casual
performance? I know this one is hard, but would be very satisfying.

~~~
rwmj
RocketChip would be the obvious choice. You can run it (somewhat slowly) on an
FPGA.

[https://github.com/chipsalliance/rocket-
chip](https://github.com/chipsalliance/rocket-chip)

~~~
leowoo91
Thank you, I also like these projects built with ttl. They sound slow but
still enough to render a non-js/html4 web page I guess.

------
sdfjkl
Looking at the timeline, that's some rather impressive productivity,
especially with only being worked on in spare time. Well done!

------
soulofmischief
Hi Andreas, thanks for sharing!

Do you have a mailing list? I don't have any social media and while I've
subscribed to your YouTube and starred the project, it would be easier to keep
up with a monthly digest vs. searching through commits and 20+ minute videos
for the salient bits.

------
LennyHenrysNuts
This is amazing. Truly impressive.

------
c17r
I know you said you post the YouTube progress videos, do you ever livestream
the development work on something like Twitch, Mixer, or YouTube live?

~~~
akling
Hey c17r! I'm not able to stream live at the moment due to my living
situation, but I do regularly post recorded development sessions to my YouTube
channel:
[https://www.youtube.com/c/AndreasKling](https://www.youtube.com/c/AndreasKling)

Check out the "OS hacking" and "Browser hacking" playlists for 20-60 minute
videos of random development tasks all over the system. :)

