UnmappedStack / SpecOS

An x86_64 OS kernel from scratch.
MIT License
161 stars 4 forks source link

This project has no meaningful contribution to society #4

Closed rayanamal closed 2 months ago

rayanamal commented 2 months ago

We are in dire and immediate need of innovation in the OS and wider Software Development Platform space and this project does not aim to improve status quo.

Clarify in the README that this is a toy project.

Dcraftbg commented 2 months ago

What is this issue? This is a repository about osdev and this has literally no contribution to it - It doesn't improve the project in any way

UnmappedStack commented 2 months ago

I have specified in the README that it's a toy project a number of times, and that it should not be used for anything serious. Since I find this to be an nonconstructive issue, I am going to close it. It is unlikely that any OS will ever be large enough to improve status quo, as kernels are difficult to develop and take time. Most kernel projects you see will likely be hobby projects.

Nobody0163 commented 2 months ago

Lol.

maximus-sallam commented 2 months ago

We are in dire and immediate need of innovation in the OS and wider Software Development Platform space and this project does not aim to improve status quo.

lmao wut? Who are you? Bill Gates?

Goldside543 commented 2 months ago

We are in dire and immediate need of innovation in the OS and wider Software Development Platform space and this project does not aim to improve status quo.

Not every project is gonna be Linux sized.

I don't see you making some giant OS.

Shut up and let him work.

rayanamal commented 2 months ago

I don't see you making some giant OS.

You bet.

Dcraftbg commented 2 months ago

So you're not making any OS project(s), but you're willing to make fun of others? Have you ever considered actually attempting to make anything that complicated? If you actually put in that amount of effort you'd realize what an achievement it is to even get to where @jakeSteinburger is

maximus-sallam commented 2 months ago

@rayanamal I think you may be looking for https://templeos.org/ They'll have what you need for sure. šŸ˜‰

Goldside543 commented 2 months ago

I think TempleOS is the only revolutionary hobby OS. Excluding Linux.

maximus-sallam commented 2 months ago

Terry A. Davis is a legend. Definitely worthy of a movie made about him. Linux isn't a hobby anymore but is a testament to the heights hobbies can reach.

Goldside543 commented 2 months ago

Agreed. Both Linux and TempleOS are extremely impressive.

HamilcarR commented 2 months ago

We are in dire and immediate need of innovation in the OS and wider Software Development Platform space and this project does not aim to improve status quo.

Clarify in the README that this is a toy project.

@rayanamal : I'm sorry , who are you again ? Explain to me why this developer needs to use HIS time in a manner that some random fool sees fit ? I doubt you even have the ability to make something half as complex as this .

rayanamal commented 2 months ago

Thanks for asking, Iā€™m Rayan Amal. I pointed a flaw in the README, what is wrong with that? I donā€™t understand why yā€™all are blowing this up like I committed a cardinal offense, like telling him to write an OS for actual general-purpose real world use in 2024. Apparently nobody can do that, guess why? Because everyone is busy whining just how hard it is to write an OS nowadays. No, itā€™s stupid easy and gets easier by the day, because the competition is kernels written in 90s and every day thereā€™s new innovations popping up which are impossible to retrofit to existing systems. Because again, existing systems are museum artifacts written in 90s.

Ping me when the entire contemporary global software ecosystem is fully eradicated from the face of Earth, together with the UNIX local maxima they have been stuck in since 30 years.

UnmappedStack commented 2 months ago

As somebody who's developing a kernel myself, I can tell you this is definitely incorrect. A kernel is not a simple thing. I know people who have barely functional kernels who've been working on it exclusively for multiple years, and they are incredibly talented programmers. I believe that you do not have experience in this, because anybody who's ever written a kernel would know that it's not simple.

The reason that you pointing out the "flaw" in the README is not being received well, is because:

  1. It does specify that it's a toy kernel, not for serious use, and;
  2. Basically all kernels by single developers are hobby kernels, and it's generally assumed to be a toy project.

Please, do try write a kernel yourself from scratch, learn how to do it, and if you do it and it's still easy, then I'll take this back. However, that will not happen. I notice that many of your own projects aren't exactly revolutionary, half are forks, so why should mine be?

