Bradford Morgan White has published an excellent retrospective of QNX, the realtime microkernel operating system focused on embedded use cases. The final paragraph made me sad, though.
QNX is a fascinating operating system. It was extremely well designed from the start, and while it has been rewritten, the core ideas that allowed it survive for 45 years persist to this day. While I am sad that Photon was deprecated, the reasoning is sound. Most vendors using QNX either do not require a GUI, or they implement their own. For example, while Boston Dynamics uses QNX in their robots, they don’t really need Photon, and neither do SpaceX’s Falcon rockets. While cars certainly have displays, most vehicle makers desire their screen interfaces to have a unique look and feel. Of course, just stating these use cases of robots, rockets, and cars speaks to the incredible reliability and versatility of QNX. Better operating systems are possible, and QNX proves it.
↫ Bradford Morgan White at Abort Retry Fail
Way back in 2004, before I even joined OSNews properly, I wrote about QNX as a desktop operating system, because back then I went through a short stint where I used QNX and its amazing Photon MicroGUI as my primary desktop. Back then, there was a short-lived but very enthusiastic community using QNX on desktops, sharing tips and findings, supported by one or two QNX employees who tried their best to support this fledgling community in the face of corporate indifference.
Eventually, these QNX employees left the company, and QNX started making it clearer than ever that they were not, in any way, interested in people using QNX on desktops, and in all honesty, they were most likely correct. However, I still think we had something special there, and had QNX’ management decided to help us out, it could’ve grown into something more sustainable. An open source QNX and Photon could’ve had an impact.
Using QNX on the desktop back then was much easier than you might imagine, with graphical package managers, capable browsers and email clients, a massive pile of open source packages, pretty great performance, and little to no need to ever leave the GUI and use a CLI. If your hardware was properly supported, you could have a great experience.
One of the very small “what-ifs” form the early 2000s.

