One tidbit I found interesting in the April 2021 update is this (paraphrased for brevity)
After only three weeks of having a Discord server, we have over 1,400 members, ten times as many as we’ve ever had in the IRC channel. This led to a ton of new development projects.
I think this says a lot about IRC, the ease of use of Discord, and disproves the notion that eager contributors are willing to overcome any friction necessary to participate in a given community. While I’m hopeful that Matrix will eventually supplant Discord as the chat-platform-of-choice for open source software projects, it’s still nice to hear that SerenityOS was able to pull in more interested folks by using Discord.
I’m just very very glad people aren’t using Slack. Discord is at least made by people who understand the idea that harassment exists and therefore haven’t deliberately left out table-stakes features like letting one individual block messages from another.
I think one issue with Matrix is the lack of a good, stable and accessible client. Element is probably the easiest to start with, and it’s still confusing to use. Discord at least nailed that: it’s easy to invite people, group related channels, etc.
As someone who doesn’t use SerenityOS, I’m most excited about their independent browser engine “LibWeb”. If I could easily run their web browser without installing their OS, I’d love to test my websites in it and make sure they’re compatible.
That said, maybe I should go to the trouble of installing SerenityOS, now that it has a full time dev.
It is pretty easy to use. All I had to do was install the dependencies, then run the commands to compile it that were in the repo. It worked first try!
It’s a 32-bit OS, right? Does that mean it won’t run properly on 64-bit hardware? Does it require emulation on modern CPUs? I’m not sure I have a computer that will run it natively.
As much as I love and respect (I should, since I wrote a small part of the C library) the enthusiasm Andreas has, I kinda wish Serenity would dabble with different ideas/research. But that’s just a hobbyist OS development thing in general - everyone races to implement POSIX.
No one said you had to implement a spec. In fact, a hobby OS without the commercial imperatives to implement a standard frees you of much of that, unless you want to explicitly run the morass of POSIX programs out there. Mix what you like or make new things.
SUS
Also, I hate that I’m doing this on this website, but I can’t resist: ඞ
I hadn’t heard that there had been a standard written up for that! I love that ECMA make it easy to get the standards text, unlike some bodies (cough fucking ISO coughcough)
TRON
I hadn’t heard of this either and now I’m slightly upset because there’s a whole family of stuff there that I’d been totally unaware of.
What a pain in the neck to Google for, though. Blame Disney.
In particular, the default configuration has time slicing (also known as round-robin scheduling) switched on; this means that a task can be moved from RUN state to READY state at any time, in order that one of its peers may run. This is not strictly conformant to the µ ITRON specification, which states that timeslicing may be implemented by periodically issuing a rot_rdq(0) call from within a periodic task or cyclic handler;
So the ITRON standard explicitly requires cooperative multitasking rather than preemptive. At first blush I would kind of expect that to rule out multiprocessing?
POSIX has created a humongous social gravity well, if not a black hole at this point: POSIX is very widely taught and gives developers (at least subjectively) a simple and understandable shared view of computing. OSes are more than just implementations of their basic concepts, OSes are also their users, their community and their worldview, the sum of their experience and time invested in understanding (and human attention is very expensive).
Sadly, the more original a hobby OS is, the less popular it will be. SerenityOS is a good case in point: it has never tried to be original in its concepts, it is explicitly optimized for familiarity and reimplementing well-known and popular concepts (POSIX and Windows UI) using well-tested tools (C++) while doing this with character, taste and coherence.
I think you kinda have to implement POSIX – even Windows has done so on multiple occasions. But that doesn’t preclude implementing new paradigms as well.
I would like to see something a lot better in terms of security and process-level virtualization (containers). I think it makes sense to do that on top of something POSIX-ish so you have some application code to test it out on. Otherwise I think you will be left with a lot of toy applications on your OS that don’t really give it a workout.
I’d also like to see more introspection, tracing, and performance monitoring along the lines of eBPF.
Basically all the “cross-cutting concerns”, which Linux is bad at, or at least has very messy bolted-on designs for.
Congrats on choosing the path that makes you happiest. Following the development of SerenityOS as well as your youtube is a great source of motivation. Looking forward to what you’ll accomplish!
Wow, that’s amazing. Good luck. What will the future hold for serenityOS? So many possibilities. Keep up.
One tidbit I found interesting in the April 2021 update is this (paraphrased for brevity)
I think this says a lot about IRC, the ease of use of Discord, and disproves the notion that eager contributors are willing to overcome any friction necessary to participate in a given community. While I’m hopeful that Matrix will eventually supplant Discord as the chat-platform-of-choice for open source software projects, it’s still nice to hear that SerenityOS was able to pull in more interested folks by using Discord.
I’m just very very glad people aren’t using Slack. Discord is at least made by people who understand the idea that harassment exists and therefore haven’t deliberately left out table-stakes features like letting one individual block messages from another.
Slack assumes it’s an HR issue and that if you’re working with someone who’s harassing you, you have bigger problems (and solutions) to the issue.
That’s their excuse, and it’s shit.
Aside from that, it’s wildly inappropriate for places where you don’t have HR, such as communities with open admission.
That’s not what slack is for. Don’t use slack for that.
Yeah, I agree, just relaying the excuse. Slack outside of closed-room workspaces feels awkward to me.
I think one issue with Matrix is the lack of a good, stable and accessible client. Element is probably the easiest to start with, and it’s still confusing to use. Discord at least nailed that: it’s easy to invite people, group related channels, etc.
Congrats to Andreas Kling, that’s a big leap of faith.
As someone who doesn’t use SerenityOS, I’m most excited about their independent browser engine “LibWeb”. If I could easily run their web browser without installing their OS, I’d love to test my websites in it and make sure they’re compatible.
That said, maybe I should go to the trouble of installing SerenityOS, now that it has a full time dev.
It is pretty easy to use. All I had to do was install the dependencies, then run the commands to compile it that were in the repo. It worked first try!
It’s a 32-bit OS, right? Does that mean it won’t run properly on 64-bit hardware? Does it require emulation on modern CPUs? I’m not sure I have a computer that will run it natively.
Its recommended to use it in qemu. It is possible to run on bare metal, but it is quite involved I think.
As much as I love and respect (I should, since I wrote a small part of the C library) the enthusiasm Andreas has, I kinda wish Serenity would dabble with different ideas/research. But that’s just a hobbyist OS development thing in general - everyone races to implement POSIX.
it opens the door for a lot of software, so I can see why people do that
Yeah, the dopamine from having gcc run on your OS is obvious. I just wish other stuff happened too.
Interestingly enough, I’m only aware of a few “Operating Systems Specifications” that could be implemented:
Obviously there are a lot of •de facto* OS standards. The above is purely those standards recognized as endorsed by a standards body.
If anyone else knows of any OS standards, I’d love to hear about them.
No one said you had to implement a spec. In fact, a hobby OS without the commercial imperatives to implement a standard frees you of much of that, unless you want to explicitly run the morass of POSIX programs out there. Mix what you like or make new things.
Also, I hate that I’m doing this on this website, but I can’t resist: ඞ
thank you, it was hard for me to fight the temptation
Unix isn’t just attractive because of its compatibility. It’s also:
fairly simple—not that hard to implement on your own
familiar; it’s hard to come up with new paradigms
still in common use; how much new, real-world software still supports other specifications you mention?
I hadn’t heard that there had been a standard written up for that! I love that ECMA make it easy to get the standards text, unlike some bodies (cough fucking ISO coughcough)
I hadn’t heard of this either and now I’m slightly upset because there’s a whole family of stuff there that I’d been totally unaware of.
What a pain in the neck to Google for, though. Blame Disney.
First really interesting detail that jumps out to me on http://www.ecos.sourceware.org/docs-1.3.1/ref/ecos-ref.a.html is this:
So the ITRON standard explicitly requires cooperative multitasking rather than preemptive. At first blush I would kind of expect that to rule out multiprocessing?
It’s amusing to see every function name I saw mentioned on that page is either 7 or 8 characters long. Reminds me of the ANSI C 6 characters thing. https://stackoverflow.com/questions/38035628/c-why-did-ansi-only-specify-six-characters-for-the-minimum-number-of-significa
POSIX has created a humongous social gravity well, if not a black hole at this point: POSIX is very widely taught and gives developers (at least subjectively) a simple and understandable shared view of computing. OSes are more than just implementations of their basic concepts, OSes are also their users, their community and their worldview, the sum of their experience and time invested in understanding (and human attention is very expensive).
Sadly, the more original a hobby OS is, the less popular it will be. SerenityOS is a good case in point: it has never tried to be original in its concepts, it is explicitly optimized for familiarity and reimplementing well-known and popular concepts (POSIX and Windows UI) using well-tested tools (C++) while doing this with character, taste and coherence.
I think you kinda have to implement POSIX – even Windows has done so on multiple occasions. But that doesn’t preclude implementing new paradigms as well.
I would like to see something a lot better in terms of security and process-level virtualization (containers). I think it makes sense to do that on top of something POSIX-ish so you have some application code to test it out on. Otherwise I think you will be left with a lot of toy applications on your OS that don’t really give it a workout.
I’d also like to see more introspection, tracing, and performance monitoring along the lines of eBPF.
Basically all the “cross-cutting concerns”, which Linux is bad at, or at least has very messy bolted-on designs for.
Congrats on choosing the path that makes you happiest. Following the development of SerenityOS as well as your youtube is a great source of motivation. Looking forward to what you’ll accomplish!