<?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 &#187; Mono</title>
	<atom:link href="http://www.the-source.com/tag/mono/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>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>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>
		<item>
		<title>Mono Criticism == Uninformed Hatred?</title>
		<link>http://www.the-source.com/2010/11/mono-criticism-uninformed-hatred/</link>
		<comments>http://www.the-source.com/2010/11/mono-criticism-uninformed-hatred/#comments</comments>
		<pubDate>Mon, 08 Nov 2010 02:44:16 +0000</pubDate>
		<dc:creator>Jason</dc:creator>
				<category><![CDATA[Novell]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Mono]]></category>

		<guid isPermaLink="false">http://www.the-source.com/?p=1235</guid>
		<description><![CDATA[Guy Van Sanden has a short post, &#8220;Get the facts on mono&#8221; where he makes a few points on mono: But a lot of time has past since the original discussions and in that time, some things became very clear. Microsoft does hold patents on the .NET technology that mono is based on They made [...]]]></description>
			<content:encoded><![CDATA[<p>Guy Van Sanden has a short post, &#8220;<a href="http://nocturn.vsbnet.be/content/get-facts-mono">Get the facts on mono</a>&#8221; where he makes a few points on mono:</p>
<blockquote><p>But a lot of time has past since the original discussions and in that time, some things became very clear.</p>
<ul>
<li>Microsoft does hold patents on the .NET technology that mono is based on</li>
<li>They made a community promise not to sue FOSS projects implementing the ECMA submitted parts of .NET</li>
<li>The community promise is not a binding patent grant</li>
<li>Mono implements a lot more than the ECMA parts, De Icaza&#8217;s promise to seperate mono into safe and non-safe parts was never fulfilled</li>
<li>There is no promise on the non-ECMA parts</li>
<li>Software like F-Spot and Tomboy are therefor using parts based on non-free bits of .NET</li>
</ul>
<p>So, why is including MP3 support and DeCSS problematic but do we digg a hole by using patented technologies from one of the biggest patent trolls on the planet???</p>
<p>I don&#8217;t think any of this is malicious, but it does feel naive and misguided to me&#8230;</p></blockquote>
<p>This is fairly reserved criticism of Mono &#8211; and outside of arguing over what a &#8220;binding patent grant&#8221; means to the Microsoft Community Promise - each point is factual. (I guess you can argue over the definition of &#8220;patent troll&#8221; as well, but that&#8217;s in the conclusion and not in the points.)</p>
<p>Here&#8217;s how the criticism is portrayed by one member of Team Apologista in the comments:</p>
<blockquote><p>You are currently aiding in spreading uninformed hatred against a valuable group of Open Source contributors.</p></blockquote>
<p>&#8220;Uninformed hatred<strong>&#8220;. Hatred</strong>. Think on that characterization carefully, and the implications that the wielder is trying to make.</p>
<p>Let&#8217;s look at the points and see if those implications hold up: is criticism of mono &#8211; specifically the points that Mr. Van Sanden makes &#8211; &#8220;uniformed hatred&#8221;?</p>
<p><strong>Microsoft does hold patents on .NET technology</strong></p>
<p>There is at least one patent unambiguously on .NET (<a href="http://web.archive.org/web/20030424174805/http://mailserver.di.unipi.it/pipermail/dotnet-sscli/msg00218.html">the &#8220;Jim Miller&#8221; e-mail</a> patent), and it is clear that Microsoft themselves think they have .NET patented just fine:</p>
<blockquote><p>It seems pretty clear and simple to me, but maybe I&#8217;m missing something. Microsoft has a commercial product, the CLR, and we treat it as we do any commercial product. It is covered by patents, copyrights, trade secrets, trade marks, whatever the lawyers dream up next.</p>
<p style="text-align: right;">- <a href="http://web.archive.org/web/20030610091304/mailserver.di.unipi.it/pipermail/dotnet-sscli/msg00223.html">Jim Miller</a></p>
</blockquote>
<blockquote><p>If someone implemented a product that conforms to the [CLI] specification, we believe we have a patent or one pending that&#8217;s essential to implementing the specification.</p>
<p style="text-align: right;">- <a href="http://www.zdnet.com/news/will-c-benefit-microsoft-or-the-industry/296280">Michele Herman</a>, Microsoft Director of Intellectual Property</p>
</blockquote>
<blockquote><p>Q: Are there any patents that apply or that will apply to implementers of .NET or Hailstorm?</p>
<p>A: I expect there certainly will be. I mean, the patent process takes a long time.</p>
<p style="text-align: right;">- <a href="http://linuxdevcenter.com/pub/a/linux/2001/08/09/oscon_panel.html?page=5">Craig Mundie</a>, Microsoft Chief Research and Strategy Officer</p>
</blockquote>
<blockquote>
<div>[SLIDE TITLE]Maintaining Gap vs. Linux</div>
<ol>
<li>Keep network effect with Applications
<ul>
<li>Migrate applications to .NET framework
<ul>
<li>BUT keep framework proprietary to Windows</li>
<li>Patents required to implement clone</li>
</ul>
</li>
</ul>
</li>
</ol>
<div style="text-align: right;">—Dan Nault, <cite><a rel="nofollow" href="http://antitrust.slated.org/www.iowaconsumercase.org/011607/7000/PX07046.pdf">2005 &#8220;Highly Confidential&#8221; Presentation</a></cite></div>
</blockquote>
<p>So, we see here that Microsoft at multiple levels certainly thinks they have patented .NET &#8211; and, in that last case, intends to use patents as a way to differentiate &#8220;Genuine .NET Advantage&#8221; and .NET clones.</p>
<p>Not to even bring in the <a href="http://patft.uspto.gov/netacgi/nph-Parser?Sect1=PTO2&amp;Sect2=HITOFF&amp;u=%2Fnetahtml%2FPTO%2Fsearch-adv.htm&amp;r=0&amp;p=1&amp;f=S&amp;l=50&amp;Query=AN%2FMicrosoft%0D%0Aand%0D%0ASPEC%2F%22NET+Framework%22%0D%0A&amp;d=PTXT">nearly 300 Microsoft patents that reference the &#8220;NET Framework&#8221;</a>. Of course, some of they may not apply to .NET and/or Mono, but I&#8217;m willing to wager one or two (hundred?) of them do!</p>
<p>In light of:</p>
<ul>
<li>the statements by Microsoft people (they are in the position to know)</li>
<li>internal documents that specifically mention patenting .NET (again, they are doing the planning)</li>
<li>the content of the ECMA promise (why cover patents if there aren&#8217;t any?),</li>
<li>the content of the &#8220;Community Promise&#8221; (again, why idemnify something irrelevant?),</li>
<li>the history of Microsoft (they are not shy about patenting things), and</li>
<li>the appearance of multiple patents that appear to apply to .NET</li>
</ul>
<p>I submit to you: <strong>the informed and rational position is that Microsoft does hold patents on .NET</strong>. Microsoft says they do and the evidence supports that.</p>
<p>If you are arguing otherwise, the burden of proof is upon you. You are the one making an extraordinary claim. And extraordinary claims require extraordinary proof.</p>
<p>Consider the alternative: when .NET first came out, it was largely seen as a technology that Microsoft was &#8220;betting the company on.&#8221; Is someone seriously prepared to argue that Microsoft, one of the most prolific patent holders in the world, was planning on developing and betting the company on a technology they intentionally would not patent?</p>
<p>Facts and Rational Points: 1. Uninformed Hatred: 0.</p>
<p><strong>Microsoft did make a Community Promise</strong></p>
<p><a href="http://www.microsoft.com/interop/cp/default.mspx">This is not in dispute</a>. What <strong>is</strong> in dispute is how comprehensive and &#8220;safe&#8221; the promise is. That is outside the scope of this particular point, though.</p>
<p>Facts and Rational Points: 2. Uninformed Hatred: 0.</p>
<p><strong>The Community Promise is not a binding patent grant</strong></p>
<p>This is the questionable one I guess, depending on what one means by &#8220;a binding patent grant&#8221;.</p>
<p>If you take it to mean something along the lines of &#8220;Microsoft can&#8217;t revoke its Community Promise&#8221;, then I&#8217;ll agree to that.</p>
<p>However, if you take it mean something along the lines that the Community Promise has enough &#8220;wiggle room&#8221; that it might not be &#8220;safe enough&#8221;, then I&#8217;ll agree to that as well.</p>
<p>The <a href="http://www.fsf.org/news/2009-07-mscp-mono">FSF has given its issues with the Microsoft Community Promise, along with a suggested fix</a>. I&#8217;ve mentioned my own issues with the MCP before, which basically revolve around 2 points:</p>
<ul>
<li>The promise only applies to compliant full implementations at the time of the Promise. No partial implementations, and no future-proofing.</li>
<li>Microsoft could sell patents to a 3rd party which is not bound by the MCP.</li>
</ul>
<p>The Software Freedom Law Center has <a href="http://www.softwarefreedom.org/resources/2008/osp-gpl.html">similar concerns over the &#8220;better&#8221; Microsoft Open Specification Promise as well</a>.</p>
<p>So, while I suppose you might quibble over the word choice, it&#8217;s certainly fair to say that the Microsoft Community Promise is not without potential problems.</p>
<p>Facts and Rational Points: 3. Uninformed Hatred: 0.</p>
<p><strong>Mono implements more than the ECMA parts, and de Icaza never fulfilled his promise to seperate them into safe and &#8220;unsafe&#8221; parts</strong></p>
<p>True, and <a href="http://tirania.org/blog/archive/2009/Jul-06.html">acknowledged by Mr. de Icaza</a> back in July 2009:</p>
<blockquote><p>In the next few months we will be working towards splitting the jumbo Mono source code that includes ECMA + A lot more into two separate source code distributions. One will be ECMA, the other will contain our implementation of ASP.NET, ADO.NET, Winforms and others.</p></blockquote>
<p>To my knowledge this has not happened. In fact, I heard the idea to split the packages was abandoned because &#8220;people would just complain anyway&#8221;.</p>
<p>Facts and Rational Points: 4. Uninformed Hatred: 0.</p>
<p><strong>There is no promise on the non-ECMA parts</strong></p>
<p>Is anyone disputing this? The Community Promise explicitly addresses only the various ECMA portions of .NET (334 and 335).</p>
<p>I suppose you could run into <em>other</em> Covered Specifications that are incorporated in .NET, and then say there is a Promise covering some non-ECMA parts, but that seems a pedantic and misleading argument.</p>
<p>Facts and Rational Points: 5. Uninformed Hatred: 0.</p>
<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>
<p>I suppose this <em>could </em>change, but it seems telling to me that Mono applications using non-ECMA portions are still doing so despite the public attention and acknowledgment.</p>
<p>In any cast, another factual point made, and here at the end I have the score as:</p>
<p style="text-align: center;"><strong>Facts and Rational Points: 6, Uninformed Hatred: 0</strong>.</p>
<p><strong>So, why the charge of &#8220;uninformed hatred&#8221;?</strong></p>
<p>If a simple listing of facts and rational points becomes accused of uninformed hatred, what must the reasoning be?</p>
<p>Well, for one thing, the facts must be against you! Remember, &#8220;<a href="http://quoteinvestigator.com/2010/07/04/legal-adage/">If neither the facts nor the law are on your side, pound the table!&#8221;</a></p>
<p>There lies the root of every logical fallacy and personal attack that Team Apologista so often reaches for: unable to dispute the facts, they must instead turn to attempts to discredit the person. You see this effect in ludicrous overdrive in the attempts to discredit the FSF (and/or RMS) in particular.</p>
<p>Mr. Van Sanden&#8217;s post is a wonderful example because it is so very mild and tempered - if such civil posts are deemed <strong>hatred</strong>, imagine how analysis and speculation is characterized!</p>
<p><strong>Pot demands apology from Kettle after calling Kettle black</strong></p>
<p>Also, I&#8217;d like to note the supreme audacity in demanding &#8220;a full retraction of your post along with an apology and promise to research before posting in the future&#8221;, considering the <a href="http://mono-nono.com/2009/07/05/on-apples-and-how-they-do-not-fall-far-from-the-trees/">hatchet job Team Apologista tried to do on GNote </a>and the <a href="http://meandubuntu.wordpress.com/2009/06/10/disinformation-disinfected-pt-3-banshee-in-ubuntu/">lies spread about Rhythmbox</a>.</p>
<p>I challenge anyone to read the shameful flurry of slander against GNote and argue there is no &#8220;uninformed hatred&#8221; there.</p>
<p>Mono Apologists <strong>must</strong> rely on uninformed acceptance of their points, because one can not simultaneously be informed and make the arguments that Team Apologista does. The best <strong>honest</strong> argument Team Apologista can make is something along the lines of: &#8220;Mono may have issues, but so do a lot of projects, and we don&#8217;t think ours rise to a level of serious concern.&#8221;</p>
<p>That argument is fair, truthful, and &#8211; unfortunately &#8211; <strong>not very convincing</strong>. That is why Team Apologista must resort to misrepresenting the FSF, or trying to silence critics, or trotting out one logical fallacy after another, or resorting to personal attacks.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.the-source.com/2010/11/mono-criticism-uninformed-hatred/feed/</wfw:commentRss>
		<slash:comments>12</slash:comments>
		</item>
		<item>
		<title>Rejecting Mono II: Banshee Boogaloo</title>
		<link>http://www.the-source.com/2010/10/rejecting-mono-ii-banshee-boogaloo/</link>
		<comments>http://www.the-source.com/2010/10/rejecting-mono-ii-banshee-boogaloo/#comments</comments>
		<pubDate>Fri, 29 Oct 2010 02:02:40 +0000</pubDate>
		<dc:creator>Jason</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Banshee]]></category>
		<category><![CDATA[Mono]]></category>
		<category><![CDATA[Rhythmbox]]></category>

		<guid isPermaLink="false">http://www.the-source.com/?p=1224</guid>
		<description><![CDATA[Background #1 If you follow the so-called “Mono Debate”, one of the most common defenses – to be very generous in calling it a defense – is that users don&#8217;t care about the language, platform or other such &#8220;plumbing&#8221; that the application was built upon. Background #2 The attempts at getting Banshee to replace Rhythmbox as [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Background #1</strong></p>
<p>If you follow the so-called “Mono Debate”, one of the most common defenses – to be very generous in calling it a <em>defense</em> – is that users don&#8217;t care about the language, platform or other such &#8220;plumbing&#8221; that the application was built upon.</p>
<p><strong>Background #2</strong></p>
<p>The attempts at getting Banshee to replace Rhythmbox as Ubuntu&#8217;s audio player have always interested me &#8211; in fact, the <a href="http://meandubuntu.wordpress.com/2009/06/10/disinformation-disinfected-pt-3-banshee-in-ubuntu/">pure lies</a> about Rhythmbox spread by Team Apologista were one of the major reasons I became skeptical about Mono.</p>
<p>Now, OMG! HYPESTATION!!!, er I mean OMG! Ubuntu has a totally <a href="http://www.omgubuntu.co.uk/2010/10/which-would-you-choose-as-default-banshee-or-rhythmbox-poll">un-biased poll</a> asking their readers &#8220;<strong>If the decision was up to you which media player would you choose as a default</strong>?&#8221;</p>
<p>The only choices in this pool are Banshee and Rhythmbox, and the numbers are very close (even considering the poll is being flogged by Team Apologista on Twitter) but the point I&#8217;d like to make here isn&#8217;t really about the poll itself, but about <strong>what the comments reveal</strong>.</p>
<p><strong>The Story</strong></p>
<p>Without making a value judgement, I would argue that OMG! Ubuntu isn&#8217;t targeted or frequented by the hardcore developer. It is clearly aimed at the more casual Ubuntu enthusiast and the stories and writing reflect that. This is not <a href="http://www.mail-archive.com/lfs-dev@linuxfromscratch.org/">lfs-dev</a> here , we are talking about a less technically-oriented subset of users of a less technically-oriented distro.</p>
<p>So, if OMG! Ubuntu readers note that they do not like C#/Mono &#8211; <em>or even note that they consider it a benefit</em> &#8211; it puts to lie the notion that &#8220;users don&#8217;t care about things like that&#8221;.</p>
<p>And guess what we see in the comments:</p>
<blockquote><p>Banshee is C#. Huge minus.<br />
Rythmbox is too simple.<br />
I vote for Clementine!</p></blockquote>
<blockquote><p>Speaking as an end user, I&#8217;ve always found C# applications to start kinda slowly. Dunno if that&#8217;s a function of the language or of the particular applications I&#8217;ve used.</p></blockquote>
<blockquote><p>C# is not champion in terms of performance and few other things. Since end user is not programing it brings it into category, &#8220;it sort of does, but not much people cares anyway&#8221;.</p></blockquote>
<blockquote><p>KSEN! Yesterday I was thinking about music players. I was like? Banshee sucks because its c#. Rythmbox sucks because its well to simple and lacks features. So I was looking through music players for linux and found clementine. I was like that would be perfect!</p></blockquote>
<blockquote><p>Rhythmbox.</p>
<p>Banshee is mono, the less dependencys the better and also mono is clunky and was designed for programmers and not users. (attack me if you want mono fans)</p>
<p>Anybody else want a Vala coded media player?</p></blockquote>
<p>Now, <strong>are these not end-users</strong>? These commentors are not - to my knowledge - application or distro developers. <strong>The argument that &#8220;end-users don&#8217;t care&#8221; does not hold up.</strong></p>
<p><strong>Re-butt-ed?</strong></p>
<p>Take a look at the &#8220;rebuttal&#8221; to such comments &#8211; still stuck in the &#8220;end-users-don&#8217;t-care&#8221; track:</p>
<blockquote><p>Banshee is C#.</p>
<p>For the end user: Irrelevant.<br />
For developers: A HUGE plus.</p></blockquote>
<blockquote><p>That&#8217;s not anything end-users are concerned with, it&#8217;s what distro developers are concerned with (and possibly what app developers are concerned with).</p></blockquote>
<p>Who exactly do these people think they are arguing with? If they think they are arguing with &#8220;end-users&#8221;, then how can they say &#8220;end users don&#8217;t care&#8221;? And if they think they are arguing with developers and the end-user opinion is irrelevant, <strong>then why bring it up</strong>?</p>
<p>The illogical inanity and inability to construct an argument without resorting to broad and incorrect generalizations is a hallmark of Mono Apologetics.</p>
<p>Yet, it serves to illustrate similar points made previously in my brilliantly received <a href="http://www.the-source.com/2010/10/rejecting-mono/">Rejecting Mono</a>:</p>
<ol>
<li>Some users do indeed care about Mono &#8211; and don&#8217;t want it.</li>
<li><strong>Stop telling users what they care about</strong> &#8211; different people have different sets of concern.</li>
<li>And of course my favorite point: <strong>not everyone who doesn&#8217;t want Mono on their system is a &#8220;freetard&#8221; or &#8220;zealot&#8221;.</strong></li>
</ol>
<p><strong>One last thing&#8230;</strong></p>
<p>I would be remiss if I didn&#8217;t mention:</p>
<ol>
<li>Users often care about things without knowing they do; And</li>
<li>What users care about is independent of how important something is</li>
</ol>
<p>For example, users &#8220;don&#8217;t care&#8221; about DRM, <strong>until it stops them from doing something they want to do.</strong></p>
<p>Likewise, users &#8220;don&#8217;t care&#8221; about software patents, <strong>until it directly affects an application or device they are using</strong>.</p>
<p>Unless you in turn think that DRM or software patents are issues of no concern, I fail to see how users &#8220;not caring&#8221; reflects on the importance of an issue.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.the-source.com/2010/10/rejecting-mono-ii-banshee-boogaloo/feed/</wfw:commentRss>
		<slash:comments>12</slash:comments>
		</item>
		<item>
		<title>Rejecting Mono</title>
		<link>http://www.the-source.com/2010/10/rejecting-mono/</link>
		<comments>http://www.the-source.com/2010/10/rejecting-mono/#comments</comments>
		<pubDate>Sat, 16 Oct 2010 23:54:06 +0000</pubDate>
		<dc:creator>Jason</dc:creator>
				<category><![CDATA[Novell]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Mono]]></category>

		<guid isPermaLink="false">http://www.the-source.com/?p=1207</guid>
		<description><![CDATA[Background #1 If you follow the so-called &#8220;Mono Debate&#8221;, one of the most common defenses &#8211; to be very generous in calling it a defense &#8211; is that people who object to Mono are &#8220;freetards&#8221;, or &#8220;zealots&#8221;, or otherwise ideologically driven past the point of rational thinking. The implication, often outright stated, is that opposition [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Background #1</strong></p>
<p>If you follow the so-called &#8220;Mono Debate&#8221;, one of the most common defenses &#8211; to be very generous in calling it a <em>defense</em> &#8211; is that people who object to Mono are &#8220;freetards&#8221;, or &#8220;zealots&#8221;, or otherwise ideologically driven past the point of rational thinking. The implication, often outright stated, is that opposition to Mono in general is irrational, something no &#8220;normal person&#8221; would do.</p>
<p>A related, and similar, defense is that <strong>users</strong> certainly don&#8217;t care whether a program uses Mono or not: they just &#8220;want something that works&#8221;.</p>
<p><strong>Background #2</strong></p>
<p><a href="http://www.heroesofnewerth.com/">Heroes of Newerth</a> is a cross-platform (Linux, Mac, Windows) commercial game of decent popularity aimed at the competitive gamer. Like many modern games, it allows &#8220;mods&#8221; &#8211; modifications that add, remove, or change certain aspects of the stock game.</p>
<p>In this case, multiple mods can be tricky to apply, so a member of the community created a &#8220;<a href="http://forums.heroesofnewerth.com/showthread.php?t=25883">Mod Manager</a>&#8220;. The tricky bit is that mods needed to be in a special format for the Mod Manager to be able to use them. The Mod Manager gained in popularity, and it became difficult to find mods in the original, non-Mod Manager format. The Mod Manager was written in VB.NET. Mac and Linux users were referred to Mono.</p>
<p>This situation went on for a while until another community member announced <a href="http://forums.heroesofnewerth.com/showthread.php?t=111678">a mod manager written in Java</a>.</p>
<p><strong>The Story</strong></p>
<p>So, what do you think happened? Keep in mind we are talking about a commercial game community here aimed at the hardcore gamer. These are <strong>not</strong> &#8220;freetards&#8221; or Free Software &#8220;zealots&#8221;. In fact, as a group, I&#8217;d say they are less likely to be concerned with Free Software issues than the average user &#8211; certainly not more concerned!</p>
<p>For giggles, here&#8217;s a sampling of the reaction from Windows users:</p>
<blockquote><p>How will this be better than the Hon_MadMan manager that is already out? That one already has a nice UI, as well as lets the user know when to update mods and re-apply them when a new patch is released. Maybe you have some more/better ideas to implement, but I think as far as managers go, I think we&#8217;re set&#8230;</p></blockquote>
<blockquote><p>We all have a mod manager, with a nice UI, nice function, why bother porting it to JAVA (yeah it&#8217;s the JAVA)</p></blockquote>
<blockquote><p>buuut JAVA is sloooooooooooooooow</p></blockquote>
<p>Overall, there is a large and vocal contingent slamming the choice of Java &#8211; usually on performance grounds &#8211; which is funny because the application is small and lightweight, so the language hardly matters; and the people doing the criticizing obviously have little to no serious programming experience. Not to mention: the &#8220;original&#8221; Mod Manager is written in VB.NET, not freaking assembler.</p>
<p>And here&#8217;s a sampling of the reaction from Mac/Linux users:</p>
<blockquote><p>Maybe because Java support all platforms? Not only Windows..</p></blockquote>
<blockquote><p>I think java is better than 10+ package dependency of mono for linux.</p></blockquote>
<blockquote><p>As someone who has two macs with HoN on them (and one PC), I&#8217;m for this.<br />
Saying that a nice UI is a plus is obvious to most people, but using mono makes everything look like windows 95.<br />
TBH it seems like this is going to be the &#8220;mac version&#8221; of the modman, as using mono is incredibly confusing to most mac users (yes I&#8217;m implying that most mac users aren&#8217;t very tech savvy).<br />
In summation, +1.</p></blockquote>
<blockquote><p>Yeah, I&#8217;ve been thinking of throwing something like that together since I&#8217;m allergic to .NET/Mono. I&#8217;ll get around to it any day now, I&#8217;m just going to finish a few games first. :S</p></blockquote>
<blockquote><p>Works fine for me. Even though it&#8217;s Java, it&#8217;s HEAPS better than the mono version, which is basically unusable for me on Mac OS.</p></blockquote>
<blockquote><p>I&#8217;ve been using this mod manager since mono won&#8217;t work correctly on this computer.</p></blockquote>
<p>So, are the Linux/Mac gamers here that don&#8217;t want to use mono &#8220;zealots&#8221; and &#8220;freetards&#8221;? Of course not. In the context of cross-platform capability, <strong>developers might like the idea of Mono because of what it promises &#8211; but users don&#8217;t like Mono because of what it delivers.</strong></p>
<p>You can only get the full &#8220;benefits&#8221; of .NET if you are on the Microsoft Windows platform. <strong>This is by design</strong>. We have the memos &#8211; court evidence &#8211; where Microsoft lays out again and again the strategy of releasing a small sub-set of .NET, but reserving the &#8220;good bits&#8221; for Windows. We see this all the time in the real world (ala Moonlight being useless on any site that actually matters). This documented strategy absolutely destroys the notion of .NET or Mono being a &#8220;cross-platform&#8221; framework. <strong>It can not and will not be, because Microsoft will not allow it</strong>.</p>
<p>And that is granting the rather large assumptions that .NET is well-designed enough to do so and developers want a Microsoft-controlled framework, even if Redmond would allow it!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.the-source.com/2010/10/rejecting-mono/feed/</wfw:commentRss>
		<slash:comments>13</slash:comments>
		</item>
	</channel>
</rss>