Additionally, a project does not need to change the world or be a "meaningful contribution to society". This is a project for me to learn about the inner workings of hardware and kernelspace processes and nothing else.

TruncatedDinoSour commented 2 months ago

what a clown lmao

likecrazy1 commented 2 months ago

@rayanamal

No, itā€™s stupid easy and gets easier by the day, because the competition is kernels written in 90s and every day thereā€™s new innovations popping up which are impossible to retrofit to existing systems.

Tell me you don't know what you're talking about, without telling me you don't know what you're talking about

TruncatedDinoSour commented 2 months ago

Thanks for asking, Iā€™m Rayan Amal. I pointed a flaw in the README, what is wrong with that? I donā€™t understand why yā€™all are blowing this up like I committed a cardinal offense, like telling him to write an OS for actual general-purpose real world use in 2024. Apparently nobody can do that, guess why? Because everyone is busy whining just how hard it is to write an OS nowadays. No, itā€™s stupid easy and gets easier by the day, because the competition is kernels written in 90s and every day thereā€™s new innovations popping up which are impossible to retrofit to existing systems. Because again, existing systems are museum artifacts written in 90s. Ping me when the entire contemporary global software ecosystem is fully eradicated from the face of Earth, together with the UNIX local maxima they have been stuck in since 30 years.

this is such an r/niceguys ahh message, anyway, the project is genuinely pretty cool, im so confused why are you butthurt by some random project online lmao

Wervice commented 2 months ago

You seriously just went up to a stranger and told them, they have fun the wrong way.

lukflug commented 2 months ago

Thanks for asking, Iā€™m Rayan Amal. I pointed a flaw in the README, what is wrong with that? I donā€™t understand why yā€™all are blowing this up like I committed a cardinal offense, like telling him to write an OS for actual general-purpose real world use in 2024. Apparently nobody can do that, guess why? Because everyone is busy whining just how hard it is to write an OS nowadays. No, itā€™s stupid easy and gets easier by the day, because the competition is kernels written in 90s and every day thereā€™s new innovations popping up which are impossible to retrofit to existing systems. Because again, existing systems are museum artifacts written in 90s. Ping me when the entire contemporary global software ecosystem is fully eradicated from the face of Earth, together with the UNIX local maxima they have been stuck in since 30 years.

Not to add to the dogpile, but it's not "stupid easy and gets easier by the day". Just because something is old, doesn't mean it doesn't hold up. It's often easier to extend a good existing system than to reinvent the wheel. Name one "innovation[s] popping up [that is] impossible to retrofit to existing systems". Writing an actually useful OS is challenging, because (aside from the general fact that real-world complications and doing things properly takes a ton of effort):

This means the only way to get there is for the to be a huge reason motivating a large group of people to use and support the OS (in the sense of writing applications and drivers for it), otherwise people will simply stick with the existing OS, since the cost of switching is so tremendously high. Modern kernels are quite versatile and what really matters is what you do on top of them, and at least in my personal opinion, there's no "innovation" which requires kernels to fundamentally change. Finally, "fully eradicat[ing]" the "entire contemporary global software ecosystem [...] together with the UNIX local maxima they have been stuck in" is a task that is infinitely harder than anything discussed so far. We have legacy going back to at least the early 60s, if not even earlier, so it is arguably impossible to do that.

rayanamal commented 2 months ago

Ok, real talk now, I have to admit I was half trolling half tongue in cheek up until now. The best way to get a good answer on the internet is to deliberately claim false stuff, as they say. I have nothing against Jake or SpecOS, Iā€™d be certainly react the same if someone did the same to me. Jake, I apologize for this, hopefully you can forgive.

@lukflug, thank you for your detailed response.

Iā€™d like to defend my core argument, for I do believe in it: That itā€™s completely possible, plausible and worthwhile to start an OS for the masses from scratch in 2024.

Just because something is old, doesn't mean it doesn't hold up. It's often easier to extend a good existing system than to reinvent the wheel. Name one "innovation[s] popping up [that is] impossible to retrofit to existing systems".

The folks at FoundationDB developed a debug tool so powerful it could find all possible bugs in their software and was able to replay them perfectly[1].

