Fog Creek Software
Discussion Board

Your favorite tool to develop web apps?

So far, I found the following open-source solutions:
Plain PHP
OpenACS and Redhat's CCM

Which tools those of you experience web app developers have used and would recommend? Why? What added-value do we get by using frameworks like eg. Enhydra or Zope over languages like Perl or PHP?

Thx much

Frederic Faure
Monday, December 9, 2002

You forgot Cocoon.

Robert Chevallier
Monday, December 9, 2002

openACS is tops.

I have not used zope, but openacs provides you with the core you need, including authentication, very strong permissions, portals etc.

Look at dotlrn which is built on top of openACS.

Monday, December 9, 2002


It rocks cause the smart people in at Microsoft have already written a hell of a lot of code in the dot net framework to make my life easier.

Monday, December 9, 2002

I'm very fond of PHP, but I have to say ASP.NET beats it hands down in terms of architecture.

PHP has come a long way, but it still uses global functions for nearly all its functionality, rather than class libraries. For example, it would be a big improvement if all the database libraries were inherited from a common interface, so that switching databases would be simply a matter of changing the connect statement.


James Shields
Monday, December 9, 2002

Thx guys. I'd rather proprietary tools like ASP.Net and use light, open-source solutions instead.

BTW, does someone know of a good article that would explain _why_ we should use frameworks like ASP.Net, Zope, et al. instead of eg. PHP, and offer a list of pros & cons of the different frameworks available?

Frederic Faure
Monday, December 9, 2002

I can't think of any good framework articles offhand, but here are the reasons why I think it's worth using an established framework:

1. If you start from scratch, you'll wind up re-inventing at least a few services that a framework would provide.

2. Using an established framework means that when it's time to add more people to the team you can find developers who'll be familiar with the techniques and APIs that you're using. If your application's basic services are provided by homebrewed code, that'll never be the case.

3. Using an established framework means that there's a community of users out there who may have already solved some of the problems you'll encounter while building your application.

Note that none of these are worth the burden of using a framework that's overkill for your project or that doesn't really fit well with what you're trying to do.

Monday, December 9, 2002

Thx much Beth for the input. The reason I asked, is that after playing with Perl, PHP, Zope, and a bit of ASP.Net, I had a hard time picking one tool before rewriting a business app.

I guess the first, immediate benefit of a framework, is that it makes it easier to separate code and display, and also have access to a bunch of tools that are part of the framework. But then, experience PHP developers can probably build apps that neatly keep both separate.

Frederic Faure
Monday, December 9, 2002

Saying "Perl" is akin to saying "Java" rather than "Tomcat/Struts" or "Enhydra". There are a number of web application servers written in Perl [1] that make the task much simpler than writing everything yourself.

You already seem to have the "frameworks should be open source" bug, which is great. Not that you'd ever need to modify things yourself, but you can fairly easily tell how active a project is, look at the code for ugliness, etc.

Something else to look at: the availability of supporting libraries, both for common infrastructure  tasks (database, talking to LDAP, SOAP, etc.) and specific to that platform (user management, content management system, etc.).


Best of luck

Chris Winters
Monday, December 9, 2002

python, zope, mysql

fool for python
Monday, December 9, 2002

Indeed, I've been looking for Zope on and off, but so far, I haven't really understood how I can program like I do in eg. VB. Some people a Zope newbie should never start with DTML. I agree :-)

Frederic Faure
Monday, December 9, 2002

I'm sucked into Zope.

DTML is becoming simpler to deal with the more I get into it, but I'm adding Python now as well.  Its a treaclely learning curve though.

Simon Lucy
Monday, December 9, 2002

Thx Simon. What about Midgard? It's PHP-based, so could be simpler to use

Frederic Faure
Monday, December 9, 2002

I'm using Jakarta (Java/Struts/Tomcat/JSP/Servlet) on my current project, and it's fine.

I would say that the differences in an absolute sense between frameworks are very small compared to the difference between using a framework and 'rolling your own'.

The following advice is coloured by my own experience: I love to tinker with frameworks!

Nevertheless, I would also say that a good way to be productive is to resist the temptation to either improve the framework or work around any of its limitations.

Improving a framework is a project unto itself. Make up your mind whether you're setting out to contribute to the framework and using your current application as a demo, or setting out to build your current application and using the framework as a tool. Trying to do both could result in failure in both areas.

Also, frameworks carry baggage in the form of a preconcieved application architecture, look, and feel. For example, Struts actions are tightly coupled with pages, so it is hard/awkward  to implement an analogue to 'panes' in 'windows'.

If you work around your framework, you lose time developing workarounds and your application strays from the idioms and patterns well understood in your framework's community. So if you ever need help, your UseNet or Mailing List postings follow the follwing script:

Patient: "Doctor, it hurts when I try to ****"
Doctor: "Don't do that!"

Reginald Braithwaite-Lee

Reginald Braithwaite-Lee
Monday, December 9, 2002

Apache + mod_perl + HTML::Mason

Igor K.
Monday, December 9, 2002

I've managed never to get into PHP at all, I'm not sure why, perhaps its the name.  It sounds sort of medical.

Simon Lucy
Tuesday, December 10, 2002

If you're starting from scratch on your web-app, and you don't already web pages built yet, I would consider using something like XMLC (from Enhydra), and avoiding the whole page-scripting (JSP/ASP/etc.) fiasco that is web development on most projects.

The concept behind XMLC is (or was -- I heard rumours that this open-source project was dormant, although you can still fairly easily do something similar with an XML parser and the DOM) that you develop 'flat' HTML (or, preferably, XHTML) and then compile them into classes that can be manipulated externally from Java code.  XHTML and server code is kept completely separate -- no HTML inside your code, no code in your XHTML.  When display a page, you load the DOM for the page, which is the 'prototype' for the page, and then manipulate it (insert values, add rows to tables).  It works fairly well -- it's much easier to work with 'Web Designers' (who aren't coders) when using this model.

Tuesday, December 10, 2002

James wrote:
> For example, it would be a big improvement if all
> the database libraries were inherited from a
> common interface, so that switching databases
> would be simply a matter of changing the connect
> statement.

They do, if you use the PEAR library. E.g.
require_once "DB.php";
$result=$db->query("select ...");

Roland Kaufmann
Tuesday, December 10, 2002

C#/ASP.NET...coming soon to a Linux near you ;-)
December 9th, 2002 News:
"Many new features as well as plenty of bug fixes. Many new System.Data providers and a more mature System.Web (ASP.NET) which can now be hosted in any web server. A simple test web server to host has been released as well. "

Tuesday, December 10, 2002

Thx everyone again. Actually, I do keep an eye on the Mono and DotGNU projects to offer open-source solutions to build .Net apps, but since they're so young, I'd rather go for some more mature solutions.

Guess I'll take a closer look at Zope, Midgard, and Roxen :-)


Frederic Faure
Wednesday, December 11, 2002

*  Recent Topics

*  Fog Creek Home