I admit that I have not actually posted any of the comparisons of web development as was mentioned in my previous two posts. I apologize for this, but I have come up with what I find to be a reasonable means to actually compare them.

What better way is there for actually comparing the frameworks than to actually build a project in it? The problem with this is finding the time to actually do it. I figure a good place to start is to actually lay out the plan.

The plan for testing frameworks is to build a small web app using several popular frameworks (though by no means exhaustive):

I don’t promise to actually use them in that order; that’s just part of what I was thinking. There’s also odd ones like Turbinado which is written in Haskell which is a purely functional language as well as having some pretty cool other features which I would like to look at even in its reasonably young state. If you have any others that you think should be looked at, I’m happy to consider them. (Notably not mentioned is anything written in java. That’s due to my not seeing a lot of people who are flocking to java web development. In general, people write java web apps either because they really only know java and do not want to have to learn another language before learning web development (which is very reasonable), they just really love java, or the group they are working with already have a java site which they are then contributing to. If you think it is worth investigating, I’m ok with it though not as a primary interest).

The actual project is supposed to help to show strengths and weaknesses to the frameworks. As such, I want a vaguely realistic project that is still small so I am not tied up in these for very long. That in and of itself creates a somewhat large problem that I want to talk to though won’t exactly demonstrate: how the frameworks work on large projects. Many webapps really are small overall. I’m not trying to say that’s a bad thing, but it is true. That said, many projects that might not be so public or conversely the ones that get very large can be seen as very large projects. I think both perspectives are important to observe though a large project is non trivial to devote my free time to for investigation so I will try to consider.

The project I want to propose will have an initial idea and then be updated twice. At every stage, I am going to try to develop it in generally the most naive and non-scaling way (that is still reasonable). This is to mainly evaluate how much effort will be needed to update and change the application.

The application is supposed to be a polling application (for whatever reason). We want to be able to make a poll that poses some question to uses and has a list of options. Users can select a single option and the results are displayed visually. No user accounts are needed and we’ll just use ip’s to stop multiple votes. We also want to have unit tests and validation on data.

We will then add the first update to add comments because obviously people have input that they want to give. We want simple threaded comments with a captcha and a bad-word filter (with unit tests and validation).

We now have too many users and comments for the admin to always be around to deal with everything. Our common users also are annoyed at having to enter a captcha all the time. In response, we will implement user accounts that need email validation and the concept of other administrators, moderators (just able to delete comments) and normal users who can vote and comment.

This is a fairly small application but not completely trivial. For each framework, I’m going to try to follow the “proper” way of making it. This means that I’m using the components that it ships with unless changing it would be relatively trivial and any installed updates/add ons are at most dropped in a directory rather than me having to modify too much generated code. That does mean that things such as PHP’s PEAR, Python’s easy_install, Ruby’s gems, and just adding dll’s for C# is all perfectly valid.

If you have any input about this project, please leave a comment. I would love to know if you think it’s a good idea, bad idea, is missing something or whatever your feed back is. Also, your own comments on any framework is very encouraged. I am not sure when this project will go through, but I hope to be generally done within the next month.