summaryrefslogtreecommitdiffstats
path: root/2020/info/32.md
blob: 35de706adc36dcd76aab0452c3fa29bb6d5b1725 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# Object Oriented Code in the Gnus Newsreader
Eric Abrahamsen

The venerable Gnus newsreader has evolved over the years to interface
with many different types of news- or mail-like backend programs,
presenting all of them using a unified interface.  This sort of
software often calls for an object-oriented architecture, at least as
regards polymorphism, yet Gnus was written well before Emacs lisp
acquired the object-oriented tools and libraries – largely borrowed
from Common Lisp – that it boasts today.

Yet Gnus needed something "object-oriented-like", and so nnoo.el was
born: a rather amazing (and frankly terrifying) implementation of
object-oriented behavior using functional code.

This talk will be a brief introduction to how this existing system
works, and to the ongoing, incremental effort to port it over to newer
Elisp tools like generic functions, structs, and objects.