Atom Editor Architecture and Design


Is there any documentation on how the architecture of Atom itself is laid out? I’m not asking about how atom-shell works, but rather how Atom is implemented on top of atom-shell, in a fairly broad perspective. How does Atom manage its code and data? Does Atom use any frameworks? What are specific considerations in implementing to maintain performance requirements?

I am interested in building my own application on top of atom-shell but I would also like to make it as modular and customizable as Atom, while keeping it as fast as possible. I’d like to hear what lessons were learned in development of Atom.


This is also my interest.

I think Atom is a great general purpose “documented based application platform”. Right now I’m building a package that adds a new “outline” editor. It will run within Atom, but eventually I’d really like to create a separate application based off Atom that is for editing outlines only. So for example I would remove all the text editor specific commands and menu items, etc.

I think with there modular package based architecture they are moving in this direction, even if it’s not an explicit goal.

If you haven’t found it yet you should also take a look at Atom Shell Starter. They are moving over and generalizing lots of Atom’s core architecture and build system into a new project. But right now I think it’s all pretty low level. They haven’t (and I don’t think have plans to at the moment) port over higher level things like the package management system.