Hacker News new | past | comments | ask | show | jobs | submit login
The 4th Year of SerenityOS (serenityos.org)
430 points by serhack_ on Oct 10, 2022 | hide | past | favorite | 136 comments



I think there is more behind SerenityOS that elevates it above being just another OS project. They've attracted hundreds of contributors and have instilled a unique sense of culture within their community (as an example, going as far to devote an entire GitHub repository to documenting a list of "yak-shaving" yak emojis[1]).

I think that kind of social endeavor isn't something a lot of maintainers can accomplish, not even those with the skills to work on such a project all by themselves.

[1] https://github.com/SerenityOS/yaksplained


I think it’s that most people are doomers and/or are defeated by doomerism. Most people think it’s impossible to build an OS or a web browser (and are told this when they ask for help building one.)

In reality engineering is straightforward, you just need someone to show you how to properly write data structures and algorithms and to break problems down.

Andreas showed these kids this, reinvigorating the web based hacker culture I grew up in. Anything is possible and even if a problem ends up being more than you can handle at least you learned a ton along the way.

Now days searching for how to code leads you to a ton of tutorials about gluing modules together. I feel sorry for young people with that thirst who won’t be satisfied thanks to the commoditization of learning to code.


One of the comments on Kling’s YT stream read:

“Wish we could go back to 2004. Modern web has become toxic af” which embodies the spirit of this community pretty well I think.

Andreas Kling is the messiah that is leading a group of people that are fed up with modernity.


Ironically, by using modern tools.


Modern tools are good, but the culture around it is pretty toxic, and in my own opinion, cringy. 10 years ago you would get booed for saying things like "Unused RAM is wasted ram, so let's build this in Electron". I am happy to see a pushback.


“Unused RAM is wasted RAM” is only relevant if you’re writing an OS.


It's also relevant if you're writing software that's intended to be run side by side with other software.


It's relevant in the sense that you should not be using that as your guiding principle, yes.


Do any operating systems have an API for cache-only memory that the OS is free to discard at will? Maybe there should be because the other end of the spectrum is unneccessarily loading the same things over and over again even though there is lots of excess memory available. Many games are guilty of this, not really taking advantage of overspecced systems.


Actually, Serenity has this, called "purgeable memory". You map your memory in a special way, and have to re-map it to use it. If the system needs more memory, it purges those pages, making it possible to use it as a cache :^)


Neat, found this for a Linux implementation: https://nullprogram.com/blog/2019/12/29/


Most OSes will have this but it's difficult to use as a general API. The main use case is "I freed these pages and will not use them anymore, save on the bookeeping". Anything beyond that is a little dicey because if the OS does reclaim the pages you'll take a fault trying to hit the cache, which can be bad if it happens at an inopportune time. And properly signaling this to applications is hard (SIGSEGV is not a very ergonomic interface).


>Unused RAM is wasted ram,

Sorry but you get that wrong, that's just meant for file buffer and caches etc. NOT actually bloat.


I think revisiting vintage technologies with better modern tools = Win.

It takes advantage of sharp hindsight and correct what was bad, and more importantly keep what worked.


Super welcoming community + a clear and strong vision to guide the project.

Other OS projects I have seen either lack vision (same as x, but written in y), or they are just for the personal learning of the developer who started it.


Is that vision written down somewhere? Surely there is something more than "Unix-like core with the look&feel of 1990s productivity software" keeping people engaged with this project?


That is pretty much it, + everything in one repo so that you can fix bugs anywhere in the stack when encountering them.

While "Unix-like core with the look&feel of 1990s productivity software" sounds simple, it's more than what most new OS projects I have seen provide and it very clearly signals who it's for.

The "look&feel of 1990s productivity software", communicates that the UI will use consistent elements across applications, which is something you only find in Mac OSX these days.

The Super welcoming community is the other half keeping people engaged that you are looking for.


If you ask me:

- write the whole stack yourself so you can fix any problem or make any improvement without external dependencies or coordination - the implementation is never written in stone and it is always possible to move to something better ( which is why you need to control the whole stack ) - no problem is too big to start solving - implement something basic that works and then improve it ( see all of the above ) - evolve everything in the open


