<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet href="http://feeds.feedburner.com/~d/styles/rss2enclosuresfull.xsl" type="text/xsl" media="screen"?><?xml-stylesheet href="http://feeds.feedburner.com/~d/styles/itemcontent.css" type="text/css" media="screen"?><!-- generator="wordpress/2.3.3" --><rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:media="http://search.yahoo.com/mrss/" xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>mrtopf.de » Planet Plone</title>
	<link>http://mrtopf.de/blog</link>
	<description>Web2.0, Plone, Second Life, New Marketing, Data Portability</description>
	<pubDate>Sat, 19 Jul 2008 16:40:10 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.3.3</generator>
	<language>en</language>
			<itunes:explicit>no</itunes:explicit><itunes:subtitle>Web2.0, Plone, Second Life, New Marketing, Data Portability</itunes:subtitle><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" href="http://feeds.feedburner.com/dev_comlounge_net" type="application/rss+xml" /><item>
		<title>EuroPython 2008: Dr. Strangelove or how I Learned to Stop Worrying and Love Zope 3 by Charlie Clark</title>
		<link>http://feeds.feedburner.com/~r/dev_comlounge_net/~3/329670200/</link>
		<comments>http://mrtopf.de/blog/plone/europython-2008-dr-strangelove-or-how-i-learned-to-stop-worrying-and-love-zope-3-by-charlie-clark/#comments</comments>
		<pubDate>Tue, 08 Jul 2008 09:32:59 +0000</pubDate>
		<dc:creator>Christian Scholz</dc:creator>
		
		<category><![CDATA[Conferences and Meetings]]></category>

		<category><![CDATA[English Posts]]></category>

		<category><![CDATA[Planet Plone]]></category>

		<category><![CDATA[Plone]]></category>

		<category><![CDATA[Python]]></category>

		<category><![CDATA[Zope]]></category>

		<guid isPermaLink="false">http://mrtopf.de/blog/plone/europython-2008-dr-strangelove-or-how-i-learned-to-stop-worrying-and-love-zope-3-by-charlie-clark/</guid>
		<description><![CDATA[Charlie Clark was talking about his Zope3 experiences and why it is a great framework to work with and here is my try on a summary:
He started with a brief history of Zope2, how it started, how the CMF came up, introducing new concepts, like Filesystem development, Skinning support and a standard set of tools.
Zope3 [...]]]></description>
			<content:encoded><![CDATA[<p>Charlie Clark was talking about his Zope3 experiences and why it is a great framework to work with and here is my try on a summary:</p>
<p>He started with a brief history of Zope2, how it started, how the CMF came up, introducing new concepts, like Filesystem development, Skinning support and a standard set of tools.</p>
<p>Zope3 was then meant to overcome problems in Zope2 and the CMF. Development started in 2001 and aimed to be a &#8220;Zope for developers&#8221;. It was a complete rewrite and complete redesign.  In the meantime Plone and other projects such as Ruby on Railes and others raised in popularity.</p>
<h3 id="_the-business-view_1" >The business view</h3>
<p>If you are a company it is important to get paid for your programming work. You will always have a technology lag though because you usually cannot be always on the cutting edge with all people. You try to differentiate yourself from the market by IP, packaging up your software etc.</p>
<p>But don&#8217;t bet your business on it!</p>
<p>(didn&#8217;t get the rest though unfortunately)</p>
<h3 id="_is-zope-right-for-yo_1" >Is Zope right for you?</h3>
<p>What is available? Plone is out there but migrating Plone versions is a pain but might get better.<br />
You can also use CMF and Zope2 to have more flexibility but in fact you maybe directly should look at Zope3 but maybe not the whole thing directly.</p>
<p>Reasion: The Joy of using Python.</p>
<h3 id="_dont-panic_1" >Don&#8217;t Panic!</h3>
<p>Zope3 is big but not complex. It just is different and it takes a while to get used to it.</p>
<p>Some figures: Plone objects have about 750 attributes when you instanciate them, CMF objects about 350, Zope3 objects about 50, mostly less. The less attributes you need to understand, the better.</p>
<h3 id="_whats-good-about-zop_1" >What&#8217;s good about Zope3</h3>
<p>First: No acquisition. Back then it was quite a great invention in a CGI environment but unfortunately acquisition can have unpredicted sideeffects (esp. regarding security). In Zope3 it has been removed and you might need to get used to it.</p>
<p>The basic principle: Explicit is better than implicit.</p>
<p>Zope3 also has the Component Architecture which is great in itself but sounds rather complicated. The amount of configuration probably is what keeps people away from Zope3 right now. But configuration also has it&#8217;s benefits because programmers and computers know exactly about what&#8217;s going on here. </p>
<p>One question: Do I need components in a one-off site? This is a loaded question which can create a lot of discussions. But when you use it you can later get a lot of flexibility. Also remember that maybe in your next project you might want to reuse part of what you did for the one website. Using components then makes it easier.</p>
<h3 id="_everything-is-an-int_1" >Everything is an interface</h3>
<p>One of the key concepts is an Interface, which is not just a specification but also a membership card. It&#8217;s a way to get to stuff. </p>
<h3 id="_documentation-consid_1" >Documentation considered harmful?</h3>
<p>Documentation for Zope3 is right now in READMEs mainly. It is unfortunately not as well documented as other projects which is a barrier of entry for many people. The code is readable but some of the concepts are somewhat abstract esp. for people who never used adapters etc.</p>
<p>But there is a great book: <a href="http://worldcookery.com/">Web Component Development with Zope 3 by Philipp von Weitershausen</a>. For Plone there is of course <a href="http://www.packtpub.com/Professional-Plone-web-applications-CMS/book">Martin&#8217;s book</a> which also explains parts of Zope3 like adapters etc.</p>
<h3 id="_zope-3-in-5-minutes_1" >Zope 3 in 5 minutes</h3>
<ol>
<li>Write your interface</li>
<li>Write your content type</li>
<li>Configure your content type</li>
<li>Views</li>
<li>Configure your view</li>
</ol>
<h3 id="_our-experience_1" >Our experience</h3>
<ul>
<li>PHP programmers can migrate to Python</li>
<li>HTML developers are very happy with ZPT</li>
<li>Allow two months to transition</li>
</ul>
<p>He then demoed a simple reimplementation of a Plone document type with Zope3 mechanics. He defined an interface, create a content type which derived from PortalContent of the CMF and configured it. He then showed the browser part of it where the views get defined. </p>
<p><span style="font-style: italic;">(this transcript comes without any guarantee for correctness)</span></p>

    <!-- fb_sitestats code START -->
    <script src="http://feeds.feedburner.com/~s/mrtopfde?i=http://mrtopf.de/blog/plone/europython-2008-dr-strangelove-or-how-i-learned-to-stop-worrying-and-love-zope-3-by-charlie-clark/" type="text/javascript" charset="utf-8"></script>
    <!-- fb_sitestats code END -->
    <div class="feedflare">
<a href="http://feeds.feedburner.com/~f/dev_comlounge_net?a=b4qB5J"><img src="http://feeds.feedburner.com/~f/dev_comlounge_net?i=b4qB5J" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/dev_comlounge_net?a=a2FvTj"><img src="http://feeds.feedburner.com/~f/dev_comlounge_net?i=a2FvTj" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/dev_comlounge_net?a=MIBLej"><img src="http://feeds.feedburner.com/~f/dev_comlounge_net?i=MIBLej" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/dev_comlounge_net?a=GDWD8J"><img src="http://feeds.feedburner.com/~f/dev_comlounge_net?i=GDWD8J" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/dev_comlounge_net?a=T3kD9J"><img src="http://feeds.feedburner.com/~f/dev_comlounge_net?i=T3kD9J" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/dev_comlounge_net/~4/329670200" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://mrtopf.de/blog/plone/europython-2008-dr-strangelove-or-how-i-learned-to-stop-worrying-and-love-zope-3-by-charlie-clark/feed/</wfw:commentRss>
		<feedburner:origLink>http://mrtopf.de/blog/plone/europython-2008-dr-strangelove-or-how-i-learned-to-stop-worrying-and-love-zope-3-by-charlie-clark/</feedburner:origLink></item>
		<item>
		<title>Plone Conference Registration opens!</title>
		<link>http://feeds.feedburner.com/~r/dev_comlounge_net/~3/324331379/</link>
		<comments>http://mrtopf.de/blog/plone/plone-conference-registration-opens/#comments</comments>
		<pubDate>Tue, 01 Jul 2008 20:45:10 +0000</pubDate>
		<dc:creator>Christian Scholz</dc:creator>
		
		<category><![CDATA[Conferences and Meetings]]></category>

		<category><![CDATA[English Posts]]></category>

		<category><![CDATA[Planet Plone]]></category>

		<category><![CDATA[Plone]]></category>

		<guid isPermaLink="false">http://mrtopf.de/blog/plone/plone-conference-registration-opens/</guid>
		<description><![CDATA[
From today on you are able to register for the Plone Conference 2008, held in Washington, D.C. from October 8-10, preceeded by Trainings (Oct 6-7, to be paid separately) and followed by sprints (Oct 11-12).
The Early Bird price is US$ 500,- (EUR 317,- with todays rate) and Early Bird end on August 01. After that [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://plone.org/events/conferences/2008-washington-dc/"><img src="http://plone.org/events/conferences/2008-washington-dc/ploneconf.jpg" /></a></p>
<p>From today on you are able to register for the <a href="http://plone.org/events/conferences/2008-washington-dc/">Plone Conference 2008</a>, held in Washington, D.C. from October 8-10, preceeded by Trainings (Oct 6-7, to be paid separately) and followed by sprints (Oct 11-12).</p>
<p>The Early Bird price is US$ 500,- (EUR 317,- with todays rate) and Early Bird end on August 01. After that it&#8217;s US$ 550,- (EUR 349,-). </p>
<p><span style="font-weight: bold;"><big><a href="http://ploneconf2008.eventbrite.com/">To register click this link!</a></big></span></p>
<p>And for all information about the conference <a href="http://plone.org/events/conferences/2008-washington-dc/">click here</a>!</p>
<p>See you in Washington! :-)Technorati Tags: <a class="performancingtags" href="http://technorati.com/tag/ploneconference2008" rel="tag">ploneconference2008</a>, <a class="performancingtags" href="http://technorati.com/tag/plone" rel="tag">plone</a>, <a class="performancingtags" href="http://technorati.com/tag/registration" rel="tag">registration</a>, <a class="performancingtags" href="http://technorati.com/tag/conference" rel="tag">conference</a></p>

    <!-- fb_sitestats code START -->
    <script src="http://feeds.feedburner.com/~s/mrtopfde?i=http://mrtopf.de/blog/plone/plone-conference-registration-opens/" type="text/javascript" charset="utf-8"></script>
    <!-- fb_sitestats code END -->
    <div class="feedflare">
<a href="http://feeds.feedburner.com/~f/dev_comlounge_net?a=xc4kYJ"><img src="http://feeds.feedburner.com/~f/dev_comlounge_net?i=xc4kYJ" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/dev_comlounge_net?a=r6Telj"><img src="http://feeds.feedburner.com/~f/dev_comlounge_net?i=r6Telj" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/dev_comlounge_net?a=LaueNj"><img src="http://feeds.feedburner.com/~f/dev_comlounge_net?i=LaueNj" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/dev_comlounge_net?a=bOO1pJ"><img src="http://feeds.feedburner.com/~f/dev_comlounge_net?i=bOO1pJ" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/dev_comlounge_net?a=IlrKLJ"><img src="http://feeds.feedburner.com/~f/dev_comlounge_net?i=IlrKLJ" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/dev_comlounge_net/~4/324331379" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://mrtopf.de/blog/plone/plone-conference-registration-opens/feed/</wfw:commentRss>
		<feedburner:origLink>http://mrtopf.de/blog/plone/plone-conference-registration-opens/</feedburner:origLink></item>
		<item>
		<title>Sponsor the Plone Conference 2008!</title>
		<link>http://feeds.feedburner.com/~r/dev_comlounge_net/~3/317935948/</link>
		<comments>http://mrtopf.de/blog/plone/sponsor-the-plone-conference-2008-2/#comments</comments>
		<pubDate>Mon, 23 Jun 2008 08:00:40 +0000</pubDate>
		<dc:creator>Christian Scholz</dc:creator>
		
		<category><![CDATA[Conferences and Meetings]]></category>

		<category><![CDATA[English Posts]]></category>

		<category><![CDATA[Planet Plone]]></category>

		<category><![CDATA[Plone]]></category>

		<guid isPermaLink="false">http://mrtopf.de/blog/vlog/sponsor-the-plone-conference-2008-2/</guid>
		<description><![CDATA[
The Plone Conference 2008 is looking for sponsors! If you want it to be a rocking conference, then consider being a sponsor.
This time also individuals are able to be a sponsor in one of 4 categories (starting at US$100). So come and join Google and others and be a sponsor!
For all information just click this [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://plone.org/events/conferences/2008-washington-dc/"><img src="http://mrtopf.de/blog/wp-content/uploads/2008/04/ploneconf.jpg" /></a></p>
<p>The <a href="http://plone.org/events/conferences/2008-washington-dc/">Plone Conference 2008</a> is looking for sponsors! If you want it to be a rocking conference, then consider being a sponsor.</p>
<p>This time also individuals are able to be a sponsor in one of 4 categories (starting at US$100). So come and join Google and others and be a sponsor!</p>
<p><a href="http://plone.org/events/conferences/2008-washington-dc/sponsors">For all information just click this link!</a></p>
<p>Technorati Tags: <a class="performancingtags" href="http://technorati.com/tag/ploneconference2008" rel="tag">ploneconference2008</a>, <a class="performancingtags" href="http://technorati.com/tag/plone" rel="tag">plone</a>, <a class="performancingtags" href="http://technorati.com/tag/sponsoring" rel="tag">sponsoring</a></p>

    <!-- fb_sitestats code START -->
    <script src="http://feeds.feedburner.com/~s/mrtopfde?i=http://mrtopf.de/blog/plone/sponsor-the-plone-conference-2008-2/" type="text/javascript" charset="utf-8"></script>
    <!-- fb_sitestats code END -->
    <div class="feedflare">
<a href="http://feeds.feedburner.com/~f/dev_comlounge_net?a=mCTIzI"><img src="http://feeds.feedburner.com/~f/dev_comlounge_net?i=mCTIzI" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/dev_comlounge_net?a=7HHlai"><img src="http://feeds.feedburner.com/~f/dev_comlounge_net?i=7HHlai" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/dev_comlounge_net?a=0SgVri"><img src="http://feeds.feedburner.com/~f/dev_comlounge_net?i=0SgVri" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/dev_comlounge_net?a=y9Qo2I"><img src="http://feeds.feedburner.com/~f/dev_comlounge_net?i=y9Qo2I" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/dev_comlounge_net?a=rgyNvI"><img src="http://feeds.feedburner.com/~f/dev_comlounge_net?i=rgyNvI" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/dev_comlounge_net/~4/317935948" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://mrtopf.de/blog/plone/sponsor-the-plone-conference-2008-2/feed/</wfw:commentRss>
		<feedburner:origLink>http://mrtopf.de/blog/plone/sponsor-the-plone-conference-2008-2/</feedburner:origLink></item>
		<item>
		<title>Hans Rosling will be speaking at EuroPython 2008</title>
		<link>http://feeds.feedburner.com/~r/dev_comlounge_net/~3/311202471/</link>
		<comments>http://mrtopf.de/blog/plone/planetplone/hans-rosling-will-be-speaking-at-europython-2008/#comments</comments>
		<pubDate>Fri, 13 Jun 2008 14:56:26 +0000</pubDate>
		<dc:creator>Christian Scholz</dc:creator>
		
		<category><![CDATA[Conferences and Meetings]]></category>

		<category><![CDATA[English Posts]]></category>

		<category><![CDATA[Planet Plone]]></category>

		<category><![CDATA[Python]]></category>

		<guid isPermaLink="false">http://mrtopf.de/blog/plone/planetplone/hans-rosling-will-be-speaking-at-europython-2008/</guid>
		<description><![CDATA[Here is something I am really looking forward to:
Hans Rosling, professor of International Health at Karolinska Institutet and co-founder of Gapminder Foundation, will be holding one of the two keynotes at the annual EuroPython conference this year! 
If you don&#8217;t know Hans Rosling, I would advise you to watch the two talks he gave at [...]]]></description>
			<content:encoded><![CDATA[<p>Here is something I am really looking forward to:</p>
<p><a href="http://www.europython.org/Bio/HansRosling">Hans Rosling</a>, professor of International Health at Karolinska Institutet and co-founder of <a href="http://www.gapminder.org/">Gapminder Foundation</a>, will be holding one of the two keynotes at the annual <a href="http://europython.org">EuroPython</a> conference this year! </p>
<p>If you don&#8217;t know Hans Rosling, I would advise you to watch the <a href="http://www.ted.com/index.php/speakers/view/id/90">two talks he gave at the TED conference</a> or simply coming to this years EuroPython which will happen from July 7-12 (conference is going to be from monday to wednesday,  followed by sprints). Hans Rosling will be speaking on Tuesday evening before the Conference Dinner. </p>
<p>What I like about him is his great presentation style from what many people could IMHO learn a lot (although it probably also does not fit everybody). But it&#8217;s not only that but it&#8217;s also the topics he talks about, like economic, social and environmental issues of Africa, what he was talking about at TED. So for these two things I am very much looking forward to this keynote. </p>
<p>And if you are still unsure whether to come or not: As compared to TED you don&#8217;t need a special invitation and you don&#8217;t need to pay US$6000,- but only EUR 160,- (Early Bird is over unfortunately). So isn&#8217;t this one more reason to come? <img src='http://mrtopf.de/blog/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /><br />
(and thanks to Lennart Regebro for initiating this!)</p>
<p>Here is the second TED talk: </p>
<p><!--cut and paste-->
<div class="youtube-video"><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0,0,0" width="432" height="285" id="VE_Player" align="middle">
<param name="movie" value="http://static.videoegg.com/ted/flash/loader.swf"> </param><PARAM NAME="FlashVars" VALUE="bgColor=FFFFFF&#038;file=http://static.videoegg.com/ted/movies/HANSROSLING-2007_high.flv&amp;autoPlay=false&amp;fullscreenURL=http://static.videoegg.com/ted/flash/fullscreen.html&amp;forcePlay=false&amp;logo=&amp;allowFullscreen=true"> </param>
<param name="quality" value="high"> </param>
<param name="allowScriptAccess" value="always"> </param>
<param name="bgcolor" value="#FFFFFF"> </param>
<param name="scale" value="noscale"> </param>
<param name="wmode" value="window"> </param><embed src="http://static.videoegg.com/ted/flash/loader.swf" FlashVars="bgColor=FFFFFF&#038;file=http://static.videoegg.com/ted/movies/HANSROSLING-2007_high.flv&amp;autoPlay=false&amp;fullscreenURL=http://static.videoegg.com/ted/flash/fullscreen.html&amp;forcePlay=false&amp;logo=&amp;allowFullscreen=true" quality="high" allowScriptAccess="always" bgcolor="#FFFFFF" scale="noscale" wmode="window" width="432" height="285" name="VE_Player" align="middle" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer"> </embed></object></div>
<p>(<a href="http://www.ted.com/talks/view/id/140">link to the video</a>)</p>
<p>Technorati Tags: <a class="performancingtags" href="http://technorati.com/tag/europython2008" rel="tag">europython2008</a>, <a class="performancingtags" href="http://technorati.com/tag/europython" rel="tag">europython</a>, <a class="performancingtags" href="http://technorati.com/tag/hansrosling" rel="tag">hansrosling</a>, <a class="performancingtags" href="http://technorati.com/tag/ted" rel="tag">ted</a>, <a class="performancingtags" href="http://technorati.com/tag/africa" rel="tag">africa</a>, <a class="performancingtags" href="http://technorati.com/tag/keynote" rel="tag">keynote</a></p>

    <!-- fb_sitestats code START -->
    <script src="http://feeds.feedburner.com/~s/mrtopfde?i=http://mrtopf.de/blog/plone/planetplone/hans-rosling-will-be-speaking-at-europython-2008/" type="text/javascript" charset="utf-8"></script>
    <!-- fb_sitestats code END -->
    <div class="feedflare">
<a href="http://feeds.feedburner.com/~f/dev_comlounge_net?a=MfnI0I"><img src="http://feeds.feedburner.com/~f/dev_comlounge_net?i=MfnI0I" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/dev_comlounge_net?a=s3yPpi"><img src="http://feeds.feedburner.com/~f/dev_comlounge_net?i=s3yPpi" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/dev_comlounge_net?a=4GzGQi"><img src="http://feeds.feedburner.com/~f/dev_comlounge_net?i=4GzGQi" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/dev_comlounge_net?a=khN38I"><img src="http://feeds.feedburner.com/~f/dev_comlounge_net?i=khN38I" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/dev_comlounge_net?a=10AeGI"><img src="http://feeds.feedburner.com/~f/dev_comlounge_net?i=10AeGI" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/dev_comlounge_net/~4/311202471" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://mrtopf.de/blog/plone/planetplone/hans-rosling-will-be-speaking-at-europython-2008/feed/</wfw:commentRss>
		<media:content url="http://feeds.feedburner.com/~r/dev_comlounge_net/~5/311202472/loader.swf" fileSize="5908" type="application/x-shockwave-flash" /><itunes:subtitle>Here is something I am really looking forward to: Hans Rosling, professor of International Health at Karolinska Institutet and co-founder of Gapminder Foundation, will be holding one of the two keynotes at the annual EuroPython conference this year! If yo</itunes:subtitle><itunes:summary>Here is something I am really looking forward to: Hans Rosling, professor of International Health at Karolinska Institutet and co-founder of Gapminder Foundation, will be holding one of the two keynotes at the annual EuroPython conference this year! If you don&amp;#8217;t know Hans Rosling, I would advise you to watch the two talks he gave at [...]</itunes:summary><itunes:keywords>Conferences and Meetings, English Posts, Planet Plone, Python</itunes:keywords><feedburner:origLink>http://mrtopf.de/blog/plone/planetplone/hans-rosling-will-be-speaking-at-europython-2008/</feedburner:origLink><enclosure url="http://feeds.feedburner.com/~r/dev_comlounge_net/~5/311202472/loader.swf" length="5908" type="application/x-shockwave-flash" /><feedburner:origEnclosureLink>http://static.videoegg.com/ted/flash/loader.swf</feedburner:origEnclosureLink></item>
		<item>
		<title>How to resolve uids in Archetypes content (technical)</title>
		<link>http://feeds.feedburner.com/~r/dev_comlounge_net/~3/303554212/</link>
		<comments>http://mrtopf.de/blog/plone/how-to-resolve-uids-in-archetypes-content-technical/#comments</comments>
		<pubDate>Tue, 03 Jun 2008 08:24:15 +0000</pubDate>
		<dc:creator>Christian Scholz</dc:creator>
		
		<category><![CDATA[English Posts]]></category>

		<category><![CDATA[Planet Plone]]></category>

		<category><![CDATA[Plone]]></category>

		<guid isPermaLink="false">http://mrtopf.de/blog/plone/how-to-resolve-uids-in-archetypes-content-technical/</guid>
		<description><![CDATA[Back in the day the normal way to create stable hyperlinks in Plone (which do not break should you move the target page or rename it) was by using UIDs. A UID is the unique identifier of an Archetypes based object in Plone. Those links were automatically created by the WYSIWYG editor kupu and looked [...]]]></description>
			<content:encoded><![CDATA[<p>Back in the day the normal way to create stable hyperlinks in Plone (which do not break should you move the target page or rename it) was by using UIDs. A UID is the unique identifier of an Archetypes based object in Plone. Those links were automatically created by the WYSIWYG editor kupu and looked like this: <code>/resolveuid/UID_HERE</code>. The resolveuid script would then lookup the object with that UID and redirect to the correct page (this also works with images).</p>
<p>This was a good solution but had it&#8217;s drawback in the redirect because it was an additional hit on the server and does not play too well with caching. A better solution would be to &#8220;compile&#8221; those links when saving a page and updating it should a linked page change (which should be possible with today&#8217;s events) but unfortunately to make this work like this is a lot of work.</p>
<p>So in order to get rid of these resolveuid-Links in the HTML source I wrote a little method which resolves them when creating the HTML content. This takes more time on read but this time is needed anyway later on in the subsequent call of the redirect. It even does not have the HTTP overhead.</p>
<p>So here is how it looks:</p>
<p>First we need a regular expression to find those links in the source:</p>
<pre>
import re
expr=re.compile("resolveuid\/([0-9a-f]+)",re.M)
&lt;/pre&gt;

Next I created an additional method in that Archetype object which resolves these URLs in the "content" field (this depends on your type, it could also be done inside a view of course):

&lt;pre&gt;
    def getContent2(self):
        """returnt he content"""
        from Products.CMFCore.utils import getToolByNameTechnorati Tags: &lt;a class="performancingtags" href="http://technorati.com/tag/plone" rel="tag"&gt;plone&lt;/a&gt;, &lt;a class="performancingtags" href="http://technorati.com/tag/uid" rel="tag"&gt;uid&lt;/a&gt;, &lt;a class="performancingtags" href="http://technorati.com/tag/kupu" rel="tag"&gt;kupu&lt;/a&gt;, &lt;a class="performancingtags" href="http://technorati.com/tag/links" rel="tag"&gt;links&lt;/a&gt;
        reference_tool = getToolByName(self, 'reference_catalog')
        map = []
        content = self.getContent()
        uuids = expr.findall(content)
        for uuid in uuids:
                obj = reference_tool.lookupObject(uuid)
                if not obj:
                        return ""
                target = obj.absolute_url()
                source = 'resolveuid/'+uuid
                content = content.replace(source,target)
        return content
</pre>
<p>In this case I created a second accessor method called <code>getContent2()</code> which I call in my skin.</p>
<p>This should help you then with unneeded redirects. Of course there are better solutions esp. if you think about this issue from the beginning but this quick fix should help.</p>
<p>These days btw. there&#8217;s the Redirect Tool which automatically remembers renamed/moved page locations and redirects from the old to the new location. This should be better in case you don&#8217;t move things but for moved pages you still have redirects then. So to me the best solution would still be a notification of the source object to update itself.</p>

    <!-- fb_sitestats code START -->
    <script src="http://feeds.feedburner.com/~s/mrtopfde?i=http://mrtopf.de/blog/plone/how-to-resolve-uids-in-archetypes-content-technical/" type="text/javascript" charset="utf-8"></script>
    <!-- fb_sitestats code END -->
    <div class="feedflare">
<a href="http://feeds.feedburner.com/~f/dev_comlounge_net?a=0ekrXI"><img src="http://feeds.feedburner.com/~f/dev_comlounge_net?i=0ekrXI" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/dev_comlounge_net?a=PtKQji"><img src="http://feeds.feedburner.com/~f/dev_comlounge_net?i=PtKQji" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/dev_comlounge_net?a=CerbSi"><img src="http://feeds.feedburner.com/~f/dev_comlounge_net?i=CerbSi" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/dev_comlounge_net?a=gmFn1I"><img src="http://feeds.feedburner.com/~f/dev_comlounge_net?i=gmFn1I" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/dev_comlounge_net?a=OJUHLI"><img src="http://feeds.feedburner.com/~f/dev_comlounge_net?i=OJUHLI" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/dev_comlounge_net/~4/303554212" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://mrtopf.de/blog/plone/how-to-resolve-uids-in-archetypes-content-technical/feed/</wfw:commentRss>
		<feedburner:origLink>http://mrtopf.de/blog/plone/how-to-resolve-uids-in-archetypes-content-technical/</feedburner:origLink></item>
		<item>
		<title>Plone Books!</title>
		<link>http://feeds.feedburner.com/~r/dev_comlounge_net/~3/296815563/</link>
		<comments>http://mrtopf.de/blog/plone/plone-books/#comments</comments>
		<pubDate>Fri, 23 May 2008 20:24:13 +0000</pubDate>
		<dc:creator>Christian Scholz</dc:creator>
		
		<category><![CDATA[English Posts]]></category>

		<category><![CDATA[MrTopf packt aus]]></category>

		<category><![CDATA[Planet Plone]]></category>

		<category><![CDATA[Plone]]></category>

		<guid isPermaLink="false">http://mrtopf.de/blog/plone/plone-books/</guid>
		<description><![CDATA[Today I got a book, but look for yourself:

 
  
(or click this link if you cannot see the video)
Technorati Tags: plone, books, seesmic

    
    
    
    ]]></description>
			<content:encoded><![CDATA[<p>Today I got a book, but look for yourself:</p>
<div class="youtube-video"><object width="425" height=" 353">
<param name="movie" value="http://seesmic.com/Standalone.swf?video=2dbm8siNOV"> </param>
<param name="allowFullScreen" value="true" > </param><embed src="http://seesmic.com/Standalone.swf?video=2dbm8siNOV" type="application/x-shockwave-flash" allowFullScreen="true" wmode="transparent" allowScriptAccess="sameDomain" width="425" height=" 353"> </embed></object></div>
<p>(<a href="http://seesmic.com/app#/video/2dbm8siNOV/watch">or click this link if you cannot see the video</a>)</p>
<p>Technorati Tags: <a class="performancingtags" href="http://technorati.com/tag/plone" rel="tag">plone</a>, <a class="performancingtags" href="http://technorati.com/tag/books" rel="tag">books</a>, <a class="performancingtags" href="http://technorati.com/tag/seesmic" rel="tag">seesmic</a></p>

    <!-- fb_sitestats code START -->
    <script src="http://feeds.feedburner.com/~s/mrtopfde?i=http://mrtopf.de/blog/plone/plone-books/" type="text/javascript" charset="utf-8"></script>
    <!-- fb_sitestats code END -->
    <div class="feedflare">
<a href="http://feeds.feedburner.com/~f/dev_comlounge_net?a=qpOMSH"><img src="http://feeds.feedburner.com/~f/dev_comlounge_net?i=qpOMSH" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/dev_comlounge_net?a=IYnQOh"><img src="http://feeds.feedburner.com/~f/dev_comlounge_net?i=IYnQOh" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/dev_comlounge_net?a=QzIish"><img src="http://feeds.feedburner.com/~f/dev_comlounge_net?i=QzIish" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/dev_comlounge_net?a=vcAZ9H"><img src="http://feeds.feedburner.com/~f/dev_comlounge_net?i=vcAZ9H" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/dev_comlounge_net?a=Ml3yhH"><img src="http://feeds.feedburner.com/~f/dev_comlounge_net?i=Ml3yhH" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/dev_comlounge_net/~4/296815563" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://mrtopf.de/blog/plone/plone-books/feed/</wfw:commentRss>
		<feedburner:origLink>http://mrtopf.de/blog/plone/plone-books/</feedburner:origLink></item>
		<item>
		<title>Promote Open Standards!</title>
		<link>http://feeds.feedburner.com/~r/dev_comlounge_net/~3/288141714/</link>
		<comments>http://mrtopf.de/blog/plone/planetplone/promote-open-standards/#comments</comments>
		<pubDate>Sun, 11 May 2008 16:49:39 +0000</pubDate>
		<dc:creator>Christian Scholz</dc:creator>
		
		<category><![CDATA[Data Portability]]></category>

		<category><![CDATA[English Posts]]></category>

		<category><![CDATA[Planet Plone]]></category>

		<category><![CDATA[World of SL]]></category>

		<guid isPermaLink="false">http://mrtopf.de/blog/plone/planetplone/promote-open-standards/</guid>
		<description><![CDATA[Do you think it is bad if your data is locked in to a single vendor? Do you think it is bad if you are locked in in using software owned by a single vendor? Do you think this is especially bad if the one using the software is the European Parliament? Don&#8217;t you think [...]]]></description>
			<content:encoded><![CDATA[<p>Do you think it is bad if your data is locked in to a single vendor? Do you think it is bad if you are locked in in using software owned by a single vendor? Do you think this is especially bad if the one using the software is the European Parliament? Don&#8217;t you think this is bad  especially for a democratic institution?</p>
<p>If so, then please sign this petition which calls for using Open Standards, more competition and no vendor lock-in for the EU parliament!  <a href="http://openparliament.eu/petition">Read the full petition here</a> and <a href="http://openparliament.eu/">please sign it here!</a>.</p>
<p>Please help to promote Open Standards and Interoperability!</p>
<p>(via <a href="http://www.zeapartners.org/articles/openparliament008">ZEA Partners</a>)<br />Technorati Tags: <a class="performancingtags" href="http://technorati.com/tag/dataportability" rel="tag">dataportability</a>, <a class="performancingtags" href="http://technorati.com/tag/openstandards" rel="tag">openstandards</a>, <a class="performancingtags" href="http://technorati.com/tag/eu" rel="tag">eu</a>, <a class="performancingtags" href="http://technorati.com/tag/parliament" rel="tag">parliament</a>, <a class="performancingtags" href="http://technorati.com/tag/petition" rel="tag">petition</a></p>

    <!-- fb_sitestats code START -->
    <script src="http://feeds.feedburner.com/~s/mrtopfde?i=http://mrtopf.de/blog/plone/planetplone/promote-open-standards/" type="text/javascript" charset="utf-8"></script>
    <!-- fb_sitestats code END -->
    <div class="feedflare">
<a href="http://feeds.feedburner.com/~f/dev_comlounge_net?a=GkKtnH"><img src="http://feeds.feedburner.com/~f/dev_comlounge_net?i=GkKtnH" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/dev_comlounge_net?a=DDleHh"><img src="http://feeds.feedburner.com/~f/dev_comlounge_net?i=DDleHh" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/dev_comlounge_net?a=jiFXWh"><img src="http://feeds.feedburner.com/~f/dev_comlounge_net?i=jiFXWh" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/dev_comlounge_net?a=pTNYoH"><img src="http://feeds.feedburner.com/~f/dev_comlounge_net?i=pTNYoH" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/dev_comlounge_net?a=qeb6VH"><img src="http://feeds.feedburner.com/~f/dev_comlounge_net?i=qeb6VH" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/dev_comlounge_net/~4/288141714" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://mrtopf.de/blog/plone/planetplone/promote-open-standards/feed/</wfw:commentRss>
		<feedburner:origLink>http://mrtopf.de/blog/plone/planetplone/promote-open-standards/</feedburner:origLink></item>
		<item>
		<title>Progress on DataPortability in the project and at Digg</title>
		<link>http://feeds.feedburner.com/~r/dev_comlounge_net/~3/281700207/</link>
		<comments>http://mrtopf.de/blog/plone/progress-on-dataportability-in-the-project-and-at-digg/#comments</comments>
		<pubDate>Thu, 01 May 2008 22:00:50 +0000</pubDate>
		<dc:creator>Christian Scholz</dc:creator>
		
		<category><![CDATA[Data Portability]]></category>

		<category><![CDATA[English Posts]]></category>

		<category><![CDATA[Planet Plone]]></category>

		<category><![CDATA[Plone]]></category>

		<guid isPermaLink="false">http://mrtopf.de/blog/plone/progress-on-dataportability-in-the-project-and-at-digg/</guid>
		<description><![CDATA[Steve Williams from Digg today announced that digg.com will provide technologies to allow for more data portability. As he writes on the digg blog, these are:

XFN for marking up your contacts
hCard for marking up your profile information
RDFa for e.g. marking up Dublin Core Metadata and similar information (I wonder if we do that in Plone, [...]]]></description>
			<content:encoded><![CDATA[<p>Steve Williams from <a href="http://digg.com">Digg</a> today <a href="http://blog.digg.com/?p=120">announced</a> that digg.com will provide technologies to allow for more <a href="http://dataportability.org">data portability</a>. As he writes on the digg blog, these are:</p>
<ul>
<li><a href="http://en.wikipedia.org/wiki/XHTML_Friends_Network">XFN</a> for marking up your contacts</li>
<li><a href="http://en.wikipedia.org/wiki/Hcard">hCard</a> for marking up your profile information</li>
<li><a href="http://en.wikipedia.org/wiki/RDFa">RDFa</a> for e.g. marking up <a href="http://en.wikipedia.org/wiki/Dublin_Core">Dublin Core Metadata</a> and similar information (I wonder if we do that in <a href="http://plone.org">Plone</a>, I guess not but we probably should as we already store a lot of DC Metadata).</li>
</ul>
<p>This is once again great news and a good next step in making Data Portability happen! We need more of this!</p>
<p>In other news I added two new technical recommendations to the Technical Specifications of the DataPortability Project. Those are specifically about how to markup <a href="http://wiki.dataportability.org/display/dpmain/DP-REC-006+Profile+Definitions">profiles</a> (hCards but some bits are missing with this) and <a href="http://wiki.dataportability.org/display/dpmain/DP-REC-007+Contact+List+Definitions">contact information</a> (here I think we should allow for both, XFN and FOAF). Please comment on them or add issues to clarify.</p>
<p>You can see all the technical recommendations <a href="http://wiki.dataportability.org/x/HgAC">here</a>. </p>
<p>As said, please participate! <a href="http://wiki.dataportability.org/display/dpmain/Action+Groups">Join an Action Group</a>! Or if you are running a social network add these technologies to your site, too!</p>

    <!-- fb_sitestats code START -->
    <script src="http://feeds.feedburner.com/~s/mrtopfde?i=http://mrtopf.de/blog/plone/progress-on-dataportability-in-the-project-and-at-digg/" type="text/javascript" charset="utf-8"></script>
    <!-- fb_sitestats code END -->
    <div class="feedflare">
<a href="http://feeds.feedburner.com/~f/dev_comlounge_net?a=vOdbjH"><img src="http://feeds.feedburner.com/~f/dev_comlounge_net?i=vOdbjH" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/dev_comlounge_net?a=uoLNdh"><img src="http://feeds.feedburner.com/~f/dev_comlounge_net?i=uoLNdh" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/dev_comlounge_net?a=6EKY7h"><img src="http://feeds.feedburner.com/~f/dev_comlounge_net?i=6EKY7h" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/dev_comlounge_net?a=tVfsnH"><img src="http://feeds.feedburner.com/~f/dev_comlounge_net?i=tVfsnH" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/dev_comlounge_net?a=wFfOSH"><img src="http://feeds.feedburner.com/~f/dev_comlounge_net?i=wFfOSH" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/dev_comlounge_net/~4/281700207" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://mrtopf.de/blog/plone/progress-on-dataportability-in-the-project-and-at-digg/feed/</wfw:commentRss>
		<feedburner:origLink>http://mrtopf.de/blog/plone/progress-on-dataportability-in-the-project-and-at-digg/</feedburner:origLink></item>
		<item>
		<title>Announcing pydataportability 0.1 (technical)</title>
		<link>http://feeds.feedburner.com/~r/dev_comlounge_net/~3/274504893/</link>
		<comments>http://mrtopf.de/blog/plone/planetplone/announcing-pydataportability-01-technical/#comments</comments>
		<pubDate>Mon, 21 Apr 2008 06:49:27 +0000</pubDate>
		<dc:creator>Christian Scholz</dc:creator>
		
		<category><![CDATA[Data Portability]]></category>

		<category><![CDATA[Development]]></category>

		<category><![CDATA[English Posts]]></category>

		<category><![CDATA[Planet Plone]]></category>

		<category><![CDATA[Python]]></category>

		<guid isPermaLink="false">http://mrtopf.de/blog/plone/planetplone/announcing-pydataportability-01-technical/</guid>
		<description><![CDATA[
The last few days I have been working on creating the basic parts of a DataPortability library for Python. My goal is to create a library which supports the standards we propose in the DataPortability Project to help leveraging Python based implementations. It of course also might be useful without this aim in fact you [...]]]></description>
			<content:encoded><![CDATA[<p><img style="max-width: 800px;" src="http://mrtopf.de/blog/wp-content/uploads/2008/04/pydataportability.jpg" /></p>
<p>The last few days I have been working on creating the basic parts of a <a href="http://dataportability.org">DataPortability</a> library for <a href="http://python.org">Python</a>. My goal is to create a library which supports the standards we propose in the DataPortability Project to help leveraging Python based implementations. It of course also might be useful without this aim in fact you might simply need a library for handling microformats or one of the other standards.</p>
<p>Right now the library is very barebone, supporting basic parsing of the <a href="http://microformats.org/wiki/hcard">hCard microformat</a>, the <a href="http://www.gmpg.org/xfn/">XFN microformat</a> and <a href="http://www.hueniverse.com/hueniverse/2008/03/announcing-xrds.html">XRDS Simple</a>. What comes out of the parser are then VCard, XFNRelationships or Service objects, depending on which parser you use.</p>
<p>Please note that all this is still very raw and very far from being complete. See this as development version, stuff might still change a bit. Documentation will also be added shortly.</p>
<p>Here is a list of eggs available:</p>
<h3 id="_pydataportabilitymic_1" >pydataportability.microformats.base</h3>
<p>The parser class handling the main work. It containts two HTML parsers right now (BeautifulSoup and ElementTree) and aims to be as extensible as possible. I use the <a href="http://www.muthukadan.net/docs/zca.html">Zope Component Architecture (ZCA)</a> here for making this happen (note that it does not mean that it&#8217;s a Zope Application, the ZCA is a small but very useful part of Zope and allows me to register components in a decentral way. I will add examples later when I write more documentation.</p>
<p><a href="http://pypi.python.org/pypi/pydataportability.microformats.base/0.1dev-r44">PyPi entry</a>.</p>
<h3 id="_pydataportabilitymic_2" >pydataportability.microformats.hcard</h3>
<p>The hCard parser which registers with the base package. If this is imported it will automatically try to find hCards in HTML documents</p>
<p><a href="http://pypi.python.org/pypi/pydataportability.microformats.hcard/0.1dev-r25">PyPi entry</a>.</p>
<h3 id="_pydataportabilitymic_3" >pydataportability.microformats.xfn</h3>
<p>The XFN parser which registers with the base package. As the hCard parser it will automatically try to find XFN relationship inside an HTML document</p>
<p><a href="http://pypi.python.org/pypi/pydataportability.microformats.xfn/0.1dev-r19">PyPi entry</a>.</p>
<h3 id="_pydataportbilityxrds_1" >pydataportbility.xrds</h3>
<p>This library parses XRDS Simple formatted files using ElementTree and returns Service objects</p>
<p><a href="http://pypi.python.org/pypi/pydataportability.xrds/0.1dev-r43">PyPi entry</a>.</p>
<h3 id="_pydataportabilityexa_1" >pydataportability.examples</h3>
<p>This egg is mostly useful in an example buildout and creates some examples scripts in it&#8217;s bin/ directory (see example below)</p>
<p><a href="http://pypi.python.org/pypi/pydataportability.examples/0.1dev-r42">PyPi entry</a>.</p>
<h3 id="_an-example_1" >An example</h3>
<p>To show how it works I created an example buildout. If you don&#8217;t know what an buildout is then don&#8217;t worry, you don&#8217;t need to know for the example (basically it allows you to create a sandbox and install various eggs in it. Very useful for developing in a group or deploying software. <a href="http://rhodesmill.org/brandon/buildout/">Check out this screencast for a demo</a>). In case you don&#8217;t know what Python eggs are, then please <a href="http://mrtopf.de/blog/python_zope/a-small-introduction-to-python-eggs/">read my tutorial on them</a>.</p>
<p>So here is what you do to get the examples working:</p>
<ol>
<li>Download the <a href="http://pydataportability.googlecode.com/files/pydataportability_examples-0.1.tgz">examples package</a>.</li>
<li>Extract it using <code>tar zxf pydataportability_examples-0.1.tgz</code></li>
<li>Change to the directory using <code>cd pydataportability_examples-0.1</code></li>
<li>Run the bootstrap.py file: <code>python bootstrap.py</code> (this will download the necessary software for the buildout to work)</li>
<li>Run the generated buildout script: <code>bin/buildout</code> (this will download all the pydataportability eggs and installs the example scripts in bin)</li>
</ol>
<p>Now you have 3 example scripts in the bin/ directory. To run them just call them, e.g.:</p>
<pre>
bin/xrds
bin/mf_etree
bin/mf_bsoup
</pre>
<p>The first one parses an XRDS file and returns the found objects, the others parse the contents of my twitter page (which contains microformats) and return the found microformat objects. One uses the ElementTree parser, the other the BeautifulSoup parser.</p>
<h3 id="_where-is-the-source_1" >Where is the source?</h3>
<p>The simplest thing to get the source is probably to get the source buildout and build it (you should be somewhat familiar with buildout though). Just do this:</p>
<pre>
svn co https://pydataportability.googlecode.com/svn/buildouts/microformats pydataportability
cd pydataportability
python bootstrap.py
bin/buildout
</pre>
<p>This will create a development sandbox. You will find the same examples in bin/ and you will find the source eggs in src/.</p>
<p>The source can also be found in SVN, just look at the <a href="http://code.google.com/p/pydataportability/source/browse">Google Code page</a> for it. Everything starting with <tt>pydataportability.</tt> is part of it.</p>
<p>Make also sure to read the <a href="http://pydataportability.googlecode.com/files/README.txt">README</a> in the example buildout.</p>
<p>More documentation will be added later (as soon as Google re-enables wiki editing). There is also a <a href="http://groups.google.com/group/pydataportability">Google Group for discussing pydataportability</a>.</p>
<p>Technorati Tags: <a class="performancingtags" href="http://technorati.com/tag/dataportability" rel="tag">dataportability</a>, <a class="performancingtags" href="http://technorati.com/tag/pydataportability" rel="tag">pydataportability</a>, <a class="performancingtags" href="http://technorati.com/tag/announcement" rel="tag">announcement</a>, <a class="performancingtags" href="http://technorati.com/tag/python" rel="tag">python</a>, <a class="performancingtags" href="http://technorati.com/tag/development" rel="tag">development</a></p>

    <!-- fb_sitestats code START -->
    <script src="http://feeds.feedburner.com/~s/mrtopfde?i=http://mrtopf.de/blog/plone/planetplone/announcing-pydataportability-01-technical/" type="text/javascript" charset="utf-8"></script>
    <!-- fb_sitestats code END -->
    <div class="feedflare">
<a href="http://feeds.feedburner.com/~f/dev_comlounge_net?a=uP9oeyG"><img src="http://feeds.feedburner.com/~f/dev_comlounge_net?i=uP9oeyG" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/dev_comlounge_net?a=yad34zg"><img src="http://feeds.feedburner.com/~f/dev_comlounge_net?i=yad34zg" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/dev_comlounge_net?a=JRc1nqg"><img src="http://feeds.feedburner.com/~f/dev_comlounge_net?i=JRc1nqg" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/dev_comlounge_net?a=iMUHeHG"><img src="http://feeds.feedburner.com/~f/dev_comlounge_net?i=iMUHeHG" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/dev_comlounge_net?a=SfN2vCG"><img src="http://feeds.feedburner.com/~f/dev_comlounge_net?i=SfN2vCG" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/dev_comlounge_net/~4/274504893" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://mrtopf.de/blog/plone/planetplone/announcing-pydataportability-01-technical/feed/</wfw:commentRss>
		<feedburner:origLink>http://mrtopf.de/blog/plone/planetplone/announcing-pydataportability-01-technical/</feedburner:origLink></item>
		<item>
		<title>The first Data Portability Use Case (somewhat technical)</title>
		<link>http://feeds.feedburner.com/~r/dev_comlounge_net/~3/269923965/</link>
		<comments>http://mrtopf.de/blog/web20/the-first-data-portability-use-case-somewhat-technical/#comments</comments>
		<pubDate>Mon, 14 Apr 2008 10:23:00 +0000</pubDate>
		<dc:creator>Christian Scholz</dc:creator>
		
		<category><![CDATA[Data Portability]]></category>

		<category><![CDATA[Development]]></category>

		<category><![CDATA[English Posts]]></category>

		<category><![CDATA[Planet Plone]]></category>

		<category><![CDATA[Plone]]></category>

		<category><![CDATA[Web2.0]]></category>

		<guid isPermaLink="false">http://mrtopf.de/blog/web20/the-first-data-portability-use-case-somewhat-technical/</guid>
		<description><![CDATA[As you might know I attended the London DataPortability Lunch last week and met cool people like Chris Saad, Julian Bond, John Breslin, Tom Morris and others. Among other things we have been discussing the maybe first use case to tackle for Data Portability which is Discovery.
As you also might know there was some discussion [...]]]></description>
			<content:encoded><![CDATA[<p>As you might know I attended <a href="http://mrtopf.de/blog/plone/planetplone/i-am-in-london-this-weekend/">the London DataPortability Lunch</a> last week and met cool people like Chris Saad, Julian Bond, John Breslin, Tom Morris and others. Among other things we have been discussing the maybe first use case to tackle for Data Portability which is Discovery.</p>
<p>As you also might know there was some discussion about how to approach the <a href="http://dataportability.org">DataPortability</a> problem space and one of the ideas which came out of that was <a href="http://mrtopf.de/blog/web20/what-is-data-portability/">my idea of dividing it into fields and levels</a>. Now this general discovery use case nevertheless makes much sense because it seems to be a general starting point for every field we might address. So how does it work?</p>
<h3 id="661_doing-discovery_1" >Doing discovery</h3>
<p>Imagine you signup for a new social network and you want to import your data from elsewhere. The most important part now is to find out where data is available for you. Of course you can enter a set of URLs but I guess we agree that this is not particularly user friendly.</p>
<h3 id="661_the-service-catalogu_1" >The service catalogue</h3>
<p>Thus the idea of a service catalogue was invented which contains all the locations and types of information you have on the web. This service catalogue can be an XRDS file, following the <a href="http://xrds-simple.net/core/1.0/">XRDS-simple</a> specification. Such a file could look like this:</p>
<pre>
      &lt;XRDS xmlns="xri://$xrds"&gt;
          &lt;XRD xmlns:simple="http://xrds-simple.net/core/1.0" xmlns="xri://$XRD*($v*2.0)" version="2.0"&gt;
              &lt;Type&gt;xri://$xrds*simple&lt;/Type&gt;
              &lt;Service priority="10"&gt;
                &lt;Type&gt;http://www.w3.org/2006/03/hcard&lt;/Type&gt;
                &lt;URI simple:httpMethod="GET"&gt;http://pownce.com/mrtopf&lt;/URI&gt;
                &lt;LocalID&gt;jane&lt;LocalID&gt;
              &lt;/Service&gt;
              &lt;Service priority="20"&gt;
                &lt;Type&gt;http://gmpg.org/xfn/11&lt;/Type&gt;
                &lt;URI simple:httpMethod="GET" priority="10"&gt;http://twitter.com/mrtopf&lt;/URI&gt;
                &lt;URI simple:httpMethod="GET" priority="20"&gt;http://pownce.com/mrtopf&lt;/URI&gt;
                &lt;LocalID&gt;janedoe&lt;LocalID&gt;
              &lt;/Service&gt;
          &lt;/XRD&gt;
      &lt;/XRDS&gt;</pre>
<p>In this example the endpoint for an hcard and an xfn list are defined (if I actually understood xrds right, I only skimmed the spec and changed the example. Also the types might not be correct).</p>
<h3 id="661_the-workflow_1" >The workflow</h3>
<p>So the flow we are discussing is like this:</p>
<ol>
<li>A user logs in with her OpenID (this might involve retrieving an <a href="http://docs.oasis-open.org/xri/2.0/specs/cd02/xri-resolution-V2.0-cd-02.html">XRDS</a> file first which describes which authentication mechanisms are actually available and under which URLs. This is also known as <a href="http://yadis.org/wiki/What_is_Yadis">YADIS</a> and part of the OpenID 2.0 specification)</li>
<li>The network asks the OpenID provider for the location of the service catalogue which is an XRDS file as described above. It does this via the <a href="http://openid.net/specs/openid-attribute-exchange-1_0.html">Attribute Exchange extension of OpenID (AX)</a>. This XRDS file can additionally be protected by <a href="http://oauth.net">OAuth</a> to allow more control by the user who got to see it.</li>
<li>The network then processes the list of service types it found in the XRDS file and can retrieve the information available there. These ressources can be protected by <a href="http://oauth.net">OAuth</a> as well so that e.g. not everybody is able to look at your friends list.</li>
</ol>
<p>While this workflow seems simple of course not all open questions are answered. E.g. it is unclear how the AX part might work as it seems that it&#8217;s not widely used and not many examples are around. The question is also what benefits it has over existing standards (like hCard). There is also the question if there might be alternatives to using AX to retrieve the service catalogue location.</p>
<p>So there are some discussion points open but I guess we can solve them quite quickly. What is obvious here though is that we really try to reuse existing standards instead of defining our own. OpenID, OAuth, XRDS (and simple), AX, hCard, XFN etc. are all available already although maybe sometimes an implementatin is missing. But the hope is that DataPortability will also give an incentive to create such libraries.</p>
<h3 id="661_plone-and-dataportab_1" >Plone and DataPortability</h3>
<p>My plan is to try to implement these things for <a href="http://plone.org">Plone</a>. Right now I am working on a microformats parsing library for Python (more on that later) and my plan is to get OAuth and XRDS in Plone working. I am not sure yet how to solve the AX part because apparently some OpenID provider implementing this is needed (beside that I have no idea about how AX works yet as there are simply too many standards out there which need to get read).</p>
<p>What it also means for Plone is maybe a different way of handling OpenID. Right now there is no way to attach an OpenID to an existing user/profile. Instead they are separate (somewhat virtual) users. This eventually means adding a different OpenID implementation to Plone which allows people to attach one or more OpenIDs to their user accounts.</p>
<p>Another question is if Plone should become an OpenID provider, too. OTOH there are already too many out there. So it might depend on how much work it is.</p>
<p>Having OAuth in Plone is not only interesting for DataPortability but for any means of accessing data from the outside in a controlled fashion and as a basis for other web services.</p>
<p>So all in all I hope we get very fast going with this first use case so that people know what to implement.</p>
<p>Technorati Tags: <a href="http://technorati.com/tag/dataportability" class="performancingtags" rel="tag">dataportability</a>, <a href="http://technorati.com/tag/london" class="performancingtags" rel="tag">london</a>, <a href="http://technorati.com/tag/plone" class="performancingtags" rel="tag">plone</a>, <a href="http://technorati.com/tag/xrds" class="performancingtags" rel="tag">xrds</a>, <a href="http://technorati.com/tag/openid" class="performancingtags" rel="tag">openid</a>, <a href="http://technorati.com/tag/oauth" class="performancingtags" rel="tag">oauth</a></p>

    <!-- fb_sitestats code START -->
    <script src="http://feeds.feedburner.com/~s/mrtopfde?i=http://mrtopf.de/blog/web20/the-first-data-portability-use-case-somewhat-technical/" type="text/javascript" charset="utf-8"></script>
    <!-- fb_sitestats code END -->
    <div class="feedflare">
<a href="http://feeds.feedburner.com/~f/dev_comlounge_net?a=0UZuYAG"><img src="http://feeds.feedburner.com/~f/dev_comlounge_net?i=0UZuYAG" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/dev_comlounge_net?a=kztadng"><img src="http://feeds.feedburner.com/~f/dev_comlounge_net?i=kztadng" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/dev_comlounge_net?a=qG2wXyg"><img src="http://feeds.feedburner.com/~f/dev_comlounge_net?i=qG2wXyg" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/dev_comlounge_net?a=Zs4xhgG"><img src="http://feeds.feedburner.com/~f/dev_comlounge_net?i=Zs4xhgG" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/dev_comlounge_net?a=AnzhVAG"><img src="http://feeds.feedburner.com/~f/dev_comlounge_net?i=AnzhVAG" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/dev_comlounge_net/~4/269923965" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://mrtopf.de/blog/web20/the-first-data-portability-use-case-somewhat-technical/feed/</wfw:commentRss>
		<feedburner:origLink>http://mrtopf.de/blog/web20/the-first-data-portability-use-case-somewhat-technical/</feedburner:origLink></item>
	<media:rating>nonadult</media:rating></channel>
</rss>
