RemoteAuthoring
Jul 08, 2008
Site upgrades and eating my own dog food
Underlying Plone upgrades and now using Quills 1.7.0b2.
I spent this weekend upgrading the underlying Plone instance used to host my blog. (This was largely because I wanted to get my personal site onto Plone 3 so I could use the NuPlone theme.)
In the process, I took the opportunity to migrate the blog to Quills 1.7.0b2. Doing so required me first to release 1.7.0b2. The only change included from beta 1 is that the migration now ensures that weblog entry workflow states are correctly handled. My hope is that this will address issue 129 in the Quills tracker.
Eating my own dog food has revealed a couple of bugs. First, portlets don't appear to work in the archive and topics areas of blogs. From what I recall, this works in QuillsEnabled, so the fix shouldn't be difficult. Second, when I tried to use ScribeFire (for remote blogging), adding a new post as a draft meant it was lost to ScribeFire (although there on the server). Not sure whether this is a Quills or ScribeFire bug, though.
Looks like there'll need to be a 1.7.0b3 release...
Apr 18, 2008
MetaWeblog.newMediaObject and QuillsEnabled
A new remote blogging feature is available via Quills, and a new way of enjoying Quills-ish blogging technology is soon to be released.
Following up on the previous post about, the Quills trunk now makes it possible to use the newMediaObject feature of the MetaWeblog remote blogging API. This makes it possible to use your remote blogging client to upload images. Hopefully Jon Stahl will be pleased.
That new feature is also available on the new QuillsEnabled trunk. For the uninitiated, QuillsEnabled provides a new way for you to make use of Quills-ish blogging technology. It "blog-ifies" standard plone content types -
Pages and Folders, currently implemented - with just easily-written adapters required
for other types you may wish to support (like, say, SmartFolders). It gives you blog-ish URLs (e.g. blog/2008/01/13/entry-id),
blog views, tag cloud and other relevant portlets, remote blogging
(MetaWeblog API), etc. I plan to make a first beta release of this code in the next few days. If you can't wait that long, then please do give the buildout a go.
Dec 05, 2007
Time to implement MetaWeblogAPI.newMediaObject
Jon Stahl just posted about how good he thinks Windows Live Writer is. In doing so, he notes that,
it would be cool if we could support uploading of images via FTP or via a blogging API from an offline client.
quills.remoteblogging's implementation of MetaWeblog API does not allow this at the moment, but it shouldn't be too difficult to add. From what I can tell, we just need to implement the newMediaObject method. The only complication is that doing so would require extending the IWeblog interface defined in quills.core.
To cut a long story short: I'll try to do this shortly.
Oct 12, 2007
Response to MrTopf
Christian Scholz has posted some thoughtful comments on blogging in Plone. He mainly discusses Quills, but some of his previous experiences are now outdated...
"Getting the Blogging story right in Plone" is a good post, getting to lots of the problems that we see and have seen in blog products in Plone. I just want to respond to a few of the specific points as Tom Lazar and I have been working on many of them for the upcoming Quills 1.6 and "2.0" (that version number is not set in stone yet, I'd say) releases.
So what’s wrong with blogging in Plone right now? Mainly I think it’s commenting, at least this is the reason why I switched my COM.lounge TV blog to Wordpress. With Quills I had several problems back then. Some might be due to the version I used (it simply seemed to be bugs) but the most important was trackback spam actually.
Yup. Commenting sucks in Plone. This is something that Plone needs to fix, not Quills. Happily, people do seem to be working on this area. See the new release of easycommenting (which I haven't had a chance to try out yet).
Trackback is something that the Quills project should handle. For the 1.6 release, we have recognised that our implementation is not nearly as good as it should be, and so ship without it. That's better than shipping with something unusable (due to spam) as was the case in Quills 1.5, but obviously it's not optimal to ship without this important functionality. My view is that trackback should share lots of code with commenting, so careful work on the latter has the potential to push forward the former as well.
enable every content or folder to be turned into a blog. This was an idea I had a while back and it seemed that Tom had it, too :-) It probably is simply about adding some marker interface to a folder to enable various blogging features.
This is what is slated to be be Quills 2.0. There is code that does this in the collective under the QuillsEnabled project. It worked a couple of months ago, but is currently broken (I expect) as the code it shares with Quills 1.6 was refactored somewhat, without these changes being reflected in QuillsEnabled... yet. I believe Tom plans to sprint on this after the Plone Conference!
If a folder is marked as a blog it might enable a blogging API for using a blog editor
See QuillsEnabled :).
If a folder is marked as a blog it might have technorati tags as a viewlet available
This may be something that PloneBookmarklets does or could address.
enable blogging APIs (the more we can provide the better) to also edit non-blog content, like normal pages or news items (what’s the difference anyway?)
See QuillsEnabled :). We currently have a MetaWeblogAPI implementation that will work with standard plone content as soon as QuillsEnabled is updated. I know Tom is keen on AtomPub. Ian Bicking appears to be working in this area as well, albeit not explicitly for Plone.
Enable simple statistics on your blog. It would be nice to directly be able to see a rough click count per entry a la Wordpress, the same would be nice for your RSS subscribers.
I agree this would be nice, but has to be something the Plone and/or its documentation handles, I think.
Enable a "more" section on posts which doesn’t show up in the overview listing or the RSS feed.
Quills basically has this already. The weblog view can be told to only display entry summaries (i.e. the standard AT description field), instead of the full text. This is not wired up to the syndication feeds yet, I believe. But that should be easy enough for an only slightly enterprising hacker :).
Enable a feed per category (should be easily doable with collections but making it even easier for end-users or even automatic might be nice)
Quills has had this since 1.5. Append /@@atom.xml to any of the 'topics' URLs, and you get an atom feed for that topic. Likewise for the other feed types we offer. e.g. http://quills.sitefusion.co.uk/blog/topics/Core/@@atom.xml.
So, Quills already offers lots. And where it doesn't quite meet expectations, we have code in the works to address them. Things are getting better :).
Jun 26, 2007
Ready for merge to trunk
Also, as Jon Stahl pointed out on the Quills-Dev mailing list, it would be a good thing if quills.remoteauthoring was made to work with standard Plone content types, not just the specific Quills Weblog type.
I'll be working on the merge-to-trunk and extending the application of quills.remoteauthoring soon.
Jun 21, 2007
Developments and barrier to merging to trunk
I haven't made a status update in a while, so here goes...
Things have moved on fairly well since my last post here. The traversal security bug is now resolved, albeit not in the way I thought it would be. I won't provide the gory details here, but suffice it to say I ended up having to write a class named "EvilAATUSHack" ;-).
Remote authoring (aka MetaWeblogAPI) has seen some more refactoring based on improved - well, "revised", at least - interfaces for weblogs and weblog entries. MetaWeblogAPI should now be completely generic and pluggable, such that it only depends on interfaces defined in quills.core and quills.remoteblogging. As a consequence, it should be reusable by other projects - be they Archetypes- or pure Zope3-based. Well, that's the idea, anyway.
These changes leave the maurits-traversal branch in pretty good shape. One obvious problem is that I've made no effort either to update the old Quills tests, or to include any new ones for the new interfaces/functionality. To be generous to myself, those interfaces have been in a state of flux. Anyway, I don't consider that a barrier to merging maurits-traversal to trunk.
The real barrier is a bug I discovered in Five that means security declarations for interfaces miss out method names that are inherited from interface superclasses. This is a pain, and a trivial fix if anyone with commit rights to svn.zope.org is reading this...
Jun 09, 2007
MetaWeblog API view-ified
This was achieved by implementing 'metaWeblog' and 'blogger' as a (i.e. the same) view, instead. The view is currently implemented in quills.remoteblogging, together with a PAS plugin to extract user credentials from a MetaWeblog request (MetaWeblogPASPlugin).
I'm not completely comfortable with the code layout at the moment. I'm wondering if there should be another layer of abstraction such that the default metaWeblog implementation adapts to, say, IEditableWeblog which would provide addEntry, deleteEntry, etc. That might make it easier to implement other remote blogging APIs (like Atom), which presumably call equivalent methods (but with different names). It might also make it easier for others to reuse the remote blogging functionality for other content types as well.
Something to think about...
Jun 08, 2007
Status Update 2
A quick post to say what has (and hasn't) been happening with Quills this week.
Traversal Security Bug
First, I think I have partly tracked down what the security problem is that requires the use of __allow_acess_to_unprotected_subobjects__ on the archive and topic classes. After another pdb session, it seems that those classes do not have a __roles__ attribute, which the Zope security machinery wants, apparently. Actually, I think it's more than that. Even when I add a workaround of __roles__ = Acquisition.Acquired (so that the attribute is just picked up from the next persistent object it finds), things don't work properly as the security machinery chokes a little further down the line.My best guess at the moment is that InitializeClass isn't getting called (properly?) by the Five ZCML handler for this. That's my next avenue of investigation.
Remote Authoring (aka MetaWeblogAPI)
The other news is that I've started refactoring the MetaWeblogAPI support into separate packages that implement the API with a view rather than a persistent subobject of Weblogs. This should make it easier to disable the functionality, and easier to apply it to alternative content types.As things stand, I have a PAS IExtractionPlugin that gets user credentials from a MetaWeblog request, and a view that is largely a copy-n-paste job from the existing MetaWeblog implementation.
Some issues remain, though. While I can add the blog successfully with ScribeFire (nee Performancing) - which means at least one MetaWeblogAPI method is getting called without problem - attempts then to get category listings or otherwise use the API fail with a security error.
None of this is checked in to svn, yet. I will do so as and when it gets a little more polished.

