Paul Rouke Bio

I'm the user experience director at PRWD, and have 7 years commercial experience at Littlewoods Shop Direct. Delivering User Centered Design processes to improve systems and applications is what I do.

view my full bio

PRWD

Usability and software development agency specialising in:

  • User Centered Design
  • Best Practice E-commerce solution
  • Business Modernisation

view more on PRWD

PRWD, specialists in online user experience
Call us today on
0161 918 6729

Search

Archive for the ‘Tehnical Architecture’ Category

PHP Framework Comparison: Zend Framework

Tuesday, July 1st, 2008

I have recently been researching various PHP frameworks, for use in upcoming projects.  These projects are large-scale, enterprise PHP systems which are going to be developed and maintained over a long period of time, so making the right choice of framework is crucial.  Also important is the ease of development – how easy the different frameworks make application development, and how they support rapid development, prototyping and agile development processes.  This post is the first in a series comparing the strengths and weakness of PHP frameworks.

The first two frameworks I have considered are the Zend Framework (currently at version 1.5) and Symfony (version 1.0, though version 1.1 has just been released).  I have considered a number of different factors and my judgements are very much a subjective view.  I have had plenty of experience of different software libraries, from coding C++ using the Microsoft Foundation Classes library in the late 90s, to PHP using the Drupal CMS/F (whether one considers Drupal to be a ‘framework’ is a matter of debate) and Python using Django.  In this time I think that I have learned to spot the strengths and weaknesses of frameworks and libraries, so, although subjective, my views aren’t totally uneducated.

Zend Framework

The first thing to say about ZF is that it wasn’t what I expected.  Having used Django and observed the general trend in web frameworks towards code generation and advanced ORM, ZF was surprising in that it bucked this trend entirely.  If you want CRUD code with ZF, you can write it yourself.  This, in itself, is not necessarily a bad thing, but it is slightly discouraging when you just want to get in and have a play about it with the framework.  In this day and age, the ability to rapidly assemble a working prototype is very important, and ZF could go further in making this easy.

Features

After a while of using ZF, it becomes apparent that my initial objection – that it doesn’t really speed up development during the very early phase of a project – is an intentional design choice.  The ZF developers refer to this as ‘use-at-will’ architecture; in old-fashioned software engineering lingo, we might say that ZF is ‘loosely-coupled’, in that the various classes it provides can be used separately, without reference to the rest of the framework.  This makes ZF a great choice for refactoring legacy code, as you can just plug in those bits of the framework that you need, without having to modify anything else.  If all you really want is the (very useful) ZF Akismet class (which interfaces with Automattic’s Akismet service), you don’t need to use the rest of the library at all.

In fact, after a while I started to think that the aims of ZF are actually somewhat different to the aims of other frameworks.  Most other PHP frameworks were funded and contributed to by developers who needed the functionality in their day jobs.  CodeIgniter came from the development of ExpressionEngine, Fabien Potencier’s Sensio Labs created Symfony to power their in-house projects, Drupal was started by Dries Buytaert to provide a basic community website and forum and Ruby on Rails began life as a basic library of functions used by 37 Signals for the development of Basecamp.  The Zend Framework, on the other hand, was funded by Zend specifically to create a strong, reliable PHP framework in order to give PHP a rival to Rails and Django.  It is, in effect, an ‘immaculately conceived’ framework, designed from first principles to support the widest-possible deployment, rather than to solve specific common problems.

In this respect, ZF is more of a ‘library’ than a ‘framework’.  It provides a set of classes that you can use as you see fit, taking out the ones that interest you, and leaving the rest.  What it does not really do is provide you with the basic foundational structure of an app that most other web development frameworks tend to do these days.  This is probably due to Zend’s different motivations in creating ZF – they are not a bunch of deadline-driven web developers trying to make their own jobs easier by creating a framework to build new apps with; instead they are attempting to create a set of classes that others can use in a whole variety of different ways, many of which the ZF developers cannot anticipate.

As such, ZF represents something similar to the C++ Standard Template Library – the object-oriented successor of the older C Standard Library.  Zend appear to be trying to give developers a new set of modern, object-oriented tools with which to build applications, perhaps replacing some of the reliance on the huge legacy PHP feature set.

