The Great Python Framework/Application Debate

by Jeremy Jones

Related link:

The more I interact with Kevin Dangoor by reading his blog posts, getting answers to my questions on the TG list, or reading his answers to others, the more I like this guy.

Kevin responded earlier today to Peter Hunt's post about Python winning the web. The gist of Peter's post was that we as a Python community are spending a lot of time trying to create the dominant web framework, but we're not going to win by doing so. We need to look at how we are already winning and focus on that, which is creating a number of not-neccesarily-connected, excellent applications. Peter's post was pretty mild (opinionated, obviously, but mild) and seemed to be an attempt at genuinely expressing his thoughts. +1 for Peter for taking a potentially controversial topic and handling it quite reasonably.

Kevin disagreed with Peter in the same manner that Peter began - opinionated, but quite rational. +1 for Kevin for responding as he did. Here's the funny thing, though. I've re-read Kevin's post and he never (other than quoting Peter) mentioned "winning the web". If I can extract an essence of the spirit of what Kevin replied with, this is it:

But, I like programming in Python. Lots of other people do, too. And I want to have a productive time programming in Python. So, there’s value in a framework like TurboGears.

I like this perspective. I always get the feeling from Kevin that he's focused on excellence. He doesn't seem to be out to "win" something. Here is a snippet from his blog post on What TurboGears is not:

If what you want is to pick and choose every piece of the application stack, then the web framework you want is CherryPy or, I guess, one of the other controller frameworks. If one tried to support everything in order to become the web framework “to rule them all”, you’d eventually end up with just Python (or some hideous layer on top of Python) and the current collection of fine components available for Python.

TurboGears is not going to go that route. Here are the overarching thoughts that go in to TurboGears’ evolution:

1. best-of-breed
2. one way to do it

He just seems to be focused on creating an excellent framework for his own use and for the good of the community. I'm pretty sure very little thought went into making TurboGears "better than Ruby on Rails". And I get the impression that's not a driving factor now.

Life isn't always about winning. I think Kevin gets that. I would rather be doing something excellent for the sake of excellence than to be on the "winning team". If I wanted to be on the "winning team", I'd probably be learning Ruby right now. But I believe that TurboGears is a truly excellent piece of work which I'm excited about using (and hopefully improving). Maybe one day, the excellence will speak for itself and people will be drawn en masse to TurboGears. But, then again, maybe not. And if not, that's OK with me. I've had a great time with it so far and expect to have a great time in the future.

So, is it wrong to want to evangelize and promote and market and try to gain a dominant share in the web framework space (or any other space)? I really don't think so. I just think that a proper perspective is helpful. If we have something worth sharing, let's share it. If we have something excellent, let's share even more so. And we can hope for wider adoption for the sake of excellence being spread. And we can even hope for wider adoption for the same of building a strong community because that will benefit us as individuals.

I guess what set off this post is that when I hear talk of "winning", I see the dividing lines being drawn and the religious battle beginning and the "us against them" attitudes rising. I don't like that. Not a bit. It's OK with me if not everyone uses the technology stack that I choose to use. They can produce excellence without my technology. A lot of it comes down to preference.

I don't want to accuse Peter of this politicized "wanting to win". I'm not sure that's his intent. I'm guessing he meant that we have something excellent in Python and has a desire for others to see it and use it for the sake of excellence. I think that's a great attitude. I'm with him if that's the case.

And I believe that if TurboGears continues as it has, it will continue to draw people to it, because it is excellent.


2006-01-05 15:42:07
Not winning but ...
Jeremy, I think you got it backwards. Kevin doesn't want to win for the sake of it, but he's in there to compete, which naturally implicits that at any given time there is one who is the best, and the others are good, too, but not as good as the best one.

The whole point that Kevin is trying to make is that if you introduced the concept of winning as in reaching the finish (hence the "one to rule them all" reference) then you discourage a lot of folks who might then believe, the race is already over so why start at all? He wants to keep the race going on, and that sounds like a very reasonable point of view.

2006-01-06 01:45:52
Sure, winning...
I think he just wants to be part of *a* winning team, because he (like most other IT folks I know) doesn't think that anyone will necessarily be *the* winning team.
2006-01-06 04:26:05
Not winning but ...
The great thing about blogging is that I have people like you responding and helping codify my own thoughts.

If that is Kevin's (or anyone else's) motivation, then they will get a resounding Amen from me. You've made me really consider the benefit of competition in open source. Aspiring to "be the best" is a noble goal. And competition with the goal of excellence is a noble goal. The thing that I was really discouraging and speaking against was competition for the sake of competition. In my old age (hee hee) I've really gotten sick of a lot of the (needless) division that I see in open source as well as other areas of life.

Here's what I was getting at: I'm sick of the "Foo" language folks looking at the "Bar" language folks and feeling a sense of disdain because of their "otherness". And then feeling the need to compete with them because they are different.

But, you are right. Competition is not bad. Trying to be the best is not bad. Actually, the reverse is true. It's good. Compete because you are better. Or because you think you can become better. In the end, excellence-driven competition will promote positive change for the entire community.

Thanks so much for your post.

2006-01-06 04:27:02
Sure, winning...
Again, a worthy goal. See my post to nickpicker.
2006-01-06 11:23:15
Not winning but ...
"Here's what I was getting at: I'm sick of the "Foo" language folks looking at the "Bar" language folks and feeling a sense of disdain because of their "otherness". And then feeling the need to compete with them because they are different."

People are tribal. Group cohesion is frequently cemented by defining an 'other' to exclude. This is human nature. Thankfully, as a species, we've (mostly) moved beyond trying to exterminate the 'other'.

In general, the main way group 'Foo' and group 'Bar' will cooperate will be by ganging up to oppose group 'Baz'. Hence, 'Dynamic languages are more agile', 'Java is the new Cobol', and so on.

2006-01-09 18:01:03
Room for Ruby and Python
As someone who prefers Ruby, I'm glad to see the back and forth between the two camps. The two languages have very similar capabilities, although there are some areas where each one has an advantage over the other. However, I think the biggest difference is a matter of style, and each language fits a different type of person the best.

I liked and used Python first. But later I discovered Ruby, and decided that I liked Ruby a little bit better. However, now there will be people who will enter the dynamic language world through Ruby on Rails, and some of them will then discover Python through something like Turbo Gears, and they will find that it better suits their needs and/or preferences. Finally, there will be some who start with Ruby or Python, and end up in Lisp, Smalltalk, or who knows what.

The software world is a big place, and there is room for a lot of different solutions. Some friendly competition can be healthy because we can learn things from the way the competition does things, and we are motivated to make our favorite technology better. In all of this, though, there is no need to get nasty with each other. Realize that people are different, and let them be that way. People need to have enough confidence in their own choices so that they don't have to coerce everyone else to think like themselves, or attack those who are different. Programming should be fun, lets enjoy it!