<?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"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
		>
<channel>
	<title>Comments on: Avoiding breaking extensions</title>
	<atom:link href="http://www.squarefree.com/2005/05/04/avoiding-breaking-extensions/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.squarefree.com/2005/05/04/avoiding-breaking-extensions/</link>
	<description>Jesse Ruderman on Firefox, security, and more</description>
	<lastBuildDate>Fri, 09 Sep 2011 05:56:55 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
	<item>
		<title>By: Stephen Duncan Jr</title>
		<link>http://www.squarefree.com/2005/05/04/avoiding-breaking-extensions/comment-page-1/#comment-1225</link>
		<dc:creator>Stephen Duncan Jr</dc:creator>
		<pubDate>Sat, 07 May 2005 03:25:36 +0000</pubDate>
		<guid isPermaLink="false">http://www.squarefree.com/2005/05/04/avoiding-breaking-extensions/#comment-1225</guid>
		<description>I&#039;d just like to higlight what I think is Jesse&#039;s most insightful point, which seems to be getting ignored.

We need to admit that, in practice, there is a tradeoff between security and stability.  A tradeoff between aggressively preventing extensions from breaking the browser and encouraging user&#039;s to get security fixes.  

Any arguments should keep this in mind.  Statements like &quot;I do believe, though, that breaking the browser for some non-techie people, just because probability of that is low (even if it’s in fact low), is wrong.&quot; fail to address the security concern.  I&#039;d say it&#039;s worse to encourage people to stay on old version without security fixes (High likelihood: happens all the time) than to allow breaking the browser (this level of incompatibility happens much less often).  </description>
		<content:encoded><![CDATA[<p>I&#8217;d just like to higlight what I think is Jesse&#8217;s most insightful point, which seems to be getting ignored.</p>
<p>We need to admit that, in practice, there is a tradeoff between security and stability.  A tradeoff between aggressively preventing extensions from breaking the browser and encouraging user&#8217;s to get security fixes.  </p>
<p>Any arguments should keep this in mind.  Statements like &#8220;I do believe, though, that breaking the browser for some non-techie people, just because probability of that is low (even if it’s in fact low), is wrong.&#8221; fail to address the security concern.  I&#8217;d say it&#8217;s worse to encourage people to stay on old version without security fixes (High likelihood: happens all the time) than to allow breaking the browser (this level of incompatibility happens much less often).</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Nickolay Ponomarev</title>
		<link>http://www.squarefree.com/2005/05/04/avoiding-breaking-extensions/comment-page-1/#comment-1220</link>
		<dc:creator>Nickolay Ponomarev</dc:creator>
		<pubDate>Fri, 06 May 2005 13:37:55 +0000</pubDate>
		<guid isPermaLink="false">http://www.squarefree.com/2005/05/04/avoiding-breaking-extensions/#comment-1220</guid>
		<description>(In reply to Ben Karel)
* re maxVersion targeting major point releases. You seem to be missing the point. app.extensions.version is just a FVF string (i.e. major[.minor[.subminor[.buildid]]][+]), and extension with version V in FVF is compatible with given version of app, iff V &gt;= app.extensions.version.

http://www.mozilla.org/projects/firefox/extensions/update.html says &quot;In most cases, this pref will stay the same between minor versions.&quot; Notice the &quot;in most cases&quot;. So it&#039;s not maxVersion&#039;s design/implementation problem that the a.e.v wasn&#039;t bumped for 1.0.3. It&#039;s a conscious decision of whoever is in charge of Firefox, preferring &quot;state 1&quot; for extensions that used window.__proto__ trick over &quot;state 0&quot; for all extensions in a minor upgrade.

In Wolf&#039;s comment &quot;major milestone&quot; was just an opposite for &quot;nightly builds&quot;.

* re &quot;by the time the milestone is released, compatibility is Known, not Unknown&quot;. If that&#039;s the case, why would you need to remove the maxVersion, if the &quot;community&quot; updates compatibility information for all extensions by the time of release?

* re &quot;relying on just the community&quot;. I am well aware of the role of Mozilla community. But do you think there would be any Firefox success if QA or coding was left to the community? Why does MoFo has dedicated QAs (Asa/Sarah/Marcia/Tracy) then?

As for what makes me think that the fact that there is someone in charge of X means it’ll get done, - it doesn&#039;t. It&#039;s just that (1) it&#039;s more likely to be done and (2) as things are now, we don&#039;t break users (users&#039; application, to be precise) if a person in charge doesn&#039;t do anything by the release.

* re &quot;uninstalling Adblock 0.5&quot;. I believe that&#039;s partially your (adblock devs&#039;) responsibility. Although that doesn&#039;t have anythinng to do with &quot;maxVersion protection&quot;. In fact you sabotage it by setting maxVersion to 10.0 in your update.rdf.

* re &quot;bumping maxVersion in UMO’s database&quot;. What you say is simply not true. There is a database at u.m.o which is used to generate equivalent of update.rdf for extensions that don&#039;t orovide updateURL in their install manifests (that&#039;s what called w@u in the bug, although it&#039;s not really a webservice). Granted, this doesn&#039;t work perfectly for users without permanent access to the Internet, but implementing your suggestion would simply break them anyway.

I don&#039;t see why it&#039;s too late to do something right. The problem is, it&#039;s not clear what solution is better than what we have now. At this moment, I think that it&#039;s important to implement Jesse&#039;s #1 (like the mails which have been sent to authors that have an account at UMO with 1.0.3, only there should be a longer period between sending the mails and releasing the app).
</description>
		<content:encoded><![CDATA[<p>(In reply to Ben Karel)<br />
* re maxVersion targeting major point releases. You seem to be missing the point. app.extensions.version is just a FVF string (i.e. major[.minor[.subminor[.buildid]]][+]), and extension with version V in FVF is compatible with given version of app, iff V &gt;= app.extensions.version.</p>
<p><a href="http://www.mozilla.org/projects/firefox/extensions/update.html" rel="nofollow">http://www.mozilla.org/projects/firefox/extensions/update.html</a> says &#8220;In most cases, this pref will stay the same between minor versions.&#8221; Notice the &#8220;in most cases&#8221;. So it&#8217;s not maxVersion&#8217;s design/implementation problem that the a.e.v wasn&#8217;t bumped for 1.0.3. It&#8217;s a conscious decision of whoever is in charge of Firefox, preferring &#8220;state 1&#8243; for extensions that used window.__proto__ trick over &#8220;state 0&#8243; for all extensions in a minor upgrade.</p>
<p>In Wolf&#8217;s comment &#8220;major milestone&#8221; was just an opposite for &#8220;nightly builds&#8221;.</p>
<p>* re &#8220;by the time the milestone is released, compatibility is Known, not Unknown&#8221;. If that&#8217;s the case, why would you need to remove the maxVersion, if the &#8220;community&#8221; updates compatibility information for all extensions by the time of release?</p>
<p>* re &#8220;relying on just the community&#8221;. I am well aware of the role of Mozilla community. But do you think there would be any Firefox success if QA or coding was left to the community? Why does MoFo has dedicated QAs (Asa/Sarah/Marcia/Tracy) then?</p>
<p>As for what makes me think that the fact that there is someone in charge of X means it’ll get done, &#8211; it doesn&#8217;t. It&#8217;s just that (1) it&#8217;s more likely to be done and (2) as things are now, we don&#8217;t break users (users&#8217; application, to be precise) if a person in charge doesn&#8217;t do anything by the release.</p>
<p>* re &#8220;uninstalling Adblock 0.5&#8243;. I believe that&#8217;s partially your (adblock devs&#8217;) responsibility. Although that doesn&#8217;t have anythinng to do with &#8220;maxVersion protection&#8221;. In fact you sabotage it by setting maxVersion to 10.0 in your update.rdf.</p>
<p>* re &#8220;bumping maxVersion in UMO’s database&#8221;. What you say is simply not true. There is a database at u.m.o which is used to generate equivalent of update.rdf for extensions that don&#8217;t orovide updateURL in their install manifests (that&#8217;s what called w@u in the bug, although it&#8217;s not really a webservice). Granted, this doesn&#8217;t work perfectly for users without permanent access to the Internet, but implementing your suggestion would simply break them anyway.</p>
<p>I don&#8217;t see why it&#8217;s too late to do something right. The problem is, it&#8217;s not clear what solution is better than what we have now. At this moment, I think that it&#8217;s important to implement Jesse&#8217;s #1 (like the mails which have been sent to authors that have an account at UMO with 1.0.3, only there should be a longer period between sending the mails and releasing the app).</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: avih</title>
		<link>http://www.squarefree.com/2005/05/04/avoiding-breaking-extensions/comment-page-1/#comment-1210</link>
		<dc:creator>avih</dc:creator>
		<pubDate>Thu, 05 May 2005 23:16:15 +0000</pubDate>
		<guid isPermaLink="false">http://www.squarefree.com/2005/05/04/avoiding-breaking-extensions/#comment-1210</guid>
		<description>I think maxVersion should be replaced by maxTestedVersion. This way it&#039;s not hardcoded that an extension will NOT work when the version is upped. It&#039;s left for the browser/user to decide whether an extension[/theme] that was tested with 1.03 will also work with 1.04.

Seriously, a platform which requires its applications to be restricted by-definition to the current version (or earlier) ONLY is a bad platform. You just can NOT expect developers to keep updating their applications because the platform keep changing under their feet. A platform should be stable, and a basis developers can count on. Backward compatibility is such an important issue for applications and for the platform to succeed. For those of you who haven&#039;t read Joel&#039;s column on this issue, it&#039;s a really good read: http://www.joelonsoftware.com/articles/APIWar.html

As it stands now, the platform forces an extension to declare that it will NOT work with any future version of the platform (that&#039;s a direct implication of the compulsury existance of maxVersion). And this (currently) makes firefox[/gecko.mozilla/whatever] a bad platform which shoots itself in the foot.

</description>
		<content:encoded><![CDATA[<p>I think maxVersion should be replaced by maxTestedVersion. This way it&#8217;s not hardcoded that an extension will NOT work when the version is upped. It&#8217;s left for the browser/user to decide whether an extension[/theme] that was tested with 1.03 will also work with 1.04.</p>
<p>Seriously, a platform which requires its applications to be restricted by-definition to the current version (or earlier) ONLY is a bad platform. You just can NOT expect developers to keep updating their applications because the platform keep changing under their feet. A platform should be stable, and a basis developers can count on. Backward compatibility is such an important issue for applications and for the platform to succeed. For those of you who haven&#8217;t read Joel&#8217;s column on this issue, it&#8217;s a really good read: <a href="http://www.joelonsoftware.com/articles/APIWar.html" rel="nofollow">http://www.joelonsoftware.com/articles/APIWar.html</a></p>
<p>As it stands now, the platform forces an extension to declare that it will NOT work with any future version of the platform (that&#8217;s a direct implication of the compulsury existance of maxVersion). And this (currently) makes firefox[/gecko.mozilla/whatever] a bad platform which shoots itself in the foot.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Ben Karel</title>
		<link>http://www.squarefree.com/2005/05/04/avoiding-breaking-extensions/comment-page-1/#comment-1209</link>
		<dc:creator>Ben Karel</dc:creator>
		<pubDate>Thu, 05 May 2005 19:36:32 +0000</pubDate>
		<guid isPermaLink="false">http://www.squarefree.com/2005/05/04/avoiding-breaking-extensions/#comment-1209</guid>
		<description>First, keep in mind that there are numerous ways for extensions to break: some that merely prevent certain functionality of the extension from working (let&#039;s call these class 1), some that prevent the entire extension from loading (class 0), some that cause the browser to be unusable (class -1), and some that cause dataloss or profile corruption (-2).

It is, I hope, clear that having a maxVersion restriction kick in is functionally equivalent to a class 0 &quot;breakage&quot;, and is worse than a class 1 break. I do think that damaging breaks that go undetected by the community are quite rare. Perhaps not as rare as when the first comments in the bug were written, but still rare. Care to quote any examples? Virtually all of the breaks I&#039;ve seen have been exposed by patches checked in to nightly builds.


Regarding having maxVersion targeting major point releases, the assumption has been that minor releases wouldn&#039;t contain breaking functionality. The possibility was acknowledged, but not deemed likely enough to warrant much consideration. (IIRC this was before support for FVF strings like &quot;1.0+&quot; was checked in.) Anyways, I&#039;ll quote Wolf himself:

&lt;blockquote&gt;&quot;Development builds are just that, if an extension breaks and you required it..
well.. heh. you shouldn&#039;t use that build. With this change, minApp and maxApp
target mainly milestone builds, I don&#039;t personally believe it is unreasonable to
require authors to update a maxAppVer value before a major milestone.&quot;&lt;/blockquote&gt;

Regarding point 2: Ideally, there would be an easy way for UMO admins to re-package extensions with a new maxVersion. My point with the &quot;community testing process&quot; is that by the time the milestone is released, compatibility is Known, not Unknown.



&lt;blockquote&gt;I’d like to say that relying on just “the community” will never gain you good results. Unless there is a person who is in charge of doing X, there’s no guarantee it will be done. Leave alone the fact that nightly testers may not use all the 500 extensions available for Firefox.&lt;/blockquote&gt;

Heh. You do realize that a not-insignificant portion of Firefox&#039;s success is directly attributable to the community surrounding it? For promotion of the browser, creation of extensions, helping maintain bugzila, even for development of the core, Firefox&#039;s community is one of the first-order forces contributing to its ongoing survival.
Also, what makes you think that the fact that there is someone in charge of X means it&#039;ll get done? There&#039;s plenty of contradictory evidence to be found with UMO, on the extension-developer and backend-development and administration sides. The developer panel was what, nearly a year late? UMO&#039;s goal of only hosting &quot;vetted&quot; extensions proved to be such a burden that their collection essentially froze in time, leaving outdated and, occasionally (*gasp*) broken extensions being served from UMO. As I believe you well know, uninstalling Adblock 0.5, as hosted by UMO, leaves users with a broken profile. Where&#039;s the maxVersion protection?



The problem with &quot;bump[ing] maxVersion in UMO&#039;s database&quot; is that there&#039;s no &quot;database&quot; in which maxVersion may be bumped -- it&#039;s a text file in a ZIP, and PHP has rudimentary zip-reading and no zip-writing support built in. Because it would be an uncommon operation, they could probably get away with a shell script to unzip and rezip.

I agree that having extensions break browsers is not good, but I simply think that maxVersion, as implemented now, is causing more harm than good.

Of course, the really fun bit in all of this is that it&#039;s too late to do it right. Too many 1.0 installs require maxVersion now; as I noted in the bug desc., &quot;I also think that this should be dealt with ASAP, as the longer it
goes unfixed, the harder it will be to fix.&quot; On the other hand,  remote update.rdf support has made maxVersion optional in fact if not in name. We now have all of the hassle with none of the protection. Happy joy.</description>
		<content:encoded><![CDATA[<p>First, keep in mind that there are numerous ways for extensions to break: some that merely prevent certain functionality of the extension from working (let&#8217;s call these class 1), some that prevent the entire extension from loading (class 0), some that cause the browser to be unusable (class -1), and some that cause dataloss or profile corruption (-2).</p>
<p>It is, I hope, clear that having a maxVersion restriction kick in is functionally equivalent to a class 0 &#8220;breakage&#8221;, and is worse than a class 1 break. I do think that damaging breaks that go undetected by the community are quite rare. Perhaps not as rare as when the first comments in the bug were written, but still rare. Care to quote any examples? Virtually all of the breaks I&#8217;ve seen have been exposed by patches checked in to nightly builds.</p>
<p>Regarding having maxVersion targeting major point releases, the assumption has been that minor releases wouldn&#8217;t contain breaking functionality. The possibility was acknowledged, but not deemed likely enough to warrant much consideration. (IIRC this was before support for FVF strings like &#8220;1.0+&#8221; was checked in.) Anyways, I&#8217;ll quote Wolf himself:</p>
<blockquote><p>&#8220;Development builds are just that, if an extension breaks and you required it..<br />
well.. heh. you shouldn&#8217;t use that build. With this change, minApp and maxApp<br />
target mainly milestone builds, I don&#8217;t personally believe it is unreasonable to<br />
require authors to update a maxAppVer value before a major milestone.&#8221;</p></blockquote>
<p>Regarding point 2: Ideally, there would be an easy way for UMO admins to re-package extensions with a new maxVersion. My point with the &#8220;community testing process&#8221; is that by the time the milestone is released, compatibility is Known, not Unknown.</p>
<blockquote><p>I’d like to say that relying on just “the community” will never gain you good results. Unless there is a person who is in charge of doing X, there’s no guarantee it will be done. Leave alone the fact that nightly testers may not use all the 500 extensions available for Firefox.</p></blockquote>
<p>Heh. You do realize that a not-insignificant portion of Firefox&#8217;s success is directly attributable to the community surrounding it? For promotion of the browser, creation of extensions, helping maintain bugzila, even for development of the core, Firefox&#8217;s community is one of the first-order forces contributing to its ongoing survival.<br />
Also, what makes you think that the fact that there is someone in charge of X means it&#8217;ll get done? There&#8217;s plenty of contradictory evidence to be found with UMO, on the extension-developer and backend-development and administration sides. The developer panel was what, nearly a year late? UMO&#8217;s goal of only hosting &#8220;vetted&#8221; extensions proved to be such a burden that their collection essentially froze in time, leaving outdated and, occasionally (*gasp*) broken extensions being served from UMO. As I believe you well know, uninstalling Adblock 0.5, as hosted by UMO, leaves users with a broken profile. Where&#8217;s the maxVersion protection?</p>
<p>The problem with &#8220;bump[ing] maxVersion in UMO&#8217;s database&#8221; is that there&#8217;s no &#8220;database&#8221; in which maxVersion may be bumped &#8212; it&#8217;s a text file in a ZIP, and PHP has rudimentary zip-reading and no zip-writing support built in. Because it would be an uncommon operation, they could probably get away with a shell script to unzip and rezip.</p>
<p>I agree that having extensions break browsers is not good, but I simply think that maxVersion, as implemented now, is causing more harm than good.</p>
<p>Of course, the really fun bit in all of this is that it&#8217;s too late to do it right. Too many 1.0 installs require maxVersion now; as I noted in the bug desc., &#8220;I also think that this should be dealt with ASAP, as the longer it<br />
goes unfixed, the harder it will be to fix.&#8221; On the other hand,  remote update.rdf support has made maxVersion optional in fact if not in name. We now have all of the hassle with none of the protection. Happy joy.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Nickolay Ponomarev</title>
		<link>http://www.squarefree.com/2005/05/04/avoiding-breaking-extensions/comment-page-1/#comment-1206</link>
		<dc:creator>Nickolay Ponomarev</dc:creator>
		<pubDate>Thu, 05 May 2005 16:32:40 +0000</pubDate>
		<guid isPermaLink="false">http://www.squarefree.com/2005/05/04/avoiding-breaking-extensions/#comment-1206</guid>
		<description>&quot;maxVersion, as designed, is really only supposed to be protection for full point releases: 1.0, 1.1, 1.5&quot;
I think that&#039;s not true. mozilla.org could bump app.extensions.version for 1.0.3 as well, they didn&#039;t do that not because of technical restrictions (I believe), but because they thought the number of broken extensions was very low.

Ben, I re-read the bug, and I think Wolf has explained everything very well. I&#039;d like to add to what he says:

You make a few assumptions that are ungrounded at best:
1- negligible percentage of extensions break with new releases
2- those extensions that do break will be noticed by the &quot;community of nightly testers&quot; during development phase and extension&#039;s author will release fixed version of extension or change maxVersion in update.rdf before &quot;end-users&quot; upgrade their apps.

For (2), I&#039;d like to say that relying on just &quot;the community&quot; will never gain you good results. Unless there is a person who is in charge of doing X, there&#039;s no guarantee it will be done. Leave alone the fact that nightly testers may not use all the 500 extensions available for Firefox.

Yes, maxVersion makes authors responsible for the testing, and they don&#039;t like it. But it&#039;s better than making the default action for extensions of &quot;unknown&quot; compatibility to allow installing them, which is what you propose in that bug.

I&#039;m not saying that current implementation of idea is great, and I certainly can see your concerns here. I do believe, though, that breaking the browser for some non-techie people, just because probability of that is low (even if it&#039;s in fact low), is wrong.

In my opinion, allowing more people (UMO editors?) to bump maxVersion in UMO&#039;s database can help. Although I remember an argument against this, made by someone of UMO staff before 1.0, iirc, that this isn&#039;t right, because if the version is bumped, and the extension isn&#039;t fully compatible, it causes problems to the author. How ironic.

(btw, the &quot;remember the changes in 1.8&quot; should be &quot;remember the *tree* changes in 1.8&quot; in my previous comment. It didn&#039;t like the angle brackets.)
</description>
		<content:encoded><![CDATA[<p>&#8220;maxVersion, as designed, is really only supposed to be protection for full point releases: 1.0, 1.1, 1.5&#8243;<br />
I think that&#8217;s not true. mozilla.org could bump app.extensions.version for 1.0.3 as well, they didn&#8217;t do that not because of technical restrictions (I believe), but because they thought the number of broken extensions was very low.</p>
<p>Ben, I re-read the bug, and I think Wolf has explained everything very well. I&#8217;d like to add to what he says:</p>
<p>You make a few assumptions that are ungrounded at best:<br />
1- negligible percentage of extensions break with new releases<br />
2- those extensions that do break will be noticed by the &#8220;community of nightly testers&#8221; during development phase and extension&#8217;s author will release fixed version of extension or change maxVersion in update.rdf before &#8220;end-users&#8221; upgrade their apps.</p>
<p>For (2), I&#8217;d like to say that relying on just &#8220;the community&#8221; will never gain you good results. Unless there is a person who is in charge of doing X, there&#8217;s no guarantee it will be done. Leave alone the fact that nightly testers may not use all the 500 extensions available for Firefox.</p>
<p>Yes, maxVersion makes authors responsible for the testing, and they don&#8217;t like it. But it&#8217;s better than making the default action for extensions of &#8220;unknown&#8221; compatibility to allow installing them, which is what you propose in that bug.</p>
<p>I&#8217;m not saying that current implementation of idea is great, and I certainly can see your concerns here. I do believe, though, that breaking the browser for some non-techie people, just because probability of that is low (even if it&#8217;s in fact low), is wrong.</p>
<p>In my opinion, allowing more people (UMO editors?) to bump maxVersion in UMO&#8217;s database can help. Although I remember an argument against this, made by someone of UMO staff before 1.0, iirc, that this isn&#8217;t right, because if the version is bumped, and the extension isn&#8217;t fully compatible, it causes problems to the author. How ironic.</p>
<p>(btw, the &#8220;remember the changes in 1.8&#8243; should be &#8220;remember the *tree* changes in 1.8&#8243; in my previous comment. It didn&#8217;t like the angle brackets.)</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Pat</title>
		<link>http://www.squarefree.com/2005/05/04/avoiding-breaking-extensions/comment-page-1/#comment-1205</link>
		<dc:creator>Pat</dc:creator>
		<pubDate>Thu, 05 May 2005 16:24:14 +0000</pubDate>
		<guid isPermaLink="false">http://www.squarefree.com/2005/05/04/avoiding-breaking-extensions/#comment-1205</guid>
		<description>&gt; Ensure that mozilla.org has permission to distribute new versions 
&gt; of extensions listed on UMO that authors abandon

Taking over an extension that is not maintained anymore is a pain in the a** I have filed a bug in bugzilla somewhere but I guess this is very low priority ... 
Clearely something needs to be done as some heavily used extensions bit rot on umo.</description>
		<content:encoded><![CDATA[<p>&gt; Ensure that mozilla.org has permission to distribute new versions<br />
&gt; of extensions listed on UMO that authors abandon</p>
<p>Taking over an extension that is not maintained anymore is a pain in the a** I have filed a bug in bugzilla somewhere but I guess this is very low priority &#8230;<br />
Clearely something needs to be done as some heavily used extensions bit rot on umo.</p>
]]></content:encoded>
	</item>
</channel>
</rss>

