Wednesday, June 24, 2009

recess framework and metacircularity

The collection space has been in the process of an overhaul for some time now in preparation for some huge structural and philosophical changes that we have in the pipeline. One of the biggest challenges has been committing to a framework for php. I have evaluated (and used for client projects etc.) zend, cake, codeigniter etc. and all of them fall short of making me feel like they are increasing my productivity rather than getting in my way as they weakly attempt to adhere to design patterns. I have been working on my pet framework in the background for some time but even that I would not want to commit to for a project of this magnitude as it bumps documentation up in priority for other developers to be able to be productive with out me guiding them through things.

So what then? Recess (http://www.recessframework.org/) has shown up and been the only framework in php that I've kept my eye on and been constantly more impressed rather than more disappointed when I start looking into the internals. Being a young project I feel it is an ideal candidate for a lot of the code generation and object modeling tools that I have been playing with for voltron. Once cspace is live (july 9th) I plan on formalizing a lot of the tools that have helped me with Recess - mainly the object browser/editor and metacircular parser. What does that mean? It means I can edit files in and editor or individual methods through a browser based object browser/editor and not have an issue. I have another approach for views which I may offer up but it seems like Recess has some cool stuff in store so I will wait and see. But for cspace I am going forward with our view approach (no html, s-expression format called LET).

1 comment:

KrisJ said...

Shaun, great blog! How have I not come across this space until reading the latest comment on HN? Fantastic work and would love to have you involved in the Recess community. The upcoming branch for 5.3 is going to leverage closures for some sweet functionality.

Also, want to pass off some code for you to check out that is along the lines of your currying code but a different spin for a different purpose that I believe makes for some interesting scenarios on the view side of things. (Transform a lambda into an object whose parameters are get/set in any order in an OO style and whose __invoke finally calls the lambda and applies the params in the correct order.)

Shoot me an email when you get moving with recess: krisjordan at google's mail. Cheers.