Back in December, I happened to click on a Greasemonkey script in Chrome and was shocked that it just worked. At the time, I wrote a note within Google that said
Whoa. I just clicked on a Greasemonkey script in the latest dev version of Chrome (4.0.266.0 on Linux). Chrome offered to install the GM script, so I said okay. The script ran perfectly in Chrome with no changes at all! I don’t know how many Greasemonkey scripts will run in Chrome unchanged, but at least some will.
Last week brought that news as an official announcement. My guess is that scripts that don’t use specific Greasemonkey APIs should be fine.
(Side-note: I found a good post from November that claims that ~60% of Greasemonkey scripts don’t use any sort of special API calls at all. The top API calls appear to be GM_getValue and GM_setValue (16.5% of Greasemonkey scripts), plus GM_xmlhttpRequest (15.5% of Greasemonkey scripts). It’s unclear which of these functions might be worth supporting. Some could have security implications (GM_xmlhttpRequest). Others like the get/setValue functions could be done by using other ways to store data.)
So this is cool. There’s a good chance that your favorite Greasemonkey script might just work in Chrome. Personally, I recommend the dev channel version of Chrome. It gets all the cool features early, and it’s been very stable/fast for me.
I’m sitting in a room at Google waiting to hear more about Google Chrome OS. You can watch the webcast along with me if you like.
For starters, here’s what Google announced about Chrome OS back in July. At that time, Google called out “speed, simplicity and security” as the key ideas behind Chrome OS. Google released Chrome a little over a year ago with a novel idea–a comic book to describe the features and design decisions behind Chrome.
Sundar Pichai (a Vice President of Product Management at Google) is talking about the progress of Google Chrome over the last year, and the progress of HTML5 as well. Pichai notes some large-scale trends:
- Netbooks are becoming more popular.
- Hundreds of millions of users are living in the cloud. [Yup, I went Microsoft-free as a challenge and I haven't looked back. I do almost everything I need to do in a browser.]
- Innovation in computing devices. For example, phones are getting smarter and more capable–more like mini-computers.
Every application in Chrome OS is a web application. Sundar Pichai repeated this for emphasis. That means “don’t expect to be able to run .exe files.”
Pichai emphasizes that Speed, Simplicity, and Security are the pillars of Chrome OS:
- Speed: the goal is that boot and execution is blazingly fast. The OS currently boots in 7 seconds.
- Simplicity: the browser is the front-end. If you can run a browser, you should be able to use Chrome OS.
- Security: no code is installed on the system, so detecting malicious processes is easier.
Demo time! 7 seconds to boot. Ooh, they’ve been running the demo on a Chrome OS machine. The UI is still in flux (final machines might not appear for a year).
Chrome OS looks very much like Chrome. There’s an extra pinned tab on the left-hand side to open web applications. When you open up a web application, up pops a “mole” (because it comes from underground) that’s a persistent small window. These “moles” are expected to be called “panels” in the external release. The panels persist as you move between tabs and can be minimized down to the bottom right or they can be closed.
You can also have different windows or workspaces, so you could have a set of tabs for some work and a set of tabs for blog post and switch between them easily. You can drag and drop tabs just like with Chrome.
You can plug in a phone and browse pictures or video files. Then from there you could upload stuff to the web. They showed Flash working. Everything is web-based, e.g. they took a Excel file and loaded it into SkyDrive and viewed it using a Microsoft web app for viewing Excel files.
I want this OS, like now. Matt Papakipos, an engineering director at Google, just announced that they’re releasing the Chrome OS. They’re also releasing a bunch of design docs, not just code. Everything is flash-memory-based–no hard drive.
Matt Papakipos is talking about verified boot. It looks like the Chrome OS team is working hard to verify that code is secure via cryptographic signatures. If you get typical malware, you just reboot–seven seconds later, you’re clean again. Chrome OS does a lot of work behind the scenes to make sure that from the firmware upwards, everything is secure and has the latest patches. The application security model changes in Chrome OS. Instead of running with the privileges of “you” (e.g. administrator capabilities). Under Chrome OS, web applications can’t change your underlying hardware settings, so things are safely sandboxed (chroot, namespaces, stack protection, toolchain). The root partitiion in file system is read-only, including the Chrome executable, which is unusual.
User data is encrypted on a Chrome OS machine. If you lose your laptop, the attacker gets nothing of value. Aside: what will people call these machines? Netbook? Chromebook? Webbook? Webtop? Chrometop? I don’t know what people will decide to call these machines. I like “chromebook.” User data and settings are synced to the cloud. So if you have a wifi network you’ve configured, that data is stored in the cloud. If you dunk your “Chromebook” in a pool or lose it, it sounds like you can pick a new one off the shelf, log in, and it will be as if you never lose your machine.
You can’t download Chrome OS and be guaranteed it will work on a random machine. Target time is end of next year. Google will work to ensure that these machines will be a good experience (good keyboard, resolution). They want compelling devices.
Google is going to be good open-source citizens and contribute code upstream (e.g. to Linux, Ubuntu, Moblin). [I've seen this with Chrome and it's worked well.]
Okay, it looks like Google has released a ton of Chromium OS videos on the Chrome channel on YouTube.
Question: How much will it cost?
Answer: You’ll hear that from our partners. Expect prices in the range of what people expect for computer products today.
Question: What are machine you running?
Answer: Sundar Pichai says that the demo was running on an off-the-shelf EEE PC.
Question: Standards?
Answer: MattP: Google is going to be a good citizen on pushing web standards forward, but standards take a while to be finalized. They want e.g. HTML5 to run in multiple browsers.
Questions: Drivers and hardware?
Answer: We’re looking for high-quality components with open-source drivers wherever possible.
Question: Applications?
Answer: Use case is web only. Again, don’t expect to run .exe files on a “Chromebook.” Web-based applications (e.g. photo-editing) can do most of what you want. If you’re a lawyer and editing Word files all day, this wouldn’t be your preferred machine. Sundar mentions that this might be your “backup” machine in that you might want a “primary” machine that can run Windows or Mac apps, but your Chrome machine might actually be your “primary” machine in terms of the time you spend.
Question: Compatibility between Chrome and Chrome OS?
Answer: Everything that works in Chrome works in Chrome OS. Things like Native Client are an important of this story.
Question: Will it run different browsers?
Answer: “Chrome is the OS.” End-to-end is/will be open-source. If someone wanted to make a similar OS with a different browser, they can. But don’t expect e.g. Opera to run under Chrome OS.
Questions: Is this netbook-only?
Answer: Initially focused on netbook-type form factors because they want a compelling experience. Can go bigger later, but for 2010 focusing on netbook.
Questions: Call out hardware partners?
Answer: Probably in the middle of next year?
Question: Size of the code base?
Answer: It’s open, so people can check it out themselves. They want to simplify things, so they don’t want a huge code base.
Question: Any offline access?
Answer: Primarily intended for wifi connectivity. If you use HTML5 you could in theory do offline. You could plug in media and run (say) a Flash game off of the media too. [For example, I played Machinarium, which is a Flash-based game, offline on a plane with my vanilla Ubuntu machine on a recent trip.]
Questions: Wide-band or other unusual networking?
Answer: Mainly focused on 802.11n.
Question: Can it be run in a virtual machine?
Answer: Yes.
Question: Can Android apps run?
Answer: No, only web apps.
Question (Mike Arrington): No plans for native executables?
Answer: Current plan is to only support web apps.
Arrington: That’s exactly what Steve Jobs said, and he changed his stance within a year.
Sundar Pichai: But even the
Question: Native Client implies an Intel processor. Do you plan to support ARM? < - [Smart question from InfoWorld.]
Answer: (Pichai) we want to work with a wide variety of possible partners. MattP seemed to indicate interest in ARM.
Question: timeframe for non-netbooks?
Answer: Focused on netbook for 2010.
Question: Business model?
Answer: Just people using the web more can be really good for Google. Every app is the same web app (seemed to imply no additional ads). The OS is free/open-source, so you could always strip out ads. But the demo didn't show any ads. [This question reminded me of the people who claimed that Android would be a mobile phone OS that would show ads everywhere. That clearly didn't happen.]
Question: Reliability? e.g. Gmail down for two hours stalls me.
[My answer: Cloud-based services are still more reliable than client-based solutions ]
Sergey Brin just showed up.
Question: storage devices?
Answer: Anything that identifies itself as storage should work. They’re taking a new approach to printing (Chrome OS will be able to print) but will share details later.
Question from Niall Kennedy: With Chrome, the release was a stake in the ground and about inviting the community in to help out. This event seems similar?
Answer: Exactly. Officially supported hardware will take a while, but the community can come and join in.
Question: Is this a “War of the Clouds”?
Answer from Sergey: We focus on user needs rather than obsess about strategy. There’s a real user need to use computers easily. You could buy a bunch of netbooks, but managing the software would be unwieldy. If your machine is “stateless” then they’re much easier to use.
Google released the Chrome browser on September 2, 2008. Now that Chrome has been out for about a year and it’s been almost six months since I last looked at Chrome’s market share, let’s take another peek.
For the last 30 days, here are my Google Analytics stats for mattcutts.com:
For me, 8.97% of my readers run Chrome, up from 7.04% in March 2009.
Some different browser marketshare numbers:
- Net Applications says that Chrome went from 2.59% to 2.84% from July 2009 to August 2009.
- StatCounter gives daily stats. I’m seeing 3.31% on Saturday August 1st to 3.59% on Saturday August 29th.
- Clicky says that in the last 60 days, Chrome has gone from 3.376% to 4.004%:
So after one year, three different sources report market share of 2.84%, 3.59%, and 4.004%. That’s pretty good for 12 months. More importantly, Chrome has pushed all browsers to be faster, more modern, and generally better.
Google Chrome continued its upward marketshare march in March. I was looking at my browser breakdown tonight. Here’s what I’ve got from the last 30 days in Google Analytics:
- StatCounter says that Chrome topped 2% recently. Click through to see fewer people using Internet Explorer and more people using Firefox and Chrome over the weekends. StatCounter provides CSV export, so I made a separate chart for Chrome:
- Clicky says that in the last 60 days, Chrome has gone from 2.099% to 2.479%
Not shabby for a little over six months since Chrome was released. My favorite Chrome links recently are:
- The dev channel switcher to get the latest/greatest features in Chrome. For example, the dev channel uses the F11 key to switch to full-screen mode. You can also delete auto-form-fill suggestions by cursoring down to them and hitting the “Delete” key.
I just installed a “hello world” Chrome extension from this Chrome Extension tutorial page. When you surf to www.google.com, the Google logo is replaced with a Lolcat:
Here’s how to write your own Google Chrome extension in three steps:
1. Install the developer-channel version of Google Chrome. I don’t know if this is 100% necessary, but new support for plugins will probably show up in the developer version first. You can read instructions on how to switch to the developer version. It takes maybe 3-4 minutes — you basically run a small program to indicate your preference. In case you’re worried that the developer version will crash a lot: I’ve been running the developer version for months and haven’t seen any major issues. The developer version also gets new features (such as pressing “F11″ to get full-screen mode) way before the beta/stable releases of Chrome. I’m using version 2.0.170.0 of Chrome and the “hello world” extension worked fine for me.
2. Read the initial documentation. This is a brand-new feature, but you can already start hacking. Extensions currently have very Greasemonkey-like functionality: you identify which web pages should be modified, plus JavaScript to be added to those pages. By default, the extension’s JavaScript runs after the page loads, but you can specify that the extension’s JavaScript should run before the page loads. Right now, you can only load one JS file, but that could change in the future. You also can’t currently load Cascading Style Sheets (CSS), but that might also change.
I like several things about the extension framework:
- Your plugin has to have a unique identifier (40 digit hexadecimal number). Given an identifier such as “00123456789ABCDEF0123456789ABCDEF0123456″, an extension can include an image such as foo.gif and then easily access that image by using a full path such as “chrome-extension://00123456789ABCDEF0123456789ABCDEF0123456/foo.gif”
- The “content script” (the JavaScript of an extension) gets its own global scope separate from the web page, so you don’t need to worry about global variables conflicting. But you can still get access to the web page’s global variables using the “contentWindow” variable.
- Bundling your extension directory into a “.crx” Chrome Extension file is as simple as running a short Python script.
- Chrome also supports binary NPAPI (Netscape Plugin Application Programming Interface) plugins.
The Chrome extension manifest, which has metadata about your extension such as name, version, etc., looks much simpler to me than how Firefox wants extensions to be packaged. That’s a big plus in my book, because you spend most of your time writing code and not worrying about packaging up your plug-in. On the down side, I didn’t see any support for internationalization, which is one of the benefits of Firefox’s more comprehensive way of packaging up plugins. Another limitation of the current Chrome extension spec is that you can’t do much other than modify pages via JavaScript. And I didn’t see a way to introduce new widgets into the actual “chrome” of the Chrome browser.
3. Try it out! If you’re running the developer version of Chrome, you can install the “hello world” plugin from the extension howto page just by clicking to download the .crx file. Then type “chrome-ui://extensions/” and you’ll see something like this:
Once you see how it works, just start hacking around and see what happens. Remember, this howto document is only a few days old. I’m sure the Chrome team is thinking about ways to add more functionality to extensions, but the current developer version of Chrome already lets you do a lot of neat things.
One more nice thing: it looks like installing extensions doesn’t require you to restart the browser. And a hat-tip to Google OS for pointing out this document.