<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	>
<channel>
	<title>Comments on: There can&#8217;t be only one.</title>
	<atom:link href="http://www.blueskyonmars.com/2006/08/19/there-cant-be-only-one/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.blueskyonmars.com/2006/08/19/there-cant-be-only-one/</link>
	<description>Kevin Dangoor on Software Development</description>
	<pubDate>Fri, 21 Nov 2008 17:23:28 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.6.3</generator>
		<item>
		<title>By: TerryH Blog 白雲 &#62;&#62;&#62; &#187; Blog Archive &#187; 大老說話了</title>
		<link>http://www.blueskyonmars.com/2006/08/19/there-cant-be-only-one/#comment-111597</link>
		<dc:creator>TerryH Blog 白雲 &#62;&#62;&#62; &#187; Blog Archive &#187; 大老說話了</dc:creator>
		<pubDate>Wed, 14 Mar 2007 16:20:45 +0000</pubDate>
		<guid isPermaLink="false">http://www.blueskyonmars.com/2006/08/19/there-cant-be-only-one/#comment-111597</guid>
		<description>[...] http://www.blueskyonmars.com/2006/08/19/there-cant-be-only-one/ [...]</description>
		<content:encoded><![CDATA[<p>[...] <a href="http://www.blueskyonmars.com/2006/08/19/there-cant-be-only-one/" rel="nofollow">http://www.blueskyonmars.com/2006/08/19/there-cant-be-only-one/</a> [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Planet Zope blog &#187; Zope News for August 16 - 31, 2006</title>
		<link>http://www.blueskyonmars.com/2006/08/19/there-cant-be-only-one/#comment-97219</link>
		<dc:creator>Planet Zope blog &#187; Zope News for August 16 - 31, 2006</dc:creator>
		<pubDate>Fri, 02 Feb 2007 00:24:33 +0000</pubDate>
		<guid isPermaLink="false">http://www.blueskyonmars.com/2006/08/19/there-cant-be-only-one/#comment-97219</guid>
		<description>[...] Django - Oh My God It’s Django! [...]</description>
		<content:encoded><![CDATA[<p>[...] Django - Oh My God It’s Django! [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Warren Henning</title>
		<link>http://www.blueskyonmars.com/2006/08/19/there-cant-be-only-one/#comment-66040</link>
		<dc:creator>Warren Henning</dc:creator>
		<pubDate>Fri, 01 Sep 2006 10:39:01 +0000</pubDate>
		<guid isPermaLink="false">http://www.blueskyonmars.com/2006/08/19/there-cant-be-only-one/#comment-66040</guid>
		<description>People who want a Pythonic web framework will choose TurboGears. Nuff said.</description>
		<content:encoded><![CDATA[<p>People who want a Pythonic web framework will choose TurboGears. Nuff said.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: tazzzzz</title>
		<link>http://www.blueskyonmars.com/2006/08/19/there-cant-be-only-one/#comment-65313</link>
		<dc:creator>tazzzzz</dc:creator>
		<pubDate>Sat, 26 Aug 2006 02:54:33 +0000</pubDate>
		<guid isPermaLink="false">http://www.blueskyonmars.com/2006/08/19/there-cant-be-only-one/#comment-65313</guid>
		<description>Responding to Ben Sizer from a few comments ago:

"the key here is that the Pythonic way is typically to have an obvious solution, rather than a succinct one. TurboGears has always felt to me to be the other way around, more like Perl: you can do just about anything with it, often in a single line of code… if there was a hope in hell of you finding which line of code."

This is a documentation issue. It is not a lack of Pythonicness... We do strive to have one "obvious" way to do something. But, it's not obvious until you get the basic feel of the framework. The same is true of Python: once you get a feel for it, things become obvious. But, that doesn't obviate the need for the library reference. You still have to know what methods and classes, etc. are called even when using Python with its stdlib.

For an example of what I mean: the "TurboGears way" is to make controller methods just simple, application-focused code as much as possible. The specification for how that method interacts with the web is done declaratively through decorators. Generally, the behavior of the decorators can be overridden by values returned by your controller method, but that's the less-common case... we've optimized for the things people do all the time. Once you get into that, it becomes pretty natural to grab for the decorators...

Which is where the docs come in (or rather don't come in enough right now).

I agree with folks above about sharing infrastructure and how WSGI helps here.

Michael: I've been using eggs for a year and I've witnessed how far they've progressed in terms of being easy to install. They're not perfect, but I think they work quite well, especially once you've setup a distutils.cfg file to put things in the right place automatically.

Typing "easy_install &lt;packagefoo&gt;" isn't a win because I would have a hard time installing that package. It's a win because I don't need to go to the cheeseshop, find the package, go to its home page (or the annoying sourceforge download pages), get the tarball, untar and finally run setup.py.

For TurboGears, you'd have to go through that drill a dozen times. For packages that do a really good job reusing code from others, this will not be uncommon. Instead, you get one command that picks up everything for you.

Additionally, setuptools provides the automatic plugin discovery mechanism... this makes widgets and template engines and Toolbox tools, etc. all show up without any additional configuration or installation into special locations.

I *will* grant that easy_install isn't perfect for all cases. Jim Fulton did a good job explaining to me how eggs are a good solution for some of Zope Corp's needs, but that easy_install isn't quite what they need. So, they've created zc.buildout to use the egg format with some different constraints on how installation happens. It's a cool and useful tool.

A few years ago when Perl was still quite big and generally had some buzz, people would criticize Python for lacking something like CPAN. The cheeseshop is only half of the solution. The CPAN perl module was key, because you could install a library with all of its dependencies in one go. easy_install does this for us in Python now. (Ruby has Gems, so they've gone after that issue too.)

I think setuptools is important. Sure, the implementation is not 100% perfect, and zc.buildout shows that some folks have different needs than what easy_install does. But, that doesn't mean that it should be tossed.&lt;/packagefoo&gt;</description>
		<content:encoded><![CDATA[<p>Responding to Ben Sizer from a few comments ago:</p>
<p>&#8220;the key here is that the Pythonic way is typically to have an obvious solution, rather than a succinct one. TurboGears has always felt to me to be the other way around, more like Perl: you can do just about anything with it, often in a single line of code… if there was a hope in hell of you finding which line of code.&#8221;</p>
<p>This is a documentation issue. It is not a lack of Pythonicness&#8230; We do strive to have one &#8220;obvious&#8221; way to do something. But, it&#8217;s not obvious until you get the basic feel of the framework. The same is true of Python: once you get a feel for it, things become obvious. But, that doesn&#8217;t obviate the need for the library reference. You still have to know what methods and classes, etc. are called even when using Python with its stdlib.</p>
<p>For an example of what I mean: the &#8220;TurboGears way&#8221; is to make controller methods just simple, application-focused code as much as possible. The specification for how that method interacts with the web is done declaratively through decorators. Generally, the behavior of the decorators can be overridden by values returned by your controller method, but that&#8217;s the less-common case&#8230; we&#8217;ve optimized for the things people do all the time. Once you get into that, it becomes pretty natural to grab for the decorators&#8230;</p>
<p>Which is where the docs come in (or rather don&#8217;t come in enough right now).</p>
<p>I agree with folks above about sharing infrastructure and how WSGI helps here.</p>
<p>Michael: I&#8217;ve been using eggs for a year and I&#8217;ve witnessed how far they&#8217;ve progressed in terms of being easy to install. They&#8217;re not perfect, but I think they work quite well, especially once you&#8217;ve setup a distutils.cfg file to put things in the right place automatically.</p>
<p>Typing &#8220;easy_install
<packagefoo>&#8221; isn&#8217;t a win because I would have a hard time installing that package. It&#8217;s a win because I don&#8217;t need to go to the cheeseshop, find the package, go to its home page (or the annoying sourceforge download pages), get the tarball, untar and finally run setup.py.</p>
<p>For TurboGears, you&#8217;d have to go through that drill a dozen times. For packages that do a really good job reusing code from others, this will not be uncommon. Instead, you get one command that picks up everything for you.</p>
<p>Additionally, setuptools provides the automatic plugin discovery mechanism&#8230; this makes widgets and template engines and Toolbox tools, etc. all show up without any additional configuration or installation into special locations.</p>
<p>I *will* grant that easy_install isn&#8217;t perfect for all cases. Jim Fulton did a good job explaining to me how eggs are a good solution for some of Zope Corp&#8217;s needs, but that easy_install isn&#8217;t quite what they need. So, they&#8217;ve created zc.buildout to use the egg format with some different constraints on how installation happens. It&#8217;s a cool and useful tool.</p>
<p>A few years ago when Perl was still quite big and generally had some buzz, people would criticize Python for lacking something like CPAN. The cheeseshop is only half of the solution. The CPAN perl module was key, because you could install a library with all of its dependencies in one go. easy_install does this for us in Python now. (Ruby has Gems, so they&#8217;ve gone after that issue too.)</p>
<p>I think setuptools is important. Sure, the implementation is not 100% perfect, and zc.buildout shows that some folks have different needs than what easy_install does. But, that doesn&#8217;t mean that it should be tossed.</packagefoo>
]]></content:encoded>
	</item>
	<item>
		<title>By: Michael Dillon</title>
		<link>http://www.blueskyonmars.com/2006/08/19/there-cant-be-only-one/#comment-65250</link>
		<dc:creator>Michael Dillon</dc:creator>
		<pubDate>Fri, 25 Aug 2006 14:12:22 +0000</pubDate>
		<guid isPermaLink="false">http://www.blueskyonmars.com/2006/08/19/there-cant-be-only-one/#comment-65250</guid>
		<description>The biggest problem with Turbogears is that it requires the easyinstall stuff to use it. I have run into so many problems with eggs and easyinstall that I refuse to use it anymore. If I can't find a straightforward tarball for a Python app, then I won't use it.

Python is for developpers not endusers. A developper does not want an all-in-one install package that only allows you to install a package in the one true fashion. That's why I like tarballs, because I can install it where and how I want without disturbing any other parts of my system that I don't want to disturb.

I use some of the components of Turbogears but I will never use Turbogears itself if it remains exclusively egg-based.</description>
		<content:encoded><![CDATA[<p>The biggest problem with Turbogears is that it requires the easyinstall stuff to use it. I have run into so many problems with eggs and easyinstall that I refuse to use it anymore. If I can&#8217;t find a straightforward tarball for a Python app, then I won&#8217;t use it.</p>
<p>Python is for developpers not endusers. A developper does not want an all-in-one install package that only allows you to install a package in the one true fashion. That&#8217;s why I like tarballs, because I can install it where and how I want without disturbing any other parts of my system that I don&#8217;t want to disturb.</p>
<p>I use some of the components of Turbogears but I will never use Turbogears itself if it remains exclusively egg-based.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Hans Then</title>
		<link>http://www.blueskyonmars.com/2006/08/19/there-cant-be-only-one/#comment-65247</link>
		<dc:creator>Hans Then</dc:creator>
		<pubDate>Fri, 25 Aug 2006 13:30:57 +0000</pubDate>
		<guid isPermaLink="false">http://www.blueskyonmars.com/2006/08/19/there-cant-be-only-one/#comment-65247</guid>
		<description>I agree, we need a foundation that allows us to work together. 

For instance, I would like to include a django created application in my zope server. And use kid templates in zope. Or include a zope based CMS inside turbogears. The key here is that there should be one and only one obvious way to do it.

On that account WSGI is a big step forward, but only for the interface of the webserver to the application server. The WSGI interface is too low level for application developers. What we need is a common interface at the application level. All frameworks provide a request object with form data end HTTP request info, a response object, a user object for security checks, a session object and an interface call a template. The functionality is exactly the same, but how to use it is very different for all the frameworks. For a language where "one way to do it" is a mantra, the situation is damn awkward.

In Java, the situation is much better. There people have the servlet API. Although there are many different implementations of that API (WebSphere, Tomcat, WebLogic), applications can be ported painlessly from one environment to the other. (Painless is relatively speaking of course, it still is Java, we are speaking of.)

If all frameworks use common interfaces for request, response, user, session objects and template interfaces we take a giant leap forward. There would hardly be a penalty in learning costs to switch between frameworks. It would allow a django app to forward a request to a zodb object and have the results formatted by a cheetah template. 

But best of all, it would allow the development of framework independent libraries. For instance, zope contains a very powerful marshalling library. This allows fields in a complicated form to be mapped to integers, lists, records or combinations of the above. If there were a common request object, I could then rewrite this as a library that simply manipulates the data in the request object. It would instantly be useful in any of the other application frameworks.

So, it is not that there can be only one, but there should be only one way to do it.</description>
		<content:encoded><![CDATA[<p>I agree, we need a foundation that allows us to work together. </p>
<p>For instance, I would like to include a django created application in my zope server. And use kid templates in zope. Or include a zope based CMS inside turbogears. The key here is that there should be one and only one obvious way to do it.</p>
<p>On that account WSGI is a big step forward, but only for the interface of the webserver to the application server. The WSGI interface is too low level for application developers. What we need is a common interface at the application level. All frameworks provide a request object with form data end HTTP request info, a response object, a user object for security checks, a session object and an interface call a template. The functionality is exactly the same, but how to use it is very different for all the frameworks. For a language where &#8220;one way to do it&#8221; is a mantra, the situation is damn awkward.</p>
<p>In Java, the situation is much better. There people have the servlet API. Although there are many different implementations of that API (WebSphere, Tomcat, WebLogic), applications can be ported painlessly from one environment to the other. (Painless is relatively speaking of course, it still is Java, we are speaking of.)</p>
<p>If all frameworks use common interfaces for request, response, user, session objects and template interfaces we take a giant leap forward. There would hardly be a penalty in learning costs to switch between frameworks. It would allow a django app to forward a request to a zodb object and have the results formatted by a cheetah template. </p>
<p>But best of all, it would allow the development of framework independent libraries. For instance, zope contains a very powerful marshalling library. This allows fields in a complicated form to be mapped to integers, lists, records or combinations of the above. If there were a common request object, I could then rewrite this as a library that simply manipulates the data in the request object. It would instantly be useful in any of the other application frameworks.</p>
<p>So, it is not that there can be only one, but there should be only one way to do it.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Philipp von Weitershausen</title>
		<link>http://www.blueskyonmars.com/2006/08/19/there-cant-be-only-one/#comment-65241</link>
		<dc:creator>Philipp von Weitershausen</dc:creator>
		<pubDate>Fri, 25 Aug 2006 11:55:48 +0000</pubDate>
		<guid isPermaLink="false">http://www.blueskyonmars.com/2006/08/19/there-cant-be-only-one/#comment-65241</guid>
		<description>I don't think merging frameworks isn't that important. I actually think Python's diversity in terms of web frameworks will eventually be a benefit for the language and the community. One thing the EuroPython frameworks shootout has shown is that different frameworks serve different purposes. The important thing is that we should try not to reinvent the wheel too many times. I guess that boils down to creating a foundation that allows us to work together. Given efforts like WSGI, I'm optimistic. Let's create more of such efforts!</description>
		<content:encoded><![CDATA[<p>I don&#8217;t think merging frameworks isn&#8217;t that important. I actually think Python&#8217;s diversity in terms of web frameworks will eventually be a benefit for the language and the community. One thing the EuroPython frameworks shootout has shown is that different frameworks serve different purposes. The important thing is that we should try not to reinvent the wheel too many times. I guess that boils down to creating a foundation that allows us to work together. Given efforts like WSGI, I&#8217;m optimistic. Let&#8217;s create more of such efforts!</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Talin</title>
		<link>http://www.blueskyonmars.com/2006/08/19/there-cant-be-only-one/#comment-65226</link>
		<dc:creator>Talin</dc:creator>
		<pubDate>Fri, 25 Aug 2006 08:59:24 +0000</pubDate>
		<guid isPermaLink="false">http://www.blueskyonmars.com/2006/08/19/there-cant-be-only-one/#comment-65226</guid>
		<description>In an email discussion with Guido, I proposed that the reason he doesn't like Kid templates is because he's never attempted to do AJAX programming. Here's an excerpt from my argument:
------
There are two ways to think about an HTML document - as a stream of text, or as a tree. If what you are doing is primarily textual in nature, it pays to think of things in terms of pasting sequences of text together, inserting snippets of text ('interpolation') into larger snippets.

However, one you start doing any kind of serious DOM-level manipulation (such as AJAX), you find that most of your effort is spent getting the DOM tree just right - making sure that all of the nodes are in the right place, that the children have the proper parents, and so on. Your mental conception of the document gradually changes until you are thinking of it more as a data structure than as a text document.

This is where rigorous structured templating comes in - its much better if errors in your document structure can be detected on the server side than having to rely on the haphazard error checking of Firefox, Safari or IE. Trying to rely on the browser's error console (which half the time reports no error at all, the other half floods you with errors that are meaningless) to detect subtle structural errors is nighmarish to say the least. Better (and faster) to have a server-side template language that won't *allow* you to make those kinds of mistakes.
------
Guido's response was essentially "it may well be"...</description>
		<content:encoded><![CDATA[<p>In an email discussion with Guido, I proposed that the reason he doesn&#8217;t like Kid templates is because he&#8217;s never attempted to do AJAX programming. Here&#8217;s an excerpt from my argument:<br />
&#8212;&#8212;<br />
There are two ways to think about an HTML document - as a stream of text, or as a tree. If what you are doing is primarily textual in nature, it pays to think of things in terms of pasting sequences of text together, inserting snippets of text (&#8217;interpolation&#8217;) into larger snippets.</p>
<p>However, one you start doing any kind of serious DOM-level manipulation (such as AJAX), you find that most of your effort is spent getting the DOM tree just right - making sure that all of the nodes are in the right place, that the children have the proper parents, and so on. Your mental conception of the document gradually changes until you are thinking of it more as a data structure than as a text document.</p>
<p>This is where rigorous structured templating comes in - its much better if errors in your document structure can be detected on the server side than having to rely on the haphazard error checking of Firefox, Safari or IE. Trying to rely on the browser&#8217;s error console (which half the time reports no error at all, the other half floods you with errors that are meaningless) to detect subtle structural errors is nighmarish to say the least. Better (and faster) to have a server-side template language that won&#8217;t *allow* you to make those kinds of mistakes.<br />
&#8212;&#8212;<br />
Guido&#8217;s response was essentially &#8220;it may well be&#8221;&#8230;</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Krys</title>
		<link>http://www.blueskyonmars.com/2006/08/19/there-cant-be-only-one/#comment-65162</link>
		<dc:creator>Krys</dc:creator>
		<pubDate>Fri, 25 Aug 2006 00:27:11 +0000</pubDate>
		<guid isPermaLink="false">http://www.blueskyonmars.com/2006/08/19/there-cant-be-only-one/#comment-65162</guid>
		<description>Hi Kevin and everyone else!

I have been using TG since 0.5 and I love it! Django is very cool, but didn't grab me and I have not yet been compelled to look at Ruby or Rails.

That said, Propad's experience with installing TG has also been my own, even with 0.8.9 as well as 0.9x.

With unrestricted access to the net, TG is stupidly easy to install.  This is true.  Though you still have to know to get psyopg or sqlite or whatever.  But offline, or behind a highly restricted proxy (like at my work), installing TG is a pain.  I can do it, I've learned how, but it is a pain.  I have also seen several posts on the mailing list asking about this.

I have the intent to contribute on this subject, but need the time.

I would like to suggest 2 things, though:  

1) Put links to *all* dependencies on the download page, this includes Paste, PasteScript, PasteDeploy, Psycog, PySqlite, Formencode, etc.  Everything, including docutils so the tutorial is flawless.  Even if they are links offsite, that is fine but make it so that if I have to download everything manually, I can get it all in one place.  This is a simple enough addition and I think it would go a long way for those of us stuck in highly restricted environments.  Right now we have the equivalent of DLL/RPM hell.

2) I think (and I may have mentioned this elsewhere before) that a Plone-style installer (at least for Windows) that includes Python and everthing that TG needs would be very useful.  Perhaps one without Python too.  I know that there are a lot of people that use Python on Windows and making things easy for that demographic would go a long way to foster adoption.

I know suggestion 2 would need a champion, but number 1 would be fairly easy to do.

I feel bad not being able to commit to contributing... I want to... but I also believe that the manual install issue really does need to be addressed.

Anyway, I will end this long winded post and just reiterate that TG is absolutely wonderful!  And once the docs are in place,  things will be even better.

Keep up the awesome work and my sincerest thanks to you, Kevin, and everyone to has contributed to TG and it's component projects!!!

Krys</description>
		<content:encoded><![CDATA[<p>Hi Kevin and everyone else!</p>
<p>I have been using TG since 0.5 and I love it! Django is very cool, but didn&#8217;t grab me and I have not yet been compelled to look at Ruby or Rails.</p>
<p>That said, Propad&#8217;s experience with installing TG has also been my own, even with 0.8.9 as well as 0.9x.</p>
<p>With unrestricted access to the net, TG is stupidly easy to install.  This is true.  Though you still have to know to get psyopg or sqlite or whatever.  But offline, or behind a highly restricted proxy (like at my work), installing TG is a pain.  I can do it, I&#8217;ve learned how, but it is a pain.  I have also seen several posts on the mailing list asking about this.</p>
<p>I have the intent to contribute on this subject, but need the time.</p>
<p>I would like to suggest 2 things, though:  </p>
<p>1) Put links to *all* dependencies on the download page, this includes Paste, PasteScript, PasteDeploy, Psycog, PySqlite, Formencode, etc.  Everything, including docutils so the tutorial is flawless.  Even if they are links offsite, that is fine but make it so that if I have to download everything manually, I can get it all in one place.  This is a simple enough addition and I think it would go a long way for those of us stuck in highly restricted environments.  Right now we have the equivalent of DLL/RPM hell.</p>
<p>2) I think (and I may have mentioned this elsewhere before) that a Plone-style installer (at least for Windows) that includes Python and everthing that TG needs would be very useful.  Perhaps one without Python too.  I know that there are a lot of people that use Python on Windows and making things easy for that demographic would go a long way to foster adoption.</p>
<p>I know suggestion 2 would need a champion, but number 1 would be fairly easy to do.</p>
<p>I feel bad not being able to commit to contributing&#8230; I want to&#8230; but I also believe that the manual install issue really does need to be addressed.</p>
<p>Anyway, I will end this long winded post and just reiterate that TG is absolutely wonderful!  And once the docs are in place,  things will be even better.</p>
<p>Keep up the awesome work and my sincerest thanks to you, Kevin, and everyone to has contributed to TG and it&#8217;s component projects!!!</p>
<p>Krys</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Ben Sizer</title>
		<link>http://www.blueskyonmars.com/2006/08/19/there-cant-be-only-one/#comment-65118</link>
		<dc:creator>Ben Sizer</dc:creator>
		<pubDate>Thu, 24 Aug 2006 10:28:32 +0000</pubDate>
		<guid isPermaLink="false">http://www.blueskyonmars.com/2006/08/19/there-cant-be-only-one/#comment-65118</guid>
		<description>Kevin: the key here is that the Pythonic way is typically to have an obvious solution, rather than a succinct one. TurboGears has always felt to me to be the other way around, more like Perl: you can do just about anything with it, often in a single line of code... if there was a hope in hell of you finding which line of code. I've never felt that TurboGears was incapable of doing what I need, only that I am incapable of sparing the hours to find out how it is able to do it. :)  I truly hope these docs are ready soon, and equally importantly, that in future the docs keep up with development.</description>
		<content:encoded><![CDATA[<p>Kevin: the key here is that the Pythonic way is typically to have an obvious solution, rather than a succinct one. TurboGears has always felt to me to be the other way around, more like Perl: you can do just about anything with it, often in a single line of code&#8230; if there was a hope in hell of you finding which line of code. I&#8217;ve never felt that TurboGears was incapable of doing what I need, only that I am incapable of sparing the hours to find out how it is able to do it. <img src='http://www.blueskyonmars.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  I truly hope these docs are ready soon, and equally importantly, that in future the docs keep up with development.</p>
]]></content:encoded>
	</item>
</channel>
</rss>

<!-- Dynamic Page Served (once) in 0.597 seconds -->