Andreas and his project SerenityOS was a huge inspiration for me to start my side project daedalOS (https://github.com/DustinBrett/daedalOS) which I've almost been doing for 2 years now. I really enjoy watching his monthly updates on his channel.


I wouldn't be surprised if, at some point, some commercial project adopts a part of Serenity and turns it into a huge hit, even outside of tech.

Such things have definitely happened in the past.. Not many (average) people have heard of KDE or its web engine, KHTML, but almost everybody these days uses Chrome, which, through Apple's WebKit, is descended from KHTML itself.

Serenity uses its own libraries everywhere, to the point of replacing C++'s std with their own library, AK, which might make stripping it for parts more difficult, but it's certainly not unimaginable.

If Serenity's web engine gets good enough, I can even imagine some EU government sponsoring an independent competitor to the Google / Apple browser duopoly.


Which is why I wish they would use a less liberal and more copy-left license to keep the tech monopolists out.

It is a huge problem that a certain tech monopolist controls the most popular browser in the world and a shame that this browser was build using the free labor of naive volunteer contributors that just wanted to help out an open source project.

Linux would have never been so successful and kept being a free operating system without its GPL license. And even that turned out to be not enough protection, as the user-hostile Android system proves.


> Which is why I wish they would use a less liberal and more copy-left license to stop this scenario from happening.

Huh? You wish SerenityOS's browser engine was not a viable competitor to the Google/Apple browser duopoly? Kind of a weird POV, if you ask me.


I am saying it can only be a viable (user-freedom respecting) alternative to the browsers of the tech monopolists if it enforces copy-left and manages to keep the greedy hands of these and other monopolists out if it.


How on earth is that what you extract from that sentence??


Putting words in his mouth to try to save his argument.



I think he worked on the browser at Nokia before Apple took over.


Didn't he also work on webkit at Apple?


Yes. In fact, he was one of the most prolific WebKit contributors.


Yes.


They’d have to use something that wasn’t a weird proprietary language that only cross compiles to C++ (!) for that to be a thing.

Whether they like C++ or not, no one’s going to want that generated C++ output as a basis for source code, and you’re not going to use the weird single source compiler either.


Only because they aren't a big name company with weight to arm strength developers into using their language on their platforms.


"If Serenity's web engine gets good enough, I can even imagine some EU government sponsoring an independent competitor to the Google / Apple browser duopoly."

...and what is wrong with Mozilla? Why can't they contribute to FireFox?


It's sponsored by Google and USA based.


I follow Andreas on twitter and he is a big inspiration for me when I go look at more challenging problems now.

I have an addictive personality, so far cigarettes are the only thing that got me and only for 4 years, but I largely stay away anything else now because I see how it effected members of my family and how easily someone like myself could go the same way.

Because of that I very much appreciate channeling yourself into something as ambitious as an operating system instead. It's actually the same way I've built any of my best work and how I've gotten even this far in my career. The line I say is: programming keeps me sane.


Thank you for writing this, I can heavily relate.


This project embodies Donald Knuth's principle of being the author of software, rather than just consumers of other's APIs.

Yes, it takes patience and chutzpah, but I can also imagine how satisfying it is to build something from scratch and see all the pieces coming together into a working OS. And if you put your heart (and time) to it, you can build anything from scratch. A lesson the newer generation of developers still haven't fully grasped.

Congrats, good luck, and carry on!


> This project embodies Donald Knuth's principle of being the author of software, rather than just consumers of other's APIs.

I feel that this comment unfairly criticizes people who build on other things. This OS runs on hardware, which is someone else's API, and is a hobby project, as far as I can tell.

If someone wants to build something cool that uses others' APIs as a hobby project, more power to them.


Thanks yardshop for clarifying my point of view. And I agree with you stavros. There should be multiple ways of building things, some of which must be practical. Most of our day-to-day job should not be building things from scratch, even though there is a lot of fun in doing so :)


It's not criticizing anything at all, just suggesting an alternative. We're all always using products that are other people's work, why not ALSO work on something where you author and build your own system?


Seen another way, SerenityOS is almost entirely built on the work of others. Code isn't the hard part in any software project, it's usually the design and architecture that's the hard part (the source of competitive advantage).

