Tuesday, May 11, 2010

Android vs. MeeGo: two approaches to competitively leveraging "open source"


The SDForum recently sponsored a presentation on MeeGo, the Intel-Nokia collaboration to develop (yet another) Linux-based open source operating system for mobile devices. In this case, it's a merger of "the best of" Intel's Moblin with Nokia's Maemo platforms that was announced at the Mobile World Congress in February.

While Google's (and the Open Handset Alliance's) Android is coming on strong in challenging mobile OS incumbents, already surpassing the iPhone by some estimates, there seems to be no end to these efforts to launch new OS platforms - some "open" and some proprietary. A few additional examples:

Open: LiMo, Symbian
    Closed:(Samsung) Bada, (Motorola) Azingo 
      Though there are many questions to explore in all of this, I thought it would be interesting to start with a high-level comparison of the MeeGo and Android architectures, to see what differences and/or similarities exist. Maybe we can then surmise a why to go with the what.

        Starting at the bottom, both MeeGo and Android developed modifications to the Linux kernel. Google added drivers for handset applications, while also optimizing the power management and IPC "Binder" to support  devices with limited CPU and memory resources. While Android's focus has been on porting to the ARM-based CPUs that dominate mobile devices, with an OHA membership that includes MIPS, Qualcomm, TI, Nvidia, Freescale, etc. (as well as Intel),  the list of supported processors continues to grow. 

        One of the differences in MeeGo is that it is an open source project "managed" by the three year old Linux Foundation. Though the Linux Foundation includes many of the same members as OHA, it should come as no surprise that there are currently no other processor or semiconductor companies publicly supporting MeeGo.  However, in a presentation at the recent Linux Foundation Collaboration Summit, Intel claimed that MeeGo supports ARM architectures while at the same time stating that:
        "Silicon vendors are responsible for providing the hardware adaptation software

        (the gray wrapper that you can see in the MeeGo architecture diagram),  and noting that "Intel provides the complete solution for Atom-based platforms".

        So, at this point it's not clear exactly where that ARM support is going to come from.

        Looking at the middleware of the two software stacks, as one might expect - there is a lot of functional similarity between the Android libraries with their hardware abstraction layer and the MeeGo Services components. In fact, some of the exact same components are used; such as the WebKit for browsers, the Bluetooth connectivity manager, OpenGL support, etc.  Differences start to stand out when we move over to the runtime layer.

        Android employs their Dalvik virtual machine, with application code compiled from Java. A Native Development Kit (NDK) is also offered for high-performance applications that must use C++, such as games. The MeeGo operating system is primarily based on Nokia's Qt platform and the Qt Creator, with applications written in C++. Secondary support for Web runtime development in HTML and Java script is also described. Qt is Nokia's cross-platform development environment (IDE), which purports to enable porting code across platforms that span Linux,  Mac OS X, Windows CE, Symbian and now MeeGo.

        Whereas Android development will primarily be done in the open source Eclipse IDE, it's important to note that Qt requires a commercial developer's license for any application where you don't want to give away the source code.
        The Qt Commercial Developer License is the appropriate version to use for the development of proprietary and/or commercial software. This version is for developers who do not want to share the source code with others or otherwise comply with the terms of the GNU Lesser General Public License version 2.1 or GNU GPL version 3.0.
        This is no small difference. A license for one developer to use on one OS is priced at $3,695!

        Moving up to the top of the stack, we can compare the Android application layer to the MeeGo "User Experiences" (UX). MeeGo is designed from the outset with pre-packed reference platforms that go beyond smartphones - targeting netbooks, handheld, in-vehicle, connected TV, and media phone applications.

        The Android ecosystem has rapidly expanded into all these spaces independently of Google's efforts. These vertical market packages stem from Intel's strategy to develop embedded applications for their processors.

        In Android, every built-in application can be replaced. In MeeGo, developers are prohibited from doing so. MeeGo allows the UX to be customized, but with the following restrictions:
        • MeeGo stack must be provided in its entirety.
        • All packages based on MeeGo sources.
        • Components can be added on top of MeeGo stack.
        • Must include UI framework and user interaction model per profile.
        MeeGo is designed to prohibit fragmentation and ensure application compatibility to any MeeGo-based device. Use of the MeeGo brand will be based on meeting the specifications of the MeeGo compatibility program.

        The first open source version of Android (1.5) was released concurrently with the availability of the first Android phone - the T-Mobile G1. There are also unlocked developer phones available. With MeeGo, the effort is currently focused on adapting the Nokia N900 from Maemo to MeeGo.

        Finally, there is the issue of governance. Much has been said and written about Google's control of Android. While OHA participants contributed to Android, the release timeline and content is completely controlled by Google. MeeGo implies more "openness" by operating under the auspices of the Linux Foundation.

        MeeGo™ is an open source project created by merging the Moblin and Maemo software platforms, and is led by the MeeGo Technical Steering Group (TSG). The governance model is based on the principles of simplicity, efficiency, and transparent collaboration.
        However, while MeeGo is open to other contributors, 

        Much like most open source projects governed by a benevolent dictator, the MeeGo project will be led Imad Sousou (Intel) and Valtteri Halla (Nokia).

        SUMMARY

        It would appear that "OPEN" has become quite a loosely defined (and promiscuously used) 4-letter word!

        On the one hand - Android is so open that it has been modified, fragmented (or diversified if you prefer), and spun off into eBook readers, tablets, set-top boxes, connected TVs, home media phones, and more. Much of this has happened outside of Google's control, in a span of just about eighteen months since first release. The total number of applications in the Android Market is reported to now exceed 50,000.  The Android ecosystem -  beyond membership in the Open Handset Alliance, now encompasses a growing diversity of semiconductor manufacturers, wireless operators, software and "commercialization" companies, consumer electronics manufacturers and innumerable application developers. OHA has spawned the OESF, or Open Embedded Software Foundation.

        It is very interesting to contrast these two approaches to leveraging "open source". I think that the comparison raises numerous questions to explore further. Amongst the questions:
        • Does an "open" ecosystem require diversity? 
        • Or... can "open" co-exist with conformity that is enforced by 'benevolent dictators'?
        • Is fragmentation/diversification a bad thing?
        • Can any commercial ecosystem be truly open?
        • Philosophical arguments aside, since we are not talking about philanthropic ventures, which is the more successful model? 
         Clearly, Android is a huge success. Perhaps we should just stop abusing the word "open" when it comes to these industry efforts, and just describe them by what they are based on - "free source". That is certainly more accurate I think. Both Android and MeeGo have their origins in "freesources".

        At the SDFourm event, Jim Zemlin - Executive Director of the Linux Foundation, said that the #1 reason that industry has turned to Linux is because it is free. This is important he said, to address the "rising cost of innovation, while developing compelling user experiences".

        Jim went on to define these requirements for success in "Open Source" industry collaborations:
        • Must be able to be custom branded
        • Must have lightweight neutral governance
        • Span multiple architectures
        • Friendly to operator business models
        • Tools must be open source
        • Strong set of uniform APIs

        I would add to this list that the initiative must be capable of exciting and growing an ecosystem. Critical mass is involved. With Google's lead, I think that Android comes with a strong built-in attraction to follow the lead of the world's  #1 internet company, to take advantage of the shift to mobile connectivity.  Though both "Open Source" initiatives have their shortcomings, today I would say that Android gets a higher grade on this checklist than MeeGo does.

        More questions:
        • Is there a similar attraction to participate with the #1 (worldwide market share) cell phone company - Nokia, and the #1 semiconductor company - Intel?  
        • Would the two companies be better off by simply adopting Android? 
        • Is Nokia cannibalizing Symbian?
        It will be interesting to watch further developments.

        contact me: mike.demler@eedailynews.com
          Follow me on Twitter: MikeDemler

          View Mike Demler's profile on LinkedIn

          7 comments:

          Joel West said...

          I’ve been waiting for this comparison for a long time: it's great you bring out the differences.

          However, under the link you provide, I believe most developers can use the LGPL and not distribute their own source code -- they only have to provide fixes to Qt.

          One clause seems surreal:
          You must purchase a Qt Commercial Developer License from us or from one of our authorized resellers before you start developing commercial software. The Qt Commercial Developer License does not allow the incorporation of code developed with the Qt GNU LGPL v. 2.1 or GNU GPL v. 3.0 license versions into a commercial product.

          So what if a student hacker writes something with the GPL license and then brings that code with them to their new job? Do you have to throw it out? Use a clean room approach?

          Mike Demler said...

          Hi Joel,

          Thanks for your comment.

          Since writing this I've been following the (very active) discussions in the MeeGo community. I may have to do a followup.

          I wasn't plugged into Android pre- 1st release, but I can't help wondering if it was as chaotic as what I see in Maemo. There is a flurry of activity concerning the development of the MeeGo port to the N900, which is a TI OMAP (ARM) based device.

          In response to some of my questions, Nokia let me know that they have a "long standing relationship with ARM". However, it appears that the N900 development work is being led by engineers from Intel.

          Interesting.. eh?

          -Mike

          bzh said...

          Nice article, but a few comments:

          -"Whereas Android development will primarily be done in the open source Eclipse IDE, it's important to note that Qt requires a commercial developer's license for any application where you don't want to give away the source code."

          This part is completely wrong. It used to be like that a few years ago. But then Nokia released Qt under LGPL. It means that you can keep your code closed source with only those restriction :
          1/ Every modification to the Qt library itself must be released under LGPL (No big deal since most apps devs won't modify the library - eventually they will propose a patch ).
          2/ No static link compilation between your program and the library (no big deal, especially for phones where the library is already installed)

          -"So, at this point it's not clear exactly where that ARM support [for MeeGo] is going to come from."

          The new Linaro foundation will do that...

          Mike Demler said...

          Thanks for adding the comment "BZH". Dr. West had noted the LGPL provision earlier, but also pointed out that it is restricted to use on non-commercial products. So I'd say that it's not "completely wrong", and the link I provided is still currently valid on the Qt website.

          As regards ARM and MeeGo, I see that work continues in the developer community on an N900 port - but without ARM's participation. The same kind of thing had happened for Android on Atom processors, until Intel recently agreed to support it officially (e.g. Google-TV).

          Could you elaborate on how you see Linaro connecting with MeeGo?

          deluded said...

          Nokia's page states:


          Qt GNU LGPL v. 2.1 Version

          This version is available for development of proprietary and commercial applications in accordance with the terms and conditions of the GNU Lesser General Public License version 2.1.

          Support services are available separately for purchase.


          I'd take that as 'you can release commercial applications, providing you don't mess around with the Qt library itself..

          Abhay said...

          There is one important point which is overlooked.

          Because of DVM android is a fork of linux while Maemo, Meego are still part of the Linux foundation which means that all applications from linux can work on meego with changes to UI while it is not the same case with Android.

          Mike Demler said...

          Abhay said: "There is one important point which is overlooked.

          Because of DVM android is a fork of linux while Maemo, Meego are still part of the Linux foundation which means that all applications from linux can work on meego with changes to UI while it is not the same case with Android."


          Abhay, I think that distinction is an excellent argument in favor of Android. The Android OS was optimized for the smartphone form factor. Opening it up to "all applications from linux" would be a disaster. As you pointed out, it would take at least some "changes to UI". Also, the MeeGo platform will not allow just any Linux app to claim MeeGo compliance.