About

Welcome to Panela, Matt Harrison's take on mostly Open Source, Linux, Python, innovation in those areas, other buzzwords and Dick Proenneke. It comes complete with the illustrations as needed. Note the opinions expressed here are merely my opinions and not the opinions of my employer.

about Matt

Calendar

««Jul 2009»»
SMTWTFS
    1234
567891011
12131415161718
19202122232425
262728293031

Mailing List

My RSS Feeds








Python web framework shootout, take 3. Petitioning Guido (Google) to choose their framework

posted 2006.01.27 Fri
A year ago I heard Guido say that he wasn't much interested in web frameworks, but apparently "after years of resistance" he's had a change of heart.  Sounds like he's going through what every python programmer who wants to deliver web apps goes through.  I like the fact that he want's web server independence.  That is something that will benefit all python web programmers.  (3 cheers for WSGI and Paste).

A few more of my thoughts reading this post and the responses:
  • Google hasn't standardized on any python framework (though python is one of 3 official google languages)
  • "Knowing myself, I'd happily go off and build my own web framework at this point".  Is that the first thing that pops into any python programmers head whenever they run accross something?  Hence the abundance of choices for web programming.  I guess we can blame Guido for making it too easy to build stuff in python ;)
  • Guido is pragmatic.  He is looking at the competition, ie ROR.
  • Guido is more pragmatic.  He looks at more python choices before going off and writing his own.
  • Guido is very pragmatic.  He asks the community for their recommendations, realizing that many of these people have given this a lot more thought than he has.
  • Lots of framework developers want Guido (or Google) to use their framework.
Note this is all good stuff.  As someone who is also currently evaluating web programming frameworks, I find this very useful.  I guess my pie in the sky dream is wsgi compliance.  Then everyone can have their cake, and I can eat all of it.  (Or at least if you wrote something for twisted, but I'm using cherrypy, or webpy or myghty or quixote, or zope or django or turbogears or ... or ... or ... I can still use your stuff too).

tags:                          

links: digg this    del.icio.us    reddit




1. Ben Bangert left...
2006.01.27 Fri 12:43 pm :: http://www.groovie.org/

You want WSGI compliance? Try Pylons. It's fully built for 100% WSGI-ness (whatever the heck that means).

We're fully utilizing aspects of Paste, configuring middleware in an easy fashion, and making it easy to take a Pylons webapp and run it in a totally different framework if you want. Or you can run other WSGI compatible webapps in Pylons. Choice and re-usability!

Pylons now supports the template plug-in stuff TurboGears started, so you can use any of the template languages as well.

So, what you want already exists. :) As more people see the power it brings, they can either get with it, or lose out to the features and re-use the rest of us gain from WSGI. I consider it win-win for all of us, whether you use Pylons or not, or CherryPy, etc. Pylons makes configuring middleware and WSGI a breeze, I hope other frameworks use it as inspiration on how middleware can be very usable and easy to get into.

It's about time we all get to eat our cake. :)


2. Adrian Holovaty left...
2006.01.27 Fri 1:00 pm :: http://www.holovaty.com/

Django's fully WSGI compliant as well, and production sites have been running it in the Real World for years. It's not a volatile, currently-Subversion-only thought experiment like Pylons. :)


3. Ben Bangert left...
2006.01.27 Fri 1:26 pm :: http://www.groovie.org/

Sigh, already people are running around like the Java bigots did to the Rails people. Yelling, "it won't scale!", "it has no real-world backing!", etc.

It's very sad that we have this in the Python world too. Ironic that Adrian says its subversion-only like its a bad thing, as Django itself was subversion-only for many months before a release. With several breakage's in backwards compatibility along the way.

Django is a solid web framework, I won't deny that. Pylons as a super-set of Myghty is very solid, and used in the real world on real sites. There is no reason for snide remarks to try and win users, let them choose on their own, and at least do some homework if you're going to insult other frameworks.

As you like CherryPy, I will also mention a new project called RhubarbTart, which is a simple WSGI framework designed as a CherryPy alternative. It's meant to get you the same feature set as CherryPy, with more WSGI compatibility now, instead of waiting for CP3.


4. mike bayer left...
2006.01.27 Fri 1:26 pm

hey, cold fusion has been running in the Real World even longer than Django. why not use that ?


5. michele left...
2006.01.27 Fri 2:29 pm

(No, again?)

