Although several thousand Emacs Lisp libraries exist, GNU Emacs, until version 24.1 did not have an (internal) package manager.
I guess that most users would agree that it is currently rather inconvenient to find, install and especially keep up-to-date Emacs Lisp libraries.
Pages that make life a bit easier
For versions of Emacs older than 24.1:
- Emacs Lisp List - Problem: I see dead people (links).
- Emacswiki - Problem: May contain traces of nuts (malicious code).
- Emacsmirror - The package repository I am working on. Problem: No package manager supports it natively yet.
Some package managers
It's not that nobody has tried yet. (Some of these did not exist when this question was asked.)
- auto-install
- borg.el - Assimilate Emacs packages using Git submodules.
- el-get.el - Supports many sources.
- elinstall.el
- epackage aka DELPS - Debian packaging concepts applied to Emacs Lisp packages.
- epkg.el - This is now just a tool for browsing the Emacsmirror.
- install.el
- install-elisp.el
- jem-pkg.el
- package.el - ELPA. Seems like it will be included in Emacs 24.
UPDATE -- package.el is included in GNU Emacs, starting with version 24.1
- pases.el
- pelm - Command line installer; using php.
- plugin.el
- straight.el - Recent and experimental, has not reached 1.0 release yet.
- use-package.el
- XEmacs package manager
package has been included in the Emacs trunk. epkg is not ready yet and also currently not available. At least install-elisp, plugin and use-package do not seem to be actively maintained anymore.
I have created a git repository containing all these package managers as submodules.
Some utilities that might be useful
Package managers could use these utilities and/or they could be used to maintain a mirror of packages.
- date-calc.el - Date calculation and parsing routines.
- ell.el - Browse the Emacs Lisp List.
- elm.el, elx.el, xpkg.el - Used to maintain the Emacsmirror.
- genauto.el - Helps generate autoloads for your elisp packages.
- inversion.el - Require specific package versions.
- loadhist.el, lib-requires.el, elisp-depend.el - Commands to list Emacs Lisp library dependencies.
- project-root.el - Define a project root and take actions based upon it.
- strptime.el - Partial implementation of POSIX date and time parsing.
- wikirel.el - Visit relevant pages on the Emacs Wiki.
Discussions about the subject at hand
The question (finally)
So - I would like to know from you what you consider important/unimportant/supplementary etc. in a package manager for Emacs.
Some ideas
- Many packages (the Emacsmirror provides that largest available collection of packages, but there is no explicit support in any package manager yet).
- Only packages that have been tested.
- Support for more than one package archive (so people can choose between many/tested packages).
- Dependency calculated based on required features only.
- Dependencies take particular versions into account.
- Only use versions that have been released upstream.
- Use versions from version control systems if available.
- Packages are categorized.
- Packages can be uninstalled and updated not only installed.
- Support creating fork of upstream version of packages.
- Support publishing these forks.
- Support choosing a fork.
- After installation packages are activated.
- Generate autoload files.
- Integration with Emacswiki (see wikirel.el).
- Users can tag, comment etc. packages and share that information.
- Only FSF-assigned/GPL/FOSS software or don't care about license.
- Package manager should be integrated be distributed with Emacs.
- Support for easily contacting author.
- Lots of metadata.
- Suggest alternatives before installing a particular package.
I am hoping for these kinds of answers
- Pointers to more implementations, discussions etc.
- Lengthy descriptions of a set of features that make up your ideal package manager.
- Descriptions of one particular desired/undesired feature. Feel free to elaborate on my ideas from above.
- Surprise me.