← New search

Software

MELPA

MELPA (Milkypostman's Emacs Lisp Package Archive) is a community-maintained repository of Emacs Lisp packages, providing thousands of extensions for the Emacs text editor. It is the largest and most widely used package archive for Emacs, offering a rolling release model that updates packages directly from their source repositories. MELPA complements the default GNU ELPA archive by hosting a broader range of packages, including those not yet integrated into the official distribution. It is integrated into Emacs via the package.el system, allowing users to install and update packages with simple commands. The archive is named after its creator, Donald "Milkypostman" E. Curtis, and is now maintained by a team of volunteers. MELPA's popularity stems from its ease of use and the rapid availability of new and updated packages, making it a cornerstone of the modern Emacs ecosystem.

~7,000+
Packages
Approximate number of packages available in MELPA
2008
Year founded
Year MELPA was created
~1,000
Contributors
Approximate number of contributors to MELPA
1

History and Development

MELPA was created in 2008 by Donald E. Curtis, known as "Milkypostman" in the Emacs community, to address the need for a more comprehensive package archive than the official GNU ELPA. Initially, it was a simple script that built packages from source repositories, but it quickly gained traction due to its rolling release model, which provided updates as soon as they were pushed to upstream repositories. In 2012, the project moved to a collaborative model, with a team of maintainers and a public GitHub repository for package recipes. The archive's infrastructure now includes automated build processes that run on a regular schedule, ensuring that packages are always up-to-date. Over time, MELPA has become the default package source for many Emacs users, and its development has been supported by the community through contributions and donations. The project's history reflects the broader evolution of the Emacs ecosystem, from a monolithic editor to a highly extensible platform with a vibrant package ecosystem.

2

Technical Architecture

MELPA operates by using a recipe system, where each package is defined by a recipe file that specifies the source repository, build steps, and package metadata. These recipes are stored in a central repository on GitHub, and a build server periodically clones each repository, runs the build process, and generates a tar archive or a single-file package. The resulting packages are then indexed in an archive-contents file, which is fetched by Emacs's package.el to display available packages. The build process is automated using a continuous integration system, and packages are built on a rolling basis, typically every few hours. This architecture allows for rapid updates and ensures that packages are always compatible with the latest Emacs versions. MELPA also provides a stable branch, MELPA Stable, which offers tagged releases for users who prefer a more conservative update cycle. The technical design of MELPA has influenced other package archives, such as MELPA's own documentation and the development of alternative archives like Quelpa.

3

Usage and Ecosystem

To use MELPA, users add the archive to their Emacs configuration by setting the package-archives variable to include the MELPA URL. Once added, they can install packages using the package-install command or through the package menu. MELPA hosts a wide range of packages, from popular ones like magit, which provides a Git interface, to niche utilities for specific workflows. The archive is also a testing ground for new packages, as developers can submit recipes to make their work available to the community. MELPA's ecosystem includes tools like use-package, which simplifies package configuration, and Cask, a dependency management tool for Emacs Lisp projects. The archive's popularity has led to its integration into various Emacs distributions, such as Spacemacs and Doom Emacs, which use MELPA as their primary package source. The community around MELPA is active, with discussions on mailing lists, forums, and GitHub, and it plays a crucial role in the ongoing development of Emacs packages.

4

Lesser-known aspects

Beyond its primary function, MELPA has several lesser-known features and historical quirks. For instance, the archive's name is a playful reference to the character Milhouse from The Simpsons, as "Milkypostman" was a nickname. MELPA also supports "package recipes" that can be written in a simple DSL, allowing for complex build processes, such as compiling C extensions or generating documentation. Additionally, MELPA has a "sandbox" feature that allows users to test package installations in a temporary environment, which is useful for debugging. The project has faced challenges, such as the need to handle package name conflicts and the occasional removal of packages due to licensing issues. MELPA also maintains a "mega" package that bundles many popular packages for convenience, though it is not recommended for general use. Furthermore, MELPA's build logs are publicly accessible, providing transparency into the build process and enabling users to troubleshoot issues. These details highlight the depth of the project's infrastructure and its commitment to the Emacs community.

Glossary

GNU ELPA
The official package archive for Emacs, maintained by the GNU project.
package.el
The built-in package manager for Emacs, used to install and manage packages.
Recipe
A file that defines how to build a package from its source repository.
Rolling release
A model where packages are updated continuously from their development branches.
MELPA Stable
A branch of MELPA that provides tagged releases for more stable updates.

MELPA is a community-driven project and is not affiliated with the GNU Project.