WEBVTT
00:00.000 --> 00:02.283
Hello! My name is Philip,
00:02.283 --> 00:04.363
and I'll be giving a brief update on
00:04.363 --> 00:05.963
NonGNU ELPA.
00:05.963 --> 00:07.403
Before we begin,
00:07.403 --> 00:08.283
let's first make sure
00:08.283 --> 00:09.563
everyone's on the same page.
00:09.563 --> 00:11.203
What is NonGNU ELPA?
00:11.203 --> 00:14.323
Put simply, NonGNU ELPA
00:14.323 --> 00:16.723
is a new Emacs Lisp package archive.
00:16.723 --> 00:19.323
similar to its sister archive, GNU ELPA.
00:19.323 --> 00:21.883
The main difference is that
00:21.883 --> 00:24.723
GNU ELPA regards each package in the archive
00:24.723 --> 00:26.643
to be part of Emacs itself.
00:26.643 --> 00:30.083
This means each significant contributor
00:30.083 --> 00:32.483
has to have signed their copyrights
00:32.483 --> 00:34.803
to the Free Software Foundation.
00:34.803 --> 00:37.203
NonGNU ELPA is made for packages
00:37.203 --> 00:39.363
that cannot ensure this condition.
00:39.363 --> 00:42.483
The immediate consequence of all of this
00:42.483 --> 00:44.243
is that more packages can be installed
00:44.243 --> 00:44.723
out of the box.
00:44.723 --> 00:46.803
All you need to install,
00:46.803 --> 00:49.443
for example, magit, evil-mode, slime,
00:49.443 --> 00:52.723
is a simple M-x package-install.
00:52.723 --> 00:56.083
The more subtle consequence
00:56.083 --> 00:58.083
is that ELPA distributes
00:58.083 --> 00:59.763
stable packages by default.
00:59.763 --> 01:01.563
This differs from, for example,
01:01.563 --> 01:04.163
the community-maintained package archive MELPA,
01:04.163 --> 01:08.483
where each change in the respective package repository
01:08.483 --> 01:12.803
triggers a new package to be rebuilt.
01:12.803 --> 01:15.123
Of course, "stable" here has to be taken
01:15.123 --> 01:16.843
with a grain of salt because,
01:16.843 --> 01:17.963
on the one hand,
01:17.963 --> 01:19.923
a package maintainer can be very careful
01:19.923 --> 01:22.403
to avoid buggy code in their default branch,
01:22.403 --> 01:23.923
and on the other hand,
01:23.923 --> 01:26.523
a package maintainer can be too eager
01:26.523 --> 01:28.083
to tag a new release
01:28.083 --> 01:29.483
without properly checking
01:29.483 --> 01:31.403
that the code works as intended.
01:31.403 --> 01:33.483
My personal hope is that
01:33.483 --> 01:35.603
more people using NonGNU ELPA
01:35.603 --> 01:37.683
be incentive for increase
01:37.683 --> 01:39.603
for package development to shift away
01:39.603 --> 01:41.083
from the currently predominant
01:41.083 --> 01:42.323
rolling release model,
01:42.323 --> 01:44.243
improving the overall stability
01:44.243 --> 01:45.523
of Emacs configurations.
01:45.523 --> 01:48.843
Another side effect of the initiative
01:48.843 --> 01:51.003
is a chance to clean up
01:51.003 --> 01:52.803
the Emacs package space.
01:52.803 --> 01:54.723
Over the last few years,
01:54.723 --> 01:56.363
a lot of packages have been abandoned,
01:56.363 --> 01:59.043
have been broken, duplicated,
01:59.043 --> 02:00.443
or even in some cases,
02:00.443 --> 02:03.483
replaced by functionality in Emacs itself.
02:03.483 --> 02:07.403
When reviewing packages for NonGNU ELPA,
02:07.403 --> 02:10.043
the opportunity to avoid these problems
02:10.043 --> 02:12.523
will hopefully also improve the general quality
02:12.523 --> 02:13.923
of Emacs packages.
02:13.923 --> 02:16.883
So, what is this update about?
02:16.883 --> 02:20.443
I'm taking Richard Stallman's announcement
02:20.443 --> 02:22.363
at EmacsConf 2020
02:22.363 --> 02:23.563
as my reference point.
02:23.563 --> 02:26.283
There, the idea, the history,
02:26.283 --> 02:28.283
and the motivation was explained,
02:28.283 --> 02:30.443
and the call for contributions was made.
02:30.443 --> 02:32.643
I won't be going into these aspects
02:32.643 --> 02:33.483
again this year.
02:33.483 --> 02:37.163
As this implies, there was nothing concrete
02:37.163 --> 02:38.683
at that point.
02:38.683 --> 02:41.883
The first practical steps towards NonGNU ELPA
02:41.883 --> 02:43.683
were taken up by Stefan Monnier.
02:43.683 --> 02:47.963
This included updating GNU ELPA's build system
02:47.963 --> 02:49.523
to support the requirements
02:49.523 --> 02:51.003
of NonGNU ELPA as well.
02:51.003 --> 02:53.283
And so eventually,
02:53.283 --> 02:55.323
the idea became a Git repository,
02:55.323 --> 02:57.203
nongnu.git on savannah,
02:57.203 --> 02:59.203
then a website,
02:59.203 --> 03:02.523
elpa.nongnu.org,
03:02.523 --> 03:04.643
and then around late December of last year,
03:04.643 --> 03:06.923
NonGNU ELPA was also added
03:06.923 --> 03:08.643
to the package-archives list.
03:08.643 --> 03:11.963
Sadly, progress stalled from this point on,
03:11.963 --> 03:14.123
with the new archive consisting of only
03:14.123 --> 03:16.203
five or six packages.
03:16.203 --> 03:18.083
It took until August
03:18.083 --> 03:20.123
for more packages to be added,
03:20.123 --> 03:22.003
some by their respective authors,
03:22.003 --> 03:23.963
such as Magit and Projectile,
03:23.963 --> 03:26.163
but most by contributors such as myself.
03:26.163 --> 03:27.923
As of recording,
03:27.923 --> 03:30.363
the archive has around 70 packages,
03:30.363 --> 03:32.803
with more pending to be out soon.
03:32.803 --> 03:34.803
These include popular applications
03:34.803 --> 03:36.483
such as the previously-mentioned Magit,
03:36.483 --> 03:38.083
SLIME, or wgrep,
03:38.083 --> 03:41.523
major modes like php-mode, rust-mode,
03:41.523 --> 03:43.723
go-mode, clojure-mode, lua-mode,
03:43.723 --> 03:45.923
markdown-mode... You get my point.
03:45.923 --> 03:47.883
And a number of visual themes,
03:47.883 --> 03:49.443
among other things.
03:49.443 --> 03:52.643
If you are interested in using NonGNU ELPA,
03:52.643 --> 03:53.603
but you are still bound
03:53.603 --> 03:55.203
to an older version of Emacs,
03:55.203 --> 03:56.683
all you have to do is
03:56.683 --> 03:57.483
to add the snippet
03:57.483 --> 03:59.003
from the NonGNU ELPA home page
03:59.003 --> 04:01.323
updating the package-archives variable.
04:01.323 --> 04:03.923
For Emacs 28 and newer,
04:03.923 --> 04:05.123
one might have to watch out
04:05.123 --> 04:07.563
that you're not setting package-archives directly,
04:07.563 --> 04:09.363
and if you are doing so,
04:09.363 --> 04:10.723
to update the value.
04:10.723 --> 04:14.003
Emacs 28 only updates the default value
04:14.003 --> 04:17.043
and will not manipulate the user's configuration.
04:17.043 --> 04:20.363
Finally, a short note
04:20.363 --> 04:22.163
for package developers.
04:22.163 --> 04:24.243
Most packages up until now
04:24.243 --> 04:26.243
haven't been added by their maintainers.
04:26.243 --> 04:28.083
For the most part,
04:28.083 --> 04:31.083
I have been collecting and reviewing the packages
04:31.083 --> 04:32.683
which have been added,
04:32.683 --> 04:33.923
which takes time
04:33.923 --> 04:36.043
and is one of the main reasons
04:36.043 --> 04:38.323
why we're still at only 70 packages.
04:38.323 --> 04:41.683
This is of course not a permanent solution.
04:41.683 --> 04:42.243
The intention here is
04:42.243 --> 04:44.803
to bootstrap, so to say,
04:44.803 --> 04:46.243
the interest in NonGNU ELPA
04:46.243 --> 04:48.083
by making it more interesting to you
04:48.083 --> 04:50.563
and thus more interesting to contribute to.
04:50.563 --> 04:53.563
If you are interested in adding a package
04:53.563 --> 04:56.643
that already exists, or a new package
04:56.643 --> 04:59.443
to NonGNU ELPA, all you need to do is
04:59.443 --> 05:00.843
send an e-mail to the
05:00.843 --> 05:02.483
Emacs development mailing list,
05:02.483 --> 05:05.523
emacs-devel@gnu.org.
05:05.523 --> 05:08.123
This is an open mailing list
05:08.123 --> 05:10.563
and requires no special registration.
05:10.563 --> 05:12.283
Your message should
05:12.283 --> 05:14.643
mention NonGNU ELPA in the subject
05:14.643 --> 05:17.483
and contain a link to a public Git repository
05:17.483 --> 05:20.643
in the body. Ideally, a brief explanation
05:20.643 --> 05:21.803
on what your package does
05:21.803 --> 05:23.243
would be much appreciated.
05:23.243 --> 05:25.603
The proposal will be reviewed
05:25.603 --> 05:28.043
by the readers of the mailing list,
05:28.043 --> 05:29.443
and after a bit of back-and-forth
05:29.443 --> 05:31.123
on possible issues and improvements,
05:31.123 --> 05:32.723
the package will hopefully be added
05:32.723 --> 05:34.443
to NonGNU ELPA itself.
05:34.443 --> 05:38.523
The simplest mistake a lot of packages make
05:38.523 --> 05:40.043
is to either not have
05:40.043 --> 05:41.843
or maintain a version attribute
05:41.843 --> 05:42.803
in the package header.
05:42.803 --> 05:46.323
This is done despite actually being necessary
05:46.323 --> 05:48.163
for a well-formed Emacs package
05:48.163 --> 05:50.083
according to the Elisp manual.
05:50.083 --> 05:52.443
ELPA relies on this tag
05:52.443 --> 05:54.323
to detect new package versions
05:54.323 --> 05:55.843
that will be built and distributed.
05:55.843 --> 05:58.483
If the version isn't updated,
05:58.483 --> 06:00.323
no new package will be released,
06:00.323 --> 06:03.043
and any changes won't be made public.
06:03.043 --> 06:07.683
So, that's that on NonGNU ELPA.
06:07.683 --> 06:09.883
To summarize, NonGNU ELPA is an
06:09.883 --> 06:11.683
Emacs Lisp Package Archive for Emacs,
06:11.683 --> 06:13.363
without a need for copyright assignments.
06:13.363 --> 06:17.203
It works, it exists, and it's been used already.
06:17.203 --> 06:18.403
I'm looking forward to
06:18.403 --> 06:20.403
more packages being added to the archive
06:20.403 --> 06:22.803
and improving the overall experience
06:22.803 --> 06:24.283
of Emacs out of the box.
00:06:24.283 --> 00:06:27.163
Thank you for your interest, and goodbye.
00:06:27.163 --> 00:06:27.163
[captioned by sachac]