I still have my Blackberry Playbook (it ran QNX.) What a cool little device that was. I played many hours of Plants vs. Zombies and Machinarium on that thing.
Yeah, the Photon MicroGUI was responsive and elegant. It looked like a more polished version of the stuff that Jakub Steiner was doing with Gnome 2.x and Novell/SuSE around the time of SLED 10 (which was an all-time great Gnome implementation).
I would really like to see another DE with a similar design. Maybe MATE could pull it off.
Early 2000s desktop scene was so much more interesting than today.
I still long for my fully custom WindowMaker session with parts of ROX desktop in it.
And, yes, the first time that I saw Photon, it made quite a impact. Not as much as BeOS, but it did.
BeOS and QNX Photon were my absolute favorite OSes from the early 2000s, and I held onto them both as long as I could before they withered into obsolescence. To this day the world has yet to produce a beautiful, functional, and complete GUI that even approaches those two[1][2]. And that isn’t rose tinted glasses; I still have BeOS 5 running on an old Dell Latitude CPi laptop, and QNX Photon running under emulation, and I drag them both out from time to time to relive the glory days of good interface design.
[1] We **almost** had that with SerenityOS, but between the project leader’s bigotry and his focus shift towards Ladybird, that project sadly never came to pass.
[2] “But what about Haiku?” Haiku is wonderful and I love it and it’s coming along well, but somewhere along the way it lost the charm that BeOS always had. I still use it and I’m one of its biggest cheerleaders, but it isn’t BeOS and never really will be, at least to me.
And WebOS ?
WebOS was never a PC desktop OS, it was a mobile device OS and became (and still is via LG) a television OS.
Was thinking about this : https://archive.org/details/openwebos-desktop-1005
That’s literally just the WebOS mobile UI slapped onto an Ubuntu installation, and it’s been dead since 2013, which is why you had to link to the Internet Archive just to get a screenshot of it.
The BeOS interface was designed from the ground up by Be Inc. to be the face of their operating system, ditto with Photon and QNX. I get that you have a soft spot for WebOS, but it’s really not in the scope of the discussion here.
And I’m not knocking your enthusiasm for WebOS, I really wish it had taken off as a successor to the Palm interface, which I would say was the epitome of mobile interface design, analogous to BeOS and QNX Photon on the desktop.
It would have become one in time had we not had to sell ourselves to HP. It was the next target for my team after Tablets.
IMO QNX-like architecture provides the best balance of practicality and advanced features of any OS architecture, which is why I am writing my own QNX-like OS:
https://gitlab.com/uxrt/uxrt-toplevel
It’s not a clone of any version of QNX, but very strongly resembles it. Basically it is to Neutrino as Neutrino was to QNX 4 (QNX 4 and Neutrino aren’t fully compatible, and are distinct OSes rather than merely successive versions). The IPC model is significantly more orthogonal than that of Neutrino and uses file descriptors for everything. Literally everything will be a file, even process memory and the connection to the process server itself, and basically all security will be reduced to file security (and it will be possible to use pretty much all APIs in a capability-oriented manner).
Currently, it only runs a bunch of hardcoded tests of the VFS and the various filesystems built into the process server and doesn’t run any user programs at all. I am expecting to have it running user-level test programs within a few months assuming I don’t hit some kind of serious issue, followed by a libc and a shell soon after. All I have left to implement is a few parts of procfs (basically just creation of virtual address spaces, processes, and threads, with much of the infrastructure for that already existing but just not exposed over RPC yet).
As soon as I have a shell working I am going to set up an actual proper site up for it with some more organized architectural documentation. I still haven’t settled on what I’m going to call the reference distribution; “UX/RT” is more an internal name than a product name. I’m sort of thinking something related to quantum mechanics or particle physics but can’t seem to come up with anything (any suggestions would definitely be welcome).
Once I have enough infrastructure in place, I am going to port LKL (which turns the Linux kernel into a library) to get Linux’s support for hardware, disk filesystems, and network protocols with very little effort. I also plan to write a library-based Linux binary compatibility layer, with the goal of supporting the majority of Linux applications (although little effort will be made to have support for system-level Linux programs).
I’m planning to eventually write a custom desktop environment that will be fairly Mac-like by default, but highly customizable. The underlying window server will be custom as well and sort of similar to Wayland, but unlike Wayland the window server will be nearly policy-free with a separate X11-style reparenting window manager running on top of it. Also unlike Wayland, the base API will support all operations that X11 does rather than refusing to implement some things because they might be dangerous (the UX/RT security model will be flexible enough to gate specific parts of the window system API behind roles). I want to extend the traditional desktop model in several places, such as support for BTRON-like compound documents, and alternative views of directories alongside traditional folders, such as WinFS-like database views of the filesystem (although much more interoperable with traditional folders than WinFS).
Unfortunately, even if I get it to the point where it runs a desktop and Linux applications, I’m not sure how many people will actually care. I know that frustration with mainstream OSes is at an all-time high, but I am exceptionally horrible at making connections with people and promoting my work. I don’t generally do things that offend people or push them away, nor do I have classical social anxiety, but I have a severely crippling tendency to stay quiet. Even the vast majority of other people who claim to be bad at making connections are middling at worst at it compared to me. Most other people who claim to be bad at it still basically always have something to talk about even when nothing interesting is happening, whereas even if I have something interesting going on I still keep quiet by default. As a result, people tend to forget I even exist. I feel like even if I came up with a universal cancer cure, that wouldn’t be enough to get people to notice me. I’m just that awful at making connections.
I did actually somehow manage to get some developers from a major conglomerate interested in paying me to work on it (so they could use it as a replacement for QNX in automotive applications) because they saw my presentation from FOSDEM 2022, to the point where I flew out to meet them and they paid me for it, but all of a sudden at the last minute they said they couldn’t pay me for the foreseeable future. It’s quite possible that was a fluke that will never happen again, since all conferences like that are back to in person and I can’t afford to fly anywhere (nor are any of them anywhere near me), and my crippling tendency to stay quiet may keep basically anyone who might potentially be interested from ever knowing it exists.
Sounds really interesting! Good luck with the further work on your OS! As for the communication, well, it seems you’re pretty good at writing, so a forum like this is perfect. I’m sure OSNews would pick up any articles you submit (either links to a blog or directly submitted articles) about your future work on the OS, which is at least a start! 😉
I do plan to submit an article once I actually have it running a shell, but I have no idea if anyone will actually care.
If I were even as good at making connections as the vast majority of other people who claim to be bad at it, I’d be almost guaranteed to succeed once I finish it to a point where it’s actually usable as a desktop OS, seeing as Windows is becoming more and more infested with stupid anti-features with every update, macOS is becoming more and more like iOS, and Linux is its own worst enemy. This does leave a massive opportunity for a better OS that maintains compatibility with existing software, but like I said I’m just that awful at making connections.
I am at least going to try to get it to a working desktop and Linux compatibility layer, but I’m not expecting any miracles. I would be surprised if I get more than a handful of people downloading it just to try it once, let alone any further commercial interest. It’s quite possible I will be entirely on my own.
It’s not at all a matter of being bad at writing. It’s more that most of the time I just don’t have anything to say, and even when I do have something to say my default state is to stay quiet and it often takes a fair bit of mental energy to overcome that.
andreww591,
I find not having a shell funny because that’s one of the first things I worked on when I was developing an OS. I’m sure you can hammer one out in a few hours. Or I guess maybe your intention was to port and run an existing shell rather than write your own. Ironically supporting unix shells is probably a lot more complicated than writing your own because of the overly convoluted tty/termios/task stuff going on there.
I have the same problem. After I left university, I found it extremely difficult to make connections. My work connections exist but it’s hard to get the type of jobs you want when you’re constantly being pigeon holed into the type of jobs you’ve had. In hindsight I think I made mistakes in taking local jobs “back home” instead of moving anywhere to put a big name on my resume. While I did apply, it was awful timing with recession and layoffs.
I’ve always enjoyed working on my own OS, but there was zero demand for it from the companies I had contacts with so I moved on. Is your motivation more of a hobby, or to grow it into something you can sell? If it’s the latter then IMHO your best bet might be to make it into a QNX clone with preexisting demand. It’s really hard to convince companies to invest in tiny little operating systems, but there may be companies who have already invested into QNX and appreciate there being another compatible alternative.
Things are a bit different when you’re writing a microkernel OS with strict layering like I am. I don’t see much point in writing a pseudo-shell just to have something to interact with before I had critical infrastructure like a VFS in place, since it wouldn’t actually be a real shell capable of starting user programs and would just get ripped out anyway. Most of the time it’s not that big of a deal to just test things with hardcoded test cases. I am planning to port an existing shell (something lightweight like ash, so I can easily disable any features that depend on having a full terminal driver) as soon as I have gotten user programs working.
You likely have it a lot easier than I do. Very few people have as severe of a tendency to stay quiet as I do. Even though I’m autistic, I am still significantly worse at making connections than most other autistics (most still always have stuff to talk about and don’t have a crippling tendency to withdraw).
For instance, I have been collecting emulated operating system images since 2003 and have what is possibly the largest collection of installed OS images in the world (something like 1700 images for over 250 platforms as things stand), but for nearly 20 years I said almost nothing about it anywhere (when I joined various retrocomputing Discords), even though I could have been blogging about it the whole time.
I don’t even have any work connections. I’ve only ever worked one software development job for a small local shop that was extremely mismanaged and severely underpaid me because they couldn’t afford to pay me anywhere near what I’m worth. Pretty much the only local software development jobs here are line-of-business, and basically all of those are going to have an incredibly toxic culture, and I’m too awkward and odd for them to hire me in the first place.
My goal is to write a better Linux than Linux and a better QNX than QNX that is actually useful for workstations and embedded systems. Selling it directly as proprietary software isn’t viable though (that would just lead to it ending up being to Linux as OS/2 was to Windows 3.x). I’m hoping to either get enough interest to be able to e-beg from people who want a better desktop/server OS, or somehow get another company that wants to use it in embedded systems to pay me to work on it and actually follow through on it. Even though it isn’t a bug-for-bug clone of QNX, I have designed the APIs with the intent of making it easy to develop at least a source-level compatibility layer for QNX. But like I said, I’m not getting my hopes up too high that any kind of miracle will occur. If I were even marginally better at making connections, success would be almost guaranteed if I get it to a usable state, but that is far from the case as
things stand.
andreww591,
My verbosity on osnews is compensating for how little I socialize IRL I probably say 100 words a day if I don’t have a client meeting,
I wish the data was a histogram, but…
https://wordraiders.com/guides/how-many-words-does-the-average-person-say-a-day/
Even when I am with people, I find it really hard to have a relatable conversation. I might talk a lot on the right subjects, but I find that rarely happens after I left university. I have little in common most people and talking is kind of forced.
Nobody ever takes me up on it, but I wouldn’t mind meeting up somewhere in person if you are ever around Long Island 🙂
I’m curious what you do for work? The majority of my work is with local businesses. I find most of my clients to be nice enough, but it’s common for pay to be lacking unfortunately. Rampant offshoring has pulled down market prices. I’d probably be better off if I stopped programming, became a project manager instead, and offshored the dev stuff… I always wanted to do CS and I’m pretty good at it, but the work hasn’t been rewarding and the industry isn’t what I was hoping it would be.
I certainly think there are aspects of linux that can be improved, but given that linux is “good enough” and has significantly better hardware and software support, it’s going to be hard to convince people to switch.
I don’t know about QNX.
I’ll be honest, I don’t think there’s a strong demand for new operating systems on their own. IMHO your best bet is to make an embeded application that happens to run on your OS. This application will be the selling point, and companies interested in it will buy both the application and OS it runs on.
Alfman,
It’s not uncommon for people who are quiet IRL to be much less so online, but that’s absolutely not the case for me. My tendency to be quiet is just as crippling online as it is IRL (just look at my history on this site and you can see that I’m barely active; I’m somewhat more active on Discord, but still much less so than just about everybody else there). Pretty much the only way somebody could be worse at making connections than me would be if they just don’t interact at all (which was me when I was younger; I have improved marginally, but it’s doubtful I can improve any more than I already have).
I’m unfortunately more or less on the opposite side of the continent from you and may never be able to travel very far unless a miracle happens and somebody actually takes interest in my work.
I’m unemployed and limping along on income support. The only software development work around here is line-of-business and those kinds of workplaces are almost always going to be incredibly toxic. Suit culture is an affront to every cell in my body. Not that they’d ever want anything to do with me anyways because I’m way too awkward and odd for them. The few remaining remote jobs are going to have intense competition for applicants, so there’s not much point in applying for those either. Freelancing isn’t really an option either since I’m so unimaginably awful at making connections (and freelance marketplace sites aren’t an option because they all have like 30 freelancers for every client).
To me it seems like it’s almost every day that I come across somebody fed up with mainstream OSes, Linux included. Linux is its own worst enemy, and I’m not sure there’s any way to truly fix it (as opposed to taking a few parts of the ecosystem and writing a better OS that’s compatible with Linux applications). The disorganized mess of fiefdoms developing it and its ad-hoc architecture are in no way conducive to making an actually decent OS, and it’s a wonder that it works at all. I can see many of those people switching to an alternative OS if it ran most Linux and Windows applications and had the same hardware support as Linux (and UX/RT would have hardware and application support comparable to Linux if fully realized, so there would be a decent number of people who would at least try it out if only I were able to get people interested in it).
andrew_w,
I am having trouble getting a read on if you are “ok” with the status quo or not. If you are ok with that, then great…no need to change. But if you would like things to change, I don’t think you need to put yourself down. Social isolation among males might be much more common than you realize (IMHO a topic is worthy of an osnews article):
https://fortune.com/well/2025/05/21/gen-z-millennial-men-loneliness/
In most crowds I feel like nobody’s interested in anything I have to say and so I usually don’t. And then there’s a loud mouth who won’t stop talking, and I realize I’m not interested in anything they have to say either, haha. The key is common interests, then it’s a lot less effort to talk. This got harder after university. Maybe you could join something like a linux user group. I started attending one and felt like I belonged. There were plenty of interesting topics and lots of opportunities to share ideas. I moved away, but you might give that a shot. It might take a little effort, but it’s a lot easier when it’s stuff you enjoy.
Yeah, I hear you.
I don’t think it’s possible for a new challenger to catch up to the drivers in Linux and windows, the lead is just too big. In theory you might reuse existing drivers, but linux drivers are tightly coupled to kernel structures, and the lack of an ABI is problematic since the dust never settles (which is actually one of the gripes people have with linux). Maybe you could get an LLM to help automate the conversion for you. But personally I think it’s better to focus on the features that make the OS unique than trying to remake linux.
Alfman,
I definitely wish I wasn’t this quiet because it’s constantly holding me back. There’s very likely not much I can really do to improve though. The damage was done 25 years ago. I was homeschooled and had almost no contact with anyone other than my immediate family and people at the church we went to. If I had gone to some kind of special program for twice-exceptional students, I would likely be much less quiet. I still wouldn’t be particularly good at making connections, but I would be significantly better at it. I do know I would have done horribly in mainstream public school though.
I had thought the one we had around here didn’t exist anymore, but I guess it still does. I’m not quite sure what they’d think of someone who wants to write a better Linux than Linux.
I can very likely use Linux drivers as-is with no porting effort for the drivers themselves by using the LKL project:
https://github.com/lkl/linux
This is the Linux equivalent of the NetBSD rump kernel. It turns the entire Linux kernel into a library that runs without managing any user processes. The only thing that needs to be done to port it is write some glue code specific to the particular environment it’s being run in. In this case, it will be running inside multiple different servers with a glue layer that exports the appropriate services using the native resource manager interface. Multiple such servers will exist, with each containing a different set of drivers (e.g. the disk server, network stack, sound server, and graphics server will each contain their own LKL instance). The drivers themselves run unmodified. So far I think it’s only been used for filesystems and the network stack and not for physical device drivers, but it should be possible to add glue code for physical device drivers.
andrew_w,
I am a lonely soul and the last person who should be giving social advice, but if I may be direct… it does seem you talk yourself out of change, which is probably not helpful. I do think there are a lot more who people are afflicted by this than you realize, but it’s just that people who refrain from socializing, even if they are desperate to, by their very nature, tend not to be in situations where they meet each other. It’s hard to fix and it can even feel like imposter syndrome. Finding people who share similar interests helps a lot, but doing so can feel like the Drake equation and Fermi paradox, haha.
Finding a club with people sharing your interests is probably your best bet, and don’t rule out new experiences outside your wheelhouse either. This advice feels hypocritical coming from me, but there it is.
The linux user group I attended gave people the opportunity to talk about all sorts of stuff. not just linux. But you’ve got to decide if it interests you.
Most of linux is drivers, so if you reuse them would it be fair to say that most of your OS will also be linux drivers? Reusing existing drivers has pros and cons. They should save a ton of work, but I would think it provides less opportunity for innovation. I don’t like the linux kernel threading model and it makes it awkward to implement async interfaces on top of linux – consider that POSIX AIO had to be implemented in userspace! A state driven model would solve some of the problems that linux drivers have (for example locked up file systems). I really like C#’s async/await mechanic. Also I also tend to feel forward looking code bases should generally be written in safe languages. Oh I miss designing kernels myself, but I’m getting off track, this is about your OS and your ideas 🙂
andrew_w,
This sounds awesome.
What interested me in QNX was their excellent “single floppy” demo:
https://winworldpc.com/product/qnx/144mb-demo
It was a significant thing back in the day. Leaps and bound beyond what others, including Linux could do. That one floppy OS could boot, run graphics, has Internet support, a fully functional browser (by those standards), and do a bit more.
Unfortunately that spirit dies, especially after sales of QNX.
There is still nothing like it.
UX/RT won’t have anything quite like the single-floppy QNX 4 demo, but I do want to implement my own kind of demo for it once it’s got its own desktop. Specifically I want to have an in-browser demo, probably using something like a minimal RISC-V emulator. The only OS that I’ve ever seen (excluding dedicated in-browser OSes/desktops) do that kind of thing was Inferno back in the early 2000s, with an ActiveX plugin for IE6. I would just compile it straight to WASM and run it UML-style, but unfortunately WASM insists on having internal memory safety features that can’t be bypassed and doesn’t have anything like mmap, so any standard OS can’t be compiled for it.
I also want to provide a standard option to install it in an image/directory on an existing Linux or Windows partition, similar to some versions of BeOS and QNX Neutrino. I know there are some installers like that for Linux but they’re not very widely used, and I’m not sure how reliable they are. The goal is to make it as easy as possible to try it out. Installing it should be as easy as installing an application.
andrew_w,
Technically Linux also works by installing on a subdirectory (/boot) and have the boot loader be able to understand the filesystem (ext2 back then, many others today)
So, yes, this could be a good way to begin.
For in browser demos…. it depends on how inefficient you’d like to be. I’m sure you are familiar with things like running entire Windows 3.1 in a web browser:
https://www.pcjs.org/software/pcx86/sys/windows/3.10/
But it is slow, and they don’t plan to migrate to Wasm. So that would probably give the wrong impression:
https://news.ycombinator.com/item?id=19299755
Though there is v86 (which I really found today, so no prior experience). And…. they have QNX:!
https://copy.sh/v86/?profile=qnx (need to test this now)
That version wasn’t the only one nor the last one floppy qnx demo, there were several over the years, I posted about them on https://www.vogons.org/viewtopic.php?t=61085
And for the free to use RTP versions on https://www.vogons.org/viewtopic.php?p=814331#p814331
There was also a demo disk from the late 80s based on 2.10. This one has only a TUI menu rather than a GUI, unlike the 4.x versions. 2.2x at least did have a GUI in the form of QNX Windows, but this wasn’t included on the demo disk (AFAIK it was a third-party product that QSSL later bought, and it would have been too big to fit on a 360K floppy anyway).
unclejun,
Nice, there are so many memories in that thread.
A Photon replacement might be great to go with this.
>An open source QNX and Photon could’ve had an impact.
I feel that the current version of ReactOS is a bit better than the QNX and Photon of that era.
The current version of Haiku OS is in the same league of operating systems working hard to be POSIX API compatible such that thousands of open source packages build and run correctly.
Which is what I dislike the most about Haiku. It really seems to move closer to being yet another POSIX system at each level. It’s really leaving the BeOS-style API behind…
demetrioussharpe,
POSIX has that affect on operating systems. It is useful for compatibility, but keeps operating systems strongly tethered to old unix concepts instead of new innovation. Alas, most operating systems will never gain enough critical mass to have 3rd parties support it using local native APIs, so POSIX ends up being the only option for 3rd party software.
The images from Thom’s original review are now broken.
I’m amazed that even in 1987 there was an early version of the Start menu-taskbar metaphor!
People often forget to talk about eQip.
https://eqip.openqnx.com/node/10
It was a fun era!