WEBVTT
00:00:00.320 --> 00:00:03.280
Hello, I'm Richard Stallman,
00:00:03.280 --> 00:00:08.080
founder of the GNU project. In 1976, I
00:00:08.080 --> 00:00:09.200
developed the first
00:00:09.200 --> 00:00:12.000
Emacs editor with some help from Guy
00:00:12.000 --> 00:00:13.440
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:24.640
So I started writing GNU Emacs in
00:00:24.640 --> 00:00:25.560
September
00:00:25.560 --> 00:00:29.519
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:36.559
the core
00:00:36.559 --> 00:00:39.760
Emacs distribution into a separate
00:00:39.760 --> 00:00:42.960
package archive that we call the Emacs
00:00:42.960 --> 00:00:43.280
Lisp
00:00:43.280 --> 00:00:46.480
package archive ELPA.
00:00:46.480 --> 00:00:48.719
There were two main reasons for this. One
00:00:48.719 --> 00:00:51.520
is to make the Emacs distribution smaller
00:00:51.520 --> 00:00:54.320
so every user wouldn't have to get all
00:00:54.320 --> 00:00:55.680
the packages
00:00:55.680 --> 00:00:58.320
and install all the packages. And the
00:00:58.320 --> 00:01:00.480
other reason was to make it possible to
00:01:00.480 --> 00:01:01.520
release
00:01:01.520 --> 00:01:04.559
individual packages separately
00:01:04.559 --> 00:01:08.880
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:19.520
a variety of different Emacs Lisp
00:01:19.520 --> 00:01:21.119
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.079
Now, I think that naming was a mistake. We
00:01:32.079 --> 00:01:32.799
should have
00:01:32.799 --> 00:01:35.119
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.759
and any other package archive should be
00:01:39.759 --> 00:01:42.479
called some other name.
00:01:42.479 --> 00:01:46.079
Oh, well! Uh this
00:01:46.079 --> 00:01:48.320
is a mistake I believe, because it leads
00:01:48.320 --> 00:01:50.240
to a lot of confusion it would have been
00:01:50.240 --> 00:01:51.119
clearer
00:01:51.119 --> 00:01:55.759
if we had uh used the other naming.
00:01:55.759 --> 00:01:59.600
Because the difference between having a
00:01:59.600 --> 00:02:00.399
package in
00:02:00.399 --> 00:02:04.159
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:09.679
Convenience of distribution and
00:02:09.679 --> 00:02:12.000
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:20.160
whenever that was convenient. So, to make
00:02:20.160 --> 00:02:21.200
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:28.800
just the same way we do for packages in
00:02:28.800 --> 00:02:31.360
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:49.120
For the most part, the developers of
00:02:49.120 --> 00:02:50.000
these packages
00:02:50.000 --> 00:02:52.480
wouldn't even tell us about them. They
00:02:52.480 --> 00:02:53.599
posted them
00:02:53.599 --> 00:02:56.720
in another package archive where we
00:02:56.720 --> 00:02:58.480
didn't know about them
00:02:58.480 --> 00:03:02.000
and (where they) no attempt was made to
00:03:02.000 --> 00:03:03.120
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.959
packages that depended on non-free
00:03:16.959 --> 00:03:19.599
software in order to be usable
00:03:19.599 --> 00:03:22.159
and technical problems because the
00:03:22.159 --> 00:03:24.319
developers of those packages didn't
00:03:24.319 --> 00:03:26.159
coordinate with us
00:03:26.159 --> 00:03:29.519
about how to make it useful and
00:03:29.519 --> 00:03:33.040
convenient and clean to have them
00:03:33.040 --> 00:03:36.560
in Emacs.
00:03:36.560 --> 00:03:41.120
So, the idea of NonGNU ELPA
00:03:41.120 --> 00:03:44.840
is an effort to smooth these things
00:03:44.840 --> 00:03:48.319
out. 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:03:58.560
So, we won't be able to put them into
00:03:58.560 --> 00:04:00.000
core Emacs;
00:04:00.000 --> 00:04:04.080
at least not easily, but we will
00:04:04.080 --> 00:04:06.959
have some control over how we distribute
00:04:06.959 --> 00:04:09.519
them.
00:04:09.519 --> 00:04:12.640
We can put any package into
00:04:12.640 --> 00:04:15.439
NonGNU ELPA as long as it's free
00:04:15.439 --> 00:04:16.320
software.
00:04:16.320 --> 00:04:19.440
If we like it we can
00:04:19.440 --> 00:04:23.360
set up that way for users to get it.
00:04:23.360 --> 00:04:25.919
We could put the package in exactly as
00:04:25.919 --> 00:04:26.720
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.160
We can make an arrangement with the
00:04:32.160 --> 00:04:34.160
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:40.880
directly for distribution by NonGNU
00:04:40.880 --> 00:04:42.560
ELPA
00:04:42.560 --> 00:04:45.280
but if they are not interested we can
00:04:45.280 --> 00:04:46.080
put it in
00:04:46.080 --> 00:04:49.680
ourselves and if we need to make any
00:04:49.680 --> 00:04:52.000
changes we can do so.
00:04:52.000 --> 00:04:55.120
So, NonGNU ELPA
00:04:55.120 --> 00:04:59.040
is not meant to be just a way
00:04:59.040 --> 00:05:01.360
that others can distribute their
00:05:01.360 --> 00:05:02.720
packages.
00:05:02.720 --> 00:05:05.039
It's meant at least in a minimal
00:05:05.039 --> 00:05:06.000
technical
00:05:06.000 --> 00:05:10.479
sense to work with GNU Emacs, and we'll
00:05:10.479 --> 00:05:12.800
make changes if necessary so that it
00:05:12.800 --> 00:05:14.240
works smoothly with
00:05:14.240 --> 00:05:18.720
Emacs. And
00:05:18.720 --> 00:05:22.160
this means that we're going to maintain
00:05:22.160 --> 00:05:23.280
it differently
00:05:23.280 --> 00:05:27.600
from GNU ELPA. Well, GNU ELPA
00:05:27.600 --> 00:05:29.759
is hosted in a way that is actually
00:05:29.759 --> 00:05:31.520
rather inconvenient.
00:05:31.520 --> 00:05:35.600
It is one single Git repository.
00:05:35.600 --> 00:05:38.639
And so anybody that has access to write
00:05:38.639 --> 00:05:39.039
it
00:05:39.039 --> 00:05:42.560
can write any part of it. There are many
00:05:42.560 --> 00:05:44.639
different packages in there maintained
00:05:44.639 --> 00:05:46.080
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:54.720
and not to the others. Well, with NonGNU
00:05:54.720 --> 00:05:58.400
ELPA we plan to fix that. The idea is to
00:05:58.400 --> 00:05:59.440
have
00:05:59.440 --> 00:06:02.479
a single Git repository where you can
00:06:02.479 --> 00:06:05.600
download various packages from.
00:06:05.600 --> 00:06:08.800
But, they won't be maintained there. Each
00:06:08.800 --> 00:06:10.800
of those packages will be
00:06:10.800 --> 00:06:14.080
copied automatically from some other
00:06:14.080 --> 00:06:15.280
place.
00:06:15.280 --> 00:06:18.800
Probably some other repository where
00:06:18.800 --> 00:06:21.759
the right people have access to work on
00:06:21.759 --> 00:06:22.960
it.
00:06:22.960 --> 00:06:26.479
And this way we can avoid giving a
00:06:26.479 --> 00:06:28.160
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.280
So, if you would like to help please
00:06:43.280 --> 00:06:45.120
write to me.
00:06:45.120 --> 00:06:47.759
I think this is a very important step
00:06:47.759 --> 00:06:49.520
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!