SabreDAV reaches 1.0

After lots of testing, coding and integrating SabreDAV in a few systems, SabreDAV has reached 1.0.

What’s that?

For those of you randomly stumbling on this blog, SabreDAV is a tool I’ve been working on to allow easy integration of PHP and WebDAV. While looking at WebDAV implementions out there for PHP, there weren’t really any standards-compliant and flexible solutions out there, so I decided to write my own.

Since then it has gained some popularity, and the beta version has been tested and implemented in a number of places. It’s open source (under the BSD license), so anybody can grab it and use it.

If you don’t really know what WebDAV is, it is basically a filesystem protocol that works on top of HTTP. By implementing WebDAV (or SabreDAV specifically) you are able to expose your web application as if it was a filesystem to the users. WebDAV is supported by any major operating system.

If you’re interested in SabreDAV, check out the example, or tutorial.

Changes

The last round of changes since 0.12.1 are mostly cleanups, but the most important are the following:

  • SimpleDirectory class
  • Authentication plugin is no longer included. The plugin was not yet production ready, and in order to allow myself to make API changes, I needed to remove it for 1.0. This does not mean you can no longer use the recommended way to implement authentication.
  • The unknownProperties event was removed, replaced by the afterGetProperties event (docs<).
  • Addition of more events for plugin writers.
  • Lots of cleaning up, unittests.

Full changelog and download.

Future plans

Although the 1.0 version should be a bit of a milestone, the release had actually been sitting ready for a while. So while 1.0 is cool and all, I’ve already spent a great deal of time implementing RFC 3744 a.k.a. ACL extensions for WebDAV. Support for ACL will be added as a separate module in the future.

While these changes are going on, no backwards compatibility breaking changes should be made to the API’s. For more details on the BC and versioning policy, check here.

Thanks!

It’s been a lot of hard work to get here, but seeing some uptake is very rewarding. I would probably have given up on this if it weren’t for the people asking questions, making suggestions and filing reports. Thanks for that, it makes it worth it!

Web mentions

Comments

  • Michael Gauthier

    Michael Gauthier

    Congratulations on making it to 1.0!! As a user of SabreDAV, I must say it's extremely well designed, and is a pleasure to integrate into an existing site.
  • Johannes Nohl

    Johannes Nohl

    Dear Evert, great piece of work. Sabre looks very nice. My tests (in combination with Openoffice) showed me that it is even performant - the bottle neck always was Openoffice not server side. I would like to make a plugin for cakephp out of it. Maybe you heart about cake. The idea is having a plugin as a wrapper for Sabre and your library itself as a vendor file. Since cakephp is a MVC framework the biggest task while writing a plugin would be to bring the pieces to where they belong: Like the file system should go to model, as well as locking. The "hand over" of the files or errror messages should be delivered by the view. And finally the rest goes to controller. Do you think it is possible to write a wrapper plugin like that?
  • Evert

    Evert

    I've just recently gotten very familiar with cake, and implemented it in a project. It definitely sounds like an interesting idea, but I wonder how well you can make it 'plug and play' with existing models, views and controllers. In any case, I'm always interested to see more implementations. let me know if there's something I can do.
  • gwoo

    gwoo

    Great stuff. I created a simple DavController for Lithium that loads SabreDav with the file server code. All you have to do is change the path in the Libraries::add() and the classes are autoloaded nicely. http://pastium.org/view/0950919986eaf1db9205d7ef724da148
  • Evert

    Evert

    That's cool gwoo! any chance something like that would end up in the main tree?
  • Evert

    Evert

    That's cool gwoo! any chance something like that would end up in the main tree?
  • gwoo

    gwoo

    im thinking of a plugin with its only bootstrap and routes. The Libararies code i pasted could be added to the bootstrap. Then you just need something like Libraries::add('plugin', 'li3_sabredav'); and you can have all the power of SabreDav in your Lithium app. Btw, the same kind of approach could be taken with SabreAMF, but I might integrate that a little differently with a renderer that would just output the AMF from the same controller actions as the html. Feel free to stop by #li3 on irc.freenode.net if I can help in anyway.
  • Peter Moss

    Peter Moss

    Did you test this on IIS7? Do I need to anything special other than install php? Thanks, Peter
  • Evert

    Evert

    Hi Peter, SabreDAV is currently completed untested on IIS7. Any testing is appreciated, but I'd suggest using Apache on windows instead. Evert
  • Charly

    Charly

    It seems nice to implement in my next project