The reason Andreas was able to build a community around SerenityOS so fast is the same reason Stallman/Linus were able to do so - everything about it is a direct clone of designs proven out by commercial OS vendors. The core is UNIX (well understood) and the GUI is Windows 2000 (well understood). The code may be fresh, but even there, it is just an ordinary C++ based OS, as conventional as can be. This means working on it is fun for the developers because there are relatively few debates over direction or design, and little risk - you know what you're getting right from the start.

But to claim that such a project is doing it all from scratch zero-rates the design aspect, which seems wrong.


Whilst that's a valid point of view, it needs to be balanced against good old "don't reinvent the wheel."

I'm not quite sure how I would marry those two concepts.


Ah, I thought you were talking about projects that make something novel vs projects that glue together APIs to create something new. I see what you mean now, sorry.


I'm not who you initially replied to, but I just felt he wasn't being critical of something else, just promoting an idea that is also of good value. I think there's value in creating new things by combining existing ones as well.


This is just so cool and inspiring to me. I check out pretty much everything Andreas puts out.

I wonder if we're watching something comparable to the birth of Linux. I'm not insinuating that Linux would go away or die or anything -- that's absurd -- but I just mean perhaps over time SerenityOS will become more and more used as a "real" OS. For what purpose(s)? No idea. But the whole project really seems to have staying power.

That said, I'm fully with Andreas that having fun and simply building something because you want it to exist are valid goals in and of themselves. Couldn't be happier for him and everyone who contributes to the project.


I think this is similar to the birth of Linux, but with two very major differences.

(1) we are in a world where open source is the way.

(2) it’s somewhat a reaction to the state of modern software, both in UI paradigm and in increasing cartelization.

To me, it’s hope.


> we are in a world where open source is the way.

I think you're in a bubble. The world still runs primarily on closed source and proprietary software and services.


Linux, Nginx, Apache, PHP, MySQL, WordPress, Chrome, Firefox, various open source NoSQL DBs, NodeJS, Python, RoR… most software is definitely open source. There are the Oracles, z/OS, and MS products and some SaaS stuff, but open source is eating the Earth.


Lol, are you trying to make a convincing argument? And if not, why bother replying with such nonsense. That short list provided is not "most software", thats a smattering of infrastructure type software.

If you're into idiotic discourse, go ahead and list 1000 open source projects on SourceForge just to "strengthen" your argument.

Tell me - what do most people in industry use for: image editing, video editing, audio and sound design, CAD, EDA, ERP, EMR, logistics, finance - you know actually getting stuff done with those things you mentioned above? Never mind that the vast majority of software written is line of business software.

The landscape of free/open source software has not changed much since the 90s. The market share has increased, some of the names have changed, but it's still the same types of stuff that it excels at (languages, OSes, frameworks).


We would need to define the terms in order to have proper debate on this. Are we talking number of projects, lines of code, install base, user base, profit generated, or some combination of all of it? My argument is largely based upon loc in installed base.


Most software that is written commercially is closed source.


We should make a distinction here between legacy and non legacy. For legacy code closed source is dominant.

But we’re seeing a success story for open source on a scale almost never seen before when it comes to AI.


Are we? Most AI models that people know about are proprietary, with some (Google's) so proprietary they won't even provide API access to them.

Yes, Stability AI is doing great stuff with making this tech freely available for now, but it's not clear how sustainable that is in the absence of large VC funds. The players with the bigger more stable budgets are going the proprietary route.


He streams regularly, check it out and support if you can: https://www.youtube.com/c/AndreasKling/videos


Where does the money for this project come from?

I kinda wonder if "streamer who develops code" could be a viable open source business model, haha.



Sponsorship via Github is the primary stream AFAIK


That's right, as of May 2021 I'm working on SerenityOS full time, supported by donations. :)

I posted this about it at the time: https://awesomekling.github.io/I-quit-my-job-to-focus-on-Ser...


Yup, I watch his streams religiously.


> having fun and simply building something because you want it to exist are valid goals in and of themselves.

I agree. Sums up my own thinking when I started my 3D graphics system in Common Lisp a few months ago. Enjoying writing code from scratch, even basic UI widgets on top of OpenGL.


> The original Jakt prototype was written in Rust by myself and JT over a couple of weeks before we made it public. I wrote a post introducing Jakt and the motivations behind it. And JT made a video about the creation of Jakt as well. The Rust-based compiler is now long-gone, and Jakt is fully self-hosted with the Jakt compiler being written in Jakt itself.

