First, we had ICON computers in my elementary school, we'd all try to spin the trackball as quickly as it would go. Not sure if we ever broke one.
The second is when I worked at BlackBerry. I was building a feature that allowed you to use your QNX BlackBerry as a Bluetooth HID device. You could connect it to any device and use the trackpad + physical keyboard to remotely control a computer. It was fantastic. You could hook your laptop up to a project and control slides from your BlackBerry.
Then some product manager with questionable decision making told me to lock it down so it would only work with Blackberry Playbooks for "business purposes", rendering it effectively useless (since Playbooks are all ewaste). I distinctly remember that meeting where Dan Dodge argued that since it's a standard, it should not be locked down.
I respect Dan Dodge for that, I don't think I'd work with that PM again.
This is XMMS, a X11 Clone of winamp. We all had it on our desktop these days. And hell yeah, our Linux desktop could look anything we wanted. What a time!
The ICON picture in this blog post is of my ICON and taken from my blog (with credit, which is a nice gesture). If anyone is interested in reading my two posts about the Burroughs ICON computer running QNX, here are the links (the first post has YouTube links of my QNX demos):
I loved the idea of QNX. Got way excited about it. We were moving our optical food processor from dedicated DSPs to general purpose hardware, using 1394 (FireWire). The process isolation was awesome. The overhead of moving data through messages, not so much. In the end, we paid someone $2K to contribute isochronous mode/dma to the Linux 1394 driver and went our way with RT extensions.
It was a powerful lesson (amongst others) in what I came to call “the Law of Conservation of Ugly”. In many software problems, there’s a part that just is never going to feel elegant. You can make one part of the system elegant, which often causes the inelegance surface elsewhere in the system.
> what I came to call “the Law of Conservation of Ugly”. In many software problems, there’s a part that just is never going to feel elegant
This may be an instance of the Waterbed Principle: in any sufficiently-complex system, suppressing or refactoring some undesirable characteristic in one area inevitably causes an undesirability to pop up somewhere else. Like there is some minimum amount of complexity/ugliness/etc that it is possible for the entire system to contain while still carrying out its essential functions, and it must leak out somewhere.
I have a really neat idea to improve the message passing speed in QNX: you simply use the paging mechanism to send the message. That means there is no copying of the data at all, just a couple of page table updates. You still have the double TSS load overhead (vs 1 TSS load in a macro kernel), but that is pretty quick.
But you are right that there is a price for elegance. It becomes an easier choice to make when you factor in things like latency and long term reliability / stability / correctness. Those can weigh much heavier than mere throughput.
How performant is that in practice? I thought setting pages was a fairly expensive process. Using a statically mapped circular buffer makes more sense to me at least.
Disclaimer: I don't actually know what I'm talking about, lol
Pretty quick, far faster than inter-process memory copy. The only way to be sure would be to set it up and to measure it, but on a 486/33 I could do this ~200K per second, on modern systems it should be a lot faster than that, more so if the processe(s) do not use FP. But I never actually tried setting up say a /dev/null implementation that used this, it would be an interesting experiment.
You can pretty reliably do it on the order of 1 us on a modern desktop processor. If you use a level 2 sized mapping table entry of say 2 MB, that is a transfer speed on the order of 2 TB/s or ~32x faster than RAM for a single core even if you only move a single level 2 sized mapping table entry. If you transfer multiple in one go or use say a level 3 sized mapping table entry of 1 GB that would be 1 PB/s or ~16,000x faster than RAM or ~20x the full memory bandwidth of a entire H200 GPU.
Passing the PTE sounds great for big messages (send/recv).
For small messages (open), the userspace malloc is going to have packed small buffers into a single page - so there's a chance you'd need to copy to a new userspace page, the two copies might work out better.
Yes, I know. But I rolled my own QNX clone and I figured it would be neat to do this transparently rather than that the application has to code it up explicitly. This puts some constraints on where messages can be located though and that's an interesting problem to solve if you want to do it entirely without overhead.
Usually it's about sorting. Take a lot of whatever (french fries, green beans, etc), accelerate them to something like 3 m/s, launch them off the end of a belt, scan them, looking for defects, and then use air jets to divert the defective items. Look on you tube for it. It's sort of mind boggling to see the scale at which french fries alone are produced. You see one line running at load, and then realize there are multiple lines in most plants, and there are hundreds of plants world wide. It's mind boggling.
The cooler machines were specialized for fries, they use a rotating knife drum above a belt to cut defect spots from fries.
I've not done that for 17 years now; the newer machines are that much cooler.
I did find several machines like this on YouTube, and it's amazing to watch. (One of them had little motor-actuated slats that could kick the defective items away, almost like a foot kicking a soccer ball!)
Probably about 1996(?) remember getting this on a floppy disk, full RTOS GUI with a networking stack, wondering how they could do that with such a small footprint. For reference I recall having to write stacks of disk set floppies for Slackware basic install, let alone Windows 95 :)
That was for show purposes. It was certainly intended to display OS capabilities while impressing people at the same time. Linux eventually came to dominate the live-cd scene in the early 2000's but, to this day, people still cute this demo as specially incredible. Actually, there was Linux with X11 and a functional browser that run from a floppy. And that is something that is really impressive: https://news.ycombinator.com/item?id=28515025
I worked on one of the Linux live CDs (Linuxcare bootable business card / LNX-BBC), which we designed to fit in 50 megabytes. I remember being kind of jealous of the QNX floppy, because I felt that it had about 25% as much software functionality as we did, but in about 3% of the storage space!
I mean, basically we could interact with a lot more hardware, support more file formats, filesystems, and network protocols, and had more high-level scripting languages. But there still seemed to be a huge disproportion where the QNX floppy was just so much more space-efficient for what it did.
Same. I used to use it as my "cybercafé" OS, since cybercafés at the time were untrustworthy (big risk of keyloggers and malware), I'd boot QNX on their PCs and browse the web securely. Used to carry it around everywhere and everyone I showed to were blown away.
I even ran the full QNX Momentics desktop OS on my home PC (a PIII 450) and it was very very impressive, way better than Linux and pretty much everything out there. Well, BeOS was also impressive with its multimedia performance, but QNX was just so much more polished and professional.
The late 90s-early 2000s was such an interesting era in computing in general - at one point I was multi-booting something like a dozen different OSes - DOS, Windows, Linuxes, BSDs, QNX, BeOS, MenuetOS.. all thanks to this fully graphical boot manager, I forget the name but it even had a built-in partition manager - and it even had mouse support! All these OSes were also quite usable, unlike all the niche OSes of today, many of which sadly can't even be installed on real modern hardware because of all the complexity. I really miss those days, it was truly a golden era of computing.
Good times indeed. knoppix was my best friend then but I remember that QNX floppy and being pissed off that I didn't have enough geeky friends who were blown away by it.
> The Neutrino 6.4 version, which was made accessible as "openQNX" to the public
From memory: the source was made freely available to anyone who wanted to download it, but not under an open source license, under an individual non-transferable proprietary license; so, legally speaking, anyone who downloaded the source back then (before this program was terminated) is allowed to keep it and use it forever (under some usage restrictions, I forget the details), but they aren't licensed to share it with anyone else.
So this is somewhat comparable to all those leaked Microsoft Windows source code repositories on GitHub – technically illegal, but the copyright holder obviously doesn't care to try to stop it (especially ironic for Microsoft, given that as GitHub's owners, they could put an end to it very easily, if they could be bothered)
"Access to QNX source code is free, but commercial deployments of QNX Neutrino runtime components still require royalties, and commercial developers will continue to pay for QNX Momentics(R) development seats. However, noncommercial developers, academic faculty members, and qualified partners will be given access to QNX development tools and runtime products at no charge."
Are you a lawyer? USA law recognizes promissory estoppel, European laws provide protection by the good faith principle. The press release explicitly states that developers would have access to download "direct from the dev team's subversion repository". The press release also clearly articulates QNX's strategic intent: making source code available to "accelerate innovation," enable developers to "get up to speed more quickly," and allow the community to "learn from QNX's extensive OS experience". The CEO explicitly stated the goal was helping developers "learn the technology". So there is even a strong fair use case for non-commercial educational study.
"Promissory estoppel" doesn't work that way... it doesn't mean "I don't need to read the legal fine print, I can just go by my interpretation of the press release"
> "it doesn't mean "I don't need to read the legal fine print, I can just go by my interpretation of the press release"
That's not what I said. Anyway, I don't know where you are located, but at least in my country it is no problem to download the code from github for non-commercial educational study, especially given the listed facts. I think we can leave it at that.
> Don't misunderstand us. We at Quantum have a great deal of respect for Unix. It was a major force in moving operating systems out of the 60's and into the 70's. QNX however, was designed in the 80's and will be a driving force of the 90's. Over 20,000 systems have been sold since 1982.
Things they weren't anticipating included GNU, the internet, Microsoft Windows, third-party development, the Windows applications barrier to entry, the World-Wide Web, shareware, BBSes, VARs, and the free-software movement. They didn't understand how operating systems were a winner-take-all game, so pricing your OS at hundreds of dollars was a losing strategy.
But it was 01986, so who could blame them? Their 01987 ad does try to reach out to VARs.
Still, they were certainly aware of Unix, and you'd think that would mean they were aware of uucp. They just didn't anticipate its significance. Again, though, who did?
They also don't seem to have appreciated the importance of GUIs until version 2.0 in 01987, despite the popularity of the Macintosh, the "Jackintosh" Atari ST, and GEOS on the C64. The article says that the "Photon" GUI everyone remembers wasn't until QNX 4.1 in 01994.
Their OS was fairly unique in that it was a POSIX OS that could scale up to being used on desktop/servers, was extremely stable, and could handle real-time control. From a desktop perspective, the real-time aspect also meant that using the system was a joy, everything was super snappy. They never managed to become mainstream, but in the 001980s through the 002000s that was a good enough niche that the company managed to stick around. The 1.44 MB demo QNX put together in 001999 with a full GUI, networking stack, web browser, file browser, utilities, demo programs, etc. was super impressive and I've never seen anything with that level of functionality squeezed into anything close to that size.
Of course most of this advantage has gone away, both because real-time Linux has become good enough to compete with QNX for a lot of use cases, and because QNX stopped supporting self-hosted development with QNX 6.6 in 002014. From a business standpoint of course it makes sense to focus on the automotive and other embedded markets where all the paying customers are, but from a tech enthusiast standpoint it makes me a little sad. Given the licensing cost and competition from real-time Linux on the high end, and Zephyr/FreeRTOS on the low end, I'm not sure why anyone would choose QNX for a new project today. If anyone reading this has chosen QNX for a new project relatively recently, I'd love to hear your perspective.
It wasn't a POSIX OS until much later, at which point they did appreciate the importance of most of those things.
Have you checked out Oberon? It has a full GUI, networking stack, web browser, file browser, utilities, demo programs, etc., in a similar size. It isn't suitable for real-time control at all.
I'm also interested to hear from people choosing QNX for new projects.
There was a super amazing one-man show of Real-Time-Oberon at ETH Zürich [0], used it for some (failed) Robocup try. I wonder what Roberto is up to these days...
Interesting, I'd never heard about this! "XOberon is loosely based on the Oberon System, and it is written in the Oberon-2 programming language. XOberon in its most recent incarnation takes advantage of the computational power of the PowerPC processor architecture. (...) The 68K target version of XOberon is free to download and use. The PowerPC version is available on request."
Not new in design but in assembly/integration: RMS Instruments (Canada) sells equipment for "real-time compensation" in airborne surveying. Analog-to-digital conversion of, primarily, magnetometry data.
QNX is a really cool OS (it's fast AND elegant AND extremely reliable) and QNX dude Dan Dodge gave the only conference keynote so far that I greatly enjoyed. It was basically fun stories from over 30 years (at the time) of OS development. It's sad to see QNX use, apparently, decline.
I worked with QNX 4 at uni and we built a robot system based on 2-4 networked 486/Pentium CPU cards in a rack with it [1].
We fully used the OS to make our robot system both hard real-time and completely network based using QNX's native capabilities. This gave me a deep understanding of those issues in my later career in robotics systems and I basically recreated - tediously - most of its features with UDP, TCP/IP and various IPC (inter process communication) features on vxWorks, SunOS and Linux.
One feature of the OS I fondly remember was that the most basic system calls (send/receive/reply) were implemented as about 3 inline assembler instructions each directly in the header file (qnx.h ?).
I used ICONs in school growing up in Ontario, Canada, they were so cool. It was a sad day when Windows PCs replaced them in the computer lab.
All but a few of these computers were destroyed by the ministry of education. And without the LEXICON server that accompanied them, they're basically useless.
For a bit of fun, I ran the DOOM shareware demo using the official QNX4 port on a 486SX with 8M of ram.
I picked up QNX6 again as a hobbyist later in life... until self-hosted QNX was killed, no bootable .ISOs after 6.5. Then they killed the hobbyist license, killed the Photon desktop GUI, dropped any native toolchain support in place of a Windows/Linux-hosted IDE. Porting software became difficult, pkgsrc no longer maintained.
They are completely noncommittal as a company, nothing short of actually open-sourcing it under the MIT/BSD would convince me to use it again.. and not another source-available effort that they inevitably rug pull again.
I wonder whether the QNX 4.25 source code will ever be released under a FOSS license, or at least a non-commercial license that allows distribution of modified versions. If so, it might be worth running on less capable hardware for educational purposes.
I worked at QNX twice as a softwarte engineering intern during my college days in 2019 and 2021 on their OS security features and testing. Can say it was an unforgettable experience and I learned a lot there. The senior devs there are amazing.
What a great summary. I was reminded of QNX through the Blackberry acquisition but I had forgotten it's history went back so far. (I should have remembered, I was around in those early PC days) With so many things these days having an operating system running them (including the mentioned cars, rockets and robots) QNX seems to have a bright future ahead doing what it does best, being the solid core to build upon.
I used QNX in the 2000s at NIH to run experiments! We eventually replaced it with Linux and Windows and dedicated "experiment" hardware to handle the "real time" needs.
What a fun blast from the past! I fondly remember real-time at Waterloo. If nothing else, it taught you how to project-manage/time-manage so you could write a project of tens of thousands of lines of code in a four month term.
QNX 6 was the first non-Microsoft non-Apple OS I ever used, even before Linux, and after trying and failing to pirate OS/2 Warp 4. It came on the Maximum CD with the March 2001 issue of Maximum PC alongside the “Alt OS” article in the same issue: https://books.google.com/books?id=yAEAAAAAMBAJ&lpg=PT53&dq=%...
So much '90s anime in those screenshots — super nostalgic!
Oh this brings back some fun memories. I worked with QNX for the ICON computer at Cemcorp and ESP Educational Software Products.
The OS was so clean but it lacked a lot of basic tooling. Back then there was no GUI or even a graphics library. We had to build or port a lot of things, including a VCS, from scratch. My editor of choice was JOVE (I couldn't get Emacs to build). I remember digging up various papers on graphics and creating our first graphics library.
Interesting to see this a couple of days after my post. I wonder if there is any link, but in case there isn't: QNX is well worth studying, it is in so many ways an OS done right.
I was involved in porting some software to Qt back when Photon was deprecated, and I always found the system very interesting. This is the first time I'm actually learning more about its history. Thanks for the great read.
I was also a huge fan of BlackBerry phones (having used Q5 and Z10 as daily drivers). The system was solid and had some really cool ideas. Too bad it didn't work out...
It's somewhat refreshing to see this OS going strong in 2024. I briefly used it for some ill fated project around 2008 and that's when I learned to appreciate its design and well written documentation (including a warning that a timer would overflow after 400-odd years of continous uptime).
I had to use QNX for realtime applications in the late 1990s before the Pentium came along. Windows, Linux and existing UNIX flavours were not an option as none of them could do the realtime thing in quite the same way that QNX could. That was the strength of the OS and I am glad I knew this before reading the article.
What I also liked about QNX was the petite size. If I remember correctly it came on one floppy disk, and that included a GUI, not that you need a GUI with QNX since the product will be an embedded system of sorts. All of the documentation was clear and, even if you had not read the manual, the overlap with UNIX meant that the system was far from intimidating as most of the commands that I knew would work fine, albeit with different options to commands.
I had not fully realised how QNX had gone from strength to strength in automotive, and I didn't even know Harmon owned them for a while.
Given that we have gone from single core, 32 bit 386/486 to today's sophisticated SOCs that are thousands of times more capable, the question has to be asked, how important is QNX's superpower of realtime goodness, particularly if it is just for automotive applications such as turning on the A/C?
Surely a modern CPU that goes so much faster can do a better job without having to care about realtime performance? Or maybe Android Auto and Automotive Linux have those bases covered? Regardless, I am sure that if you want realtime embedded applications then you hire the guys that know QNX and reject those that haven't a clue.
It's not all about the realtime. It's also about the process isolation. If a Linux driver crashes, it takes down the entire system. If a QNX driver crashes, it's not part of the kernel so it can just be restarted. It's not good to wait for 5 or 6 seconds for your car to reboot so your brakes will start operating again while you careen towards that retaining wall on the highway.
I was a contractor to Netpliance Inc early in my student days. They kept charging people for service that slowly degraded to the point of clients not getting their email for months and being told to try getting a Hotmail account. Watched the share go to pennies, then the company imploded and then everyone on my contract got laid off. Important early life lessons about how loyal to be to your job and keeping your resume fresh. A priceless education you can't get in college.
Anyway, I _liberated_ an RMA'd Iopener, built a handmade IDE cable to connect to the funky pinout, added a disk and ran it at home as a music server and internet device (with a hacked Netzero dialup account, of course). Ah, those were the days.
> The name QUNIX was a bit too close to the name UNIX for AT&T. The name of the system was changed to QNX in late 1982 following a Cease and Desist by AT&T.
Already not as nice as in the early days.
> While RV1 was limited to just C and x86 assembly language, the company was hard at work on BASIC, FORTRAN, and Pascal compilers that would utilize common code generators allowing for the mixed-use of languages without losing optimization.
Yet another example of previous polyglot compiler stacks attempts.
> UNIX systems come in more flavours than ice cream.
It was extremely impressive that they had managed to fit the whole running OS in a floppy. I don't remember Linux ever running on a single floppy; it was at least two (bootdisk + rootdisk).
This Icon was a hunk of junk. The only value it provided were to the students with any sort of curiosity about how this frankensystem worked. It was only later that it was clear it took advantage of procurement processes in the most extreme sense. A pure embarrassment of technology, grifters, and government. We learned more from the PETs, Commodores, and after that the PS/2s.
I had some fun history with this OS.
First, we had ICON computers in my elementary school, we'd all try to spin the trackball as quickly as it would go. Not sure if we ever broke one.
The second is when I worked at BlackBerry. I was building a feature that allowed you to use your QNX BlackBerry as a Bluetooth HID device. You could connect it to any device and use the trackpad + physical keyboard to remotely control a computer. It was fantastic. You could hook your laptop up to a project and control slides from your BlackBerry.
Then some product manager with questionable decision making told me to lock it down so it would only work with Blackberry Playbooks for "business purposes", rendering it effectively useless (since Playbooks are all ewaste). I distinctly remember that meeting where Dan Dodge argued that since it's a standard, it should not be locked down.
I respect Dan Dodge for that, I don't think I'd work with that PM again.
Oh wow - I didn't realize that ICON was based on this - I remember it was quite advanced in comparison to the generic PC computers at the time.
With one exception - you could crash other ICON systems or the overall network just via machine-machine chatting functions.
QNX became BlackBerry 10—-still the best mobile OS. Too bad only a dozen of us ever used it.
My Passport was my favourite phone ever, I think if apps like WhatsApp hadn't stopped supporting it I might still be using it.
KDE Connect is honestly just that but better in some respects. And honestly, it's great.
I wish we were able to preserve the ICON experience in an emulator. I bet even a browser has enough compute power to emulate a network of them.
I really liked the QNX Photon aesthetic, for a long time I maintained an absurdly complex FVWM configuration designed to look like it.
This was a screenshot of my Gentoo desktop around 2004!
https://lock.cmpxchg8b.com/img/fvwm_desktop.jpg
Man, this heavily tops my WindowMaker theme. Your FVWM looks soo cool.
That looks great even now! Do you still have your dotfiles somewhere?
Is that a Winamp ripoff on the screenshot? :)
This is XMMS, a X11 Clone of winamp. We all had it on our desktop these days. And hell yeah, our Linux desktop could look anything we wanted. What a time!
I also startet to used Gentoo around that time.
It could load Winamp skins too.
I used your config as a base for mine and kept it like 15 years or so.
The ICON picture in this blog post is of my ICON and taken from my blog (with credit, which is a nice gesture). If anyone is interested in reading my two posts about the Burroughs ICON computer running QNX, here are the links (the first post has YouTube links of my QNX demos):
https://jasoneckert.github.io/myblog/icon-computer/
https://jasoneckert.github.io/myblog/lexicon-computer/
I loved the idea of QNX. Got way excited about it. We were moving our optical food processor from dedicated DSPs to general purpose hardware, using 1394 (FireWire). The process isolation was awesome. The overhead of moving data through messages, not so much. In the end, we paid someone $2K to contribute isochronous mode/dma to the Linux 1394 driver and went our way with RT extensions.
It was a powerful lesson (amongst others) in what I came to call “the Law of Conservation of Ugly”. In many software problems, there’s a part that just is never going to feel elegant. You can make one part of the system elegant, which often causes the inelegance surface elsewhere in the system.
> what I came to call “the Law of Conservation of Ugly”. In many software problems, there’s a part that just is never going to feel elegant
This may be an instance of the Waterbed Principle: in any sufficiently-complex system, suppressing or refactoring some undesirable characteristic in one area inevitably causes an undesirability to pop up somewhere else. Like there is some minimum amount of complexity/ugliness/etc that it is possible for the entire system to contain while still carrying out its essential functions, and it must leak out somewhere.
https://en.wikipedia.org/wiki/Waterbed_theory
I have a really neat idea to improve the message passing speed in QNX: you simply use the paging mechanism to send the message. That means there is no copying of the data at all, just a couple of page table updates. You still have the double TSS load overhead (vs 1 TSS load in a macro kernel), but that is pretty quick.
But you are right that there is a price for elegance. It becomes an easier choice to make when you factor in things like latency and long term reliability / stability / correctness. Those can weigh much heavier than mere throughput.
I haven't seen it implemented anywhere, but that sounds like the "pagetable displacement" approach described here: https://wiki.osdev.org/IPC_Data_Copying_methods#Pagetable_di...
The same idea occurred to me a while ago too, which is how I originally found that link :)
How performant is that in practice? I thought setting pages was a fairly expensive process. Using a statically mapped circular buffer makes more sense to me at least.
Disclaimer: I don't actually know what I'm talking about, lol
Pretty quick, far faster than inter-process memory copy. The only way to be sure would be to set it up and to measure it, but on a 486/33 I could do this ~200K per second, on modern systems it should be a lot faster than that, more so if the processe(s) do not use FP. But I never actually tried setting up say a /dev/null implementation that used this, it would be an interesting experiment.
You can pretty reliably do it on the order of 1 us on a modern desktop processor. If you use a level 2 sized mapping table entry of say 2 MB, that is a transfer speed on the order of 2 TB/s or ~32x faster than RAM for a single core even if you only move a single level 2 sized mapping table entry. If you transfer multiple in one go or use say a level 3 sized mapping table entry of 1 GB that would be 1 PB/s or ~16,000x faster than RAM or ~20x the full memory bandwidth of a entire H200 GPU.
Passing the PTE sounds great for big messages (send/recv).
For small messages (open), the userspace malloc is going to have packed small buffers into a single page - so there's a chance you'd need to copy to a new userspace page, the two copies might work out better.
The throughput limitation is really only an issue for big messages, for smaller ones the processing overhead will dominate.
The QNX call to do that is mmap().
Yes, I know. But I rolled my own QNX clone and I figured it would be neat to do this transparently rather than that the application has to code it up explicitly. This puts some constraints on where messages can be located though and that's an interesting problem to solve if you want to do it entirely without overhead.
Is "optical food processor" a metaphor, or is this actually a device that would cut up food items based on image feedback?
Usually it's about sorting. Take a lot of whatever (french fries, green beans, etc), accelerate them to something like 3 m/s, launch them off the end of a belt, scan them, looking for defects, and then use air jets to divert the defective items. Look on you tube for it. It's sort of mind boggling to see the scale at which french fries alone are produced. You see one line running at load, and then realize there are multiple lines in most plants, and there are hundreds of plants world wide. It's mind boggling.
The cooler machines were specialized for fries, they use a rotating knife drum above a belt to cut defect spots from fries.
I've not done that for 17 years now; the newer machines are that much cooler.
That's awesome. Thanks for the explanation.
I did find several machines like this on YouTube, and it's amazing to watch. (One of them had little motor-actuated slats that could kick the defective items away, almost like a foot kicking a soccer ball!)
During the 90's, I seem to recall that the "SkyTrain" light-rapid transit system in the lower-mainland (Vancouver, BC Canada) used QNX as it's RTOS.
The blackberry QNX implementation on their Tablet was rock solid, I had high hopes. That was the last time i knowingly used QNX.
Probably about 1996(?) remember getting this on a floppy disk, full RTOS GUI with a networking stack, wondering how they could do that with such a small footprint. For reference I recall having to write stacks of disk set floppies for Slackware basic install, let alone Windows 95 :)
I remember that. It even included a web browser. There's a copy here:
https://winworldpc.com/product/qnx/144mb-demo
That was for show purposes. It was certainly intended to display OS capabilities while impressing people at the same time. Linux eventually came to dominate the live-cd scene in the early 2000's but, to this day, people still cute this demo as specially incredible. Actually, there was Linux with X11 and a functional browser that run from a floppy. And that is something that is really impressive: https://news.ycombinator.com/item?id=28515025
I worked on one of the Linux live CDs (Linuxcare bootable business card / LNX-BBC), which we designed to fit in 50 megabytes. I remember being kind of jealous of the QNX floppy, because I felt that it had about 25% as much software functionality as we did, but in about 3% of the storage space!
I mean, basically we could interact with a lot more hardware, support more file formats, filesystems, and network protocols, and had more high-level scripting languages. But there still seemed to be a huge disproportion where the QNX floppy was just so much more space-efficient for what it did.
I remember getting it around the year 2000 after having fiddled a bit with Linux desktops and being blown away.
Same. I used to use it as my "cybercafé" OS, since cybercafés at the time were untrustworthy (big risk of keyloggers and malware), I'd boot QNX on their PCs and browse the web securely. Used to carry it around everywhere and everyone I showed to were blown away.
I even ran the full QNX Momentics desktop OS on my home PC (a PIII 450) and it was very very impressive, way better than Linux and pretty much everything out there. Well, BeOS was also impressive with its multimedia performance, but QNX was just so much more polished and professional.
The late 90s-early 2000s was such an interesting era in computing in general - at one point I was multi-booting something like a dozen different OSes - DOS, Windows, Linuxes, BSDs, QNX, BeOS, MenuetOS.. all thanks to this fully graphical boot manager, I forget the name but it even had a built-in partition manager - and it even had mouse support! All these OSes were also quite usable, unlike all the niche OSes of today, many of which sadly can't even be installed on real modern hardware because of all the complexity. I really miss those days, it was truly a golden era of computing.
Good times indeed. knoppix was my best friend then but I remember that QNX floppy and being pissed off that I didn't have enough geeky friends who were blown away by it.
For folks who want to experiment and have a spare rPi:
https://carleton.ca/rcs/qnx/installing-qnx-on-raspberry-pi-4...
Or an albeit older version if you want to play around in a VM
https://archive.org/details/qnxnc621_202306
Nice article, interesting read.
The Neutrino 6.4 version, which was made accessible as "openQNX" to the public, can still be downloaded from e.g. https://github.com/vocho/openqnx.
Here is an AI generated documentation of the source: https://deepwiki.com/vocho/openqnx
> The Neutrino 6.4 version, which was made accessible as "openQNX" to the public
From memory: the source was made freely available to anyone who wanted to download it, but not under an open source license, under an individual non-transferable proprietary license; so, legally speaking, anyone who downloaded the source back then (before this program was terminated) is allowed to keep it and use it forever (under some usage restrictions, I forget the details), but they aren't licensed to share it with anyone else.
So this is somewhat comparable to all those leaked Microsoft Windows source code repositories on GitHub – technically illegal, but the copyright holder obviously doesn't care to try to stop it (especially ironic for Microsoft, given that as GitHub's owners, they could put an end to it very easily, if they could be bothered)
See https://www.openqnx.com/node/471
"Access to QNX source code is free, but commercial deployments of QNX Neutrino runtime components still require royalties, and commercial developers will continue to pay for QNX Momentics(R) development seats. However, noncommercial developers, academic faculty members, and qualified partners will be given access to QNX development tools and runtime products at no charge."
You are quoting an old press release, not the actual license agreement.
It clearly states that the company made the referenced source code version available for free.
Yes, but it doesn't tell you the precise legal terms and conditions under which they made it available.
Which is the whole point – legally speaking, press releases count for very little, the actual text of the license agreement is far more important.
Are you a lawyer? USA law recognizes promissory estoppel, European laws provide protection by the good faith principle. The press release explicitly states that developers would have access to download "direct from the dev team's subversion repository". The press release also clearly articulates QNX's strategic intent: making source code available to "accelerate innovation," enable developers to "get up to speed more quickly," and allow the community to "learn from QNX's extensive OS experience". The CEO explicitly stated the goal was helping developers "learn the technology". So there is even a strong fair use case for non-commercial educational study.
Are you a lawyer?
"Promissory estoppel" doesn't work that way... it doesn't mean "I don't need to read the legal fine print, I can just go by my interpretation of the press release"
> "it doesn't mean "I don't need to read the legal fine print, I can just go by my interpretation of the press release"
That's not what I said. Anyway, I don't know where you are located, but at least in my country it is no problem to download the code from github for non-commercial educational study, especially given the listed facts. I think we can leave it at that.
do you know what tool was used to generate that documentation? I would be interested in trying it out on some other repos.
EDIT: oh I see, thats what deepwiki itself is
> Don't misunderstand us. We at Quantum have a great deal of respect for Unix. It was a major force in moving operating systems out of the 60's and into the 70's. QNX however, was designed in the 80's and will be a driving force of the 90's. Over 20,000 systems have been sold since 1982.
Things they weren't anticipating included GNU, the internet, Microsoft Windows, third-party development, the Windows applications barrier to entry, the World-Wide Web, shareware, BBSes, VARs, and the free-software movement. They didn't understand how operating systems were a winner-take-all game, so pricing your OS at hundreds of dollars was a losing strategy.
But it was 01986, so who could blame them? Their 01987 ad does try to reach out to VARs.
Still, they were certainly aware of Unix, and you'd think that would mean they were aware of uucp. They just didn't anticipate its significance. Again, though, who did?
They also don't seem to have appreciated the importance of GUIs until version 2.0 in 01987, despite the popularity of the Macintosh, the "Jackintosh" Atari ST, and GEOS on the C64. The article says that the "Photon" GUI everyone remembers wasn't until QNX 4.1 in 01994.
Their OS was fairly unique in that it was a POSIX OS that could scale up to being used on desktop/servers, was extremely stable, and could handle real-time control. From a desktop perspective, the real-time aspect also meant that using the system was a joy, everything was super snappy. They never managed to become mainstream, but in the 001980s through the 002000s that was a good enough niche that the company managed to stick around. The 1.44 MB demo QNX put together in 001999 with a full GUI, networking stack, web browser, file browser, utilities, demo programs, etc. was super impressive and I've never seen anything with that level of functionality squeezed into anything close to that size.
Of course most of this advantage has gone away, both because real-time Linux has become good enough to compete with QNX for a lot of use cases, and because QNX stopped supporting self-hosted development with QNX 6.6 in 002014. From a business standpoint of course it makes sense to focus on the automotive and other embedded markets where all the paying customers are, but from a tech enthusiast standpoint it makes me a little sad. Given the licensing cost and competition from real-time Linux on the high end, and Zephyr/FreeRTOS on the low end, I'm not sure why anyone would choose QNX for a new project today. If anyone reading this has chosen QNX for a new project relatively recently, I'd love to hear your perspective.
It wasn't a POSIX OS until much later, at which point they did appreciate the importance of most of those things.
Have you checked out Oberon? It has a full GUI, networking stack, web browser, file browser, utilities, demo programs, etc., in a similar size. It isn't suitable for real-time control at all.
I'm also interested to hear from people choosing QNX for new projects.
There was a super amazing one-man show of Real-Time-Oberon at ETH Zürich [0], used it for some (failed) Robocup try. I wonder what Roberto is up to these days...
[0] https://www.ifr.mavt.ethz.ch/research/xoberon/
Interesting, I'd never heard about this! "XOberon is loosely based on the Oberon System, and it is written in the Oberon-2 programming language. XOberon in its most recent incarnation takes advantage of the computational power of the PowerPC processor architecture. (...) The 68K target version of XOberon is free to download and use. The PowerPC version is available on request."
Not new in design but in assembly/integration: RMS Instruments (Canada) sells equipment for "real-time compensation" in airborne surveying. Analog-to-digital conversion of, primarily, magnetometry data.
Uses the Photon desktop environment.
QNX is a really cool OS (it's fast AND elegant AND extremely reliable) and QNX dude Dan Dodge gave the only conference keynote so far that I greatly enjoyed. It was basically fun stories from over 30 years (at the time) of OS development. It's sad to see QNX use, apparently, decline.
I worked with QNX 4 at uni and we built a robot system based on 2-4 networked 486/Pentium CPU cards in a rack with it [1]. We fully used the OS to make our robot system both hard real-time and completely network based using QNX's native capabilities. This gave me a deep understanding of those issues in my later career in robotics systems and I basically recreated - tediously - most of its features with UDP, TCP/IP and various IPC (inter process communication) features on vxWorks, SunOS and Linux.
One feature of the OS I fondly remember was that the most basic system calls (send/receive/reply) were implemented as about 3 inline assembler instructions each directly in the header file (qnx.h ?).
[1] https://herbert-janssen.de/paper/irini97-12.pdf
QNX used to be the golden standard of impossible things for microkernels, that in reality are actually used.
Nowadays not sure how it compares to other ones with wide field experience like Nintendo Switch Horizon, seL4 and more recently HarmonyOS NEXT.
The HongMeng kernel, performance wise, seems indeed to be in the same ballpark as sel4 or QNX, but it doesn't seem that it will be open-sourced.
I used ICONs in school growing up in Ontario, Canada, they were so cool. It was a sad day when Windows PCs replaced them in the computer lab.
All but a few of these computers were destroyed by the ministry of education. And without the LEXICON server that accompanied them, they're basically useless.
For a bit of fun, I ran the DOOM shareware demo using the official QNX4 port on a 486SX with 8M of ram.
https://brynet.ca/video-qnxdoom.html
I picked up QNX6 again as a hobbyist later in life... until self-hosted QNX was killed, no bootable .ISOs after 6.5. Then they killed the hobbyist license, killed the Photon desktop GUI, dropped any native toolchain support in place of a Windows/Linux-hosted IDE. Porting software became difficult, pkgsrc no longer maintained.
They are completely noncommittal as a company, nothing short of actually open-sourcing it under the MIT/BSD would convince me to use it again.. and not another source-available effort that they inevitably rug pull again.
https://www.osnews.com/story/23565/qnx6-is-closed-source-onc...
I wonder whether the QNX 4.25 source code will ever be released under a FOSS license, or at least a non-commercial license that allows distribution of modified versions. If so, it might be worth running on less capable hardware for educational purposes.
I worked at QNX twice as a softwarte engineering intern during my college days in 2019 and 2021 on their OS security features and testing. Can say it was an unforgettable experience and I learned a lot there. The senior devs there are amazing.
What a great summary. I was reminded of QNX through the Blackberry acquisition but I had forgotten it's history went back so far. (I should have remembered, I was around in those early PC days) With so many things these days having an operating system running them (including the mentioned cars, rockets and robots) QNX seems to have a bright future ahead doing what it does best, being the solid core to build upon.
This is not the same Gordon Bell as the early DEC programmer and later VP.
https://en.wikipedia.org/wiki/Gordon_Bell
I used QNX in the 2000s at NIH to run experiments! We eventually replaced it with Linux and Windows and dedicated "experiment" hardware to handle the "real time" needs.
This series are quite interesting to understand and play with QNX 8.0
https://devblog.qnx.com/tag/from-the-board-up-series/
What a fun blast from the past! I fondly remember real-time at Waterloo. If nothing else, it taught you how to project-manage/time-manage so you could write a project of tens of thousands of lines of code in a four month term.
Still have the 1990's demo distribution somewhere on my folks place tucked away in a box.
It was great experience, especially for those of us that appreciate microkernels.
QNX 6 was the first non-Microsoft non-Apple OS I ever used, even before Linux, and after trying and failing to pirate OS/2 Warp 4. It came on the Maximum CD with the March 2001 issue of Maximum PC alongside the “Alt OS” article in the same issue: https://books.google.com/books?id=yAEAAAAAMBAJ&lpg=PT53&dq=%...
So much '90s anime in those screenshots — super nostalgic!
Oh this brings back some fun memories. I worked with QNX for the ICON computer at Cemcorp and ESP Educational Software Products.
The OS was so clean but it lacked a lot of basic tooling. Back then there was no GUI or even a graphics library. We had to build or port a lot of things, including a VCS, from scratch. My editor of choice was JOVE (I couldn't get Emacs to build). I remember digging up various papers on graphics and creating our first graphics library.
Interesting to see this a couple of days after my post. I wonder if there is any link, but in case there isn't: QNX is well worth studying, it is in so many ways an OS done right.
https://news.ycombinator.com/item?id=45400006
Until recently, QNX was the OS used for the infotainment/head units in VW/Audi including navigation, voice interaction, etc.
I was involved in porting some software to Qt back when Photon was deprecated, and I always found the system very interesting. This is the first time I'm actually learning more about its history. Thanks for the great read.
I was also a huge fan of BlackBerry phones (having used Q5 and Z10 as daily drivers). The system was solid and had some really cool ideas. Too bad it didn't work out...
It's somewhat refreshing to see this OS going strong in 2024. I briefly used it for some ill fated project around 2008 and that's when I learned to appreciate its design and well written documentation (including a warning that a timer would overflow after 400-odd years of continous uptime).
A current Ada 2022 compiler is available for QNX. I think it’s used in autonomous vehicle applications.
VW (and others) was using QNX as the base for its infotainment UI. Snappy and responsive. Got the job done.
I had to use QNX for realtime applications in the late 1990s before the Pentium came along. Windows, Linux and existing UNIX flavours were not an option as none of them could do the realtime thing in quite the same way that QNX could. That was the strength of the OS and I am glad I knew this before reading the article.
What I also liked about QNX was the petite size. If I remember correctly it came on one floppy disk, and that included a GUI, not that you need a GUI with QNX since the product will be an embedded system of sorts. All of the documentation was clear and, even if you had not read the manual, the overlap with UNIX meant that the system was far from intimidating as most of the commands that I knew would work fine, albeit with different options to commands.
I had not fully realised how QNX had gone from strength to strength in automotive, and I didn't even know Harmon owned them for a while.
Given that we have gone from single core, 32 bit 386/486 to today's sophisticated SOCs that are thousands of times more capable, the question has to be asked, how important is QNX's superpower of realtime goodness, particularly if it is just for automotive applications such as turning on the A/C?
Surely a modern CPU that goes so much faster can do a better job without having to care about realtime performance? Or maybe Android Auto and Automotive Linux have those bases covered? Regardless, I am sure that if you want realtime embedded applications then you hire the guys that know QNX and reject those that haven't a clue.
It's not all about the realtime. It's also about the process isolation. If a Linux driver crashes, it takes down the entire system. If a QNX driver crashes, it's not part of the kernel so it can just be restarted. It's not good to wait for 5 or 6 seconds for your car to reboot so your brakes will start operating again while you careen towards that retaining wall on the highway.
As good and reliabe is QNX, I really hope it controls only car infotainment and not brakes !
I have a couple iOpeners that I use as text terminal. Full QNX once you root them.
Who else remembers hacking on QNX from the i-opener and 3com Audrey era? ;)
Hell yeah, iopener represent. :)
I was a contractor to Netpliance Inc early in my student days. They kept charging people for service that slowly degraded to the point of clients not getting their email for months and being told to try getting a Hotmail account. Watched the share go to pennies, then the company imploded and then everyone on my contract got laid off. Important early life lessons about how loyal to be to your job and keeping your resume fresh. A priceless education you can't get in college.
Anyway, I _liberated_ an RMA'd Iopener, built a handmade IDE cable to connect to the funky pinout, added a disk and ran it at home as a music server and internet device (with a hacked Netzero dialup account, of course). Ah, those were the days.
Yep, remember the 3com Audrey, probably still have it in a box in my basement!
Love some of the juicy pieces out of the story,
> The name QUNIX was a bit too close to the name UNIX for AT&T. The name of the system was changed to QNX in late 1982 following a Cease and Desist by AT&T.
Already not as nice as in the early days.
> While RV1 was limited to just C and x86 assembly language, the company was hard at work on BASIC, FORTRAN, and Pascal compilers that would utilize common code generators allowing for the mixed-use of languages without losing optimization.
Yet another example of previous polyglot compiler stacks attempts.
> UNIX systems come in more flavours than ice cream.
That was a fun one.
Man I still remember booting up the 1.44 MB disk image demo and being amazed how well it worked at the time.
I had shareware floppy of QNX. I still remember how I admired it, but unfortunately had no use case.
It was extremely impressive that they had managed to fit the whole running OS in a floppy. I don't remember Linux ever running on a single floppy; it was at least two (bootdisk + rootdisk).
This Icon was a hunk of junk. The only value it provided were to the students with any sort of curiosity about how this frankensystem worked. It was only later that it was clear it took advantage of procurement processes in the most extreme sense. A pure embarrassment of technology, grifters, and government. We learned more from the PETs, Commodores, and after that the PS/2s.
The Watcom compilers on it were pretty good. I started with Pascal, then moved to C, and finally Assembly.
I do remember compiling being slow, Turbo C under DOS was much faster.