I agree with Ben (as I've already said on jacobian.org), it's really sad that djangoist are always claiming (on every blog I could see) that their framework is better than another one for whatever reason.

I can't see any point on this, that's not a good attitude for python, I thought these things only happened on rails/java...

It's so difficult to just point out the strengths of your framework without bashing the others? just take a look at Ben first comment if you need a good example of how you should write something.

Let people decide what's best for their needs.


6. elazutkin left...
2006.01.27 Fri 11:05 pm :: http://lazutkin.com/blog/

I don't understand what is wrong with evangelizing and criticizing Python frameworks. In doing so you have to compare alternatives, otherwise it's just a hot air. "Truth is born of arguments". (c) Socrates (?)

I don't know what your expect of Pythonistas. One alternative is to declare that every piece of code is equal and stop living because everything is written already. Another one is to go around whining "My framework is crap. I write crap. Every other framework is way better." Do you like any of them?

Let's hear more educated arguments, constructive criticism, and enlightened evangelism of Python frameworks.


7. Stefane Fermigier left...
2006.01.28 Sat 5:01 am :: http://blogs.nuxeo.com/

Check my blog entry on the Python web (mega)frameworks and their common components. Hope that helps clarify some points.


8. Matt left...
2006.01.28 Sat 10:10 pm

Ben- I'm already using Pylons. (We've been emailing each other about it this past week...)

Adrian- As I've noted in past entries I think Django is a pretty slick framework. The NIH syndrome causes me to be a little relunctant to adopt it though. Note, that doesn't mean Django isn't good, it just seems like TG has a bigger community (of users and developers) by taking advantage of pre-existing components.

Elazutkin- I hope this post doesn't sound like I'm complaining too much. Quite the contrary, I find it fascinating. Because I too am also evaluating web frameworks right now. I'm interested to see what Guido brings to the table here....

Stefane - You graph is nice. But it is still missing quite a few frameworks. One of the responders in Guido's blog posted a list of all the frameworks that were mentioned. It had like a dozen or so frameworks... But keeping all of those on your chart will keep you busy ;)


9. thanos left...
2006.01.30 Mon 2:17 pm :: http://sourceforge.net/users/thanos/

Is anybody looking at or using pso.

http://sourceforge.net/projects/pso/

It's still the production framework of European Parliament, NYSE and the fixed income giant ICAP.


10. Yarik left...
2006.01.30 Mon 2:28 pm

I used PSO and its great.

I had to do a few projects at Sector Inc and SIAC and Lehman. As usual pressure is high and TTM is critical.

PSO saved the day.

What i liked:

short learning curve pythonesque philosohy strong OO principles easy to integrate with existing infrastructure


11. Guido van Rossum left...
2006.01.31 Tue 12:03 am

Why criticize Django for claiming to be the best? Nobody has denied it, and yet it's criticized as if it were somehow unethical. Frankly, the problem is that there are too many Python web frameworks and wannabees, and if we don't start some kind of shootout, however subjective, we'll never get to market dominance of a few good ones. I'm not saying Django is already the winner -- but we are looking for a winner (or, more likely, a small set of winners) so future developers looking for a Pythonic solution only have to compare a small number of options, all mature, feature-rich, well-supported etc., rather than having to sift through 80+ half-baked solutions.


12. Matt left...
2006.01.31 Tue 1:11 am

Guido - I'm all in favor of a shootout. How about you set up a boxing ring at Pycon? ;) Web Framework Deathmatch 2006!

Barring the unlikely possibility that there are small set of victors from the fight (quite frankly I think most people would only sustain "a flesh wound" or keep yelling "I'm not dead yet"), I think WSGI/Paste compliance is probably the next best thing.

re: Django, like I said previously, I think it is pretty slick. My only concern is that with a limited number of developers working on a pretty big feature set (ORM to templating and everything in between), some things will be lacking somewhat. Whereas if you use pre-existing best of breed technologies you have the benefit of the previous user base. Django doesn't have that benefit, and maybe they don't need it.... But why are the TG, Pylons, web.py people not using Django then and rolling their own???


13. elazutkin left...
2006.01.31 Tue 7:06 pm :: http://lazutkin.com/blog/

Re: But why are the TG, Pylons, web.py people not using Django then and rolling their own???

There are many possible reasons for not using a Perfectly Good Framework:

1) I don't believe in "one size fits all" frameworks. A lot of people share this opinion. Maybe the framework is not suitable for what you do because of perfectly valid reasons.

2) DIY and NIH syndromes: http://lazutkin.com/blog/2005/dec/16/diy-and-nih-syndr omes/ (saved myself some typing). They can have reasonable valid explanations, but in many cases they don't.

3) Educational value. People tinker to understand stuff, which is good. There are two dark sides of it:

