Google has announced two more tools that will help in its mission “to organize the world's information and make it universally accessible and useful”. One of them is version 2.0 of its Chrome browser which aims to facilitate demanding client-side applications and the other one is Wave, a new environment for communication and collaboration on the Web.
On September 1st, 2008, Google announced its new open source browser, Google Chrome. The introduction of a new web browser by Google, a major player in the web by anyone's standards, resulted back then in a flurry of attention, analysis and soothsaying.
Since then Google has been collecting feedback and feature requests some of have made it into the Beta version that we first released in March.
In version 2.0 that was announced a few days ago, Google reports to have fixed over 300 bugs, while adding several improvements:
Here are some improvements that you'll notice right away:
Improved New Tab Page: The most requested feature from users was the ability to remove thumbnails from the New Tab page. Now you can finally hide that embarrassing gossip blog from the Most Visited section.
Full Screen Mode: If you've ever given a presentation or watched a large video using Google Chrome, you might have wished you could use every last pixel on your screen for the content. Now you can hide the title bar and the rest of the browser window by hitting F11 or selecting the option in the Tools menu.
Form Autofill: Filling out your information in forms over and over again can be tedious. Form autofill helps by showing information you've previously entered into the same form fields automatically. If at any point you want to clear out your information, that's easy to do from the Tools menu.
Besides these improvements, Chrome's focus is to provide a platform where users can execute highly scalable and demanding JavaScript applications. A major role in this is played by the V8 JavaScript engine:
The V8 JavaScript engine has been designed for scalability. What does scalability mean in the context of JavaScript and why is it important for modern web applications?
Web applications are becoming more complex. With the increased complexity comes more JavaScript code and more objects. An increased number of objects puts additional stress on the memory management system of the JavaScript engine, which has to scale to deal efficiently with object allocation and reclamation. If engines do not scale to handle large object heaps, performance will suffer when running large web applications.
One of the reasons that JavaScript scalability is so high in Google agenda, is its new communication and collaboration platform Google Wave that was announced a few days ago:
A "wave" is equal parts conversation and document, where people can communicate and work together with richly formatted text, photos, videos, maps, and more.
Here's how it works: In Google Wave you create a wave and add people to it. Everyone on your wave can use richly formatted text, photos, gadgets, and even feeds from other sources on the web. They can insert a reply or edit the wave directly. It's concurrent rich-text editing, where you see on your screen nearly instantly what your fellow collaborators are typing in your wave. That means Google Wave is just as well suited for quick messages as for persistent content - it allows for both collaboration and communication. You can also use "playback" to rewind the wave and see how it evolved.
From an architect's perspective, Google Wave has three layers: the product, the platform, and the protocol:
- The Google Wave product (available as a developer preview) is the web application people will use to access and edit waves. It's an HTML 5 app, built on Google Web Toolkit. It includes a rich text editor and other functions like desktop drag-and-drop (which, for example, lets you drag a set of photos right into a wave).
- Google Wave can also be considered a platform with a rich set of open APIs that allow developers to embed waves in other web services, and to build new extensions that work inside waves.
- The Google Wave protocol is the underlying format for storing and the means of sharing waves, and includes the "live" concurrency control, which allows edits to be reflected instantly across users and services. The protocol is designed for open federation, such that anyone's Wave services can interoperate with each other and with the Google Wave service. To encourage adoption of the protocol, we intend to open source the code behind Google Wave.
Developers can find more information on the Google Wave Developer blog about the Google Wave APIs, and check out the Google Code blog to learn about the Google Wave Federation Protocol. At the time of this writing, there is only a Java Client Library available, but there is one for Python scheduled.
One of the key elements of this new platforms, that is aligned with Google's principles of being open and “not evil”, is that it has been designed in a way that anyone can become a wave provider, build a wave server and interoperate, much like anyone can run his own SMTP server:
We want to expand upon that platform, which is why we've put together the initial draft of the Google Wave Federation Protocol, the underlying network protocol for sharing waves between wave providers.
Yes, that's between wave providers: anyone can build a wave server and interoperate, much like anyone can run their own SMTP server. The wave protocol is open to contributions by the broader community with the goal to continue to improve how we share information, together.
This is just the beginning. To help potential wave providers get started, our plan is to release an open source, production-quality, reference implementation of the Google Wave client and server, as well as provide an open federation endpoint by the time users start getting access.
You can find more information about JavaScript, the Open Web, Web Browsers and Google, right here at InfoQ.