[HN Gopher] The QNX Demo Disk: a full xNix OS, with GUI and brow...
       ___________________________________________________________________
        
       The QNX Demo Disk: a full xNix OS, with GUI and browser, on just 1
       1.4MB floppy
        
       Author : lproven
       Score  : 154 points
       Date   : 2022-10-07 16:40 UTC (6 hours ago)
        
 (HTM) web link (qnx.puslapiai.lt)
 (TXT) w3m dump (qnx.puslapiai.lt)
        
       | helf wrote:
       | I love how this gets rediscovered by people every few years :)
       | 
       | I still have a floppy set somewhere. I loved it. I ran it in a
       | 486 IBM all in one I had with a compatible NIC for a long time as
       | a conversation piece and guest light surfing machine. Amazing how
       | well it ran up till fairly recently when standards outstripped
       | its browser too much
        
         | duffyjp wrote:
         | I still have the Pentium box I used to run it on. Was that
         | really 20+ years ago? How did that happen... I should boot it
         | up and see how well frogfind.com works.
        
         | lproven wrote:
         | I was there at the time. I just amuse myself digging up
         | obscure, mostly-forgotten languages and OSes and posting them
         | on HN to blow the kids' minds. :-D
        
           | helf wrote:
           | Doing the Lord's Work lol.
           | 
           | I need to rebuild my Ccmp collection. I ended up selling or
           | giving it all away due to having to move. _sniff_
           | 
           | I ran a NeXTstation Turbo Color as my daily driver up till
           | around 2010. Me and some friends ported over newer line and
           | what not for openstep 4.2.
           | 
           | 33mhz 040 with 128mb of 60ns EDO RAM, SCSI HDD. Amazing what
           | you could do with adequate performance on that.
           | 
           | Also ran a BeOS r5 system with massive amounts of hacks and
           | updates for way longer than was really reasonable lol
        
       | taviso wrote:
       | I once made an fvwm config designed to look like QNX photon (this
       | was early 2000s). I got dozens of emails about it from people who
       | had found the screenshot and wanted to try it!
       | 
       | Here is an old screenshot from ~2003:
       | http://www.xwinman.org/screenshots/fvwm2-taviso.png
       | 
       | All the panels and menus were all fwvm, it's highly configurable.
       | I dunno, it kinda holds up!
        
       | bluedino wrote:
       | I remember being impressed by the Geoworks environment that was
       | contained in America Online 1.0 (?) for DOS.
       | 
       | So snappy and smooth compared to Windows 3.11 on the same 2MB
       | 386.
        
         | lproven wrote:
         | Now FOSS:
         | 
         | https://github.com/bluewaysw/pcgeos
        
       | marcodiego wrote:
       | Here the same, but done with linux:
       | https://news.ycombinator.com/item?id=28515025
        
         | lproven wrote:
         | I suspect the functionality is rather less, but still, that is
         | impressive.
        
       | AceJohnny2 wrote:
       | I have fond memories of QNX.
       | 
       | We used QNX in my last company as the foundation for our router.
       | It was a "tandem" HA system (at least one of our lead architects
       | were formerly from Tandem, the company). It had 2x Control Plane
       | (1 Active, 1 Standby) boards, and 3x Data Plane boards (2 Active,
       | 1 Standby). QNX was an important part of our architecture.
       | 
       | Some features I loved in QNX: process control across the network.
       | I could control processes on any of the processors (running QNX)
       | on any of the boards of the system. Launch a program on a
       | different processor with just the appropriate command prefix
       | (which I forget). Also, driver restart: by the nature of being a
       | microkernel, drivers were "just another process", and if they
       | crashed or hung I could just restart/kill the process. Also,
       | tighter coupling between drivers and files under /dev, unlike
       | whatever Linux is doing, especially for networking devices!
        
         | AceJohnny2 wrote:
         | While I'm at it, I want to write down the lifecycle of that
         | company.
         | 
         | The router served as a "security endpoint", meaning it could
         | "terminate" (decode), thousands of IPSec connections. Thus it
         | would serve as the "border router" for a network operator.
         | 
         | The company's big hit was providing this product to NTT Docomo
         | for its LTE infrastructure. NTT had the (turned out unique)
         | architectural challenge where they controlled the base
         | stations, the core network... _but not the backhaul_
         | (connection between the base stations and core)! So all
         | "their" traffic coming from their base-station was on leased
         | network, so they needed to encrypt, hence the IPSec, and hence
         | the need for a "router" that could receive all these
         | connections and decode them to feed into their Core Network.
         | 
         | I joined the company shortly after they scored that huge
         | contract, when they were flush with money and looking to grow.
         | 
         | NTT Docomo was a pioneer in LTE deployment, so our company
         | tried to sell this operating model to the rest of the world...
         | but no-one took it. Turns out most operators just own their
         | backhaul, so didn't feel the need to encrypt, or at least have
         | the same architecture as NTT.
         | 
         | So our company tried for a while to adapt our router (really,
         | network middle-box) for other emerging use-cases, but it was
         | hard to get a grip both in emerging network architectures and
         | against the incumbents (lol the number of times we had bugs
         | with Cisco equipment which _we proved was Cisco 's fault_ but
         | nope we just had to work around it).
         | 
         | The company was eventually bought at fire sale price by one
         | that did cheap Software-Defined Networking on commodity
         | hardware. Our expensive router was discontinued.
         | 
         | (Also, fuck Broadcom)
        
       | zuminator wrote:
       | You can kind of play around with QNX by going here:
       | 
       | https://copy.sh/v86/?profile=qnx
       | 
       | If you're on a Windows system, you may have to go to C:\Windows
       | and temporarily rename the HelpPane.exe system application in
       | order to stop it from hijacking the F1 keypress that QNX expects.
        
       | varispeed wrote:
       | Ages ago I had original QNX Demo Disk. I was impressed that they
       | could fit so much on a floppy.
        
         | lproven wrote:
         | This is the original QNX Demo Disk. That's why I posted it. :-)
         | 
         | Downloads here:
         | 
         | https://winworldpc.com/product/qnx/144mb-demo
         | 
         | Screenshots here:
         | 
         | http://toastytech.com/guis/qnxdemo.html
        
           | varispeed wrote:
           | Oh the memories. Thank you!
        
             | lproven wrote:
             | :-)
             | 
             | Glad you enjoyed it!
        
       | yamtaddle wrote:
       | In high school I'd extensively used Windows from 3.1-98se, Linux
       | (Debian, Mandrake), and dabbled a ton with BeOS and QNX (hampered
       | from making either my main OS only by software support).
       | 
       | BeOS and QNX (Photon) were my two favorite desktop experiences of
       | the bunch. They were _so_ much better than the others--yes, very
       | much including Linux. And BeOS was even _at least_ as  "friendly"
       | and polished as Windows was at the time.
       | 
       | Here we are and neither's on the desktop and their closest modern
       | equivalent that _is_ prevalent is probably macOS, which is...
       | fine as a consolation prize, I guess, but I still wish I could
       | see a world where either of those made a real splash in the
       | desktop world (I know QNX wasn 't really trying to, but man, it
       | performed _so_ much better as a desktop OS than Windows or
       | Linux).
        
         | MonkeyClub wrote:
         | > yes, very much including Linux
         | 
         | That makes perfect sense for that period, the Linux desktop
         | experience was, well, not _atrocious_ , but definitely left
         | things to be desired.
        
           | yamtaddle wrote:
           | It wasn't just that: it was much worse at handling multi-
           | tasking and keeping the UI responsive, than either of those.
           | But so was Windows, to be fair.
           | 
           | I'm pretty sure it's not much better now but hardware's
           | powerful enough to make that less-painful.
        
           | blablabla123 wrote:
           | Well a lot had to be configured especially for non-standard
           | hardware. But generally it was far more stable and snappy
           | than Windows. Also constant reinstalling and rebooting wasn't
           | necessary. The QNX demo was nice but to be fair you couldn't
           | do much with it unless you wrote your own software I guess...
        
         | agumonkey wrote:
         | For quite a while, watching 1997 BeOS demo brought tears to my
         | eyes. It was so sweetly designed in every way. Maybe except the
         | regular multithreading issues. Even the source code, at least
         | the small bit I saw [0], was utterly brilliant.
         | 
         | [0] part of the FS query language, so you could select/filter
         | through file metadata for free.
        
         | aliqot wrote:
         | George Washington once said "The best time to become a Haiku
         | contributor is yesterday. The second best time to become a
         | Haiku contributor is today."
         | 
         | You know, I think he was right.
        
           | mdaniel wrote:
           | Do you have experience running Haiku and if so what's the
           | current hardware story like? IOW, could a reasonably
           | determined person get it running as a daily driver on a
           | modern laptop?
        
             | dleslie wrote:
             | I've used it just fine on a number of older laptops.
             | 
             | The rule of thumb is if FreeBSD supports it then Haiku
             | will, as a number of important drivers were ported from
             | FreeBSD.
        
       | basementcat wrote:
       | Reminds me of tomsrtbt
       | 
       | http://www.toms.net/rb/
        
         | lproven wrote:
         | I used that back when it was current. It was an impressive bit
         | of kit, but TBH, what QNX did on a single floppy made -- and
         | more than ever still makes -- Linux look very _very_ bloated.
         | 
         | Tom's Root-and-Boot just about got you a working command line
         | on one floppy.
         | 
         | For comparison, using FOSS equivalents, QNX got that, plus all
         | of X.org, plus Firefox, onto one floppy.
         | 
         | And if you used the status bar to find your IP address, and
         | went to another machine and put that in a browser's URL box,
         | you found that _as well as_ all that, it was also a live
         | webserver, serving live performance stats to the Internet.
         | 
         | So, kernel, busybox, X server, desktop, web browser AND WEB
         | SERVER on one (very heavily compressed) floppy.
         | 
         | Sadly, the genius who built it died young. Cancer. Fsck cancer.
         | 
         | https://openqnx.com/node/298
        
       | bumblebritches5 wrote:
        
       | FL410 wrote:
       | Is there any good way to play with QNX on a workstation/VM to get
       | familiar with it?
        
         | IncRnd wrote:
         | You can go to qnx.com and click the "FREE 30-DAY TRIAL" button
         | to download.
        
       | agumonkey wrote:
       | I wonder what could be improved with todays knowledge while
       | keeping it under 2MB.
        
         | CyberDildonics wrote:
         | Why would you keep it under 2MB?
        
           | [deleted]
        
           | flenserboy wrote:
           | For one, to put retro systems to great use. For another, to
           | keep as much cruft/unnecessary bells & whistles from being
           | present as possible. Just because the space is there doesn't
           | mean it has to be used.
        
             | CyberDildonics wrote:
             | What specific retro systems have a 2MB limit?
        
               | bombcar wrote:
               | 2.88 for Extra High Density - pretty rare outside of
               | Japan iirc.
               | 
               | http://209.68.14.80/ref/fdd/formatKB2880-c.html
        
               | tssva wrote:
               | 3COM NETBuilder II routers had 2.88MB floppies. I once
               | spent an entire day tracking down a local supplier with a
               | 2.88MB floppy drive and floppies in stock, so we could
               | upgrade the software on a few routers being affected by a
               | Vines/IP bug.
        
               | Findecanor wrote:
               | A "1.44 MB floppy" has that capacity for _files_ when
               | formatted with the FAT file system from MS-DOS. The
               | _unformatted_ capacity is actually closer to 2 MB but a
               | proper file system has disk-space overhead for metadata
               | and check sums.
               | 
               | You could have a file system with much less disk-space
               | overhead than FAT, and there are many out there. A demo
               | disk would typically be read-only, and in particular
               | there are some read-only file-systems that are really
               | space-optimised,
               | 
               | Another option would be to treat the disk sectors as a
               | single compressed file which the bootloader decompresses
               | into a RAM-disk image which the OS then boots from, but
               | that would require a bit more than 2 MB of RAM.
        
               | flenserboy wrote:
               | It's not 2 mb in particular; honestly, I'd say 4 mb is
               | the practical starting limit once you're into 16/32 bit
               | CPUs -- a Mac Plus / Classic would go to 4, for instance,
               | and every speck of memory free under that made a
               | difference in performance. 2 is a nice limit for total
               | system size, as it allows for (as can be seen in QNX) a
               | very capable, flexible OS, while leaving headroom for
               | programs to run.
        
           | agumonkey wrote:
           | I restricted myself, I wanted to say 1MB.
           | 
           | I can't help but to find the min-max of everything. Well at
           | least fantasize about what could be.
        
         | lproven wrote:
         | I don't think there is anything today that comes close to
         | equalling it, and very definitely nothing that can improve on
         | it.
        
           | agumonkey wrote:
           | Even without knowing it, I'm sure it's far from perfect and
           | may enjoy a few tweaks here and there.
        
             | lproven wrote:
             | The QNX demo, from 25Y ago? Oh, yes. The miracle is that it
             | worked at all, not that it's very complete.
             | 
             | The full OS was a ~100MB download:
             | 
             | https://archive.org/details/qnx-neutrino-rtos-x86-runtime-
             | ki...
        
         | [deleted]
        
       | senko wrote:
       | QNX was (is?) such a great OS. This was my first encounter with a
       | microkernel based OS that actually worked, and well.
       | 
       | If I remember correctly, they were moving towards OSS at some
       | point (or at least toward opening it to a wider community). I had
       | it installed in a VM, did some packaging of open source stuff to
       | QNX (bash and irssi, I think), was fun.
       | 
       | At some point they focused on industry/enterprise and that was
       | the end of that for me, but led me to discover L4 later on, and I
       | still have a soft spot for microkernels.
        
         | lproven wrote:
         | Indeed. I submitted this partly because I get so very tired of
         | Linux zealots claiming that the HURD "proves" that microkernels
         | can't work, or that Minix 3 shows that, OK, they _can_ work,
         | but they 're crippled.
        
       | flobosg wrote:
       | (2008)
        
       | snvzz wrote:
       | Closest thing we have today (microkernel multiserver OS with a
       | desktop) is Genode[0].
       | 
       | 0. https://www.genode.org
        
         | forgotpwd16 wrote:
         | Why Genode over Hurd and Minix considering those are also Unix-
         | like same as QNX (which still exists btw)?
        
           | snvzz wrote:
           | Hurd is still stuck using Mach, unfortunately. The issues
           | from the Hurd critique paper haven't been addressed either.
           | 
           | Minix, as cool as it is, does not have a maintainer, and
           | hasn't seen activity for years. There's a lot of out-of-tree
           | work that's just sitting there. It is a shame, because it is
           | a really cool system architecture.
           | 
           | Genode is a modern, proper multiserver OS that has a good
           | architecture, frequent releases and quite solid overall
           | direction. And it has POSIX compatibility, so a lot of
           | software runs, including modern web browser engines.
        
       | sloppycee wrote:
       | I remember buying a magazine with this floppy disk attached, blew
       | my mind back then. Great marketing from QNX at the time.
       | 
       | How they did it:
       | http://web.archive.org/web/20011106140711/http://www.qnx.com...
        
         | MonkeyClub wrote:
         | That bit of web archaeology was very helpful, much appreciated!
        
       | myself248 wrote:
       | This needs a [1999] or a [2008] in the title. (Original release,
       | modification date.)
        
       | Animats wrote:
       | Around 2003 there was a demo CD. This brings up a nice system
       | with a GUI and browser.[1][2]
       | 
       | QNX started closed source with a free version, went open source,
       | went closed source, went open source after an acquisition, and
       | then went closed source when RIM (Blackberry) acquired them. Then
       | RIM dropped the GUI to focus on whatever it is Blackberry still
       | does.
       | 
       | As I once told one of their sales execs, "quit worrying about
       | people pirating your system and worry about people ignoring it".
       | During the first free version period, people were porting open
       | source software such as GCC, Eclipse, and browsers to QNX. With
       | all the licensing changes, the open source community got fed up
       | with QNX and stopped making versions for it.
       | 
       | We used QNX for our DARPA Grand Challenge vehicle. All our
       | desktop machines ran QNX, and we could run the real-time program
       | on them as well as the vehicle. The real time features were so
       | good that we could have the entire real-time vehicle system
       | running, at hard real time priority, and run a browser or compile
       | without missing a time check.
       | 
       | [1] http://toastytech.com/guis/qnx621.html
       | 
       | [2] https://archive.org/details/qnx_momentics_6.2.1
        
         | [deleted]
        
         | GekkePrutser wrote:
         | It is a shame yes. There is no current desktop RTOS at all
         | afaik.
         | 
         | I know an RTOS does not guarantee smooth desktop performance
         | but I just would love to try it out to compare.
        
           | MisterTea wrote:
           | > There is no current desktop RTOS at all afaik.
           | 
           | Plan 9 has deadline scheduling out-of-the-box for real-time.
           | It runs on x86-64, 386, Arm v7 and AArch64 (And more):
           | http://doc.cat-v.org/plan_9/real_time/ (mostly obsolete but
           | describes the motivation and implementation)
           | 
           | See proc(3) man page for deadline scheduling (towards the
           | bottom real-time i described): http://man.9front.org/3/proc
           | (I always recommend the actively maintained 9front fork)
           | 
           | The best part is you don't need special patches or libraries.
           | You simply configure the process/group by writing messages to
           | the procs ctl file using the command line, a script, or from
           | within your program.
        
             | GekkePrutser wrote:
             | Interesting. Is that a desktop OS though? I'll have a play
             | with it soon. Thanks for the heads-up.
        
           | [deleted]
        
           | PaulDavisThe1st wrote:
           | Linux with a kernel built with RT_PREEMPT ?
        
         | jcelerier wrote:
         | this demo cd is my benchmark of how a computer is supposed to
         | feel like. if UI interactions are in any way slower than what
         | this provides (on, say, 2008-era hardware), it's basically poop
        
         | ducktective wrote:
         | 1- What's the FOSS alternative that is as good as QNX nowadays?
         | FreeRTOS, NuttX, Zephyr etc are used for MCUs not general
         | purpose computation AFAIK
         | 
         | 2- What tech stack (language) you used for those challenges?
         | 
         | 3- Your idea on Lisp (for these applications)?
        
           | beagle3 wrote:
           | QNX was a true microkernel architecture that worked, and
           | worked well. The basic building block was called IIRC
           | Send/Receive/Reply: Every "system" call looked like a regular
           | function call, but would "Send" a message to a different
           | process, and (usually) suspend the caller; The other process
           | would "Receive", do whatever was requested, and "Reply", at
           | which point control went back (with the response) to the
           | calling process. IIRC it was also possibly to do async calls,
           | but in that case the other process would call ("Send") the
           | response back, rather than "Reply". I might be confusing this
           | with another system though.
           | 
           | device drivers weren't privileged - they were just another
           | process you called into, and could be restarted in the case
           | of a fault (rather than kernel panic or blue screen).
           | 
           | A system that doesn't provide this is not an alternative to
           | QNX; It's just another operating system (which are all, in
           | some ways, alternative to each other and thus QNX, but ...)
        
           | snvzz wrote:
           | >What's the FOSS alternative that is as good as QNX nowadays?
           | FreeRTOS, NuttX, Zephyr etc are used for MCUs not general
           | purpose computation AFAIK
           | 
           | SeL4 with CAmkES, or Genode.
        
             | jonny_eh wrote:
             | How about WindRiver Linux?
             | https://www.windriver.com/products/linux
        
               | snvzz wrote:
               | Excluded, because it's Linux, with all its issues.
               | 
               | Huge TCB being the main one.
        
           | mise_en_place wrote:
           | Dunno if it's an alternative but Linux had RT_PREEMPT and you
           | can build a kernel that's fully preemptable.
        
             | PaulDavisThe1st wrote:
             | It's good, but ... there's "fully preemptable" and there's
             | "fully preemptable". QNX is one of those, RT_PREEMPT
             | kernels are the other.
        
               | [deleted]
        
           | Animats wrote:
           | 1. Nothing. Someone was writing a QNX-type kernel in Rust.
           | What happened to that? There's L4, but it's too low-level.
           | It's more of a hypervisor. People usually run another OS,
           | usually a stripped-down Linux, on top of L4. QNX offers a
           | POSIX API, so you can run applications directly.
           | 
           | 2. C++. Here's the source code. [1]
           | 
           | 3. No.
           | 
           | [1] https://github.com/John-Nagle/Overbot/
        
             | snvzz wrote:
             | >People usually run another OS, usually a stripped-down
             | Linux, on top of L4.
             | 
             | Look into Genode.
        
             | MonkeyClub wrote:
             | > 3. No.
             | 
             | Why? No hope for real RT? (Or otherwise more generally due
             | to the GC?)
        
         | wakeupcall wrote:
         | I was using it at that time as my main desktop OS. I ported and
         | wrote several tools of it. The gui itself was simple, nice to
         | use and to program for.
         | 
         | Driver support wasn't extensive, but the available drivers were
         | working fine. With qnxstart.com at the time and all the oss
         | tooling I didn't have anything missing.
         | 
         | I was in love in a way that only beos gave me before.
         | 
         | This was the last commercial/closed-source OS I ever used in no
         | small part due to the license change.
        
       | wslh wrote:
       | SqueakNOS was a project to build a complete operating system via
       | Squeak. In this way you can quickly hack it. There is a great
       | page about these initiatives here:
       | http://wiki.squeak.org/squeak/5727
       | 
       | Prior to SqueakNOS we implemented this:
       | http://swain.webframe.org/squeak/floppy/ (using Linux and
       | modifying Squeak to work with SVGALib instead of X) in just 900mb
       | inspired in this QNX Demo Disk.
        
         | lproven wrote:
         | I think you meant 900 _kB_ not _MB_.
         | 
         | TBH, even now, 900 meg isn't very impressive. ;-)
        
       | h2odragon wrote:
       | QNX always sounded interesting, until one saw just how much
       | effort the company was going to to prevent people from actually
       | using it. Vaguely recall a story about someone trying to buy 50
       | licenses from them for a prototype kiosk thing but they wanted
       | something like 1,000 minimum for a reseller account; and that
       | killed the project.
        
         | gbin wrote:
         | Now it is basically a company just as predatory as Oracle. It
         | is just sad.
        
         | FpUser wrote:
         | I did some demo projects with QNX in the 90s and I thought it
         | was the best OS ever. Unfortunately trying to license it for
         | use with our company products was a nightmare and after a while
         | I just said the fuck with it.
        
         | panick21_ wrote:
         | Being proprietary killed such an huge large amount of great
         | technology in the 90 and early 2000s.
        
           | [deleted]
        
             | [deleted]
        
           | danuker wrote:
           | It also made a large amount of money for those who knew how
           | to walk the fine line between profitability and adoption.
        
           | [deleted]
        
       | userbinator wrote:
       | Somewhat similar to MenuetOS:
       | https://news.ycombinator.com/item?id=31290789
        
       | sedatk wrote:
       | "xNix", really? I thought we'd settled on using Unix as a generic
       | name for all Unix-like operating systems.
        
         | lproven wrote:
         | Unix is very much not generic, and is (r), (tm) and (c) to the
         | Open Group.
         | 
         | Novell donated the trademark to them when it bought Bell Labs
         | in 1993.
         | 
         | 1 Linux is currently a registered UNIX(tm): Huawei EulerOS
         | 
         | https://www.opengroup.org/openbrand/register/brand3622.htm
         | 
         | Formerly Inspur K-UX was, too:
         | 
         | https://www.opengroup.org/openbrand/register/brand3617.htm
         | 
         | You can view the list here:
         | 
         | https://www.opengroup.org/openbrand/register/
         | 
         | Apple macOS, IBM AIX, HP-UX, the 2 old SCO OSes, and -- oddly
         | -- IBM z/OS.
         | 
         | But no, UNIX is very much not generic, and I generally find
         | Linux people get very upset when I call it a UNIX. Which it is,
         | but even 29 years on, people still think that "Unix" means
         | "based on AT&T code".
        
       | jakemauer wrote:
       | This brings back memories. I remember marveling at this with my
       | best friend when it came out. I got into BeOS around the same
       | time.
       | 
       | I used to use those ad-supported dial up ISP's and found one that
       | worked with a standard PPP dialer so I didn't need their
       | software. I remember carrying around the QNX disk and login info
       | so I could get online with basically any computer.
        
         | grendelt wrote:
         | I got into these back in the late 90s because of the hackable
         | 3Com Audrey "internet appliance" (remember _that_ term?)
         | 
         | I never hear about QNX anymore, so this is def a blast from the
         | past.
        
         | Scoundreller wrote:
         | > I used to use those ad-supported dial up ISP's and found one
         | that worked with a standard PPP dialer so I didn't need their
         | software
         | 
         | Juno? Netzero?
        
       | basementcat wrote:
       | A touching tribute to the creator of the demo.
       | https://openqnx.com/node/298
        
       | haunter wrote:
       | Something similar: https://pupngo.dk/xwinflpy/xwoaf_rebuild.html
       | 
       | The 4.0 version works perfectly, 2.2.26 kernel though which was
       | released in 1999
       | 
       | Discussed before here
       | https://news.ycombinator.com/item?id=28515025
        
       | tibbydudeza wrote:
       | I used to code a system that ran QNX 4 - it was great - not quite
       | Linux but fast and responsive.
       | 
       | The only issue was the file system and driver support - if it
       | crashed there was not good recovery tools.
        
       | oidar wrote:
       | Back when QNX was distributed on floppy, my work locked down
       | their computers so that I couldn't dial out to the internet. So I
       | booted up the QNX off the floppy and was browsing within minutes.
       | My boss walked in on me browsing the internet and I nearly got
       | fired over it. He was worried because he thought he might get in
       | trouble for it. Once I explained how it worked, he was less
       | worried.
       | 
       | It was amazing that they could fit a semi-functional browser on a
       | floppy.
        
       | bedast wrote:
       | A while back, Ford used QNX for their infotainment. Not sure if
       | they still do.
        
         | svorakang wrote:
         | Other automotive OEMs are using it also for other use cases,
         | such as compute nodes doing plenty of crunching mixed with
         | real-time control.
        
       | mdaniel wrote:
       | Must be "old OS week" seeing this and the recent OS/2 post:
       | https://news.ycombinator.com/item?id=33107065
        
       | glonq wrote:
       | I remember attending the Embedded Systems Conference frequently
       | during the late 90s and early 2000s. QNX always had a strong
       | presence there.
       | 
       | It always seemed too "big" (too capable, too complex, too pricey)
       | for my projects so I never took it for a spin.
        
       | whartung wrote:
       | Ok, so skipping the kernel bit, where can I download the source
       | to a GUI and a browser that runs off of 1.44MB binary?
       | 
       | Why can't we run one of those on a generic Linux kernel?
        
       | robertheadley wrote:
       | This is one of my favorite things in computing.
        
       | ncmncm wrote:
       | I have long wondered... How was it possible to construct this? Is
       | it just extreme self-discipline, omitting everything not strictly
       | essential? Or is there an underlying formalism that makes a very
       | small amount of code do a very great deal?
       | 
       | It seems like the only way is for most of the code in the system
       | to contribute to a multitude of different uses... Maybe an
       | interpreter with especially powerful, composable operations and a
       | very compact representation, and most of the system coded to that
       | interpreter? (That got Apollo 11 from orbit to the moon and
       | back.)
        
         | Animats wrote:
         | > I have long wondered... How was it possible to construct
         | this? Is it just extreme self-discipline, omitting everything
         | not strictly essential? Or is there an underlying formalism
         | that makes a very small amount of code do a very great deal?
         | 
         | Two really good designers, Gorden Bell and Dan Dodge.
         | 
         | Here are the key design decisions:
         | 
         | - All the kernel does is manage memory, dispatch processes,
         | handle interrupts and timers, and pass messages from process to
         | process. No device drivers, no file systems. Everything else is
         | in user space. The kernel is small (about 60KB of code in some
         | versions), very well written, and rarely changed. It's so
         | small, so heavily used, and so rarely changed that it reached
         | an essentially bug-free state.
         | 
         | - All non-preemptable kernel operations have fixed upper bounds
         | on how long they can take, worst case. That upper bound is in
         | microseconds. That's why real time works.
         | 
         | - Message passing and CPU scheduling are integrated and very
         | efficient. In particular, the case of sending a message to
         | another process and getting a reply message is not only low
         | overhead, but does not involve losing your turn for the CPU.
         | The two systems are designed together. So calling another
         | process can be used almost like a subroutine call. Most
         | interprocess message systems botch this, and calling another
         | process means two or more trips through the CPU scheduler and
         | may cost you your CPU quantum. Which means a "microservice
         | architecture" runs too slowly. Which means people work around
         | making interprocess calls, putting too much in one process.
         | 
         | - There is no swapping or paging. This is essential for real-
         | time. It simplifies other things. Message passing is copying
         | user space to user space, and can't page fault. The destination
         | area has to be in memory. So there is no need for kernel data
         | buffers.
         | 
         | - At boot time, the boot program loads the kernel, a user space
         | utility process called "proc", plus any user space drivers or
         | programs you want at startup. That's how it gets started with
         | no device drivers in the kernel. More drivers can be loaded
         | later, if desired. Having a file system or disk is optional.
         | The minimal configuration is a CPU, boot ROM with the software,
         | and memory. That's a common configuration for small embedded
         | systems.
         | 
         | - File systems, networking, and drivers are all user programs.
         | Some have the privilege of writing to device space. The kernel
         | turns interrupts into interprocess messages.
         | 
         | It's a nice architecture for small and medium real-time systems
         | that have to Just Work.
        
           | Kenji wrote:
        
           | mwcampbell wrote:
           | > So calling another process can be used almost like a
           | subroutine call.
           | 
           | Any numbers on the overhead of a message send/reply round
           | trip compared to a subroutine call? I always assumed it was
           | just axiomatic that the difference in latency between those
           | two options would be orders of magnitude.
        
       | SirLJ wrote:
       | I had one of those in another life :-)
        
       ___________________________________________________________________
       (page generated 2022-10-07 23:00 UTC)