3a) People see deficiencies in the framework, and (quite naturally) thinking they can do better they set out to build The Next Big Thing doing it The Right Way just to understand in the middle of the road (if they are lucky) that they didn't fix the problems, but introduced quite a few on their own.

3b) The framework was misunderstood, and people didn't "get it". It happens quite often. In some cases it is the framework's fault (e.g., lack of proper documentation, poor tutorials). Or maybe underlying concepts are too radical. In some cases people are not ready to understand. And they set out on their own.


14. Ian Holsman left...
2006.01.31 Tue 10:29 pm :: http://feh.holsman.net

Guido, you don't win a 'war' with a shoot-out.

You win it by gaining complementors and increasing your network effect with them.

you can also win it with standardization and low switching costs. for django to win it needs to have a large amount of 'extras' that people want, *AND* it needs to be easy for people to convert their applications over to it.

if there was a standard python interface to template languages (or ORM's) for which django could implement providers it would be a great start to that.


15. michele left...
2006.02.02 Thu 6:46 am

"Why criticize Django for claiming to be the best? Nobody has denied it, and yet it's criticized as if it were somehow unethical."

There is nothing wrong in claiming to be the best, even more if you have good reasons to do so (and django clearly has good reasons because it's really excellent and well tested).

What I don't like (personally) is when someone goes past this line and wants to look like the best at any cost even by bashing the work done by other people.

Quoting Adrian:

"Django's fully WSGI compliant as well, and production sites have been running it in the Real World for years."

Perfect.

"It's not a volatile, currently-Subversion-only thought experiment like Pylons. :)"

Passed the good sense line.

That's all, it's just a matter of respecting the work (hard or not, good or not) other people have put on their own projects.

I was not talking about django.

I was just talking about respect because that's the way I've been educated. :-)


16. Paul Boddie left...
2006.02.02 Thu 8:51 am

I'm sure a shootout (with obligatory rabid blog advocacy) is one way to find some winners, but it isn't necessarily going to move standardisation any further or make people very willing to cooperate with each other. The "choose me!" attitude articulated moderately well by someone in their blog, combined with the "take all or nothing" approach now rampant in the community means that developers still have to make seriously binding decisions up front, that the level of component re-use between their development jobs may be seriously limited, and that newcomers still see no clear and widespread way of performing simple or routine Web programming tasks.

So far, we've seen some conservative standardisation: WSGI. Had Python experienced similar levels of standardisation in, for example, database access then I doubt that Python would see even the arguably limited usage in that domain that it has today. Sure, database access is a well-understood phenomenon, but unless people can work the same magic in the Web space, people will still be confused about where to start, what to choose, what to write, and whether their code has any lasting value. And even if something like Django is crowned as the chosen top-to-bottom way for Python Web development, expect it to live a Zope-like existence with a separate conference track and its adherents claiming how outsiders don't understand it while the Python community has the same arguments again in five years time.


17. Ben Bangert left...
2006.02.02 Thu 1:33 pm :: http://www.groovie.org/

As Eugene points out, there's very good and valid reasons for having various framework options and using them.

Eugene's second reason he cited: > 2) DIY and NIH syndromes

Is actually why I was initially turned off of Django. Django came into the Python web world having the largest case of NIH/DIY seen. In every single layer of framework, it shunned existing projects. All the progress, testing, and experience other layers (ORM's, etc.) had was turned down. Even basic standard terminology was shunned (MVC? hah, lets make our own terms and meanings).

This is why I originally was quite repulsed by Django, not on technical grounds at all, just at the amount of good hard work they completely ignored. I have a very very hard time believing that every single thing out there was completely non re-usable.

Now that Django appears to be headed towards greater re-usability, like splitting off the templates they use, I'm rather interested in parts of it and will happily work with Django developers to help increase adoption of Django templates (I think they're great for some uses). The code is solid, it works, and I wouldn't think of debating otherwise.

Does it do what you want? That is debatable. Do you want to easily plug-in new components people are writing in WSGI? Do you want to quickly add in Ian Bickings Commentary middleware? Or maybe the very cool exception catching stuff? Or perhaps someone comes out with a super high-end session layer, wouldn't you want to use that? What if you need something far surpassing Django's ORM? Something like SQLAlchemy?

With a loosely coupled framework, that lets you swap in/out any of these layers, thats the kind of freedom you get. It's not a, "everyone must write providers and adapt to us" mentality, its a "we will write our stuff to make re-usability easy" theme.

Before WSGI, this new style of competition couldn't exist. This new competition is not at the framework level at all. Many of these arguments will be moot as WSGI changes how competition in the Python web world functions.

Perhaps the best way to compare the change, is to consider the Python standard library. Imagine if to use any part of it, you were bound to committing to the entire thing. Other people come along, and re-implement every single part of it, and compete against your library.

Then, someone figures out how to split off re-usable packages from this massive library.... but the people banging each other with their large libraries haven't quite noticed that people are now re-using parts of each one, the parts they want to use, in the way that works best for them.

WSGI allows us to compete on these parts, rather than the whole. It allows us to quickly utilize the absolute best technology that is developed, and slot it in easily. Maximum choice, maximum flexibility, no lock-in. This isn't a pipe-dream, its happening now, hopefully Guido will notice.


18. Gregory Petrosyan left...
2006.02.02 Thu 2:32 pm

michele:

What I don't like (personally) is when someone goes past this line and wants to look like the best at any cost even by bashing the work done by other people. Quoting Adrian: "It's not a volatile, currently-Subversion-only thought experiment like Pylons. :)" Passed the good sense line. That's all, it's just a matter of respecting the work (hard or not, good or not) other people have put on their own projects.

