The Arduino, however, is a rather elementary unit of computation compared to modern devices. I can see it moving forward in three meaningful directions:
1) increasing the performance of the individual platform
2) providing the ability for multiple blocks to expand through add-ons
3) providing a way for modularity
The first is a source of constant debate, but it would raise the price of the basic unit to a point where it might be cost-prohibitive to the mass group of tinkerers - me included.
The second is the current strategy pursued by most groups, and it revolves around building shields for the Arduino
The third, however, is largely unexplored. If expanded upon, it would satisfy the cost/price constraints, but would also provide a way to address the performance scalability issue. It would allow the Arduino to form the basis for a larger architectural platform of scalable product design.
Where are we today?
There have been two main attempts to my knowledge to experiment with multiprocessing and parallel architecture scaling on the Arduino:
1) "Dual-core" approach, using 2 atmegas sync'd on one chip
2) "Dual core" approach, using 2 atmegas on a single board
So I'm about to start on a third approach in the coming weeks. My goal is to create a scalable, dynamic hardware system with the Arduinos!