Analysis updated 2026-06-21
Set up a full-featured Emacs editor with Vim-style keys and language support in minutes instead of weeks.
Pick exactly the modules you need, LSP, Docker, Terraform, search, and have them configured automatically.
Keep your Emacs configuration reproducible and updatable with a single doom upgrade command.
Use persistent workspaces, EditorConfig integration, and vim-sneak out of the box without manual configuration.
| doomemacs/doomemacs | syl20bnr/spacemacs | magit/magit | |
|---|---|---|---|
| Stars | 22,078 | 24,540 | 7,093 |
| Language | Emacs Lisp | Emacs Lisp | Emacs Lisp |
| Setup difficulty | moderate | moderate | moderate |
| Complexity | 3/5 | 3/5 | 2/5 |
| Audience | developer | developer | developer |
Figures from each repo's GitHub metadata at analysis time.
Requires GNU Emacs 27.1-30.2, Git 2.23+, and ripgrep installed before cloning and running bin/doom install.
Doom Emacs is a configuration framework for GNU Emacs, the long-running, extensible text editor. Emacs by itself is famously powerful but also famously bare and hard to set up, so a "framework" is a curated starting point: someone else has already chosen sensible defaults, picked which packages to install, written the glue code, and provided commands to update and maintain everything. Doom is aimed in particular at people who like Vim's keyboard model (it ships with optional Vim emulation through evil-mode) but want Emacs' breadth, and at long-time Emacs users who have grown tired of rebuilding their own config from scratch. The way it works is that you clone the repository into a directory like ~/.config/emacs and run a bin/doom install command. Doom is built around about 150 optional "modules" (the README puts the count at ~150). Each module bundles a set of related packages and configuration, for a specific programming language, for a tool like docker or terraform, for LSP support through lsp-mode or eglot, for project search using ripgrep with ivy or helm, for a popup manager that controls how temporary buffers appear, and so on. You list which modules you want in an init.el file and Doom takes care of the rest. The package manager underneath is straight.el, exposed through a command-line tool (doom sync to install missing packages and regenerate caches, doom upgrade to update everything, doom doctor to diagnose problems, doom env to capture your shell environment). The README states the design priorities as performance ("Gotta go fast"), staying close to vanilla Emacs internals, reasonable defaults that you can override, not auto-installing system dependencies, and treating reproducibility seriously (with Nix/Guix called out as fitting that goal). You would pick Doom when you want a full-featured Emacs configuration without spending weeks tuning your own, a Spacemacs-style leader-key scheme (SPC for evil users, C-c for vanilla users), Vim ports like vim-sneak and vim-easymotion, persistent workspaces, EditorConfig integration, and language support out of the box. It requires GNU Emacs 27.1 to 30.2, Git 2.23 or newer, and ripgrep, with fd recommended, the configuration itself is written in Emacs Lisp.
Doom Emacs is a configuration framework for GNU Emacs that gives you ~150 optional modules, Vim-style keybindings, and a CLI tool to manage packages, so you get a full-featured editor without building a config from scratch.
Mainly Emacs Lisp. The stack also includes Emacs Lisp, GNU Emacs, straight.el.
Setup difficulty is rated moderate, with roughly 30min to a first successful run.
Mainly developer.
This repo across BitVibe Labs
Verify against the repo before relying on details.