1. 53
  1.  

  2. 18

    This is amazing, I love it, and OP if you’re the author, I love you, and thank you for sharing.

    An OS is just a piece of software. It’s possible for someone with time and motivation and perseverance to build one for themselves, even if they’re not going to be running it during $DAYJOB. Maybe especially if they’re not going to run it during $DAYJOB.

    You can tell a homebrew networking stack when the features list includes ARP support.

    We need more people working on homebrew computers and operating systems. Something important in the world ended when the average computer user stopped understanding how it worked. There’s nothing magic, just applied accumulated knowledge and research and a wiki.

    Just Start. It’s not as hard as you think.

    You can use C, or C++ or Zig or Nim or D or Pascal or C#!! or Go or whatever.

    Get a message into the VGA text buffer.

    Get some interrupt handlers going.

    Just build a thing for yourself.

    God damned fantastic.

    1. 4

      Reminded of Rob Pike’s Systems Software Research is Irrelevant.

      1. 4

        I always liked how Pike was being very charitable to MS in that article, instead of the Linux crowd that lionized him.

      2. 4

        An OS is just a piece of software. It’s possible for someone with time and motivation and perseverance to build one for themselves

        It is just a piece of software, but it’s not so easy to just “build one for yourself”. If you are doing it to learn OS fundamentals, to get your hands dirty with driver code, or just to relax and toy with systems design? Sure, go for it! It’s an awesome experience.

        But if you are trying to make something viable for use as a daily driver at all, and you need to be able to use hardware that was created after 1996 and not just run in a VM (like, most USB peripherals, network cards, etc.), it’s a job. SkyOS was the only major effort I know of by essentially one person, and that got abandoned for all the reasons you’d guess. Haiku hasn’t been abandoned, but we have about 15-20 regular contributors working on everything from drivers to ports, and it’s only now we’re approaching general viability.

        1. 4

          100% agreed that you shouldn’t expect a one-person project to get you to daily-driver. But I think my point is that you shouldn’t let that stop you - in fact it’s probably better you don’t expect to get to daily driver, because that removes the pressure and lets you focus on building a thing. And building a thing is a human impulse we should celebrate!

          I have gotten myself lost innumerable times in the depressing space around “nothing I could do by myself matters”, which is both true and totally and completely irrelevant.

          Contributing to the mission of Haiku (or Redox or whatever) is awesome, and more people should do it! I really really don’t want to you or anyone to take away from my random rant that you should go do useless projects only and never join a team or a project. Honestly, I assume based on your contributions to Haiku that you’re past the kind of ennui that I’m aiming at, and that’s awesome.

          But the fact that Haiku isn’t going to switch to your first-pass bootloader is okay! Don’t not build that bootloader, build it anyway because bootloaders are cool!

          1. 4

            Sure, that’s a fine goal. It just seems people are getting overly excited about Serenity in a “woah, I’d love to use this as my primary OS, can’t wait for that” kind of way, not a “this is a neat project to hack on in the evenings” kind of way.

            1. 3

              Oh dude, totally, I don’t really understand down-thread at all.

        2. 2

          Not the author, I just thought it was amazing!

        3. 10

          I love this.

          Linux is my primary operating system, and has been for many years. Linux is great, but always, in the back of my mind, I remember that there are quite literally thousands of features that I am not using and will never use just sitting there. To many (most?) people the fact that they’re there but unused isn’t a problem, but it’s a serious source of irritation to me.

          I don’t need support for 80 different filesystems, 6 different application profiling mechanisms, 74 different syscall sandboxing mechanisms, 3 different hypervisor mechanisms….hell, I don’t even need multiuser support for my laptop where it’s only ever just me (though of course I recognize the important of privilege separation so there should still be something like OpenBSD’s pledge).

          All of these things can be disabled at compile time in modern systems, but I know they were still there and it irks me. Call me a minimalist.

          1. 10

            There’s always Haiku, if you want something simple and fast.

            1. 4

              Excellent point, though Haiku has added some…big…things: the package filesystem (which is amazing, but a lot of kernel code), the systemd-style service manager, rumblings of multiuser support, etc.

              I’m not complaining (and who am I to judge?), just pointing out that there is a lot of stuff that wasn’t present in the original BeOS there. :)

              If Haiku supported just a couple of things more that I need (fast VMs, multi-monitor support, Google Meet support), it would definitely be my daily driver. It’s the best of what’s out there.

              1. 11

                Each person has a few must-haves, not all of them overlap and that’s how you get the bloat you see in Linux ;-p

                1. 7

                  the package filesystem (which is amazing, but a lot of kernel code)

                  Huh? It’s one more filesystem driver, that’s all. Linux has how many filesystem drivers in-tree now…?

                  the systemd-style service manager

                  It’s really not systemd-style, it’s Haiku-style, and service init/daemon management is all it does. You can still just run random shell scripts on startup the way you could 10 years ago via the bootscripts…

                  rumblings of multiuser support

                  We already have chown/chmod/su/etc., just not the GUI functionality interfacing with them, that’s all.

                  It turns out that most people actually need these things to use an OS as a daily driver. In fact you still list some things you need. OSes can’t stay stuck in the 90s :-p

                  1. 3

                    Wow, you’re a celebrity to me. Thank you for all your work on Haiku. I used BeOS for many years as my primary OS (even after Be was Was) and I would say it’s my favorite of all time, but I’m too fond of the Amiga to actually bring myself to say it.

                    Huh? It’s one more filesystem driver, that’s all. Linux has how many filesystem drivers in-tree now…?

                    As I said, it’s amazing. It’s the most revolutionary thing to happen to package management in years if not decades. It’s the right way to do things. I absolutely have no justification for my opinion on it other than that “it wasn’t done that way in 1996.” It’s purely nostalgia and an irrational minimalism on my part. :)

                    OSes can’t stay stuck in the 90s

                    I know, I know, but a big part of me wishes they could be.

              2. 4

                I’m curious, do you feel that the fact that this bothers you is rational? Or do you think it’s kind of an OCD-like thing? For example, it used to bother me to step on cracks in the sidewalk or even on tile floors, particularly when I was a child. Nowadays I occasionally “relapse” when I’m lost in thought, though it doesn’t really bother me any more. I’ve always known that this isn’t rational, but I still do it.

                1. 11

                  It irks my sense of elegance, I suppose. It’s not so bothersome that it keeps me from running Linux, of course, but it’s bad enough that I often daydream about writing an OS from scratch, like TFA.

                  And I do software engineering and information security both as a hobby and for a living, so I suppose it might affect me more than someone else. So it’s not rational, but it’s not necessarily as irrational as disliking something that’s unrelated to what I do.

                  1. 5

                    I appreciate that @glesica asked and you answered. Thank you both for that. I have friends who have this exact same sensibility and I have never truly understood it.

                    How can we have general purpose operating systems and not make them usable for … general purposes? :)

                    1. 3

                      I don’t have quite the same appreciation or nostalgia for vintage Unix UIs, but I do feel the same way about unused / unuseful-to-me features. And I think it’s reasonable enough to talk about it as pure aesthetic sensibility… but consider both how “legacy” and “backwards compatible” and “general purpose” features accrete into an attack surface, and also how excess abstraction layers and other forms of indirection accrete into performance-sapping bloat. Purely rational concerns from both the security and engineering perspectives are also relevant.

                    2. 3

                      I think you’re overstating how irrational your gripes with existing OS’s can be. You might have seen some better designs that let you know current stacks aren’t the upper bound or are actually worsening in various ways. I’d say it’s pretty objective to want our systems to at least achieve the best properties of 1960’s-1980’s designs. Especially given we have the hardware to try anything they thought was prohibitive due to performance or hardware limitations.

                      On security, the Burroughs and IBM designs still reign with hardware-enforced protections. On concurrency, Hansen and BeOS with DragonflyBSD making nice strides. On availability, VMS and NonStop clusters. On virtualization, separation kernels or Nova-like designs. On productivity, modern systems can’t match all arguments in Genera brochure. The ideal system would be a mix of stuff like that which balanced those attributes.

                      1. 1

                        Sounds like your weekend project is running Linux from Scratch. :) It’s not as hard as it sounds.

                      2. 11

                        The fact that our PCs are slow and struggle despite having orders of magnitude more performance than previous generations does bother me.

                        1. 4

                          “Software is getting slower faster than hardware is getting faster.” - Niklaus Wirth

                    3. 6

                      This looks like a breath of fresh air, and I’d love to start using it.

                      I am kind of intimidated by the build process, especially since I am on a Mac and don’t want to accidentally clobber my desktop environment.

                      Is there a bootable .iso available that I could use with VirtualBox?

                      1. 1

                        This is geniunely amazing