If I made a language myself and made a great framework for it (which Rails and Django both indeed are), chances are people would also be learning that language just for the framework. That's not the case with languages like Perl or Python, since they're already widespread enough that most beginning (or advancing) programmers have heard of them. When they hear of Ruby, they also hear of Rails, but Django is for instance not "the" way of writing Python code for the web (which I'm not saying Rails is, but considering the amount of available frameworks, it's pretty damn close).
I'd say Python has two to three of this type of web framework, Rails-scale: Django and TurboGears (you could count Zope too). Here I agree that PHP far from has a de facto framework, simply because none of them are of this quality that the other mentioned ones are.

Cody Lindley said on May 09, 2006

Well spoken Jonathan, action without knowledge is often called stupidity. Which is a little harsh to say I guess, but the point I take away from your post? Using a framework without understanding ”how is works” will propagate action without knowledge. And that is dangerous ground.

BTW - I hope to catch up with you at webvisions, if I make it.

Dustin Diaz said on May 09, 2006

They don't suck when you know them like the back of your hand. The JavaScript YUI libs have become my best friend. Not to mention I'll always spend an hour here and an hour there just picking apart the original source. It really is a life saver.

Jonathan Snook said on May 09, 2006

Thank you Dustin for emphasizing my point. :-)

Cody: I hope you can make it! I enjoyed chatting with you at SXSW.

Andrew Herron said on May 09, 2006

If people look solely to frameworks to do their job, they'll never know what the framework ISN'T doing.

You don't know if you don't know...

I have always been against frameworks simply because I felt it hindered me from learning the lanaguage, and in the process, I always felt I could just build my own for my own use.

Jeff Croft said on May 09, 2006

"If people look solely to frameworks to do their job, they'll never know what the framework ISN'T doing."

Unless, of course, they DO understand what the framework isn't doing.

My point is the same as Snook's: if you use a framework, try to understand how it works.

That having been said, I'm not sure there's any great need to understand the ins and outs of the framework to get started. One of the beautiful things about frameworks is the low barrier to entry and success. It's definitely a good idea to understand what all it's doing and what all it's not, but it's not important to understand this before you download the thing and try it out.

Johan said on May 10, 2006

A framework is this not merely a library of functions but since they are OO, they are called frameworks where functions can be prototyped, binded and extended.

Moofx and others adapted a larger framework (scriptalicious, protype) to a leight weight version. They did the work - that a developer would normally do - but this gave a ready-made solution for non-proogrammers.

Jesse Donat said on May 10, 2006

For my internship I had to do a project in CakePHP... lets just say I never finished it, and it got handed off to someone else....

Jesse Skinner said on May 19, 2006

I looked around for a good MVC "rapid development" framework for PHP. I was considering CakePHP but it seemed pretty complicated. Then, I found Code Igniter. It's totally fucking gorgeous.

So simple. So clean. There's hardly anything to learn. It keeps your code clean. It doesn't get in the way. It does everything you need it to and nothing you don't. It's like the framework everyone wants to build but isn't sure where to start.

Chris Arndt said on May 25, 2006

I strongly agree with your point of having to learn a framework. All these screencast that have become quite the fashion that claim to show you how to build application X in framework X in [insert number here] minutes are tottaly bogus, IMHO. Yes, they can quickly give you a feel of how code in the resp. framework looks like, but if you want to adapt the code just the tiniest bit and build, for example, a guestbook instead of a blog as in the tutorial, you have go to the documentation anyway and read up on the underlying concept. Often you have to go hunting for example solutions in Wikis or mailing list. If you would instead just rebuild the application as demonstrated in the tutorial, what would you learn? Almost nothing.

Jeff Croft said on May 25, 2006


I think you're really missing the point on the screencasts. Screencats aren't intended to teach you something. They're not trying to show how fast YOU can build something without learning anything. They're commercials. They're marketing. They're supposed to be a flashy, whiz-bangy ooh and ahh session. If you want a tutorial, read a tutorial. If you want documentation, read the documentation. Screencasts are neither. They're infomercials. That's it an that's all.

If you want to learn how to use an iPod, do you watch videos on Apple's website? Of course not.

Chris said on May 26, 2006

@Jeff Yes, you're right.

But I know at least one framework, where a screencast doubles as a tutorial (I think, you know, which one I mean).

And I don't think that open source software should go for the same blatant advertising lies as proprietary software. Frameworks help you A LOT to get you up and running faster, but they cannot do magic. If you want to get anything serious done, you'll have to spend time on learning them. As a developer I know that and I don't blame the framework for it. Pretending to newbies that building your personal buzzword-compliant web app is a piece of cake and only takes minutes, will only create disappointment in the end (and turn away users).

I don't think the comparison with consumer goods like iPods is valid, because this is a totally different target group. If the screencasts where targeted at the management, I could understand this kind of exaggeration, but for that, there is too much gobbledigook in them.

oneafrikan said on May 28, 2006

Completely agree with you regards the frameworks - I've tried the Zend Framework (long way to go still I think), Seagull (overkill, unless you want to do CM) and CakePHP (liked that the best, although don't like the way they've laid their filepaths out - doesn't make sense to me), and none of them have really hit the spot...

Barneto said on August 15, 2007

Good site! Thanks.credit card

Matt Kukowski said on November 02, 2008

I have built many web sites, that are complex membership based. http://freeadplanet.com is my most recent. Programmed in PHP. Frameworks are similar to adding complexity over complexity, while trying to abstract alittle.

But, any good language, will already have the abstract built into the language.

Example: Getting the contents from a source, be it local file or from a URL, in PHP


Now, what more do you need? Do I need a PHP framework for this? No...

Sure there are some things you need to abstract away, but then this becomes a collection of Class and or Function Libraries. No framework is needed.

Example: Writting a DB class to handle MySQL or Postgre can easily be done by writing a simple PHP Class. Many are available on the Internet, than just require() the class php file. No framework needed.

Frameworks tend to become bloated. And as previous people have mentioned, you end up learning the in and out's of the framework, rather than the language itself.

So, my point is this. If a language you are using does not have the right functions and extentions to get the job done, and requires a framework, than the language is probably lacking and should not be used.

What is worse, is trying to make a framework for a language that does not need a framework in the first place!

Frameworks add massive overhead as well. Not nearly effecient as using the natural API's that come with the language. Like PHP or Python for example.

Lastly, does one want to put on their resume a Django or CakePHP programmer? Or a Python or PHP programmer? I think the latter is more sane.

Sorry, comments are closed for this post. If you have any further questions or comments, feel free to send them to me directly.