Framework, CMS - What Do I Really Want from a Web Application Rapid Development Kit
Inspired by the blog What I Want From A Framework, I want to discuss what I want from a web application rapid development kit(WARDK) as a lazy developer. I am going to use PHP language as an example in my discussion, but the discussion can apply to other languages such as Java, Ruby, and Python.
Here’s what I want: the most important and common features (every web application that supports multiple users need to have these):
- user management(CRUD operations on users, ban users, user group management), pluggable authentication(LDAP, OpenID, integration with other systems) OpenID)
- user/application access control matrix(who/which group can do what to which modules)
- user session management
- plug-in system - can plug in new modules to provide new functionalities and work with existing modules
- provide a hook for each module to provide searchable data and return the result set based on search query
Other important and nice features(many of these features can be supplied by a underlying framework):
- support the use of a template engine that's not intrusive and strictly separates model and view(a user can use HTML editor to edit pages)
- highly-customizable layout ( people may want to change the layout dramatically )
- internationalization support ( a module for string translation )
- Ajax support - eg: seemly calling the same client-side validation on the server-side validation as well (don’t just assume that you get away with client-side validation only)
- highly testable and maintainable(component-based design, each component can be tested alone with its connecting components being mocked). PHP really gets the reputation as spaghetti codes where all things (logic, view) are mixed all together in a page.
- encourage obsessive automated testing ( In another word, test-driven development)
- encourage Participatory Testing –encourage others to participate in testing
- security ( eg: provide data sanitization to guard against SQL injection, secure user session data)
- dependency injection - don't tightly couple objects to framework-specific types.
- plug in DB layer abstraction and data persistence tool(like Propel)
There are many great PHP frameworks out there that provide a great feature set to empower developers(edited: here's an article comparing different PHP frameworks):
But they are too high level. We still need to do heavy application "plumbing” on COMMON features. Ideally, each framework should provide a reference implementation of WARDK that can easily integrate with other tools (eg: Simple Test for PHP) to showcase its power.
Am I asking too much? Am I too lazy? Maybe what I need is just a CMS.
Indeed, my proposed feature list contains many features that already exist in Drupal.
Tags: java php web application framework development ruby python











