Tuesday, March 12, 2013

Response to Stephen J Vaughan-Nichols:


I read your recent article, "The secret origins of Google's Chrome OS"  with interest. However, I'd like to point out several inaccuracies. 

First, much of the article is based on quotes from one source, Peter Kasting. Mr. Kasting clearly has very strong opinions. He also stated in the first paragraph of his G+ post, "It would be nice if some Chrome OS folks more knowledgeable than I could shed light on this, because I truly don't know." If you are going to repeatedly quote a source who stated upfront that he "truly doesn't know", you should at least mention that at some point in the article. As for Mr. Kasting's opinions, Google had approximately 30,000 employees in 2007, so it doesn't hurt my feelings that Mr. Kasting doesn't remember me. 

Your article goes on to look for other origins of Chrome OS, discussing the Ubuntu and Gentoo work later in 2009 and later. Certainly, a great deal of solid engineering has gone into Chrome OS over the years, but none of that goes to the origins. 

Your article is notably missing one key point, a genuine challenge to my invention. It doesn't ask or answer key questions. Who else may have came up with the original design of Chrome OS? Is anyone else making such a claim? Did Google file any other patents on Chrome OS in 2009? Is there any equally well documented work, so-called prior art, that precedes my work in 2007? 

I had the opportunity to work with many great people on many great projects at Google. However, I am confident that I was the first one, and the only one, experimenting with lightweight browser-based operating systems in 2006 and 2007, investigating features such as small footprint, secure boot, fast boot, optimized concurrent initialization, utilizing only a small SSD for storage, and implementing the entire desktop with browser components. All of those innovations remain in Chrome OS, even today. 

I did leave Google in January 2008. 14 months later in 2009, I was pleased when Google filed one of my patents and publicly demoed an identical lightweight browser-based operating system. Google even paid me a bonus for Chrome OS in 2009, despite the fact I was no longer an employee. 

As an engineer, I very much enjoy the creation process, and its great to see a project go as far as Chrome OS has gone. 

- Jeff Nelson 

Permission to forward and reprint is given.

Thursday, February 14, 2013

Invention Controversey

My previous blog post has caused some confusion among people who didn't work with me on the "Google OS" project back in 2007.  Here is a brief response:

I am not surprised some people are calling this claim into doubt since its was work done back in 2006 and 2007.  It sounds like many of these questions are being raised by people outside of Google or individuals who joined the project after 2007.  

First, let me reassure you that while I was not able to walk out of Google with my email history or design documents, Google sent me long correspondence about the Chrome OS patent after I left Google.  I do not believe this correspondence is covered by any NDA, since it was sent to me after I left Google, and I have retained all of that correspondence. 

I published the work called "Google OS" on a company wide email list in April May 2007, with subject line "Google OS" "Guppy needs testers", and received hundreds of positive comments from other engineers at that time.  I also held a tech talk on "Google OS" in May 2007.  Anyone at the company in April May 2007 will likely retain a copy of the original "Google OS" email, search for subject line "Google OS" "Guppy needs testers" in April May 2007.

The operating system that I invented, as described in the  April May  007 email on a company wide email list, was a webapp-centric chopped-down Linux with a Chrome browser front-end.  The operating system had almost no applications installed on it, instead all of the functionality came from webapps;  performing any operation on the desktop launched a Chrome window to one of many webapps.  The original  April May  007 version of the operating system that was published on a company wide email list was substantially identical to the publicly released Chromebook product, as was the writeup in the original 2007 email.