At FoundationDB, once we hit the point of having ~zero bugs and confidence that any new ones would be found immediately, we entered into this blessed condition and we flew. Programming in this state is like living life surrounded by a force field that protects you from all harm. Suddenly, you feel like you can take risks. We did crazy stuff. We deleted all of our dependencies because they had bugs, and wrote our own Paxos implementation in very little time and it had no bugs. We rewrote the entire transaction processing subsystem of our database to make it faster and more scalable ā€“ a bonkers thing to do btw ā€“ and the project was shockingly not a debacle, and oh yeah it had no bugs. We had built this sophisticated testing system to make our database more solid, but to our shock that wasnā€™t the biggest effect it had. The biggest effect was that it gave our tiny engineering team the productivity of a team 50x its size.

Their setup involved a simulated network with their app running in simulated machines. Now they founded Antithesis, and their testing product, which they advertise as for use with any software, involves a hypervisor control a deterministic machine(s) and a network whose all parameters are set by a random number generator. Now, this is a workaround and a hack:

Hereā€™s an obvious one: how do you take an arbitrary piece of software, which is probably doing stuff like spawning threads, checking the time, asking the kernel for random numbers, and talking to other software over a network, and make it deterministic? At FoundationDB we had the benefit of a green-field project that we knew we wanted to test this way, and we had no dependencies (or at least, we didnā€™t once weā€™d deleted them all).

But any new software development methodology that requires everybody to rewrite everything from scratch isnā€™t going to get very far. We thought about this and decided to just go all out and write a hypervisor which emulates a deterministic computer. Consequently, we can force anything inside it to be deterministic. That meant learning lots of fun new things about how Intel CPUs handle extended page tables and other related horrors.

Itā€™s precisely because they canā€™t convince everyone to rewrite everything from scratch that they resort to this approximation of a solution. Emulating a computer inside a hypervisor is only necessary because there is no Software Development Platform that can do this natively today. One can imagine an OS coupled with a programming language which provides this ā€œhundred-percent testingā€ out of the box for all software written in it. Just imagine the productivity gains that would be realized from this feature alone.

Can you integrate such a thing to Linux? I doubt it has even a slight chance, itā€™d take a total rewrite and the result just wouldnā€™t be Linux anymore.

This is just one example. What about a modular OS that is able to run on microcontrollers and mainframes the same? What about an OS that can run on other OSes the same it runs on bare metal? What about a Single Address Space & Single Privilege Level OS that is secure and safe, while being more performant due to lack of context switching [2]? What about a cross-platform native application runtime that is completely abstracted away from the platform? The web is constrained in many ways and is a leaky abstraction, not being exactly the same on every platform. Docker is a leaky abstraction. Not saying these arenā€™t good enough for most people today. Shipping a VM image is possibly the nearest solution but is highly unpractical. And you know what, people are doing it. Actual software companies do that today because they find itā€™s not possible to guarantee stability, security and durability on current systems.

Now, I wonā€™t go into cybersecurity because itā€™d take forever. Experts know itā€™s largely a theatre today, which is enough to tell you the current state of it. That could alone be a reason to rewrite a software ecosystem separate from the current one.

National cybersecurity, thatā€™s a different one. Yā€™all in the SF can never understand how much we in the other parts of the world would like it to not depend on the US in the supply chain of all our software. Which partly answers the next point:

This means the only way to get there is for the to be a huge reason motivating a large group of people to use and support the OS

Motivations are manifold:

Whatever improvements made on the big three OSes since their inception have been incremental. Not ignoring the value of continuous incremental improvements, but there is a difference between them and breakthroughs. Quantum leaps. Plenty of quantum leaps have happened in other domains and reached widespread use: artificial intellgence algorithms, graphics rendering, blockchains, software distribution systems, programming languages. While OSes remained ā€œstableā€, so to speak.

I highly recommend the famous 2011 blogpost Too Much Stupid Software[3], which approaches the problem through the software complexity angle. His argument may as well be stronger than all I said here.

And lastly, thereā€™s the societal impact of the software on software developers. We all think in the paradigms of the day. And the underlying paradigms havenā€™t changed since 30+ years. File descriptors and sockets, passed from one process to another. The way we think today is a constraint on how we can think tomorrow. There goes the saying:

