web.py never really worked well, so we ended up rewriting it again. The interesting thing was that Django still wasn't up to the task when we did that, mostly because it's templating engine was too slow. So we chose Pylons instead.
It should be noted that Django has since fixed that issue.
Was there one specific problem with web.py or multiple issues? Was there ever a write up about what you guys learned from trying web.py? Would be an interesting read.
Django templating is still pretty slow.... the last time I benchmarked it (maybe 6 months ago) it was a fairly large amount slower than Jinja2 (3-4x maybe?)
Yeah it should be noted that all of the referenced decisions we made around web frameworks in this thread predate django's 1.0 release. I think I was comparing pylons to django 0.96 iirc, and in 2005 when aaron wrote web.py, I don't think django was on anybody's radar (or at least it wasn't on ours).
The first Python web framework I used was Django. I'm really glad I came across it first because I was inexperienced at the time and it forced me to adopt a lot of good practices.
However, now that I'm more experienced, I can relate a little to what Aaron is saying here. Learning all of this boilerplate stuff is annoying! Recently, I started contributing to a friend's rails app and I found the process of learning how to use each separate little tool tiresome.
This is why I like Pyramid - it starts off dirt simple. Hello World is almost as short in Pyramid as it is in Flask. As you grow, you can start organizing and adding different things as you need them. It has absolutely 0 magic. I find Pyramid to be a happy medium between Flask's minimalism and Django's extensibility.
I think a lot of that is in the presentation of the tutorials and the documentation. There's a book on Oreilly called "Lightweight Django" that strips away all of the absolute non-essential cruft of Django and starts from scratch, slowly adding pieces from the framework as it goes along. It shows you why you need each piece and why it goes where it goes.
Django doesn't need the magic, it's just annoyingly presented that way.
I wonder. How popular is Pyramid? I ask because I found Pyramid to be quite intimidating the first time (I'm not an exprienced Python developer). It took me four attempts to finally 'get' it - the first three times giving up in frustration and leaving it alone for 2-3 months before trying again.
Now that I get it though, it seems like an interesting framework but not a productive one. I've only dabbled in Pyramid with my free time and have never built a serious project with it, but I can't imagine building anything large scale with it.
(I'm a .NET developer BTW, MVC is what I work with in my day job)
>The Lisp newsgroup, comp.lang.lisp, was upset about the switch that they’re currently planning to write a competitor to reddit in Lisp, to show how right they are or something.
That must have ended as a huge success, because as we all know the important thing behind a website is the backend language...
I recall reading a more scathing post from spez at one point about frustrations with web.py, but I don't seem to see it now. It may have been removed. In any case, Flask seems to be the inheritor of the "write webapps in Python" description.
web.py is still my go to for lightweight webapps. I won't start a big discourse on the pros and cons vs. other technologies, but I will say it is incredibly easy to setup and use.
Used Tornado, django and flask quite a bit, web.py only once. As others have mentioned, it didn't work that well, and the community around it is smaller than other frameworks. Again today, Django seems a bit cumbersome, Tornado works well but has a very low bus factor.
Pretty sure flask is currently the front runner in "python microframeworks".
We currently use web.py + gevent to run our API where I work. It's really easy to work with since it's so tiny and simple, and since we only need JSON in and out for now, it's perfectly sufficient.
Before web.py, we were on a scary Tornado implementation. The API was rewritten to web.py in a week with a minimal delta. We won't be on web.py forever, and gevent sometimes kicks up minor fusses, but I think web.py has given us a nice malleable form that helped us get out of a terrible place, and we can easily hop off once we decide where we want to be.
I've used CherryPy on a number of projects, and I really like it, but rarely see it mentioned in discussions of Python web programming. It's light and minimal, and seems equally deft for writing APIs as conventional web page driven apps. Flask is mentioned all the time, however. Does anyone have insight into the popularity of Flask vs. CherryPy?
I think you can leverage these criticisms at about 90% of the framework software out there written in just about any language. Most developers like to create complex, complicated software mainly to show off their "cleverness" without thinking through the implications for the people that have to use it. It's as if they think that by cramming in every design pattern they can think of and using many different libraries together for no perceptible reason makes the software better when they could've achieved the same thing much more simply and cleanly if they had put a little thought into it. Such over-engineering is equally a problem as the spaghetti code of programmers who don't know better.
I'm not too familiar with Django but with several other frameworks and I definitely feel like this applies to lots of them out there.
In my experience though, I've worked on teams with developers who criticize frameworks for those reasons, choose a minimal or no framework at all, and spend a ton of extra, unnecessary time reinventing a worse version of a framework they decided 'sucked' once they realize they need security, error handling, form processing, an ORM etc... Over-engineering is an epidemic.
One of the more simple litmus tests I use when evaluating a framework: Does it provide (and require you use) its own versions of data types already provided by the language (or the language's standard libraries)? If so, it's a big red flag. Not necessarily a reason to disqualify, but definitely cause to apply extra scrutiny.
The thought process is: If I have to spend precious development time converting all my std::strings to and from YourStrings, then I can bet that there is plenty more un-necessary cleverness and complexity waiting to bite me once your framework gets its claws into my code.
Just wondering (as someone who only uses/touches Python indirectly, through some projects that use it, but is not currently a 'Python developer' by any means); was this posted in response to some recent drama in the Django community, or as an argument against Lisp?
I'm just wondering why it seems this story is quickly getting upvoted on the front page of HN, when it seems there are no other frontpage stories remotely related to Django, Reddit, or Lisp?
[+] [-] jedberg|11 years ago|reply
It should be noted that Django has since fixed that issue.
[+] [-] swartkrans|11 years ago|reply
[+] [-] Igglyboo|11 years ago|reply
[+] [-] rdtsc|11 years ago|reply
http://webpy.org/
[+] [-] TylerE|11 years ago|reply
[+] [-] general_failure|11 years ago|reply
[+] [-] _stem|11 years ago|reply
A single-file web application in Django: https://github.com/mstepniowski/microdjango/blob/master/poll...
[+] [-] keysersosa|11 years ago|reply
Django has definitely come a long way!
[+] [-] INTPenis|11 years ago|reply
That still looks very complicated compared to most microframeworks I've used, including web.py.
And all that django-specific logic that needs to be in there makes it harder to read unless you're familiar with the django ecosystem.
[+] [-] temuze|11 years ago|reply
However, now that I'm more experienced, I can relate a little to what Aaron is saying here. Learning all of this boilerplate stuff is annoying! Recently, I started contributing to a friend's rails app and I found the process of learning how to use each separate little tool tiresome.
This is why I like Pyramid - it starts off dirt simple. Hello World is almost as short in Pyramid as it is in Flask. As you grow, you can start organizing and adding different things as you need them. It has absolutely 0 magic. I find Pyramid to be a happy medium between Flask's minimalism and Django's extensibility.
[+] [-] dangayle|11 years ago|reply
Django doesn't need the magic, it's just annoyingly presented that way.
[+] [-] Yuioup|11 years ago|reply
Now that I get it though, it seems like an interesting framework but not a productive one. I've only dabbled in Pyramid with my free time and have never built a serious project with it, but I can't imagine building anything large scale with it.
(I'm a .NET developer BTW, MVC is what I work with in my day job)
[+] [-] coldtea|11 years ago|reply
That must have ended as a huge success, because as we all know the important thing behind a website is the backend language...
[+] [-] Perceval|11 years ago|reply
[+] [-] mikepurvis|11 years ago|reply
I recall reading a more scathing post from spez at one point about frustrations with web.py, but I don't seem to see it now. It may have been removed. In any case, Flask seems to be the inheritor of the "write webapps in Python" description.
[+] [-] thearn4|11 years ago|reply
Flask definitely fills that role for me. It's very simple to get up and going with it, and deploys easily.
[+] [-] mox1|11 years ago|reply
The current github page is here: https://github.com/webpy/webpy
If you are looking to get up and running quickly, I would recommend forking this skeleton: https://github.com/jzellman/webpy-skeleton
Finally, the built in database framework is a bit simplistic. I like to pair this with Peewee (included in the webpy-skeleton).
[+] [-] euphemize|11 years ago|reply
Pretty sure flask is currently the front runner in "python microframeworks".
[+] [-] linuxydave|11 years ago|reply
[+] [-] closetnerd|11 years ago|reply
[+] [-] ocb|11 years ago|reply
[+] [-] tim333|11 years ago|reply
http://www.pyvideo.org/video/234/pycon-2009--keynote--reddit...
25m 40s
[+] [-] pshc|11 years ago|reply
Before web.py, we were on a scary Tornado implementation. The API was rewritten to web.py in a week with a minimal delta. We won't be on web.py forever, and gevent sometimes kicks up minor fusses, but I think web.py has given us a nice malleable form that helped us get out of a terrible place, and we can easily hop off once we decide where we want to be.
RIP aaronsw.
[+] [-] general_failure|11 years ago|reply
[+] [-] wcummings|11 years ago|reply
[+] [-] rpdillon|11 years ago|reply
[+] [-] gprasant|11 years ago|reply
[+] [-] keysersosa|11 years ago|reply
[+] [-] bensw|11 years ago|reply
[+] [-] alexis|11 years ago|reply
[+] [-] 83457|11 years ago|reply
[+] [-] andyzweb|11 years ago|reply
[+] [-] joesmo|11 years ago|reply
[+] [-] sbilstein|11 years ago|reply
In my experience though, I've worked on teams with developers who criticize frameworks for those reasons, choose a minimal or no framework at all, and spend a ton of extra, unnecessary time reinventing a worse version of a framework they decided 'sucked' once they realize they need security, error handling, form processing, an ORM etc... Over-engineering is an epidemic.
[+] [-] ryandrake|11 years ago|reply
The thought process is: If I have to spend precious development time converting all my std::strings to and from YourStrings, then I can bet that there is plenty more un-necessary cleverness and complexity waiting to bite me once your framework gets its claws into my code.
[+] [-] thathonkey|11 years ago|reply
[+] [-] wcummings|11 years ago|reply
[+] [-] orthecreedence|11 years ago|reply
[+] [-] keysersosa|11 years ago|reply
[+] [-] eudox|11 years ago|reply
Clack (https://github.com/fukamachi/clack)
[+] [-] elwell|11 years ago|reply
If you're using Clojure, ring + tomcat, etc...
[+] [-] geerlingguy|11 years ago|reply
I'm just wondering why it seems this story is quickly getting upvoted on the front page of HN, when it seems there are no other frontpage stories remotely related to Django, Reddit, or Lisp?
[+] [-] menriquez|11 years ago|reply
[deleted]