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]