The Alph Project is a bridge between two language runtimes; the Ruby interpreter and the Macromedia Flash player. Flash was originally constructed to be an animation runtime and because of this it has attracted a more design-oriented rather then developer-oriented community. The Flash player is actually a stack-based virtual machine which now supports the ability to write graphical component-based applications in the ActionScript 2.0 language. Although Flash and ActionScript are powerful, the downside to developing in it is that each application you build is compiled into a binary (swf) movie, and the main development environment (Macromedia Flash) is a commercial (> $500) product. Although the Flash development tools are commercial, the player runtime is free and cross-platform.
Alph will create a free, open-source alternative for constructing dynamic Flash-based interfaces in pure Ruby and aims to be an unique, comprehensive user interface framework. Alph ships with a single binary (swf) file that when executed connects to the Ruby-based service (which could be in-machine or network/web-based). This single swf file contains all the Flash 2.0 components compiled in with a network protocol handler, method dispatcher, and event manager which allows Flash-based interfaces to be created at run-time by Ruby over a TCP/IP socket. Ruby programs will have access to the full version 2 GUI component model of Flash 2004 without the commercial costs of existing Flash tools, and those Flash interfaces will have the full power of Ruby (and its library of extensions) behind them.
I originally demonstrated an Alph interface during my RubyJDWP presentation at the Third Annual Ruby Conference in November. I am currently working (as free time allows) on getting this fully running, and will be posting the source to the Alph Project website when it gets in a state where it is possible for others to develop with. I expect the code to be online by the end of January. As I make progress, I will keep my blog up to date with interesting tidbits and things I'm learning along the way.