
Python Community in Anguish, Pain, Despair Over Web Server - blasdel
http://pwpwp.blogspot.com/2009/09/python-community-in-anguish-pain.html
======
almost
It just seems so bizarre that there's so much worry over a company releasing
some code. It's a good thing!

You can argue all you like about whether they made good technical decisions
but be angry that they released some code for free is just odd.

Sometimes people re-write already existing things, sometimes it's a good idea,
sometimes it's a bad idea, sometimes it seems like a good idea at the time.
Sometimes it works out quite well so it doesn't matter either way :p

~~~
andreyf
The misleading graph doesn't help their case, either - tests were run at
1,5,10,25,50,75, and 100. The graph mistakenly spaces them evenly apart. In
reality, twisted.web died after 50, while Tornado still worked @ 100.

~~~
axod
Also if you're planning to do any real Comet stuff, this is an extremely
small-scale test. Should try with a few thousand concurrent requests to gain
any real insight.

~~~
masklinn
[http://antoniocangiano.com/2009/09/13/benchmarking-
tornado-v...](http://antoniocangiano.com/2009/09/13/benchmarking-tornado-vs-
twisted-web-vs-tornado-on-twisted/)

2000 concurrent requests

~~~
andreyf
If I may reiterate, twisted.web died between 50 and 75, and that graph showing
1-100 was _very_ misleading.

------
keyist
Author takes one quote from Terry Jones and miraculously transforms it into
"anguish, pain, despair" from the Python community. From the other posts on
that blog I get that he's trying to be funny, but this one follows
TechCrunch's "trolling and creating drama for massive pageviews" style guide
so slavishly that any humor intended just falls flat imo.

It's ridiculous how every time new software is released we must turn its
position vis-a-vis existing similar software into some kind of soap opera.

Hey I know how we can make this even more dramatic. Async aside, Tornado is
also a web framework. How about we get the developers of Django, CherryPy,
TurboGears, etc to all castigate Friendfeed devs for not choosing their
framework and adding easy async support?

Just because some software has overlap with others doesn't mean we all have to
automatically pick sides. I love Twisted. I look forward to building something
with Tornado. I am eager to see dlsspy's efforts at interop between them come
to fruition.

At the end of the day, there is new, well-documented free software available
for Python. The rest is up to the community.

~~~
pwpwp
FWIW, I tried to write a satire by using only real quotes, and making nothing
up (because I find the whole affair completely ridiculous by itself.)

Judging by the comments left on the blog, I guess I failed.

~~~
tvon
HN isn't really into satire, unless it involves Erlang.

------
axod
The controversy surrounding this is just really funny.

I wrote my own comet webserver in Java to run Mibbit (Hopefully I'll open
source it one day soon - maybe when facebook acquire me lol). It's pretty
awesome IMHO, and happily handles thousands of concurrent users in a single
thread, doing thousands of http requests a second, on a medium size VPS
server.

Writing your own stuff makes perfect sense. Here's why I personally did it

* Comet is very important to a realtime app. I wanted to make sure I had the best server in the world for that.

* I wanted to learn the complete low level details so I could be sure that the protocol,systems,etc were best possible, and just so I know exactly what's going on under the hood. (Knowing the whole code base inside out means I can really heavily optimize)

* One of the worst situation you can ever be in IMHO, is trying to find a bug, which ends up being in some badly written 3rd party lib. If it's in your own code, it's far easier to find+fix.

* It's not that hard. It's just webserver networking etc code.

Yes there were other comet servers out there, but they all seemed pretty
'general purpose', overly complex, etc for what I wanted.

I think the take-away from the Tornado release isn't "Wow! There's a new web
framework here you should use it!". It should be "If it makes sense to
reinvent the wheel, you should totally reinvent the wheel."

The amount you learn in the process is invaluable in itself.

------
jacobian
I've spent the last two weeks at Python conferences in Argentina and Brazil,
have been following the news from DjangoCon, and like to think I've got a
pretty good pulse on the Python web community.

I'd hardly characterize the Python web community's attitude as "anguish, pain,
dispair." I see a lot more excitement, curiosity, and shiny-new-toy-syndrome;
I think most reasonable Pythonistas agree that Tornado is a bit net positive
to Python web development.

