summaryrefslogtreecommitdiffstats
path: root/2021/talks/janitor.md
blob: 23420a0e58c7371ce96dc38ca1e387ec2454aa7c (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
[[!meta title="A day in the life of a janitor"]]
[[!meta copyright="Copyright © 2021 Stefan Monnier"]]
[[!inline pages="internal(2021/info/janitor-nav)" raw="yes"]]

<!-- You can manually edit this file to update the abstract, add links, etc. --->


# A day in the life of a janitor
Stefan Monnier



[[!inline pages="internal(2021/info/janitor-schedule)" raw="yes"]]

Because of a reckless former Emacs maintainer that shall
  better stay unnamed, ELisp has seen a fair bit of churn in the last 10
  years, making it necessary to clean up "old" code [in order to open up
  the road for yet more recklessness? ].
  In this documentary we will follow a famous janitor in his every day job
  dealing with the aftermath of the cl-lib / lexical-binding party.

# Discussion

- Question: Is there a place where these conventions and compilers checks are listed? A web page, an info perhaps? 
- Wow, I think you are going to have to know a LOT on Emacs development, versions, Elisp details, ... to do that kind of work.
  - One very helpful thing anyone can do is just confirm bug reports and add reproduction steps if they are missing.
- The double-dash is a convention for an func intended to be called internally only?
  - Yes.  `pacakge-foo` is public, `package--foo` is internal.
- mindless tree-wide transforms like this are what coccinelle is for. why are emacs maintainers still doing this by hand? you'd think lisp would be well-suited for expressing semantic patches to lisp... :/ this ceases to seem interesting when you've seen cocci do ten thousand transforms like this across a 500MiB tree in 20s or so
  - Does cocci work on elisp?
    - no, but the *idea* should work there, and Lisp is so regular in structure that something like coccinelle is the sort of thing lisp boosters say is really easy in lisp. but nooo, none exists that I know of :( (coccinelle itself is written in ocaml :) )
    - https://coccinelle.gitlabpages.inria.fr/website/
- There's a monstrous heap of regexps that match most reasonable compiler output.  I wrapped an ancient MS-DOS compiler for an obsolete language in a script that invokes it inside DOSBox and echos the output‚ and it Just Worked with compilation mode.
  - Wow, that's awesome! Yes, lots of the "historic" parts of emacs are amazing.
- if folks are interested in the lexical dynamic transition: https://hopl4.sigplan.org/details/hopl-4-papers/13/Evolution-of-Emacs-Lisp

Feedback:

- OK, this blows my mind in a sense that I realize that I really don't have an idea of coding Elisp.
- This talk is great. There should be more like that online, so more people learn to help with "janitorial" work

# Outline

-   ~20 minutes
    Here really, I'm not sure how much time this will take.  I put 20
    minutes because I think I might be able to fill that and I think more
    than that could turn too boring.  I intend to make it a "live coding"
    kind of thing, without anything like an outline: it's basically "make"
    followed by fixing the warnings.


[[!inline pages="internal(2021/captions/janitor)" raw="yes"]]

[[!inline pages="internal(2021/info/janitor-nav)" raw="yes"]]