Just a few ramblings related to Google's new OS, Fuchsia. This isn't related to my current projects, but it could prove to be important in the future.
Why a new OS? Companies have been basing more and more systems on Linux. It has almost become the default for building new systems. But should it be that way, and if not, what should they use?
I've personally spent years developing for various flavors of Unix (Unix, Solaris, Linux, etc...) and several years working on embedded systems. I really like Unix/Linux as a development environment, but it seems inappropriate as the basis for many systems, especially embedded systems. It can also present a rather complex environment from a programming standpoint depending on what parts of the OS your code has to interact with.
Linux is based on Unix. There's no getting around it, Linux is pretty much a free implementation of Unix. Unix was designed during the computing world of the late 60's and early 70s. Most programs ran in batch mode, they didn't require much if any networking, they all ran from the console, and they weren't written in an object oriented programming language. The flexibility provided for console based applications is nothing short of amazing, but then it was a console oriented world, and Unix was designed as a development environment. Don't get me wrong, Unix has seen a lot of development since then, but that is it's roots. GUIs didn't exist, the internet didn't exist, object oriented programming didn't really catch on for over a decade after Unix was first released, and personal computers didn't even exist yet. Unix was designed for mini-computers, not for something that fits in the palm of your hand. The fact that it does work for such applications is a testimony to Unix's flexibility and robustness of the design. It's also testimony to the power of modern processors and how small large amounts of RAM and mass storage have become.
Unix is neither lightweight, nor simple. The number of separate modules that must be loaded just to boot is a bit mind numbing. Anyone that's watched the stream of messages when Linux boots should recognize that there must be a faster and simpler way, especially for embedded systems. And from a programming standpoint, the Unix internals can require you to write more code, which requires more development time, which requires more testing and debugging, etc... than a lightweight OS design would require. Programmers have addressed this through using libraries of code, templates, isolating the programmer from it with languages like Java, etc... but ultimately, you are building more and more code which requires more and more memory and more and more CPU time. What if you could eliminate a lot of that by dealing with it at the OS level in the first place, and by simplifying the programming interface?
I pose a few simple questions. First, why should a 25MHz Amiga from 1990 boot from an old, slow hard drive in the same or less time than a 1+ GHz router booting from FLASH or a high speed SD interface? And second, does it need to be this way? The answer to the first question is simply, it shouldn't, and the answer to the second question is obviously, it doesn't. It is simply that way because companies don't want to invest the time and money for the development of an alternative OS, and there really aren't any existing options that compete with it capability wise for free. One embedded project I worked on did develop it's own real time OS. It was written from scratch to duplicate the APIs of a commercial real time OS. The license fees for the commercial OS were more expensive than paying a programmer to write it from scratch. But then, Linux didn't exist yet, so there wasn't a free alternative. One of the takeaways from that project was that the box booted in a manner of seconds even with the self test during startup. Linux would have taken over a minute and would have required more memory. How many products would work better if they were based on something else? Should it really take that long to boot a router? How about a TV? Seriously, why does my smart TV take 30 seconds to boot?
Google's new OS may or may not addresses these issues, but additional options are certainly welcome. It certainly won't replace Linux for everything, but hopefully, it will provide an alternative for systems where Linux doesn't seem appropriate. If it can reduce development times, memory footprint, boot times, etc... it will be a very attractive alternative. More importantly, it will stir things up a bit in a world that has become entrenched around Linux. And while Fuchsia may not be the answer to these problems, but maybe an offshoot of it will. It is open source after all. It will be interesting to see what this project leads to.
Article Link
Why a new OS? Companies have been basing more and more systems on Linux. It has almost become the default for building new systems. But should it be that way, and if not, what should they use?
I've personally spent years developing for various flavors of Unix (Unix, Solaris, Linux, etc...) and several years working on embedded systems. I really like Unix/Linux as a development environment, but it seems inappropriate as the basis for many systems, especially embedded systems. It can also present a rather complex environment from a programming standpoint depending on what parts of the OS your code has to interact with.
Linux is based on Unix. There's no getting around it, Linux is pretty much a free implementation of Unix. Unix was designed during the computing world of the late 60's and early 70s. Most programs ran in batch mode, they didn't require much if any networking, they all ran from the console, and they weren't written in an object oriented programming language. The flexibility provided for console based applications is nothing short of amazing, but then it was a console oriented world, and Unix was designed as a development environment. Don't get me wrong, Unix has seen a lot of development since then, but that is it's roots. GUIs didn't exist, the internet didn't exist, object oriented programming didn't really catch on for over a decade after Unix was first released, and personal computers didn't even exist yet. Unix was designed for mini-computers, not for something that fits in the palm of your hand. The fact that it does work for such applications is a testimony to Unix's flexibility and robustness of the design. It's also testimony to the power of modern processors and how small large amounts of RAM and mass storage have become.
Unix is neither lightweight, nor simple. The number of separate modules that must be loaded just to boot is a bit mind numbing. Anyone that's watched the stream of messages when Linux boots should recognize that there must be a faster and simpler way, especially for embedded systems. And from a programming standpoint, the Unix internals can require you to write more code, which requires more development time, which requires more testing and debugging, etc... than a lightweight OS design would require. Programmers have addressed this through using libraries of code, templates, isolating the programmer from it with languages like Java, etc... but ultimately, you are building more and more code which requires more and more memory and more and more CPU time. What if you could eliminate a lot of that by dealing with it at the OS level in the first place, and by simplifying the programming interface?
I pose a few simple questions. First, why should a 25MHz Amiga from 1990 boot from an old, slow hard drive in the same or less time than a 1+ GHz router booting from FLASH or a high speed SD interface? And second, does it need to be this way? The answer to the first question is simply, it shouldn't, and the answer to the second question is obviously, it doesn't. It is simply that way because companies don't want to invest the time and money for the development of an alternative OS, and there really aren't any existing options that compete with it capability wise for free. One embedded project I worked on did develop it's own real time OS. It was written from scratch to duplicate the APIs of a commercial real time OS. The license fees for the commercial OS were more expensive than paying a programmer to write it from scratch. But then, Linux didn't exist yet, so there wasn't a free alternative. One of the takeaways from that project was that the box booted in a manner of seconds even with the self test during startup. Linux would have taken over a minute and would have required more memory. How many products would work better if they were based on something else? Should it really take that long to boot a router? How about a TV? Seriously, why does my smart TV take 30 seconds to boot?
Google's new OS may or may not addresses these issues, but additional options are certainly welcome. It certainly won't replace Linux for everything, but hopefully, it will provide an alternative for systems where Linux doesn't seem appropriate. If it can reduce development times, memory footprint, boot times, etc... it will be a very attractive alternative. More importantly, it will stir things up a bit in a world that has become entrenched around Linux. And while Fuchsia may not be the answer to these problems, but maybe an offshoot of it will. It is open source after all. It will be interesting to see what this project leads to.
Article Link
No comments:
Post a Comment