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!