<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	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:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>The-Source.com</title>
	<atom:link href="http://www.the-source.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.the-source.com</link>
	<description>Free and Open Source Software News and Opinion</description>
	<lastBuildDate>Wed, 22 Dec 2010 01:04:49 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1.2</generator>
		<item>
		<title>NoMachine takes NX closed source</title>
		<link>http://www.the-source.com/2010/12/nomachine-takes-nx-closed-source/</link>
		<comments>http://www.the-source.com/2010/12/nomachine-takes-nx-closed-source/#comments</comments>
		<pubDate>Wed, 22 Dec 2010 01:04:49 +0000</pubDate>
		<dc:creator>Jason</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[NoMachine]]></category>

		<guid isPermaLink="false">http://www.the-source.com/?p=1327</guid>
		<description><![CDATA[Wow, sad to hear that the new version of NX will be &#8220;only available under a closed source license&#8220;. NoMachine NX is a very good remote desktop application, with several free and open source implementations of the NX protocol. It &#8211; either in the form of the official NoMachine NX client or the FreeNX client [...]]]></description>
			<content:encoded><![CDATA[<p>Wow, sad to hear that the new version of NX will be &#8220;<a href="http://www.nomachine.com/news-read.php?idnews=331">only available under a closed source license</a>&#8220;.</p>
<p>NoMachine NX is a very good remote desktop application, with several free and open source implementations of the NX protocol. It &#8211; either in the form of the official NoMachine NX client or the FreeNX client &#8211; has long been my first choice when I need a remote GUI.</p>
<p>Now it looks like the upcoming 4.0 will kill that for new versions, meaning the FLOSS versions of NX will likely remain with version 3 of things. Which in turn makes me fear NX is soon to be dead for FLOSS.</p>
<p>It&#8217;s a bit uncommon to see previously open source projects taken closed source, so it will be interesting to see how this plays out.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.the-source.com/2010/12/nomachine-takes-nx-closed-source/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Attachmate Statement on Open Source</title>
		<link>http://www.the-source.com/2010/12/attachmate-statement-on-open-source/</link>
		<comments>http://www.the-source.com/2010/12/attachmate-statement-on-open-source/#comments</comments>
		<pubDate>Sat, 18 Dec 2010 00:55:17 +0000</pubDate>
		<dc:creator>Jason</dc:creator>
				<category><![CDATA[Novell]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Attachmate]]></category>
		<category><![CDATA[OpenSUSE]]></category>
		<category><![CDATA[SUSE]]></category>

		<guid isPermaLink="false">http://www.the-source.com/?p=1323</guid>
		<description><![CDATA[A recent SEC filing gives a preview of an upcoming Attachmate statement on Open Source, OpenSUSE and related matters: Attachmate Acquisition: What does it mean for SUSE, openSUSE &#38; open source? —A Q&#38;A with Jeff Hawn, chairman and CEO of Attachmate by Jos Poortvliet, openSUSE Community Manager at Novell I had a chance to speak with [...]]]></description>
			<content:encoded><![CDATA[<p>A <a href="http://www.sec.gov/Archives/edgar/data/758004/000119312510283519/ddefa14a.htm">recent SEC filing</a> gives a preview of an upcoming Attachmate statement on Open Source, OpenSUSE and related matters:</p>
<blockquote><p><span style="font-size: x-small;"><strong>Attachmate Acquisition: What does it mean for SUSE, openSUSE &amp; open source?</strong></span></p>
<p><span style="font-size: x-small;"><em>—A Q&amp;A with Jeff Hawn, chairman and CEO of Attachmate by Jos Poortvliet, openSUSE Community Manager at Novell</em></span></p>
<p><span style="font-size: x-small;"><em>I had a chance to speak with Jeff Hawn, chairman and CEO of Attachmate Corporation about his views and intentions around SUSE and openSUSE. Jeff has commented that SUSE is an important brand and business that he wants to strengthen. What are his thoughts about the community and what does he see for SUSE and openSUSE? Here below are the questions I put forward and Jeff’s current thoughts. —Jos</em></span></p>
<p><span style="font-size: x-small;"><strong><span style="text-decoration: underline;">Open Source</span></strong></span></p>
<p><span style="font-size: x-small;"><strong>What is Attachmate’s history with open source projects?</strong></span></p>
<p><span style="font-size: x-small;">Attachmate does not have a corporate track record in the open source business. However, we recognize the importance of open source technology, particularly Linux, and the growing value it brings to enterprises globally. We also recognize and value the openSUSE project, the contribution that the community makes to the SUSE business and most importantly, the many ways in which the community benefits SUSE customers.</span></p>
<p><span style="font-size: x-small;">At the end of the day, we are a technology company that is customer-driven, made up of engineers and technology enthusiasts. We have a lot of individuals that are long-time users of open source and participants in the open source movement. We recognize and understand what the community has developed, particularly over the last decade, and we are excited to be part of its future.</span></p>
<p><span style="font-size: x-small;"><strong>What is Attachmate’s view of open source software?</strong></span></p>
<p><span style="font-size: x-small;">Attachmate recognizes that enterprises all over the world are utilizing more open source technology in their infrastructures, data centers and desktops every year. We believe this is a trend that will continue and that’s why we are excited about the Open Platform Solutions business and in particular, the SUSE Linux community.</span></p>
<p><span style="font-size: x-small;">It is easy for people to assume that because we are not currently in the open source business, we don’t value or understand it. This is far from the case. We are in the business of meeting customer needs and they see great value in utilizing open source technology solutions. Because of its open nature, open source is being adopted by enterprises in all industries around the world. Our intent is to keep it that way and continue to foster what has made it so successful for the Open Platforms Solutions business.</span></p>
<p><span style="font-size: x-small;"><strong><span style="text-decoration: underline;">SUSE</span></strong></span></p>
<p><span style="font-size: x-small;"><strong>Ok, then what is the plan for SUSE?</strong></span></p>
<p><span style="font-size: x-small;">We cannot speak to specifics until after close, but what we can communicate now is our intention to establish a SUSE business unit on par with the existing Attachmate and NetIQ business units. We believe that establishing SUSE as its own business unit will give greater focus and flexibility to grow within a competitive market. We view SUSE as a well regarded and proven technology in the open source and enterprise Linux community and we want to further build upon that. We intend for SUSE to continue to provide the same high quality open source technology solutions, such as SUSE Linux Enterprise Server, needed to meet users’ demands for scalability, interoperability and cost effectiveness.</span></p>
<p><span style="font-size: xx-small;"> </span></p>
<p><span style="font-size: small;"><strong>What will the SUSE business unit be – what do you mean by “business unit”?</strong></span></p>
<p><span style="font-size: x-small;">A business unit brings together all the resources, IP, people and infrastructure needed to operate – to build product, deliver solutions and support customers. So, what is known today as Open Platform Solutions will now be centralized within the SUSE business unit. In most respects SUSE will continue to operate as it did as OPS, but will benefit from being a dedicated and more visible brand with a focused business unit behind it.</span></p>
<p><span style="font-size: x-small;"><strong>Does Attachmate intend to immediately sell the SUSE business?</strong></span></p>
<p><span style="font-size: x-small;">I want to be clear here: all of our efforts will be focused on doing the things necessary to make SUSE the highest performing business with the strongest openSUSE community that we can. This is a healthy, growing dynamic business. We want to continue to nurture this business and grow it. This is why we want to elevate the SUSE brand and operate that part of the business as a distinct unit where it will receive greater visibility and focus.</span></p>
<p><span style="font-size: x-small;"><strong>How do you plan to compete in the Linux market?</strong></span></p>
<p><span style="font-size: x-small;">We’re excited about SUSE because of the great competitive advantages it already has. With thousands of certified ISV applications, the best interoperability and unsurpassed scalability, it provides the best value and the lowest cost of ownership on the market. Attachmate intends to continue that commitment to high quality and cost-effective solutions.</span></p>
<p><span style="font-size: x-small;"><strong>What are your intentions for open source initiatives sponsored by Novell today?</strong></span></p>
<p><span style="font-size: x-small;">No decisions have been made regarding any specific projects or sponsorships. Much more integration work needs to happen before discussions of changing the status of individual projects can occur. But we can say that the new SUSE business unit will stay committed to participating in the projects and initiatives that are most important to the SUSE business and its customers.</span></p>
<p><span style="font-size: x-small;"><strong>Will Attachmate continue to support Linux kernel development by employees as Novell has done?</strong></span></p>
<p><span style="font-size: x-small;">Yes, we will. Key contributions to the Linux kernel are a benefit to everyone in the community. This sort of contribution is a key element of what makes the synergy between business and open source so successful and we intend to continue support it.</span></p>
<p><span style="font-size: x-small;"><strong><span style="text-decoration: underline;">openSUSE</span></strong></span></p>
<p><span style="font-size: x-small;"><strong>Will Attachmate increase or decrease the investments in development and marketing for openSUSE?</strong></span></p>
<p><span style="font-size: x-small;">There is a lot of integration work to do before those decisions are made and some of that work cannot be done until after the transaction has closed. Our intent is to continue to sponsor and participate in the openSUSE project.</span></p>
<p><span style="font-size: x-small;"><strong>Will this impact the initiative to create an independent foundation for openSUSE?</strong></span></p>
<p><span style="font-size: x-small;">No decisions on this initiative have been made. This is a complex topic that has been actively debated in the community for some time. We look forward to continuing that discussion with the community after the close of the transaction.</span></p>
<p><span style="font-size: xx-small;"> </span></p>
<p><span style="font-size: small;"><strong>Will Attachmate continue to support the openSUSE conference?</strong></span></p>
<p><span style="font-size: x-small;">No decisions have been made about the ongoing sponsorship of openSUSE conference. It is simply too early to reach conclusions on specific areas such as this – more integration work and collaboration with the SUSE team is needed. Our overall intent is to maintain the continuity of success we see within the SUSE business and that includes continuing to work closely with the openSUSE community.</span></p>
<p><span style="font-size: x-small;"><strong>Will the acquisition have any other effects on the openSUSE project or community?</strong></span></p>
<p><span style="font-size: x-small;">We look forward to learning more about the project and working together with the community to figure out what’s working well, what could be done differently or improved. This will be a highly collaborative relationship.</span></p>
<p><span style="font-size: x-small;"><strong>Does Attachmate intend to shut down the openSUSE community project?</strong></span></p>
<p><span style="font-size: x-small;">No, we don’t. Attachmate intends to continue the sponsorship and collaboration with the openSUSE project. We view the openSUSE project and its extended community as an important part of the overall SUSE business and we value its contributions to the technology that forms the heart of the SUSE offerings (see related statement on the Attachmate website <span style="text-decoration: underline;">here</span>).</span></p>
<p><span style="font-size: x-small;"><strong><span style="text-decoration: underline;">Intellectual Property</span></strong></span></p>
<p><span style="font-size: x-small;"><strong>What IP assets are being purchased by CPTN Holdings LLC?</strong></span></p>
<p><span style="font-size: x-small;">Attachmate cannot provide details on the IP assets being purchased, but we can clarify that CPTN is NOT purchasing products. They are purchasing 882 patents and patent applications as described in the initial 8-K filed by Novell.</span></p>
<p><span style="font-size: x-small;">The purchase does not include the Novell UNIX copyrights (see related statement on the Novell website <span style="text-decoration: underline;">here</span>). It does not include the product source code or product implementations.</span></p>
<p><span style="font-size: x-small;">Attachmate would not buy a company and not preserve what is working nor hamper our ability to operate this business. So, SUSE will retain all the technology, rights and IP needed to continue and grow.</span></p>
<p><span style="font-size: x-small;"><strong>Does the purchase by CPTN Holdings impact the openSUSE project or the SUSE enterprise business?</strong></span></p>
<p><span style="font-size: x-small;">After the merger is complete, the SUSE business unit will retain all the IP and technology rights needed to operate, continue its sponsorship of the openSUSE project and supporting SUSE customers.</span></p>
<p><span style="font-size: x-small;"><strong>What happens to the Novell UNIX copyrights after the sale of IP assets to CPTN Holdings?</strong></span></p>
<p><span style="font-size: x-small;">No change. The purchase of IP assets by CPTN Holdings does not include the UNIX copyrights and the copyrights will continue to be owned by Novell (see related statement on the Novell website <span style="text-decoration: underline;">here</span>).</span></p></blockquote>
<p>Take it for what it&#8217;s worth, I guess. I&#8217;d say it doesn&#8217;t look good for the Open Source projects, especially those with no direct profitable application, but I take a cynical view of such press releases.</p>
<p>Consider the retardation of the question &#8220;Does Attachmate intend to shut down the OpenSUSE community project&#8221; &#8211; it&#8217;s not like Attachmate <strong>could</strong> do such a thing, even if the wanted to. What they could do (and what I suspect they eventually <strong>will </strong>do) is adopt the same sort of &#8220;relationship&#8221; with external communities that Oracle does: basically, do exactly what we want, how we want it, and we still won&#8217;t support you in any way whatsoever of import.</p>
<p>I&#8217;m dying to find a copy of the &#8220;Exhibit A&#8221; that lists the 882 patents &#8211; it is referred to in several SEC filings, but the exhibit itself is not available as far as I can tell.</p>
<p>My favorite bit: the &#8220;intention to establish a SUSE business unit on par with the existing Attachmate and NetIQ business units&#8221;. And since we all know how the existing Attachmate and NetIQ business units have lit the Linux world on fire with innovation and contribution, this can only be a fantastic development.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.the-source.com/2010/12/attachmate-statement-on-open-source/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>More Mono Misinformation Meticulously Dematerialized</title>
		<link>http://www.the-source.com/2010/12/more-mono-misinformation-meticulously-dematerialized/</link>
		<comments>http://www.the-source.com/2010/12/more-mono-misinformation-meticulously-dematerialized/#comments</comments>
		<pubDate>Tue, 14 Dec 2010 03:27:59 +0000</pubDate>
		<dc:creator>Jason</dc:creator>
				<category><![CDATA[Novell]]></category>
		<category><![CDATA[Mono]]></category>

		<guid isPermaLink="false">http://www.the-source.com/?p=1289</guid>
		<description><![CDATA[Let&#8217;s look at some more Mono Misinformation, so the Gentle Reader can gain a sense of what one faces when braving the Wilds of Ignorance. Oh Twitter User, It&#8217;s So Cute When You Try So, as I parsed my enormous referrer logs, populated only with visits by Distinguished Guests of the Highest Caliber, I noticed [...]]]></description>
			<content:encoded><![CDATA[<p>Let&#8217;s look at some more Mono Misinformation, so the Gentle Reader can gain a sense of what one faces when braving the Wilds of Ignorance.</p>
<p><strong>Oh Twitter User, It&#8217;s So Cute When You Try</strong></p>
<p>So, as I parsed my enormous referrer logs, populated only with visits by Distinguished Guests of the Highest Caliber, I noticed some incoming Twitter traffic. Imagine my shock when I found someone defending Mono on Twitter! Then imagine my utter disbelief when I found that same someone &#8211; brace yourself &#8211; had their facts wrong! Why I nearly succumbed to the Vapors that Very Moment!</p>
<p>A shock I know, but steel yourself, Gentle Reader, as we journey forth again&#8230;(and to seven hells with Twitter for not having an easy-to-use threaded conversation view. I&#8217;ve often said this is because no one is interested in having a real conversation or discussion there. Twitter: Proof that a terrible UI is no bar to massive success.)</p>
<blockquote><p><a href="http://twitter.com/plaimbock/status/10481465057869824">plaimbock</a>: #ubuntu 11.04 switches to #banshee http://is.gd/i7avD but what about the #MCP/patent issues? pixie dust made them vanish? http://is.gd/i7aUx</p>
<p><a href="http://twitter.com/trampstr/status/10925666534957056">trampstr</a>: @plaimbock Their are no patient issues, Banshee is covered a legally binding &#8220;community promise&#8221; not to sue</p>
<p><a href="http://twitter.com/plaimbock/status/11895332329754624">trampstr</a>: @plaimbock maybe you missed it but the work to cut back the size of the banshee install for 11.04 removed all non EMCA components. Its safe.</p>
<p><a href="http://twitter.com/plaimbock/status/11895332329754624">trampstr</a>: @plaimbock http://bit.ly/e81pnr &lt;- commit that removed all non emca components.</p></blockquote>
<p>Of course, those who are paying attention in class already know the problem, but I&#8217;ll point it out here for anyone just joining us:</p>
<ul>
<li>Banshee is <strong>not</strong> covered, in any sense.</li>
<li>All of the non-ECMA components <strong>were not</strong> removed.</li>
<li>That commit <strong>doesn&#8217;t</strong> remove all the non-ECMA components.</li>
</ul>
<p><strong>3 tweets, every one of which is totally, 100% wrong</strong> presented as casually as you like without disclaimer, explainer or retainer.</p>
<p>Let me also note there is also an important distinction to be made between &#8220;Banshee is covered&#8221; and &#8220;Mono is covered&#8221;. If applications were directly being covered, then we wouldn&#8217;t care if Mono or Logo or Any Other Language were being used. But the Community Promise is applied to the C#/CLI implementation, which means it<strong> is Mono that the application developer is relying on to be safe</strong> within the confines of the Microsoft Community Promise.</p>
<p>In effect, the Mono project and its promoters are making a promise to application developers and users: &#8220;Use Mono to develop your applications, it&#8217;s useful and <strong>safe</strong>. Microsoft has made a promise.&#8221; The implication is that developers and users need not be concerned with verifying they are remaining withing the boundaries of Microsoft&#8217;s promise. But, this sort of Mono Apologist <strong>violates that trust</strong> by not only implementing things they know are not covered by the promise, but also by obfuscating which bits are &#8220;safe&#8221; and &#8220;unsafe&#8221; <strong>and then lying about it</strong>.</p>
<p>That&#8217;s a whole different thing than being honest and saying something like &#8220;Mono may be risky, but we think it&#8217;s useful and not <strong>too</strong> risky.&#8221; Nothing wrong with this premise, because I believe rational people can evaluate the level of acceptable risk differently. (Team Apologista has a problem here in how they argue it, but the premise is a decent enough starting point.)</p>
<p>So, the original questioner has been misled. Perhaps not maliciously &#8211; but misled nonetheless. Of course, there&#8217;s more:</p>
<blockquote><p><a href="http://twitter.com/plaimbock/status/14179618571427841">plaimbock</a>: @trampstr: what about this report that #banshee, tomboy, f-spot and #mono use non-ECMA namespaces? http://is.gd/iEe7Z</p>
<p><a href="http://twitter.com/trampstr/status/14208385473843200">trampstr</a>: @plaimbock thats old info, also it lists System.Xml as non EMCA but it is in ECMA335.</p></blockquote>
<p>Um, no &#8211; it is not &#8220;old info&#8221;. Unless you consider the last 2 days &#8220;old&#8221;. The source code repository is ~2 days old, and the ECMA standard is the released-this-month 5th Edition.<strong> Any more up-to-date and it would be realtime.</strong> <del datetime="2010-12-14T23:55:34+00:00">Furthermore, while parts of System.Xml are now in the standard, the commonly used methods by the Mono apps do not appear to be -<strong> as I explitictly mentioned in the &#8220;Cautionary note&#8221; in my post</strong>.</del> <em>The System.Xml thing is legit.</em></p>
<p>How do you combat this? One tries to be careful in researching and fact-checking &#8211; no-one is forthcoming with easy, available or comprehensive references in this area, after all &#8211; and yet any random jackass on Twitter will authoritatively deny something even when <strong>looking right at it</strong>! Is this person a liar? Incompetent? Lazy? Just repeating shit he read on some Mono Cabal Talking Points Memo? All or none of the above?</p>
<p>And of course, the final delight, an amazingly un-self-aware twit tweet :</p>
<blockquote><p><a href="http://twitter.com/trampstr/status/14213853407617024"> trampstr</a>: @plaimbock there are very strong opinions on both sides. and lots of miss information going around (from both sides).</p></blockquote>
<p>FUUUUUUUUUU! YOU! YOU! <strong>You are the one spreading misinformation!</strong> Gah!</p>
<p><strong>Aaaanywaaay</strong></p>
<p>The good news is: now that it is clearly documented that:</p>
<ul>
<li><a href="http://www.the-source.com/2010/12/mono-unsafe-at-any-speed/">All of the most popular Mono applications in Linux use non-ECMA .NET namespaces extensively</a></li>
<li><a href="http://www.the-source.com/2010/12/on-mono-packaging/">Mono is not split into ECMA/non-ECMA packages in Debian/Ubuntu, and probably not in any other distro eithe</a>r</li>
</ul>
<p>I am supremely confident that we will never again hear another argument from a Mono Apologist suggesting otherwise. I also fully expect those very vocal Mono Apologists who manage to appear in every thread to defend Mono and may have stated or implied different, to go back and correct themselves so they don&#8217;t continue to mislead others. After all, I know factual accuracy is of the highest concern.</p>
<p>I am also expecting Swedish Triplets and a Lamborghini Spyder Performante for Xmas.</p>
<p>Which do think is more likely?</p>
]]></content:encoded>
			<wfw:commentRss>http://www.the-source.com/2010/12/more-mono-misinformation-meticulously-dematerialized/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>On Mono Packaging</title>
		<link>http://www.the-source.com/2010/12/on-mono-packaging/</link>
		<comments>http://www.the-source.com/2010/12/on-mono-packaging/#comments</comments>
		<pubDate>Mon, 13 Dec 2010 12:41:15 +0000</pubDate>
		<dc:creator>Jason</dc:creator>
				<category><![CDATA[Novell]]></category>
		<category><![CDATA[Debian]]></category>
		<category><![CDATA[Mono]]></category>
		<category><![CDATA[Ubuntu]]></category>

		<guid isPermaLink="false">http://www.the-source.com/?p=1291</guid>
		<description><![CDATA[It&#8217;s almost nostalgic to be posting so often about Mono, but hopefully the Gentle Reader finds this post worth his valuable time. The Claim One of the common claims of the Mono proponent is that distribution packagers are splitting Mono into ECMA and non-ECMA packages. Debian and/or Ubuntu are commonly held up as examples in [...]]]></description>
			<content:encoded><![CDATA[<p>It&#8217;s almost nostalgic to be posting so often about Mono, but hopefully the Gentle Reader finds this post worth his valuable time.</p>
<p><strong>The Claim</strong></p>
<p>One of the common claims of the Mono proponent is that distribution packagers are splitting Mono into ECMA and non-ECMA packages. Debian and/or Ubuntu are commonly held up as examples in this area.</p>
<p>This always seemed a questionable claim to me: for one thing, it&#8217;s not easy to determine exactly what bits go where, and to be frank who has the time to screw with that? Also, there are a host of technical considerations &#8211; what if they conflict somehow? Furthermore, how will users know which packages are &#8220;safe&#8221; or &#8220;unsafe&#8221;? And, as we have seen, all the Mono apps need &#8220;unsafe&#8221; stuff <strong>anyway</strong> &#8211; so why bother splitting things up?</p>
<p>Also, without being crass about things &#8211; I don&#8217;t think that most Mono proponents&#8217; top priority is the safe/unsafe distinction. Generally, it seems to me, if you are supporting Mono, you are in for a penny in for a pound and not too concerned over nuance unless forced to discuss it by raging freetard zealots such as myself. We all have our special roles to play.</p>
<p>Enough setup &#8212; I thought I might check out a package and see if we can accept or reject the claim that some distribution packagers are splitting Mono into ECMA and non-ECMA pacakages.</p>
<p><strong>The Exam</strong></p>
<p>Now we do have some Debian packages like <a href="http://packages.debian.org/sid/libmono-system-data2.0-cil">libmono-system-data2.0-cil</a> and <a href="http://packages.debian.org/sid/libmono-winforms2.0-cil">libmono-winforms2.0-cil</a>, so a casual glance might suggest that there is some ECMA/non-ECMA division going on.</p>
<p>On that note, I took mscorlib.dll from the Debian package <a href="http://packages.debian.org/sid/libmono-corlib2.0-cil">libmono-corlib2.0-cil</a> (2.6.7-3). This is the &#8220;Core Library of Mono for CLI 2.0&#8243;, and as far as I can determine absolutely required for any Mono whatsoever on your system.</p>
<pre>[jason@apollo 2.0]$ egrep -I -a -o 'S.y.s.t.e.m.............................' mscorlib.dll | sort | uniq
SystemSystem.Data1S
System Operators/BUI
System, Version=2.0.
System.Attribute.}e
System.Byte.!Value t
System.Char
           utf32QTh
System.Core, Version
System.Data, Version
System.Data.OleDb.Ol
System.Data.SqlClien
System.DateTimefile
System.DecimalCInval
System.Decimal.Parse
System.Design, Versi
System.Diagnostics.E
System.Diagnostics.P
System.DirectoryServ
System.DoubleUDouble
System.Drawing!Syste
System.Drawing, Vers
System.Drawing.Desig
System.Drawing.Print
System.Guid.CompareT
System.Int16ArraySu
System.Int16;Value i
System.Int32s%Value
System.Int64qInput s
System.Messaging, Ve
System.Messaging.Mes
System.Net.DnsPermis
System.Net.SocketPer
System.Net.WebPermis
System.NonSerialized
System.Reflection.As
System.Resources.Res
System.Resources.Run
System.Runtime.Compi
System.Runtime.Inter
System.RuntimeType)S
System.SByte.7Value
System.Security, Ver
System.Security.Cryp
System.Security.Perm
System.Security.Poli
System.Security.Supp
System.SerializableA
System.ServiceProces
System.Single.9Value
System.Text.CP5CodeP
System.Text.ENCCEnco
System.Type are not
System.UInt16.5Value
System.UInt32.Negat
System.UInt64.7Value
System.Web, Version=
System.Windows.Forms</pre>
<p>What&#8217;s this!? System.Data? System.Drawing? <strong>System.Windows.Forms!?!</strong></p>
<p><strong>The Verification</strong></p>
<p>So, it appears that there are non-ECMA bits even in the &#8220;most basic&#8221; Mono library. At this point, I was pretty sure we could reject the claim.</p>
<p>However, even in my freetarded factfinding frenzy I wanted to be sure, so I did something absolutely insane: <strong>I asked Jo Shields about it</strong>. (In case you don&#8217;t know, Mr. Shields packages Mono for Debian and Ubuntu.)</p>
<p>Mr. Shields was kind enough to respond, and here&#8217;s the summarized deal:</p>
<ol>
<li>ECMA/non-ECMA is <strong>not</strong> a consideration in packaging Mono.</li>
<li><strong>No</strong> distribution ships Mono with ECMA-only components.</li>
<li>It is <strong>not possible</strong> to do so without &#8220;deep surgery&#8221;.</li>
<li>Splitting along ECMA/non-ECMA lines is not a priority.</li>
</ol>
<p>So, we can <strong>reject</strong> the claim that distribution packagers are splitting Mono into ECMA/non-ECMA components.</p>
<p><strong>The Thank You</strong></p>
<p>My sincere thanks to Jo for taking the time and effort to reply.</p>
<p><strong>The Unredacted Email</strong></p>
<p>At Mr. Shield&#8217;s suggestion, here is the unredacted email (which contains my original email), so everyone can get context and judge for themselves. I suggest reading it if you are interested in more about the packaging details behind Mono.</p>
<pre>On Mon, 2010-12-13 at 14:43 +0900, Jason Melton wrote:
&gt; Jo,
&gt;
&gt; Your favorite zealot here. I'd like to ask some questions on a Mono
&gt; Packaging issue before I write a post about it. I want to do this so I
&gt; have "asked someone in the know" as well as offer you an opportunity
&gt; to respond if you desire in the post itself.
&gt;
&gt; If you want me to F off and not bother you again, I'll respect that, of course.

For actually asking me the question, I'm happy to answer fully. It's
more than Roy's ever done.

&gt; Anyway, on to the questions:
&gt;
&gt; 1. Is the Debian Mono packaging split into ECMA / non-ECMA components?

It's split into a hundred odd packages, but no, ECMA/non-ECMA isn't a
consideration - the only consideration is minimizing dependency chains
whilst retaining usefulness (and reducing circular dependencies), and
grouping related items. As an example, a minimal install (mono-runtime
plus its dependencies) pulls in four library packages, containing the
following assemblies:

libmono-corlib2.0-cil:
mscorlib.dll

libmono-posix2.0-cil:
Mono.Posix.dll

libmono-security2.0-cil:
Mono.Security.dll

libmono-system2.0-cil:
System.Configuration.dll
CustomMarshalers.dll
System.Management.dll
System.Transactions.dll
System.Drawing.dll
System.Xml.Linq.dll
System.Xml.dll
System.Core.dll
System.Security.dll
System.dll
System.ServiceProcess.dll
System.Configuration.Install.dll

So these assemblies are the unavoidable minimums installed on a current
system (Ubuntu Maverick). But they cover most situations outside
compilation, where we pull in the kitchen sink in order to provide
simpler Build-Depends lines. And if you aren't aware, note that assembly
names do not necessarily match the namespaces provided therein. Whilst
it would be possible to chop things out of libmono-system2.0-cil to make
a pure-er (although likely not completely pure) minimal system, I think
the benefits to our users would be minimal, and the cost in terms of
awkwardness on upgrades high.

&gt; 2. If there is a split is it an official policy?

See above

&gt; 3. If there is a split is it comprehensive/complete or in
&gt; progress/trying-our-best-but-not-100%-just-yet-for-whatever-reason?

See above-er

&gt; 4. How could a non-packager determine which bits should go where and
&gt; verify that the packaging is correct?

As I said, the concern is really just over minimizing chains of
dependencies, so what makes us sit up and make changes is cases where
pulling in an extra library leads to pulling in several more - that's a
scenario we want to avoid. As an example, when attempting to attack
Banshee with a scalpel (the changes noted in the current Natty package),
we found two instances where depending on a single library would pull in
buckets more random stuff. Using System.Data pulled in the
libmono-system-data2.0-cil package - but one of the rarely-used
assemblies in that package pulled in libmono-wcf3.0-cil and all ITS
dependencies, bloating things up. Our solution was to split the "bad"
assembly into a new package (will be in Mono 2.6.7-4), Banshee
upstream's solution was to drop System.Data entirely (already in the git
snapshot in Natty).

The other example is the Youtube extension using the google-gdata
packages (which contain about 14 assemblies for managing various Google
web services), one of which uses System.Web. Banshee upstream provided
us with a minimal patch to remove that dependency, by copying a little
of Mono's source code (GData upstream already did this to provide
missing namespaces on the Microsoft.NET Compact Framework, so we just
added one or two missing methods and removed the ifdef).
libmono-system-web2.0-cil suffers from a similar, but sadly unavoidable,
chain of dependencies which we sought to cut off. Due to obtuse Windows
line-ending issues, showing you the patch wouldn't be meaningful or
interesting.

So now Banshee's dependency list isn't much different from Tomboy or
gBrainy. See http://people.ubuntu.com/~hyperair/banshee-dep.png for the
visual version of the above.

&gt; 5. When I examine mscorlib.dll I see references to non-ECMA components
&gt; such as System.Data and System.Drawing. [1] Does this mean that
&gt; mscorlib.dll (from the Debian package
&gt; libmono-corlib2.0-cil_2.6.7-3_all.deb) contains non-ECMA components?

Congratulations for being the first Mono critic (AFAIK) to notice this.
I was going to blog on this topic at some point, once finishing my
current secret Project Marmoset.

You're correct. ECMA 335 defines HOLY SHIT. They updated it to .NET 4.0!
That's news to me that is! You'd have thought Miguel would have blogged
about it. Damn, now I need to restart Project Marmoset.

Sorry. Anyway, the currently MCP'd version of ECMA 335 (4th edition,
2006) defines 331 different classes, with 617 properties and 2097
methods, split across System.dll, mscorlib.dll, System.Xml.dll, and
System.Threading.Parallel.dll. Not every namespace in those assemblies
is defined in the ECMA spec - the spec covers individual methods and
properties on individual objects, each one needing vetting one by one by
the standards committee.

So the current (okay, not current, I'm on 2.6.7 here) Mono
implementations of the named libraries contain:

mscorlib.dll: 1085 classes, 13438 methods, 3213 properties.
System.dll: 822 classes, 8644 methods, 3109 properties.
System.Xml.dll: 240 classes, 5384 methods, 2158 proprties.

I should stress that I'm relying on grep for numbers here, so I don't
know how much autogenerated noise is included in the monodis output.
Probably plenty, but even with that it's clear that the implemented
methods &amp; properties exceed the ECMA methods and properties. And no, I
don't know where System.Threading.Parallel.dll is either. And yes, I
know that the Community Promise needs everything in the spec to be
implemented. Go figure.

FYI, ECMA 335 5th edition increases the number of ratified classes from
331 to 374, properties from 617 to 651, and methods from 2097 to 2319.

&gt; Obviously, I think that the package contains non-ECMA bits and want to
&gt; point this out as a counter argument to those who say that Mono is
&gt; split into "safe"/"unsafe" bits by distro packagers and often use
&gt; Debian/Ubuntu as an example.

As far as I can tell, most people consider some technologies
more dubious than others - System.Windows.Forms or System.Data is
hairy, whereas a non-spec method on the String class doesn't make
everybody leap in fear. Whether that's naive is the topic for a
different flame war, I suspect.

So it's true that we have distinct packages for the "scary" bits like
System.Data versus "less scary" stuff like mscorlib.dll, but it is
absolutely true to say that no distribution ships a Mono framework with
ECMA-only components, and it's not possible to do so without deep
surgery on the class library, requiring a lot of man hours. Which is
time Miguel would rather get his guys to invest in MonoDroid or
MonoTouch. Completely hypothetically, I think using the monolinker tool
from MonoTouch (which creates custom minimized versions of the class
libraries on a per-app basis) to turn a "full" Mono into an ECMA-only
Mono would be a faster route to the stated goal, but I have no idea
what would run, and no idea whether monolinker would be prepared to
chop off that much stuff. Would sure be interesting though, wouldn't it?

&gt; I'm trying to get your input so I can be sure of my facts and to
&gt; present "the other side". It's the first time I've tried such a thing,
&gt; so your response is much appreciated. If it helps I can send you a
&gt; copy before I post it so you know I don't quote you out of context or
&gt; anything shady like that.

Whilst I think we disagree pretty strongly about comparative risk, your
dedication towards accuracy in this matter is appreciated. I don't
think anything I've written here is incorrect, so I don't want you to
feel you need to provide me with your intended blog post in advance. If
I'm wrong, I'm sure corrections will appear in comments. And wrong or
right, people like gnufreex will call me Satan, so there's not much
advantage to advance copy.

I think the question of context would be best served by providing
readers access to all emails unredacted, so they (pro or anti Mono) can
form their own opinions on context.

&gt; [1] Basically: egrep -I -a -o 'S.y.s.t.e.m....[lots of dots]...' mscorlib.dll

Try using "monodis", which decompiles .NET code to MSIL (or whatever
they're calling it today). A cursory examination suggests there are
mentions, but not dependencies. Stuff like InternalsVisibleTo, at a
guess, which gives those assemblies access to non-public content inside
mscorlib. I can't read MSIL, so I'm largely guessing. If there were a
true dependency, the packaging would pick up on it.</pre>
<p><strong><br />
</strong></p>
]]></content:encoded>
			<wfw:commentRss>http://www.the-source.com/2010/12/on-mono-packaging/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>On The Microsoft Brand</title>
		<link>http://www.the-source.com/2010/12/on-the-microsoft-brand/</link>
		<comments>http://www.the-source.com/2010/12/on-the-microsoft-brand/#comments</comments>
		<pubDate>Sun, 12 Dec 2010 23:22:21 +0000</pubDate>
		<dc:creator>Jason</dc:creator>
				<category><![CDATA[Microsoft]]></category>

		<guid isPermaLink="false">http://www.the-source.com/?p=1286</guid>
		<description><![CDATA[After all the internet-is-serious-bizness Mono posts of late, it&#8217;s time for a silly post&#8230; just on something I noticed and found funny. I usually listen to The Adam Carolla Show - which is great by the way,  check it out &#8211; and it recently picked up Bing as a sponsor. This means the host usually does [...]]]></description>
			<content:encoded><![CDATA[<p>After all the internet-is-serious-bizness Mono posts of late, it&#8217;s time for a silly post&#8230; just on something I noticed and found funny.</p>
<p>I usually listen to <a href="http://www.adamcarolla.com/ACPBlog/">The Adam Carolla Show</a> - which is great by the way,  check it out &#8211; and it recently picked up Bing as a sponsor. This means the host usually does a short &#8220;live read&#8221;  where they read ad copy about the product (or in Adam&#8217;s case he may go off on a crazy rant tangent in the middle of the ad).</p>
<p>The funny thing I noticed: &#8220;Microsoft&#8221; is <strong>never</strong> mentioned. It&#8217;s all copy about a &#8220;decision engine&#8221; or a &#8220;next-generation search engine&#8221; or similar, but it&#8217;s been about a week or so and you&#8217;d never know by listening that Bing was from Microsoft.</p>
<p>It just makes me wonder if Microsoft realizes its brand is so bad that it is intentionally downplaying the name.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.the-source.com/2010/12/on-the-microsoft-brand/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Mono: Unsafe At Any Speed</title>
		<link>http://www.the-source.com/2010/12/mono-unsafe-at-any-speed/</link>
		<comments>http://www.the-source.com/2010/12/mono-unsafe-at-any-speed/#comments</comments>
		<pubDate>Sun, 12 Dec 2010 02:14:21 +0000</pubDate>
		<dc:creator>Jason</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Banshee]]></category>
		<category><![CDATA[Do]]></category>
		<category><![CDATA[ECMA]]></category>
		<category><![CDATA[F-Spot]]></category>
		<category><![CDATA[Mono]]></category>
		<category><![CDATA[Tomboy]]></category>

		<guid isPermaLink="false">http://www.the-source.com/?p=1278</guid>
		<description><![CDATA[Just a follow up expanding on the recent Banshee/ECMA stuff. Warning: long stretches of file lists within! You&#8217;ll often hear Team Apologista (when cornered) say something like: &#8220;Maybe not all of Mono is covered by the ECMA standard, but all the bits used in Linux programs are.&#8221; (Here&#8217;s just one example from the recent Reddit [...]]]></description>
			<content:encoded><![CDATA[<p>Just a follow up expanding on the recent Banshee/ECMA stuff. <strong>Warning: long stretches of file lists within!</strong></p>
<p>You&#8217;ll often hear Team Apologista (when cornered) say something like: &#8220;Maybe not all of Mono is covered by the ECMA standard, but all the bits used in Linux programs are.&#8221; (<a href="http://www.reddit.com/r/linux/comments/ejjm4/mono_criticism_uninformed_hatred_thesourcecom/c18km9n">Here&#8217;s just one example from the recent Reddit thread</a>, but like all Team Apologista arguments, you&#8217;ll see a similar talking point repeatedly.)</p>
<p>Now of course, we know that is simply not true &#8211; System.Data was used in Banshee <em>at least until very recently</em>, but let&#8217;s dive deeper.</p>
<p>Does the claim that &#8220;All of the pieces of Mono that are used in Linux apps are covered by the MCP.&#8221; hold up under examination?</p>
<p><strong>Non-ECMA Namespaces</strong></p>
<p>According to Wikipedia, here is a l<a href="http://en.wikipedia.org/wiki/Base_Class_Library#Non_standardized_namespaces">ist of BCL namespaces that are not part of the ECMA standard</a>:</p>
<pre>System.CodeDom
System.ComponentModel
System.Configuration
System.Data
System.Deployment
System.DirectoryServices
System.Drawing
System.EnterpriseServices
System.Linq
System.Linq.Expressions
System.Management
System.Media
System.Messaging
System.Resources
System.ServiceProcess
System.Timers
System.Transactions
System.Web
System.Windows.Forms
System.Xml</pre>
<p>Note that this is only Base Class Libraries not a part of the ECMA standard &#8211; there may be other .NET namespaces Mono implements that are also not covered by ECMA. However since I don&#8217;t think Team Apologista will be forthcoming with a comprehensive list, nor do I think it will be necessary to do so in order to prove the point here, I see no need to search them out at this time. That being said, if someone feels motivated to do so, I would be very interested in seeing the results!</p>
<p><em>Cautionary Note: </em>The Wikipedia list appears to be up to date, but if you like you can verify against this <a href="http://www.ecma-international.org/publications/files/ECMA-ST/Ecma-335.zip">.zipped XML file</a> on the <a href="http://msdn.microsoft.com/en-us/netframework/aa569283.aspx">Microsoft ECMA C# and  Common Language Infrastructure Standards page</a>. However, when checking it myself I think there may be some System.XML stuff that is part of the standard. I did check for more specific entries that the Mono apps use, such as System.XML.Serialization, System.XML.XPath, System.XML.Schema and so forth, and did <strong>not</strong> see them in the standard. So, I&#8217;m leaving that bit in for now.</p>
<p><strong>UPDATE 2010.12.15: </strong>Since System.Xml is now (as of this month) in the standard, it&#8217;s probably better to leave all the System.Xml* stuff out altogether. I have left the file listings intact, and posted numbers &#8220;minus System.Xml&#8221; in the summary at the end. Thanks to <a href="http://www.reddit.com/r/programming/comments/elqb4/mono_unsafe_at_any_speed/c192qpy">OneAndOnlySnob over on Reddit</a> for pointing this out.</p>
<p><strong>The programs</strong></p>
<p>So, armed with this list, let&#8217;s examine a few of the &#8220;crazy delicious awesome rocks&#8221; Mono applications and see what we find. <strong>In every case I am searching against a copy of the source code repository cloned the day of this writing. </strong>Don&#8217;t want to fall into the it&#8217;s-not-really-released-yet-but-we-fixed-it trickery trap twice!</p>
<p><strong>Banshee</strong></p>
<p>Let&#8217;s hit this one first, since it was the starter:</p>
<pre>[jason@apollo banshee-git]$ find . -name '*.cs'|xargs egrep -i "using system.codedom|using system.componentmodel|using sytem.configuration|using system.data|using system.deployment|using system.directoryservices|using system.drawing|using system.enterpriseservices|using system.linq|using system.management|using system.media|using system.messaging|using system.resources|using system.serviceprocess|using system.timers|using system.transactions|using system.web|using system.windows.forms|using system.xml"
./banshee/src/Dap/Banshee.Dap/Banshee.Dap/DapLibrarySync.cs:using System.Linq;
./banshee/src/Dap/Banshee.Dap/Banshee.Dap/DapSource.cs:using System.Linq;
./banshee/src/Dap/Banshee.Dap/Banshee.Dap/DapSync.cs:using System.Linq;
./banshee/src/Dap/Banshee.Dap/Banshee.Dap/DapService.cs:using System.Linq;
./banshee/src/Dap/Banshee.Dap/Banshee.Dap.Gui/LibrarySyncOptions.cs:using System.Linq;
./banshee/src/Dap/Banshee.Dap/Banshee.Dap.Gui/DapContent.cs:using System.Linq;
./banshee/src/Dap/Banshee.Dap.MassStorage/Banshee.Dap.MassStorage/MassStorageDevice.cs:using System.Linq;
./banshee/src/Extensions/Banshee.Audiobook/Banshee.Audiobook/Actions.cs:using System.Linq;
./banshee/src/Extensions/Banshee.Audiobook/Banshee.Audiobook/BookView.cs:using System.Linq;
./banshee/src/Extensions/Banshee.Audiobook/Banshee.Audiobook/AudiobookLibrarySource.cs:using System.Linq;
./banshee/src/Extensions/Banshee.Lastfm/Banshee.Lastfm/LastfmSource.cs:using System.Linq;
./banshee/src/Extensions/Banshee.Lastfm/Banshee.Lastfm/LastfmPreferences.cs:using System.Linq;
./banshee/src/Extensions/Banshee.Lastfm/Banshee.Lastfm.Audioscrobbler/Queue.cs:using System.Web;
./banshee/src/Extensions/Banshee.Lastfm/Banshee.Lastfm.Audioscrobbler/Queue.cs:using System.Xml;
./banshee/src/Extensions/Banshee.Lastfm/Banshee.Lastfm.Recommendations/RecommendationPane.cs:using System.Linq;
./banshee/src/Extensions/Banshee.YouTube/Banshee.YouTube.Data/DataFetch.cs:using System.Web;
./banshee/src/Extensions/Banshee.Daap/Banshee.Daap/DaapProxyWebServer.cs:using System.Web;
./banshee/src/Extensions/Banshee.Daap/Daap/ContentFetcher.cs:using System.Web;
./banshee/src/Extensions/Banshee.Daap/Daap/Client.cs:using System.Web;
./banshee/src/Extensions/Banshee.MiroGuide/Banshee.MiroGuide/MiroGuideSource.cs:using System.Linq;
./banshee/src/Extensions/Banshee.AmazonMp3/Banshee.AmazonMp3/AmzXspfPlaylist.cs:using System.Xml;
./banshee/src/Extensions/Banshee.AmazonMp3/Banshee.AmazonMp3/ConsoleTool.cs:using System.Linq;
./banshee/src/Extensions/Banshee.AmazonMp3/Banshee.AmazonMp3/AmazonDownloadManager.cs:using System.Linq;
./banshee/src/Extensions/Banshee.InternetArchive/InternetArchive/Details.cs:using System.Linq;
./banshee/src/Extensions/Banshee.InternetArchive/InternetArchive/Search.cs:using System.Linq;
./banshee/src/Extensions/Banshee.InternetArchive/InternetArchive/DetailsFile.cs:using System.Linq;
./banshee/src/Extensions/Banshee.InternetArchive/InternetArchive/JsonExtensions.cs:using System.Linq;
./banshee/src/Extensions/Banshee.InternetArchive/InternetArchive/SearchResults.cs:using System.Linq;
./banshee/src/Extensions/Banshee.InternetArchive/InternetArchive/SearchResult.cs:using System.Linq;
./banshee/src/Extensions/Banshee.InternetArchive/InternetArchive/DetailsReview.cs:using System.Linq;
./banshee/src/Extensions/Banshee.InternetArchive/Banshee.InternetArchive/Actions.cs:using System.Linq;
./banshee/src/Extensions/Banshee.InternetArchive/Banshee.InternetArchive/SearchView.cs:using System.Linq;
./banshee/src/Extensions/Banshee.InternetArchive/Banshee.InternetArchive/DetailsView.cs:using System.Linq;
./banshee/src/Extensions/Banshee.InternetArchive/Banshee.InternetArchive/HomeView.cs:using System.Linq;
./banshee/src/Extensions/Banshee.InternetArchive/Banshee.InternetArchive/HeaderFilters.cs:using System.Linq;
./banshee/src/Extensions/Banshee.InternetArchive/Banshee.InternetArchive/HomeSource.cs:using System.Linq;
./banshee/src/Extensions/Banshee.InternetArchive/Banshee.InternetArchive/SearchSource.cs:using System.Linq;
./banshee/src/Extensions/Banshee.InternetArchive/Banshee.InternetArchive/Item.cs:using System.Linq;
./banshee/src/Extensions/Banshee.InternetArchive/Banshee.InternetArchive/SearchDescription.cs:using System.Linq;
./banshee/src/Extensions/Banshee.InternetArchive/Banshee.InternetArchive/DetailsSource.cs:using System.Linq;
./banshee/src/Extensions/Banshee.PlayerMigration/Banshee.PlayerMigration/ItunesPlayerImportSource.cs:using System.Xml;
./banshee/src/Extensions/Banshee.PlayerMigration/Banshee.PlayerMigration/RhythmboxPlayerImportSource.cs:using System.Xml;
./banshee/src/Extensions/Banshee.Fixup/Banshee.Fixup/Problem.cs:using System.Linq;
./banshee/src/Extensions/Banshee.Fixup/Banshee.Fixup/FixActions.cs:using System.Linq;
./banshee/src/Extensions/Banshee.Fixup/Banshee.Fixup/AlbumDuplicateSolver.cs:using System.Linq;
./banshee/src/Extensions/Banshee.Fixup/Banshee.Fixup/ArtistDuplicateSolver.cs:using System.Linq;
./banshee/src/Extensions/Banshee.Fixup/Banshee.Fixup/GenreDuplicateSolver.cs:using System.Linq;
./banshee/src/Extensions/Banshee.Fixup/Banshee.Fixup/ColumnCellSolutionOptions.cs:using System.Linq;
./banshee/src/Extensions/Banshee.Fixup/Banshee.Fixup/Solver.cs:using System.Linq;
./banshee/src/Extensions/Banshee.Fixup/Banshee.Fixup/Tests.cs:using System.Linq;
./banshee/src/Extensions/Banshee.LibraryWatcher/Banshee.LibraryWatcher/SourceWatcher.cs:using System.Linq;
./banshee/src/Extensions/Banshee.PlayQueue/Banshee.PlayQueue/PlayQueueSource.cs:using System.Linq;
./banshee/src/Extensions/Banshee.PlayQueue/Banshee.PlayQueue/HeaderWidget.cs:using System.Linq;
./banshee/src/Extensions/Banshee.Emusic/Banshee.Emusic/EmusicService.cs:using System.Xml;
./banshee/src/Extensions/Banshee.Emusic/Banshee.Emusic/EmusicImport.cs:using System.Xml;
/banshee/src/Extensions/Banshee.Emusic/Banshee.Emusic/DownloadManager/DownloadManagerInterface.cs:using System.ComponentModel;
./banshee/src/Extensions/Banshee.LastfmStreaming/Banshee.LastfmStreaming/LastfmTrackInfo.cs:using System.Web;
./banshee/src/Extensions/Banshee.Podcasting/Banshee.Podcasting.Gui/DownloadManager/DownloadManagerInterface.cs:using System.ComponentModel;
./banshee/src/Extensions/Banshee.Podcasting/Banshee.Podcasting.Data/PodcastSource.cs:using System.Linq;
./banshee/src/Extensions/Banshee.Podcasting/Banshee.Podcasting/PodcastImageFetchJob.cs:using System.Xml;
./banshee/src/Extensions/Banshee.Podcasting/Banshee.Podcasting/PodcastService.cs:using System.Linq;
./banshee/src/Clients/Nereid/Nereid/PlayerInterface.cs:using System.Linq;
./banshee/src/Core/Banshee.Services/Banshee.Playlists.Formats/PlaylistParser.cs:using System.Web;
./banshee/src/Core/Banshee.Services/Banshee.Playlists.Formats/AsxPlaylistFormat.cs:using System.Xml;
./banshee/src/Core/Banshee.Services/Banshee.MediaProfiles/MediaProfileManager.cs:using System.Xml;
./banshee/src/Core/Banshee.Services/Banshee.MediaProfiles/Pipeline.cs:using System.Xml;
./banshee/src/Core/Banshee.Services/Banshee.MediaProfiles/ProfileConfiguration.cs:using System.Xml;
./banshee/src/Core/Banshee.Services/Banshee.MediaProfiles/PipelineVariable.cs:using System.Xml;
./banshee/src/Core/Banshee.Services/Banshee.MediaProfiles/Profile.cs:using System.Xml;
./banshee/src/Core/Banshee.Services/Banshee.ServiceStack/ServiceManager.cs:using System.Linq;
./banshee/src/Core/Banshee.Services/Banshee.Sources/Tests.cs:using System.Linq;
./banshee/src/Core/Banshee.Services/Banshee.Metadata.MusicBrainz/MusicBrainzQueryJob.cs:using System.Xml;
./banshee/src/Core/Banshee.Services/Banshee.Metadata.MusicBrainz/MusicBrainzQueryJob.cs:using System.Web;
./banshee/src/Core/Banshee.Services/Banshee.Metadata.LastFM/LastFMQueryJob.cs:using System.Xml;
./banshee/src/Core/Banshee.Services/Banshee.Metadata.LastFM/LastFMQueryJob.cs:using System.Web;
./banshee/src/Core/Banshee.Services/Banshee.Networking/DotNetNetworking.cs:using System.Linq;
./banshee/src/Core/Banshee.Services/Banshee.Web/BaseHttpServer.cs:using System.Web;
./banshee/src/Core/Banshee.Services/Banshee.Query/BansheeQuery.cs:using System.Linq;
./banshee/src/Core/Banshee.Services/Banshee.Collection.Indexer/CollectionIndexer.cs:using System.Xml;
./banshee/src/Core/Banshee.Services/Banshee.Collection.Database/Shuffler.cs:using System.Linq;
./banshee/src/Core/Banshee.Services/Banshee.Collection.Database/RandomBy.cs:using System.Linq;
./banshee/src/Core/Banshee.Services/Banshee.Collection.Database/Bookmark.cs:using System.Linq;
./banshee/src/Core/Banshee.Services/Banshee.Collection.Database/DatabaseTrackListModel.cs:using System.Linq;
./banshee/src/Core/Banshee.Services/Banshee.Collection.Database/RandomBySlot.cs:using System.Linq;
./banshee/src/Core/Banshee.Services/Banshee.Equalizer/EqualizerManager.cs:using System.Xml;
./banshee/src/Core/Banshee.Services/Banshee.Metadata/BaseMetadataProvider.cs:using System.Linq;
./banshee/src/Core/Banshee.Services/Banshee.Metadata/SaveTrackMetadataJob.cs:using System.Linq;
./banshee/src/Core/Banshee.Services/Banshee.Database/BansheeDbConnection.cs:using System.Linq;
./banshee/src/Core/Banshee.Services/Banshee.Database/SortKeyUpdater.cs:using System.Linq;
./banshee/src/Core/Banshee.Services/Banshee.Metrics/BansheeMetrics.cs:using System.Linq;
./banshee/src/Core/Banshee.Services/Banshee.Metadata.Rhapsody/RhapsodyQueryJob.cs:using System.Xml;
./banshee/src/Core/Banshee.ThickClient/Banshee.Gui/SourceActions.cs:using System.Linq;
./banshee/src/Core/Banshee.ThickClient/Banshee.Addins.Gui/AddinView.cs:using System.Linq;
./banshee/src/Core/Banshee.ThickClient/Banshee.ContextPane/ContextPane.cs:using System.Linq;
./banshee/src/Core/Banshee.ThickClient/Banshee.Collection.Gui/TrackListView.cs:using System.Linq;
./banshee/src/Core/Banshee.ThickClient/Banshee.Collection.Gui/XmlColumnController.cs:using System.Xml;
./banshee/src/Core/Banshee.ThickClient/Banshee.Collection.Gui/ColumnCellCreativeCommons.cs:using System.Linq;
./banshee/src/Core/Banshee.ThickClient/Banshee.Sources.Gui/SourceView.cs:using System.Linq;
./banshee/src/Core/Banshee.ThickClient/Banshee.Sources.Gui/SourceSwitcherEntry.cs:using System.Linq;
./banshee/src/Core/Banshee.Core/Banshee.IO/Provider.cs:using System.Linq;
./banshee/src/Core/Banshee.Core/Banshee.IO/Tests.cs:using System.Linq;
./banshee/src/Core/Banshee.Core/Banshee.Configuration/XmlConfigurationClient.cs:using System.Timers;
./banshee/src/Core/Banshee.Core/Banshee.Configuration/XmlConfigurationClient.cs:using System.Xml;
./banshee/src/Core/Banshee.Core/Banshee.Configuration/XmlConfigurationClient.cs:using System.Xml.Serialization;
./banshee/src/Core/Banshee.Core/Banshee.Base/ProductInformation.cs:using System.Xml;
./banshee/src/Core/Banshee.Core/Banshee.Base/Localization.cs:using System.Xml;
./banshee/src/Core/Banshee.Core/Banshee.Base/Localization.cs:using System.Xml.XPath;
./banshee/src/Backends/Banshee.GStreamerSharp/Banshee.GStreamerSharp/PlayerEngine.cs:using System.Linq;
/banshee/src/Backends/Banshee.Gio/Banshee.IO.Gio/Directory.cs:using System.Linq;
./banshee/src/Backends/Banshee.Gio/Banshee.IO.Gio/Tests.cs:using System.Linq;
./banshee/src/Backends/Banshee.Gio/Banshee.Hardware.Gio/BlockDevice.cs:using System.Linq;
./banshee/src/Backends/Banshee.Gio/Banshee.Hardware.Gio/Device.cs:using System.Linq;
./banshee/src/Backends/Banshee.Gio/Banshee.Hardware.Gio/DeviceMediaCapabilities.cs:using System.Linq;
./banshee/src/Backends/Banshee.Gio/Banshee.Hardware.Gio/LowLevel/Manager.cs:using System.Linq;
./banshee/src/Backends/Banshee.Gio/Banshee.Hardware.Gio/LowLevel/RawDevice.cs:using System.Linq;
./banshee/src/Libraries/MusicBrainz/MusicBrainz/Disc.cs:using System.Xml;
./banshee/src/Libraries/MusicBrainz/MusicBrainz/MusicBrainzItem.cs:using System.Xml;
./banshee/src/Libraries/MusicBrainz/MusicBrainz/MusicBrainzEntity.cs:using System.Xml;
./banshee/src/Libraries/MusicBrainz/MusicBrainz/Artist.cs:using System.Xml;
./banshee/src/Libraries/MusicBrainz/MusicBrainz/Event.cs:using System.Xml;
./banshee/src/Libraries/MusicBrainz/MusicBrainz/MusicBrainzObject.cs:using System.Xml;
./banshee/src/Libraries/MusicBrainz/MusicBrainz/Release.cs:using System.Xml;
./banshee/src/Libraries/MusicBrainz/MusicBrainz/Track.cs:using System.Xml;
./banshee/src/Libraries/MusicBrainz/MusicBrainz/Label.cs:using System.Xml;
./banshee/src/Libraries/Migo/Migo.Net/AsyncWebClient.cs:using System.ComponentModel;
./banshee/src/Libraries/Migo/Migo.Net/TransferStatusManager.cs:using System.Timers;
./banshee/src/Libraries/Migo/Migo.Net/EventArgs/DownloadProgressChangedEventArgs.cs:using System.ComponentModel;
./banshee/src/Libraries/Migo/Migo.Net/EventArgs/DownloadDataCompletedEventArgs.cs:using System.ComponentModel;
./banshee/src/Libraries/Migo/Migo.Net/EventArgs/DownloadStringCompletedEventArgs.cs:using System.ComponentModel;
./banshee/src/Libraries/Migo/Migo.DownloadCore/DownloadManager.cs:using System.Web;
./banshee/src/Libraries/Migo/Migo.DownloadCore/DownloadManager.cs:using System.ComponentModel;
./banshee/src/Libraries/Migo/Migo.DownloadCore/HttpFileDownloadGroup.cs:using System.Timers;  // migrate to System.Threading.Timer
./banshee/src/Libraries/Migo/Migo.DownloadCore/HttpFileDownloadGroup.cs:using System.ComponentModel;
./banshee/src/Libraries/Migo/Migo.DownloadCore/HttpFileDownloadTask.cs:using System.ComponentModel;
./banshee/src/Libraries/Migo/Migo.DownloadCore/DownloadGroupStatusManager.cs:using System.Timers;
./banshee/src/Libraries/Migo/Migo.Syndication/FeedUpdateTask.cs:using System.ComponentModel;
./banshee/src/Libraries/Migo/Migo.Syndication/Tests/XmlTests.cs:using System.Linq;
./banshee/src/Libraries/Migo/Migo.Syndication/RssParser.cs:using System.Xml;
./banshee/src/Libraries/Migo/Migo.Syndication/OpmlParser.cs:using System.Xml;
./banshee/src/Libraries/Migo/Migo.TaskCore/GroupProgressManager.cs:using System.ComponentModel;
./banshee/src/Libraries/Migo/Migo.TaskCore/TaskGroup.cs:using System.ComponentModel;
./banshee/src/Libraries/Migo/Migo.TaskCore/EventArgs/TaskCompletedEventArgs.cs:using System.ComponentModel;
./banshee/src/Libraries/Migo/Migo.TaskCore/Task.cs:using System.ComponentModel;
./banshee/src/Libraries/Mono.Media/Media.Playlists.Xspf/Tests/XspfTests.cs:using System.Xml;
./banshee/src/Libraries/Mono.Media/Media.Playlists.Xspf/Tests/XspfTests.cs:using System.Xml.Schema;
./banshee/src/Libraries/Mono.Media/Media.Playlists.Xspf/XmlUtil.cs:using System.Xml;
./banshee/src/Libraries/Mono.Media/Media.Playlists.Xspf/XspfBaseObject.cs:using System.Xml;
./banshee/src/Libraries/Mono.Media/Media.Playlists.Xspf/Track.cs:using System.Xml;
./banshee/src/Libraries/Mono.Media/Media.Playlists.Xspf/Playlist.cs:using System.Xml;
./banshee/src/Libraries/Lastfm/Lastfm.Data/DataEntryCollection.cs:using System.Xml;
./banshee/src/Libraries/Lastfm/Lastfm.Data/DataCore.cs:using System.Web;
./banshee/src/Libraries/Lastfm/Lastfm.Data/DataCore.cs:using System.Xml;
./banshee/src/Libraries/Lastfm/Lastfm.Data/LastfmData.cs:using System.Web;
./banshee/src/Libraries/Lastfm/Lastfm.Data/LastfmData.cs:using System.Xml;
./banshee/src/Libraries/Lastfm/Lastfm.Data/DataEntry.cs:using System.Xml;
./banshee/src/Libraries/Lastfm/Lastfm/LastfmRequest.cs:using System.Web;
./banshee/src/Libraries/Lastfm/Lastfm/RadioConnection.cs:using System.Xml;
./banshee/src/Libraries/Lastfm/Lastfm/RadioConnection.cs:using System.Web;
./banshee/src/Libraries/Lastfm/Lastfm/AudioscrobblerConnection.cs:using System.Timers;
./banshee/src/Libraries/Lastfm/Lastfm/AudioscrobblerConnection.cs:using System.Web;
./banshee/build/AddinXmlStringExtractor.cs:using System.Xml.XPath;
./banshee/build/DllMapVerifier.cs:using System.Xml;
./banshee/tests/Analyzer/Analyzer.cs:using System.Linq;
./banshee/tests/Analyzer/Analyzer.cs:using System.Xml.Linq;
./banshee/extras/metrics/Metric.cs:using System.Linq;</pre>
<p>Banshee: <strong>165 references</strong>.</p>
<p>Banshee has a little bonus, by the way:</p>
<pre>[jason@apollo ~]$ find . -name '*.cs'|xargs egrep -i "using microsoft."
./banshee-git/banshee/src/Libraries/MusicBrainz/MusicBrainz/DiscWin32NT.cs:using Microsoft.Win32.SafeHandles;</pre>
<p><strong>Tomboy</strong></p>
<pre>[jason@apollo tomboy-git]$ find . -name '*.cs'|xargs egrep -i "using system.codedom|using system.componentmodel|using sytem.configuration|using system.data|using system.deployment|using system.directoryservices|using system.drawing|using system.enterpriseservices|using system.linq|using system.management|using system.media|using system.messaging|using system.resources|using system.serviceprocess|using system.timers|using system.transactions|using system.web|using system.windows.forms|using system.xml"
./tomboy/Tomboy/XmlPreferencesClient.cs:using System.Xml;
./tomboy/Tomboy/Note.cs:using System.Xml;
./tomboy/Tomboy/Tomboy.cs:using System.Xml;
./tomboy/Tomboy/ManagedWinapi.EventDispatchingNativeWindow.cs:using System.Windows.Forms;
./tomboy/Tomboy/NoteTag.cs:using System.Xml;
./tomboy/Tomboy/Addins/Sketching/Stroke.cs:using System.Xml;
./tomboy/Tomboy/Addins/Sketching/Paper.cs:using System.Xml;
./tomboy/Tomboy/Addins/Sketching/Handwriting.cs:using System.Xml;
./tomboy/Tomboy/Addins/StickyNoteImport/StickyNoteImportNoteAddin.cs:using System.Xml;
./tomboy/Tomboy/Addins/ExportToHtml/ExportToHtmlNoteAddin.cs:using System.Xml;
./tomboy/Tomboy/Addins/ExportToHtml/ExportToHtmlNoteAddin.cs:using System.Xml.XPath;
./tomboy/Tomboy/Addins/ExportToHtml/ExportToHtmlNoteAddin.cs:using System.Xml.Xsl;
./tomboy/Tomboy/Addins/WebSyncService/MonoHttp/HttpListenerException.cs:using System.ComponentModel;
./tomboy/Tomboy/Addins/WebSyncService/Api/OAuth.cs:using System.Web;
./tomboy/Tomboy/Addins/WebSyncService/Api/AnonymousConnection.cs:using System.Web;
./tomboy/Tomboy/Addins/WebSyncService/WebSyncPreferencesWidget.cs:using System.Web;
./tomboy/Tomboy/Addins/WebSyncService/OAuth/Mono.Rocks/IEnumerable.cs:using System.Linq;
./tomboy/Tomboy/Addins/WebSyncService/OAuth/Base.cs:using System.Linq;
./tomboy/Tomboy/Addins/WebSyncService/OAuth/Base.cs:using System.Web;
./tomboy/Tomboy/Addins/Evolution/EvolutionNoteAddin.cs:using System.Xml;
./tomboy/Tomboy/Addins/Evolution/EvolutionNoteAddin.cs:using System.Web;
./tomboy/Tomboy/Addins/Tasks/TaskArchiver.cs:using System.Xml;
./tomboy/Tomboy/Addins/Bugzilla/BugzillaNoteAddin.cs:using System.Xml;
./tomboy/Tomboy/WindowsKeybinder.cs:using System.Windows.Forms;
./tomboy/Tomboy/Utils.cs:using System.Xml;
./tomboy/Tomboy/NoteBuffer.cs:using System.Xml;
./tomboy/Tomboy/NoteBuffer.cs:using System.Xml.XPath;
./tomboy/Tomboy/NoteBuffer.cs:using System.Xml.Xsl;
./tomboy/Tomboy/Synchronization/TomboySyncClient.cs:using System.Xml;
./tomboy/Tomboy/Synchronization/SyncManager.cs:using System.Xml;
./tomboy/Tomboy/Synchronization/FileSystemSyncServer.cs:using System.Xml;
./tomboy/Tomboy/GnomeApplication.cs:using System.Xml;
./tomboy/Tomboy/System.Web/HttpUtility.cs://using System.Web.Util;
./tomboy/Tomboy/ManagedWinapi.Hotkey.cs:using System.ComponentModel;
./tomboy/Tomboy/ManagedWinapi.Hotkey.cs:using System.Windows.Forms;
./tomboy/Tomboy/ActionManager.cs:using System.Xml;</pre>
<p>Tomboy: <strong>36</strong> references.</p>
<p><strong>F-Spot</strong></p>
<pre>[jason@apollo fspot-git]$ find . -name '*.cs'|xargs egrep -i "using system.codedom|using system.componentmodel|using sytem.configuration|using system.data|using system.deployment|using system.directoryservices|using system.drawing|using system.enterpriseservices|using system.linq|using system.management|using system.media|using system.messaging|using system.resources|using system.serviceprocess|using system.timers|using system.transactions|using system.web|using system.windows.forms|using system.xml"
./f-spot/lib/unique-sharp/generator/StructBase.cs:      using System.Xml;
./f-spot/lib/unique-sharp/generator/ChildProperty.cs:   using System.Xml;
./f-spot/lib/unique-sharp/generator/PropertyBase.cs:    using System.Xml;
./f-spot/lib/unique-sharp/generator/Signature.cs:       using System.Xml;
./f-spot/lib/unique-sharp/generator/MethodBase.cs:      using System.Xml;
./f-spot/lib/unique-sharp/generator/ClassGen.cs:        using System.Xml;
./f-spot/lib/unique-sharp/generator/CallbackGen.cs:     using System.Xml;
./f-spot/lib/unique-sharp/generator/BoxedGen.cs:        using System.Xml;
./f-spot/lib/unique-sharp/generator/VirtualMethod.cs:   using System.Xml;
./f-spot/lib/unique-sharp/generator/Ctor.cs:    using System.Xml;
./f-spot/lib/unique-sharp/generator/VMSignature.cs:     using System.Xml;
./f-spot/lib/unique-sharp/generator/Property.cs:        using System.Xml;
./f-spot/lib/unique-sharp/generator/GenBase.cs: using System.Xml;
./f-spot/lib/unique-sharp/generator/Parser.cs:  using System.Xml;
./f-spot/lib/unique-sharp/generator/ObjectBase.cs:      using System.Xml;
./f-spot/lib/unique-sharp/generator/GenerationInfo.cs:  using System.Xml;
./f-spot/lib/unique-sharp/generator/Parameters.cs:      using System.Xml;
./f-spot/lib/unique-sharp/generator/InterfaceGen.cs:    using System.Xml;
./f-spot/lib/unique-sharp/generator/Method.cs:  using System.Xml;
./f-spot/lib/unique-sharp/generator/EnumGen.cs: using System.Xml;
./f-spot/lib/unique-sharp/generator/ClassBase.cs:       using System.Xml;
./f-spot/lib/unique-sharp/generator/StructGen.cs:       using System.Xml;
./f-spot/lib/unique-sharp/generator/HandleBase.cs:      using System.Xml;
./f-spot/lib/unique-sharp/generator/OpaqueGen.cs:       using System.Xml;
./f-spot/lib/unique-sharp/generator/StructField.cs:     using System.Xml;
./f-spot/lib/unique-sharp/generator/CodeGenerator.cs:   using System.Xml;
./f-spot/lib/unique-sharp/generator/ObjectGen.cs:       using System.Xml;
./f-spot/lib/unique-sharp/generator/ObjectField.cs:     using System.Xml;
./f-spot/lib/unique-sharp/generator/FieldBase.cs:       using System.Xml;
./f-spot/lib/unique-sharp/generator/ReturnValue.cs:     using System.Xml;
./f-spot/lib/unique-sharp/generator/Signal.cs:  using System.Xml;
./f-spot/lib/dpap-sharp/lib/ContentFetcher.cs:using System.Web;
./f-spot/lib/dpap-sharp/lib/Server.cs:using System.Web;
./f-spot/lib/dpap-sharp/lib/Client.cs:using System.Web;
./f-spot/lib/gio-sharp/generator/StructBase.cs: using System.Xml;
./f-spot/lib/gio-sharp/generator/ChildProperty.cs:      using System.Xml;
./f-spot/lib/gio-sharp/generator/PropertyBase.cs:       using System.Xml;
./f-spot/lib/gio-sharp/generator/Signature.cs:  using System.Xml;
./f-spot/lib/gio-sharp/generator/MethodBase.cs: using System.Xml;
./f-spot/lib/gio-sharp/generator/ClassGen.cs:   using System.Xml;
./f-spot/lib/gio-sharp/generator/CallbackGen.cs:        using System.Xml;
./f-spot/lib/gio-sharp/generator/BoxedGen.cs:   using System.Xml;
./f-spot/lib/gio-sharp/generator/VirtualMethod.cs:      using System.Xml;
./f-spot/lib/gio-sharp/generator/Ctor.cs:       using System.Xml;
./f-spot/lib/gio-sharp/generator/VMSignature.cs:        using System.Xml;
./f-spot/lib/gio-sharp/generator/Property.cs:   using System.Xml;
./f-spot/lib/gio-sharp/generator/GenBase.cs:    using System.Xml;
./f-spot/lib/gio-sharp/generator/Parser.cs:     using System.Xml;
./f-spot/lib/gio-sharp/generator/ObjectBase.cs: using System.Xml;
./f-spot/lib/gio-sharp/generator/GenerationInfo.cs:     using System.Xml;
./f-spot/lib/gio-sharp/generator/Parameters.cs: using System.Xml;
./f-spot/lib/gio-sharp/generator/InterfaceGen.cs:       using System.Xml;
./f-spot/lib/gio-sharp/generator/Method.cs:     using System.Xml;
./f-spot/lib/gio-sharp/generator/EnumGen.cs:    using System.Xml;
./f-spot/lib/gio-sharp/generator/ClassBase.cs:  using System.Xml;
./f-spot/lib/gio-sharp/generator/StructGen.cs:  using System.Xml;
./f-spot/lib/gio-sharp/generator/HandleBase.cs: using System.Xml;
./f-spot/lib/gio-sharp/generator/OpaqueGen.cs:  using System.Xml;
./f-spot/lib/gio-sharp/generator/StructField.cs:        using System.Xml;
./f-spot/lib/gio-sharp/generator/CodeGenerator.cs:      using System.Xml;
./f-spot/lib/gio-sharp/generator/ObjectGen.cs:  using System.Xml;
./f-spot/lib/gio-sharp/generator/ObjectField.cs:        using System.Xml;
./f-spot/lib/gio-sharp/generator/FieldBase.cs:  using System.Xml;
./f-spot/lib/gio-sharp/generator/ReturnValue.cs:        using System.Xml;
./f-spot/lib/gio-sharp/generator/Signal.cs:     using System.Xml;
./f-spot/lib/Mono.Google/Mono.Google/MultipartRequest.cs:using System.Xml;
./f-spot/lib/Mono.Google/Mono.Google/Authentication.cs:using System.Web;
./f-spot/lib/Mono.Google/Mono.Google.Picasa/XmlUtil.cs:using System.Xml;
./f-spot/lib/Mono.Google/Mono.Google.Picasa/PicasaAlbum.cs:using System.Xml;
./f-spot/lib/Mono.Google/Mono.Google.Picasa/PicasaWeb.cs:using System.Xml;
./f-spot/lib/Mono.Google/Mono.Google.Picasa/PicasaPicture.cs:using System.Xml;
./f-spot/lib/Mono.Tabblo/Mono.Tabblo/Connection.cs:using System.Web;
./f-spot/lib/SmugMugNet/SmugMugNet/Album.cs:using System.Xml;
./f-spot/lib/SmugMugNet/SmugMugNet/SmugMugUploadException.cs:using System.Xml;
./f-spot/lib/SmugMugNet/SmugMugNet/Category.cs:using System.Xml;
./f-spot/lib/SmugMugNet/SmugMugNet/Credentials.cs:using System.Xml;
./f-spot/lib/SmugMugNet/SmugMugNet/SmugMugApi.cs:using System.Xml;
./f-spot/lib/SmugMugNet/SmugMugNet/SmugMugException.cs:using System.Xml;
./f-spot/lib/SmugMugNet/SmugMugNet/SmugMugProxy.cs:using System.Xml;
./f-spot/src/Extensions/Exporters/FSpot.Exporters.Gallery/FSpot.Exporters.Gallery/GalleryAccount.cs:using System.Web;
./f-spot/src/Extensions/Exporters/FSpot.Exporters.Gallery/FSpot.Exporters.Gallery/GalleryRemote.cs:using System.Web;
./f-spot/src/Extensions/Exporters/FSpot.Exporters.Gallery/FSpot.Exporters.Gallery/FormClient.cs:using System.Web;
./f-spot/src/Extensions/Exporters/FSpot.Exporters.Gallery/FSpot.Exporters.Gallery/AccountDialog.cs:using System.Web;
./f-spot/src/Extensions/Exporters/FSpot.Exporters.Gallery/FSpot.Exporters.Gallery/GalleryExport.cs:using System.Web;
./f-spot/src/Extensions/Exporters/FSpot.Exporters.Gallery/FSpot.Exporters.Gallery/GalleryAddAlbum.cs:using System.Web;
./f-spot/src/Extensions/Exporters/FSpot.Exporters.Gallery/FSpot.Exporters.Gallery/GalleryAccountManager.cs:using System.Web;
./f-spot/src/Extensions/Exporters/FSpot.Exporters.SmugMug/FSpot.Exporters.SmugMug/SmugMugAccount.cs:using System.Web;
./f-spot/src/Extensions/Exporters/FSpot.Exporters.SmugMug/FSpot.Exporters.SmugMug/SmugMugAccountManager.cs:using System.Web;
./f-spot/src/Extensions/Exporters/FSpot.Exporters.SmugMug/FSpot.Exporters.SmugMug/SmugMugExport.cs:using System.Web;
./f-spot/src/Extensions/Exporters/FSpot.Exporters.SmugMug/FSpot.Exporters.SmugMug/SmugMugAccountDialog.cs:using System.Web;
./f-spot/src/Extensions/Exporters/FSpot.Exporters.SmugMug/FSpot.Exporters.SmugMug/SmugMugAddAlbum.cs:using System.Web;
./f-spot/src/Extensions/Exporters/FSpot.Exporters.Facebook/Mono.Facebook/Notification.cs:using System.Xml.Serialization;
./f-spot/src/Extensions/Exporters/FSpot.Exporters.Facebook/Mono.Facebook/Album.cs:using System.Xml.Serialization;
./f-spot/src/Extensions/Exporters/FSpot.Exporters.Facebook/Mono.Facebook/SessionWrapper.cs:using System.Xml.Serialization;
./f-spot/src/Extensions/Exporters/FSpot.Exporters.Facebook/Mono.Facebook/Responses.cs:using System.Xml.Serialization;
./f-spot/src/Extensions/Exporters/FSpot.Exporters.Facebook/Mono.Facebook/Tag.cs:using System.Xml.Serialization;
./f-spot/src/Extensions/Exporters/FSpot.Exporters.Facebook/Mono.Facebook/Photo.cs:using System.Xml.Serialization;
./f-spot/src/Extensions/Exporters/FSpot.Exporters.Facebook/Mono.Facebook/PeopleList.cs:using System.Xml.Serialization;
./f-spot/src/Extensions/Exporters/FSpot.Exporters.Facebook/Mono.Facebook/Event.cs:using System.Xml.Serialization;
./f-spot/src/Extensions/Exporters/FSpot.Exporters.Facebook/Mono.Facebook/User.cs:using System.Xml.Serialization;
./f-spot/src/Extensions/Exporters/FSpot.Exporters.Facebook/Mono.Facebook/Friend.cs:using System.Xml.Serialization;
./f-spot/src/Extensions/Exporters/FSpot.Exporters.Facebook/Mono.Facebook/Util.cs:using System.Xml;
./f-spot/src/Extensions/Exporters/FSpot.Exporters.Facebook/Mono.Facebook/Util.cs:using System.Xml.Serialization;
./f-spot/src/Extensions/Exporters/FSpot.Exporters.Facebook/Mono.Facebook/Group.cs:using System.Xml.Serialization;
./f-spot/src/Extensions/Exporters/FSpot.Exporters.Facebook/Mono.Facebook/Error.cs:using System.Xml.Serialization;
./f-spot/src/Extensions/Exporters/FSpot.Exporters.Facebook/Mono.Facebook/FriendInfo.cs:using System.Xml.Serialization;
./f-spot/src/Extensions/Exporters/FSpot.Exporters.Facebook/Mono.Facebook/Location.cs:using System.Xml.Serialization;
./f-spot/src/Extensions/Exporters/FSpot.Exporters.Facebook/Mono.Facebook/SessionInfo.cs:using System.Xml.Serialization;
./f-spot/src/Extensions/Exporters/FSpot.Exporters.Facebook/Mono.Facebook/FacebookSession.cs:using System.Xml;
./f-spot/src/Extensions/Exporters/FSpot.Exporters.Facebook/Mono.Facebook/FacebookSession.cs:using System.Linq;
./f-spot/src/Extensions/Exporters/FSpot.Exporters.Facebook/FSpot.Exporters.Facebook/FacebookExport.cs:using System.Web;
./f-spot/src/Extensions/Exporters/FSpot.Exporters.PicasaWeb/FSpot.Exporters.PicasaWeb/GoogleAccountDialog.cs:using System.Web;
./f-spot/src/Extensions/Exporters/FSpot.Exporters.PicasaWeb/FSpot.Exporters.PicasaWeb/GoogleAccountManager.cs:using System.Web;
./f-spot/src/Extensions/Exporters/FSpot.Exporters.PicasaWeb/FSpot.Exporters.PicasaWeb/GoogleAccount.cs:using System.Web;
./f-spot/src/Extensions/Exporters/FSpot.Exporters.PicasaWeb/FSpot.Exporters.PicasaWeb/GoogleAddAlbum.cs:using System.Web;
./f-spot/src/Extensions/Exporters/FSpot.Exporters.PicasaWeb/FSpot.Exporters.PicasaWeb/PicasaWebExport.cs:using System.Web;
./f-spot/src/Clients/MainApp/FSpot.UI.Dialog/PreferenceDialog.cs:using System.Linq;
./f-spot/src/Clients/MainApp/FSpot.UI.Dialog/SelectionRatioDialog.cs:using System.Xml.Serialization;
./f-spot/src/Clients/MainApp/FSpot.Editors/CropEditor.cs:using System.Xml.Serialization;
./f-spot/src/Clients/MainApp/FSpot/PhotoView.cs:using System.Xml.Serialization;
./f-spot/src/Clients/MainApp/FSpot/App.cs:using System.Linq;
./f-spot/src/Clients/MainApp/FSpot/SelectionDataExtensions.cs:using System.Linq;
./f-spot/src/Clients/MainApp/FSpot/FolderQueryWidget.cs:using System.Linq;
./f-spot/src/Clients/MainApp/FSpot/Photo.cs:using System.Linq;
./f-spot/src/Clients/MainApp/FSpot/MainWindow.cs:using System.Linq;
./f-spot/src/Clients/MainApp/FSpot/UriCollection.cs:using System.Xml;
./f-spot/src/Core/FSpot.Bling/FSpot.Bling/Animation.cs:using System.ComponentModel;
./f-spot/src/Core/FSpot.Core/FSpot.Core/FilePhoto.cs:using System.Xml;
./f-spot/src/Core/FSpot.Gui/FSpot.Widgets/SelectionCollection.cs:using System.Linq;
./f-spot/build/AddinXmlStringExtractor.cs:using System.Xml.XPath;
./f-spot/build/DllMapVerifier.cs:using System.Xml;</pre>
<p>F-Spot: <strong>131 </strong> references.</p>
<p><strong>Do</strong></p>
<pre>[jason@apollo do-bzr]$ find . -name '*.cs'|xargs egrep -i "using system.codedom|using system.componentmodel|using sytem.configuration|using system.data|using system.deployment|using system.directoryservices|using system.drawing|using system.enterpriseservices|using system.linq|using system.management|using system.media|using system.messaging|using system.resources|using system.serviceprocess|using system.timers|using system.transactions|using system.web|using system.windows.forms|using system.xml"
./do/Do.Platform.Linux/src/Do.Universe/GNOMESpecialLocationsItemSource.cs:using System.Linq;
./do/Do.Platform.Linux/src/Do.Universe/CategoryItem.cs:using System.Linq;
./do/Do.Platform.Linux/src/Do.Universe/ApplicationItemSource.cs:using System.Linq;
./do/Do.Platform.Linux/src/Do.Universe/GNOMEBookmarkItem.cs:using System.Linq;
./do/Do.Platform.Linux/src/Do.Universe/GNOMETrashItem.cs:using System.Linq;
./do/Do.Platform.Linux/src/Do.Universe/ApplicationItem.cs:using System.Linq;
./do/Do.Platform.Linux/src/Do.Platform/Do.Platform.Linux/KeyBindingService.cs:using System.Linq;
./do/Do.Platform.Linux/src/Do.Platform/Do.Platform.Linux/GnomeKeyringSecurePreferencesService.cs:using System.ComponentModel;
./do/Do.Platform.Linux/src/Do.Platform/Do.Platform.Linux/EnvironmentService.cs:using System.Linq;
./do/Do.Platform.Linux/src/Do.Platform/Do.Platform.Linux/UniverseFactoryService.cs:using System.Linq;
./do/Do.Universe/src/Do.Universe/ItemSource.cs:using System.Linq;
./do/Do.Universe/src/Do.Universe/Element.cs:using System.Linq;
./do/Do.Universe/src/Do.Universe/Do.Universe.Safe/SafeItemSource.cs:using System.Linq;
./do/Do.Universe/src/Do.Universe/Do.Universe.Safe/SafeAct.cs:using System.Linq;
./do/Do.Universe/src/Do.Universe/ProxyItem.cs:using System.Linq;
./do/Do.Universe/src/Do.Universe/Act.cs:using System.Linq;
./do/Do.Interface.Linux.AnimationBase/src/Do.Interface/Do.Interface.AnimationBase/BezelGlassResults.cs:using System.Linq;
./do/Do.Interface.Linux.AnimationBase/src/Do.Interface/Do.Interface.AnimationBase/AnimationBaseConfigurationWidget.cs:using System.Linq;
./do/Do.Interface.Linux.AnimationBase/src/Do.Interface/Do.Interface.AnimationBase/Bezel.cs:using System.Linq;
./do/Do/src/Mono.Addins/AddinExtensions.cs:using System.Linq;
./do/Do/src/PathExtensions.cs:using System.Linq;
./do/Do/src/Do.Core/SecondSearchController.cs:using System.Linq;
./do/Do/src/Do.Core/ItemExtensions.cs:using System.Linq;
./do/Do/src/Do.Core/SimpleSearchController.cs:using System.Linq;
./do/Do/src/Do.Core/PluginManager.cs:using System.Xml;
./do/Do/src/Do.Core/PluginManager.cs:using System.Linq;
./do/Do/src/Do.Core/Shortcut.cs:using System.Linq;
./do/Do/src/Do.Core/Paths.cs:using System.Linq;
./do/Do/src/Do.Core/UniverseManager.cs:using System.Linq;
./do/Do/src/Do.Core/Controller.cs:using System.Linq;
./do/Do/src/Do.Core/FirstSearchController.cs:using System.Linq;
./do/Do/src/Do.Core/HistogramRelevanceProvider.cs:using System.Linq;
./do/Do/src/Do.Core/ThirdSearchController.cs:using System.Linq;
./do/Do/src/Do.Universe/ItemSourceItemSource.cs:using System.Linq;
./do/Do/src/CorePreferences.cs:using System.Linq;
./do/Do/src/Do.UI/PluginConfigurationWindow.cs:using System.Linq;
./do/Do/src/Do.UI/ColorConfigurationWidget.cs:using System.Linq;
./do/Do/src/Do.UI/KeybindingTreeView.cs:using System.Linq;
./do/Do/src/Do.UI/PreferencesWindow.cs:using System.Linq;
./do/Do/src/Do.UI/ManagePluginsPreferencesWidget.cs:using System.Linq;
./do/Do/src/Do.Platform/PluginManagerService.cs:using System.Linq;
./do/Do/src/Do.Platform/CoreService.cs:using System.Linq;
./do/Do.Platform/src/Do.Universe/Do.Universe.Common/OpenWithAction.cs:using System.Linq;
./do/Do.Platform/src/Do.Universe/Do.Universe.Common/CopyToClipboardAction.cs:using System.Linq;
./do/Do.Platform/src/Do.Universe/Do.Universe.Common/EmailAction.cs:using System.Linq;
./do/Do.Platform/src/Do.Platform/Services.cs:using System.Linq;
./do/Do.Platform/src/Do.Platform/IEnvironmentService.cs:using System.Linq;
./do/Do.Platform/src/Do.Platform/Do.Platform.Default/KeyBindingService.cs:using System.Linq;
./do/Do.Platform/src/Do.Platform/KeyBinding.cs:using System.Linq;
./do/Do.Platform/src/Do.Platform/Do.Platform.Common/AbstractKeyBindingService.cs:using System.Linq;
./do/Do.Platform/src/Do.Platform/SecurePreferencesWrapper.cs:using System.ComponentModel;
./do/Do.Platform/src/Do.Platform/LogBase.cs:using System.Linq;
./do/Do.Interface.Linux/src/Do.Interface/Do.Interface.Widgets/ResultsWindow.cs:using System.Linq;
./do/Do.Interface.Linux/src/Do.Interface/PixbufSurfaceCache.cs:using System.Linq;
./do/Do.Interface.Linux/src/Do.Interface/InterfaceManager.cs:using System.Linq;
./do/Do.Interface.Linux/src/Do.Interface/ClassicInterface/ClassicWindow.cs:using System.Linq;</pre>
<p>Do: <strong>56</strong> references.</p>
<p><strong>Gbrainy</strong></p>
<pre>[jason@apollo gbrainy-git]$ find . -name '*.cs'|xargs egrep -i "using system.codedom|using system.componentmodel|using sytem.configuration|using system.data|using system.deployment|using system.directoryservices|using system.drawing|using system.enterpriseservices|using system.linq|using system.management|using system.media|using system.messaging|using system.resources|using system.serviceprocess|using system.timers|using system.transactions|using system.web|using system.windows.forms|using system.xml"
./gbrainy/sample_extensions/Memory/MemorySample.cs:using System.Timers;
./gbrainy/src/Clients/WebForms/Default.aspx.cs:using System.Web;
./gbrainy/src/Clients/WebForms/Default.aspx.cs:using System.Web.UI;
./gbrainy/src/Clients/WebForms/WebSession.cs:using System.Web.SessionState;
./gbrainy/src/Clients/WebForms/Status.aspx.cs:using System.Web;
./gbrainy/src/Clients/WebForms/Status.aspx.cs:using System.Web.UI;
./gbrainy/src/Clients/WebForms/Status.aspx.cs:using System.Web.UI.WebControls;
./gbrainy/src/Clients/WebForms/Global.asax.cs:using System.ComponentModel;
./gbrainy/src/Clients/WebForms/Global.asax.cs:using System.Web;
./gbrainy/src/Clients/WebForms/Global.asax.cs:using System.Web.SessionState;
./gbrainy/src/Clients/WebForms/MasterPage.master.cs:using System.Web;
./gbrainy/src/Clients/WebForms/MasterPage.master.cs:using System.Web.UI;
./gbrainy/src/Clients/WebForms/MasterPage.master.cs:using System.Web.UI.WebControls;
./gbrainy/src/Clients/WebForms/Finish.aspx.cs:using System.Web;
./gbrainy/src/Clients/WebForms/Finish.aspx.cs:using System.Web.UI;
./gbrainy/src/Clients/WebForms/Game.aspx.cs:using System.Web;
./gbrainy/src/Clients/WebForms/Game.aspx.cs:using System.Web.UI;
./gbrainy/src/Core/Main/Verbal/AnalogiesFactory.cs:using System.Xml;
./gbrainy/src/Core/Main/IDrawRequest.cs:using System.ComponentModel;
./gbrainy/src/Core/Main/PlayerHistory.cs:using System.Xml.Serialization;
./gbrainy/src/Core/Main/Game.cs:using System.ComponentModel;
./gbrainy/src/Core/Main/Memory.cs:using System.Timers;
./gbrainy/src/Core/Main/GameSessionHistory.cs:using System.Xml.Serialization;
./gbrainy/src/Core/Main/GameSession.cs:using System.Timers;
./gbrainy/src/Core/Main/GameSession.cs:using System.ComponentModel;
./gbrainy/src/Core/Main/Xml/GameXmlFactory.cs:using System.Xml;
./gbrainy/src/Core/Main/Preferences.cs:using System.Xml;
./gbrainy/src/Core/Main/Preferences.cs:using System.Xml.Serialization;
./gbrainy/src/Core/Toolkit/Widget.cs:using System.ComponentModel;
./gbrainy/src/Core/Views/CountDownView.cs:using System.Timers;
./gbrainy/src/Core/Views/CountDownView.cs:using System.ComponentModel;</pre>
<p>Gbrainy: <strong>31</strong> references.</p>
<p><strong>Summary</strong></p>
<p><strong>UPDATED 2010.12.15 &#8211; </strong>The struck-through text is the original figure with System.Xml as part of the search. The un-struckthrough text is without.</p>
<ul>
<li>Banshee: <span style="text-decoration: line-through;">165</span> 118 refs (and 1 Microsoft refs for giggles)</li>
<li>Tomboy: <span style="text-decoration: line-through;">36</span> 13 refs</li>
<li>F-Spot: <span style="text-decoration: line-through;">131</span> 32 refs</li>
<li>Do: <span style="text-decoration: line-through;">56</span> 55 refs</li>
<li>Gbrainy: <span style="text-decoration: line-through;">31</span> 25 refs</li>
</ul>
<p>So, that&#8217;s the 5 most popular (give-or-take) Mono applications for Linux. Not a single one of which doesn&#8217;t have a significant amount of references to non-ECMA namespaces. As the <a href="http://www.microsoft.com/interop/cp/default.mspx">Microsoft Community Promise</a> covering any implementation is limited to the &#8220;extent it conforms to one of the Covered Specifications&#8221;, we can <strong>reject</strong> the claim that &#8220;All of the pieces of Mono that are used in Linux apps are covered by the MCP.&#8221;</p>
<p>I will leave it to bolder souls than I to speculate on whether it is even <strong>possible</strong> to write a non-trivial Mono program that does not <strong>require</strong> non-ECMA namespaces and, if so, that limitation is intentional on Microsoft&#8217;s part.</p>
<p><strong>UPDATE 2010.12.16</strong> &#8211; <a href="http://tirania.org/blog/archive/2010/Dec-09.html">Miguel de Icaza responds on his blog</a>, with some additional comments from myself there.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.the-source.com/2010/12/mono-unsafe-at-any-speed/feed/</wfw:commentRss>
		<slash:comments>23</slash:comments>
		</item>
		<item>
		<title>Banshee, Mono, and Reddit</title>
		<link>http://www.the-source.com/2010/12/banshee-mono-and-reddit/</link>
		<comments>http://www.the-source.com/2010/12/banshee-mono-and-reddit/#comments</comments>
		<pubDate>Sat, 11 Dec 2010 08:37:35 +0000</pubDate>
		<dc:creator>Jason</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Banshee]]></category>
		<category><![CDATA[Mono]]></category>
		<category><![CDATA[Reddit]]></category>

		<guid isPermaLink="false">http://www.the-source.com/?p=1274</guid>
		<description><![CDATA[Got a lot of traffic last day or two from Reddit, because someone linked to my brilliant treatise, &#8220;Mono Criticism == Uninformed Hatred?&#8221; Now, I usually don&#8217;t comment on other sites about Mono/Moonlight because 99.99% of the arguments that come up are simply repeats. In my opinion (a polite way of me saying &#8220;It is a [...]]]></description>
			<content:encoded><![CDATA[<p>Got a lot of traffic last day or two from Reddit, because <a href="http://www.reddit.com/r/linux/comments/ejjm4/mono_criticism_uninformed_hatred_thesourcecom/">someone linked</a> to my brilliant treatise, &#8220;<a href="http://www.the-source.com/2010/11/mono-criticism-uninformed-hatred/">Mono Criticism == Uninformed Hatred?</a>&#8221;</p>
<p>Now, I usually don&#8217;t comment on other sites about Mono/Moonlight because 99.99% of the arguments that come up are simply repeats. In my opinion (a polite way of me saying &#8220;It is a fact that&#8221;), I have dismantled any Team Apologista argument so throughly that only the most deluded rail against my fierce logic.</p>
<p>That being said, as I read the commentary at Reddit, <a href="http://www.reddit.com/r/linux/comments/ejjm4/mono_criticism_uninformed_hatred_thesourcecom/c18khqm">one long bit jumped out at me, by my old friend zekopeko</a>. Those of us that keep abreast of Team Apologista will recognize the name, as Mr. Peko is a very active defender of all things Mono. It&#8217;s amusing because his main tactic is simply parroting other people&#8217;s arguments, but I guarantee you if you read a dozen things about Mono at Ubuntu Forums, OMG Ubuntu, Reddit, or any other similar site, 10 of them will be graced with Mr. Peko&#8217;s presence.</p>
<p>Because it amused me, I commented on  - but allow me expand a bit here, for I know the Gentle Readers of This Humble Blog will appreciate the details:</p>
<p><strong>I&#8217;ll take your word for it.</strong></p>
<p>In my original argument I said:</p>
<blockquote><p><strong>Tomboy and F-Spot use unsafe bits of .NET</strong></p>
<p>This is true for Banshee as well, <a href="http://mono-nono.com/2009/07/08/this-doesnt-fix-everything/#comment-32">a fact also acknowledged by Mr. de Icaza</a>.</p></blockquote>
<p>Mr. Peko&#8217;s response on Reddit:</p>
<blockquote><p>He also mentions Banshee as using non-safe bits by quoting a 1.5 year old post.<a rel="nofollow" href="http://twitter.com/directhex/status/10613362849226752">Banshee doesn&#8217;t use the &#8220;evil&#8221; System.Data anymore</a>. That guy is a Debian Developer and Mono packager for Debian/Ubuntu.</p></blockquote>
<p>Now there are 2 problems with this response:</p>
<ol>
<li>I didn&#8217;t say that &#8220;System.Data&#8221; was the only unsafe bit being used.</li>
<li>Banshee still uses System.Data</li>
</ol>
<p>You see, I have this crazy tendency to fact check things before I use them in an argument. I might not always get everything right, but I do always make an honest effort. So, I downloaded the Bansee source code and I searched it for &#8220;using system.data&#8221;, the C# language incantation necessary to use System.Data:</p>
<blockquote><p>[jason@apollo banshee-1-1.8.0]$ find . | xargs grep -i &#8220;using system.data&#8221;<br />
./src/Hyena/Hyena.Data.Sqlite/Hyena.Data.Sqlite/Tests/SqliteModelProviderTests.cs:using System.Data;<br />
./src/Hyena/Hyena.Data.Sqlite/Hyena.Data.Sqlite/HyenaSqliteArrayDataReader.cs:using System.Data;<br />
[.. 70 more files snipped ..]</p></blockquote>
<p>All told, there are <strong>72 C# source files in Banshee that use System.Data</strong>.</p>
<p>Now, I realize Mr. Peko is simply parroting something he read on Twitter and probably has never looked at the Banshee source code, nor could understand it if he did, but this is a dramatic (and admittedly amusing) example of the quality and rigor of Team Apologista&#8217;s arguments.</p>
<p><strong>Take it a little further</strong></p>
<p>Remember before how I said I didn&#8217;t say that &#8220;System.Data&#8221; was the only unsafe bit being used? Well, if you check for all the <a href="http://en.wikipedia.org/wiki/Base_Class_Library#Non_standardized_namespaces">Non Standardized Namespaces</a> in Banshee, you come up with an even longer list:</p>
<blockquote>
<div id="_mcePaste">[jason@apollo banshee-1-1.8.0]$ find . | xargs egrep -i &#8220;using system.codedom|using system.componentmodel|using sytem.configuration|using system.data|using system.deployment|using system.directoryservices|using system.drawing|using system.enterpriseservices|using system.linq|using system.management|using system.media|using system.messaging|using system.resources|using system.serviceprocess|using system.timers|using system.transactions|using system.web|using system.windows.forms|using system.xml&#8221;</div>
<p>./src/Dap/Banshee.Dap/Banshee.Dap/DapLibrarySync.cs:using System.Linq;<br />
[.. 280 more files snipped ..]</p></blockquote>
<p>That&#8217;s right <strong>281</strong> files use non-standardized .NET namespaces not covered by ECMA or the Microsoft Community Promise. <strong>Out of 1240 C# source files. 22%, just short of a quarter, of all the C# source files in Banshee require non-standardized .NET namespaces</strong>.</p>
<p>When Team Apologista tries to talk down the importance of the non-ECMA namespaces, or when they try to suggest that while the Mono project proper might not split into safe and un-safe portions, but packagers for most major distributions do, keep Banshee in mind as an example.</p>
<p><strong>A final note</strong></p>
<p>The rest of Mr. Peko&#8217;s response and his many other responses in that Reddit thread are filled with a veritable cornucopia of factual and logical errors, I won&#8217;t bother with tediously dissecting them here (mainly because I think they are transparent to any honest reader), but I did want to mention it lest someone think this gross factual inaccuracy be the only failing.</p>
<p><strong>A final final note</strong></p>
<p>I guess I need to specifically point out that I am using the latest public release of code at the time of writing (1.8.0) as available from the Banshee &#8220;download&#8221; page. Apparently, the git version of Banshee has removed System.Data dependencies.</p>
<p>If Banshee is able to remove all non-standardized namespaces, then that does remove one point of criticism against it. We will see how it looks whenever a new public release is made.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.the-source.com/2010/12/banshee-mono-and-reddit/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
	</channel>
</rss>