Documentation

ZF’s documentation is poor.  There’s a reasonably good reference for each class, but there are nowhere near enough example applications and tutorials.  This is probably related to the fact that ZF classes can be used in isolation from each other and there isn’t always a clear way of constructing a basic app to make use of these classes, but this is no excuse.  For a developer considering ZF for the first time, it can be hard to see exactly how one is meant to make use of it.  What examples there are tend to be quite complex and focus on the arcana of the framework’s implementation than practical use cases.  This is my single biggest problem with ZF.

Community

The genesis of ZF also contributes to the slightly odd feel of the community.  Coming from a Drupal background, I’m used to a very self-reliant community, with a strong ‘do it yourself’ approach to improving the software, the kind of ethos that, to me, signifies a truly great open source development.  The Zend Framework doesn’t have that yet.  Too often, the ‘community’ seems to consist of ‘users’ rather than ‘doers’, people who would rather petition Zend to improve the software than submit a patch or create a new module.  Open source projects, if they work well, are a bit like crowd-surfing at a gig – you throw yourself out there and hope that enough people decide to catch you.  At the moment, it’s not apparent that there are enough people to catch the Zend Framework, so it can’t make the leap.  The developers can’t quite let go of their creation, either because they are unwilling to, or because there’s not enough people there to catch it.  This does lead to some unfortunate examples of developers reacting personally to criticism, rather than the standard open source response of ‘fix it yourself if you don’t like it!’.

Conclusion

ZF’s strengths are clear – the code is well-written, covers a range of common web development tasks, including some areas neglected by other frameworks, and succeeds in making it easy for developers to incorporate ZF code into legacy projects.  These strengths alone make it an important piece of software that is likely to remain relevant for cutting-edge PHP developers over the next few years.  The framework’s weaknesses – that it isn’t really a framework – are easily addressable; it’s not hard to imagine someone creating the additional ‘glue’ that would make ZF a viable framework in the mould of Rails and Django.  If that code came from the community rather than Zend, then it would be a sign of ZF blossoming into a truly useful framework.  And if this could all be documented, we might be getting somewhere!

Part two of this post will consider the Symfony framework. Stay tuned!

Remarkable Lead Technical Architect Joins PRWD

Monday, May 19th, 2008

Following hot on the heals of our e-commerce platform launch, I am delighted to welcome Rob Knight into my team as Lead Technical Architect for PRWD.

PRWD - Specialists in Online User Experience

Remarkable Individuals

Cementing the businesses strategy of only employing remarkable individuals, as part of the initial discussions on the strategy of the business and what Rob would bring to the business, he took part in our Psychometric Testing process, with our recruitment partner Psycuity.

The testing process, handled fantastically by Ian Hudson, Director at Pyscuity, provided the kind of insight into Rob’s skills, expertise, aptitude and long term potential which we would never have been able to determine through a traditional recruitment process.

Fulfilling Long Term Ambitions

With developing innovative web applications, business systems and enterprise level e-commerce solutions an integral part of PRWD’s services, not only have we recruited someone who can lead the technical architecture and system development process, but for Rob I am fully confident he has found the type of company in which he can realise his full potential and fulfil one of his long term ambition’s of being recognised as being a remarkable individual.

On joining the business, Rob said:

Working for PRWD is a fantastic opportunity for me to work at the cutting edge of web application development. I’m looking forward to creating innovative solutions for our clients, building on the excellent platforms already established.

As a developer, it’s important to me that I work to the highest standards of technical excellence, stretching my personal capabilities and learning new and interesting skills along the way. I hope to enhance the reputation of PRWD for delivering high-quality web applications and I hope that my contribution will be to deliver good value for our clients. On a personal level, I think that this is a very interesting time to be working in this industry, with the constant change and innovation that it requires. PRWD is well-placed to make the most of these changes and I am happy to be in a position where I can be on the leading edge.

Hitting the Ground Running…!

All that remains for me to say is welcome to the team Rob, and we can’t wait to kick-off the analysis phase of your 1st business modernisation project, not to mention driving the evolvement of our e-commerce platform!