I initially anticipated that I'd be able to spend a number of full-time months on the work. I ended up being able to allocate time on a less consistent basis, largely because starting a company (tilde.io) ended up offering fewer opportunities for dedicated, isolated work than I expected. Thankfully, Patrick Gibson (of Tilde) and Austin Bales (of Do.com) ended up doing some of the iOS and design work, respectively, and I've focused my energies on the Ruby parts of the architecture.
My talk at RubyConf[4] goes into some detail about the architecture, and we're very close to shipping an early beta.
During the (long) time it's taken me to get this out the door, I've worked closely with Michal Papis (of rvm) to make the static binary build viable on both OSX and other Nix environments. Michal briefly shipped the binary Tokaido build as the primary build for `rvm install 1.9.3`, but difficulties in reliably building more recent patch levels have pushed that back some. We expect to be able to use the Tokaido build process to permanently ship binary rubies with rvm (and other ruby managers that are interested) once the build process for the current patch levels stabilizes again.
My plan for the MVP release of Tokaido is:
* Shipping the binary with a .app that can be dragged into /Applications
* The ability to add and remove applications via an application UI. You can then open a terminal window for these applications with a rock-solid Ruby environment that uses the binary build and makes sure that the ENV is set up correctly.
* The ability to start and stop any of these applications (via the web section of a Procfile) and browse them via `appname.tokaido` in the browser. This involves installing and executing a pure-Ruby proxy that supports the `app.tokaido` domain (see my RubyConf for more details on the nature of this beast; SMJobSubmit ftw!).
All of the above is largely complete (see the `tokaido` organization on GitHub and the links above for more). We have worked out how to use `SMJobSubmit` to enable the parts of `appname.tokaido` that require superuser access on first boot of the application bundle, and Patrick is just waiting for me to give him a fully self-contained zip of `tokaido-bootstrap` to execute from within the application. Of course, error handling is crucial for this, especially for low-level things like DNS servers and HTTP proxies.
Post-MVP, we hope to work on some of the more ambitious logging aspects of Austin Bales' original design.
[1] https://github.com/tokaido/tokaido-bootstrap
[2] https://github.com/tokaido/tokaido-dns