+1

Adrian, it's _really_ bad to say something like this about other's work. And this phrase is not the only one: it seems to me that it is your position to every competing project. Do you think that you'll get something good from this position?.. I hope you will not.

As for me, I will _never_ use django because of it's author.


19. mike left...
2006.02.02 Thu 2:49 pm

gregory:

to be fair, dont underestimate the emotional impact it has when Guido blogs/comments negatively about your work. when the BDFL, his position at Google by far the most powerful place to put Python web development on the map by a factor of about 1000, is out looking to marginalize everything he feels is "half-baked", its pretty threatening. reactions will be hotter, in general.


20. Gregory Petrosyan left...
2006.02.02 Thu 3:11 pm

mike:

Kevin Dangoor and others seem to be _much_ more polite. Author of every Python web framework wants his soft to be chosen, but only Adrian is using something snide to get effect. I don't know what others think about it (or is it reckoned normal?), but things like this mean pretty much to me.

Friend in need is a friend indeed, really?


21. mike left...
2006.02.02 Thu 3:24 pm

gregory:

well i was nasty too (though its not a habitual thing, i hope), that's where i was coming from, at least


22. Fredrik left...
2006.02.02 Thu 3:54 pm :: http://effbot.org

"As for me, I will _never_ use django because of it's author."

And I'm sure others (including me) won't touch Myghty after reading Mike's childish posts over at Artima. The "I'm the only one doing real-world stuff and you'll all be sorry when you reach my level of superiority" marketing approach doesn't work, Mike. Crying doesn't work, either. Grow up.

Frankly, the whole "let's stop progress so we can catch up" schtick from the guys who didn't even make it to the station before the train left (this includes most of the "pick me, pick me" components) is beginning to feel a bit old. You're hurting Python. Please stop.


23. mike left...
2006.02.02 Thu 4:10 pm

hey frederik -

im just being honest, and youve been acting as childish as anyone else with your latest blog post calling others a bunch of "losers".... by saying you support Adrian but not me due to childish behavior is pure hypocrisy. youre just plugging your framework of choice by ad-hominem attacks on the competition's developers....and I have not and would not ever stoop that low.


24. Ben Bangert left...
2006.02.02 Thu 4:22 pm :: http://www.groovie.org/

These type of remarks are hurting Python. Seriously, how can anyone think such things like,

"Frankly, some of the "competitors" sounds like a bunch of losers who wasn't even at the station when the train left. Sure, you may have a nice platform to play with, but the rest of us has already arrived at the destination." -- Fredrik

are going to help?

Note that none of this is real analysis and critique based on actually examining the code and "product". Django's framework doesn't fit my needs, its templates do. I have no beef with Django (the code), but this attitude that gregory notes makes it hard to try and collaborate. I'm inclined to agree with Mike though, because generally I've found Adrian to be quite open to collaboration when I've talked with him.

The only end result with discussions along this line, are groups of Python web developers permanently divided due to flame wars over who should be "the one"; they will never work together because of personal issues with the other developers. The way this debate is being conducted will not unite, will not result in "the one true framework" being chosen, and won't help any of the frameworks make any progress.


25. Fredrik left...
2006.02.03 Fri 1:10 am :: http://effbot.org

"Note that none of this is real analysis and critique based on actually examining the code and "product"."

You're making lots of assumptions, most of which are simply not true.

"The way this debate is being conducted will not unite, will not result in "the one true framework" being chosen"

