May 10, 2013

Produce & Publish Status Update 1

In a recent posting I outlined my plans for the next generation of the "Produce & Publish Cloud Edition".

Over the last days I found some time prototyping the new core implementation which is basically responsible for storing editoral content and published content. A major requirement for the storage implementation is that it should be "cloud-aware". Fortunately there is a very nice Python project called pyfilesystem. pyfilesystem provides a filesystem-ish layer on top of various filesystems and cloud-ish services like

  • Dropbox
  • Amazon S3
  • Local filesystem
  • Remote filesystem access through SFTP

The benefit is obvious: you write your code once and it will run (in theory) out-of-the-box either on the local filesystem or against a remote filesystem.

And in fact: my code that I wrote and tested originally only against the local filesystem worked basically out-of-the-box with Amazon S3 and over SFTP. Support for Dropbox over dropbox-fs has been added yesterday. This took longer than expected because Dropbox provides only access through OAuth. So I had to automate the complete OAuth request/acknowledge game that usually happens manually using some lines of mechanize in Python. So Dropbox supports works in general however the underlaying dropbox-fs or the Dropbox Python SDK seems to be a bit flaky - but the errors are reproducable - so there is hope that the issues can be fixed easily.

Produce & Publish now got a solid filesystem storage basis (instead of Plone-only). This will make the further progress so much easier and more straight-forward than depending on the Plone-API and Plone annoyances only.