Google Chrome Extensions: A quick recap of our first week in beta
Besides having fun trying out some of the 800+ new extensions in our gallery, we hosted an event for developers on our Mountain View campus to discuss the design principles of the Google Chrome's extensions system and to present the team's roadmap. Approximately 140 developers attended, representing more than 50 companies. Aaron Boodman and Erik Kay, technical leads for the extensions platform, provided insights across several topics, including the UI design and the security model for the extensions system. They also demonstrated the platform's flexibility by building and publishing an "Email this page" extension in less than 5 minutes.
Aaron and Erik were joined on stage by the Xmarks, eBay and Google Translate teams, who discussed their own experiences with Google Chrome Extensions, highlighting the ease of development and the advanced capabilities that HTML5 provides to extension developers. Finally, Nick Baum, product manager for Google Chrome Extensions, closed the event by walking through the extensions gallery approval process, tips for successful extensions, as well as the team's near-term goals.
To learn more on these topics you can check out the videos from the event below:
We also met many extensions developers last week at Add-on Con, an annual conference for browser add-ons. Erik and Aaron presented a quick overview of the extension system's design for those who had missed our earlier event. In addition, Aaron shared his thoughts on a panel about cross-browser extension development while Linus Upson, Google's engineering lead for client products, presented his views on a panel about the future of the browser.
We'd like to thank developers for building and uploading some great extensions in our gallery and for giving us plenty of feedback. This week, we plan to continue our discussions with the developer community by hosting several online tutorial sessions. You can still sign up for one of these sessions, but if you aren't able to attend, we encourage you to submit your questions through our discussion group.
Posted by Arne Kurrik, Developer Advocate, Google Chrome Extensions
Security in Depth: The Extension System
- We expect most users to install extensions from the gallery, where each extension has a reputation. We expect malicious extensions will have a low reputation and will have difficulty attracting many users. If a malicious extension is discovered in the gallery, we will remove it from the gallery.
- When installing extensions outside the gallery, the user experience for installing an extension is very similar to the experience for running a native executable. If an attacker can trick the user into installing a malicious extension, the attacker might as well trick the user into running a malicious executable. In this way, the extension system avoids increasing the attack surface.
New Tech Talks Posted
What's the Difference Between Chromium OS and Google Chrome OS?
- This is not ready for consumers yet — everything you see can and probably will change by the time Google Chrome OS-based devices are available late next year.
- Please note that Google has not released an official binary for Chromium OS and therefore if you download Chromium OS binaries please ensure that you trust the site you are downloading them from.
- While we will try our best to help you through the Chromium discussion forums, we will not be officially supporting any of these builds. Remember that you are downloading that specific site/developer's build of Chromium OS.
WebGL Spec Initial Public Draft Released
- San Angeles futuristic cityscape demo
- Shiny teapot demo illustrating compositing of 3D graphics with the web page
- Particle system demo showing how to use the GPU to animate particles
Web Sockets Now Available In Google Chrome
if ("WebSocket" in window) {
var ws = new WebSocket("ws://example.com/service");
ws. {
// Web Socket is connected. You can send data by send() method.
ws.send("message to send"); ....
};
ws. (evt) { var received_msg = evt.data; ... };
ws. { // websocket is closed. };
} else {
// the browser doesn't support WebSocket.
}
Extensions beta launched, with over 300 extensions!
An extension system has been one of our most requested features for Google Chrome. It's a tribute to Mozilla and the Firefox project that nowadays, users just expect all browsers to have built-in extensibility.
We started the project by presenting a design doc that outlined our vision to create an extensions system based on web technologies - a system that is easy to use, stable, more secure and that wouldn't slow down Google Chrome. It wasn't always easy to balance our goals, and sometimes we had to make tough trade-offs.
Since we built all of this in the open, we had tons of help. Developers started using our code shortly after the first check-in, and have been sending us feedback on our mailing list ever since. Being able to see the extensions people were trying to build and the problems they faced made it more fun to design the system, and motivated us to keep fixing the bugs.
Today, we're really happy to release a beta of extensions that begins to deliver on our initial vision. Extensions are as easy to create as webpages. Users can install and uninstall them quickly without restart, and extensions have a great polished look that fits in with Google Chrome's minimalist aesthetic. When developers upload an extension it is available to users immediately, with limited restrictions and manual reviews only in a few situations.
On the technical side, we've been able to use Google Chrome's multiprocess architecture to help keep extensions stable and safe. And Chromium's extensive performance monitoring infrastructure has helped us ensure extensions affect Google Chrome's speed as little as possible. You can learn more details about the internals of our system in the videos below.
We still have a long way to go - next up, we're going to be working hard to get extensions to all Google Chrome users, and we're already brainstorming the next set of API improvements. Oh and, we should also fix some bugs ;-).
For those of you who want to learn more about extensions, let us know if you want to join us in a small get together tomorrow in our campus in Mountain View. Space is limited - we'd love to see many of you there so do RSVP early and we'll email you more information if are selected to attend. You can also meet with our team at Add-on Con, where we are going to participate in a couple of panels. Finally for those of you who are far away, we are planning some online developer tutorial sessions. If you are interested in attending these, please fill in this form.
Posted by Erik Kay and Aaron Boodman, Software Engineers
Google Chrome for Linux goes beta!
But bringing Google Chrome to Linux wasn't just a straight port -- it was a labor of love. Google Chrome works well with both Gnome and KDE, and is updated via the normal system package manager. It has also been developed as a true open source project, using public mailing lists, IRC channels, bug tracker, code repository, and continuous build and test farm -- following in large part the trail blazed by Mozilla. Where we noticed problems in system libraries, we pushed fixes upstream and filed bugs. This open approach to development seems to be working: so far, about 50 developers outside Google have contributed code (for instance, thanks to Ibrar and Paweł for our FTP stack), and several Linux distributions even maintain preliminary open source builds of Google Chromium.
In short, we really love Google Chrome for Linux, and we think you will, too. Please try it and let us know what you think.
(One more thing: if you've already installed the dev channel version, you may need to uninstall that before installing the beta version -- we tried to make that work smoothly, but a few rough edges remain.)
Posted by Dan Kegel and Evan Martin, Software Engineers
Links That Open in New Processes
Technically speaking, what makes Google Chrome fast?
Earlier this year, we heard from many of you on how important speed is to your daily activities on the web. We kicked off a series of discussions with the Internet community on ways to make the web faster: from Internet protocols and best practices in website development, to improvements in the browser itself.
A lot of engineering effort is involved in making sure that a browser continually provides a fast, responsive, and satisfying experience on the web. We're excited to see modern browsers continue to push the envelope in designing and optimizing browser architecture for speed and performance.
We've often been asked what makes Google Chrome so fast -- from its snappy start-up time and fast page-loading, to the ability to run complex web applications quickly. To walk through some of the thought processes and technical decisions involved in making Google Chrome a fast browser, we've put together three technical interviews on DNS pre-resolution, the V8 JavaScript engine, and DOM bindings. In a future post, we'll also cover other important areas like WebKit and UI responsiveness.
DNS pre-resolution
with Jim Roskind
- What is DNS pre-resolution, and how does it make Google Chrome even faster?
- Why is DNS pre-resolution difficult to do?
- Explain in more detail how adaptive pre-resolution works.
- How else is DNS pre-resolution beneficial? Can it help with browser start-up time?
- How do we measure and benchmark the benefits of DNS pre-resolution?
- What's next for DNS pre-resolution?
V8 JavaScript engine
with Mads Ager
- What is V8?
- What are we currently doing to speed up JavaScript performance on V8?
- How do we achieve big boosts in JavaScript speed, such as the recent 150% improvement since our initial launch?
- How do we measure V8's performance?
DOM bindings and more
with Mike Belshe
- What are DOM bindings?
- What are the most recent improvements in DOM bindings, for Google Chrome as well as other browsers?
- The Google Chrome beta release in August 2009 included improvements in DOM bindings. Tell us more.
- How do we measure and benchmark improvements in DOM bindings?
- In general, what are the biggest performance impediments for a browser?
- What are some of the performance benefits of Google Chrome's multiprocess architecture?
Posted by Min Li Chan, Product Marketing Manager
An Update for Google Chrome's Developer Tools
Extensions: One Step Closer to the Finish Line
Hello, open source developers. Would you like to help build an operating system for web users?
A 2x Faster Web
Introducing Google Chrome Frame
Posted by Amit Joshi, Software Engineer, Alex Russell, Software Engineer and Mike Smith, Product Manager
Extensions Status: On the Runway, Getting Ready for Take-Off
Extensions are small pieces of software that developers can write to customize the way Google Chrome works. We've been working on enabling extensions for a while, but until now, they were hidden behind a developer flag. As of today, this is no longer true. If you're on the dev channel, you can try installing some of our sample extensions.
Removing the flag is the first step in our launch process, and it means we're ready for a few more people to start using extensions-- the kind of adventurous people who populate the dev channel. For this release, we focused on getting most of the basic infrastructure and security pieces in place, in particular our new permission system. However, you should still be cautious and only install extensions from developers you trust.
Going forward, we are working hard towards a release on the Beta Channel. The UI is likely to change as we bring it up to Google Chrome's high standard, and we're still finishing up a few APIs. We've also enlisted some help to get extensions up to speed on Mac and Linux.
From the beginning, we've strived to make extensions super easy to develop. If you'd like to give it a try, you'll find everything you need to get started in our brand new documentation. If you've already written an extension, make sure to read this post about some recent changes.
Posted by Aaron Boodman, Software Engineer
A New FTP Implementation Goes Live
- Please don't add a comment like "Here is another URL that doesn't work for me" to a bug. Always open a new bug, and give a link to another bug if you think they are similar.
- Make the steps to reproduce as detailed as possible, and always include the version number of Chrome.
- Check if the problem can be reproduced with --wininet-ftp on Windows and include that information in the bug report.
Bookmarks Here, Bookmarks There, Bookmarks Everywhere
Chromium Memory Usage
- Shut down any unnecessary services
- Reboot your computer
- Using the windows task manager, measure the Total Commit Charge of the system*
- Run the application you are seeking to test, in this case, Chromium
- Measure the Total Commit Charge again
- Close the application
- Measure the Total Commit Charge one more time
- Subtract your first measurement from your second, and you should have the memory used by Chromium
- To validate your test, make sure that the first and last measurement are nearly identical
Google Chrome Developer Tools for Eclipse Users
Careful! Extensions Can Bite!
Smaller is Faster (and Safer Too)
- Full update: 10,385,920 bytes
- bsdiff update: 704,512 bytes
- Courgette update: 78,848 bytes
Launching Sputnik into Orbit
Developer Tools for Google Chrome
Important Updates for Extension Developers
- If you've developed an extension, you can learn how to repackage your extensions for Chrome v 3.0.189.0 in the packaging doc on our developer site. Note that your extension ID will now be your public key, so you'll have to change any code that uses that.
- If you're using an extension someone else has developed, you will have to reinstall it once the developer has repackaged it (as described above). We've already updated our sample extensions.
Posted by Nick Baum, Product Manager
The Plausible Promise
"When you start community-building, what you need to be able to present is a plausible promise. Your program doesn't have to work particularly well. It can be crude, buggy, incomplete, and poorly documented. What it must not fail to do is (a) run, and (b) convince potential co-developers that it can be evolved into something really neat in the foreseeable future."
Posted by Mike Pinkerton, Software Engineer
Danger: Mac and Linux builds available
How incomplete? So incomplete that, among other things , you won't yet be able to view YouTube videos, change your privacy settings, set your default search provider, or even print.
Meanwhile, we'll get back to trying to get Google Chrome on these platforms stable enough for a beta release as soon as possible!
Posted by Mike Smith and Karen Grunberg, Product Managers
Web Developers: Keeping Up With Google Chrome
- Stable channel. As Mark outlines, the Stable channel is, well, stable. As a web developer, that means that as long as the major version — the "2" in "version 2.0.181.1" — doesn't change, you can count on Stable channel builds to use the same versions of WebKit (CSS, layout, etc.), V8 (JavaScript), and other components that might affect how a page loads or renders. Stable updates between major version releases are generally focused on addressing security issues, fixing egregious bugs, and improving stability. The big developer-facing bits of the browser won't change on the Stable channel until the next major version is released, and you can always preview upcoming changes using the Beta channel.
- Beta channel. As a web developer, being on the Beta channel will ensure that you can test your sites with the next version of Google Chrome's rendering behavior before it's sent to the Stable channel and into the hands of most users. Whenever a major version lands in the Beta channel, the versions of WebKit, V8, networking, and the other systems that affect how web pages load and render generally become fixed. These versions may change during the major version's beta cycle, but changes are usually incremental fixes to help stabilize a feature rather than changes in behavior. New versions of WebKit may be introduced during a beta period, but those versions are always accompanied by a new build number (e.g. 2.0.169.xx vs. 2.0.172.xx) and are unlikely to differ drastically. As this major version moves closer to a stable release, these kinds of changes become more and more infrequent. Since Google Chrome development moves so quickly, you should stay on the Beta channel to catch compatibility issues ahead of time.
- Dev channel. The Dev channel is where the sausage gets made. Dev releases happen frequently, and they track what's happening upstream in WebKit, V8, and other relevant systems very closely. This means that changes that might affect rendering, performance, and layout are likely to occur on the Dev channel on a regular basis. We don't recommend that you install the Dev channel if you're looking to maintain site compatibility, since tracking breaking changes as they happen can be a major headache. You should be able to spot any problems early enough via the Beta channel.
Google Chrome, Sandboxing, and Mac OS X
Posted by Jeremy Moskovich, Software Engineer
Extensions at Google I/O
Update: Video of this talk is now available, as are videos of a number of other Google Chrome-related talks.