Summary:

The Google Chrome team should build the Linux front end for Google
Chrome using Views and Gtk rather than using Gtk alone.

Operational Details

This week, Elliot will continue to stub out some of the basic widget
and top level window framework. I will continue vacuuming some of the
other constructs we have (NativeControl and a few things in browser/).
I've put together a basic work list that will bring almost everything
up under the label "views-linux":
http://code.google.com/p/chromium/issues/list?q=label:views-linux
Feel free to sign up for aspects that you're interested in working on.

Rationale

>From a product perspective, the Google Chrome leadership has a strong
desire to have the browser that Google delivers as "Google Chrome"
share the clearly identifiable aesthetic of Chrome on other platforms.

On MacOS it is possible to do this while blending in fairly well with
the surrounding environment. The prototypes that Cole has been
building and that have been making their way into the Mac ToT bear
this out. On Linux, the variety of window managers in use mean that to
achieve our unique skyline, in all likelihood the window manager frame
would have to be disabled and we would provide our own. Because there
isn't a consistent window manager appearance, there's no stable target
for what the browser frame and hence UI (which derives its appearance
from the frame) should look like. Because of this, the Linux team has
been copying the Windows UI appearance using Gtk and friends for the
widgets, layout and rendering.

It's my opinion that the engineering work in doing this is not worth
it considering the tradeoffs:

- It requires maintaining a front end that looks identical to Windows
but which has entirely different code, which includes writing a new
custom layout and event propagation system for things like the
TabStrip, where one already exists on Windows.
- Regardless of whether the underlying browser UI were implemented
entirely in Gtk using its own layout system or with a combination of
Gtk+views, it's likely that there'll be a number of Linux users who
don't like what we produce because to get the "Chrome look" we will
have to disable the frame and use non-standard button appearances.

For these reasons I think the best investment of time is to bring up
Views so that we can share code with Windows. We will retain Gtk
widgets everywhere where the Windows front end uses Windows Common
Controls - for native buttons, checkboxes, text fields, some menus,
etc - so that we don't need to roll our own IME or accessibility.
Views is used to provide the containing layout engine and custom
rendering system.

Over the past week Elliot and I have been investigating bringing up
the the base elements of the Views system on Linux. I had some reason
to believe that it may be easier to do so now since over the past
month or so I've made some improvements to the views::Window class
hierarchy that simplifies the arrangement considerably. From the work
Elliot's been able to do, I believe it should be possible to bring up
Views widgets relatively easily. I am investing time in helping clear
the path in the Views code to do so (See my earlier emails about
native controls).

What this means for Gtk-only and Qt:

I am actually very supportive of Gtk- and Qt-only front ends. I am
supportive of them not looking like Chrome if it means they fit in
better with the GNOME and KDE environments. I would love to see the
Chromium project deliver (and host the source of) something that each
of those environments feel is worthy of being a first class browser
for their system. This work should not be encumbered by having to have
Chrome's exact aesthetic. My comments above are related to where I
think the efforts of the Google development team's effort should be
directed at this time.

-Ben

--~--~---------~--~----~------------~-------~--~----~
Chromium Developers mailing list: chromium-dev@googlegroups.com 
View archives, change email options, or unsubscribe: 
    http://groups.google.com/group/chromium-dev
-~----------~----~----~----~------~----~------~--~---

Reply via email to