Whoever understands UNIX is condemned to repeat its mistakes.

1: https://antithesis.com/blog/is_something_bugging_you/

2: https://theseus-os.org/

3: https://web.archive.org/web/20160906072516/http://www.lovettsoftware.com/LovettSoftware/post/2011/10/02/Too-Much-Stupid-Software.aspx

TruncatedDinoSour commented 2 months ago

Ok, real talk now, I have to admit I was half trolling half tongue in cheek up until now. The best way to get a correct answer on the internet is to deliberately claim false stuff, as they say. I have nothing against Jake or SpecOS, Iā€™d be certainly react the same if someone did the same to me. Jake, I apologize for this, hopefully you can forgive.

@lukflug, thank you for your detailed response.

Iā€™d like to defend my core argument, for I do believe in it: That itā€™s completely possible, plausible and worthwhile to start an OS for the masses from scratch in 2024.

Just because something is old, doesn't mean it doesn't hold up. It's often easier to extend a good existing system than to reinvent the wheel. Name one "innovation[s] popping up [that is] impossible to retrofit to existing systems".

The folks at FoundationDB developed a debug tool so powerful it could find all possible bugs in their software and was able to replay them perfectly[1].

At FoundationDB, once we hit the point of having ~zero bugs and confidence that any new ones would be found immediately, we entered into this blessed condition and we flew. Programming in this state is like living life surrounded by a force field that protects you from all harm. Suddenly, you feel like you can take risks. We did crazy stuff. We deleted all of our dependencies because they had bugs, and wrote our own Paxos implementation in very little time and it had no bugs. We rewrote the entire transaction processing subsystem of our database to make it faster and more scalable ā€“ a bonkers thing to do btw ā€“ and the project was shockingly not a debacle, and oh yeah it had no bugs. We had built this sophisticated testing system to make our database more solid, but to our shock that wasnā€™t the biggest effect it had. The biggest effect was that it gave our tiny engineering team the productivity of a team 50x its size.

Their setup FoundationDB involved a simulated network with their app running in simulated machines. Now they founded Antithesis, and their current system, which they advertise as for use with any software, involves a hypervisor control a deterministic machine(s) and a network whose all parameters are set by a random number generator. Now, this is a workaround and a hack:

Hereā€™s an obvious one: how do you take an arbitrary piece of software, which is probably doing stuff like spawning threads, checking the time, asking the kernel for random numbers, and talking to other software over a network, and make it deterministic? At FoundationDB we had the benefit of a green-field project that we knew we wanted to test this way, and we had no dependencies (or at least, we didnā€™t once weā€™d deleted them all).

But any new software development methodology that requires everybody to rewrite everything from scratch isnā€™t going to get very far. We thought about this and decided to just go all out and write a hypervisor which emulates a deterministic computer. Consequently, we can force anything inside it to be deterministic. That meant learning lots of fun new things about how Intel CPUs handle extended page tables and other related horrors.

Itā€™s precisely because they canā€™t convince everyone to rewrite everything from scratch that they resort to this approximation of a solution. Emulating a computer inside a hypervisor is only necessary because there is no Software Development Platform that can do this natively today. One can imagine an OS coupled with a programming language which provides this ā€œhundred-percent testingā€ out of the box for all software written in it. Just imagine the productivity gains that would be realized from this feature alone.

Can you integrate such a thing to Linux? I doubt it has even a slight chance, itā€™d take a total rewrite and the result just wouldnā€™t be Linux anymore.

This is just one example. What about a modular OS that is able to run on microcontrollers and mainframes the same? What about an OS that can run on other OSes the same it runs on bare metal? What about a Single Address Space & Single Privilege Level OS that is secure and safe, while being more performant due to lack of context switching [2]? What about a cross-platform native unconstrained application runtime that is completely abstracted away from the platform? The web is constrained in many ways and is a leaky abstraction, not being exactly the same on every platform. Docker is a leaky abstraction. Not saying these arenā€™t good enough for most people today. Shipping a VM image is possibly the nearest solution but is highly unpractical. And you know what, people are doing it. Actual software companies do that today because they find itā€™s not possible to guarantee stability, security and durability on current systems.

