One of the amusing, and sad, things about mono apologists is they often find themselves doing things like defending Microsoft, hating on the GPL, or even adopting Microsoft-like FUD tactics. Take for example, the reaction throughout the mono community when Gnote, a C++ port of Tomboy, was introduced.

The context

Tomboy is a note-taking program, a sort of desktop wiki if you will. It is very important strategically because it is the only official part of the GNOME desktop that requires mono. It is this requirement that led Debian to add mono as a dependency to the gnome package. It is also why you will hear mono apologists talking up a note-taking app like it is curing cancer in Africa – because it provides them a crucial toe-hold into the the GNOME desktop environment and, by extension, most major and popular GNU/Linux distributions. It is this application that allows mono apologists to make the argument that the mono libraries are already being included, so why not put on a few more mono apps?

The problem

So, you can begin to see then, that a C++ port of Tomboy just won’t do. If there were a C++ port of Tomboy, then people would wonder why distributions needed mono at all. Say I wanted to install tomboy on my mainly KDE system (I have rhythmbox installed too because it is the best audio player around right now, despite what some people would have you believe):

jason@mono-free:~$ sudo apt-get install tomboy
[sudo] password for jason:
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following extra packages will be installed:
 binfmt-support cli-common libart2.24-cil libgconf2.24-cil libglade2.0-cil libglib2.0-cil libgmime-2.0-2a libgmime2.2a-cil
 libgnome-vfs2.24-cil libgnome2.24-cil libgnomepanel2.24-cil libgtk2.0-cil libgtkspell0 libmono-addins-gui0.2-cil libmono-addins0.2-cil
 libmono-cairo2.0-cil libmono-corlib2.0-cil libmono-i18n2.0-cil libmono-posix2.0-cil libmono-security2.0-cil libmono-sharpzip2.84-cil
 libmono-system2.0-cil libmono0 libndesk-dbus-glib1.0-cil libndesk-dbus1.0-cil libpanel-applet2-0 mono-2.0-gac mono-2.0-runtime mono-common
 mono-gac mono-jit mono-runtime
Suggested packages:
 monodoc-gtk2.0-manual libgdiplus libmono-winforms2.0-cil evolution tasque
The following NEW packages will be installed:
 binfmt-support cli-common libart2.24-cil libgconf2.24-cil libglade2.0-cil libglib2.0-cil libgmime-2.0-2a libgmime2.2a-cil
 libgnome-vfs2.24-cil libgnome2.24-cil libgnomepanel2.24-cil libgtk2.0-cil libgtkspell0 libmono-addins-gui0.2-cil libmono-addins0.2-cil
 libmono-cairo2.0-cil libmono-corlib2.0-cil libmono-i18n2.0-cil libmono-posix2.0-cil libmono-security2.0-cil libmono-sharpzip2.84-cil
 libmono-system2.0-cil libmono0 libndesk-dbus-glib1.0-cil libndesk-dbus1.0-cil libpanel-applet2-0 mono-2.0-gac mono-2.0-runtime mono-common
 mono-gac mono-jit mono-runtime tomboy
0 upgraded, 33 newly installed, 0 to remove and 0 not upgraded.
Need to get 11.7MB of archives.
After this operation, 38.7MB of additional disk space will be used.
Do you want to continue [Y/n]? HELL NO

So that is 38.7MB for a note-taking program. Also, I love the fact that it actually recommends winforms, which is 100% most definitely not covered in the ECMA standards. Now, say I wanted to install gnote:

jason@mono-free:~$ sudo apt-get install gnote
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following extra packages will be installed:
 libboost-filesystem1.34.1 libcairomm-1.0-1 libgconfmm-2.6-1c2 libgnomemm-2.6-1c2 libgtkmm-2.4-1c2a libgtkspell0 libpanel-applet2-0
 libpanelappletmm-2.6-1c2 libpangomm-1.4-1
The following NEW packages will be installed:
 gnote libboost-filesystem1.34.1 libcairomm-1.0-1 libgconfmm-2.6-1c2 libgnomemm-2.6-1c2 libgtkmm-2.4-1c2a libgtkspell0 libpanel-applet2-0
 libpanelappletmm-2.6-1c2 libpangomm-1.4-1
0 upgraded, 10 newly installed, 0 to remove and 0 not upgraded.
Need to get 3039kB of archives.
After this operation, 11.9MB of additional disk space will be used.
Do you want to continue [Y/n]? WELL I JUST MIGHT

So that is 11.9MB. Nice.

