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.
Update 2: Leslie Hawthorn kindly mentioned my post at the Google Summer of Code Blog. Thank you Leslie!
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
13 thoughts on “Google SoC: Status Report 1”
Thanks for a fun, informative, well-written update Sidnei! :-) A model for all SoCers!
Thanks for fixing this, Sidnei!
I had no idea somebody already submitted a patch for this, great job with updating it and merging it.
Is there an easy way to apply these things to Zope 2.10, or will we have to wait for Zope 2.11?
Oh, and thanks for providing a transcript for those of us who (at least initially ;) didn’t have 10 minutes to watch a screencast. I finally got around to watching it too. Is this your first screencast? Good job!
I can update the patch for 2.10, but a new release has just gone out so there’s not much hope to get it soon. I could check it into the 2.10 branch *and* update the Windows Installer for Plone to apply it during the build process. Would that help any?
As for the screencast, yes, that’s my first one! The transcript is actually my script that I wrote upfront, so I could do the screencast by just reading it and have less errors. A tip I got from some pros. :)
Just came across this post.
Glad to see that long battle against MS’ WebDAV implementation is over ;)
Hi to Sidnei and Patrick,
thanks for this work. I have been searching for a solution between zope and webfolders.
I have also been looking for a solution for zope and MS Word. I found Patrick’s solution at (https://bugs.launchpad.net/zope2/+bug/143725)
However, when i tried the solution it didnt’ work for me on plone 3+ and zope -2.10.5-final.
I posted this issue on the zope dev list which is how i ended up here. In that post, i show the network traffic talk between zope and MS Word. and i still see it insisting on the MS protocol. Also, I understood that this change from Patrick would force zope to add the option of ‘webdav’ (in proper format of course) to be sent to Word, thus forcing it to accept webdav. this did not show up.
1) it appears to me that talking with web folders and Word are the same issue, correct?
2) could you plz help me by posting the changes you made if they are different that patrick’s
P.S. i know my server is setup properly, correct url, etc because OpenOffice and Acrobat word just dandy
thanks for listening and thanks to both for making Plone and Zope better
You have to do two things:
– Make sure you have the Windows hotfix mentioned
– Make sure you enable the new option I added to zope.conf
yes that appears to fix it. thanks a lot.
do you know if this works with MS Office – because Office uses a different webDAV implementation
thanks again for finding this fix.
I haven’t tested MS Office. I assume it works. Best way to find out? Try it yourself and report back!
hi, this also fixes Office! thanks a lot.
I am developing a plugin for Office that will allow direct webDAV into Plone. this was the piece i was missing.
when it is done, i’ll make it available to plone users.
six months ago i was very excited that you had solved this problem that was driving me crazy. i had everything working, then i delted the installation with the modified zope.conf. i looked at this article, but i couldn’t find the one line i had to add to zope.conf. would you please post it here again.
thanks for the link.
the link probably explains this, but i found my notes i had taken from another source where you said this is what you add to zope.conf:
# Added enable-ms-public-header to make WebDAV work with MS webfolders.
I’m using zope 2.11-2. I’ve enabled webdav according this site and updated MS webfolders.
Windows XP works fine, but I’m having troubles with MS Vista.
The current fix matches User Agents with “Microsoft Data Access Internet Publishing Provider Protocol Discovery” in request header.
Has the implementation of Webfolders changed again? Do I have to enable “enable-ms-author-via” with Vista?