-
Vice: Feed your need
last modified June 27 by pbugni
Zope and Plone content syndication
Vice is a zope.component-based syndication solution
Goal
Syndication (outgoing web feeds, i.e. RSS and ATOM) is currently out-of-date in Plone - Plone 2.5.x and 3.0 only support RSS 1.0. Existing add-on products provide RSS 2.0 and Atom support, but this PLIP calls for support to be written in a Zope 3 fashion and to be submitted to the framework team for inclusion in Plone itself. This will open syndication up to more people more easily. The goal is to produce a new syndication product that will run on Plone 3.0 and to submit it to the framework team for inclusion in Plone 4.0.Current
| Package | Release |
| collective.baseid | 1.0b1 |
| collective.uuid | 1.0b1 |
| vice.outbound | 1.0a1
|
| vice.zope2.outbound | 1.0a1 |
| vice.plone.outbound | 1.0a1 |
Vice was a Plone Summer of Code 2007 project, sponsored by Google!
Getting started with vice
Plone Conference 2008 - DC
Plone Conference 2007 - Naples
Google Summer of Code Report
Plan
baseid/uuid
For beta1 (April 22 2008):
- (√) Move to top-level packages in collective
- (-) UI for baseid and uuid (model on intid UI) - no, baseid is a library framework and uuid is a library - these are not products, no need for ui
- (-) icons for zmi - no ui means no icons :)
- (√) Verify setup.py metadata is just right
- (√) Tag releases and remove setup.cfg files
- (√) Create eggs and release to cheeseshop
- ( ) Announce!
For later:
- ( ) intid specialization
- ( ) create branch for intid in zope3 svn repository and checkin baseid/intid split and alert zope3-dev to branch and uuid as a separate use of baseid (requires commit rights by derek)
Outbound
For alpha1 of new packages (April 22 2008):
- (√) Feeds portlet - thanks, tim2p!
- (√) Make the published_url field on the individual feed config hideable from the configlet, to minimize user confusion on sites that don't need it
- (√) Put a setting in the configlet to enable/disable recursion. Currently it's always a option. On some/many sites, they may not want recursion because it's a potential performance killer. And this will help to simplify the config screen further, which limi will like.
- (√) viewlet to embed in header so a browser like firefox will know the page contains outbound syndicated feeds
- (√) Move p.s.o and p.a.s.o to v.o and v.p.o
- (√) make sure nothing in v.o depends on Plone - I'm thinking migration code on utility and the wicked.normalize import
- (√) split out vice.zope2 for platform-specific bits (mainly adapters)
- (√) Fix failing zope3 tests
- (√) icon for configlet
- (√) Provide reasonable test coverage
- (√) Verify setup.py metadata is just right
- (√) Tag releases and remove setup.cfg files
- (√) Create eggs and release to cheeseshop and plone.org
- (√) Announce!
For alpha2:
- ( ) Split vice.outbound into vice.outbound.core, vice.outbound.config, and vice.outbound.uuid
- ( ) Change vice.outbound.uuid to depend on vice.outbound.core instead of vice.outbound.config
- ( ) Make sure vice plays nice when the eggs are in a buildout but it hasn't been installed
- ( ) Make sure vice can be uninstalled
For beta1:
- ( ) 100% test coverage. See p4a-test as an example.
- ( ) Make tests run faster so that people aren't deterred from contributing.
- ( ) Address fschulze's 2007 SoC comments
- ( ) eliminate 'XXX TODO:' markers for non-app package
- ( ) eliminate WARNING messages at Zope startup for non-app package
- ( ) Write tests for portal_syndication's replacement to make sure things that rely on the old version don't break
- ( ) refine migration - eliminate TODO markers
- ( ) polish/refactor doc tests - make sure we explain how to use and extend - i.e. README.txt
- (√) add zope3 dependencies to v.o? this would require the use of affinitic.recipe.fakezope2eggs in all zope2/plone buildouts. but it allows testing on zope3
For 1.0-final:
- Nothing new!
For later than 1.0-final:
- ( ) Provide a plugin for the published_url field (local utility lookup) to provide customizable defaults for the field. May require extending formlib to have dynamic calls of functions at form render time to get defaults - a lack I've been bemoaning for a long time!
- ( ) Feed for individual content items and feed entries for versions
- ( ) atom views for individual items
- ( ) Add 'required permission for use' entries to the feed format tuples. This will allow customizers to provide feed formats that are usable by some people and not others. One use case is mine: I'll be using Vice to provide specialized feeds for synchronizing content over multiple web sites and I don't want 'regular users' to be able to create them. Another use case is pbugni's, where, if I understand correctly, he's doing basically the same thing. The default for the feeds shipped in p.a.s.o will be something easy like 'plone.syndication.viewfeeds' (or however it's spelled). Thus normal users and admins will never know it's there and it's only the deep customizers who need it who will ever encounter it. This intersects with the dynamic feed feature above - you won't be able to get a dynamic feed for a format that you don't have permission to add normally.
- ( ) dynamic feed config settings via url params - example: http://site/folder/feed?format=atom - don't recurse because of DoS potential
- ( ) Pre-populating feeds. It's a hassle to populate feeds on every container, especially if you just want the standard three, non-recursive feeds named 'Atom', 'RSS 2.0', and 'RSS 1.0'. So, we should pre-pop them in the feedconfigs when the syndication tab is first accessed and the annotation created. Make the three default feeds enabled individually, but disable feeds for the container as a whole. Thus, to get the three standard feeds, just click the Syndication tab, check Enabled, and click Save/Apply. It can't get much easier than that (and, if you do want it easier, that's what the dynamic feeds are for :) ). It would be nice to make the code that creates the pre-populated feeds a pluggable utility, so that others can override if they want a different set of pre-populated feeds.
- ( ) itunes format
- ( ) bridge product for p4a
- ( ) Create an interface that, if provided by an object that provides IFeedable, disables recursion. This gives fine-grained control for sites that don't want to turn off the option entirely. And it makes good sense when making classes that never contain child containers IFeedbable. I ran into this tonight with Quills, where it makes no sense to have a recursion option for Weblog objects.
- ( ) feeds that are tag-specific. this is necessary for integration with quills without losing current quills feed functionality.
- ( ) integration with quills via quills.syndication
- ( ) vice.zope3.outbound
- ( ) megrok.vice.outbound
- ( ) ?use entry points for registering selectable syndication options?
Inbound
- ( ) implementation for ZODB side of inbound AJAX solution; attributes needed for inbound feed: {title, URL, number}
- ( ) view class for setting inbound feed attributes
- ( ) Viewlet to expose inbound AJAX feed
- ( ) AJAX implementation (using what is found in research or home rolled if necessary)
- ( ) Non-AJAX inbound syndication design session
- ( ) Non-AJAX inbound syndication
All packages
- ( ) Add the --coverage flag to our test calls, and work toward 100% coverage. See p4a-test as an example.
- ( ) Release to cheeseshop
Issue Tracker
If you have an issue that isn't on the above TODO list, go here.