By Jonathan Corbet
July 8, 2009
On July 7, Google
let
the world know about a project called "Google Chrome OS." It is a
new operating system, meant to run (initially) on netbooks. As would be
expected from Google, there will be a strong emphasis on web applications;
much work is also apparently going into fast booting, security, and a
simplified user interface. Google promises to open-source the code toward
the end of the year; commercial shipments are expected in the latter half
of 2010.
Much of the mainstream press sees this move as a frontal assault on
Microsoft, and that it may well be. Microsoft appears to have regained the
upper hand on the netbook platform for now, but Windows does not come
across as a perfect fit for that sort of platform. But it might not just
be Microsoft which feels discomfort from this new operating system; it's
not clear that this effort will be good for Linux either. Much depends on
how Google works with the free software community; past experience suggests
that there could be cause for worry.
Those who would criticize Linux like to point at the vast number of distributions available.
They charge (rightly) that fragmentation did a lot of damage to proprietary
Unix; Linux, they say, is far more fragmented than Unix ever was. In
truth, fragmentation has been a relatively small problem for Linux. It is
worth spending a moment to look at why.
One of the reasons, clearly, is that all Linux distributions are based on
the same kernel. Some distributors apply more patches than others, but it
is, for all practical purposes, the same platform underneath. The
accelerated development process adopted for 2.6 has helped in this regard;
useful code gets into the mainline quickly enough that there is little
reason for distributors to patch significant functionality into their own
kernels. On top of that, the "upstream first" ethic ensures that
enhancements to the kernel are available to all distributors and, thus, to
all users.
On top of that, much of the "plumbing layer" on top of the kernel is also
common to all distributors. The availability and management of libraries
works well enough that it's often possible to move complicated binaries
between distributions and expect them to run. That is a high degree of
compatibility for a "fragmented" platform. The end result is almost zero
lock-in for most Linux users. The ability to move to a different
distribution while still running Linux is one of the greatest strengths of
the platform; it is a direct manifestation of the value of free software
for users. As long as the ability to switch remains such a fundamental
feature of Linux, we need not fear fragmentation.
So the real question is: will Google's new operating system play by the
rules which have provided such consistency across Linux distributions? The
real answer won't be known for some time. But Google Chrome OS will not be
Google's first Linux-based operating system; that distinction belongs to
Android. So perhaps we can get a foreshadowing of how things will work by
looking at what was done with Android:
- The kernel was indeed Linux, but what Android ships is far removed
from a mainline release. A great deal of code was added behind closed
doors and committed to the platform before any sort of public release
or review. Much of it has no real hope of getting into the mainline
kernel ever. Even now, Android kernel code, while being available in
a public git tree, is developed separately from the mainline. With
some small exceptions, nobody from Google is making any real effort to
get Google's code reviewed in the wider community or merged into the
official kernel.
- The plumbing layer is totally different; Google rolled its own C
library for Android. The motivations for this work are not entirely
clear, but it does seem that Google has gone out of its way to avoid
GPL-licensed code, and code owned by the Free Software Foundation in
particular.
- Several of the applications are proprietary.
The end result is that, while Android is based on the Linux kernel, it does
not, in its default form, feel much like a Linux system. Ordinary Linux
applications do not just run on Android. With effort, one
can supplement Android with the features needed to run "normal" Linux; one
can even put a full Debian
environment onto it. But it's an add-on, not part of the platform
itself.
One could argue that Android sits in a special niche: it runs on mobile
phones and must, among other things, operate in a way acceptable to handset
manufacturers and cellular providers - not always the most accommodating
sorts of companies. Google Chrome OS is, instead, aimed at desktop-like
applications. It will operate in a niche where ordinary Linux can be
found; perhaps, as a result, it will be more like ordinary Linux. Time for
a closer look at the announcement:
- Code is to be released "later this year." But this is a project
which has been underway for a while, and which will, undoubtedly,
proceed quickly during this time. So we are not starting with
community-based development; we'll get another code dump some months
from now.
- Google is "completely redesigning the underlying security
architecture of the OS." How that security model will be
enforced is unclear - it could involve kernel changes, or it could be
embedded within a virtual machine. Either way, it does not sound like
a feature which will enhance compatibility with other Linux
distributions. Security is important, and it does not come out well
when designed behind closed doors. If Google has a better way to do
security on Linux, it should be sharing its ideas and getting
community input now; presenting a new security model as a fait
accompli months from now will not be helpful.
- There will be a new windowing system; no more details than that are
available. How new and different will it be? Will Google Chrome OS
be able to run X applications?
The picture which emerges looks a lot like Android: a platform which takes
a number of pieces from Linux, but which is not like Linux, and which does
not really give back to Linux.
Perhaps that picture is wrong. Perhaps Google is secretly working with one
or more Linux distributors, or with projects like Moblin or Maemo, which are doing a great job of
achieving many of the objectives Google has set for its new operating
system. Just maybe, Google is working to strengthen the projects its work
is based upon, rather than trying to supplant them. Possibly, when Google
says:
We have a lot of work to do, and we're definitely going to need a
lot of help from the open source community to accomplish this
vision.
it really means to work with the community and not just absorb work from
the community. Your editor very much hopes so, but your editor also
recognizes that this would require a different approach to the community
than Google has shown in the past.
Android is a good thing: it has brought Linux to a new class of platforms
and created a new development community based on free software. The
Android developers have taken the time to rethink how the system works and
to attempt some innovative new approaches; we can never have too much of
that. There can be no doubt that the same will be true of Google Chrome
OS; it will be interesting to see what they come up with. But also can be
no doubt that Google Chrome OS could be a lot better if it were developed
within the community instead of on top of it. Your editor wishes Google
the best of luck with this ambitious project and hopes that the larger
community will truly be able to be a part of it.
(
Log in to post comments)