Note that there are some explanatory texts on larger screens.

plurals
  1. POWhat do you expect from a package manager for Emacs?
    text
    copied!<p>Although several thousand Emacs Lisp libraries exist, GNU Emacs, until version 24.1 did not have an (internal) package manager.</p> <p>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.</p> <p><strong>Pages that make life a bit easier</strong></p> <p>For versions of Emacs older than 24.1:</p> <ul> <li><a href="http://www.damtp.cam.ac.uk/user/sje30/emacs/ell.html" rel="nofollow noreferrer">Emacs Lisp List</a> - Problem: I see dead people (links).</li> <li><a href="http://www.emacswiki.org" rel="nofollow noreferrer">Emacswiki</a> - Problem: May contain traces of nuts (malicious code).</li> <li><a href="http://github.com/emacsmirror/p/wiki" rel="nofollow noreferrer">Emacsmirror</a> - The package repository I am working on. Problem: No package manager supports it natively yet.</li> </ul> <p><strong>Some package managers</strong></p> <p>It's not that nobody has tried yet. (Some of these did not exist when this question was asked.)</p> <ul> <li><strong><a href="http://www.emacswiki.org/emacs/AutoInstall" rel="nofollow noreferrer">auto-install</a></strong></li> <li><strong><a href="https://github.com/emacscollective/borg" rel="nofollow noreferrer">borg.el</a></strong> - Assimilate Emacs packages using Git submodules.</li> <li><strong><a href="http://www.emacswiki.org/emacs/el-get.el" rel="nofollow noreferrer">el-get.el</a></strong> - Supports many sources.</li> <li><a href="http://repo.or.cz/w/elinstall.git" rel="nofollow noreferrer">elinstall.el</a></li> <li><strong><a href="http://github.com/jaalto/project--emacs-epackage" rel="nofollow noreferrer">epackage</a></strong> aka DELPS - Debian packaging concepts applied to Emacs Lisp packages.</li> <li><a href="http://gitlab.com/tarsius/epkg" rel="nofollow noreferrer">epkg.el</a> - This is now just a tool for browsing the Emacsmirror.</li> <li><a href="http://www.iro.umontreal.ca/~monnier/elisp/install.el" rel="nofollow noreferrer">install.el</a></li> <li><a href="http://www.emacswiki.org/emacs/install-elisp.el" rel="nofollow noreferrer">install-elisp.el</a></li> <li><a href="http://www.jemarch.net/jempkg.html" rel="nofollow noreferrer">jem-pkg.el</a></li> <li><strong><a href="http://tromey.com/elpa/" rel="nofollow noreferrer">package.el</a></strong> - ELPA. Seems like it will be included in Emacs 24.</li> </ul> <hr> <p><strong><em>UPDATE -- package.el is included in GNU Emacs, starting with version 24.1</em></strong></p> <hr> <ul> <li><a href="https://launchpad.net/pases" rel="nofollow noreferrer">pases.el</a></li> <li><a href="http://github.com/eggcaker/pelm" rel="nofollow noreferrer">pelm</a> - Command line installer; using php.</li> <li><a href="http://gmarceau.qc.ca/plugin.el" rel="nofollow noreferrer">plugin.el</a></li> <li><a href="https://github.com/raxod502/straight.el" rel="nofollow noreferrer">straight.el</a> - Recent and experimental, has not reached 1.0 release yet.</li> <li><a href="http://www.emacswiki.org/emacs/UsePackage" rel="nofollow noreferrer">use-package.el</a></li> <li><a href="http://www.xemacs.org/Documentation/packageGuide.html" rel="nofollow noreferrer">XEmacs package manager</a></li> </ul> <p>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.</p> <p>I have created a git <a href="https://github.com/emacsmirror/all-package-managers" rel="nofollow noreferrer">repository</a> containing all these package managers as submodules.</p> <p><strong>Some utilities that might be useful</strong></p> <p>Package managers could use these utilities and/or they could be used to maintain a mirror of packages.</p> <ul> <li><a href="http://www.emacswiki.org/emacs/date-calc.el" rel="nofollow noreferrer">date-calc.el</a> - Date calculation and parsing routines.</li> <li><a href="http://www.damtp.cam.ac.uk/user/sje30/emacs/ell.el" rel="nofollow noreferrer">ell.el</a> - Browse the Emacs Lisp List.</li> <li><a href="http://github.com/tarsius/elm" rel="nofollow noreferrer">elm.el</a>, <a href="http://github.com/tarsius/elx" rel="nofollow noreferrer">elx.el</a>, <a href="http://github.com/tarsius/xpkg" rel="nofollow noreferrer">xpkg.el</a> - Used to maintain the <a href="http://www.emacsmirror.org" rel="nofollow noreferrer">Emacsmirror</a>.</li> <li><a href="http://www.gnufans.net/~deego/emacspub/lisp-mine/genauto/" rel="nofollow noreferrer">genauto.el</a> - Helps generate autoloads for your elisp packages.</li> <li><a href="http://www.emacswiki.org/emacs/InVersion" rel="nofollow noreferrer">inversion.el</a> - Require specific package versions.</li> <li><a href="http://www.emacswiki.org/emacs/LibraryDependencies" rel="nofollow noreferrer">loadhist.el, lib-requires.el, elisp-depend.el</a> - Commands to list Emacs Lisp library dependencies.</li> <li><a href="http://www.shellarchive.co.uk/content/lisp/project-root.el" rel="nofollow noreferrer">project-root.el</a> - Define a project root and take actions based upon it.</li> <li><a href="http://www.emacswiki.org/emacs/strptime.el" rel="nofollow noreferrer">strptime.el</a> - Partial implementation of POSIX date and time parsing.</li> <li><a href="http://www.emacswiki.org/emacs-en/wikirel.el" rel="nofollow noreferrer">wikirel.el</a> - Visit relevant pages on the Emacs Wiki.</li> </ul> <p><strong>Discussions about the subject at hand</strong></p> <ul> <li><a href="http://article.gmane.org/gmane.emacs.devel/101927" rel="nofollow noreferrer">emacs-devel 20080801</a></li> <li><a href="http://groups.google.com/group/comp.emacs/browse_thread/thread/696d4ba8809ff258" rel="nofollow noreferrer">comp.emacs 20021121</a></li> <li><a href="http://www.emacswiki.org/emacs/RationalElispPackaging" rel="nofollow noreferrer">RationalElispPackaging</a></li> </ul> <p><strong>The question (finally)</strong></p> <p>So - I would like to know from you what you consider important/unimportant/supplementary etc. in a package manager for Emacs.</p> <p><strong><em>Some ideas</em></strong></p> <ol> <li>Many packages (the <a href="http://www.emacsmirror.org" rel="nofollow noreferrer">Emacsmirror</a> provides that largest available collection of packages, but there is no explicit support in any package manager yet).</li> <li>Only packages that have been tested.</li> <li>Support for more than one package archive (so people can choose between many/tested packages).</li> <li>Dependency calculated based on required features only.</li> <li>Dependencies take particular versions into account.</li> <li>Only use versions that have been released upstream.</li> <li>Use versions from version control systems if available.</li> <li>Packages are categorized.</li> <li>Packages can be uninstalled and updated not only installed.</li> <li>Support creating fork of upstream version of packages.</li> <li>Support publishing these forks.</li> <li>Support choosing a fork.</li> <li>After installation packages are activated.</li> <li>Generate autoload files.</li> <li>Integration with Emacswiki (see wikirel.el).</li> <li>Users can tag, comment etc. packages and share that information.</li> <li>Only FSF-assigned/GPL/FOSS software or don't care about license.</li> <li>Package manager should be integrated be distributed with Emacs.</li> <li>Support for easily contacting author.</li> <li>Lots of metadata.</li> <li>Suggest alternatives before installing a particular package.</li> </ol> <p><strong><em>I am hoping for these kinds of answers</em></strong></p> <ul> <li>Pointers to more implementations, discussions etc.</li> <li>Lengthy descriptions of a set of features that make up your ideal package manager.</li> <li>Descriptions of one particular desired/undesired feature. Feel free to elaborate on my ideas from above.</li> <li>Surprise me.</li> </ul>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload