# Emacs Prelude: a forkable Emacs 29.1+ distribution for people who want the classic editor, tuned

> 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.

**bbatsov/prelude** — Prelude is an enhanced Emacs 29.1+ distribution that should make your experience with Emacs both more pleasant and more powerful.

- Repository: https://github.com/bbatsov/prelude
- Website: https://prelude.emacsredux.com
- Stars: 5,332 · Forks: 1,864
- Language: Emacs Lisp
- License: not declared
- Published: 2026-09-22 · Updated: 2026-09-22 · Language: en
- Canonical page: https://hysenlabs.com/projects/bbatsov-prelude

## 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:

```bash
curl -L https://git.io/epre | sh
```

The 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:

```bash
export PRELUDE_INSTALL_DIR="$HOME/.emacs.d" && \
  curl -L https://github.com/bbatsov/prelude/raw/master/utils/installer.sh | sh
```

If you only want to look before committing, Emacs 29 can start against the cloned repository directly, without touching your existing configuration:

```bash
emacs --init-dir ~/path/to/prelude
```

After 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.

## 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.

## FAQ

### 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.

## Sources

- [bbatsov/prelude on GitHub](https://github.com/bbatsov/prelude)
- [Issues](https://github.com/bbatsov/prelude/issues)
- [Project website](https://prelude.emacsredux.com)
- [README](https://github.com/bbatsov/prelude/blob/master/README.md)
- [Releases](https://github.com/bbatsov/prelude/releases)

---

Hysen Labs editorial analysis, written from the project's own repository and release notes. Cite the canonical page: https://hysenlabs.com/projects/bbatsov-prelude
