A public forum for discussing the design of software, from the user interface to the code architecture. Now closed.
This is what I'd like in a web framework.
1) Good documentation
2) Active community
3) Easy to set up a CRUD grid
4) Built in ability to handle complex data relations
5) Strong data validation
6) Built in multi-level user authentication
7) Ajax enabled inline editing
8) Easy to deploy and configure
9) Low system requirements
I have looked at the following frameworks, this is my analysis:
Great documentation, good community, very low system requirements, easy to deploy. But fails on CRUD and Ajax.
Biggest and most active community of all, low system requirements, easy to deploy. Several popular PHP projects integrate with Cake in one way or another: Drupal, Joomla, Mambo, PhpBB. The complaint I read about, constantly, is the documentation.
Decent community, system requirements are not too bad, easy enough to deploy. The CRUD and Ajax features are the best I've ever seen. When it comes to developing a sortable, searchable, inline editable grid; Qcodo seems to blow away all the others. I am somewhat concerned about doing anything outside of what is shown in the tutorials. Also, somewhat concerned about maintainability. For example, I think Qcodo generates 8 files for every table you create - seems like a lot.
The system requirement, deployment, and configuration issues seem overwhelming. I get the impression that Python framework developers just assume the user has complete control over the server. Those who develop Python frameworks seem to have no regard for the realities of shared hosting. System requirements tend to be sky-high: Apache 2.x, mod_python (latest version), fastcgi (at least), command line access, PostgreSQL (recommended). Assuming you can meet the system requirements, you still have server configuration issues such as setting up the Path, and maybe the .htaccess file. Then there is the ongoing configuration: database model has to be synced to database, configuration file for every application, urls have to be configured to match your view, webserver has to be restarted every time modify your code - or touch every file if using fastcgi. Django may be a great project, but the admin overhead seems excessive. Also, not much built-in Ajax support.
System requirements about the same as Django. Better Ajax support than Django. TurboGears in a bunch of other Python projects glued together. I have mixed feeling about the "Frankenstein" approach. On the one hand, I understand the desire to have "best of breed," on the other hand, I'm not sure I'm comfortable with components being swapped out fairly frequently. For example, according to wikipedia, TurboGears components consist of: "MochiKit, SQLObject, CherryPy and Kid." As I understand it, practically all of those components have been swapped, or will soon be swapped.
System requirement issues again. Also, as I understand it, Rails does not handle complex data relations very well.
Try grails! I don't know how low is your preferred system requirements, but you can run grails apps in tomcat or jetty.
just my .02
Monday, August 06, 2007
If you develop client side-like application Tigermouse might be worth looking at.
CRUD and table handling is quite decent, powerful ActiveRecord implementation with one2many and many2many relations handling and DataSource interface (not only for databases), server side validation and role based user access system included.
Tigermouse is totally AJAX, no page reloads (it is meant to be this way). It is relatively easy to deploy. The only requirements are PHP 5 and JSON extension. DB backend(s) is/are flexible (PDO and PEAR supported currently), so DB engines are (MySQL, MSSQL, PostgreSQL SQL dialects are handled).
Although, you need to be warned that community and documentation is mostly me myself :-)
Learn more at http://tigermouse.epsi.pl
Tuesday, August 07, 2007
Consider Struts 2 (e.g. WebWork) or JBoss SEAM.
I prefer the former. Hibernate is about as industrial-strength as you're gonna get for a database backend without going to raw SQL.
For the simple CRUD stuff, I'd suggest mounting grails atop of either one of these two. It'll handle that stuff for you, but you'll have all the power of these much stronger systems for everything else. The CRUD stuff is mechanical and dumb -- don't bother risking your entire project to save some of the simplest, low-risk code in the entire system.
Unless, of course, your app is all CRUD work. Then just choose which framework has the best documentation and use it to get the job done.
I think you're going to be upset with any of your options unless you roll your own, because your requirements are just too high. If you're stuck on PHP, I'd recommend Smarty for a templating language (good docs and reasonable community) and Pear or EzSQL for your database layer. But the rest you'll have to create.
Finally, you have two other strong options, neither of which I think you're going to like: Zope/Plone and .NET.
Frameworks continue to suck. Where's Benji Smith with a rant when you need one? ( http://discuss.joelonsoftware.com/default.asp?joel.3.219431.12 )
Tuesday, August 07, 2007
I have done years of research and written dozens of demo and real world applications (real/hello world) for several of the frameworks mentioned above in this post. Selecting a frame or even a language can have major implications to a projects success. Let me point out what I view to be the two most important factors when selecting a framework
1. The cost and availability of skilled developers, hands down. I assume this is not a one man show, and you have plans to expand. Which means you have to think about hiring and that means you have to think about the availability of talent. Larger pools of talent have more high quality developers in them.. its just the law of averages.
2. The incidental cost of this frame vs the cost of a competing frame divided by the value that the framework brings over said competing framework.
for example lets look at Ruby on rails. Rails = (sys requirements * scaling - law of scalable attrition ) + (cost of developer recruitment + developer's salary + ...)
you get the idea. Rails is actually expensive over the life of an application (given current conditions). Its also so new that I'm sure it will have a few unexpected "features" as it grows. It is cool though and I use it for quick scripty things all the time.
Personally I think Qcodo is a really great option for small - medium web development projects. while it generates 8 files you only need ever worry about 1. The rest you can make hidden and forget they exist. Code generation is a wonderful assistant in rapidly developing an application, generally bug free and less prone to human error. That said, the PHP trade offs are ever present, so at the end of the day this is a decision about the scope of the application.
The best general framework in my experience is at this time (drum-roll)... Jboss-Seam!! but good luck finding skilled developers :). A good alternative is appfuse 2 (appfuse.org) which is code generator (mostly XML code) + Strts2 + Spring + Hibernate which offers scale, efficient system utilization , maintainable standards and a broad pool of skilled developers and ease of use on a multitude of platforms.
The fact that these technologies scale really well seems like an added bonus. Trust me on this one... if you ever need to scale fast... You WILL wish it was a primary concern when you started the project. That regret usually hits you right before you start the process all over with refactoring and <gulp> migration.
Above all remember. Sacrificing maintainability should happen only when your back is firmly against the wall.
Friday, August 10, 2007
I'm learning towards Qcodo again. Although, I have some issues with issues with Qcodo, it does seem to do the job.
Aside from all the files: the product is still in development, and the documentation has fallen way behind. The community is very helpful, but it's a small community (about 1/20th the size of CakePHP, I think), and it's not that active.
I also don't feel entirely comfortable with a one man project. What if something happens to that one man? Or if he just finds something better to do?
IMO: if Qcodo had CodeIgnitor's documentation, and CakePHP's popularity: it would be exactly what I want. For now anyway.
Saturday, August 18, 2007
This topic is archived. No further replies will be accepted.Other recent topics
Powered by FogBugz