Those on the outside tend to mistake impassioned discussions for anger, but
those who've been in this community for some time know that on balance there's
a pretty strong collegial atmosphere. We compete, sure, but we're also friends
and the spirit's friendly. Nobody thinks they're the be-all and end-off of web
development; we all recognize our software is just yet another stepping stone
along the path towards something better.

------
cturner
I had a play with Tornado over the weekend. It's fabulous. The docs are easy
to follow, and they do a great job of walking through the things you need to
be thinking about. I like learning a framework by following exercises and
gradually memorising how to set up a basic app typing into an empty console
with no notes. I'm there with tornado already. The abstractions are nice.

Twisted is already cool, and I look forward to the polished version of the
Tornado-on-Twisted making it into the repository. I suspect docs modeled on
the current Tornado docs will make twisted a lot easier to learn than it
currently is.

------
dagw
The state of twisted today isn't that interesting. Without knowing when they
started on working on Tornado and what that state of twisted and its
documentation was at that point one cannot really comment on if it was a good
idea or not.

I know I've written code that years later looked like pointless reinventing of
wheels, but when I started writing the code there really wasn't anything else
that did what we needed. And once I had something working it was often easier
to maintain it than to port it to some other library.

------
mahmud
In the Common Lisp community, we accept the writing of one's own httpd as a
rite of passage. Don't fight it: RFC2616 is hard to resist.

~~~
aurumaeus
Mmm, my first real project in Scheme was actually an HTML parser, but the
spirit of it is the same. There's something enticing about an annoyingly
complex spec that lets a beautiful language like Lisp shine.

But yes, I'm sure that Twisted wasn't in the shape it needed to be when FF
started building this, and they've built up an alternative. That's never a bad
thing.

Otherwise, there'd just be Apache... no nginx, no lighttpd, no fun!

~~~
amackera
It would be really nice if somebody could write a breakdown of these
webservers for the uninitiated like myself. I'd like to know when to use which
tool.

~~~
mahmud
I started with a single hunchentoot instance running on SBCL on Win32 and I
still hack on it about 16 hours a day. I deploy on a 30-instance hunchentoot
farm with 4 lighttpds sittin on front of them.

Hunchentoot could either be a single-instance, one thread per request
simpleton, or, given its flexible and well thoughtout architecture, an httpd
development _framework_. The requests per second could also vary; the stock
configuration is about 80r/s, but I am squeezing well over 2kr/s out of it. I
have been tweaking it for the last 7 months or so and it just keeps getting
better.

------
far33d
You don't see django folks freaking out about how tornado rewrote URL routing
and wrote a new template engine (they even take some shots at django's
restrictions in templating). There is probably as much overlap with django as
there is with twisted, yet all the "controversy" is coming from the twisted
people.

What is wrong with choice?

~~~
mcella
Nothing is wrong!

As you said there is probably _more_ overlap with django than with twisted,
tornado is a full fledged framework that happens to a have (thanks god) a new
async web server, and I really like the self contained nature of tornado (and
the no twisted dependency), if you do want twisted there are orbited/cometd
already!

All this situation is getting pretty silly IMHO, opensource is about freedom
to choice, they evaluated twisted and decided it was not the right path,
everyone should accept this and get along. Before twisted there was async,
before django there was zope, before python there was another language, before
git there was svn, before svn there was cvs and so on... that's how opensource
works, competition is the path to better things and I LOVE THIS!

------
philjackson
Am I mis-reading that graph or is it the case that twisted.web handles half
the concurrent connections that tornado does /and/ more slowly? Is it possible
that twisted performing "almost as well" as tornado might be exaggerated?

~~~
javery
Agreed, Tornado seems to handle 100% more connections and at 50 connections
offers a 15% performance improvement.

------
tlrobinson
It's interesting how quickly people started talking about this as being a
"Facebook" thing vs. a "FriendFeed" thing.

------
wglb
I think this is a good thing, and it is a good thing seeing lots of energy
poured into each of these approaches.

I wonder if the Zen of python "There is only one-- and preferably only one
--obvious way to do it" might be influencing the community's feelings about
another web server in python.

------
fuzzyman
Bullsh*t.

