This is probably obvious for the people that uses Repoze or Pylons, or early adopters in the Plone world, but from a Plone or a Zope developer perspective, you could live without it until now.
Now WSGI is everywhere.
I remember when Martijn Faassen brought the idea in 2006, of hooking Grok and Zope 3 into the WSGI. Maybe someone else talked about it before but that was the first time I could picture what WSGI could bring.
Now with the work done by people like:
- The repoze team, that made it easier to run a Plone-based application in WSGI
- The Paste Script / Paste Deploy team, that provided a simple way to describe a WSGI chain
And major WSGI middlewares like :
- repoze.who which allows you to deal with authentication separately
- Deliverance, which let you theme any application and let this application focus on delivering a content
- Things like Beaker, which let you use memcached for instance, to store session data and cache arbitrary things
From a CTO point of view, a WSGI environment brings me the ability to think about a web application and build it without having to stick into one framework and try to bend all technologies inside it.
For instance:
- I can write a Plone application and use Beaker to deal with sessions, without having to wrap Memcached into a custom plone package.
- I can ask a graphic designer to work on a CSS and a layout without having to do it into Plone. It’s not that Plone design tools are bad, but the learning curve of writing a rule file in Deliverance and apply it to any piece of application makes the designer more productive than becoming a specialist of one skinning tool.
- If my customer use moinmoin as a Wiki, I can put it into my Plone site transparently by defining a composite section in my Paste configuraton file.
- …
You could do all the mentioned thing without WSGI, just by importing the packages and/or dealing with proxies at Apache level. But that is not the point.
The point is that WSGI brought the idea of making all web frameworks and libraries interact together to build one web application.
It is not the silver bullet of course, but my gut feeling is that this will create some kind of reunification in Python Web development communities: people are starting to look at a wider range of package, beyond the framework they use everyday.



Nice article, Tarek. Obviously I’m biased in favor of this model. I like the idea of a future where I can return to the Python community, getting things of value and giving things of value.
For example, yesterday I worked on getting ToscaWidgets into my project to do forms (generation, marshalling, validation). TW is pretty popular in other frameworks. I read the documentation, got something basic working, then needed some help on doing custom forms and custom fields.
I went to the #repoze channel, found (Pylons) and another person that knew all about it. They got me working in 10 minutes.
It felt neat: I was collaborating with someone outside Zope/Plone, which I haven’t done in a long time. I was showing respect towards them by saying that their code was valuable.
I know that you are bigger in the Python community than me, so I’m sure you understand what I’m trying to say.
Comment by Paul Everitt — September 19, 2008 @ 12:08 pm |
Hi Tarek. I deployed repoze.plone and in the process got acquainted with zc.buildout. I found the deployment process pretty cool indeed. We are currently pondering web mapping server and CMS/DMStechnologies. I found Tres’ (or whoever did it) presentation at http://static.repoze.org/DZUG2008-Turplango.pdf pretty compelling in terms of making various components of a Python web system interact with one another.
The team of programmers here is more versed in Java and PHP than Python, so choices for CMS/DMS and web mapping servers are biased towards Alfresco and GeoServer, respectively. Those are sure great pieces of software but I still think there’s something quite interesting to do with Python WSGI applications. There are quite a few Pythonweb mapping/geodata servers (FeatureServer, MapFishServer, GeoDjango, etc.) and of course I would tend to use Plone as a CMS (DMS). I would very much like to use the Python stack now that it is so much more “pluggable”, but it may well be that our overall web application solution involves pieces of the Java and Python world. Have you heard of applications that do things like that. How do Java or PHP apps interact with WSGI ? Best practices ?
Cheers,
Yves Moisan
Comment by Yves Moisan — September 19, 2008 @ 6:05 pm |
@Paul: thanks. I know exactly what you mean, and this is going to be stronger in the future imho
@Yves: the WSGI approach allows you to merge Python, PHP or Java-based applications, since Paste can serve non-WSGI applications through proxies.
We are currently experimenting that, by using tools like Deliverance to skin several applications under the same website, and a middleware to provide a single authentication.
But I didn’t hear of any public project that does it yet. I do believe openplans guys have an heterogeneous environement but I am no sure.
I guess We will have more clues after the PloneConf, where Ian Bicking will present Deliverance.
Comment by Tarek Ziadé — September 24, 2008 @ 9:21 am |
[...] The WSGI era is here « Carpet Python – This is probably obvious for the people that uses Repoze or Pylons, or early adopters in the Plone world, but from a Plone or a Zope developer perspective, you could live without it until now. [...]
Pingback by Links for September 30th to October 1st | united diversity — October 1, 2008 @ 5:01 pm |