7 ms·
It's a pity that GoogleTV (which the Chromecast OS appears to be derived from) is such a messed up platform. They really wanted to be able to run Chrome, before
by randallu 13y ago
It's a pity that GoogleTV (which the Chromecast OS appears to be derived from) is such a messed up platform. They really wanted to be able to run Chrome, before Chrome had been ported to bionic/Android...
So, they ported Android to glibc instead! If you poke around on a Google TV device, you'll notice that the Chrome build they include links to GTK+ 2, which renders the scrollbars (that you can't use with a remote on a TV...).
I have no idea why if porting Chrome to bionic was so hard, they didn't use a regular Android build but run Chrome using ld-linux and glibc (and the rest of the system with bionic). You'd have to write something to bridge Chrome's content to the outer system via shared memory and IPC but (having done so once myself) this is much less work than hacking up a whole operating system!
Porting code to it which already ran on Android and Linux was a pain because it was somewhere in between (lots of Android library stuff, no bionic hackery). If it had looked like regular Linux, or looked like regular Android I would have had an easier time.
Anyway, I hope that Chromecast stays unlocked and that a bunch of OSes get ported to it. It's like a super souped up Raspberry Pi that even comes with a case...
- kanzure 13y agoCool, has anyone put up those glib/chrome bindings anywhere? I would really like to use those. Are they gobject bindings? Does this mean that the glib event loop was combined with the v8 event loop? I see some search results indicate that Chrome OS uses this too? Way schway.
- randallu 13y agoNo, no, they ported Android to glibc the GNU libc implementation (from bionic, the APSLv2 licensed Android libc implementation) in order to run Chrome, which at the time depended on some glibc/posix things that weren't in bionic (Chrome on GTV also links against glib and gtk2, but that's because it does on regular linux too -- Chrome uses the glib runloop already fwiw and v8 has no runloop). I think GNOME3 has spidermonkey with GObject bindings, and I'm sure I've seen JavaScriptCore GObject bindings too...
- DannyBee 13y ago"I have no idea why if porting Chrome to bionic was so hard, they didn't use a regular Android build but run Chrome using ld-linux and glibc (and the rest of the system with bionic). You'd have to write something to bridge Chrome's content to the outer system via shared memory and IPC but (having done so once myself) this is much less work than hacking up a whole operating system!" Just so i'm clear, your suggestion would be to use a completely hacked up libc, running on a platform not made for it, using shared memory and IPC hacks as well, for an app made to run as part of a TV 24/7? I'm not sure i'd agree with your engineering choices. :) "They really wanted to be able to run Chrome, before Chrome had been ported to bionic/Android..." It's weird that you assume this is the issue, and then explain why it probably wasn't. I can assure the the platform was not built on glibc solely because of the need to run chrome :) The reasons GTV was such a "messed up platform" are entirely mundane (IMHO).
- randallu 13y ago> your suggestion would be to use a completely hacked up libc, running on a platform not made for it, using shared memory and IPC hacks as well, for an app... When last I did this I was able to build Chrome for Ubuntu ARM and copy over Ubuntu's libc and the runtime linker. I didn't have to even rebuild them, so I wouldn't say it was a "completely hacked up libc". It obviously wasn't ideal either, but it's similar to using chroot (only without calling chroot). GTV forked Android in a binary incompatible way ensuring that no NDK apps can run on it. An entire forked platform! I'd rather everything ran natively with no trickery, but if I couldn't have that then I'd definitely prefer to have one hacked up app than to ship an entire incompatible platform! > It's weird that you assume this is the issue, and then explain why it probably wasn't. Oh, whoops. I don't know why GTV is the way it is, but I assumed it was to support Chrome. Sorry if I'm mistaken; I have no inside knowledge on it. I'm assuming that Chromecast is also a Chimera OS and I'm curious if Google plan to ship it long-term since I don't see Android and Chrome converging technically. I do feel like Android is a better "fit" for something like the Chromecast, though.
- jessaustin 13y agoThe reasons GTV was such a "messed up platform" are entirely mundane (IMHO). What were those reasons?
- fpgeek 13y ago> It's a pity that GoogleTV (which the Chromecast OS appears to be derived from) is such a messed up platform. At least Google TV seems to be heading in the right direction now (Google Cast support coming [1], coming back to mainline 4.2.2 with NDK support [2]). It might be too little, too late, but, as someone who's happy with his Google TVs, I'm hoping there will be room for a Chromecast+ (where the + can be more apps, an ethernet jack and/or better WiFi for streaming and so on). [1] http://www.theverge.com/2013/7/25/4556420/google-tv-update-to-add-google-cast-streaming-support http://www.theverge.com/2013/7/25/4556420/google-tv-update-t... [2] http://gigaom.com/2013/05/15/google-tv-android-jelly-bean-update/ http://gigaom.com/2013/05/15/google-tv-android-jelly-bean-up...