It's always humbling for me to read updates from SerenityOS :)


I was a bit skeptical of Jakt at first. I thought using a new language I'm not familiar with would add a layer of indirection to my entertainment (i.e. watching the streams). But I've since warmed up to the idea, and seeing how the existing community deals with this if deployed widely in the codebase is one of the more exiting aspects going forward. From my arm chair perspective, that is.


This is good for Jakt but why another language?


Why another OS? Why does anyone ever do anything?



>I have nothing bad to say about other languages. This is simply the option that makes the most sense for SerenityOS, which is fundamentally about having fun and implementing everything ourselves.

Kinda was expecting this but would've also liked see some critique of other languages.


I appreciate the honesty in the FAQ. No thread safety and still some open questions about iterator invalidation. I look forward to seeing what they come up with!

Borrow checker style "Aliasability XOR Mutability" does restrict a lot of valid programs, but has some nice properties for scaling large codebases besides the obvious performance advantage of ARC. I can see how this kind of big "down payment" to restructure programs might go against the incremental/fun approach embraced for SerenityOS. More reading on AXM and it's benefits for correctness:

* https://manishearth.github.io/blog/2015/05/17/the-problem-wi...

* http://smallcultfollowing.com/babysteps/blog/2013/06/11/on-t...

* https://manishearth.github.io/blog/2015/05/03/where-rust-rea...


It's all part of Andreas' grand plan for serenity OS.

Ask him about "the plan" next time he goes live :)


I haven't yet used it but from what I can tell seamless integration with existing C++ code might be quite a killer feature.

Plus everything immutable per default is pretty sweet.

And no borrow checker, so simpler than Rust.

Honestly I could see that language take off even outside of SerenityOS.


I found out about SerenityOS because of the post about Ladybird here on HN a few weeks back.

I have since watched hours of his stream and found it super inspiring. To the extend that I now want to learn some C++ and make some contributions to the project.

It's really refreshing to see people code for fun and build whatever they feel like.

I think a lot of profesional devs lose that when they go all in on their work (which is understandable) so it's awesome to see something like this!

Congrats on the 4 years! Looking forward to what's next!


Start with "Programming -- Principles and Practice Using C++" from Bjarne Stroustoup.

It is a good book to learn C++ the modern way, instead of a couple of appendixes in what is otherwise a C programming book.


Fantastic progress.

My only concern is looking at it... I can't help but worry slightly about feature creep. We went from an OS, to an OS + Web Browser, to an OS + Web Browser + Programming Language. Next year it might add an Office Suite at this rate.

Edit: I don't mean this as a bad thing, just that it would be a shame to get so large that everything becomes half-baked and overwhelming to finish.


An OS without a web browser is hardly an OS anymore; Microsoft won on that regard (credit to Bill for recognizing that).

But in general if you have something like this, it's often better to let it go where it wanders, even if it never attains the success of Linux, etc. Forcing a restricted scope often leads to burnout which kills it even faster.


> An OS without a web browser is hardly an OS anymore; Microsoft won on that regard (credit to Bill for recognizing that).

Sorry, but no, just no.

MS (correctly) recognized the threat that browser poses to OS through webaps. They bundled IE with Windows, however their bundling was a simple and effective (and monopolistic) strategy to take away market share from the then-leading browser, Netscape.

Yes, OS needs a browser. No, MS and Bill had nothing to do with that (and they artificially slowed down web the best they could - hello IE6!).

I do agree with the rest, but to credit MS that every OS needs a browser nowadays... Just no.


It seems like you -are- crediting MS for bundling a browser with an OS.

Their reasons are irrelevant.

OSs didn’t come with browsers. Microsoft bundled IE with Windows. Now every OS comes with a browser.


Of course they did, or if they didn't, browser was one of the first things installed. Windows was nothing new in this regard.

What was new was that OS was deeply connected to browser, so that uninstalling it was not an option. But that is not what GP claimed, and that is of course not a rule with newer OSs.

But anyway, let's talk about this great new SerenityOS instead. :) Over and out.


As proven by Web widgets on mobile OSes, game consoles and TV firmware, they were just ahead of their time. :)


You missed GML, the compile time markup language for the UI:

