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.
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.
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.
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 :^)
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).
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.
- 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.
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.
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.
"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?
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.
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.
> 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.
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.
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.
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.
> 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.
>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:
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!
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.
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.
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).
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.
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?
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.
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. :^)
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.
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.
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.
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.
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
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.
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
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.
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
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