The daily grind of web development usually means working with various file formats, including HTML, JavaScript, and Ruby. For this reason, a text editor — whether it is the much-maligned Notepad or perhaps the popular Sublime Text — is a critical development tool. In fact, if you want to get a developer talking, ask her to tell you about her favorite text editor.

One alternative to the well-known options is Atom. After trying Atom, I find it a useful addition to my toolbox, and I think other developers might want to take it for a spin. Here’s what you need to know about Atom.

Why introduce another text editor?

There are a lot of text editors, so my first question about Atom was: Why reinvent the wheel?

GitHub is the force behind Atom. The push behind Atom was, or seems to be, building such a tool using web technologies. Atom is built on top of Google’s open source browser project called Chromium, and it uses various web standards to configure and extend.

Available on Mac, Windows, and Linux

When Atom first arrived on the scene, there were numerous complaints about it being proprietary and only available on the Mac OS, but recent versions run on Windows and Linux, and the source code is open source. The caveat for Linux users is you need to compile the source to run on your platform. For Windows users, they encourage you to install via Chocolatey.

I installed Atom on my Mac Pro (simply download and run the installation package) and Windows 7 machines with no problems. I cannot speak to compiling on any flavor of Linux.

A Sublime-like, friendly interface

Sublime is a very popular text editor and seems to be the standard in the Ruby community; I used it for a while when I jumped into Ruby on Rails development. Atom’s resemblance to Sublime is easy to see. Figure A shows the basic Atom interface with two files open via split pane view.

Figure A

The Atom interface pays homage to Sublime.

In order to meet my needs, a text editor must have these key features:

  • Easy to work with various file formats;
  • A simple interface that is easy to navigate;
  • Tabs for working with multiple files;
  • The ability to split the window to simultaneously look at multiple files (Figure A); and
  • The ability to open one file or an entire directory with files presented in a tree on the left.

Another critical feature is searching, as I often open files and need to quickly find specific items in one or more files. Atom provides search and replace as well as the fuzzy finder feature. Figure B shows the search menu options, and Figure C shows a search across all files (the files available in the tree). Fuzzy finder allows you to quickly find a file by typing all or part of its name (Figure D) — it is accessed via keyboard shortcut (CTRL-T on Windows, CMD-T on Mac).

Figure B

Atom’s Find menu provides lots of options.

Figure C

Easily search and replace across one or more files in Atom.

Figure D

Atom’s Fuzzy finder makes it easy to find files.

For most developers, keyboard shortcuts are critical. Atom provides keyboard shortcuts for seemingly everything — you can hit bring up a list of keybindings any time you are stumped (CTRL-SHIFT-P on Windows and CMD-SHIFT-P on Mac). One keyboard shortcut that I quickly learned is the backslash, which toggles the tree view, giving a larger area to work with files.

Extend base functionality with packages

A key aspect of an open source editor like Atom is the community’s ability to extend it, which leads to it being labeled “the hackable editor.” This is feasible by contributing to its development via its GitHub project, along with extending its base functionality with packages. Packages add functionality to the base Atom editor. You simply install the package and run with it.

As an example, I found this package to add support for coding C# in Atom. Packages are installed via the Atom Package Manager command line (apm install <package name>). Packages are developed in CoffeeScript as the online guide outlines.

In addition to adding features via packages, the Atom environment is customizable in various ways, starting with its appearance via themes; the Customizing Atom page provides more information on these options. You can view current settings as well as stylesheet via the Atom File menu (Figure E).

Figure E

Atom settings accessible via the File menu.

Under the hood

A lot of the Atom discussion seems to be on its foundation — that is, it’s built using web standards and not a native application like Sublime that is coded and tweaked for targeted platforms. The drawback to the non-native approach is performance. I have not noticed any performance issues with Atom, but I have not stress tested it. There are concerns with its handling of large files, but this does not seem like normal usage — at least when I work with code files that are not huge.

With GitHub behind the product, I expect issues to be addressed quickly (the release cycle has been frequent so far), but it will be interesting to see how GitHub deals with the inherent limitations of a non-native application that relies so much on JavaScript and its many flavors as it prefers CoffeeScript.

A useful tool

Atom is still in its infancy, but I like its direction. I do a lot of .NET development via Visual Studio, though I do other projects as well as I continue to wade deeper in the Ruby waters. The cross-platform support with Atom means I can use the same tool whether I am using my Mac or Windows machine, thus making it a useful addition to my toolbox.

With GitHub backing Atom’s development, I am interested to see how this text editor progresses.