Now, let’s keep in mind that entire recent push Rhythmbox with Banshee sprang from the assertion that Banshee would save an entire 6.1MB (See Banshee in Ubuntu if you need details.) So surely this ~27MB savings would bring overwhelming support!

The spin

Well, first off you have to try to get that size difference taken care of:

The numbers may astonish C die-hards, but they’re true – similarly, Gnote’s binary is twice the size of Tomboy’s binaries, even though it has no plugins (it only appears smaller thanks to having no documentation).

Jo Shields, “Fitting the kitchen sink onto a CD

See, you can obscure the size by ignoring the size of all the required libraries! Clever little trick there. Also, some of that – hell, most of it really, is documentation. And large graphic files too. And some demo sounds. Don’t look behind the curtain! Another things to do could be to spread a little of that old creamy FUD around:

Our stance on Gnote is that it is counterproductive to maintain identical software in two languages. It will be harmful to the community, especially as these two apps inevitably diverge.

- Sandy Armstrong, Tomboy author, “Tomboy 0.14.1, the future, and a word about Gnote

Wow. A mono supporter spreading FUD against a competing Free and Open Source project calling it “harmful to the community”. Roll that nutbar of irony around your mouth a bit and taste the flavor!

Anyone thinking about distributing Gnote should consider the impact on users and their data.

- Sandy Armstrong, Tomboy author, “Tomboy 0.14.1, the future, and a word about Gnote

Ah yeah! Give me some of that good old Novell-Microsoft “interoperability”! Good for a thousand and one uses! You can get a feel for the mono brigades absolute commitment to making sure things like “best-of-breed” and “value to user” are decision criteria, and not things like “zealotry” or “politics” by reading comments to the above blog:

It almost makes me wish software patents were actually real and that Tomboy had one to stab Gnote in teh face with.

GNOTE is a troll and you should not feed trolls, GNOTE doesn’t care about you, it just wants to kill Tomboy and unlike Tomboy it doesn’t have motives to provide you best experience, I don’t even think it will stay on active development once it kills Tomboy

I have no problem with Gnote as an experiment for porting Mono code to C++. But as a released, supported product, it undermines our efforts in the community.

That last tasty one there from the Tomboy developer, graciously granting his blessing on a private, un-released, non-supported port. Truly, the spirit of Free and Open Source flows from the mono project like honey from the Promised Land. Here’s a thought: your efforts need to be undermined.

Moving on, another comment of brilliant insight and due weighty contemplation from our every classy friend, Jo Shields:

Being granted the freedom to do something doesn’t mean you need to be a dick about it.

The whole reason for gnote is fanboism and pettiness.

Gnote has hurt, rather than helped, the free software community.

The Drama

Of course, there’s a FUD to be spread to potential users of Gnote, as well. I mean, they might get to wondering why they can’t use a faster, lighter version of (what is from their perspective) the same program. Never fear, our hero Jo Shields is on the case:

Ignoring the legal issues that surround it, GNote is nowhere near as functional as Tomboy yet – it doesn’t support WikiWords, has no documentation, no syncing to anywhere, and no integration with any other apps. Its RAM consumption IS better (9.8M versus 23.4M out of the box), as long as you don’t mind the lack of functionality.

Legal issues? Oh my. Are we really seeing a mono apologist start hand-waving some “legal issue” FUD against a FLOSS project!?  In a different thread, there is this inflammatory anti-mono screed on the Ubuntu Forums clearly announcing an attack on mono and calling for support:

Gnote is my experimental port of Tomboy to C++

It is the same note taking application, minus things not done yet, boatload of addins and synchronization. Be patient they’ll come.

This will not stand! Jo Shields springs into action:

Re: Ubuntu PPA for Gnote (C++ port of Tomboy)
Still missing most of Tomboy’s features, and involving wholesale license & copyright violation
But remember, kids – stealing code is fine as long as it’s “one in the eye” for Free Software developers like the Tomboy authors!

The usual gang of mono apologists on the Ubuntu Forums prepare thoughtful commentary, always careful to keep within the Code of Conduct, which mono critics are well known for violating:

Wow just the other day I was thinking “Tomboy’s great but I wish they had used crappy, painful tools to write it in”. Now with gnote, the developers will be able to really focus on the nitty-gritty programming details of it rather than adding annoying features and stability. Awesome!!

i always laugh when people do such counter-productive things because they are afraid. Looks like FUD is in full swing. Way to go Vadi [PPA maintainer]!

so in future reference, if this does happen (legal action) don’t think for a second that it’s because the “author” of Gnote is getting slammed for porting tomboy to c++. he is going to get slammed because he’s using the code from the project against the wishes of it’s creators as defined in the tomoboy’s code license.

