<p>One angle not looked at here I think is that had google actually CHOSEN one the various ui methods they could have finally helped make that the dominate methodology for linux ui dev. Truly one of the great things about linux is its ability to adapt to such forces.</p>
<p>Ned</p>
<p><blockquote>On Jun 5, 2009 4:07 PM, "Brian Pitts" <<a href="mailto:brian@polibyte.com">brian@polibyte.com</a>> wrote:<br><br><p><font color="#500050">Richard Bronosky wrote:
> I think that Google's experience with trying to develop chrome for
> Linux...</font></p>I think the media's take on this story wasn't very accurate.<br>
<br>
When I read about Google's experience [0], I see Chrome developer Evan<br>
Martin calling the Windows APIs "kinda impoverished". Because of<br>
Window's deficiencies, Google wrote a library called "views" that<br>
implements their custom widgets and manages all the stuff Windows<br>
doesn't. Specifically, "various toolkits (Qt, Gtk, Wx, etc.) do pretty<br>
much exactly what views does while also including the widgets that views<br>
tries to wrap. If you're unfamiliar with the Windows API, you should<br>
know it doesn't provide any standard way of doing resizable layouts;<br>
apps typically implement custom code for it. Similarly for<br>
double-buffering. If you're unfamiliar with the Linux toolkit APIs, you<br>
should know that all of this stuff is built-in."<br>
<br>
So, they have this app that's built on top of an abstraction for the<br>
Windows API. How to get it running on OS X and Linux? Evan saw three<br>
possible approaches<br>
<br>
1) As close to Windows as possible, porting views.<br>
2) As close to native as possible, avoiding views.<br>
3) Something in the middle, hacking views.<br>
<br>
Their OS X porting team decided on #2. "A Mac UI<br>
shouldn't feel like a Windows" and thus they could completely ditch<br>
views and use Cocoa. In Ben Goodger'swords "the general consensus on<br>
that platform surrounding Cocoa as the UI toolkit, the high quality of<br>
available Mac software, past experiences of failures with cross-platform<br>
user interface toolkits on OS X, the exceptional capabilities of Cocoa<br>
(ask Cole for a demo), and the growing market share of the Mac platform<br>
in general" determined their approach.<br>
<br>
Now, what about their linux approach?<br>
<br>
Evan didn't think #1 would work. "Some parts just can't work as they do<br>
on Windows (we can't put tabs in the title bar -- heck, lots of people<br>
don't even have title bars on their windows)". It's not clear to me if<br>
this would have been possible on OS X either (meaning that there are<br>
deficiencies int he Linux toolkits) or not (meaning views was just very<br>
tied to Windowsisms).<br>
<br>
He prefered 2 or 3. Using GTK, theme colors, accessibility, focus, and<br>
keyboard shortcuts all "work for free". The question was "what to do<br>
with the main browser window and stuff like the star button popup, since<br>
that's all custom-drawn widgets and animations. You could imagine either<br>
doing a boring native-widget port of those or trying to figure out<br>
custom drawing" So, porting to linux requires reimplementing their<br>
custom widgets they implemented for Windows. That's hardly surprising or<br>
damning of linux.<br>
<br>
What seems to be getting all the attention is this comments from Ben<br>
Goodger, the head of the UI team:<br>
<br>
"this entire situation is a clusterf*ck. I am not happy with the<br>
technical constraints imposed by Linux and its assorted UIs on Chrome's<br>
UI and feature set... There isn't dominant consensus around toolkit and<br>
HIG, there seems to be variance in commonly used software as to how it's<br>
constructed and what it matches, and I've not heard anyone glow about<br>
how they can create the coolest looking UIs with GTK."<br>
<br>
He preferred option #1. His concern seems to be that Chrome retain its<br>
"distinctive Chrominess" across platforms as much as possible. On OS X<br>
he was willing to deviate because of the consensus around Cocoa and<br>
Apple's HIG, but since there's no consensus on Linux they should try to<br>
port views and replicate the Windows UI.<br>
<br>
I can see the appeal of this argument. They were able to make such a<br>
distinctive UI on Windows because it isn't a cohesive platform from a UI<br>
perspective. If Linux isn't either, why not just make all the same UI<br>
choices you made before. Porting the views code could be less work than<br>
rebuilding the UI using a native toolkit directly.<br>
<br>
However, the team porting it to linux "stood up and made their case for<br>
a GTK UI", so that's what is happening.<br>
<br>
[0]<br>
<a href="http://groups.google.com/group/chromium-dev/browse_thread/thread/b89ab99a0c848b89" target="_blank">http://groups.google.com/group/chromium-dev/browse_thread/thread/b89ab99a0c848b89</a><br>
<br>
--<br>
All the best,<br>
<font color="#888888">Brian Pitts<br>
</font><p><font color="#500050">_______________________________________________
Ale mailing list
<a href="mailto:Ale@ale.org">Ale@ale.org</a>
<a href="http://mail.ale.org/mai.">http://mail.ale.org/mai.</a>..</font></p></blockquote></p>