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!