Emacs: Denote is becoming many packages
In February I announced the plan to reorganise the Denote project into “core” and “extensions”: https://protesilaos.com/codelog/2025-02-11-emacs-splitting-denote-many-packages/. In essence, Denote is a file-naming scheme: you create new files and/or rename existing ones (of any file type). Having that naming scheme empowers you to retrieve stuff more easily without the need for advanced tooling.
Though it turns out we can do a lot of useful things on top of this simple-yet-powerful idea: custom Dired listings, Org dynamic blocks, sequence notes, journaling, and many more. Having a clear separation between core and extensions makes it easier for us to implement all the features we want without worrying that the main package is becoming bloated.
Concretely, much of the functionality that was part of the denote
package will now be provided by other packages. To this end, I just
made a change to the official elpa.git repository:
commit f23ff49fb8df22390fe139b432f763860a354175
Author: Protesilaos Stavrou <info@protesilaos.com>
Date: Fri Mar 14 07:14:55 2025 +0200
* elpa-packages (denote-journal, denote-markdown, denote-org, denote-sequence, denote-silo): Add new packages
elpa-packages | 10 ++++++++++
1 file changed, 10 insertions(+)
Finalising the reorganisation of Denote
What remains to be done is for me to merge the reorganise-denote
branch of denote.git into main
. I will do this as soon as the new
packages are indexed on GNU ELPA (maybe later today or tomorrow).
Users of the GNU ELPA package will not be affected immediately. Those who build from source will, however, have to take action.
Expect breaking changes
Users will experience breaking changes when they update to the new
denote
package: functionality will be missing. In principle, all
those should be easy to fix: install the appropriate new package and
rename the functions/variables in your configuration accordingly. In
detail:
- The file
denote-journal-extras.el
becomes the packagedenote-journal
. In your configuration replacedenote-journal-extras
withdenote-journal
. - The file
denote-org-extras.el
(Org dynamic blocks and related) becomes the packagedenote-org
. In your configuration replacedenote-org-extras
withdenote-org
. - The file
denote-silo-extras.el
becomes the packagedenote-silo
. In your configuration replacedenote-silo-extras
withdenote-silo
.
Additionally, the files that were in development but never made it as
part of a formal release, namely, denote-md-extras.el
and
denote-sequence.el
, will debut as their own packages:
denote-markdown
and denote-sequence
, respectively.
You are welcome to ask me any questions
I am reluctant to introduce breaking changes, though this has to be done for the long-term wellness of the project. If you have any questions, please contact me directly or open an issue on the GitHub repository. I am happy to help you.
A concerted release cadence
All new packages are marked as version 0.0.0
, which means that only
those who track GNU-devel ELPA (or build from source) will notice
them. The formal release will coincide with the new version of
denote
(4.0.0
), which I expect to publish some time in April or
May 2025.