Personal tools
You are here: Home Quills Blog Topics SummerOfCode

SummerOfCode

Jun 05, 2007

My Mentor

by tim2p — last modified Jun 05, 2007 05:17 PM
Filed Under:
Ooh, I forgot to add this in my last post.  I'm delighted that my Google SoC mentor is Raphael Ritz.

Known to just about everybody in the Plone community, no doubt, Raphael is a current member of the Plone `framework team'.  Raphael and I have actually worked together a bit before on his rather fantastic CMFBibliographyAT project.

That means he's kept my code in line a few times before ;-).

Jun 04, 2007

My SoC Proposal in Full

by tim2p — last modified Jun 04, 2007 04:41 AM
Filed Under:

The motivation for the proposal was/is to provide a more compelling weblog solution for Plone. It is hoped that this will be useful in and of itself, but also as a way of attracting users to the Plone platform more generally.

Weblog

First, following the pattern used by plone4artistscalendar, provide a TTW/TTP facility to mark individual content objects - like "Folders" and "Smart Folders" - with an interface that causes the default view for the object to switch to a weblog-ish view based on the "IWeblog" interface. Further, such a marker interface could/should cause extra options to become available for the purpose of providing more weblog-specific configuration options. I propose to store this configuration data in "IAnnotations".

Second, provide adapters for those types that are markable as a Weblog to an IWeblog interface. The major part of the implementation would be fetching those (sub)objects that should form part of the weblog. Each of those (sub)objects would, in turn, be adapted to an "IWeblogEntry" interface. Thus, the use of arbitrary (and standard) Plone content types as weblog entries would be made possible simply by providing adapters for each to the "IWeblogEntry" interface. The implementation would provide such adapters for the "Page", "Image", "Link", "Event", "News Item", and "File" standard Plone content types.

Third, provide a traversal adapter that allows such a repurposed container-ish content object to use archive-by-date URLs of the form "[containerish]/2006/05/06/[weblog-entry-id]". This is a standard weblog feature. As an intermediate step, the implementation would also require the provision of a non-persistent WeblogArchive class. Instances of this class would be injected into the traversal path by the Smart
Folder traversal adapter, and would then allow for archive listing views to be used on URLs of the form "[containerish]/2006/05/". I have worked on a partially complete branch of Quills implementing this traversal feature already exists on the maurits-traversal branch. It has issues at the moment, but provides a good base to build from.

Trackback

Completion of the plonetrackback product that allows for trackback pings to be sent to and from arbitrary Plone content objects. The core implementation is largely complete, with just unit tests and more complete integration with the CMF/Plone catalog required. However, the major impediment to the usage of trackback is ping spam. In order to make the product truly usable, some kind of moderation queue system is a necessity. (This is true to a large extent for commenting in plone, IMHO.) Optional integration with the Akismet service would be desirable - and very possible given the two python Akismet wrappers and the Akizmet Zope product - but is probably reliant on implementation of moderation to be effective. Simplistic moderation for trackbacks should be fairly trivial to implement, but I wonder if there is a more generic approach that could/should be taken. The existing workflow machinery is an obvious candidate for reuse here, but the current plonetrackback implementation probably doesn't play nicely with that. I'd be grateful for guidance from a mentor in this area.

Update Pings

Provide a component-enabled tool/utility that allows for update pings to be sent to services such as Technorati. This would be equivalent to the functionality offered by qPingTool, but implemented in a way that is agnostic to the object types that update pings should be made for (by using adaptation). With the introduction of workflow transition events in CMF 2.1, I propose to listen for "publish" transitions and send pings as appropriate. This will require some TTW/TTP configuration for the object types and locations to listen for.

Remote Blogging

Provide remote authoring functionality with Zope3 views. The current Quills implementation of "MetaWeblogAPI" works as a persistent attribute on weblog objects, which makes it more complicated than it should be to disable the feature. Migration code is also potentially more complicated, and a hard dependency on the "RPCAuth" product (to provide authentication) is introduced to the Quills product. The latter relies on something of a hack to achieve its goal. None of this is desirable, and none of it is necessary. Non-persistent views that authenticate via a custom PAS plugin offer a way around all of this, with the added bonus of considerably enhancing the potential for reuse by other products.


p.s.  On the issue of motivation for getting Plone blogging software up to date, see Jon Stahl on how blogs can capture users for plone.

May 30, 2007

Summer of Quills Code Begins

by tim2p — last modified May 30, 2007 02:39 PM
Filed Under:

Starting off on the Quills Google Summer of Code.

Applying through the Plone Foundation, I have been awarded funding by Google through their Summer of Code programme to improve the Quills weblog solution for Plone.  This is just a brief post to say that I'll be posting updates on my progress to this blog.

In the interests of eating my own dogfood this is, of course, a Quills blog.  More specifically, it is a fresh instance based on Quills 1.5RC3.  In the interests of continuing to eat my own dogfood, I hope that it won't remain as such while I develop...