WEBVTT
00:00:00.320 --> 00:00:03.280
Hello, I'm Richard Stallman,
00:00:03.280 --> 00:00:07.816
founder of the GNU project.
00:00:07.816 --> 00:00:09.200
In 1976, I developed the first
00:00:09.200 --> 00:00:12.320
Emacs editor with some help
00:00:12.320 --> 00:00:13.440
from Guy Steele.
00:00:13.440 --> 00:00:15.839
Then, shortly after starting to develop
00:00:15.839 --> 00:00:19.119
the GNU operating system in 1984,
00:00:19.119 --> 00:00:22.240
I wanted an Emacs editor for it.
00:00:22.240 --> 00:00:29.519
So I started writing GNU Emacs in
September 1984.
00:00:29.519 --> 00:00:32.640
Several years ago we decided to move
00:00:32.640 --> 00:00:35.920
many of the Emacs Lisp packages outside
00:00:35.920 --> 00:00:39.866
the core Emacs distribution into
00:00:39.866 --> 00:00:46.480
a separate package archive that we call
the Emacs Lisp package archive ELPA.
00:00:46.480 --> 00:00:49.555
There were two main reasons for this.
00:00:49.555 --> 00:00:51.520
One is to make the Emacs
distribution smaller
00:00:51.520 --> 00:00:54.870
so every user wouldn't have to
00:00:54.870 --> 00:00:55.680
get all the packages
00:00:55.680 --> 00:00:58.820
and install all the packages.
00:00:58.820 --> 00:01:00.480
And the other reason was to make it
possible to
00:01:00.480 --> 00:01:03.485
release individual packages
00:01:03.485 --> 00:01:08.880
separately from Emacs releases.
00:01:08.880 --> 00:01:13.119
Now, at that point somehow we decided to
00:01:13.119 --> 00:01:17.040
support loading packages from
00:01:17.040 --> 00:01:21.119
a variety of different Emacs Lisp
package archives
00:01:21.119 --> 00:01:25.520
and ours would be called the GNU ELPA,
00:01:25.520 --> 00:01:29.280
but ELPA could be any other.
00:01:29.280 --> 00:01:32.945
Now, I think that naming was a mistake.
00:01:32.945 --> 00:01:35.119
We should have meant, we should have
decided that ELPA
00:01:35.119 --> 00:01:37.759
referred to our package archive
00:01:37.759 --> 00:01:39.297
and any other package archive
00:01:39.297 --> 00:01:42.479
should be called some other name.
00:01:42.479 --> 00:01:46.128
Oh, well! Uh this is a mistake,
00:01:46.128 --> 00:01:48.320
I believe, because it leads
00:01:48.320 --> 00:01:49.397
to a lot of confusion.
00:01:49.397 --> 00:01:51.119
It would have been clearer
00:01:51.119 --> 00:01:55.759
if we had used the other naming.
00:01:55.759 --> 00:01:59.812
Because the difference between
00:01:59.812 --> 00:02:04.159
having a package in core Emacs and
having it in GNU ELPA,
00:02:04.159 --> 00:02:07.840
is purely a practical convenience matter.
00:02:07.840 --> 00:02:10.501
Convenience of distribution
00:02:10.501 --> 00:02:12.000
and convenience of maintenance.
00:02:12.000 --> 00:02:14.879
We wanted to be able to move packages
00:02:14.879 --> 00:02:16.800
between the two
00:02:16.800 --> 00:02:19.258
whenever that was convenient.
00:02:19.258 --> 00:02:21.200
So, to make that possible
00:02:21.200 --> 00:02:23.200
we insisted on getting copyright
00:02:23.200 --> 00:02:26.319
assignments for packages in GNU ELPA
00:02:26.319 --> 00:02:31.360
just the same way we do for packages in
core Emacs.
00:02:31.360 --> 00:02:33.760
Having the facility for installing
00:02:33.760 --> 00:02:36.239
packages from package archives,
00:02:36.239 --> 00:02:39.440
led to a tremendous boost in the
00:02:39.440 --> 00:02:42.239
development and release of Emacs packages.
00:02:42.239 --> 00:02:44.879
Unfortunately there was a problem with
00:02:44.879 --> 00:02:46.560
the way that was done.
00:02:46.560 --> 00:02:50.000
For the most part, the developers of
these packages
00:02:50.000 --> 00:02:52.218
wouldn't even tell us about them.
00:02:52.218 --> 00:02:56.027
They posted them in another package
archive
00:02:56.027 --> 00:02:58.480
where we didn't know about them
00:02:58.480 --> 00:03:03.120
and no attempt was made to
try to fit them
00:03:03.120 --> 00:03:06.560
into Emacs so that they could make sense
00:03:06.560 --> 00:03:10.879
as parts of the Emacs distribution.
00:03:10.879 --> 00:03:14.480
This led to both moral problems,
00:03:14.480 --> 00:03:16.375
(packages that depended on
00:03:16.375 --> 00:03:19.599
non-free software in order to be usable)
00:03:19.599 --> 00:03:21.354
and technical problems,
00:03:21.354 --> 00:03:24.877
because the developers of those packages
00:03:24.877 --> 00:03:26.159
didn't coordinate with us
00:03:26.159 --> 00:03:29.519
about how to make it useful and
00:03:29.519 --> 00:03:36.560
convenient and clean to have them in
Emacs.
00:03:36.560 --> 00:03:41.120
So, the idea of NonGNU ELPA
00:03:41.120 --> 00:03:45.337
is an effort to smooth these
things out.
00:03:45.337 --> 00:03:48.319
The fundamental plan of
00:03:48.319 --> 00:03:51.680
NonGNU ELPA is that
00:03:51.680 --> 00:03:54.480
we won't ask for copyright assignments
00:03:54.480 --> 00:03:56.159
for those packages.
00:03:56.159 --> 00:04:00.000
So, we won't be able to put them into
core Emacs;
00:04:00.000 --> 00:04:03.550
at least not easily,
00:04:03.550 --> 00:04:09.519
but we will have some control over how
we distribute them.
00:04:09.519 --> 00:04:14.691
We can put any package into NonGNU ELPA
00:04:14.691 --> 00:04:16.320
as long as it's free software.
00:04:16.320 --> 00:04:23.360
If we like it, we can set up that way
for users to get it.
00:04:23.360 --> 00:04:26.720
We could put the package in
exactly as it is
00:04:26.720 --> 00:04:29.919
if there's no problem at all with it.
00:04:29.919 --> 00:04:32.647
We can make an arrangement
00:04:32.647 --> 00:04:34.160
with the package's developers
00:04:34.160 --> 00:04:38.000
to work on it with us and maintain it
00:04:38.000 --> 00:04:42.560
directly for distribution by NonGNU ELPA,
00:04:42.560 --> 00:04:45.778
but if they are not interested,
00:04:45.778 --> 00:04:48.729
we can put it in ourselves,
00:04:48.729 --> 00:04:50.453
and if we need to make any changes,
00:04:50.453 --> 00:04:52.000
we can do so.
00:04:52.000 --> 00:04:58.688
So, NonGNU ELPA is not meant to be
00:04:58.688 --> 00:05:02.720
just a way that others can distribute
their packages.
00:05:02.720 --> 00:05:04.336
It's meant, at least in
00:05:04.336 --> 00:05:07.574
a minimal technical sense,
00:05:07.574 --> 00:05:10.686
to work with GNU Emacs,
00:05:10.686 --> 00:05:12.305
and we'll make changes if necessary,
00:05:12.305 --> 00:05:17.928
so that it works smoothly with Emacs.
00:05:17.928 --> 00:05:25.365
And this means that we're going to
maintain it differently from GNU ELPA.
00:05:25.365 --> 00:05:31.520
Well, GNU ELPA is hosted in a way that
is actually rather inconvenient.
00:05:31.520 --> 00:05:35.600
It is one single Git repository.
00:05:35.600 --> 00:05:39.039
And so anybody that has access
to write it
00:05:39.039 --> 00:05:41.239
can write any part of it.
00:05:41.239 --> 00:05:46.080
There are many different packages in
there, maintained by different people,
00:05:46.080 --> 00:05:48.080
and we have no way to give each one of
00:05:48.080 --> 00:05:50.960
them access to per own package
00:05:50.960 --> 00:05:53.122
and not to the others.
00:05:53.122 --> 00:05:57.035
Well, with NonGNU ELPA,
we plan to fix that.
00:05:57.035 --> 00:06:01.411
The idea is to have
a single Git repository
00:06:01.411 --> 00:06:05.600
where you can download various packages from.
00:06:05.600 --> 00:06:08.400
But they won't be maintained there.
00:06:08.400 --> 00:06:10.800
Each of those packages will be
00:06:10.800 --> 00:06:15.280
copied automatically from some other place.
00:06:15.280 --> 00:06:18.311
Probably some other repository
00:06:18.311 --> 00:06:22.960
where the right people have access to work on it.
00:06:22.960 --> 00:06:26.375
And this way we can avoid giving
00:06:26.375 --> 00:06:28.160
a gigantic number of people
00:06:28.160 --> 00:06:32.240
access to every part of it.
00:06:32.240 --> 00:06:37.039
So far NonGNU ELPA is just a plan,
00:06:37.039 --> 00:06:40.479
we need people to implement the plan.
00:06:40.479 --> 00:06:43.825
So, if you would like to help,
00:06:43.825 --> 00:06:45.120
please write to me.
00:06:45.120 --> 00:06:49.520
I think this is a very important step for progress
00:06:49.520 --> 00:06:52.639
and it's got to be implemented.
00:06:52.639 --> 00:06:57.919
Thanks and happy hacking!