Development host OS pros/cons

Since starting with QNX6 and Momentics I’ve been using Windows as a development platform and it’s driving me nuts.

Mario has mentioned that there are shortcomings of developing natively on QNX, but then there are advantages to being self-hosted too.

Is anyone here using Linux for a development host? If so, what distribution and version are you using? What pros and cons have you found?


What is driving you nuts, maybe there are solutions. What I don’t like is the process of copying the files over a QNX machine for quick testing. I’ve solve that problem by adding rcp to our makefile. Hence everytime an executable is created it is copy automagicaly (and optionally) to our target machine whichI access via phindows.

That is what some people do here, I use the IDE as an editor only, I don’t build from it. I start the IDE on windows and access the file on the QNX machine via samba. Make is launch manually through phindows. I do that because I find it compiles faster because we have a QNX6 quad core server (and overclocked) that compiles much faster then our windows machines (no budget to upgrade each and everyone’s machines)

We set it up so the software people have a choice. One thing that nobody here does is use the IDE self hosted, that’s unfortunate because that would be the ideal setup.

A lot of what bugs me about Windows is Windows, the policies of IT departments surrounding Windows, and the ability of Windows to make a multi-GHz multi-core cpu with multi-GB of memory run like a 286. Even when a Windows machine starts out fast it suffers bit-rot over time and becomes a dog (no offense to dogs, I love 'em). Then there are things like forced updates that cause unexpected reboots overnight when tests are running, the fact that every update seems to break something, the virus and spyware stuff that has to run to keep the machine secure but slows the machine down for hours, etc.

I also miss the simple things like links that make version control of libraries easier, the absence of per-file and per directory rwx permissions, and the rich native utility set (cygwin works but it’s more like an afterthought and not well integrated).

Then there are eclipse-isms that might not happen on a different platform. For example, sometimes when the target is rebooted eclipse won’t recognize that the target is up for 10-15 minutes even though you can telnet and ftp to the target right away.

Really it boils down to the fact that I’m more comfortable on a *nix style box.

Don’t know about linux. I know at least one person at QNX that uses it, he was running the 64 bit version with a 64 bit JVM and was real happy with it;-) I run Vista X64 but haven’t been able to setup it up to use a 64bit JVM. I guess if you stick to the supported platform you’ll be ok:

From QNX: “Linux Red Hat Enterprise Workstation 4 or 5, Red Hat Enterprise Server 5.1 64-bit, Red Hat Fedora Core 6 or 7, Ubuntu 6.0.6 LTS or 7, or SUSE 10. You can’t install QNX SDP 6.4.0 on machines that are running 64-bit Linux Ubuntu 7.10.”

Thanks, the plan was to use Ubuntu 7.0.4 but I haven’t known anyone who has actually used Momentics on Linux.

Hey Ken, don’t be shy. Tell us what you really think! :smiling_imp:

It is killing me these days to be developing in Windows for Windows using some horrid abomination like an object-oriented Pascal.

Where’s the emoticon of the little guy hurling when you need it? :unamused:

I’m sure others, especially those coming from the *nix world, have similar thoughts.

A hurling emoticon would be very useful :slight_smile:

We are also not happy with the development environment.
We are running self hosted, compiling using makefiles in the shell, and using DDD for debugging.

We paid for the PE version, but the IDE is self hosted not useable. Under VMware it takes minutes to start the IDE.
The project concept of Eclipse is also unflexibel.

We run self hosted to have the following advantages:

  • We are using compact flash cards for booting the target, which we create using a USB CF-card reader.
  • Easy testing
  • Easy compiling and using open source apps

What I REALLY miss is a good and FAST graphical debugger like the old watcom debugger.

vedit for Neutrino would be also nice. Ped has no undo function etc…

Yeah, the Watcom debugger was good. For speed and simplicity the old Sid debugger in QNX2 was hard to beat (as was CIIs Edit2000 editor).

I bought Vedit for Windows but was disappointed to find that they use Windows to manage edit windows. That severely crippled vedit window management. There is no longer good split window editing capability, or side by side split window scrolling, or rapid console switches that were useful to see differences between files. It is still very useful for editing large files though. We were recently using it to view files with 18M lines and it works great for that.

vim does vertical or horizontal splits w/ scrolling.
vim -d is great for diffing two files. Works great
self hosted.


Yeah, vim is pretty good and it does do a great job at diffing ascii files.

