SummerOfCode
Jun 05, 2007
My Mentor
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
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
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...

