Skip to content


Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?

Latest commit


Git stats


Failed to load latest commit information.

Things here have gotten a bit behind. I could use some real help to keep pushing this guide forward. If you'd like to help with the content and the direction of Splitting Atoms, say the word and we can discuss how to move forward.

Splitting Atoms

a community-built guide to hacking on the Atom editor

A hackable text editor for the 21st Century

At GitHub, we're building the text editor we've always wanted. A tool you can customize to do anything, but also use productively on the first day without ever touching a config file. Atom is modern, approachable, and hackable to the core. We can't wait to see what you build with it.

It is still a work in progress, but you should check out the Splitting Atoms guide.

To find out more about Atom from the team itself, read Introducing Atom and The Nucleus of Atom.

Atom is now completely open-source. This includes Atom, APM (the Atom Package Manager), and Atom-Shell. Check out the blog post for more of the details.

Contributing to Splitting Atoms

There are a number of ways to contribute to this project:

  • What are the sections, topics, and guides that are missing? There should still be lots of them, so open up some issues and send pull requests!

  • If you are excited about Atom and have already started digging into it and hacking on it, then you are just the person we need to contribute to this community-built, community-driven guide. Write about your experience tinkering with part of Atom and help refine and clarify what is already written here. Send pull requests and open issues. Specific areas you can help

    • Write a guide on building a package, especially if it involves an interesting part of the Atom API or uses a 3rd party library in an innovative way. These belong on the PackageGuides directory.
    • Write a guide on building a theme. These belong in the ThemeGuides directory.
    • Write a guide for defining killer configuration settings. These belong in the ConfigurationGuides directory.
    • Write a guide describing a particular workflow for development with a given language or technology. These belong in the WorkflowGuides directory.
  • If something about Atom completely perplexes you or you find parts of the official Atom documentation that are completely lacking, open an issue so that we can look into it and address it in the guide.

  • Create a badass Splitting Atoms logo that can eventually be displayed in our README, on our website, and in an eBook.

Further instructions can be found in contributing guide.


If you are interested in contributing to Splitting Atoms, make sure you have the following dependencies satisfied and then follow the instructions for getting this site going locally.


Splitting Atoms is a static site generated from Markdown and HTML files. The site is generated by some ruby gems. If you don't already have RubyGems on your machine, go ahead and download RubyGems. From there you will need to install jekyll (~1.4.3):

$ gem install jekyll

Front-End Dependencies

We also use Bower for managing front-end dependencies. This is an optional dependency for development because all front-end dependencies have been committed to the repository. However, if you plan to update or add bower packages, you will need NPM and Bower.

Running Locally

Assuming you have satisfied the above dependencies, you should be ready to develop Splitting Atoms locally. If you haven't already, fork the repository and clone it onto your machine. Navigate to the Splitting Atoms directory and launch a Jekyll server:

$ cd path/to/splitting-atoms
$ jekyll serve --watch --baseurl=

This will tell Jekyll to launch a server at the default port of 4000. Open up localhost:4000 in your favorite browser to see.

  • The --watch flag tells Jekyll to keep an eye out for changes to the site and regenerate the site when changes do happen.
  • The --baseurl= flag sets the configuration's baseurl to an empty string overriding that value in the _config.yml file which is set to a different value for deployment as a GitHub page.

Splitting Atoms' Goals

  • Develop supplementary guides, documentation, and tutorials for Atom
  • Organize the guides, documentation, and tutorials into an Atom developers guide
  • Publish the Atom developers guide as a website
  • Publish the Atom developers guide as a PDF/eBook


Everything here is licensed under the MIT license.


😵 a community-built, community-driven guide to hacking on the Atom editor







No releases published


No packages published