WSGI apps on IIS
The iiswsgi module implements a FastCGI to WSGI gateway that is compatible with IIS's variation of the FastCGI protocol. It also provides distutils commands for building, distributing and installing Microsoft Web Deploy (MSDeploy) packages through the Web Platform Installer (WebPI).
The goals of the code in iiswsgi are to do the following for deploying WSGI apps on IIS:
- make it open source as far as possible, right up to IIS
- be Pythonic as far as possible, right up to the MSDeploy packaging
- re-use our existing tool-chain for distributing packages
- share the maintenance burden for a WSGI on Windows story across the community
For the Plone project, it's always been simultaneously a necessity that we support a Windows deployment story and one of our biggest pain points. The Windows installers have always been very different from the other installers. They have had different layouts from our user and developer documentation and even from each other. They have never been maintained or supported by more than one entity, either a company or an individual, and as such have often and ultimately languished. And as for the poor individuals who have tackled the Windows installers, they have almost always burned out and can no longer provide any significant Windows support at all. This is not a healthy open source community dynamic. And yet there is wide consensus that it's not an option not to have a Windows deployment story.
My hope is that by generalizing the IIS deployment architecture as a WSGI server and distutils commands, it can be of use to the general Python WSGI world. I also hope that by doing things 'The Right Way', it will be something that will be clearer and easy to support and maintain. With those two together maybe we can solve the burnout issue by distributing the maintenance load. I'd very much appreciate any help to that end, particularly including feedback on how to get there. I don't care where the code lives and would be happy to see some of it merged back into the packages it derives from or moved into larger packages. So please let me know if you'd like to coordinate moving things around with me.
Any contributions are very welcome. Here are a few things I'm looking for in particular:
- addressing Known Issues
- IIS app name and Python dist name conventions
- fostering community ownership
- writing tests
I'm particularly apologetic for the last one, I'm ashamed by the lack of tests. In my defense, this whole problem was such a fog for me when I started that I just needed to start writing things and poking around. Believe me this is not my usual MO, I almost always do TDD and beg your forgiveness. :-)
I look forward to getting this going!