Thursday, October 25, 2012

Developing on the Chromebook

I love the concept of the Chromebook/ChromeOS and I think its concept is at the right place and right time. The internet seems omnipresent and having your stuff in the cloud makes it convenient and available to you whenever and wherever you are with any device. Having your stuff in a centralized place also makes sharing & collaboration so much easier. I can only imagine how much brainpower (& Schrödinger cats) it took for Google to nail this with Google Docs.

That said, it is still ahead of its time when it comes to my work, though it really doesn't need to be. My job is mostly web (Drupal, PHP and Perl) development and I primarily use 3 applications on the front-end (Eclipse, Terminal and Chrome) and 2 applications on the back-end (MySQL and Apache [with Perl & PHP support]). Nothing really CPU-intensive and in my opinion, it's a perfect fit for the ChromeOS environment. I thought I'd share my thoughts on how it could work...

Chrome

First, the easy one: Chrome. Check. It would be cool to have some way to test webpage rendering with other browser engines so we can do cross-browser testing on one machine, but that's probably a pipe-dream.

Eclipse

This is also an easy one, as there are multiple cloud-based IDE solutions out there. Cloud9 and ShiftEdit come to mind. Here are some must-have features as I see them:

  • Offline support: If I'm offline, I should still be able to open & edit my code. When I'm back online, my changes should sync up with the cloud. I don't think it's necessary to merge my changes with any cloud changes, as I'm usually working on my own repository branch anyway.
  • Git support: Yes, there are other repository systems, but Git is awesome and dare I say, the most popular one? This can also handle the dirty work of merging my changes with the rest of the team. Being able to hook up to multiple Git repositories, including SSH ones with keys, would be great.
  • Customizable language-specific options, such as syntactical color coding and formatting.

Terminal

I use Terminal mostly to look at error logs and open a MySQL console. This functionality could be incorporated into the interface for a backend system.

Backend System

This is (what we call in the South) a big'un (big one, for the rest of y'all ;)). One of the nice workflows that I have is when I make a change in my code, I save and then go to my browser to refresh. All of this is done locally so when I break something, it doesn't affect anyone else. So what I envision is some sort of app that has lots of knobs & dials to configure a local database and web server instance. Or it could be made simpler by creating a virtual machine instance and having a console window where the developer can do the configuration stuff manually. It could mount the filesystem that the code editor is using to run the code.

If someone nailed this, it would open ChromeOS as a web development platform, which would not only open the doors to millions of web developers, but allow for more people to become web developers, building a better Web. :)

NOTE: This is all high-level and I'm probably missing a few details ... feel free to comment below with your thoughts and suggestions.