A talk with Paul Leroux
First of all, there's a lot of common ground. QNX and Linux share APIs, tools, etc. so that Linux developers can easily learn QNX, and vice versa. Actually, you can think of QNX and Linux as providing a very nice form of synergy. Together, they allow developers to leverage the same skill sets across a very wide spectrum of applications -- much wider, in fact, than any single operating system could do on its own.
Nonetheless, they are different. While they share programming interfaces, QNX is inherently realtime, whereas Linux is a general-purpose OS. QNX has a microkernel architecture (i.e. drivers, protocols, and file systems are dynamically upgradable, memory-protected processes), whereas Linux follows a far more traditional "monolithic" kernel architecture. I can name other differences (e.g. QNX is inherently network-distributed, QNX can scale smaller, etc.), but the point is that QNX and Linux are different tools suited to different jobs. For example, QNX is extremely well suited to the network-distributed architecture of a high-end router. It's also a superior choice for small, memory-constrained Web appliances or for any application that requires `hard' realtime determinism.
I'm only talking about technical merits here. But you also have to consider the company and people behind the QNX RTOS. We serve the embedded market, and embedding is hard stuff. OEMs building embedded products have very complex requirements and expect a phenomenal amount of expertise and experience on the part of their OS vendor. That's where we have a real edge, since we've been in the embedded business for over 20 years. We know the needs of embedded developers intimately.
How easy is it for Linux and Unix developers to develop applications on the QNX realtime platform?
Because QNX shares common APIs and GNU development tools with Linux and Unix, application developers familiar with these platforms can become productive almost immediately. For instance, QNX provides Linux-hosted GNU tools, so developers can create QNX-based realtime/embedded applications from the comfort of their existing Linux workstations. From the Linux/Unix developer's perspective, most things can remain the same--tools, APIs, and programming model.
Linux/Unix developers can also choose to work from within QNX's self-hosted development environment; that is, they can `live' in the QNX realtime platform. Most developers find this environment very familiar, since it shares common GNU tools with Linux, including a port of the popular DDD debugger.