As the author and maintainer of several Emacs Lisp packages, I'd like to
discuss how change logs are brought to the user's attention.
The simple problem for me is that users never know what cool new things
have been added, or what bugs have been fixed, unless they're really
keeping an eye out for it. People often seem just update all their
packages. New things aren't obviously discoverable.
There are three main kinds of Emacs package users that I'm aware of:
1. People who have a ~/.emacs.d with the packages/.el files that they've
downloaded and made a copy of locally.
2. People who put their ~/.emacs.d under version control and pull
packages down via that.
3. People who install Emacs packages via the package system in Emacs.
(Personally, I am in the (2) set of people. I searched through the Emacs manual about packages and didn't find anything about change logs... tell me if I missed something!)
I would like that there be explicit support for:
A. When I load an Emacs package that is newer than last time, that Emacs
automatically brings up to my attention a buffer with "what's new" in
B. Once I've acknowledged by a button or key press that I've really read
the changes, then I never see the buffer again unless I explicitly
ask to see it again.
For example: To handle the (3) type of person, you could put such
support into package-install, by simply writing to some kind of
~/.emacs.d/seen.el file with (("package" . version) ...) inside that
lets Emacs know that I've seen the changelog, and I don't need to be
bothered about it again. Alternatively it could be put in a
customization variable and written to .emacs. I'm not sure about the
implementation, but the UX is the important part.
For people who do the (1) and (2) method, there isn't explicitly an
"install" step. A bunch of Elisp files are loaded up and that's all. I'm
not sure what we can do for them. Perhaps not much and that's OK. I'm
open to ideas, though.
We could have the package system look for a CHANGELOG file, or a ;;;
Changes section in the file. It would parse up the latest entries since the last seen version and open a buffer to show the user, e.g.
* C-c C-p now massages your feet while gcc is compiling
* The bug with overlays being slow is now fixed.
Parsing isn't always a nice solution, but that's already done to some
extent anyway. The alternative would be having the author write some
Elisp with the changelog, but that seems like duplication of work to me.
It would of course have an option to turn it off if people don't care
what changed in any of their packages.
What do you think? I'm asking here because I think it'd be a valuable addition to Emacs and would be best if it had buy-in from general package writers and the Emacs maintainers.