Here is what the software stack will look like:
The iOS user interface will be the most complex component of the architecture, and the one that is the least open. In order to work around this limitation, the iOS application running on the iPod will be implemented in Swift with a domain specific language (DSL) and a set of packaged components. Developers will then be able to create custom user interfaces for their shields by simply using meta-data elements that are dynamically interpreted by the application framework, without having to write any Swift code or re-deploying the app on the iPod Touch. These software shields will be downloaded from the Internet through the iPod’s WiFi connection.
The Arduino software stack is a lot more open and suitable to interfacing with various hardware components than the iOS platform. As a result, it will be used to implement most of the mixed signal middleware that will be needed between the user interface running on the iPod Touch and the various hardware components of the module. In a perfect world, we should be able to push Arduino applications from the iPod Touch, thereby enabling the following code flow: Internet > iPod > Arduino.
Some online services might be eventually developed for facilitating the distribution of firmware updates, software shields, and dynamic patches. In such a case, the Google Cloud Platform will be used, but this project will be undertaken at a later stage. In the meantime, all developments will be done using GitHub.