If Hub [author of Gnote] was after anything other than exposure and brownie points from the mental subnormals on FUD blogs like BN, then he wouldn’t have done the things he did. If he wanted to work *positively* with others, then he could easily do so.

Team Mono goes on (and on) at length in this thread on how Gnote is a violation of the licensing, how Gnote is an “aggressive fork”, calls the man a “dick” a few more times, plainly states that the issues are malicious and not a misunderstanding, insinuates that the anti-Mono crowd are hypocrites until of course someone who actually knows something about the LGPL license has a suggestion:

Wait. *You're* the SME?

Wait. *You're* the SME?

I heard the kids call this “getting owned”. Naturally Mr. Shields’ supporters, mono-men all, those paragons of fair-dealing and unbiased judgement immediately change their tune to welcome Gnote with open arms:

Even if the license thing is a non-issue (I don’t really know), gnote is still a spiteful, useless failure.

If you bother to read the entire thread and can stand the internet dramas, you’ll see Mr. Shields and crew soon begin to attack Rhythmbox (it hinders Banshee acceptance, don’tcha know), sling around personal insults and misinformation, and to be brutally frank, just shit all over the thread until it is locked by a moderator because a mono critic wants to ask a question! That’s right, though the mono brigade carried on for about 17 pages of ignorance, attacks, and outright lies it was the questioning of mono that caused the thread to be locked. (”Please quit trying to push forward your own agenda” is how the moderator put it. Staggering.)

…AAAnyway, a month or so passes, and someone posts about a review including nice pictures showing how similar Tomboy and Gnote are:

Tomboy and Gnote side-by-side

Tomboy and Gnote side-by-side

Jo Shields posts twice, once to say an old version wouldn’t install and days later to warn of a bug in Gnote. This is totally coincidental I am sure, a quick check of any thread concerning a mono-based application would find him posting bugs, too. Another mono-supporter posts to suggest Tomboy has a plug-in that Gnote doesn’t have yet. Most helpful and germane, these mono chaps.

I also find it amusing that our friend, the man who had the courage to stand up and say “Fuck you, Richard Stallman“, when no one else would had a taste for this flavor of FUD:

GNote represents the limit of FUD to me. Tomboy is awesome and Sandy Armstrong doubly so.

Yes, indeed. Awesome people and community.

This noble behavior is not limited to this single Tomboy/Gnote incident; it is SOP for most mono apologists. If you can stomach the invective and have the time, you can find enough examples to fill a blog. And then call that blog mono-nono.

The other side
To be fair and present both sides of the issue, I guess I should point out the screaming madness, the vile invective that the Gnote developer used to notify the world of his mono attack project, the destructive, illegal and poopie-filled Gnote:

In my attempts to fight my own boredom, as an unemployed hacker[1], I took on myself to do something: porting Tomboy to C++. It is actually not that hard, just a lot of work to do manually because there is over a dozen of thousands of lines of code. This show me that the door is open to reimplementing Gtk# software (or parts) in C++ with not too many problems, making it easy to have them available for C applications.

Shocking, I know! He even goes a step beyond all rational behavior, though, when applauded for his “idealism” and another mono port project is suggested:

@keshek: this is no idealism. This was just solving a specific problem and satisfying my curiosity. There is nothing coming next.

Madness! Has he no decency? No humanity?

Kidding on the square
Yeah, I try to take a light tone, especially on this because this behavior is so disgusting that if I don’t I’ll wind up actually getting angry. Here we have an unemployed developer, who decides to take up what sees as an interesting little project and is very publicly attacked from all sides. The Gnote FUD will likely never die, at least on the Ubuntu Forums.

Mono critics are the ones that generally face the charges of zealotry, or spreading FUD, or whatever other negative label gets slapped on them – and some are guily of that, sure. But, one of the key themes I hope I am able to establish with this blog is that some mono critics understand the issues, have reasonable and rational concerns, and aren’t all wearing tin-foil and peeking out from the blinds at the van across the street. Another thing I’s like to establish is that mono apologists not only do not have sound arguments or answers, but are quite guilty of the negative behavior they try to assign to critics. Finally, I would also like to establish that I am devastatingly witty and dangerously handsome as well.

AND! Let me be clear here: I don’t think most mono developers engage in this behavior. I want to draw a line between the mono apologists and the mono developers. It is the apologists, the promoters that are out there engaging in this sort of behavior. I think most of the mono developers are simply trying to develop applications. I may strongly dislike the platform they have chosen, but I don’t think most developers consider such things when choosing a platform, and I do not ascribe political or philosophical motives to those who do not express them.