[Framework-Team] [PLIP 172 Wicked] Review notes

Martin Aspeli optilude at gmx.net
Wed Sep 27 14:02:42 UTC 2006


Hi guys,

I've offered to give Raphael a helping hand with this PLIP - review below.

========
What is it?
========

Wicked is a way to add Wiki-like syntax to content types. If you type
"((Plone))" into a Wicked-enabled text field, Wicked will render this
with a small '+'. Click the '+' and a new object is created with the
id 'plone', title 'Plone',  and a link is created from the original
document to the Plone document.

This is like Wikis, except there is no silly WikiWord automatic
linkification.The (()) syntax allows multi-word links so ((Foo bar))
becomes a document with id 'foo-bar', reads like natural language and
is fairly unlikely to suffer from colissions.

================
How do I check it out?
================

svn co http://svn.plone.org/svn/plone/review/wicked-210-bundle
./getAdditional.sh

This downloads Dieter's AdvancedQuery

To run the tests you also need to do:

easy_install -Z http://svn.plone.org/svn/collective/collective.testing/trunk/
easy_install -Z lxml # I find trunk is most stable currently

Whit has indicated these dependencies may go away as
collective.testing is filtered into PloneTestCase. lxml is needed only
to clean up test output.

To see it in action:

* Add a plone site, quick install wicked

* add a wickeddoc, create a wicked link ala ((some text))

* save. click on link to create a new wickeddoc

* make more links (resolved by a normalized catalog search on name or title)

* rename content, move content.  links should still work

* changing ((link)) will not work ;)

=============
How does it work?
=============

Wicked relies on txtfilter, which introduces a new kind of field
(FilterField) that is capable of executing filters. Wicked is
basically a filter that enables the (()) syntax. It uses the reference
catalog to keep track of references between pages, so that if a target
page moves, links are kept up-to-date. This is useful, since by
default the page is created in the same folder as the source document,
and the user may wish to move it at some point in the future.

txtfilter, at http://svn.plone.org/svn/collective/txtfilter/branches/1.0,
is fairly easy to understand, and has a number of interesting
features. For example, it can dynamically replace reference-based
links with HTML links on render, or automatically paginate text. Not
all of this is used by Wicked, but having the functionality available
would likely be a bonus rather than just bitrot.

Wicked, at https://svn.plone.org/svn/collective/wicked/trunk, uses
txtfilter to make the wiki syntax work, and keeps track of the
aforementioned references.

Both products (Wicked in particular) use Zope 3 technology where it
makes sense (filters are implemented as adapters, for example). Both
look to be cleanly implemented, well-commented and well-tested.

Obviously, this is quite AT specific. That comes down to the same
reasons as many of the other AT-specific things we are discussing -
the lack of a general reference engine, and the fact that AT powers
most content types, including ATCT. I'm not quite sure where something
like Wicked would plug into a simple Z3 content object. However, the
code itself is nicely componentised (and a filter is just an adapter),
and Whit has got plans for how to make it as generalised as possible.
When our non-AT content type story catches up, I don't think it'll be
hard to Wicked-enable those types.

==================
What remains to be done
==================

Wicked still ships with demo types to demonstrate its functionality.
It needs to be integrated into ATCT, and its functionailty needs to be
made optional. There should be a configlet that enables or disables
Wiki syntax.

It'd also be nice if the testing dependencies were removed.

Whit reckons it'd take about a week to get this done. Luckily, he's
giving a talk about Wicked in Seattle and plans to polish it before
then.

=======================
Recommendations and caveats
=======================

Wicked is a wiki without all the cruft. It makes it simple to create
links-as-you-type, and keeps those links up-to-date when they move.
It's easy to use and quite innovative in that it integrates so
seamlessly into Plone.

Obviously, there is some cleanup work to be done here, but Whit has a
clear roadmap for how to get it done, and seems to be on top of
things.

+1 for inclusion as soon as the ATCT integration is done and it's
possible to switch it on and off.

Martin




More information about the Framework-Team mailing list