https://man.serenityos.org/man5/GML-Introduction.html

Ex.

https://github.com/SerenityOS/serenity/blob/master/Userland/...

In general the scope creep is because Kling and co are all about fun and code beauty. And to their credit, the code is beautiful. :)


Feature creep kinda defines the project. It's not a bug, it's a feature. :^)


Absolutely agreed. I've watched lots of his long-form videos on all those topics and initially I was always scratching my head as to why he'd want to reinvent all these wheels from the molecules up, but as I watched more, I realized that he's a journey guy, not necessarily a destination guy. To his credit, he's attracted a similarly-minded following of contributors along the way.


while endearing, it does endanger the trajectory of the main feature. 'how many paid FT devs are being added per feature' is what should be asked.

People asking "Is it fun" are missing the point.

Don't 'fun' yourself into a job under terms you didn't get to negotiate, state your requirements and adjust your work funnel accordingly. I've witnessed a lot of 'fun' projects manifest themselves into serious projects that fall apart because this forethought was neglected.


> how many paid FT devs are being added per feature

Well, considering this is a fun project being worked on by volunteers (some of whom are sponsored by the community), I'm going to go out on a limb and say the answer to this question will always be "zero".


I'm not sure what the financials of the SerentiyOS project look like. It sounds like he streams the development. If that's his primary source of income, then doing the fun stuff seems like it enhances the revenue stream?

(edit: based on other comments, it sounds like donations rather than streaming revenue are the major source of income, although I bet the goodwill from having such an open development process help with the donations).


> People asking "Is it fun" are missing the point.

Are they? I thought the whole point of the entire project was fun.


The only question that should be asked is "is this fun?"


Well, there's been a spreadsheet app for a while :^)

https://github.com/SerenityOS/serenity/tree/master/Userland/...


Just need a MacWrite-grade app that can export to PDF and SerenityOffice can be sold in a nice big box with a pile of floppies.


For many people a web browser and an office suite is all they use a computer for. If anything an office suite should be expected.


I have trouble believing that an OS, especially a graphical one, can be effectively developed/tested without having some GUI apps developed in parallel. Eat your own dog food and all.


this is actually mentioned in the article, by one of the quoted people.

It works out because of loose coupling + many contributors. People will work on the web browser and others will work on the main OS, and there aren’t too many conflicts or places where each team has to coordinate.

It also works because making a basic OS or web browser or programming language is not hard, 90% of the work goes into the final 10% of perfection. You can a) make minor improvements to the base OS, or b) create an entirely new program and a burst of seemingly-rapid development; SerenityOS is a passion project, so many people choose b.

Furthermore, many of the people working on the OS are still doing so, and some of the people working on the web browser may not have joined without it. So maybe it’s slowing down progress on the main OS but not by too much, the main OS is still improving.

Honestly I kind of predict people will start to branch off and work on a Serenity office, and Serenity painter and Serenity DAW and Serenity calendar and Serenity game engine. This is basically what KDE has done.


Well, there’s tons of room for improvement over that tools that exist on other OSs/platforms, so why not?


To stay true to the theme of being 90s-inspired, the office suite will have to include: Serenity Works!


Would it still be feature creep if the number of competent volunteers/workers increases in equal measure? Couldn't we just call that a more robust feature fulfillment pipeline?


Happy birthday, SerenityOS! :^)


Congrats Andreas, on building such a cool project and community! SerenityOS is a wonderful project, and the world is better for it existing :)

And also all of your wonderful videos that you’ve made about the development of the system over these years. That’s the most valuable part of it all for me.


Congratulations to SerenityOS! Quite amazing seeing the progress over this relatively short time.


I want to become powerful enough to contribute to SerenityOS.


You are already powerful enough! Some of our most active developers today didn't even know C++ when they started. If you're interested, look for something small that annoys you, and then see if you can't figure out enough of the code to fix it. :^)


Andreas, you are underestimating the complexity of C++ for mere mortals.

Maybe you should take a break from SerenityOS and write a book about the useful/practical subset of the C++ language??


I've been sneaking peeks at the SerenityOS documentation and style guide - it's great stuff. I think I'd rather see that expanded further.


Just do it.

