summaryrefslogtreecommitdiffstats
path: root/2021/captions/emacsconf-2021-nongnu--nongnu-elpa-update--philip-kaludercic--main.vtt
blob: e8f36c165bd50a35742c1aaec20d05be1094c932 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
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]