Reactored, my packet based future finally emerges

Well it’s been a while since I have posted on what I have been working on, but figured it was about time to give you all an update. First of all I’ve ben busy as hell the last few months and it seems that it isn’t likely to change in the foreseeable future.

Second a little history is in order, last year as some of you are probably aware we built the first prototypes for Rel3. Rel3 was originally a framework that I was designing to build Folknology projects. Instead of just building a framework, I figured I should actually build something useful with the frame work concurrently. Doing things this way means you build a useful framework that does something concrete rather than just an endless series of components built without scope or constraint. Turns out this is a good way to build stuff because you end up scratching itches that exist. The downside is it seems to take forever, one of the reasons I called the project code name rel3 was because I had already built the thing twice so logically the next version would be release 3 AKA ‘Rel3’. We also gave a sneak preview of a rel3 app last year at wiki wednesday which some of you guys attended. In the interim we got some commercial interest from a couple of paying gigs and proceeded to build a prototype for one of them. That prototype based on rel3 is still in testing and has been going through several revisions.

In the meantime I was still not happy with rel3 the framework, it needed to be more robust, scalable and extensible. In addition I was getting requests for commercial projects that I wanted to build using the framework. Thus over the last few months I have completely rebuild the framework to meet it’s architectural goals and commercial requirements. The new framework is built using Erlang/OTP and I (with help from Phil) have named it Reactor, to be precise the project is actually called Reactored and the framework engine is called reactor. here is a potted history

  1. 2005 Rel1 – Java/Xml based framework – To complex and unwieldy
  2. 2006 Rel2 – Java + Groovy/Grails based framework – Simpler but messy
  3. 2007 Rel2.5 – Ruby/Rail based framework – Failed, Rails got in the way
  4. 2007 ReL3 – Erlang/ErlyWeb – Success but messy (wouldn’t dare show code in public!)
  5. 2008 Reactor – Erlang/OTP – Everything we ever wanted and more, it just Rocks!

Reactor is the core of OTP components that do the heavy lifting. Reactored expands the scope to combine the Reactor engine with the following components in future:

  1. Web server Yaws and ErlyWeb,
  2. Messaging ejabbered and RabbitMQ
  3. Non native CGI/FW Python 1st then maybe Php ,Ruby..
  4. Whatever anyone wants and is willing to contribute 😉

Some advantages we are already benefitting from:

  1. Yaws is native in the framework language unlike Apache
  2. Highly perform-ant, scalable, redundant and eventually reliable!
  3. Component, modular and simpler to extend to requirements.

So what the hell is Reactor and what is Reactored for?
I will take the second first, Reactored will be the community that I hope we can build around Reactor and it is of course OpenSource (GPL’d). As for Reactor, well that will probably take a number of posts and examples to explain, but here is a brief description in the meantime.

Reactor is a new angle on building web based projects. It focuses on packets, patterns and events. It’s a reactive framework built around REST based cached/distributed storage, queues/sinks and domain based pattern matching.
Perhaps the best way of visualizing it is comparing it to existing domain patterns where we store and then post process using techniques like search and query. With a reactive storage we do the queries in realtime (as data enters) using pattern matching. The framework also allows for common post storage queries using search, tags and identity avoiding the need for a separate query language.

Reactor is not a web framework, but is something that can be integrated into an existing web framework. I will however be adding Yaws and ErlyWeb support as a matter of personal preference. Next likely stop is a python framework integration, but this largely depends on some help with the Python, that also goes for any other language frameworks such as PHP, Ruby etc.. You could think of it a new type of backend for frameworks, except if you did you would miss out how frontend it can be!

It goes without saying of course that if any of this is mildly interesting to you and you would like to find out more or contribute in some way please tweet/comment/email me and let me know, here are some indications of skills that could really help:

  1. Erlang geeks – anyone looking to join an OpenSource erlang project, I don’t just mean experts if you already have Python/Javascript and are learning Erlang count yourself in.
  2. Javascript,AJAX,Air geeks that want to play with interesting new frameworks
  3. Testers, documentors, evangelists, bloggers and general participants if your interested your in!

In terms of code and project status, Reactor will be functionally complete at version 0.1 on Sunday June 1 2008 (probably midnight!), if you are impatient,just request it and I can send a tarball. For everyone else if you could wait a few days/weeks whilst I get the code out of my private GIT repository and into a public repository (GitHub/GoogleCode?). I will also be setting up the project website/blog/tracking stuff as and when I can over the next few months using the reserved domain.

I guess you can consider this the unofficial announcement of Reactored!

* Update It is now available from the public Git repository at Reactored on GitHub now

About this entry