See the message from Linus Benedict Torvalds on 26/08/1991
https://groups.google.com/g/comp.os.minix/c/dlNtH7RRrGA/m/Sw...
All I can say is LOL
Technical debt is as sure as death and taxes. Good software grows over time, like a person growing up. Sometimes you have parts that are needed for a time but not permanently, like baby teeth. That's what technical debt is like.
Other times there are parts that are absolutely ideal long term, but it's a long time before they even make sense. And sometimes things only develop much later than we expect, like wisdom teeth. These are software features that won't make sense until you write the thing that you don't realize yet is only temporary.
I have the same goal of writing everything myself from scratch. It's a very important goal to me for a reason I don't fully understand yet.
Congrats on writing an entire OS, and getting it booting on real hardware! That must be such a rewarding feeling in its own right, even if no one understood how. And it looks so very cool.
You've given me more motivation to announce my project soon. Maybe next week. Thanks.
Have you played around with Zig yet? I hear that would be a good replacement for C here. Did you have any thoughts on porting your OS to that, or did you have any branches some Zig code made its way into?
Each approach has a clear set of pros and cons, as others have explored in this thread. In the end, I think what ultimately matters is whether we're satisfied (and proud) of a project after a significant amount of progress has been made.
I also took the "I want to write everything myself" approach with my project since I wanted it to be a demonstration of my abilities. I wanted to prove to myself and others I could create a project of significant size and scope. It seems like this often means working without libraries and having to reinvent the wheel over and over again. It's tedious, but it certainly adds to the satisfaction you get as you look over your work and think "this is truly mine; I did this."
And yes, copy ideas, not code, is one of those things I do my best to adhere to. Sometimes, at least with JS, you run into problems, look into solutions, and it turns out there's really only one sensible way to do something; what you end up writing feels like a boilerplate solution to the problem. I often find myself going back and forth through search results from places like Stack Overflow and trying to siphon out the best techniques and ideas from multiple examples to mesh together into some usable code in a style I prefer.
Finally, since I failed to say this eariler, congrats on your project! I'm gonna have to try it out as soon as I get some extra time.
Having no plan is often better when you're facing a deep pit of work, pick at it every now and again, whatever you feel like working on that day.
vs. having a clear Todo list that is longer than a DNA chain and just giving on it after item 5 because 6 is boring.
Oh, and congrats, looks great.