Now, I wonā€™t go into cybersecurity because itā€™d take forever. Experts know itā€™s largely a theatre today, which is enough to tell you the current state of it. That could alone be a reason to rewrite a software ecosystem separate from the current one.

National cybersecurity, thatā€™s a different one. Yā€™all in the SF can never understand how much we in the other parts of the world would like it to not depend on the US in the supply chain of all our software. Which partly answers the next point:

This means the only way to get there is for the to be a huge reason motivating a large group of people to use and support the OS

Motivations are manifold:

* Productivity and the resultant tremendous economic gains

* National sovereignty, through the creation of an OS that is simple enough for any nation to audit themselves fully

* Real cybersecurity, not the talk of it

* Redundancy through diversification. Donā€™t spend a penny making the new ecosystem compatible with the current one. So that Jia Tan canā€™t take over the world.

* Reduction of software complexity[3].

* The chance to take part in something thatā€˜ll change the world. People are highly motivated by meaningful improvement to the world however that happens.

Whatever improvements made on the big three OSes since their inception have been incremental. Not ignoring the value of continuous incremental improvements, but there is a difference between them and breakthroughs. Quantum leaps. Plenty of quantum leaps have happened in other domains and reached widespread use: artificial intellgence algorithms, graphics rendering, blockchains, software distribution systems, programming languages. While OSes remained ā€œstableā€, so to speak.

I highly recommend the famous 2011 blogpost Too Much Stupid Software[3], which approaches the problem through the software complexity angle. His argument may as well be stronger than all I said here.

And lastly, thereā€™s the societal impact of the software on software developers. We all think in the paradigms of the day. And the underlying paradigms havenā€™t changed since 30+ years. File descriptors and sockets, passed from one process to another. The way we think today is a constraint on how we can think tomorrow. There goes the saying:

Whoever understands UNIX is condemned to repeat its mistakes.

1: https://antithesis.com/blog/is_something_bugging_you/

2: https://theseus-os.org/

3: https://web.archive.org/web/20160906072516/http://www.lovettsoftware.com/LovettSoftware/post/2011/10/02/Too-Much-Stupid-Software.aspx

holy fucking shit lmaoo

UnmappedStack commented 2 months ago

@rayanamal I would say the complete opposite. Kernel development has gotten significantly more difficult in the last 20 or so years.

Back in the 70 up to about the 90s (more or less), people wrote kernels in real mode, meaning that they had access to existing drivers provided by the BIOS, meaning they actually barely had to write anything. You can see that MS-DOS 1.0 has only a few hundred lines of code, possibly less, for this reason.

Additionally, hardware has gotten significantly more complex to write for in the past 20 years. We used to have hardware such as PS/2 keyboard and ATA hard disks, which were simple and easy to write for. Now we have USB keyboards and NVMe disks, which are more complex to write for.

FoundationDB is great and all, but for a hobby project, that's not nearly as fun! Not to mention, I'm 99% sure it's not always gonna be correct. Even if it does work well, you still need to understand operating system concepts themself and how the hardware works on a low level, which isn't simple.

However, the main point is that frankly it isn't my responsibility to create something to change the world or be revolutionary, and it's a very judging title especially for a hobby project for my own learning and enjoyment. Open source developers owe you nothing, which is a very important thing to remember.

I thank you for your apology and understand that it was tongue-in-cheek partly, but you should understand that quite often people will not see it as that and get offended, especially as the way it was worded did not particularly sound like a joke.

HamilcarR commented 2 months ago

Thanks for asking, Iā€™m Rayan Amal. I pointed a flaw in the README, what is wrong with that? I donā€™t understand why yā€™all are blowing this up like I committed a cardinal offense, like telling him to write an OS for actual general-purpose real world use in 2024. Apparently nobody can do that, guess why? Because everyone is busy whining just how hard it is to write an OS nowadays. No, itā€™s stupid easy and gets easier by the day, because the competition is kernels written in 90s and every day thereā€™s new innovations popping up which are impossible to retrofit to existing systems. Because again, existing systems are museum artifacts written in 90s. Ping me when the entire contemporary global software ecosystem is fully eradicated from the face of Earth, together with the UNIX local maxima they have been stuck in since 30 years.

then go make your OS , if it's that easy , and you have enough time to go tell others to make it for you