The Raspberry Pi is not the first cheap ARM based computer in the market but a combination of laudable objectives with some very good technology and marketing is making it an instant hit. But what I find intriguing is the possibility of it becoming a viable software platform. If it does, it will be the first time we will be able to deliver desktop-like software pre-installed on a computer with an overhead of maybe $50. No more deployment woes and the customer actually receives something with the purchase. Now, this computer appears to be roughly as powerful as what we had ten years ago and even though this may sound bad, many applications can survive just fine within these constraints. For example, a very large number of Point Of Sale (POS) computers could be replaced with the Raspberry Pi. Other more extreme applications may call for disposable computers. Weather balloons and the surging amateur space projects come to mind. But there are other possibilities. What about combining a Raspberry Pi with a 3D printer? Instant software appliance manufacture for a few hundred dollars. Use the printer to create modular parts each containing a Raspberry Pi. Each part plays a specific role and slots into the others forming a composable system. How is that for geek overload? A bit more down to earth are the many thousands of horizontal software packages created for specific machines such as industrial robots, presses, etc. The norm now is to ship a complete computer with some software pre-installed at the cost of a few hundred dollars. As soon as we have available a monitor with an embedded Raspberry Pi these dust gathering boxes will go away.
This poses the interesting question of what will be the best framework to build all this software on. The Raspberry Pi runs a number of linux distributions but at 256Mb of memory it will be interesting to see how anything above C and C++ behaves performance wise. In my opinion, we need the likes of Java and Mono to deliver good enough performance. And good enough performance for me is to match the experience we had back in 1997 with Visual Basic applications. At this level it is possible to create the type of software I mentioned above within short timeframes and small budgets. If we need to resort to C or C++ for the software then we will loose the rapid application development side of things. Which opens another can of worms which is the tooling. We need a simple to use IDE and build tools. Ideally we would develop the applications on a Mac or PC using an IDE such as MonoDevelop or Eclipse and test them in an emulator or on the board itself. Very much like what we do for mobile development. Another interesting possibility is if Android is ported to the Raspberry Pi. This would solve the software stack problem as long as the performance was there. It is still early days and there is a lot of work to be done on the software side but if the Raspberry Pi succeeds we may look back to 2012 as the year when a new paradigm was born.
Edit: It just started!