Vedit was great for diffing hex files. Put two windows in hex mode, line up the rows in each window, then flip back and forth and look for the values that are changing. Don’t need to do that often but it was great for database index files and binary config files.

Although the developer abandoned it years ago I really like the Workspace IDE. There are a couple of features I’d like to see and some very minor glitches (ctrl-tab forward and back don’t go to the same places – symmetry should be preserved) but for the most part it is a really good, verging on great piece of freeware.

If I was a Photon programmer (one course 12 years ago doesn’t count) and had time (time? hah!) I’d take a stab at fixing and extending it. I did that once with QNX’s own QED (which is how I ended up being hired by them), but that was when I had no life outside of programming.

I can’t imagine NOT doing self-hosted development. In fact, if it weren’t for self-hosted development I wouldn’t use QNX in the first place. It’s the only feature that is truly unique to QNX in the RTOS space. (I know everyone is going to jump on that. QNX has some combinations of features that aren’t available in other OSes, but each individual component exists elsewhere.)

Yes, it’s amazing that 15 years later the Watcom debugger that came with QNX 4.2x is better than any option on QNX 6.x. Yes, it’s amazing that 15 years ago vedit was a better text editor than anything available on QNX 6. Yes, I’m still using a text editor and the command line to build programs, instead of a fast, solid IDE. (I DIDN’T pay for PE, so no Eclipse for me.)

And fiffi, thank you for complaining about ped’s lack of undo. I mentioned it on here once and everyone jumped on me like I must be an idiot to ever make a mistake in typing. If you want a laugh, you can look at the text editor I wrote to get around ped’s limitations. Of course, you need Java, which doesn’t come with SE anymore, so you can’t use it unless you have PE, at which point you also have Eclipse.

For all this, I still can’t believe that anyone DOESN’T self-host. It’s just so much easier to code-build-run-repeat on one box.

-James Ingraham
Sage Automation, Inc.

Self hosting is great if you’re developing for an x86 target, but when you’re working on a non-x86 custom board much of the code must be tested on the target anyway. Self-hosting is probably better then, too, except when the tools are worse than on other development platforms (which they apparently are, eclipse anyway).

GDB is in my opinion better then Watcom.

vim or gvim is in many respect better then vedit.

Ped is like notepad, it’s just a convinience.

I find Eclipse ( using Ganymede ) to be a great environment, auto-complete, support for doxygen, buildin-help, integrated svn, great Mylyn plugin for integration with bugzilla, (all of this is free ). That’s why for now I use Eclipse to edit from Windows and I build self hosted.

Some people were I work (long time QNX4 programmer) have switch to 100% cross-compile and we setup the makefile so the executable get copy automaticaly via rcp onto the QNX target. That makes everything real simple. Very close to the code-build-run-repeat.

Even if you’re not developing for x86 you can build for x86 at the same time as the target. Then you can run the actual code. Yes, you still have to test and debug when you move it to the target later. But at least if you want to make sure that button you just added is in the right place you can do it a LOT faster. Your x86 development box will undoubtedly execute several orders of magnitude faster than your target ARM / MIPS / whatever system. So for initial testing you’d want to do it on the dev system anyway. That’s why all the other RTOSes have emulators. But of course the emulators are going to be slower than a real workstation running native code.

-James Ingraham
Sage Automation, Inc.

Our current project has nine major modules and libraries and they all have target hardware dependencies. The GUI would run on x86 but it couldn’t have been tested using the rotary encoder that is the major interface device for the unit. Initial GUI development was done on x86 using temporary up/down buttons in place of the knob but the “feel” of the knob (low speed sensitivity vs. acceleration) became a huge issue when installed on the target.

You’re right, though, running self hosted whenever possible has big advantages when the tools are good.

For the proponents of cross-compiling on windows: How can I create a QNX4 filesystem on a CF-card using a USB-CF-card-reader ? How can I copy the OS into the QNX4 filesystem ?

VMware. It actually takes the guess work of out USB compatiblity issues or card reader.

You can either let VMWare present the device through the USB pass throught capability of VMWare or you can let QNX see it as a hardrive.

Here we don’t even bother, we setup an old pc with QNX6 just for that purpose.

But it is not possible using the QNX Momentics development environment on windows …
I prefer using only one machine and one “environment” for development. (Easier to maintain and easier to carry to the customer …)

The self hosted development environment comes the nearest to our needs.
The only really bad thing is the missing good / fast debugger. (On the self hosted QNX it takes minutes to start the momentics IDE …)