And now for something completely different. A *video* status report of the initial steps on my Google SoC project. I hope you enjoy it. You can find full video transcript below.
Update 1: I’ve merged those changes into Zope 2.10 branch now, so they will be available in the upcoming Zope 2.10.4 release if all goes well.
Hi, my name is Sidnei da Silva, and I’m participating on the Google Summer of Code Program as a Student.
My mentor is Mr. Lennart Regebro, and my mentoring organization is the Plone Foundation, and this is my first Video Status Report for the Google SoC Program.
My Summer of Code project goes by the title of “Improved out-of-the-box WebDAV experience”, and this first phase on the project is extremely important to reach that goal. More on that in a second.
First, a little bit of background.
What is Plone?
- Plone is a really powerful and agile Content Management System
- It’s based on a series of technologies on top of the Zope Application Server
- Which is written in the Python Programming Language
What is Zope?
- It’s the Z Object Publishing Environment
I’m not sure why “Z”, of all letters, was chosen. It’s the last letter of the alphabet! Oh, well. Maybe they felt sad because of that and gave Mr. “Z” a chance.
Anyway, the idea is that you deal with Objects, which are persisted in the ZODB (which stands for the Z Object Database) in an hierarchical fashion. I won’t go into much detail there. So you have Objects, and they are Published through several different “channels”.
Out-of-the-box, Zope ships with a couple different publishing channels that work with little to no configuration: HTTP, WebDAV, FTP and XML-RPC. You can access pretty much any standard Zope Object through any one of those channels.
My personal interest is in accessing and manipulating Zope (and specially Plone) Objects through WebDAV, and having that work with minimal configuration.
Historically, Zope’s WebDAV implementation has worked just fine, though very few people use it. However, as it started getting old, and no one was very interested in maintaining it, things started to fall apart.
The most notable issue was that Windows Web Folders implementation stopped working with Zope, after someone that had problems with it decided that it was easier to just rip out any support for Windows Web Folders than to actually find a solution to the problem.
Thus, my first Summer of Code task was born: making Windows Web Folders work with Zope again, which as a side effect will allow us to use Windows Web Folders with Plone.
A good chunk of the job had already been done by a good soul with the handle “PatrickD”. If you’re looking at this report Patrick, thank you a lot.
Patrick did a great job looking for a solution to the problem, and going back and forth discussing the best way to implement it with the Zope developers, and eventually submitting a patch nearly one year ago, for this issue which is almost 35 months old as of today. The whole history on this issue can be found on the Zope Collector issue 1441. The issue title might give you an idea of how much some Zope Developers care about Windows support.
My task consisted of researching a little bit more on the subject, polishing Patrick’s patch a tad and writing some unit tests for it.
Patrick came to the conclusion that the lack of a “MS-Author-Via: DAV” header in the WebDAV OPTIONS response was what prevented Microsoft Web Folders from properly connecting to Zope. And he was right, in part. That was really the case with the version of Web Folders that was current at the time.
However, Microsoft issued an update in January 2005, and a second update in May 2007 to the Web Folders implementation. The latest update adds support for WebDAV connections over SSL, by using the “https” url scheme. With those updates, they also removed the requirement for the “MS-Author-Via: DAV” header, but now require the presence of a header named “Public:” which lists the WebDAV methods that are available globally across all resources in the server.
Now I’m going to demonstrate the issue, how Microsoft Web Folders fails to connect to Zope, and after enabling the new feature through Zope’s configuration file, how it is then able to successfully connect to Zope.
Those changes should be available in the Zope Version Control Repository by the time you see this. I would like to ask everyone interested in having a properly working WebDAV in Plone and Zope to make suggestions and requests on PLIP (Plone Improvement Proposal) 187, which tracks the status and plans for this Summer of Code work.
I would like to thank Google for allowing me to work on this project, my mentor Lennart for the prodding, and the great Alexander Limi for the motivation and coming up with ideas.
Blogged with Flock