Wednesday 11 August 2010

Are Intel subverting

Well... there's a "challenging" blog title :)

Please read on and allow me to explain.


So what's making me risk offending one of the powerhouses behind MeeGo?

First off, let me say that I think the answer is "No"; but I do think there's a problem and it should be solved.

So having hopefully gotten your attention; what's the problem? Well, quelle surprise, it's that inconvenient "openness" again.

MeeGo is an open distribution; I don't think that's really in doubt. However there have been many discussions on what makes something open and I'd like to add another: "Inclusiveness".

For the record : In the remainder of this post I've included issues that I've seen raised that I may not personally support.


The question is ... who gets to use the builds that are produced at Well, technically "anyone", but practically "only people who've bought recent Intel hardware".

Why? Because the builds are optimised for the Intel Atom processor; not a generic x86.

So what's the impact of this?

Pros: Less CPU usage for some functions (3D and audio codecs AFAIUI get +20% performance on certain tasks)

.... that's it

Cons. Well machines with a non-Atom CPU running MeeGo netbook edition may boot up but often fail to run. Additionally non Atom machines can't easily develop for MeeGo (eg the image building app uses ssse3 instructions inside somewhere.)


If a developer wanders over to look at MeeGo and sees that she needs to buy an Atom netbook to run it then: "Oh, I need special HW to run it? Ubuntu just runs on my laptop. Bye MeeGo, hello Ubuntu."

Making it hard to use MeeGo is *not* inclusive.


The way MeeGo is built any binary could contain SSSE3 instructions; however which ones actually do depends on the optimisation flags used, the compiler version and the source code and and a change in any of them can add or remove instructions.

Essentially it's "random" - or at least not humanly determinable if a given application will suddenly choke on non-Atom hardware.

In irc Thiago scanned the Qt binaries to try and find any SSSE3 instructions. When he ran a quick and dirty analysis he couldn't find any SSSE3 instruction in QtCore and QtWebKit; and found a total of 4 SSSE3 instructions on QtGui - that's many 10s or 100s of Mb of binary code and only a handful of instructions.

So given the entirety of Qt uses *4* instructions there was a challenge to the "performance benefit" it offers by using these options "across the board".


Given is supposed to be open and to minimise barrier to entry this exclusion seems wrong.

MeeGo is managed by the Linux Foundation and I was under the impression that we had a Linux Foundation managed build service at; so why are we building for exclusivity and not inclusivity?


My understanding of the business model is that Nokia and other vendors would have an internal OBS to allow them to tailor and optimise MeeGo for their commercial product

MeeGo's model is that Intel, Nokia and others (as vendors) have their own internal build service (OBS) to optimise for a commercial product so why does Intel get to optimise for Atom on the build service?

Why do we optimise for only Atom machines on the builder? Why isn't that done on Is Intel essentially using to make "the Intel MeeGo" not "the community MeeGo"?

Obviously, as a fallback the community OBS is a potential place for this generic build but that was *not* the point. We have often been told that MeeGo *is* the community.


One point has been of the "cost" of the shared infrastructure and Intel employees having said that Intel should not be burdened with the cost of supporting other arch/platforms/builds.

There's some validity to this - and I don't think the community would object in the slightest to seeing optimisations for Atom made available *as well* as a generic build.

One question is: Is MeeGo an open and inclusive distro? Who dictates the commercial aspects of the "shared resources" and who gets to dictate what is and is not on the agenda.

One argument has been "Intel contributed the hardware and they want it optimised for their platform"; However that's not a community platform; that's a vendor specific build platform.

And are we seriously saying that a vendor producing a version of MeeGo for a non-Intel based x86 device is going to have a problem rebuilding with appropriate gcc flags?


Add a 'generic x86' target to the build architectures. This will form the basis for more inclusive MeeGo variants.

Allow the builder to create targetted binaries for some hardware; this is going to become a requirement as more hardware appears.

As we know: 'optimized for Atom' sells and attracts developers to the platform and a set of development hardware, etc..

But surely we can be "optimized for Atom" without excluding non-Atom users.

This means anyone with a non-Atom device could at least start MeeGo on eg an AMD desktop. As Arjan says: "I and several of my coworkers run MeeGo to develop MeeGo" "it's still very much intended to be a quite complete *client* PC linux"

Works for everyone

Well, isn't that the job of is supposed to be open and to minimise barrier to entry - lets help it do that


The point is that MeeGo should be doing a generic i586 build

Not Intel, MeeGo