Analysis / News / Top Stories /

GitHub’s Atom Text Editor Gets a Full IDE

13 Sep 2017 12:26pm, by

This week brings a new way to get your git on: GitHub has announced the release of Atom-IDE, a set of packages designed to bring IDE-style functionality to Atom. As GitHub’s bespoke open source text editor, Atom is a desktop application — built with HTML, JavaScript, CSS, and Node.js integration — that runs on GH’s Electron framework.

Atom is already a top tool choice for the full spectrum of developers, from student to pro. Its intuitive UI, almost Vulcan-mind-meld-level integration into GitHub, and ease of use appeals to new coders — or anyone else who wants to just get right down to work. Atom works across operating systems and provides handy built-in features like smart autocompletion and a built-in package manager that go to work right out of the box. For those with out-of-the ordinary needs or people who just like to mess around with config files, Atom is also designed to be fully hackable, er, completely customizable.

And now here is Atom-IDE, packaging together some of the newest and most useful features into convenient one-stop shopping.

“Today’s launch is the first step down a path toward more first-class IDE functionality in Atom,” said Ian Olsen, Atom engineering manager. “It includes ready-made integrations with five language servers for developers working in Javascript, Typescript, Flow, C#, Java, and PHP.”

The Atom workspace was intentionally built to be highly customizable to meet any developer’s unique needs. Given that the robust open source community surrounding Atom that has contributed literally thousands of additional features and functionalities, what does Atom-IDE do differently? The fundamental answer is, nothing truly new is going on under the surface. But as a set of curated add-on packages to the base model, Atom-IDE can save time.

“Atom has long straddled the line between a text editor and full-blown IDE. Its hyper-modular architecture allows for users who want IDE functionality to have it without sacrificing the experience of those who don’t,” explained Olsen. That said, configuring Atom to use as its fully integrated development environment capacity does require hands-on time and setup. So the GitHub team engineered Atom-IDE to conveniently pre-package the most in-demand features into one easy grab-and-go bundle.

What’s in the box, you ask? Smarter context-aware auto-completion, plus a horde of code navigation features including an outline view, go to definition and find all references. Other handy functions such as hover-to-reveal information, errors and warnings (diagnostics) and document formatting are also included.

Atom-IDE UI for TypeScript

“Atom IDE adds the deep language awareness to Atom that IDE users expect,” said Olsen. “Developers can simply be more productive with the rich tools included in this release. All the things that make life easier: auto-complete, auto-formatting, a code outline view, and diagnostic error view.”

Most significantly, Atom-IDE utilizes the power of language servers to provide deep syntactical analysis of your code and projects. You can add GitHub to the list of organizations — including Microsoft, Eclipse, SourceGraph, Palantir, Red Hat, and Facebook — that have adopted the language server protocol. (Created by Microsoft, the LSP defines a common language for programming language analyzers to speak between client and server.)

Getting started with Atom-IDE is simple. Users can utilize Atom’s “Install Packages” dialogue (Settings > Install Packages and Themes) to search for and install the atom-ide-ui package to establish the IDE user interface. After that it’s a matter of identifying and installing your IDE language support package of choice:

  • TypeScript and JavaScript (ide-typescript): Atom-IDE’s TypeScript package takes advantage of the Microsoft TypeScript server, wrapped up in a language server protocol maintained by the team at SourceGraph.
  • Flow (ide-flowtype): “Our good friends over at Facebook have published ide-flowtype to bring the power of the Flow type annotation system to Atom,” said Olsen.
  • C# (ide-csharp): One of the earliest examples of a language server was OmniSharp for the C# language. GH took advantage of the node-omnisharp package to bring many IDE-like features into Atom for C#.
  • Java (ide-java): The Atom team built on the language servers foundation laid by the Eclipse foundation and Red Hat to create the Java package. You will need a Java 8 runtime installed to get going but then can enjoy much richer editor facilities.
  • PHP (ide-php): This utilizes a PHP language server by FelixFBecker to provide support for the PHP scripting language. (Requires the PHP 7 runtime installed).

(To use Atom-IDE, Atom 1.17+ is required. GitHub recommends using Atom Beta 1.21, which ships with all the necessary process control and file monitoring to make sure that language servers run as they are intended to run. That said, packages based on the language client should work out of the box with atom-ide-ui installed.)

A Collaborative Effort

In creating Atom-IDE, the GitHub team collaborated closely with Facebook engineers. It was a mutually beneficial arrangement, according to Olsen. “The Nuclide team at Facebook has years of experience building IDE functionality in Atom, so it was a no-brainer to get their help,” he said. Nuclide, after all, was already out there — a package built on top of Atom to support projects that used React Native, Flow, and Hack.

“They’re excited to be bringing the most compelling parts of Nuclide to a broader audience, and the Atom team at GitHub is thrilled to have access to their expertise,” said Olsen.

Next Steps for Atom-IDE

Coming soon to Atom-IDE: even more languages! That is, with a little help from the open source community.

“These five are just the beginning; we plan to expand, with the community’s help, the number of languages that Atom-IDE can support,” said Olsen. “We hope to support for all the great languages out there, including Rust, Go, Python, etc.”

Meanwhile, if your favorite language is not yet supported but a language server exists for it, you can — through the beauty of open source software — actually create your own Atom-IDE package! GitHub offers the atom-languageclient npm library to provide common automatic wire-up of the major features, as well as helper tools like downloading support files and conversions.

GitHub is also hoping for support in the next step of making Atom-IDE a true IDE: actually bringing running and editing of your applications under Atom’s aegis. So get busy, check it out, and start hacking. We mean working.


A digest of the week’s most important stories & analyses.

View / Add Comments

Please stay on topic and be respectful of others. Review our Terms of Use.