Please welcome the new stable version of El-Get, the much awaited version
4.1 has now been branched for your pleasure. It's packed with lots of
features to make your life easy, comes with a Info documentation book and
even has a logo. That's no joke, I found one, at least:

Why El-Get is relevant
Emacs 24.1 is the first release that includes package.el, and it even allows
the user to setup several sources where to fetch packages. Those sources,
such as Marmalade, are hosting lots of third party code for Emacs.
package.el makes it easy to install (partly) those software.
This is a very fine way of getting extra features in your Emacs installation, and one that is supported out of the box. For a package to be listed, its sources need to be prepared, and you need to rely on the central website you now depend on to be up and running and accessible.
El-Get is all about allowing you to easily cope with the still vast majority of Emacs Lisp extensions you can find out there, that is non packaged code that is only available on some more or less mainstream distribution method, ranging from EmacsWiki to github including bare HTTP personal hosting.
With El-Get, you fetch the package where it's located. There's no need for a
central server to host packaged and released software, and it's easy to
share your findings with friends, or even to publish any elisp code you
write.
El-Get will also take care of final steps that package.el did choose not to
support, such as including Info material in your info browser (remember C-h
i runs the command info?), running ./configure && make for you, byte
compiling the sources you just retrieved, adding the necessary autoload
support, etc.
And of course one of the methods supported by El-Get is ELPA, known as Emacs
Lisp Package Archive and implemented by package.el.
So definitely, you typically want both ELPA and El-Get.
El-Get 4.1 Changelog Summary
The new El-Get release is packed with features. It really is. I will only list some of them now:
- Plenty new recipes, we now have
590of them managed in the El-Get source repository itself, and El-Get will download the current EmacsWiki list ofemacs lispfiles at install time too. - The default installation and usage has been simplified a lot.
- More options are provided to setup El-Get packages, see
el-get-user-package-directoryfor example. - Part of the simplification,
el-get-sourceshas been revisited and now serves only one goal. - We dropped
(el-get 'wait)which was a misconception and had been broken for a long time in the development version of El-Get. - We made improvements in the error handling and in dealing with some corner cases that still happen often enough for users to report them. Please continue reporting them!
- More caching is done, with a better dependency tracking and status management.
- Enhanced notification support, from
DBUStogrowl. - Support for checksums with a lot of source types.
- Completing our
gitsupport, shallow clones and submodules are there. - Better support for
githubincluding thezipandtarreleases. - Ability to reload a package when it's been updated.
- Moar features
And most importantly, El-Get documentation is now almost complete and comes in the nice Info format I know you've been expecting for so long!
Using El-Get
Here's a quick summary of what using El-Get is like, for a new user in 4.1.
If you're already using El-Get see the section about upgrading. To install
El-Get you need to paste those lines to your *scratch* buffer then hit C-j
after the last closing parenthesis:
(url-retrieve
"https://raw.github.com/dimitri/el-get/master/el-get-install.el"
(lambda (s)
(goto-char (point-max))
(eval-print-last-sexp)))
Then you can try M-x el-get-list-packages and browse through more than 2000
available packages. Mark the ones you want to install with i then type x to
see El-Get fetch and install all those packages you just selected. Here's a
summary of what's available to you in the M-x el-get-list-packages buffer:
Major Mode Bindings: SPC el-get-package-menu-mark-unmark ? el-get-package-menu-describe d el-get-package-menu-mark-delete g el-get-package-menu-revert h el-get-package-menu-quick-help i el-get-package-menu-mark-install u el-get-package-menu-mark-update x el-get-package-menu-execute
Once a package is installed, El-Get will initialize it for you, and it will
also do that step at every Emacs startup from there on, provided that you
added some lines to your ~/.emacs initialization file, that look a lot like
the previous *scratch* code you did paste:
;; ;; Here's a typical El-Get integration for your .emacs file: ;; (add-to-list 'load-path "~/.emacs.d/el-get/el-get") (setq el-get-user-package-directory "~/.emacs.d/packages.d/") (unless (require 'el-get nil t) (with-current-buffer (url-retrieve-synchronously "https://raw.github.com/dimitri/el-get/master/el-get-install.el") (goto-char (point-max)) (eval-print-last-sexp))) (el-get 'sync)
Then you can add files named like init-<package>.el in the
el-get-user-package-directory directory, those files will get loaded when
El-Get initialize <package>.
You can also use M-x el-get-install if you want to bypass the full screen
package listing, you will get completion on the package name.
Community and development
El-Get community grew to be a really cool place to be participating in these
days, with core and recipe contributions from more than 130 different people
already, and with 526 stars on github and 184 forks. I almost can't believe
it!
git --no-pager shortlog -n -s | wc -l
137
git --no-pager shortlog -n -s | head -10
734 Dimitri Fontaine
336 Ryan C. Thompson
114 Julien Danjou
110 Dave Abrahams
73 Ryan Thompson
72 Sébastien Gross
42 Takafumi Arakaki
27 Alex Ott
25 Yakkala Yagnesh Raghava
21 Rüdiger Sonderfeld
Now that we have something that looks like a core team forming up, I'm
thinking about scheduling much more aggressive stable release. 4.1 has been
very long in the making, I hope to now have a rapid release cycle leading us
to 4.2 in quite a short time. As that's not an individual effort by any
mean, though, only history will tell.
The roadmap
We have lots of ideas and some rough edges to address, so 4.1 is only a stop
in the release history of El-Get. Next ideas include better error management
in face of rare corner cases and in face of external events, like when you
did rm -rf a directory holding an El-Get managed extension: we should mark
it removed and clean up the autoloads that came from it.
Upgrading to 4.1
This item has received some treatment in the documentation. The basic idea
is that el-get-sources is no longer what it used to be, it's now only an
alternative source location for recipes, like it should always have been.
Not that you can still override in there some properties that you want
merged with an official recipe.
The new thing about el-get-sources is that it will no longer be the
authoritative list of packages that El-Get manages. That list is not either
given explicitly when calling the el-get function in your .emacs setup, or
derived from the packages that are known installed on your system (like e.g.
debian is doing).
Also, given that it took us so much time to brew 4.1 a lot of packages have
changed either their hosting location or even switched their SCM. In such
cases an automatic update of the recipe will no longer be possible, you
might need to el-get-remove then el-get-install packages to get them back.
Conclusion
El-Get 4.1 is now ready for public consumption, don't be shy, we've been a
lot of users running the development branch for a long time now, I'm running
4.0.7.6901194 while writing this post. 4.0 is the development version of
what is now released as 4.1.
Many thanks to all who contributed to El-Get and to all our users, I'm very proud that together we worked out a very nice and complete tool!
Tags
Previous Articles
- PGDay France 2012 Friday, June 08 2012, 16:17
- Solving Every Sudoku Puzzle Tuesday, July 10 2012, 20:37
- Autumn 2012 Conferences Thursday, August 02 2012, 01:08
- Fast and stupid? Wednesday, August 22 2012, 16:05
Next Articles
- PostgreSQL 9.3 Saturday, September 15 2012, 18:43
- Reset Counter Friday, October 05 2012, 09:44
- Prefixes and Ranges Tuesday, October 16 2012, 10:47
- Another awesome conf Tuesday, October 30 2012, 12:50

