Nuclide was designed for use by engineers at Facebook, but with the source code release, Facebook wants developers elsewhere to leverage the technology for themselves. It's built as a series of packages on top of GitHub's Atom "hackable" text editor, and platform support is still being developed for it.
Facebook chose the open source, customizable Atom text editor for a number of reasons. A desktop app based on Web technologies, Atom works with OS X 10, Windows 7 and 8 ,and Red Hat and Ubuntu Linux distributions. "It is built with contemporary Web technology that allows us to use our own React and ES7 expertise. It provides a powerful native shell for integrating well with local mobile compilers and build tools," said Facebook Software Engineer Michael Bolin.
As Bolin pointed out in a blog post on Tuesday, Nuclide is still a work in progress. "[Facebook's] vision of a unified cross-platform developer experience is far from complete: Support for the iOS, React, and React Native use cases are all on the near-term roadmap of packages to share." The React Native framework was made available by Facebook in March.
The Nuclide suite, available on GitHub, enables remote development, in which a pair of packages allow connections over SSH to a lightweight node daemon on the server, for remote file editing and syntax/type validation. Facebook's Hack language, for the HHVM (Hip Hop Virtual Machine) is supported as well. "First-class Hack support -- including syntax highlighting, type-checking, autocomplete, and click-to-symbol features -- has been an important requirement on Nuclide from the start," Bolin said.
Flow, which adds static typing to JavaScript, is enabled for remote and local JavaScript development. Mercurial is supported for source code control, and Facebook's Omni-search universal search tool package is included as well.
"While we're very pleased to share these initial packages with the community, we really want to emphasize that this is just a very early start to the project," Bolin said. "For one thing, we still have lots we can do to improve these packages themselves, and are very excited to work with the community to collaborate and iterate on them."