Ticket #9559 (closed PLIP: invalid)
Vice Outbound Syndication
Reported by: | dukebody | Owned by: | vangheem |
---|---|---|---|
Priority: | minor | Milestone: | Future |
Component: | General | Version: | |
Keywords: | Cc: | vangheem |
Description
http://plone.org/products/plone/roadmap/192
Include the Vice project outbound syndication capabilities in Plone core.
Proposed by
Derek Richardson
Seconded by
Florian Schulze
Proposal type
Architecture
Repository branch
trunk
State
being-discussed
Definitions
- Vice: A project to provide advanced inbound and outbound syndication functionality in Plone, founded at the 2007 BBQ Sprint and sponsored in the 2007 Summer of Code. Vice home page.
- Outbound syndication: Web feeds originating in a Plone instance.
- Inbound syndication: Web feeds being consumed by a Plone instance.
Motivation
Current syndication for Plone is outdated: only RSS 1.0 and not using z3 technologies. This was documented in PLIP #128. This PLIP solves the same problem, but supercedes the original PLIP based on the development of Vice. Assumptions
An extensible framework is the core feature. Applications of this extensible framework should be provided, both to enable some syndication out of the box and to provide examples for other extensions and applications. Not everything must be provided out of the box, but adding new formats and sources of feeds should be easy and extending the core framework in new directions should not be blocked.
This PLIP only addresses outbound syndication. Inbound syndication support in Vice is still virtually non-existent and, if developed, will be the subject of a future PLIP. Proposal
Plone needs an extensible syndication framework with a working implementation for all relevant current content types for, at least, RSS 1.0, RSS 2.0, and Atom formats. Syndication configuration should be moved from the ZMI to a configlet in the Control Panel. Additional features, like optionally recursive feeds and support for feedburner and external authentication mechanisms, would be nice. Above all, adding new feed formats and support for new content types as feeds or feed items should be easy, so that we don't end up rewriting syndication again in the next major release. Zope3 technologies should be used whenever appropriate.
Implementation
Outbound syndication in Vice includes four packages:
- collective.baseid: this abstracts the Zope3 intid implementation to allow other types of ids than intids.
- collective.uuid: this specializes collective.baseid to provide RFC 4122 UUIDs, which are used for RSS 2.0 and Atom feeds in Vice.
- plone.syndication.outbound: this provides basic z3-style syndication capabilities
- plone.app.syndication.outbound: this uses plone.syndication.outbound and adds functionality and ui specific to Plone.
collective.uuid also depends on the five.intid package and the uuid package from cheeseshop. plone.syndication.outbound depends on feedparser to run its tests, but not for actual operation.
Vice currently has 1.0-alpha1 tags of collective.baseid and collective.uuid and 1.0-alpha2 tags of plone.syndication.outbound and plone.app.syndication.outbound in the collective (trac link). Features are still being added and a todo list is on the main Vice page. There are also buildout instructions for using the trunk, which is where development is ongoing. Deliverables
- To-do items for Vice must be triaged and selected ones must be implemented.
- 100% functional test coverage is a goal.
- Unit tests, if functional tests do not suffice.
- An extensive CUSTOMIZATION.txt with embedded doctests remains to be written.
- Internationalization and localization.
Risks
The primary risk is migration of existing feeds and feed infrastructure. There are known defects to be fixed, but the current implementation is mostly-functioning on Plone 3.0 already.
The two aspects of Vice migration are converting old feed configuration to new and replacing the syndication tool. The configuration conversion code is written. Currently it is destructive, in that it removes the old configurations. If this violates "substantial," then I am happy to change it to be non-destructive and leave the old configurations hanging around for use by other products. NB: this migration code is run manually from the configlet, not invoked automatically, due to the fact that it inspects every object in the zodb. The syntool replacement is not finished, but substantial work has been done. The aim is to redirect all the settings that are moved to the new utility/configlet combo and leave the settings (such as update base and frequency) that are not going to be migrated. We will then mark the syntool deprecated and remove it entirely in a future release. Since we're replacing the syntool with a functionally equivalent shell, I don't think that this qualifies as 'substantial migration.'
Putting Vice outbound in 3.1 will not break 3.0 code compatibility - it is purely an add-on, with the two exceptions noted under migration. Additionally, it preserves the old-style RSS links so that existing feeds will be maintained, even though they don't fit the new url pattern. Vice outbound will introduce substantial ui changes for admins and users, however, I don't think this is what is meant by not being incompatible with 3.0.
The only 3.1 feature Vice depends on is turning the feed autodiscovery link in the header into a viewlet. fschulze has already done this in trunk. Vice could be dropped if fschulze's minor patch is dropped or it could be included without autodiscovery. And I don't expect that any other features will depend on Vice outbound being in 3.1.
Progress log
Participants
Derek Richardson and the rest of the Vice team.
Change History
comment:4 Changed 6 years ago by MatthewWilkes
- Milestone changed from 4.1 to Future
Withdrawn from 4.0.
comment:5 Changed 6 years ago by esteele
- Status changed from new to closed
- Resolution set to invalid
This PLIP has been declined for consideration for Plone 4.1.
Nathan, the Framework Team has asked that you update the proposal to include your proposed non-Vice implementation. Once you've done so, please feel free to resubmit it for consideration to 4.1 or a future release.
Is there any way of reviving this PLIP for 4.1? Providing autodiscovery and atom feeds should definitely be included in Plone.
I'd be interested in championing it; however, I'd need guidance on it's implementation as I'm not sure we need to go the vice route anymore. Something very simple like what Products.fatsyndication integration IMO would probably suffice.
I also think it'd be better if we could re-expose the syndication configuration in plone with this PLIP. Many users might simply think it's not available if it is not exposed through the UI at all.
There also may be the possibility of KML for Events using the location which is even better since google could then pull map data in for the content.