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.

29 comments:

  1. I can't believe that I'm the first to comment on this fascinating post, Jeff.

    I think it's pretty clear that Chrome OS is poised now to breakout in a major way in 2013. To my mind, the only question is just how big it's going to be -- I'm betting somewhere between very big and enormous.

    Great work. I'll be very interested to learn what your stealth startup is up to, and hope it somehow follows the thread of your Chrome OS work.

    ReplyDelete
  2. This comment has been removed by the author.

    ReplyDelete
  3. Speaking of lightweight Linux distributions that run entirely in RAM, have you ever looked at Puppy Linux? That's one of the things it boasts that it does, and it is extremely fast. Much like you said you experienced here. Opening programs can take sub one second.

    ReplyDelete
  4. Like comment #1, I can't believe I'm only comment #4. :) Thanks for your work on this, and I'm glad you kept going with ChromeOS despite initial rejection.

    I really love the ChromeOS concept, and have played with a few Chromebooks and love the newest versions. I would switch to ChromeOS in a jiffy if it weren't for software applications: I still need my Thunderbird, Sublime Text (yes, its available on Linux!) and Eclipse. Web-based apps can't replicate some of the desktop app functionality.

    I also personally don't know how I feel about adding things like hardware-acceleration and networking stack support straight into the browser and bypassing the OS. To me, the browser should be good and fast at one thing: web browsing, i.e., loading HTML (and CSS+JS) pages and rendering them fast, and the OS should take care of the rest of the stack.

    I do wish Google had kept with your the original vision of a Linux-based OS, but I understand the reasons for switching to a browser-based OS. It does look fantastic, and maybe once Chrome extensions and web apps are powerful enough, I can switch from Ubuntu to ChromeOS completely! :)

    ReplyDelete
  5. My children love the Chromebook I got them for Christmas much more than our other desktops and laptops. Thanks for the background on the Chrome OS.

    ReplyDelete
  6. I was dying for ChromeOS to come out for a several years before it finally did. I think I was playing with Knoppix, SliTaZ and a couple of other minimalist distros that allowed RAM-only Firefox use. Thanks for moving the world forward.

    ReplyDelete
  7. ChromeOS is nice, but an Eclipse webapp is crucial, and I am partial to gedit + gnome + eclipse. I am intrigued, and the Chromebook pixel commercial had me at over 4 million pixels, but it needs to have some awesome hardware to win me over. I'd like to see a quad core, be it ARM or Intel or amd, and of course the beautiful screen, backlit keyboard, and much improved design. Also, it really should be more functional offline, and as I stated earlier an Eclipse ide would be a sticking point for Java and c++ devs such as myself. Currently, Sputnik from Dell is looking sleek, and flash memory is super fast. It will be between Sputnik and if it is real, the Pixel for me, tie goes the Chromebook if a full Java IDE is available

    ReplyDelete
  8. With a properly tuned file system cache and enough RAM, isn't most of your OS (and the rest of the files you touch often) already in memory?

    ReplyDelete
  9. Fiuuu, how the genious breakthrough leading all the way to a chromebook can be tracked to this one sentence!

    "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."

    Congratulations!! You do realize that your drive for speed lead to the biggest emergent breakthrough in contemporary computing, don't you?

    Amazing insight! Best story ever on how things build bottom-up!

    ReplyDelete
  10. You are right, Jeff, it's amazingly fast! Too bad some of the established Linux distros (openSUSE, Fedora, Ubuntu) don't take your work to heart and offer a mode where the OS will run only from Ram. As you say, this wouldn't work for the big workhorse programs, but for simple web browsing and emailing it would be a wonderful, super-fast mode to pop into.

    ReplyDelete
    Replies
    1. Most people are now installing flash drives upto 512GB possibly more.

      Some folks only use SSDs and no spinning disks at all.

      Seems to me that technology evolves so fast today that the original thoughts for ChromeOS regarding "in-memory" for everything already is available for other OS's if you want to spend the money on the SSDs.

      That leaves the advantage of ChromeOS being webapp based only.

      However, even that argument seems narrow as time goes on considering HTML5, WebRTC, etc.

      So price becomes one of the largest selling points... which given Microsoft's $900-$1000 Windows 8 Pro machine is probably a really good selling point to lure the everyday Windows user that doesn't want to keep throwing money at Microsoft.

      Delete
  11. Hi Jeff,

    You must be my technical counterpart of sorts, since I too created a browser based operating system Webconverger, based on Firefox & Debian around the same time.

    Since it's Live based, it should run entirely in RAM, though the low end machines don't make it as awesome as I would like it to be.

    Over in Webconverger land I'm most proud of our gitfs innovation, which allows us to seamlessly upgrade (or downgrade) the entire OS.

    Briefly looking at your patent, we've been doing those things for years in Webconverger. Managed Webconverger machines boot up and contact http://config.webconverger.com/ for their configuration, which I think has parallels IIUC to your "preferences image server". We've had a http "web boot" image / boot loader since 2007 too.

    Take care,

    ReplyDelete
  12. Amazing story. Thanks for throwing light on the development of Chrome OS. Partly serendipity, it would seem!

    ReplyDelete
  13. During this process, not went through your mind using SSDs instead of HDDs?

    ReplyDelete
  14. Can you give me any advice on installing linux packages, like CUPS, to Chrome OS?

    ReplyDelete
  15. Well, you learn a new thing every day. That is very cool. I will have to take a second look at Chrome OS. I wonder if the same properties (small, lightweight) would also make Chroms OS an ideal candidate for the back end as well - after all, lots of back-end systems try to scale horizontally by using large numbers of small servers, each doing one simple task. Full-on Linux is overkill for many of these. (Mind you, Chrome OS might be overkill too...)

    ReplyDelete
  16. How is your "Google OS" compared with Webconverger or XPUD?

    ReplyDelete
  17. Nice Story, I like the Chromebook Idea. But I guess it is not (yet) for everyone and every task. I use a lot of feature-rich, mature apps that cannot be easily AND fully replaced by Web Apps (e.g., LyX, Inkscape, GIMP).
    To run these apps more smoothly I switching my Ubuntu PC to an Intel SSD in 2010. Best decision I every made regarding HW upgrades :)
    I wonder how much faster Chromebook really is today, compared to the OtherOS+SSD solutions.

    ReplyDelete
  18. Puppy Linux predates your work. And for that matter, the email that google employees have confirmed you sent when you worked at google, plainly stated that it was based on Puppy Linux.

    http://q5sys.info/google/Comment%201.png

    So at best, you took Barry Kauler's work, and changed on it. That doesn't make you a visionary.

    ReplyDelete
  19. I would like to reintroduce am earlier question:
    What part of your 2006 revelation concerning a "run in ram" OS was related to Puppy Linux, which runs in ram, and was developed by Barry Kauler beginning in 2003...??

    ReplyDelete
  20. Amazing timing??
    Great minds think alike??
    I asked a question, another (quicker) poster made it a statement, but it is still a fact...

    ReplyDelete
  21. Jay and fe445e3c,
    First, who has been refering to me as "visionary" or "great mind"? Do you have a link? That's kind of cool. No comparisons to Steve Jobs, yet??

    Second, to your point, every new Unix (or non-Unix for that matter) operating system released in the last 20 years has been based on a previous Linux distribution. The alternative would be re-keying an entire Unix codebase - from scratch.

    Puppy Linux served my purposes as a starting point for an OS to pitch to management for a number of reasons. I did evaluate a handful of other distributions, but Puppy Linux was the clear winner.

    How did my design goals differ from Barry Kauler, the author of Puppy Linux? I don't want to put words in Barry's mouth, but I think the artistic vision behind Puppy was to create a small, convenient, fast Linux distribution that runs well on legacy hardware. Want to revive that Pentium Pro laptop you purchased in 1999? Install Puppy Linux on it. That antique laptop will run just fine.

    As discussed in the blog post, my own design goal initially was running a very fast operating system on current hardware, but this evolved over time to focus more on an web-centric approach, with all functionality coming from web-apps, few locally installed apps, and little or no local storage.

    Larry Page was obsessed with boot time, even in 2007, so I tweaked Puppy to get boot time down to sub-20 seconds. This was done largely just to position the OS more attractively for management.

    We also pitched it as a platform that could be sold on low-end hardware, predominantly to make the business model more attractive.

    Puppy Linux was a great distribution to form a basis for all of that work.

    PS. Go download and try Puppy Linux if you haven't already.

    ReplyDelete
  22. All Unix OSes of the past twenty years have been based on Linux? You must be unfamiliar with the various BSDs, Apple, OS2 and Plan 9 From Bell Labs, to name a few.

    ReplyDelete
  23. Jeff,
    Its nice that you now acknowledge PuppyLinux now, but it raises the question of why this wasnt even a footnote in all your claims before. You could have simply said, "I took some ideas from PuppyLinux and then went in this direction"; but you didnt. Instead your post is written to give a read the idea that all of this was your idea.

    Let me point out that I am a HUGE fan of running an OS from ram, thats what brought me to PuppyLinux in the first place. And having agreed with many of the design philosophies, I've stayed there. I'm giving back to the community that's supported and accepted by becoming a Developer for Puppy Linux. So I'm behind you one 100% that Ram is where the OS should reside. Current puppies take up about 120mb right now, with a full array of applications. I've co-developed a 64bit version of PuppyLinux thats 109mb. Others have trimmed 32bit versions down to around 60mb. But thats by no means the smallest. DamnSmallLinux is smaller, as is Stilaz, and TinyCoreLinux weighs in at around 12mb.

    So I'm behind any push by anyone in the greater IT community who wants to promote these ideas. But offloading storage and applications off the system and to somewhere else, is hardly new. Thin Clients have been doing that for ages, except they are offloading the entire OS. Taking the OS and placing it in ram (or an onboard SSD, like the first EEE PCs) doesnt (again in my opinion) create something substantially new. It's a rehash of existing ideas. That doesnt detract from the Idea... but it makes all claims of 'inventing' something a bit grandiose.

    Returning for a moment back on your work with Puppy... is there a reason you havent discussed what you've done with the Puppy Community? I can only speak for myself, but I'm sure the same applies to the other developers... we'd love to hear what you changed and did to make the boot times faster, or to otherwise improve the OS.
    And please dont comment back with something about it being 'proprietary' or owned by google or anything like that. Puppy is GPL, and as such any deritive work must also be.

    ReplyDelete
  24. You are correct that I was negligent not to give PuppyLinux more credit. While I evaluated other distributions, many of the features of PuppyLinux were highly advantageous for the purposes of building a light-weight, web-centric OS.

    It's not a software license or GPL issue. The project was done under an Employee NDA, so I have tried to avoid giving any specifics that Google might feel violate their NDA.

    While I can't speak for Google, I believe it's normally Google's practice to fold back any modifications to open source code, shortly before any Google product is publicly released. Please contact a current Google employee for more elaboration on their policies.

    ReplyDelete
  25. Netapp filers used a minimalist BSD distro that boots from a floppy years before Google!

    ReplyDelete
  26. Dear Jeff,

    Interesting blog. Thanks for it. :)

    I recently purchased an Acer C720 Chromebook and I managed to get it to boot from usb drive my current favorite ram-based OS (Puppy Carolina, to be specific) with the easy handful of steps from wiki.archlinux.org but the touchpad won't function even after my first try of putting the touchpad kernel modules in what seemed the proper spots in the filesystem. I don't want to go the 'buntu route which seems like what google searches about installing linux to a chromebook mostly discuss. Ah, I'm so close yet so far.

    If you or anyone reading your blog have any suggestions, please comment.

    Thanks for your input about the origins of Google Chrome and your efforts involved in it!



    ReplyDelete
  27. Hi Jeff,

    Reading this post was great. As an amateur programmer I am inspired by your work but even more inspiring your humility. I am referring to you giving credit to puppy linux and responding in all honesty (and little humor) to Jay and fe445e3c-7af5-11e2-aef1-000f20980440.
    >>First, who has been refering to me as "visionary" or "great mind"? Do you have a >>link? That's kind of cool. No comparisons to Steve Jobs, yet??

    Its very easy for people to go defensive and political in such matters.

    ReplyDelete
  28. Congratulations; Chromebook is changing the face of 'semi-portable computing'!

    Now that the idiots who talked about 'Post PC' age are rephrasing it to "Post Windows PC Age", all eyes are on Chromebook.

    I can fully understand the Google early reluctance; I felt exactly the same, as do - from tech boards all over - so many other people. When you started, the 'cloud' was 'new'; wifi was patchy, the world wasn't ready.

    It is now! I'm not surprised that Windows never responded - they're locked in 20th cnetury technology (and a 20th century business model), but I am surprised that no-one else has followed (so far).

    You don''t say why you left ... do you miss it?

    ReplyDelete