LearnixOS

(learnix-os.com)

156 points | by gtirloni 8 hours ago

17 comments

  • beasthacker 3 hours ago
    I wanted to share a quick piece of feedback from a potential reader's perspective: There are several small inconsistencies in the intro text (e.g., inconsistent capitalization of 'Rust' vs 'rust', grammar typos).

    In a domain like OS development where extreme precision is required, these small errors can subconsciously signal to readers that the technical details might also be imprecise. A quick polish of the documentation would go a long way in establishing authority and trust for the rest of the book.

    • Sagi21805 45 minutes ago
      Hi! I am the developer of this, and I really appreciate the feedback!!

      The book is still on development and this is why I didn't even publish it here, I just recently finished the highlighter which was a lot of work, and I probably will require more.

      Currently I am trying to make book and OS unique by developing and creating an explanation on AHCI, which I didn't see much on the internet. And then I try to handle all of the grammar, and typos

    • threethirtytwo 2 hours ago
      I couldn’t care less. It always pisses me off when a reviewer of my PR just flags the entire thing because of inconsistent capitalization. It’s the right correction and I always follow through but it’s also pedantic.

      It’s technically more correct. But it’s also not a very big deal. Actually it matters more in code for search-ability but for documentation and comments? Give me a fucking break.

      • windexh8er 6 minutes ago
        Attention to detail is important for many and is often a first touch with an end user. I agree with OP, if documentation is sloppy or inconsistent (I'm not saying the doc in question is because I haven't read it) it definitely reduces the impression that it's correct or reliable.

        I've skipped even trying software because of poor documentation and so the response of:

        > Give me a fucking break.

        ...seems shallow / callous.

      • madeofpalk 1 hour ago
        Isn’t being technically correct an important thing for technical documentation that aims to be technically correct?
      • clutter55561 1 hour ago
        I see nothing pedantic in flagging capitalisation errors, but I see loads wrong with imposing one’s sloppiness on others.
  • Dreami 6 hours ago
    From the name I thought this was about learning NixOS, and they found a very clever name

    Maybe the author could add a small note that this is not about that, and refer to something official about NixOS?

    Anyway, I like the idea of the project!

    • layer8 4 hours ago
      “*nix” means a Unix-like OS just generally (http://en.wikipedia.org/wiki/%2Anix), like for example in “Minix” and “Xenix”. Sticking “OS” to the end of an OS name is also commonplace. However, the title on the page is “The Learnix Operating System”, so the actual name seems to be just “Learnix”.

      It’s arguably Nix and NixOS who have unnecessarily stepped into the “*nix” namespace without adding a distinguishing prefix.

    • wasting_time 3 hours ago
      I had the same confusion. Even without considering NixOS, "learnix" is awkward to pronounce and somewhat pretentious.

      I would suggest the name "Leanix" if the author is willing to rename.

      It rhymes with Minix which is the OG curriculum for a POSIX kernel, and is "lean" in many senses of the word.

      In any case an excellent writeup. It's detailed enough to implement in any programming language.

      • JCattheATM 2 hours ago
        I don't find it awkward to pronounce in the least, and not in any way pretentious.

        I think the name is fine as is.

      • jaapz 3 hours ago
        What's pretentious about learnix?
      • layer8 3 hours ago
        > I would suggest the name "Leanix"

        Then people would complain that it sounds too much like “Linux”.

        • drob518 2 hours ago
          Particularly if you have learned to pronounce Linus’s name correctly.
      • Sagi21805 42 minutes ago
        I like the current name and already have the domain :|
      • yjftsjthsd-h 3 hours ago
        I mean, it is about learning. It threw me for a loop too but I think it's actually reasonably appropriate.
    • Sagi21805 44 minutes ago
      Will do!
    • hxugufjfjf 5 hours ago
      Thought the same! Was a bit interested in learning Nix for a moment.
    • censorylls 4 hours ago
      [flagged]
      • anp 4 hours ago
        > Others think someone from the Rust (programming language, not video game) development community was responsible due to how critical René has been of that project, but those claims are entirely unsubstantiated.
  • keyshapegeo99 2 hours ago
    Opening with a made-up quote (that is very simple to Google, which quickly confirms its apocryphal nature) doesn't inspire confidence in the factual accuracy of the remainder of the book...
  • golem14 1 hour ago
    I wish instead of discussing typos, folks her who surely know better (or author) could shed light on how this project compares to the many other existing projects, like

    https://github.com/cfenollosa/os-tutorial, https://littleosbook.github.io/, https://github.com/tuhdo/os01, https://github.com/prakhar1989/awesome-courses?tab=readme-ov...

    or even just "OPERATING SYSTEMS DESIGN AND IMPLEMENTATION" by Tanenbaum

  • MontyCarloHall 6 hours ago
    This dedicates at least as much time to discussing the eccentricities of the underlying Rust implementation (and the Rust language itself) as it does to discussing the underlying low-level hardware/software concepts. Since this is very much still a work-in-progress (only the first three sections have been fully fleshed-out), I have a suggestion to make: please make it more language-agnostic, with a greater focus on the fundamentals versus the implementation.
    • Sagi21805 31 minutes ago
      When I started writing this OS, Rust was a pain, and I needed to understand a lot of things that I didn't know about the language, I can flag on some sections that people can skip because they are more language related, but I think that it is very important, and can be beneficial to people that come from other languages, or to people that want to understand rust more deeply.

      In every chapter I try to initially explain the topic and then implement, or something in between. but I think the implementation is important because it completes the picture.

    • surajrmal 5 hours ago
      One of the hardest parts of writing an os is learning and understanding how to make the toolchain work the way you need it to. I wouldn't consider that a negative to spend time discussing it in such detail. Otherwise you have no idea how to even apply the high level concepts.
    • bwfan123 4 hours ago
      > greater focus on the fundamentals versus the implementation

      I am seeing this too. Folks are suddenly saying - lets implement this in Rust (or insert any other language here) without thinking about what this does to the fundamentals. A bandwagon effect which developers are swept by. And for managers it is a great way to show how innovative your team is. This applies not just to languages but entire development stacks almost like fashions in clothing.

    • drnick1 3 hours ago
      C would have been a more natural/neutral choice to be honest for a project like this, since every OS actually used is written in C.
      • yjftsjthsd-h 2 hours ago
        Eh... all the major OSs use C, anyways. For starters, (almost?) everyone is using a decent bit of assembly at the bottom. Then Linux is slowly adding Rust, and I was under the impression that NT spanned C, C++, and maybe some Rust now? And the moment we speak of the whole operating system and not just the kernel I think your claim collapses completely in the face of Darwin's Objective C and Windows doing... everything Microsoft feels like including.
      • JuniperMesos 2 hours ago
        This is a bad thing we should try to change
    • positron26 3 hours ago
      They might be focused on programmers, not users. Programmers come first because otherwise users don't come at all.
  • Santosh83 5 hours ago
    Why always POSIX compliant? If its going to be a learning exercise or a hobby OS or just an exploration, why not throw POSIX out the window and start from scratch for designing the API?
    • WillAdams 5 hours ago
      Source of ready-to-go software for use/testing?
    • Sagi21805 28 minutes ago
      That's actually an interesting idea, the main reason is that I wanted to take a doom port that is posix compliant and see if I can make it run
  • AbbeFaria 2 hours ago
    To anyone wanting to learn about OS development, nothing beats MIT 6.824.

    I finished the assignments in that course and that covers all the important aspects like processes, context switching, CPU modes, page tables and virtual memory and many other relevant topics like file systems, device drivers etc. And also it’s free.

    From the table of contents this course gets too involved in ancillary matters like bootloaders or the Rust language itself whereas the focus of any OS development tutorial should be on core concepts like how processes are implemented, how context switching works, how paging and consequently multi level page tables (actually, in code) work etc.

  • herodotus 6 hours ago
    This is an ambitious project. Might I respectfully suggest that you use your favourite AI (or an English-speaking friend) to fix your many grammatical errors and typos? For example "Note: ALL the syntax highlighting of the Rust code is custom and create by me! If you see and bug, please write in the comments or submit an issue." should be "Note: ALL the syntax highlighting of the Rust code is custom and was created by me! If you see a bug, please leave a comment or submit an issue." Also, Rust, not rust. And many more.
    • sdsd 5 hours ago
      That's a good suggestion to OP but as a user, I find it adds character and makes it feel human in an increasingly LLM-polished internet.
      • CamperBob2 4 hours ago
        That's how I used to feel about spelling and grammar checkers. I was wrong. Maybe you are, too.
    • breaker-kind 5 hours ago
      And* many more ;)
    • slekker 3 hours ago
      Bleh, I think a typo here and there is fine, you can grasp the meaning, and gives the writing style "character". Yes, it's dire but I'd take that over the soul-less LLM writing style.
  • waschl 1 hour ago
    Skipped through the first pages and I really like your approach. Avoiding to use „magic“ libraries which abstract away a lot of the intricacies the lower levels is helping with the understanding.

    I started my journey to develop my own little OS (https://github.com/jbreu/jos ) based on phil opperman‘s tutorial but quickly diverged from his exactly due to his use of such libraries.

  • frizlab 38 minutes ago
    I should do the same book in Swift; it would be a very interesting project! I wish I had that kind of time…
  • TazeTSchnitzel 4 hours ago
    I think it's really cool that they're using bare-metal Rust for this. It's a lot more accessible than C because the standard distribution (rustup) can work as a cross-compiler to a no-OS target out of the box. Deliberately avoiding dependencies makes me happy too, people really underestimate what you can do with Rust without relying on the whole dependency ecosystem, and this is better pedagogically because you can understand the whole system.

    I'm rather amused at how https://www.learnix-os.com/ch01-02-booting-our-binary.html has you creating a 16-bit target that ostensibly uses 32-bit pointers in its data layout… presumably that doesn't actually work to compile normal code to (edit: …or does it?! What on earth does LLVM do with that then…) but I guess it works so long as it's just acting as a scaffold for inline assembly. It's cool they don't need to bring in a secondary toolchain for the 16-bit part of bootstrapping, even if I worry this might break in some future rustc/LLVM revision.

  • remexre 3 hours ago
    This only covers what's in https://wiki.osdev.org/Bare_Bones, but in Rust, right?
  • ksec 3 hours ago
    Title should be LearnixOS : POSIX compliant OS implemented in Rust.
  • croemer 4 hours ago
    I spotted at least 3 typos in the first minute. Typos are really easily detected and fixed with LLMs (one really good usage of them).

    But it's nice to have non-LLM written text. Still the many typos are annoying and distracting.

  • incognito124 6 hours ago
    Looking forward to going through the lessons
  • speed_spread 5 hours ago
    I hope this builds on phil-opp's previous work which is IMO stellar.
    • quibono 4 hours ago
      What's the status on that? Did the series ever get finished?
      • speed_spread 1 hour ago
        No word on whether it's finished or will ever be but already looks complete enough to me? I mean, the subject is endless and there are so many ways to do things. But as primer, it's pretty good as it is.
  • rjrjeuu7 1 hour ago
    FLY