| |

I Need An OS – Part 1

My Problem

More specifically, I need a workstation OS. Even more specifically, I need a workstation OS that has a pleasant desktop user experience. Hmmm…. Do I really need it, or do I just WANT it? At this point, the difference between “need” and “want” are negligible. At the end of the day, I think I need it, so it’s going to be handled as a need. For the sake of this posting, why I need it is also unimportant.

Okay, now that that’s out of the way, what exactly do I need? As this will likely be an ongoing discussion, I’ll limit this particular entry to high level needs. Additionally, I’ll try to sum up the bulk of my need in this rather limited blurb:

“I need a workstation OS that fully supports whatever choice of hardware I choose to build for it, is able to fully recognize and manage all devices in (& attached to) that hardware, gets out of my way while I work, and doesn’t become preposterously broken when there’re updates. Also, I don’t want some boring rehash of an OS that’s been done over and over -I’m not looking for yet another Linux distro.”

What’s The Solution

If I’m writing this entry (as a tech professional), then we can assume that I’ve already looked at what’s available and have determined that what I specifically want (& how I specifically want it) isn’t presently available. Does that mean that I want something that’s so special and obscure that either I’m just being overly picky for the hell of it and can never be pleased? No. What it means is that I’m simply not a member of the target audience for what’s on the market.

Sounds like I’m screwed, right? Well, not necessarily. What I’m looking for is mostly available, just not in a singular package. So, I’ll have to treat this like a piece of Ikea furniture and assembly it myself. In fact, I’ll also have to customize this piece of furniture. While that’s still a huge undertaking, it still takes a huge burden off of my back. For one, I don’t have to go through the beginning stages of starting a kernel (and it’s userland) from scratch. Unlike most of my projects, the goal here isn’t the enjoyment of making tech (nor the fun of learning something new). The goal is to get something together and become productive as quickly as possible.

With that being said, there’re some parts of this project that are going to take substantially longer than other parts. For instance, I know that I’m going to have an issue with device drivers. Unfortunately, the device driver landscape for open source drivers still needs a lot of improvement, IMO. Not only the issue of what’s available, but also the issue of how to quickly add reliable support for a new piece of hardware. A lot of this is the fault of vendors by way of hardware bugs and an extreme lack of documentation. However, even with perfect hardware and lots of documentation, the frameworks that are used to create drivers could stand some improvement. The more I think about it, the more I think that something similar to Apple’s IOKit might be in order. It would definitely be a huge project to take on, but it would also be extremely worth it.

So, let’s say that I’ve got the base OS in place with excellent device driver support -what’s next? The next important aspect (for me) is to have an interface that’s familiar, but necessarily yet another rehashed X11 DE. The one exception to this is Enlightenment. I would love to have Enlightenment as the user environment. No, not running on your standard X11 server, but maybe ported to something else. Currently, there’s a whole lot of instability going on with X11 in the community, and I really don’t think that Wayland is the direction that I need to go in with this. However, we’ve not seen a full clone of OS/2’s Workplace Shell, so that might be an interesting direction to go in. However this ends up going, that will be “THE” user interface. There will not be an option to use every desktop under the sun. There will be only “ONE” desktop environment. The goal is to be productive from installation -with minimal fiddling with settings. The desktop should be immediately usable, because it will be the primary environment.

Another thing that I’m not necessarily pleased with is how settings and configurations are handled. Unlike many in the open source world, I’m not even remotely a fan of config files. I don’t agree that being human readable is a good reason for the existence of config files. I also don’t agree that being able to edit them yourself is a good reason for them to exist. For me, Windows solved the problem of config files the best by creating the Registry. Sure, there were lots of growing pains involved until the system was mature, but that’s what Microsoft does best -release, then iterate. Today, Registry issues are no where near as prevalent as they were decades ago. This is absolutely another area where I would depart from the standard *nix way of doing things -there will be minimal fiddling with settings.

Now What?

Well, it would seem that I have a lot of work ahead of me, that’s what. Like I’ve already said, the ingredients are already available. Right now, I don’t have to start from scratch, I have to find a donor OS to move forward with. I’ve got a few in mind, but I haven’t narrowed it down to the absolute “one”, yet. For anyone who’s curious or speculative, you can go ahead & eliminate anything that is based on the Linux kernel. I also have no intentions of having a Linux subsystem in this OS. If anyone else ends up using this thing and decides that they want Linux support, then they can go use Linux. While there’s still a small possibility for it, odds are good that this won’t be based on anything from the Solaris world. The truth is that there’s just too much there that would need to be removed, which could cause some unexpected headaches. Additionally, it’s build with GCC, while this project will use LLVM.

After donor OS selection, deep diving into it’s IO and configuration systems are next. Somewhere during that time, the creation of a standard for the new filesystem layout will likely happen. The goal here is refactoring the donor OS into the foundation that this new workstation OS needs. I think that this will encompass a lot of work, so work on the rest of the listed “wants/needs” for this OS won’t begin for an extremely long time.

Conclusion

So, where does all this leave me? Well, right where I usually end up—neck deep in a massive undertaking that probably only makes sense in my head, but feels entirely necessary. I’ve accepted that if I want a tailored workstation OS, then I’ll have to build it piece by piece, pruning and reshaping until it fits like a glove. The fact that I even need to go this far is both frustrating and oddly exciting. It means that something different can exist… and maybe should. Will this thing ever be “done”? Probably not. But that’s okay. This isn’t about chasing some imaginary endpoint—it’s about building a tool that doesn’t fight me while I work. And if I’m lucky, maybe it’ll end up being useful to someone else out there who’s just as fed up with the status quo. Until then, I’ll keep chipping away at it. One line, one layer, one decision at a time.

Similar Posts