Further, back in 2007, I had meetings with Jeff Huber (VP of Google's consumer products group), Larry Page (now CEO), several other directors and managers, and even presented a techtalk - all of these meetings on Chrome OS project. By the end of 2007, I was working with a product manager, and together we were able to convince management to launch the Chrome OS project and assign head count to the project by the end of 2007.  In August 2007, my product manager and I even met with an external hardware vendor to have exploratory talks regarding their interest in distribution a Chrome OS laptop. 

All of this is verifiable both from the email record, such as the  April May 2007 "Google OS" email to a company wide mailing list, and also by those who met with me on Chrome OS in 2007, including Larry Page himself.  Further, I retain the hard copies of the correspondence with Google that was sent to me after I left the company on the subject as well, which I don't believe is covered by any sort of NDA.

I hope this clears up some of the controversy.  Again, I am not surprised that many of you who either worked on Chromebook or joined Google after 2007 have never heard of me.  Once I left Google, there would have been no reason to continuously bring up my name as the original inventor, and I have chosen not to come forward until the patent was finalized and published.  I apologize to those of you who may have been confused by this.

So to summarize:
1. I wrote the original Chrome OS and published it on a company wide email list in  April May 2007.
2. I wrote the patent in 2007, which is now accepted and published by the USPTO as of August 2012 and shows my name as inventor.
3. I convinced management to launch and assign head count to the original Chrome OS project by the end of 2007.

Tuesday, November 13, 2012

Inventing Chromebook


While working for Google back in 2006, I had the good fortune to create a new operating system.

I confess it wasn't created from scratch.  It was a chopped down Linux distribution - as so many "new" operating systems are, these days.

This new operating system was originally code-named "Google OS" and since 2009 has been released to the public under the product names, Google Chrome OS, Chromebook, and Chromebox.   I wrote a patent for it, #8,239,662, titled "Network-based Operating System Across Devices" that was finally granted in August 7, 2012.  Long after I left Google.

Here's a few interesting tidbits about the invention of Chromebook.

First, Chromebook was initially rejected by Google management.  In fact I wrote the first version as early as July 2006 and showed it around to management.  Instead of launching a project, the response was extremely tepid.  My boss complained, "You can't use it on an airplane."  Actually, you could as, under the covers, it was still a bare-bones Linux distribution and could execute any Linux program installed on it.

Second, Google OS was not originally written for Chrome or called "Chrome OS".  The first versions were all based on Firefox.  When I wrote the first version in 2006, Google had not yet started developing a web browser of its own, nor had the name "Chrome" exist as a Google product.  Chrome versions followed in 2007, after internal beta test versions of Chrome started to be passed around inside Google.

Third, Chromebook was definitely not intended to be "another device" for web browsing - as many product reviewers have characterized the Samsung Chromebook models.  The first versions were bare-bones Linux distributions, but fully functional for many tasks, including code development for a Google engineer.  I myself used versions of Chromebook, exclusively, every day, for over a year as my primary development box, taking it on many business trips, and even some airplanes.

Fourth, the main priority of Chromebook - originally - was not to write a webapp-only operating system.  In fact, the main priority when I started constructing the operating system was the need for speed - to create a super-fast operating system.

Why bother to write a super-fast operating system?  I was frustrated with Windows and Linux, which I perceived were unnecessarily slow.  For example, at that time my occupation was writing webapps for Google, so I was restarting my web browser frequently, sometimes hundreds of times a day, to clear browser cache and cookies as part of the code development process.  Restarting the web browser was a particularly slow operation, often taking 30-45 seconds, whether IE or Firefox, Linux or Windows. (Chrome not being available in 2006.)  However, even simple tasks such as displaying a directory in a file explorer were unreasonably slow operations, requiring several seconds for a task that should be nearly instantaneous.  A few seconds here, 45 seconds there, might not sound like much of a delay, but when such delays occur hundreds of times a day, it adds up to a costly amount of time.

The solution?  Move the entire desktop operating system into RAM.  By moving the entire operating system into RAM, that immediately took off the table the largest performance bottlenecks in the operating system: File I/O.

Very few tasks that an operating system perform are CPU intensive or cause other major delays that can't be attributed to File I/O.  By running the operating system entirely in RAM, most such tasks became nearly instantaneous, without having to rewrite or do any performance optimization at all for thousands of applications that make up the operating system.  For example, restarting Firefox went from ~45 seconds to ~1 second.  Browsing a directory in the file explorer went from ~8 seconds to ~0.01 seconds.  Even compiling code became 60% faster, and I could run non-indexed, recursive greps of the entire RAM resident file system in under 15 seconds.  Try doing that with a hard disk.

When discussing the RAM resident architecture of the original versions of Chromebook, nearly everyone expresses concerns about data loss.  In fact, data loss was not a problem for several reasons.  First, many tasks were performed as webapps, so as long as the webapps were well written, there was no possibility of data loss, there.  Second, I had configured my IDE to auto-save backups to a network drive, so even in the event of a system crash only a few seconds of work could be lost.  Third, some version occasionally synced backups to a local storage media.  Aside from that and boot loading, the operating system never accessed any local storage media aside from dynamic RAM. Ever.

Running a RAM resident operating system did pose other challenges.  First, avoiding the installation of any bloated applications.  A bloated application hogging a few gigabytes of hard disk space might not be painful, but hogging a few gigabytes of RAM is.  Such bloat had to be avoided by replacing the functionality with webapps.

Second, many software vendors don't support Linux at all.  This functionality also was replaced with webapps.

Thus, tracking down webapps to replace any and all functionality normally found on a desktop, became a priority.  That's how the seeds of the webapps on the Chromium desktop, albeit originally written in HTML and running on Firefox, were planted.

While running your front-end operating system entirely in RAM is a fundamental shift to the status quo of modern operating system architectures, I'm convinced the benefits far outweigh the costs.  As we live our lives, connected and online, few or no resources need to be stored on the same computer as the attached keyboard, and those which are stored don't need to be accessed by spinning a magnetic platter.