Ditto … everyone’s favourite missing tool
This week I’m celebrating my nine year anniversary working with QNX. When I started at QNX the company was in the throes of a major product development effort to bring QNX 6/Neutrino to market as its next generation operating system with full support for processor families other than x86.
When I started MIPS, PPC ports were well underway with ARM and SH support starting up. I’m not an expert in any particular processor architecture, so I ended up working through a lot of the general system bugs and polishing some of the rough edges of this new OS. By necessity this meant spending a lot of time interacting with the very active set of QNX developers, who at that time were steeped in QNX 4 knowledge and trying to migrate their systems and software to this new OS. There are a lot of basic similarities between QNX 4 and QNX 6 but there are enough differences that migration wasn’t a zero effort affair, despite a fairly comprehensive software migration kit.
About once a month I’d receive a request from QNX4 developers:
“When will ditto be ported to Neutrino?”
Of course, the first time I heard this comment I was intrigued since ditto is not a standard *nix utility, so I thought I’d look into it. It turned out that porting this particular utility (which provides terminal replication and remote terminal access) to Neutrino was going to take some signficiant work and more or less be an entire re-write since the utility took specific advantage of how QNX 4 character device drivers were written. Under Neutrino the serial driver code was completely different, so at the time I turned my focus to other areas where fixes could be made more short term with a plan to come back to do the ditto re-write.
Here we are, nine years later and there are still people asking for ditto for Neutrino.
Boy do I feel bad about never getting back to that work =;-(
Well since I still haven’t ported ditto yet, the first thing I’m going to do is suggest an alternative that may be a more mainstream solution in these days of Linux fervor. The GNU Screen utility provides much of the same terminal multiplexing and remote or shared control that ditto did. The source compiles, with a few minor changes, out of the box for Neutrino. While I haven’t taken it for a full test drive yet, this looks like it might be the best immediate solution and maybe even long term since there are several screen resources available in the community.
However, ditto ain’t totally dead yet. The other day walking through our source tree on a related project I noticed that one of our aspiring developers has done some work to make some of the ditto remote monitoring (no interaction) capabilities available for Neutrino. This is still internal goods, and not in the next OS release, but perhaps this article might nudge it along if there is some competition.