When Research In Motion unveiled its BlackBerry Playbook tablet on Monday, including the new QNX-based operating system it runs, I already speculated that it would probably make its way onto RIM’s smartphones as well. RIM has now confirmed this suspicion.
The process is going to take a while, though. A Research In Motion VP explained how it’s going to work over breakfast at the BlackBerry Developer Conference. Apparently, the idea is to first launch BlackBerry OS 7, which will be sort-of a transitional release to prepare developers for the launch of the eventual QNX-based operating system.
This gives developers the time to get used to the new development environment and new operating system, which gets to mature on its own on the PlayBook and possible additional tablet devices. Some BlackBerry OS application will run on it, but it’s unclear just how easily (or how many).
Good decision by RIM. Why write something from scratch when you can just buy fellow Canadian company QSS, and use their excellent and more-than-proven QNX operating system. Now let’s hope that the suits at RIM are smart enough to allow us to have a (warranty-voiding) Minecraft-mode on the phone, so us geeks can meddle with QNX’ internals.
My understanding is that version 7 will use the QNX kernel but will have an application compatibility layer for the older black berry programs, as opposed to being some sort of OS hybrid. Part of me wishes RIM used the Photon UI that QNX uses by default, what with it’s minimalistic simplicity and easy usability, but I know they won’t. Not sure what UI tech will be used, they haven’t gone into much detail there.
Edited 2010-09-29 19:23 UTC
That “application compatibility layer” is called Java runtime and is available in one form or another for many operating systems, including QNX, since like forever.
From the picture, the current UI is more likely done with Flash Action Script.
My guess would be, you can do UI in either Java, Flash, or Native (OpenGL) at the end.
Flash is also incredibly likely. Adobe and QNX are good friends…
Completely untrue that Adobe and QNX are friends. I have my own experience to vouch for this. See if you can get Adobe to port AIR to QNX, for instance.
Make no mistake – QNX is riding the coattails of other, more popular, operating systems to get Flash functionality.
Thom, you can go ahead and install QNX on desktop systems. It hardly requires any knowledge whatsoever – and is easy to set up as it supports x86. Please, just stop being such a blind fanboy. If you’re going to editorize something through OSNews, please – get some experience as opposed to relying on theory.
Theory is that Betamax is better than VHS too.
Beta(max) is still used in movie production, where VHS never got popular. I think that technically Betamax was superior, but that VHS won on the non-technical aspects (like the minidisc was superior to early flash memory in every single technical aspect but died due to OpenMG stupidity)
It seems playbook could support Qt:
http://gadgetbuff.wordpress.com/2010/09/29/rim-announces-the-playbo…
This could mean same apps could (mostly) target MeeGo and PlayBook. It would make the tablet (and BlackBerry phones) a lot more interesting.
QT works fairly well on QNX as is, but it needs a bit more work. The qnx version is based on the QT for embded linux branch of QT (http://doc.trolltech.com/4.6-snapshot/qt-embedded-linux.html)
All in all QT being the default would be a huge win for the platform. I have a feeling it will be (i am fairly sure actually but my contact won’t confirm or deny it for me at this time), but I’m crossing my fingers!
It’s amazing how some people at OSnews are very close to those big corporations we regularly mention in news.
As an example, I think vivainio has mentioned some times ago that he has a strong link with Nokia, though I can’t remember if it’s because he is employed by them initially or because he worked with Trolltech before and logically followed QT when it was bought.
And now, you say that you have a contact who knows thing about that RIM-QNX relationship.
Makes me ashamed to be a physics student who’s very far away from all that business and is forced to get information in an indirect fashion
Edited 2010-09-29 20:16 UTC
I’m employed by Nokia initially. Everyone at Nokia deals with Qt these days though.
I read the tablet article earlier today, but his makes it even more interesting.
I wonder why this has not been done before. QNX is a serious OS so why is it only now that we find it more in the public picture.
Has anyone (including Thom) who replied to this topic spent serious time developing for QNX before?
I was a qnx developer during the photon days. The problem with these proprietary OS’s is that they are created and managed in a closed environment with a “small” team. Sooner or later, your priorities will diverge from their’s and you’ll end up with little to no support. You have to go to them with money, or else they probably prioritize your request at the bottom of the list. It’s usually developement around the edge that runs into problems. For instance, it says that it supports Flash 10.1, but what if you needed the flash to be able to control the camera, or microphone? I hate to say it, but my company was burned by this and I just can’t see myself going back to develop for them.
It could be a little better than before, since adopting embedded Qt libraries, and near full-fledged applications can be created on webkit. Still, I’d be careful about encouraging platforms that are developed in a closed development model.
Even though I have not developed for QNX, quoted parts of your post do not make much sense. The same argument can be used for a number of platforms (Windows, iOS to name but a few) and yet development is not suffering.
Again, I differ to experience. It’s different when you’re the market leader and innovating at a breakneck pace, creating standards faster than developers can keep up and generating profits hand over fist. However, there will come a time when innovation on a platform slows and quality is measured by how well it supports new standards led by other (possibly competing) companies. The same is true if you’re developing for a platform that chases the market leader. My experience tells me that QNX lacks this support. It chases 80% of functionality of competitors well, but the last 20% comes at a premium and… in the past… they didn’t quite deliver… for me. YMMV.
Cloud applications have brought development to the server and as long as you have an up-to-date browser, you’re somewhat supportable. Server-based solutions are *somewhat* platform agnostic.
Embedded development frequently turns this around. Your platform becomes more important. You’ll want your applications to work with hardware, ie, inserting gps coordinates to a picture, or something to that effect. From a vendor’s standpoint, it’s a constant struggle to keep up with new drivers, honing apis and developer kits. It’s not going to be easy for QNX, despite the fact that they have RIM numbers.
The difference is one of scale. With major platforms no matter what you’re trying to do, chances are there are lots and lots of other people trying to do exactly the same thing. And if there is a serious bug, that makes doing that thing impossible there will be a lot more pressure to get it fixed or for someone to find a work around. Also since windows has been used for so many different things for so long, chances are someone has already run across your problem and found a solution.
With small platforms like QNX, chances are you will literally be the only one of their customers trying to do that thing. Thus there is no one you can ask for help and you are far to insignificant for QNX to spend any resources helping you.
Developers haven’t suffered from the closeness of iOS? Ok.
… yes, and as we are talking cell phone OSes, which platforms are you actually suggesting, which are not proprietary OSes? 🙂
C++ Support please! Else no ports from iphone or android of meaningful apps
Why?!
iPhone -> Objective-C
Android -> Java (NDK is only being used in some cases)
The announcement of the QNX-based operating system bring attention to something more interesting which is the triumph of Unix.
Here is a very interesting article discussing the rise of unix and the cul-de-sac that Windows finds itself in.
http://www.asymco.com/2010/09/29/unixs-revenge/
Here are a couple of quotes from the article:
QNX based on Linux ? Are you sure of that ?
Otherwise I agree, Unix has grown very big lately. Funny, considering that it was initially built with very different needs than the modern desktop and mobile computers in mind.
Where did he say that QNX is based on Linux? in his post he said that Linux was a implementation of UNIX but that doesn’t mean it is UNIX. QNX used to be marketed as ‘Quick UNIX’ until they were told that they couldn’t continue calling it any longer since it didn’t pay the fee to call itself a UNIX (Mac OS X can since it has paid and passes the Single UNIX Specification 2003 (SUS2003) recently).
What Mac OS X shows is if you have the funds and the focus you can make a good desktop operating system off *NIX – the problem is that what is required to create something that spans over the open x86 desktop market. You someone who can provide leadership and a group of investors willing to provide long term funding for something that might take at least 2-3 years before it see’s the light of day and maybe another 3-5 years before it is profitable thus able to provide at least 8-10 years worth of funding which I don’t see happening any time soon.
Edited 2010-09-30 10:07 UTC
“(…) Android and MeeGo and even Bada are based on Linux as are QNX and WebOS”
Maybe an alternate option is a hobby dev with a vision who somehow manages to lead a team of enthusiasts, in which case it takes even more time but still is possible.
Thanks for the correction – there is this horrible trendy I see these days of people equating Linux to UNIX that they are being used interchangeably by people without the slightest understanding that one doesn’t mean the other. I even see people claim that Mac OS X is based on Linux! everytime I see such posts I die a little inside.
True which kinda goes back to SkyOS and how personally I would have preferred to see him use a *BSD core of some sort then create a custom interface, display server and so forth on top so that the value can be added by not being ‘yet another *NIX for the desktop’. I wish I had the development skills because that would be the first thing I’d do – take the FreeBSD core, build on a new display server and interface then develop it from there.
The first thing I’d do in building any desktop operating system (if I had the skills) was to use QNX as a base. Fully transparent distributed computing, a true microkernel (none of that monolithic crap), a super-efficient and tiny (in all senses of the word) fully accelerated display server, self-healing and self-recovery in all layers and components of the system…
It’s a piece of genius. Nothing comes even CLOSE – certainly not hodgepodges like Windows, Linux, and Mac OS X.
They have lots of nice optimizations in place to allow quick communication between kernel modules.
I imagine that QNX is the only successful micro-kernel OS out there.
VxWorks does quite well afaik and is a micro kernel too. Micro kernels in general are found in embedded computers anyway, because size and modularity are pretty key in that field.
I don’t believe VxWorks is a microkernel. My understanding is that device drivers do not run as separate processes but as threads in the VxWork’s kernel. Thus no memory protection is offered to critical system functions. VxWork’s kernel comprises of a bunch of non-os related stuff (tcp/ip stack, device drivers, file systems, etc, etc). It can get quite bloated.
It takes some very smart and knowledgeable people to make a VxWorks system run reliably. A lot of kernel level debugging is required when implementing new device drivers or other services that need to reside in kernel space. Much care has to be taken to insure that it works well.
QNX’s kernel on the other hand only implements the very basic OS needs. Scheduling, memory management, timers, inter-process communications, and thread/process management are in the kernel.
That’s it.
Network protocols (packet filtering, firewall, and other TCP/IP related features), device drivers, file systems and other hardware related software services run in user land.
When new device drivers are implemented, normal application debugging can take place. You can start and stop device drivers at will and unless you do something that causes the hardware to fail or work incorrectly, the system remains responsive in the face of a device driver failure (segfault for example). Also when you newly minted device driver faults, you get a core dump. Load that core dump in your debugger, you get a stack trace as well as variable values at the time of the crash. It’s nice.
VxWorks kernel can be small in size, but size doesn’t make it a microkernel. QNX’s kernel, by the way, is very compact and does not change size with different system configurations.
I think QNX still stands as the only well implemented microkernel.
Not quite right. SymbianOS has some success around the world, too, and if I remember well it’s based on a microkernel called EKA2…
Quite right, check out this article for an interesting read:
http://www.informit.com/articles/article.aspx?p=1578523
I especially noticed the following passing about fork():
Wow, this kernel is much more complex on the inside than I thought. It seems that when designing it, on the simple code/cleanness compromise, they went fully on the “clean” extreme
That’s possible, especially considering that UNIX and POSIX were made on the days of minicomputers, and designed around criteria among which several don’t apply anymore to personal computers.
In my opinion, considering UNIX as the most perfect OS design ever is a bit flawed. It was good on its days, and it received a lot of developer love. Many people still work hard on it. But at the core, is it the best design for modern desktop and mobile computers ? In my opinion no, we only keep it because making a new OS model is not an economically viable option nowadays.
Edited 2010-09-30 16:55 UTC
Yes, where would AmigaOS be nowadays, if Gateway did not screw the deal with QNX in 1998 🙁 … it would simply be power of QNX and brand power of Amiga (still good sounding brand back in 1998).
My point exactly, but ohno, better skip it for Linux, because, it’s like, Linux!!! …
Never mind AmigaDE (rather Tao-groups Elate and nothing more I suppose) which was just 100% retarded unless it actually _RAN_ on something Amiga.
Isn’t QNX a major player in the embedded space (machinery, aerospace, etc, where there is zero fault tolerance) as well?
And yes, QNX and Symbian are two great examples of highly successful micro kernel OS’s. Also, MacOS and iOS are based on the Mach micro kernel, and employ at least partial micro kernel design.
People often think that since Linux won over the failed (so far) Hurd project, and that Minix was only an academic OS, that the debate between monolithic kernels and micro kernels was over, and monolithic won.
But obviously that is not the case. Both have been successful.
What we in the business class “close but no Amiga”, with two very different meanings.
#1: Sadly everything come short to the Amiga as we remember it.
#2: Amiga by all definitions of successful isn’t
We lend the concept to the quantum physics guys.
“but Android and MeeGo and even Bada are based on Linux as are QNX and WebOS.”
I also reacted to it.
Heh yeah that made me smile. QNX predates Linux by a decade.
…over what? Windows? Yeah, call me when desktops, laptops, servers, etc (you know, the computing devices that people use to do actual work) start getting replaced those things. Right now, they’re just consumer toys.
The only “triumph” here is the triumph of proprietary UNIX over open sores Eunuchs. I’m sure that really annoys the hell out of Stallman and co!
So this mean future BlackberryOS will be based on Unix?
No it mean it will be based on QNX? ;D
It’s interesting that Chris Herborth recently announced on Twitter that he was going to be working at RIM…. that now makes a lot of sense 🙂
Android, iOS, MeeGo, WebOS, they’re really not even operating systems, but more operating environments. Android, MeeGo and WebOS use Linux as the base OS, and iOS uses stripped down Mac OS X.
It’s all really low level stuff, which is the easy part. The hard part is the graphical environment, having the APIs, touch screen capability, and providing a graphical framework for applications.
And I mean easy part by it’s relative difficulty. All the vendors have solid underlying operating systems. The problems the come up, the challenges vendors face, they aren’t because of the kernels or low level system calls. The problems are making a graphical environment. This is what Microsoft has struggled with (and why they threw out their old environment), and what Nokia is having issues with now.
So, QNX or not, why does it even matter? It’s not what is preventing companies from producing compelling products. It’s all in the graphics.
It’s not just the graphics. The architecture of the low level stuff provides a foundation that will ultimately limit or enhance what a user can do. There are many many low level details that affect usability. It’s more than just graphics.
Indeed. Low-level stuff can help the UI layer, and hence usability.
Consider, as an example, a kernel based around the concept of events. You have standard round-robin scheduling around most of the time, but when an interrupt comes around it is processed immediately.
The result of that is a very snappy UI : even when under load, the OS takes the time to process mouse clicks as soon as they come and refresh the UI immediately.
Snappiness means a busy user. A busy user feels that the computer is working quickly and efficiently, even when it’s not actually the case.
Of course, that’s a quick an dirty example, but I think it shows how good low-end components matter too. A good mainframe kernel with batch scheduling would still be terrible at powering a desktop OS.
Edited 2010-09-30 16:40 UTC
True, but all the operating environments have tackled this. Neither Linux nor iOS have mainframe batch scheduling (Linux has a multitude of schedulers geared towards interactiveness). It’s not a problem any of them have. I would think the GPU power and code running on top of it (relatively unaffected by a decent scheduler) would have way more impact than the differences between scheduling engines.
It’d be an interesting benchmark to run. I suspect the differences would be minimum. And again, the challenges that companies like Nokia, Google, Microsoft, and Apple have aren’t really low-level based. It’s usability and whole-operating environment.
Do you think that their schedulers are that good as far as interactivity is concerned ? My favorite test for interactive performance is to run many while(1); loops in the background and see how responsive my desktop remains.
On the ideal perfect desktop OS, it should remain just as fast, since this code snippet only uses CPU power and should be phased out by the scheduler in favor of more urgent tasks. But in my experience, the behavior of most desktop linux distros under load is far from ideal. Couldn’t stress-test iOS, if someone with a jailbroken iPhone can try this, please report me how well the OS behaves
GPU power shouldn’t be needed for normal operation. If it’s needed, either the UI layer is awfully coded, or there’s some overuse of heavy (as opposed to easy to compute) animations around.
Again, if you can get your hands on a wide range of mobile devices, please do run the while(1) torture test I’d really like to see if mobile devices manage to resist under load.
Other nice tests are repetitive malloc/free (to check how system calls behave), and my personal favorite, the file operation torture test, which in pseudocode looks like this in one of its simplest spawns :
while true do
..size = 0
..open(file)
..while size < 1GB do
….write byte(random number between 0 and 255)
….commit changes to file
..end do
..delete(file)
end do
The goal is to check if the desktop layer can still access files when it needs to, while several copies of this monster are running and eating disk bandwidth for dinner.
As a side note, using Windows 7 on my brand new and relatively high-end laptop, I don’t even need to torture the OS like this for interactivity issues to appear : the simple combination of an AVG scheduled scan and a Windows backup running in the background are sufficient to make multimedia playback freeze periodically along with the rest of the UI (mouse doesn’t move smoothly and things like that).
Indeed, they compete at a higher level, and there’s a lot of things to do in the high-level UI layers. Good low-level foundations mostly benefit interactivity, which although very important is not the sole part of a good UI.
But looking at current OSs, I think that interactivity is still a subject that should be worked on.
Edited 2010-09-30 17:31 UTC
Based on your own non-standard definition?
Those are all operating systems. Android doesn’t even use a vanilla Linux kernel.
(About the comments, not the article )
What is UNIX anyway? It just came to represent some stuff that was new back in the 80s, but it doesn’t mean anything today. Perhaps what we mean is POSIX…? It’s the virctory of POSIX.
And what is a microkernel? All systems today have more or less of a microkernel architecture. It’s like RISC, after the war, RISC won. All is RISC now, and all are running microkernels.
What is really important about QNX is that it is a real-time operational system. Linux has a RT version, but QNX is RT from ground up, and AFAIK it does perform better in that regard.
I am curious to know if Qt won’t be used to develop for QNX, it would be awesome.
How so? Linux is a fat monokernel while Darwin and NT are hyrbids.
No x64 cpus just have more registers and use RISC-like microcodes at the core. They do not have a reduced instruction set.
And mainstream RISC architectures added more instructions (Altivec, etc). Extremes are almost never useful.
Technically, the “Reduced” in RISC does not mean “fewer number of instructions” rather than a reduction in the complexity of the instructions in the ISA. It helps to think that the opposite of RISC is CISC, the C is not for “lots of instruction” instructions but for “Complex.”
Ironically, even most mainstream RISC had to further reduce the complexity of their instructions by adding “crack” stages to further distill some RISC insts into even more simpler micro-ops when they introduced out-of-order scheduling.
Therefore, by the last decade there was little difference between the high end X86 OOO parts and the high performance RISC processors. Which is why RISC went the way of the dodo in certain markets, because it had zero value proposition over the competing x86 parts which could enjoy mass production and thus cheaper prices.