October 18, 2015

XML Director 1.3 update

The "XML Director" add-on for Plone 4 and 5 allows you to mount external storage and web services into Plone using a unified approach and API. Many common protocols like WebDAV or S3 are supported out of the box. Services like Sharepoint, Evernote etc. can be connected with Plone through 3rd-party SaaS bridges.

At Plone Conference 2015 in Bucharest I presented the state of the XML Director project.

The upcoming version 1.3 will feature improved support for various external storages

  • Alfresco
  • Owncloud
  • BaseX 8.3
  • eXist-DB 2.2 and 3.0
  • local filesystem
  • all WebDAV based services
  • Amazon AWS S3
  • support for OTIXO and StorageMadeEasy SaaS bridges

A significant amout of efforts was invested into automatic interoperability tests with different backends. As outcome of these efforts we are now able to run the XML Director test suite (about 100 tests) against various backends (either running in Docker containers or available as external service) through Travis-CI - both for Plone 4.3 and Plone 5.0. So all code changes to XML Director will trigger 1400 tests against the various software and backend combinations.

The latest XML Director release (Version 1.3 beta 1) is available from PyPI

Open issues that must be solved for the final 1.3 release

  • complete Plone 5.0 compatibility (JS and CSS integration)
  • improved automatic UI tests (URL escape issues in particular related to the local filesystem integration)


I had various discussions with people during the Plone Conference. The main topic was about a deeper integration into Plone (similar to Reflecto providing search integration through content proxies). In general I want to keep the current implementation small and minimal. I think that a deeper integration could be integrated as an layer on top. Necessary infrastructure in terms of notifications and hooks could be added in order to provide everything for higher level modules everything to make mounted content more usable and re-usable inside Plone. However a deeper integration into Plone must be well-thought since there a lot of edgecases to be considered. I am open for further discussions and suggestions...get in touch!