Emacs Prelude: a forkable Emacs 29.1+ distribution for people who want the classic editor, tuned
Prelude is an enhanced Emacs 29.1+ distribution that should make your experience with Emacs both more pleasant and more powerful.
At a glance
- What is it?
- Prelude is an Emacs distribution that changes defaults, bundles a curated package set and keeps most language modules opt-in. It is aimed at newcomers who want a working Emacs and at power users who want a base to fork, not a finished product.
- Who is it for?
- Adopt Prelude if you want a standard Emacs keybinding model with better defaults and a small, readable module layer you can fork; skip it if you want Vim keys, a packaged end-user product or support for Emacs 28 and older, which the README says Prelude no longer supports.
- Can I use it commercially?
- Not without permission. GitHub finds no licence file in the repository, and without a licence all rights are reserved by default: you may read the code but not reuse it. Check the README, or ask the authors, before using it.
- Is it still maintained?
- Yes. The repository last received commits 2 days ago.
- What is it written in?
- Mainly Emacs Lisp, according to GitHub's language statistics.
Answers come from the project's GitHub data, last synced on September 30, 2026, and from our analysis. They are not legal advice.
Editorial analysis
What Prelude changes, and for whom
Stock Emacs is a general-purpose editor with defaults that assume you will configure it yourself. Prelude is a distribution that makes those choices for you: it alters a lot of default settings, bundles additional packages and adds its own core library. The README frames the audience in two halves. For Emacs newcomers it offers an easy to use configuration; for power users it offers a base with additional capability.
The scope is deliberately narrow. Prelude is not a product with a feature checklist to complete. The README states the philosophy as simple, easy to understand and extend, stable, and a foundation to build upon. That last phrase is the useful one: the project expects you to fork it. The README says you do not really need to track Prelude's upstream and that you are encouraged to use it as the basis for your own configuration.
Two constraints follow from that. Prelude is compatible only with GNU Emacs 29.1 or newer, and the README advises running it with the latest stable Emacs release. It also refuses to enable evil-mode by default, so anyone arriving from Vim-style distributions will find the standard Emacs keybindings intact. That is a positioning decision, not an oversight.
The module system and what loads when
The repository is split into core/, modules/, personal/, sample/, test/, utils/ and vendor/ directories, with early-init.el and init.el at the top level. The split matters because it separates the distribution's own code from yours. Personal settings live under personal/, and the README tells you to adjust prelude-modules.el there after installation.
Most modules are opt-in. The README is explicit that by default most of the modules shipped with Prelude are not loaded, and that the default config enables only a handful. Language modules are short and set up only essential packages, sometimes nothing more than the major mode for that language. So a fresh Prelude install is closer to tuned Emacs than to a full IDE, and the cost of enabling a module is a line in a config file rather than a package manager decision.
Prelude 2.0, the major release described in the README, modernizes the distribution around Emacs 29 features. For built-in modes that ship both classic and tree-sitter variants, such as python-mode and python-ts-mode, Prelude selects the tree-sitter version when a grammar is available and falls back to the classic mode when it is not. Some modules use tree-sitter unconditionally: the README gives prelude-ocaml, which uses neocaml and is tree-sitter-only, as an example, and notes that such modes typically auto-install their grammars. The fallback behaviour is the more interesting design choice, because it means a missing grammar degrades the editing experience instead of breaking startup.
Installing Prelude and enabling your first module
The fastest path assumes a Unix-like system (the README lists *BSD, GNU/Linux, macOS and Solaris), a recent Emacs, plus git and curl. The one-line installer fetches a shell script and runs it:
curl -L https://git.io/epre | shThe installer unpacks Prelude into .emacs.d. The README notes that it backs up any existing .emacs file or .emacs.d directory first, so the previous configuration is preserved under a backup name rather than deleted. If you prefer a manual install, the README says to make sure you have no .emacs file and to back up your existing .emacs.d yourself.
Two environment variables control the install. PRELUDE_INSTALL_DIR changes the target directory, and PRELUDE_URL points at a different source repository, which is what you would use to install your own fork:
export PRELUDE_INSTALL_DIR="$HOME/.emacs.d" && \
curl -L https://github.com/bbatsov/prelude/raw/master/utils/installer.sh | shIf you only want to look before committing, Emacs 29 can start against the cloned repository directly, without touching your existing configuration:
emacs --init-dir ~/path/to/preludeAfter installation, open prelude-modules.el in your personal directory and uncomment the modules you want. The README warns about this step in bold: by default most bundled modules are not loaded, so a fresh install will not have language support until you say so. The sample/prelude-modules.el and sample/prelude-pinned-packages.el files in the repository show the expected shape of those files.
Where Prelude is the wrong tool
The Emacs 29.1 floor is the first hard limit. The README states that Prelude no longer supports Emacs 28 or older, and that 29 brings built-in tree-sitter, Eglot and use-package, which Prelude 2.0 takes advantage of. On a distribution that ships an older Emacs, or on a machine where you cannot upgrade, Prelude is simply not an option. There is no compatibility branch described in the README.
The second limit is philosophical. Prelude intentionally does not pack all the bells and whistles it could, and it will not enable evil-mode by default. If you want Vim keybindings out of the box, or a distribution that behaves like a finished application, this is the wrong starting point. The README contrasts Prelude with Spacemacs and Doom Emacs on exactly this axis: Prelude is less opinionated and closer to standard Emacs.
The third limit is the installer's behaviour. It unpacks into .emacs.d and backs up what was there. That is fine on a fresh machine and awkward on one where .emacs.d holds hand-written configuration you still depend on. The README's escape hatch is the --init-dir flag, which runs Prelude from a clone without disturbing the existing setup. Use that first if you are unsure.
Finally, the README does not document a rollback procedure beyond the installer's backup, and it does not describe how to uninstall Prelude. If reversibility matters, keep your own copy of the previous configuration.
Prelude against Doom Emacs and Spacemacs
The README names Spacemacs and Doom Emacs as the comparison points and states the difference directly: Prelude is less opinionated than both, meaning it stays closer to the standard Emacs experience. That single sentence carries most of the decision. Doom and Spacemacs are built around their own conventions and, in Spacemacs' case, a modal editing layer; Prelude keeps the Emacs you already know and adjusts it.
The practical consequence is package count. Prelude installs relatively few additional packages by default, and most modules are opt-in. A distribution that ships a large default package set gives you more capability on first launch and more surface area to debug when something conflicts. Prelude trades that reach for a smaller default footprint and a module file you edit by hand.
The second consequence is upgrade posture. Because Prelude expects you to fork it, staying on upstream is optional. Distributions that behave like products generally expect you to follow their releases. If you want a configuration you own outright and can diverge from without merge pain, Prelude's model fits better; if you want the distribution's maintainers to keep making the choices, it fits worse.
Maintenance, licensing and the cost of upgrading
The last push to the repository was on 2026-07-20, and the most recent release is v2.1.0 from 2026-03-29. The release history is worth reading before you commit: v1.0.0 in 2020, v1.1.0 in 2021, then a gap until v2.1.0 in 2026. The README describes Prelude 2.0 as a major release that modernizes the distribution around Emacs 29 features, which explains where the time went and also tells you the project's cadence is not rapid.
That cadence is consistent with the stated philosophy. The README says bundled third-party packages are vetted and that Prelude is unlikely to immediately adopt a shiny new package when established alternatives exist. Slow movement is the intent, not a symptom.
Upgrade cost depends on how you use it. If you forked Prelude and treat it as your own configuration, upstream releases matter little; you pull what you want. If you track upstream, the 1.x to 2.x transition is the expensive kind, since it raises the Emacs floor to 29.1 and rewires mode selection around tree-sitter. The README's upgrade section is the place to read before moving.
On licensing, the README carries a GPL 3 badge linking to the GNU GPL v3 text. That is the licence the project presents for itself. What it means for configuration you write on top of Prelude, or for a fork you redistribute, is a question for a lawyer rather than for this article.
Editorial conclusion
Adopt Prelude if you want a standard Emacs keybinding model with better defaults and a small, readable module layer you can fork; skip it if you want Vim keys, a packaged end-user product or support for Emacs 28 and older, which the README says Prelude no longer supports. Before installing, back up any existing .emacs or .emacs.d, because the installer overwrites that path after making its own backup, and check the sample/prelude-modules.el file to see which modules are off by default. Verify the Emacs version on the machine first, since 29.1 is a hard floor rather than a recommendation.
Frequently asked questions
What Emacs version does Prelude require?
Prelude is compatible only with GNU Emacs 29.1 or newer, and the README advises running it with the latest stable Emacs release. It no longer supports Emacs 28 or older.
How do I install Prelude?
On a Unix-like system with Emacs, git and curl present, the README gives a one-line installer that fetches a shell script and runs it, unpacking Prelude into .emacs.d. The installer backs up any existing .emacs file or .emacs.d directory first.
How do I use Prelude without replacing my current Emacs configuration?
On Emacs 29 or newer you can clone the repository and start Emacs against it with the --init-dir flag, pointing at the clone. The README presents this as a way to try Prelude, or any other Emacs distro, before installing it.
Why are most Prelude modules not loaded after installation?
Prelude ships most modules as opt-in. The README states that by default most bundled modules are not loaded and that the default config enables only a handful, so you adjust prelude-modules.el in your personal directory to turn on what you need.
Does Prelude enable Vim keybindings by default?
No. The README says Prelude would never enable something like evil-mode by default, and describes the distribution as staying close to the standard Emacs experience.
Official sources
Add this badge to your README
If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.
[](https://hysenlabs.com/projects/bbatsov-prelude)