Seriously, you don't even have to know programming to contribute. Writing documentation, porting software, trying to boot on real hardware, trying out websites with the web browser, looking for bugs in the user interface... There's no such thing as a barrier to entry with SerenityOS as long as you're motivated to learn.


Thank you for saying this!


Shave a few Yaks :)

No, kidding... But their Jakt[1] language will make it much easier to contribute than in arcane reality of C++.

[1]: https://github.com/SerenityOS/jakt


This will hopefully be true, but Serenity is nevertheless one of the most pleasant C++ codebases to read that you're ever likely to come across.


One nice thing for a new contributer is there is so much low hanging fruit everywhere.

Can just open any app and you will see little things that would make for a good first PR. The codebase is also full of Fixmes, many of which are very approachable for a beginner.


Happy Birthday SerenityOS! And thank you very much to Andreas and the them behind it. You guys restored my faith in programming and for that I'll be forever grateful.


I played around with this a few months back and really wished they were targeting ARM. I wonder if that will ever be on the cards...


There are a number of people actively pushing ARM support forward.


If ported to ARM it could become quite a thing in embedded development. I'm not thinking about the latest Macs (although... why not?) but rather very small and cheap embedded boards where Linux could be either too resource hungry or overkill. On these small boards a very light GUI oriented OS like SerenityOS and a set of gfx libraries and primitives could be the right tools to make appliance control panels, instrumentation, etc, and of course general computing.


It would basically be what QNX could've been (and almost was).


Yes and, most importantly, Open Source.


If you have the time, that might be a good project!


I believe it works on aarch64, there's even a raspberry pi target. Don't know the state though.


After reading this I clicked through to their Discord and it's reached the point where it's crashing QEMU on the host, and discussions are from October 1st.

Would love to see this boot on a Pi.


It is a great project and who knows, one day might come as standard in some OEM system.

Happy birthday.


The vibes of SerenityOS, Andreas, and the community are tremendous. I wish them many more years!


What an amazing project, first heard about it here when it launched.


Is this ever getting GPU acceleration?


They don’t plan ahead for features typically. They add stuff when someone wants to do the work.


I think all the BSDs got GPU acceleration by adding a compat layer around Linux's DRM subsystem. I'm sure someone could do that for SerenityOS if they were so motivated...


my personal guess is probably, although andreas always insists that there is no plan in response to these sort of questions, so don't expect official confirmation or a timeline


Not sure why downvoted... I searched Github for you and found this:

https://github.com/SerenityOS/serenity/tree/master/Userland/...

See also LigGPU and LibSoftGPU in the same folder.


LibGPU seems to load the soft GPU, doesn't seem to do all that much. Which is perfectly understandable, GPUs are their own special part of operating system programming (messing with firmware, boot timings, etc.).

If it'll ever get GPU support, I'd expect it to be based on QEMU/libvirt GPU acceleration rather than any direct hardware support.

Unless someone knowledgeable and motivated enough has a crack at it and writes a driver forttheir GPU, of course That's an immense task, though, so I wouldn't expect it any time soon. Maybe an Intel engineer will get bored or something.


See this also from the birthday announcement:

https://www.youtube.com/watch?v=9yLESYN4_5w


just to clarify potential misunderstandings: this is for opengl compatibility using CPU rendering. although obviously having this sort of thing will be useful for transitioning to gpu support independently of having drivers written


Is this a viable daily driver on bare metal or does everyone who uses this run it in a VM?


It's still in rapid development mode. Can be booted on bare metal, but it's not ready for prime time yet.


Some of the comments demonstrate that there are a lot of people here who have never encountered programming in an artistic context before.

That is a sad (though understandable) state of affairs.


Even though I agree with you, there are no such comments that I can find, or not enough to warrant your knee jerk reaction.

No need to build a straw man.


Here http://www.paulgraham.com/wealth.html

And here: http://www.paulgraham.com/richnow.html

First DDG results for "Paul gramm get rich"


Neither of those are comments here.


Above reads "pg did write somewhere"; the links provided are somewhere.


They weren't referring to my dumb joke, but to the claim that there were negative comments. I thought I saw one or two as well, maybe they were deleted.


A couple look like they were, yes.


Which comment specifically, because I didn’t see one.


Well, our prophet pg did write somewhere that the reason to join a startup was to get rich. These people aren't coding for the lambos? Seems immoral to me /s




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: