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]