The “Mono War” is unproductive.
For some, I’m sure this comes as a startling realization, and for others, it’s stating the obvious. However, the point needs to be reiterated – the “Mono War” as-is serves no practical purpose.
From my diamond-encrusted Microsoft-supplied throne, here is what I see when I survey the “War”:
- Immovable, entrenched, irreconcilable viewpoints amongst combatants
- A degree of outright lunacy exhibited by both sides – but (sorry) mostly by some on the “anti” side
- A willingness to canonize anyone with a matching viewpoint, rather than use of independent thought and research
- Demands from the “anti” side that they be obeyed
- Demands from the “pro” side that the “anti” side shut up and go away. With added smugness.
- No fear of bending, distorting, or even denying reality to support an opinion
- An embracing of collateral damage as long as the main goal is achieved
It is these points which I consider unproductive. Nobody is going to change their positions based on angry or smug blogging, nobody is going to drop everything to work on things for kids with entitlement complexes, and nobody is going to give up on their freedom to kick up a fuss.
So, here I come to save the day. You’re welcome. I’m going to give the “anti” folks some suggestions on how to wage a productive war, one with results rather than recrimination. I even took the first step myself, although it was hardly well covered in the media. I’ll get to that a little later.
Step 1: Accept that some people feel differently to you
I know this may be hard to stomach, but no matter how much you shout, no matter how many times you point to assorted legal submissions from the 1990s, no matter how many times you cite cases such as TomTom or Buffalo, nobody is going to take your arguments and change their behaviour. Some people simply don’t have the same scale of concern or fear as you. Accept this. Don’t attack people because they don’t see things the way you do, as it’ll only make their resolve stronger. Simply accept that they don’t agree. If it makes you feel better, write them off as stupid in your mind. Not that I ever do this for anyone. *cough*
Step 2: Understand why people do what they do
Not everybody contributes to Free Software for the same reasons – although by and large the biggest motivator is “to make it better for myself”. People package stuff they use themselves – or should damn well do if they expect package quality to be maintained. People write apps for themselves, they submit patches to add features or fix bugs for themselves, and so on. This is not the only motivator, but it’s the primary one. There is no ulterior motive – unless you consider “improving this for my own use” to be ulterior. Yes, that even includes the recent Hyper-V drivers – where it was in Microsoft’s interest (for selling Hyper-V to displace VMWare) to “contribute” according to the rules of Free Software contribution. Imagine, if you will, that people like, say, Banshee because they genuinely prefer it to Rhythmbox – not because they’re secret dark agents of teh Micro$haft trying to “spread Mono”.
Step 3: Understand governance
One of the biggest mistakes made by the “anti-Mono” team is the belief that abuse on forums, blogs, mailing lists and newsgroups is how change happens. I hate to break it to you, guys, but it’s not. Every distribution of Linux is put together by an individual or team, and every distribution has specific processes in place which determine what constitutes a package in the repository, a default package, and so on. Some distributions are dictatorships, some distributions are direct democracies, some are lead by layers of bureaucracy. If you want to fight against something, you need to do it within the system. And some systems make it easier than others to fight.
Here are a couple of examples, to get you going: In Debian, the final decision to include a package in the archive or not is made by the ftpmaster member who audits the package. This audit is re-done every time the package changes the binary .deb files it produces (but not for every upload), and that overall control of what is in the archive remains with them. The decision is made on a simple basis – does the license of this software permit its inclusion and distribution in Debian, under the terms of the Debian Free Software Guidelines. The decision over which packages to depend (or not) in a given metapackage is at the complete sole discretion of that package’s maintainer – so for the GNOME metapackages, that’s the GNOME team. And the decision over which packages to include in the default install image are made by the installer team, heavily influenced by (but not necessarily exactly the same as) the prior decisions of the GNOME team. Packages are solely owned by their maintainers, remember that – meaning the only way to remove Mono (or to reclassify it as non-free or whatever is today’s favourite attack) without cooperation of the package maintainer is… well, there’s a way to do it, but it’s a nuclear option. A Debian Developer (and only a DD, as per the Debian constitution) can call for a General Resolution. It’s detailed in this page right here. But in essence any vote to remove Mono is a vote of no confidence in the abilities of the (thorough and hard-working) ftpmaster team – and a vote that developers should no longer consider their packages to be their own property. Good luck passing any such resolution, especially without mass resignation from the Project. There’s the Debian route. First, contribute enough to be advocated as a Debian Developer, then become one, then file and win a GR to remove Mono. Good luck with that.
Next is Ubuntu. And here, you have an equally tough fight, but for different reasons. Ubuntu has a similar role to ftpmaster, called an Archive Admin – but by and large, Ubuntu trusts decisions made by ftpmaster in Debian. As a result, arguments beyond mere licensing are delegated upwards to a committee type organization called the Technical Board. The TB is the highest law in the land – it’s made up from Canonical employees (including Shuttleworth) and community members – and according to the paperwork, the only extra power Shuttleworth has here is the casting vote in a tie-breaker situation. The TB meets on IRC every couple of weeks or so, and discusses topics raised with them, rendering “final for now” verdicts. The TB have the authority to remove Mono from not only the default install (which would override the Desktop Team’s wishes), but also the entire distribution. However, the TB has already recently reached a near-unanimous verdict that Mono is fine. Sorry, but see step 1 above. If you want to change their minds, then the path is clear – join the TB. They had a nomination period recently (I don’t think any anti-Mono folks signed up), and will be doing so again every now and again. Become a big enough contributor to Ubuntu to make a successful bid to join the Technical Board, and then once on the board, discuss with your peers why you feel Mono should be removed – and win that argument.
Noise on forums is just noise.
Step 4: Understand the relative value of contributions
There are those who have characterised this war as a war between “users” and “developers” – and to an extent that’s true. Everybody is free to make their own decisions regarding their computing experience, and to act upon those decisions. However, the question of who makes that decision affects how far-reaching those decisions are. If a developer makes a decision, that has more wide-reaching results than if a forum poster makes a decision. If a packager decides on something, the effect is wider than if a “mere” user decides something. Those decisions may not be the same as yours (see, again, step 1) but you need to understand that those decisions, those contributions, are far reaching not because of some conspiracy, but because the person doing those things, has been assigned a greater degree of impact by the community at large. If someone is elected to a packager role, then their decisions affect anyone who uses those packages – which may include users, or other packagers, or other developers. If you are not a customer (see step 2) then they will behave however they like, and contribute however they like.
You cannot win a war with a packager with flames. You cannot win a war with a distro team with attacks. If you can’t beat ‘em, join ‘em – and make contributions which outweigh (e.g. render irrelevant) the contributions of those with whom you disagree. Contributions don’t need to just be programming or packaging – many other roles are often overlooked but of vital importance to Free Software’s success, such as artists, translators, documentation writers, and so on. You can contribute in many ways – and whilst your contribution may not directly “hurt” what you don’t like, they can help what you do like – and indirectly win the “battle”.
Step 5: Pick your battles
I have seen it suggested in certain areas that some feel it is their “duty” to try to elicit global change in a single shot – to have their demands met absolutely everywhere at once, and they do so by fighting absolutely everything at once. I’m sorry to tell you this, but the “community” is bigger than you are (and don’t kid yourselves, Mono has a genuine community surrounding it). If you want to elicit change, then focus your efforts. Pick some specific way to contribute which will help your point of view, and only move on when that specific fight is won. Don’t want to see Banshee as a default music player app? Then focus on that – and do so in a positive way. In this case, that means things such as contributing to competing apps like Exaile or Rhythmbox such that they are definitely better and nobody wants Banshee to be the default.
Step 6: Lead by example, not by shouting
If you really, fundamentally feel that your needs are not met by contributing positively, or trying to elicit change via the right governance channels, then do better. That’s all there is to it. The folks behind, say, Linux Mint felt that their needs were not met (and could not be met for one reason or another) by “real” Ubuntu, so they lead by example and made their own distro. If you really feel your needs are not being met, then you can do the same. Make other apps better, or if push comes to shove, make your own distro. It’s really not hard!
In fact, to illustrate the point, I made one myself. It’s called “Chicken Little Remix” (absolutely not Ubuntu Chicken Little Remix as that would mean worrying about trademark policies), and you can download it from The Pirate Bay in i386 and amd64 formats. As a first cut, it’s simply a Jaunty Alternate ISO with all Mono-related stuff cut away – and it took me an hour to do. Imagine what the combined energies of the entire anti-Mono community could produce, with a little direction. CLR is my attempt to provide some direction – I’m happy to provide advice on how to modify packages and customize the Alternate ISO (something I have experience doing) as long as the name remains in place, but perhaps it could even be treated as a way for people who are “only” users to learn how to become “contributors” too, and make their voices in the greater community louder. Make the distro you wish those idiots in the Technical Board and Desktop Team were producing, and show them how it’s done. Set up a project on Launchpad, a website, make some art, tinker on packages, and make CLR 9.10 the most awesome distribution ever – without need for any of that messy Mono nonsense. The first cut took one person one hour – how much time does that give for the next release? Fill it with Gnote and Solang and AWN and $DEITY knows what else, and demonstrate through tangible contribution how unnecessary Mono really is.
Because when all’s said and done, simply shouting that the sky is falling won’t get you anywhere.