Thoughts on the Akelos PHP Framework
I recently took on a project that was a failure for the original developers. It was the usual story of outsourcing a project and just getting hosed on cost and timeline (my bread and butter). I was asked to take a look and see if I could finish off the project ASAP. Looking under the hood I found that the site was using a framework I hadn't heard of called Akelos.
Akelos touts itself as a port of Ruby on Rails (RoR) to PHP but, frankly, I think that's mostly marketing. Hell, even in the footer disclaimer on the Akelos site they minimize the R0R relationship. Not that that's a bad thing per se (I wouldn't want to be associated with RoR at the moment either).
Expecting a clusterfuck of code I was actually a little surprised to find the use of a framework. Granted, the previous developers weren't using the framework very well, or in any optimal way, but it was still nice to see. Of course that meant I had to learn Another Fucking Framework but what the hell; I like to learn.
According to the site:
The Akelos PHP Framework is a web application development platform based on the MVC (Model View Controller) design pattern. Based on good practices, it allows you to:
- Write views using Ajax easily
- Control requests and responses through a controller
- Manage internationalized applications
- Communicate models and the database using simple conventions.
Your Akelos based applications can run on most shared hosting service providers since Akelos only requires that PHP be available at the server. This means that the Akelos PHP Framework is the ideal candidate for distributing standalone web applications as it does not require any non-standard PHP configuration to run.
It seems to work similarly to most MVC frameworks, like the Zend Framework, in file structure and hierarchy which definitely eased some of the pain. Unfortunately, I can't really speak to the Ajax ease of use because, well, like I said above the previous developers were not so much on the... ummm, good side of the coin.
There is a video which is definitely worth checking out; it'll walk you through the basics of how to use Akelos to generate your project. While there's a bunch of options for generating your project it does come off a little schizophrenic in that it uses both command line and a web interface depending on what you're trying to do.
One thing I was impressed with was the localization functionality. Basically, it works like most do, using translate files (read; arrays), which by itself isn't that impressive, but I really appreciate the way the system uses the browser locale value if one isn't selected. Nice.
One thing that really didn't impress me was the absolute NEED for a database connection; NO MATTER WHAT. That's just confining and comes across to me as lazy and wasteful. Seriously, why would this be a good idea? Does no one care about performance anymore?
It's unfortunate that Zend Framework and Symfony are the juggernauts they are; I know I wouldn't want to go against them. It's got to be tough building a competitive framework with those two being as rad as they are.
All and all Akelos isn't a bad framework and it does have potential. The Ajax readiness is intriguing and the file structure and hierarchy is intuitive (if you've used any other MVC framework )so it was easy to figure things out. There's also the plugin architecture; I do enjoy me a good plugin architecture.
But I don't think the relationship to Ruby on Rails is as good a thing as the developers of Akelos think it is. To be honest, I found the similarities between the two jarring due to how uneven the implementation was. Plus, similarities to RoR might have been a good marketing hook 2 years ago, these days it's just another bullet point. Add to that my personal bias that PHP should function like... you know... PHP.
Point being, I like RoR and if I want to code like RoR I'll use RoR, not PHP, thankyouverymuch. Add to that my dislike for code generation (and Akelos has a lot of code generation) and I just don't care anymore.
So for me, Akelos is a fail. Not because Akelos sucks and not because Akelos isn't good (though it does suck a little and it's not all that good). More because of design decisions that can't be helped that disagree with how I like to work.
Zf = 1
Akelos = 0