Joe Gregorio has an awesome post detailing the work needed to create a Web framework with some very nice conventions.
They key point of adding 'conventions' is to take a load off the user. You need to actually remove two kinds of load, cognitive and manual. Cognitive load is the number of concepts you need to hold in your head. The fewer the number of concepts, and the more uniformly they are applied, the easier the system will be to use. Manual load is just the amount of manual stuff, like typing, that you need to do. Why should I have to manually create a directory structure when a computer is capable of doing that?
I think this is a great blueprint for any investigation one could do in building something new for the Web, no matter the language. Much has been said about frameworks like Rails and Django but they are not the end of development or at least they shouldn't be looked at that way. There is always room for innovation and improvement, for new and different ideas to take hold. Look at the attention Seaside is getting for an example of that.
What Joe has done is show the way any language can building something with constraints. I think you could easily use this post as a way of improving your skills in the language of your choice.
Posted by Josh at May 26, 2007 08:50 AM