Survey of Development Options In ChromeOS
In the fall of 2012 my trusty old Dell Inspiron laptop died on me. At the time I needed to replace it ASAP but was on a strict budget, I needed it for an internship but couldn’t afford much more than $300. Desperate I ordered one of those newfangled Chromebooks I had heard about online due to their cost and am still using it today. A lot about ChromeOS has changed in that four years and its inspired me to put together this guide from my time using and hacking my little Samsung Chromebook. This will hopefully be part one of many.
Lets talk about ChromeOS for a minute. You can call it a gimmick or a fad but I think its fair to acknowledge that at this point, its here to stay. In fact, this past May they surpassed Apple’s MacBook line for the first time in sales according to the IDC estimates. Despite their uptick in popularity though, most of the guides you might find scattered about disparate corners of the internet are notoriously out of date when it comes to using Chromebooks as development devices. Lets fix that.
The first thing to consider about a Chromebook (or even Chromebase) as a possible development machine is the use case. The general consensus is Chromebooks work great as a secondary machine although they can function as a person’s daily driver with a little effort. In my opinion Chromebooks shine when they’re paired with a desktop allowing them to handle on the go and travel duties. If a supplemental machine is what you’re after, you will likely be satisfied with almost any Chromebook. Almost right out of box Chromebooks have the tools to pair nicely with an existing traditional operating system of any type. However if you plan on going the extra mile and turning a Chromebook into your primary development device you will definitely need to take an extra look at the hardware side of equation before investing any money.
ChromeOS devices may be relatively cheap but doesn’t mean they’re all plastic garbage. Due to their netbook-esque heritage and light system requirements, Chromebooks typically don’t have very much RAM or hard drive space to make great primary development machines. Of course the caveat to this is that there are several models where a user can expand either memory or RAM if not both on several models. As Chromebooks continue their push into enterprise they also are seeing an increase in specs to counteract their perceived weakness. Hardware architecture is the final vital thing to consider when selecting a Chromebook but I’ll circle back to this below. Though they may be cheap, researching a particular model that fits your ideal use case will keep your investment from feeling like sunk cost you’re stuck with.
Right, so now at this point you’ve decided on a ChromeOS device (or maybe like me you want to use a device you bought a while back). Now what? There are three basic ways you can go about using a Chromebook as a development device; remote connections, webIDEs, and locally. By far the easiest way to go is to use a remote desktop program like VNC, TeamViewer,or even Google RDP, and turn your ChromeOS device into a thin client for accessing a desktop. This works well if you know you’ll have a reliable internet connection the whole time. Secondly you could use a web based IDE. I won’t cover them here, they’ve been extensively covered elsewhere, but services like Nitrous, Cloud 9, Koding, and the rest are all available by web application. Lastly, local solutions are a whole other bucket of worms with several different approaches you could take.
There are a growing number of local development options in ChromeOS. At the most basic level you can find a small number of unaffiliated text editors in the Chrome Web Store (my personal recommendation is Caret) some of which will work with Google Drive. Most of them are fairly basic when compared to traditional IDE’s. They can be complemented with tools to manage Git repositories like Gitnu. This is a solution that works well assuming you don’t need to do much more than edit a few files or are working on a frontend project, but what if you need to do more? More advanced solutions exist further down the rabbit hole.
Before venturing further down the rabbit hole its important to ask why? If all you’re doing is editing front end projects you may not need to; after all ChromeOS is based around the browser. If you can work with Chrome’s developer tools and accomplish everything you need there’s no need to go farther. But if you still need a more robust tool set, or just want a cheap way to explore Linux you can do more with Chromebooks. Going down the rabbit hole can get you a full Unix environment where you can do nearly anything in any language.
If you’re willing to place your Chromebook in developer mode (and lets face it this guide is meant for those capable and willing do so) you can open up the innards of the OS and exploit its underlying Linux base. Way deep down, under all it Google goodies, ChromeOS is a specially modified port of Gentoo Linux which means we’ve got a familiar operating system which we can work with. This will give the ability to use a Chromebook as a development device just like any other Linux distribution. Today there are two main avenues to using a Chromebook with Linux: Crouton and Portage.
Crouton has traditionally been the easiest way to run a full blown Linux system on ChromeOS. Most older guides focused on running Linux in ChromeOS have gone this route; chances are you’ve seen the old LifeHacker post shared to infinity about it. Initially started by David Schneider of Google it is a chroot that lets the user virtualize one of several Linux distros on their device. A user can chose between Ubuntu, Debian or Kali Linux with varying degrees of support for individual releases (as usual Long Term Service releases have the most support) as well as targeting different desktop environments. Most of the initial work was done in between 2012 and 2014 and has seen sparse updating as its become mostly stable. With such wide appeal it has seen lots of use and has fairly thorough documentation and support. Its latest feature to date is the change from a separate screen to being virtualized as an individual Chrome window (requires the chrome app). Once you’re inside Crouton you can treat it exactly like you would the installed distro.
The other option is to drop into a shell and manage ChromeOS via Gentoo’s package manager, Portage. If you opt to go this route Chromium Projects and Gentoo forums will be your best source of information and support. This will place more responsibility on the user to manage things themselves, negating one of the core advantages of ChromeOS. Taking this approach will still leave you with the default desktop environment and is best used either in conjunction with another solution like Crouton or if you’re comfortable working with only command line. Still, if you’re familiar with Gentoo it is an option available.
Lets say however you want to go even further down the rabbit hole and push your Chromebook past the limits of ChromeOS. There are solutions to either replace or dual-boot another operating system on your Chromebook. The most prominent are Chrubuntu and GalliumOS. Chrubuntu was developed in the early days of ChromeOS to run Ubuntu as a replacement OS. While the developer’s website hasn’t been updated in several years, the community has attempted to provide support for newer releases most notably at Reddit’s /r/chrubuntu. GalliumOS is a newer effort that is aimed at creating a more traditional desktop environment for supported Chromebooks. Currently it seems as though it has inherited a large portion of developer attention originally focused around the Chrubuntu and Crouton and will continue to mature. In addition to these two there are various ports of popular Linux distributions floating around the internet often related to specific Chromebooks; this is by no means the definitive list.
Once you progress into options that involve booting your device into developer mode another factor becomes vitally important, CPU architecture. Chromebooks either come with an ARM or x86 based CPU which will determine what the possibilities are for any individual model. A quick primer for those unfamiliar with the difference. Traditionally ARM chips are commonly found in mobile devices; they tend to feature better battery life at the cost of processing power. Inversely x86 based chips are what you find in other computers and typically have greater speeds at the cost of battery power. Today’s CPU manufacturers are rewriting those rules slowly but surely and bringing the two closer together.
What this means of course for extra-ChromeOS development is that most software is designed for x86 based devices and you may face limitations based on your device. Atom, for instance, is not yet working well with ARM based devices though it can be compiled (not well yet). Within the past year progress has been made in this area but it is still important when deciding what you would like to do with your device. GalliumOS offers no support for ARM devices what so ever although Chubuntu and Crouton do have slightly limited offerings.
Whether you’re looking to re-purpose an old device or get a brand new one there ARE options for using Chromebooks as development devices. How far you want to go and what solution will ultimately vary for the individual. If you do opt to go beyond the supported Google solutions I highly recommend checking out communities at Google +, Chromium, or Reddit for support. Good luck and good hacking!
Check back for more info, I’m going to try and keep this updated as a part of a new series. Next up, setting up your ARM based Chromebook.