<?xml version="1.0" encoding="ISO-8859-1"?><!-- OPML generated by Radio UserLand v8.0.8 on Wed, 25 Feb 2004 22:10:24 GMT -->
<opml version="1.1">	<head>		<title>enhancedAggregator.opml</title>		<dateCreated>Wed, 25 Feb 2004 15:15:32 GMT</dateCreated>		<dateModified>Wed, 25 Feb 2004 22:10:23 GMT</dateModified>		<ownerName>Marc Barrot</ownerName>		<ownerEmail>info@prec-it.com</ownerEmail>		<expansionState>3</expansionState>		<vertScrollState>1</vertScrollState>		<windowTop>44</windowTop>		<windowLeft>203</windowLeft>		<windowBottom>755</windowBottom>		<windowRight>719</windowRight>		</head>	<body>		<outline text="#title &quot;enhancedAggregator&quot;"/>		<outline text="&lt;a href=&quot;http://www.userland.com/&quot; target=&quot;_blank&quot;&gt;Userland&lt;/a&gt;, mainly Dave and Jake, took some pain in making sure that &lt;a href=&quot;http://radio.userland.com/&quot; target=&quot;_blank&quot;&gt;Radio&lt;/a&gt;'s news aggregator would be able to cope with emerging syndication formats.">			<outline text="Radio's aggregator has a driver structure, which enables developers to create handlers for formats different from ScriptingNews or RSS."/>			<outline text="It also feature module drivers, a convenient way of adding handlers for new RSS 2.0 modules/name spaces."/>			</outline>		<outline text="The &lt;a href=&quot;http://updates.prec-it.com/download/enhancedAggregator.root&quot; title=&quot;click to download&quot;&gt;enhancedAggregator tool&lt;/a&gt; is an integration testbed for new syndication formats.">			<outline text="The tool comes with a completely operational and documented &lt;a href=&quot;http://matt.blogs.it/specs/ENT/1.0/&quot; target=&quot;_blank&quot;&gt;ENT 1.0&lt;/a&gt; module driver for displaying RSS &lt;i&gt;topics&lt;/i&gt; in the aggregator.">				<outline text="All &lt;a href=&quot;http://matt.blogs.it/&quot; target=&quot;_blank&quot;&gt;Matt&lt;/a&gt; has to do now is copy and paste it into the &lt;a href=&quot;http://groups.yahoo.com/group/k-collector-support/&quot; target=&quot;_blank&quot;&gt;k-collector client&lt;/a&gt; for Radio :-)."/>				</outline>			<outline text="It has a documented skeleton &lt;a href=&quot;http://www.intertwingly.net/wiki/pie/FrontPage&quot; target=&quot;_blank&quot;&gt;Atom 0.3&lt;/a&gt; format driver. This driver is not doing much currently, since I'm not that interested in Atom development. But any Atom minded Usertalk developer can add functionality in a snap."/>			<outline text="It also has a skeleton &lt;a href=&quot;http://www.esfstandard.org/&quot; target=&quot;_blank&quot;&gt;ESF 1.0&lt;/a&gt; module driver, waiting for the &lt;a href=&quot;http://paolo.evectors.it/2004/02/24.html#a2062&quot; target=&quot;_blank&quot;&gt;eVectors&lt;/a&gt; crew to implement RSS &lt;i&gt;events&lt;/i&gt; further."/>			</outline>		<outline text="The tool also delivers state of the art installation / uninstallation code, a browser based preferences interface, and automatic/manual update code from a &lt;a href=&quot;http://frontier.userland.com/stories/storyReader$1195&quot; target=&quot;_blank&quot;&gt;webEdit&lt;/a&gt; server operated by Precision IT Management (this is all a side benefit of my work on &lt;a href=&quot;http://www.activerenderer.com/&quot; target=&quot;_blank&quot;&gt;activeRenderer&lt;/a&gt;).">			<outline text="Developers interested in releasing updates to the tool should &lt;a href=&quot;http://subhonker6.userland.com/rcsPublic/mailto?usernum=0104487&quot; target=&quot;_blank&quot;&gt;contact me&lt;/a&gt; to obtain free accounts on the webEdit server, more further below."/>			</outline>		<outline text="I'd like the enhancedAggregator to become a community driven project, allowing Frontier/Radio developers to easily test aggregation of new syndication formats and extensions, without mobilizing Userland scarse resources.">			<outline text="Once a format and implementation has stabilized, Userland could transfer any relevant part of the tool's code to the main Radio distribution with minimal efforts involved."/>			</outline>		<outline text="So, if you're interested in contributing new features to Radio's aggregator, start by &lt;a href=&quot;http://updates.prec-it.com/download/enhancedAggregator.root&quot;&gt;downloading&lt;/a&gt; the code to enhancedAggregator and expanding this paragraph.">			<outline text="By the way, if you're not a developer but would like to check out new formats in your aggregator, this is perfectly fine too, be our guest :-)"/>			<outline text="Here are some guidelines for supporting additional formats in the enhancedAggregator:">				<outline text="Start buy creating a new subtable in enhancedAggregatorSuite, with the name of the format  you intend to add (duplicating/renaming enhancedAggregatorSuite.atom would work fine)."/>				<outline text="The actual handling code for a new format should reside in the compile script. It's good practise to place the compile script inside a formatDriver subtable of your just created format table.">					<outline text="Take a look at enhancedAggregatorSuite.atom.formatDriver.compile for a start."/>					<outline text="The Userland documentation for format drivers can be found &lt;a href=&quot;http://radio.userland.com/discuss/msgReader$11975&quot; target=&quot;_blank&quot;&gt;here&lt;/a&gt;."/>					<outline text="The code for the main Userland format compiler can be found in the system.verbs.builtins.xml.rss.compileService script in Radio.root."/>					<outline text="The minimum job of the compile script is to scan a table of the feed's content, placed by Radio's aggregator in a table at [aggregatorData.root].services.[url_of_the_feed].xmlstruct, and to create a 'compiled', that is organized, aggregation ready table in [aggregatorData.root].services.[url_of_the_feed].compilation."/>					<outline text="Optionally - this should depend on a user defined preference - the compile script should modify the [aggregatorData.root].stories table if you want the compiled elements to become available to Radio's News Page, as opposed to a dedicated tool."/>					</outline>				</outline>			<outline text="Supporting RSS modules is very similar to formats:">				<outline text="Start by duplicating and renaming the enhancedAggregatorSuite.ent table for your own driver."/>				<outline text="The handling code for all the modules elements lives under a moduleDriver subtable.">					<outline text="moduleDriver tables are made of dedicated scripts and subtables, as detailed in this &lt;a href=&quot;http://frontier.userland.com/rss2ModuleSupportForXmlAggregator&quot; target=&quot;_blank&quot;&gt;Userland doc&lt;/a&gt;."/>					<outline text="Scripts must be named after the XML element they handle."/>					<outline text="All channel sub elements should have handler scripts in the subElementOfChannel table."/>					<outline text="Likewise for sub elements of item or rss tags: subElementOfItem and subElementOfRss."/>					</outline>				</outline>			<outline text="Once you're finished writing your format/module drivers, add some ancillary code :">				<outline text="First create a set of preferences for your format/module in enhancedAggregatorData.prefs">					<outline text="The bare minimum is a boolean to enable/disable support for your format or module in Radio - eg. enhancedAggregatorData.prefs.supportEnt or enhancedAggregatorData.prefs.supportAtom."/>					<outline text="Another option to alter the display of Radio's news page is a good idea if you intend to offer the possibility - eg. enhancedAggregatorData.prefs.displayTopics."/>					</outline>				<outline text="Then create an instal script for your format or module in the format/module's table.">					<outline text="The instal script is responsible for installing / uninstalling the proper hooks in Radio's driver structure according to the current pref."/>					<outline text="Check out enhancedAggregatorSuite.ent.instal or enhancedAggregator.atom.instal for examples of such code."/>					</outline>				<outline text="Then modify the enhancedAggregatorData.ui.prefs.template outline and enhancedAggregatorSuite.ui.prefs.edit script.">					<outline text="This provides the user a way of modifying your format/module's preferences in the browser when clicking on enhancedAggregator in the Radio's desktop home page's status center, or Tools page."/>					</outline>				<outline text="Finally update the enhancedAggregatorSuite.instal and enhancedAggregatorSuite.scratchpad.uninstal scripts.">					<outline text="This adds proper installation of your drivers when Radio starts and uninstallation when the tool is deactivated from Radio's Tools desktop website page or removed from the Tools folder altogether."/>					</outline>				</outline>			<outline text="That's it, it actually took me longer to write these instructions than to add a skeleton module for ESF :-)"/>			<outline text="Once your module is properly debugged, you can contribute it to the community by updating the enhancedAggregator root distribution.">				<outline text="To do this, you need to get an account on a &lt;a href=&quot;http://frontier.userland.com/stories/storyReader$1195&quot; target=&quot;_blank&quot;&gt;webEdit&lt;/a&gt; server from from Precision IT Management, and instal access to the webEdit client on your Radio copy."/>				<outline text="Both steps should not take more than 5 minutes, &lt;a href=&quot;http://subhonker6.userland.com/rcsPublic/mailto?usernum=0104487&quot; target=&quot;_blank&quot;&gt;contact me&lt;/a&gt; whenever you're ready."/>				</outline>			</outline>		</body>	</opml>