This is not about the one true framework, and it's not about the current crop of web component developers, it's about Python. And it's about how technologies succeed in the marketplace.

(do you seriously think Python would have gone anywhere if it had been available in 80+ incomplete versions from the start, any python question would result in dozens of "pick me, pick me" messages, and some of the developers would call you names if you happened to pick one that they didn't write? "your choice of CPython is not based on any real analysis." "you'll be sorry for not chosing KPython; you don't understand your own requirements, and you will fail in the real world." "people who say that BPython hasn't got enough documentation deserve to be stabbed in the face." "how dare you work on QPython.")

"won't help any of the frameworks make any progress."

It will.


26. kaishaku.org left...
2006.02.03 Fri 2:40 pm

Fredrik, I read all the artima posts, and the posts referenced here and I see where Mike is coming from. Your "wont touch Myghty" comments hurt and I do not think they are necessary. You did the same thing on artima commenting about the "advocacy" of Myghty and Pylons. Fredrik, I love your work, your contributions and your humor, that is why your comments bother me. I think you are making this spat with Mike Bayer much too personal and am saddened to see you attempt to take that out on his creations.

P.S. I use Fredriks creations every day. I've never used any of Mike Bayers... yet.


27. David S. left...
2006.02.04 Sat 5:40 pm

Until now I thought that my 2-year old was too young to touch a computer. He is clearly ready to participate with his peers in this discussion.


28. elazutkin left...
2006.02.05 Sun 1:20 am :: http://lazutkin.com/blog/

Today I decided to re-read some comments and was stunned to learn that this discussion turned into some childish bickering.

1) Please stop blowing Adrian's remark out of proportions. It was a bad joke, I didn't like it, but I understand his position well. If you ever in your life competed seriously against vaporware (in different forms of completeness), you will understand his emotions too. I am not talking about Pylons (never tried it). I am talking about 80% of "80+ Python web frameworks" (tried some of them) as was mentioned by Guido. It is a real torture to watch people comparing working features of your software against untested stuff, which "almost works", or "will be here any moment now".

2) "I will _never_ use django because of it's author." :D It should be just opposite: "I will always use Django filing a lot of bugs, proving him wrong, and driving him crazy!" :D

Seriously. It was never a one-man project. It never belonged to Adrian personally. There is a big community behind Django --- just take a look at the list of contributors.

One of the surest signs of good project is a community of developers and users --- people, who "joined" because they liked it, not because "our VP thinks so", or "my roommate wrote it". I am extremely skeptical of "the best hidden secret" frameworks --- if it exists for some time, and it is good, it should be used and praised by a lot of people by now.

IIRC, Ben Bangert compared the size of TG's and Django's communities. The point is these communities are big and vibrant. How big are communities of other "80+ Python web frameworks"? Of course, the mere presence of big community doesn't guarantee quality of the product, but people test it, share ideas, submit bugs, and propose enhancements. The more such people you have, the better your product is. Obviously it is not a linear function, but it grows monotonously. :-)

Anyway if somebody thinks that there is "the" developer behind Django, he is wrong. Django's community is behind Django, which is not the case for many of "80+ Python web frameworks". If you pissed at one guy in the community (with any kind of standing), don't project your anger on other members of that community. It is not productive. Join that community and change it.

3) Regarding DIY and NIH in Django. Django developers answered natural questions why they did a lot of stuff on their own. In my opinion they had good reasons when they started in 2003. Since Django was open-sourced, all options are debated openly. I don't recall Adrian going against wishes of majority. People use Django with different templating solutions even now. Some people don't use Django's ORM (losing Django's Admin in the process). I know guys, who were tinkering with replacing/augmenting Django's URL Dispatcher. Recently Django moved to use Dojo in the upcoming version in spite of the fact that Django already has its own JavaScript library for the Admin. Believe me, Django community spent a lot of time discussing this topic. And the proverbial door is still open for other libraries as well.

4) Django has a lot of legacy code. Renaming everything conforming to MVC terminology doesn't appear practical. Mostly it is useful for theoretical comparison. Now it's a choice between alienating current users, who got accustomed to Django's naming, or pleasing abstract purists, who did some "drive-by" criticism.

Thanks,

Eugene

PS: Matt, excuse me for (ab)using your blog comments. I'll try to do it as rare as possible.


29. Adrian Holovaty left...
2006.02.11 Sat 5:58 pm :: http://www.holovaty.com/

Whoa, just caught up on this comment thread, and I wanted to apologize for my remark. I certainly didn't mean to cause offense, although I now realize my comment was offensive. Thanks for calling me on it.

Competition is good!