So, Lyle Lange and I had some back and forth comment discussion about the current state of robotics development. This was in response to the article Why robots will not be smarter than humans by 2029.
My contention was, and remains, software development has taken steps backwards instead of forwards. By that, what I mean is developing software today is significantly harder and more complicated than it was 10 years ago. This is because not only is the software that is being developed more difficult, but more importantly because the tool set has not kept up. 10 years ago, we developed a single threaded task, with a simple user interface, most often designed to be used by one user at a time. Borland set the standard for development environments, with integrated editing and debugging. First with pascal, and then C++. It took Microsoft several attempts but eventually they matched and surpassed Borland with Visual Studio. Even with the new graphical OS, called WIndows, things remained a breeze to develop with.
Then came the anti-MS revolution. The internet, originally intended as only a text-based network, along with its legacy OS, Unix, quickly became popular. Images where hacked into the internet as an add-on to html, a markup language originally intended for word processing. Perl interpreted batch scripts drove web ‘applications’. Database servers were added, scripts started running on the server-side, the end user side, occasionally in the database. Each with some variation of the fad of the week – Java, totally unrelated to Java Script (but its name was sufficiently anti-Microsoft), Python, PHP, coupled with SQL, HTTP/HTML. Hack it some more to upgrade it to HTML5 and CSS. And tie it all together with an unreliable protocol TCP. Oh, and do not forget to use an editor, Vi or Emacs, that was designed for the VT100 terminal. You know, the terminal that superseded punched tape. Ah yes, we showed Microsoft!
Unfortunately this madness spread. Open source, usually lacking any sort of Quality Control, became another ‘standard’ of the day. Some successful projects (Apache) were pointed to as justification for the 99% that were junk. In some cases, open source with it’s flaws (Blender) became acceptable when compared to very expensive closed source, after all “what do you expect for free?” Even the latest Source Control Versioning System, GIT, which is critical for software development, is acknowledged as probably the most poorly designed system ever, but its designer was famous (Linux author Linus) and everyone adopted it.
And ROS was born. Robotics Operating System. At heart, not a bad idea. It is more hindered by its baggage than itself a bad idea. We are still using Vi and Emacs as editors. Adding printf statements every other line in our code, since no there is no realtime debugging. And with this, we try to design robots for the future.
So, I’m (literally) playing with my own robotics project. The processor I chose allows me to run Windows XP. That meant I could run Visual Studio, with its remote real-time debugging. I could use C#, a modern object-oriented language. I had things like Windows Communication Foundation available for inter process communications. Windows Presentation Foundation for post Win32 user interfaces with things like automatic 2-way data binding. Other than being a little slow, on my 256k processor, pretty nice; DARPA robotics teams would be envious. But atlas, Microsoft considers this stuff old enough to retire, long before anyone else even comes close to matching it. So I start looking at ROS.
ROS has a recent experience where they tried to support intermediate Ubuntu Linux releases. It did not go well, putting it kindly (yes, I got caught in the middle of it a while back). So they have decided to not do that again. I just built a screaming Linux machine (for other reasons), but if I want to switch to ROS for my robot, and use my linux box as a development machine, I will need to reformat, go back a version and re-install everything. Ah, the joys of open source, and the progress, or lack thereof of software development, especially for robotics.