summaryrefslogtreecommitdiffstats
path: root/2022
diff options
context:
space:
mode:
Diffstat (limited to '2022')
-rw-r--r--2022/captions/emacsconf-2022-buttons--linking-personal-info-with-hyperbole-implicit-buttons--mats-lidell--main.vtt890
-rw-r--r--2022/captions/emacsconf-2022-mail--revisiting-the-anatomy-of-emacs-mail-user-agents--mohsen-banan--main.vtt1757
2 files changed, 2647 insertions, 0 deletions
diff --git a/2022/captions/emacsconf-2022-buttons--linking-personal-info-with-hyperbole-implicit-buttons--mats-lidell--main.vtt b/2022/captions/emacsconf-2022-buttons--linking-personal-info-with-hyperbole-implicit-buttons--mats-lidell--main.vtt
new file mode 100644
index 00000000..07641cde
--- /dev/null
+++ b/2022/captions/emacsconf-2022-buttons--linking-personal-info-with-hyperbole-implicit-buttons--mats-lidell--main.vtt
@@ -0,0 +1,890 @@
+WEBVTT captioned by sachac
+
+1
+00:00:00.000 --> 00:00:06.280
+Hi everyone! I'm Mats Liddell.
+
+2
+00:00:06.280 --> 00:00:07.320
+In this talk, I will show
+
+3
+00:00:07.320 --> 00:00:09.040
+how you can link to personal data
+
+4
+00:00:09.040 --> 00:00:13.960
+using Hyperbole's support for implicit button types.
+
+5
+00:00:13.960 --> 00:00:16.040
+Before starting, a few words about me.
+
+6
+00:00:16.040 --> 00:00:18.000
+I work as a software engineer,
+
+7
+00:00:18.000 --> 00:00:19.200
+and in my spare time
+
+8
+00:00:19.200 --> 00:00:21.280
+I'm co-maintaining the Hyperbole package
+
+9
+00:00:21.280 --> 00:00:24.360
+together with the package author Bob Weiner.
+
+10
+00:00:24.360 --> 00:00:27.240
+Hyperbole dates back to 1993,
+
+11
+00:00:27.240 --> 00:00:29.680
+and have had some inactive years in the past,
+
+12
+00:00:29.680 --> 00:00:31.680
+but work is now active again.
+
+13
+00:00:31.680 --> 00:00:33.080
+The package is available
+
+14
+00:00:33.080 --> 00:00:36.160
+through the GNU ELPA package archive.
+
+15
+00:00:36.160 --> 00:00:37.960
+The talk will focus on
+
+16
+00:00:37.960 --> 00:00:39.600
+creation of implicit button types.
+
+17
+00:00:39.600 --> 00:00:41.480
+For more info on Hyperbole,
+
+18
+00:00:41.480 --> 00:00:43.120
+listen to other presentations
+
+19
+00:00:43.120 --> 00:00:46.360
+and check out the package documentation.
+
+20
+00:00:46.360 --> 00:00:50.000
+What I want you to take with you from this talk is
+
+21
+00:00:50.000 --> 00:00:51.640
+that the implicit button types
+
+22
+00:00:51.640 --> 00:00:54.440
+can make patterns in your files into buttons;
+
+23
+00:00:54.440 --> 00:00:56.600
+and that new implicit button types
+
+24
+00:00:56.600 --> 00:00:58.480
+can quickly be created by using
+
+25
+00:00:58.480 --> 00:01:01.760
+the `defil' and the `defal' macros.
+
+26
+00:01:01.760 --> 00:01:05.160
+So what is an implicit button type?
+
+27
+00:01:05.160 --> 00:01:06.800
+I think of it as a text pattern
+
+28
+00:01:06.800 --> 00:01:08.920
+that has some extended meaning.
+
+29
+00:01:08.920 --> 00:01:10.760
+When you see the pattern in the text,
+
+30
+00:01:10.760 --> 00:01:12.800
+you can think of it as a button type.
+
+31
+00:01:12.800 --> 00:01:13.880
+When you press the button,
+
+32
+00:01:13.880 --> 00:01:16.880
+something related to that meaning happens.
+
+33
+00:01:16.880 --> 00:01:19.000
+It can be jumping to some place,
+
+34
+00:01:19.000 --> 00:01:22.440
+opening an external tool, doing some computation.
+
+35
+00:01:22.440 --> 00:01:24.160
+So there can be some action
+
+36
+00:01:24.160 --> 00:01:29.920
+associated with the pattern.
+
+37
+00:01:29.920 --> 00:01:33.320
+To make it clear, let's look at some examples.
+
+38
+00:01:33.320 --> 00:01:36.080
+Let's start with something that is maybe so obvious
+
+39
+00:01:36.080 --> 00:01:39.600
+that you don't even think of it as a pattern: a file name.
+
+40
+00:01:39.600 --> 00:01:41.360
+When you see such a string in text,
+
+41
+00:01:41.360 --> 00:01:45.360
+you will naturally associate it with a file on disk,
+
+42
+00:01:45.360 --> 00:01:46.720
+and if you would click on it,
+
+43
+00:01:46.720 --> 00:01:52.680
+you would probably expect that file to open.
+
+44
+00:01:52.680 --> 00:01:55.120
+In the first sentence on the slide,
+
+45
+00:01:55.120 --> 00:01:56.840
+you might recognize the file name
+
+46
+00:01:56.840 --> 00:02:01.760
+for the bash initialization file, ~/.bashrc.
+
+47
+00:02:01.760 --> 00:02:03.840
+Hyperbole comes with built-in support
+
+48
+00:02:03.840 --> 00:02:06.520
+for recognizing files and directory path names
+
+49
+00:02:06.520 --> 00:02:08.680
+as implicit button types in text.
+
+50
+00:02:08.680 --> 00:02:11.760
+For Hyperbole to take action on the button type,
+
+51
+00:02:11.760 --> 00:02:13.440
+you move the cursor within the button
+
+52
+00:02:13.440 --> 00:02:16.320
+and press M-RET or use a mouse click.
+
+53
+00:02:16.320 --> 00:02:22.360
+So let's try that.
+
+54
+00:02:22.360 --> 00:02:27.720
+Similar for the path, /usr/local in the next sentence.
+
+55
+00:02:27.720 --> 00:02:29.520
+That will open the corresponding
+
+56
+00:02:29.520 --> 00:02:37.080
+directory using dired-mode.
+
+57
+00:02:37.080 --> 00:02:39.760
+Other examples of built-in implicit button types
+
+58
+00:02:39.760 --> 00:02:43.720
+that Hyperbole recognizes are email addresses,
+
+59
+00:02:43.720 --> 00:02:47.320
+web addresses, requests for comment documents
+
+60
+00:02:47.320 --> 00:02:50.120
+in the form of RFC followed by a number,
+
+61
+00:02:50.120 --> 00:02:53.040
+GNU debbugs issues, plus many more.
+
+62
+00:02:53.040 --> 00:02:55.360
+These are some examples
+
+63
+00:02:55.360 --> 00:02:58.080
+of implicit button types with built-in support.
+
+64
+00:02:58.080 --> 00:02:59.920
+I list them here to give you an idea
+
+65
+00:02:59.920 --> 00:03:02.480
+how the text pattern in itself is enough
+
+66
+00:03:02.480 --> 00:03:03.960
+for the system to recognize it
+
+67
+00:03:03.960 --> 00:03:10.120
+as something actionable.
+
+68
+00:03:10.120 --> 00:03:12.480
+So as shown, Hyperbole has built-in support
+
+69
+00:03:12.480 --> 00:03:14.040
+for implicit buttons.
+
+70
+00:03:14.040 --> 00:03:16.120
+There's only one problem here.
+
+71
+00:03:16.120 --> 00:03:17.920
+The behavior is predefined.
+
+72
+00:03:17.920 --> 00:03:20.240
+There is of course a trade off.
+
+73
+00:03:20.240 --> 00:03:21.560
+It is convenient to get
+
+74
+00:03:21.560 --> 00:03:23.480
+many button types out of the box
+
+75
+00:03:23.480 --> 00:03:25.520
+with likely good standard behavior
+
+76
+00:03:25.520 --> 00:03:27.680
+and that works in many places.
+
+77
+00:03:27.680 --> 00:03:29.360
+But what if you would want to create
+
+78
+00:03:29.360 --> 00:03:31.160
+your own completely new mapping,
+
+79
+00:03:31.160 --> 00:03:32.880
+possibly to your own data?
+
+80
+00:03:32.880 --> 00:03:38.120
+It is here that Hyperbole's support for creating
+
+81
+00:03:38.120 --> 00:03:41.280
+new implicit button types comes in.
+
+82
+00:03:41.280 --> 00:03:43.360
+For the full pattern matching button type,
+
+83
+00:03:43.360 --> 00:03:46.720
+like for the filename and examples we just looked at,
+
+84
+00:03:46.720 --> 00:03:48.754
+you need to define the implicit button
+
+00:03:48.755 --> 00:03:50.920
+using the macro, `defib'.
+
+85
+00:03:50.920 --> 00:03:53.280
+The downside of that is
+
+86
+00:03:53.280 --> 00:03:54.920
+you need to code at the elisp level.
+
+87
+00:03:54.920 --> 00:03:57.240
+However, if you are creating a new pattern
+
+88
+00:03:57.240 --> 00:03:59.120
+that has well-defined delimiters,
+
+89
+00:03:59.120 --> 00:04:01.360
+there is support for that in an easier way.
+
+90
+00:04:01.360 --> 00:04:03.800
+These support functions, or rather macros,
+
+91
+00:04:03.800 --> 00:04:06.240
+are `defil' and `defal'.
+
+92
+00:04:06.240 --> 00:04:08.440
+We will look at those macros soon,
+
+93
+00:04:08.440 --> 00:04:13.400
+but first, my definition of personal data.
+
+94
+00:04:13.400 --> 00:04:18.200
+I think of personal data as something
+
+95
+00:04:18.200 --> 00:04:19.680
+that you would like to link to,
+
+96
+00:04:19.680 --> 00:04:21.440
+but it's not necessarily in a form
+
+97
+00:04:21.440 --> 00:04:23.360
+supported by any known tool.
+
+98
+00:04:23.360 --> 00:04:26.920
+It might be stored on a web server, local storage,
+
+99
+00:04:26.920 --> 00:04:28.680
+or could even be some computation
+
+100
+00:04:28.680 --> 00:04:29.400
+rather than a link.
+
+101
+00:04:29.400 --> 00:04:32.200
+What all these cases have in common is that
+
+102
+00:04:32.200 --> 00:04:34.240
+you want to be able to reference it
+
+103
+00:04:34.240 --> 00:04:36.640
+in a short, and for you, descriptive way.
+
+104
+00:04:36.640 --> 00:04:38.960
+So when you write text, you can use
+
+105
+00:04:38.960 --> 00:04:44.480
+a new implicit type to create the connection.
+
+106
+00:04:44.480 --> 00:04:46.600
+This might be a bit abstract,
+
+107
+00:04:46.600 --> 00:04:48.080
+so let's look at an example.
+
+108
+00:04:48.080 --> 00:04:51.000
+Suppose you have a flat file structure
+
+109
+00:04:51.000 --> 00:04:52.760
+with some notes in each file.
+
+110
+00:04:52.760 --> 00:04:54.520
+It can look like this.
+
+111
+00:04:54.520 --> 00:04:57.400
+In the data folder, we have two files
+
+112
+00:04:57.400 --> 00:05:00.200
+that represents the notes we have taken.
+
+113
+00:05:00.200 --> 00:05:02.840
+We now want to be able to link to these notes
+
+114
+00:05:02.840 --> 00:05:07.120
+from outside of the data folder.
+
+115
+00:05:07.120 --> 00:05:08.960
+Let's make an implicit button type
+
+116
+00:05:08.960 --> 00:05:10.920
+that opens a file in this structure.
+
+117
+00:05:10.920 --> 00:05:13.520
+To make the pattern stand out in text,
+
+118
+00:05:13.520 --> 00:05:16.640
+we use double braces as start and stop delimiters.
+
+119
+00:05:16.640 --> 00:05:20.080
+An implicit button instance
+
+120
+00:05:20.080 --> 00:05:22.760
+would then look like this.
+
+121
+00:05:22.760 --> 00:05:27.680
+We can create that using the `defil' macro like this.
+
+122
+00:05:27.680 --> 00:05:31.840
+This invocation of the field
+
+123
+00:05:31.840 --> 00:05:34.480
+creates a button type "demo-link-to-file"
+
+124
+00:05:34.480 --> 00:05:37.280
+with the start delimiter of "{{"
+
+125
+00:05:37.280 --> 00:05:40.560
+and then delimiters of "}}",
+
+126
+00:05:40.560 --> 00:05:43.320
+the regular expression ".*" pattern
+
+127
+00:05:43.320 --> 00:05:45.640
+to match everything between the delimiters,
+
+128
+00:05:45.640 --> 00:05:48.800
+and finally, the action defined by the link expression.
+
+129
+00:05:48.800 --> 00:05:52.160
+Pattern substitution is performed
+
+130
+00:05:52.160 --> 00:05:54.440
+on the link expression before evaluation
+
+131
+00:05:54.440 --> 00:05:57.920
+so that the text that is in between the delimiters
+
+132
+00:05:57.920 --> 00:06:02.360
+is inserted where the "\\&" is in the link expression.
+
+134
+00:06:02.360 --> 00:06:07.560
+So all in all, implicit type instance will result in
+
+135
+00:06:07.560 --> 00:06:11.760
+the link expression of "~/data/FileA",
+
+136
+00:06:11.760 --> 00:06:14.520
+which we recognize as a file path.
+
+137
+00:06:14.520 --> 00:06:18.040
+With a single-line expression,
+
+138
+00:06:18.040 --> 00:06:21.040
+we have created our own hyperbutton syntax
+
+139
+00:06:21.040 --> 00:06:23.080
+that we can use in any Emacs buffer
+
+140
+00:06:23.080 --> 00:06:25.560
+to link to this custom set of data.
+
+141
+00:06:25.560 --> 00:06:30.960
+So let's evaluate the defil and use it.
+
+142
+00:06:30.960 --> 00:06:33.760
+I have prepared the files so that they already
+
+143
+00:06:33.760 --> 00:06:36.400
+contain some text and implicit links.
+
+144
+00:06:36.400 --> 00:06:43.760
+So from the presentation, we can go to FileA,
+
+145
+00:06:43.760 --> 00:06:48.720
+and from there to fileB.
+
+146
+00:06:48.720 --> 00:06:51.040
+Since the Hyperbole path expression
+
+147
+00:06:51.040 --> 00:06:53.640
+supports outline structures, we can,
+
+148
+00:06:53.640 --> 00:06:55.960
+as an extra bonus, reference directly
+
+149
+00:06:55.960 --> 00:06:57.560
+the headers in the files,
+
+150
+00:06:57.560 --> 00:07:00.160
+so we can, for example, link directly
+
+151
+00:07:00.160 --> 00:07:02.600
+to "More Notes" in FileB.
+
+152
+00:07:02.600 --> 00:07:10.720
+We have now created a simple info system.
+
+154
+00:07:10.720 --> 00:07:16.440
+Looking deeper at the link expression,
+
+155
+00:07:16.440 --> 00:07:19.840
+it can be of four different types:
+
+156
+00:07:19.840 --> 00:07:22.040
+A file path expression,
+
+157
+00:07:22.040 --> 00:07:23.520
+as we have already looked at;
+
+158
+00:07:23.520 --> 00:07:25.960
+a brace-delimited key series,
+
+159
+00:07:25.960 --> 00:07:27.960
+that is, a series of command keys
+
+160
+00:07:27.960 --> 00:07:29.480
+for performing some action,
+
+161
+00:07:29.480 --> 00:07:30.960
+much like a keyboard macro;
+
+162
+00:07:30.960 --> 00:07:36.240
+An URL; or a function that takes one argument,
+
+163
+00:07:36.240 --> 00:07:38.640
+which will be given the button text as input.
+
+164
+00:07:38.640 --> 00:07:42.880
+The URL link expression allows you
+
+165
+00:07:42.880 --> 00:07:44.480
+to link to web pages.
+
+166
+00:07:44.480 --> 00:07:46.560
+So if the data you want to link to
+
+167
+00:07:46.560 --> 00:07:48.640
+is accessible through the Web
+
+168
+00:07:48.640 --> 00:07:50.880
+and the URL can be constructed
+
+169
+00:07:50.880 --> 00:07:53.000
+from the button text in a meaningful way,
+
+170
+00:07:53.000 --> 00:07:54.520
+it is possible to do that.
+
+171
+00:07:54.520 --> 00:07:56.160
+Let's create the button type
+
+172
+00:07:56.160 --> 00:07:57.720
+that links to GNU software.
+
+173
+00:07:57.720 --> 00:08:01.088
+The URL to the GNU software catalog
+
+00:08:01.089 --> 00:08:04.680
+is www.gnu.org/software,
+
+174
+00:08:04.680 --> 00:08:07.440
+and with what we know about the field,
+
+175
+00:08:07.440 --> 00:08:09.640
+it is easy to create the button type for that.
+
+176
+00:08:09.640 --> 00:08:11.000
+It can look like this.
+
+177
+00:08:11.000 --> 00:08:16.200
+And here are two possible buttons
+
+178
+00:08:16.200 --> 00:08:19.320
+linking to Emacs and Hyperbole.
+
+179
+00:08:19.320 --> 00:08:24.200
+So let's again evaluate the defil and use it.
+
+180
+00:08:24.200 --> 00:08:28.120
+Please note that not all GNU software
+
+181
+00:08:28.120 --> 00:08:29.000
+is under that URL,
+
+182
+00:08:29.000 --> 00:08:31.000
+so this simple definition will not work
+
+183
+00:08:31.000 --> 00:08:32.200
+to link to everything.
+
+184
+00:08:32.200 --> 00:08:37.280
+To highlight the fact that the button action
+
+185
+00:08:37.280 --> 00:08:39.080
+does not have to be a link,
+
+186
+00:08:39.080 --> 00:08:40.600
+but can be any action,
+
+187
+00:08:40.600 --> 00:08:42.200
+let's look at a math example.
+
+188
+00:08:42.200 --> 00:08:44.800
+Here is the button type that does some math
+
+189
+00:08:44.800 --> 00:08:47.480
+and writes the result in the message area.
+
+190
+00:08:47.480 --> 00:08:57.160
+Let's evaluate and use it.
+
+191
+00:08:57.160 --> 00:08:59.760
+Before ending, I would like to mention
+
+192
+00:08:59.760 --> 00:09:00.760
+the defal macro.
+
+193
+00:09:00.760 --> 00:09:02.920
+It is similar to the defil macro,
+
+194
+00:09:02.920 --> 00:09:04.880
+but simpler, since it uses a form
+
+195
+00:09:04.880 --> 00:09:07.880
+of the implicit button type with no delimiters.
+
+196
+00:09:07.880 --> 00:09:14.800
+It is simply <TYPE LINK-EXPR>.
+
+197
+00:09:14.800 --> 00:09:17.920
+So the implicit button type contains the link type
+
+198
+00:09:17.920 --> 00:09:18.960
+in clear text.
+
+199
+00:09:18.960 --> 00:09:23.120
+Our recent FSF software button
+
+200
+00:09:23.120 --> 00:09:24.854
+would be created like this.
+
+00:09:24.855 --> 00:09:29.760
+And it would be instantiated in text like this.
+
+202
+00:09:29.760 --> 00:09:34.960
+I have shown how you,
+
+203
+00:09:34.960 --> 00:09:37.840
+with the help of the defil macro in Hyperbole,
+
+204
+00:09:37.840 --> 00:09:40.240
+quickly can create implicit buttons.
+
+205
+00:09:40.240 --> 00:09:41.480
+With those buttons, you can link
+
+206
+00:09:41.480 --> 00:09:43.160
+to your personal information
+
+207
+00:09:43.160 --> 00:09:44.160
+in the form it may have.
+
+208
+00:09:44.160 --> 00:09:47.200
+By the nature of the implicit buttons,
+
+209
+00:09:47.200 --> 00:09:49.880
+those can be used from any file in Emacs.
+
+210
+00:09:49.880 --> 00:09:52.640
+The button types can be
+
+211
+00:09:52.640 --> 00:09:54.640
+created to be used long term,
+
+212
+00:09:54.640 --> 00:09:57.680
+but even short term use within the session is possible,
+
+213
+00:09:57.680 --> 00:09:59.880
+since the creation is simple and quick.
+
+214
+00:09:59.880 --> 00:10:03.400
+Inspired by this, I hope you will find ways
+
+215
+00:10:03.400 --> 00:10:04.760
+to create implicit buttons
+
+216
+00:10:04.760 --> 00:10:07.360
+that will support you getting to your information.
+
+217
+00:10:07.360 --> 00:10:09.240
+For the simplest cases,
+
+218
+00:10:09.240 --> 00:10:11.400
+the field and the file macros might be enough.
+
+219
+00:10:11.400 --> 00:10:13.360
+For more complicated cases,
+
+220
+00:10:13.360 --> 00:10:15.760
+using a tailor-made function can be an option.
+
+221
+00:10:15.760 --> 00:10:19.480
+If you know Elisp, use the defib macro
+
+222
+00:10:19.480 --> 00:10:22.240
+which gives you full control over the button type.
+
+223
+00:10:22.240 --> 00:10:32.000
+Thank you.
diff --git a/2022/captions/emacsconf-2022-mail--revisiting-the-anatomy-of-emacs-mail-user-agents--mohsen-banan--main.vtt b/2022/captions/emacsconf-2022-mail--revisiting-the-anatomy-of-emacs-mail-user-agents--mohsen-banan--main.vtt
new file mode 100644
index 00000000..e39711df
--- /dev/null
+++ b/2022/captions/emacsconf-2022-mail--revisiting-the-anatomy-of-emacs-mail-user-agents--mohsen-banan--main.vtt
@@ -0,0 +1,1757 @@
+WEBVTT captioned by mohsen
+
+NOTE Introduction
+
+00:00:00.000 --> 00:00:09.719
+Greetings. Salaam. This is Mohsen Banan. محسن بنان.
+
+00:00:09.720 --> 00:00:12.559
+I am a software and internet engineer.
+
+00:00:12.560 --> 00:00:14.519
+I have been interested in email and
+
+00:00:14.520 --> 00:00:17.199
+Emacs for a very long time.
+
+00:00:17.200 --> 00:00:21.159
+My interest in email started with X.400
+
+00:00:21.160 --> 00:00:27.599
+and the Red and Blue CCITT books -- circa 1988.
+
+00:00:27.600 --> 00:00:31.999
+Early on, in the very early 1990s, I jumped ship
+
+00:00:32.000 --> 00:00:35.279
+and joined the Internet email movement.
+
+00:00:35.280 --> 00:00:38.399
+I am the primary author of two mobile email
+
+00:00:38.400 --> 00:00:45.839
+related Internet RFCs, RFC-2188 and RFC-2524.
+
+00:00:45.840 --> 00:00:49.919
+My interest in Emacs started in 1986 --
+
+00:00:49.920 --> 00:00:54.959
+It was Emacs version 17 then. By around 1988
+
+00:00:54.960 --> 00:00:58.479
+when Emacs version 18 was well in place,
+
+00:00:58.480 --> 00:01:01.799
+I started living inside of Emacs.
+
+00:01:01.800 --> 00:01:06.479
+My primary digital environment has been Emacs ever since.
+
+00:01:06.480 --> 00:01:11.319
+It has been a good life.
+
+00:01:11.320 --> 00:01:16.999
+It turns out that Emacs and email mix up really well.
+
+00:01:17.000 --> 00:01:21.519
+Here, in this presentation and in the context of
+
+00:01:21.520 --> 00:01:26.799
+Revisiting The Anatomy of Emacs Mail User Agents,
+
+00:01:26.800 --> 00:01:30.319
+With MARMEE (Multi-Account Resident
+
+00:01:30.320 --> 00:01:33.399
+Message Exchange Environment)
+
+00:01:33.400 --> 00:01:35.559
+I am offering my thoughts on this topic
+
+00:01:35.560 --> 00:01:41.079
+in this Emacs Conference 2022.
+
+NOTE Mail and the digital ecosystem
+
+00:01:41.080 --> 00:01:43.359
+Long ago, I asked myself:
+
+00:01:43.360 --> 00:01:49.119
+"What should my ultimate mail environment be?"
+
+00:01:49.120 --> 00:01:52.140
+Over the past 20+ years, I have been exploring
+
+00:01:52.141 --> 00:01:58.519
+the concept of the "Ultimate Mail User Agent (MUA)".
+
+00:01:58.520 --> 00:02:01.439
+We do care about privacy, autonomy,
+
+00:02:01.440 --> 00:02:05.039
+morality, ethics, society and philosophy,
+
+00:02:05.040 --> 00:02:10.679
+so from the get go, proprietary (Haraam) environments
+
+00:02:10.680 --> 00:02:14.199
+such as Microsoft Office's Outlook
+
+00:02:14.200 --> 00:02:20.159
+and Google Office's Gmail were non-starters for me.
+
+00:02:20.160 --> 00:02:23.159
+But these are significant realities
+
+00:02:23.160 --> 00:02:27.879
+and we need to deal with these realities.
+
+00:02:27.880 --> 00:02:30.199
+Notice how Microsoft and Google
+
+00:02:30.200 --> 00:02:36.079
+have both framed their MUAs in the context of "office".
+
+00:02:36.080 --> 00:02:38.719
+That type of framing is correct.
+
+00:02:38.720 --> 00:02:41.719
+an MUA must be fully integrated
+
+00:02:41.720 --> 00:02:46.559
+in the totality of one's digital ecosystem.
+
+00:02:46.560 --> 00:02:49.759
+So, the Ultimate Mail User Agent
+
+00:02:49.760 --> 00:02:53.399
+must be part of the Ultimate Usage Environment
+
+00:02:53.400 --> 00:02:57.599
+of the Ultimate Digital Ecosystem.
+
+00:02:57.600 --> 00:03:02.799
+In the non-proprietary (Halaal) universe, clearly
+
+00:03:02.800 --> 00:03:07.199
+the ultimate usage environment is Emacs.
+
+00:03:07.200 --> 00:03:10.879
+Emacs is today's most potent and convivial
+
+00:03:10.880 --> 00:03:15.159
+non-proprietary usage environment.
+
+00:03:15.160 --> 00:03:19.399
+So, clearly, the ultimate Mail User Agent
+
+00:03:19.400 --> 00:03:22.879
+must be an integral part of Emacs.
+
+NOTE Emacs and mail
+
+00:03:22.880 --> 00:03:24.157
+Having reached that conclusion,
+
+00:03:24.158 --> 00:03:28.124
+we then need to determine the specifics
+
+00:03:28.125 --> 00:03:33.599
+of the shape and the anatomy of Emacs' MUAs.
+
+00:03:33.600 --> 00:03:36.039
+We could have arrived at this conclusion
+
+00:03:36.040 --> 00:03:38.239
+from the reverse direction as well.
+
+00:03:38.240 --> 00:03:41.599
+Zawinski's Law states:
+
+00:03:41.600 --> 00:03:46.479
+Every program attempts to expand until it can read mail.
+
+00:03:46.480 --> 00:03:49.119
+Those programs which cannot so expand
+
+00:03:49.120 --> 00:03:52.679
+are replaced by ones which can.
+
+00:03:52.680 --> 00:03:56.719
+Jamie's point is very simple and obvious.
+
+00:03:56.720 --> 00:03:59.759
+The "App" that you "live in" all day
+
+00:03:59.760 --> 00:04:05.439
+should be your MUA and mail environment.
+
+00:04:05.440 --> 00:04:09.559
+I ask those who jumped ship, who abandoned Emacs
+
+00:04:09.560 --> 00:04:15.879
+in favor of VS Code: What about mail?
+
+00:04:15.880 --> 00:04:21.279
+Long ago, Emacs expanded to including MUAs.
+
+00:04:21.280 --> 00:04:27.039
+In fact there are many Emacs MUAs that you can choose from.
+
+00:04:27.040 --> 00:04:30.599
+If you are already hip with Emacs And Linux,
+
+00:04:30.600 --> 00:04:34.639
+you should definitely consider doing email in Emacs.
+
+00:04:34.640 --> 00:04:39.079
+But if you are not already hip with Emacs,
+
+00:04:39.080 --> 00:04:43.359
+I mean for new Emacs users, unfortunately,
+
+00:04:43.360 --> 00:04:48.599
+setting up and using email is not straight forward.
+
+00:04:48.600 --> 00:04:54.519
+We (I mean, Emacs developers) should work on that!
+
+00:04:54.520 --> 00:04:57.359
+Emacs offers a good number of MUAs with
+
+00:04:57.360 --> 00:05:01.959
+different characteristics to suit differing tastes.
+
+00:05:01.960 --> 00:05:06.119
+As of 2022, you can choose from the following MUAs:
+
+00:05:06.120 --> 00:05:15.079
+Gnus, VM, WanderLust, Mew, mu4e, notmuch.el, mh-e and Rmail.
+
+00:05:15.080 --> 00:05:17.719
+Over the years I have tried several of these
+
+00:05:17.720 --> 00:05:20.119
+and eventually landed on Gnus.
+
+00:05:20.120 --> 00:05:25.519
+The relevance column in this table simply and only
+
+00:05:25.520 --> 00:05:28.079
+reflects my taste.
+
+00:05:28.080 --> 00:05:32.399
+Throughout the rest of this presentation, I focus on Gnus.
+
+NOTE The audience for this presentation
+
+00:05:32.400 --> 00:05:36.199
+I have 3 types of audiences in mind for this presentation.
+
+00:05:36.200 --> 00:05:39.959
+First, if you are already using Emacs
+
+00:05:39.960 --> 00:05:42.439
+as more than an editor,
+
+00:05:42.440 --> 00:05:47.399
+it makes good sense for you to also use Emacs as your MUA.
+
+00:05:47.400 --> 00:05:50.759
+There may well be some relevant information here for you
+
+00:05:50.760 --> 00:05:52.319
+in that situation.
+
+00:05:52.320 --> 00:05:57.599
+Second, for those interested in philosophy of Emacs,
+
+00:05:57.600 --> 00:06:00.759
+I go on some bigger picture tangents
+
+00:06:00.760 --> 00:06:02.839
+that may be of value to you.
+
+00:06:02.840 --> 00:06:08.839
+Third, I address some Emacs developers with some feedback,
+
+00:06:08.840 --> 00:06:11.319
+some suggestions, and some requests.
+
+00:06:11.320 --> 00:06:14.599
+The general model here is that
+
+00:06:14.600 --> 00:06:17.079
+we would collectively work towards
+
+00:06:17.080 --> 00:06:19.799
+improving what is on the table.
+
+NOTE Monolithic mail user agents
+
+00:06:19.800 --> 00:06:22.719
+When a Mail User Agent is self-contained
+
+00:06:22.720 --> 00:06:26.519
+and includes implementation of mail protocols,
+
+00:06:26.520 --> 00:06:29.079
+we call it a Monolithic-MUA.
+
+00:06:29.080 --> 00:06:33.879
+Just as it is with the physical mail postal service,
+
+00:06:33.880 --> 00:06:36.919
+sending mail and receiving mail
+
+00:06:36.920 --> 00:06:40.639
+are fundamentally separate activities.
+
+00:06:40.640 --> 00:06:42.839
+And then there is mail processing.
+
+00:06:42.840 --> 00:06:45.959
+Based on these categorizations,
+
+00:06:45.960 --> 00:06:49.679
+Emacs has a set of mature libraries
+
+00:06:49.680 --> 00:06:53.359
+for composing mail, sending mail, and receiving mail.
+
+00:06:53.360 --> 00:06:58.119
+These are all independently well-documented
+
+00:06:58.120 --> 00:07:02.479
+and are part of the basic emacs Distribution.
+
+00:07:02.480 --> 00:07:06.239
+Emacs MUAs then use these common libraries
+
+00:07:06.240 --> 00:07:09.519
+to process mail (each somewhat differently).
+
+00:07:09.520 --> 00:07:15.399
+The primary benefit of the Monolithic-MUA approach
+
+00:07:15.400 --> 00:07:19.599
+is that Emacs MUAs then become self-contained
+
+00:07:19.600 --> 00:07:22.959
+and therefore multi-platform.
+
+NOTE Split mail user agents
+
+00:07:22.960 --> 00:07:25.559
+But, when it comes to the question of merits of
+
+00:07:25.560 --> 00:07:30.559
+implementation of mail protocols in Elisp inside of Emacs,
+
+00:07:30.560 --> 00:07:33.959
+there is also another approach:
+
+00:07:33.960 --> 00:07:36.159
+that of a Split-MUA.
+
+00:07:36.160 --> 00:07:40.559
+Concept of a split-MUA is that of
+
+00:07:40.560 --> 00:07:44.959
+splitting the MUA into two different parts:
+
+00:07:44.960 --> 00:07:47.159
+One being the usage environment,
+
+00:07:47.160 --> 00:07:50.319
+and the other being mail protocols processing.
+
+00:07:50.320 --> 00:07:54.719
+The interface between these can be either
+
+00:07:54.720 --> 00:07:57.839
+direct (the upper box)
+
+00:07:57.840 --> 00:08:00.279
+or through protocols (the lower box).
+
+00:08:00.280 --> 00:08:05.159
+With Gnus, we primarily use the direct interface.
+
+00:08:05.160 --> 00:08:09.639
+The split-MUA model has many advantages
+
+00:08:09.640 --> 00:08:12.599
+over the monolithic-MUA model.
+
+00:08:12.600 --> 00:08:17.279
+With Split-MUAs, your messages are local,
+
+00:08:17.280 --> 00:08:19.839
+you can search them privately
+
+00:08:19.840 --> 00:08:22.319
+and access to your email is faster.
+
+NOTE Gnus can be both
+
+00:08:22.320 --> 00:08:28.119
+Gnus can be used as both a Monolithic-MUA
+
+00:08:28.120 --> 00:08:30.599
+and also as a Split-MUA.
+
+00:08:30.600 --> 00:08:35.399
+Gnus and other Emacs MUAs are flexible enough
+
+00:08:35.400 --> 00:08:39.119
+to allow you to create your own split-MUA.
+
+00:08:39.120 --> 00:08:42.519
+For outgoing mail, Gnus can
+
+00:08:42.520 --> 00:08:45.119
+invoke a sendmail-like interface program.
+
+00:08:45.120 --> 00:08:50.007
+For incoming mail, Gnus can access Maildirs directly
+
+00:08:50.008 --> 00:08:53.724
+and let other programs imap-retrieve
+
+00:08:53.725 --> 00:08:56.439
+and update into maildirs.
+
+00:08:56.440 --> 00:08:59.719
+You can then search through your maildirs
+
+00:08:59.720 --> 00:09:01.374
+locally and privately
+
+00:09:01.375 --> 00:09:04.559
+with various mail-oriented search engines,
+
+00:09:04.560 --> 00:09:07.319
+and many have done so.
+
+00:09:07.320 --> 00:09:11.399
+For example, what we are seeing on this slide
+
+00:09:11.400 --> 00:09:15.879
+is from a 2014 Do It Yourself (DIY) recipe
+
+00:09:15.880 --> 00:09:20.319
+that one of our fellow Emacs conference participants,
+
+00:09:20.320 --> 00:09:24.879
+Adolfo, had published at the mentioned URL.
+
+00:09:24.880 --> 00:09:29.719
+The recipe in that slide is based on the following tools:
+
+00:09:29.720 --> 00:09:35.079
+mbsync, mu, mu4e, and msmtp.
+
+00:09:35.080 --> 00:09:38.279
+All our choices are different.
+
+00:09:38.280 --> 00:09:42.399
+There are many such recipes out there on the web.
+
+NOTE Proprietary universes
+
+00:09:42.400 --> 00:09:46.199
+So, here, I don't want to provide
+
+00:09:46.200 --> 00:09:50.439
+yet another Emacs Split-MUA recipe.
+
+00:09:50.440 --> 00:09:51.559
+I want to do more.
+
+00:09:51.560 --> 00:09:56.679
+Instead, I want to target the contours of the ultimate MUA
+
+00:09:56.680 --> 00:10:01.319
+in the non-proprietary universe of digital ecosystems.
+
+00:10:01.320 --> 00:10:05.439
+But, first, let's take a look at what is
+
+00:10:05.440 --> 00:10:07.479
+happening in the proprietary universe.
+
+00:10:07.480 --> 00:10:11.439
+The 5 big American proprietary tech companies
+
+00:10:11.440 --> 00:10:14.399
+(Google, Microsoft, Apple, Facebook and Amazon)
+
+00:10:14.400 --> 00:10:20.439
+have created 5 competing enclaves as mostly separate
+
+00:10:20.440 --> 00:10:22.999
+and isolated digital ecosystem.
+
+00:10:23.000 --> 00:10:27.839
+In this slide, I am focusing on the first 3
+
+00:10:27.840 --> 00:10:31.439
+and each of their office and email environments.
+
+00:10:31.440 --> 00:10:36.319
+Let's clearly recognize that the economic model
+
+00:10:36.320 --> 00:10:40.159
+of these proprietary digital ecosystems is:
+
+00:10:40.160 --> 00:10:42.159
+"Surveillance Capitalism".
+
+00:10:42.160 --> 00:10:45.799
+So, when any of us goes there to get
+
+00:10:45.800 --> 00:10:47.959
+a free-of-charge email account,
+
+00:10:47.960 --> 00:10:53.039
+he has chosen to voluntarily forgo much of his privacy.
+
+00:10:53.040 --> 00:10:55.799
+And many have done so.
+
+00:10:55.800 --> 00:10:59.919
+Sadly, the rest of the world is becoming
+
+00:10:59.920 --> 00:11:02.719
+Americanized through the American Internet.
+
+00:11:02.720 --> 00:11:08.439
+As of 2022, almost %90 of Facebook's
+
+00:11:08.440 --> 00:11:11.959
+daily active users come from outside of the US.
+
+00:11:11.960 --> 00:11:17.159
+Also, with respect to email, each of the enclaves
+
+00:11:17.160 --> 00:11:20.039
+have MUAs that are fully integrated
+
+00:11:20.040 --> 00:11:22.439
+in their digital ecosystems
+
+00:11:22.440 --> 00:11:24.599
+in the form of an office environment
+
+00:11:24.600 --> 00:11:29.839
+comprising of address book, calendar, time management
+
+00:11:29.840 --> 00:11:33.199
+and planning tools and multi-lingual authoring
+
+00:11:33.200 --> 00:11:36.239
+and various other integrated tools.
+
+NOTE Non-proprietary universes
+
+00:11:36.240 --> 00:11:40.839
+Now, let's focus on the right side of this picture.
+
+00:11:40.840 --> 00:11:43.519
+On the non-proprietary side,
+
+00:11:43.520 --> 00:11:46.239
+based on the Western FLOSS model,
+
+00:11:46.240 --> 00:11:49.479
+we have ended up with lots of components.
+
+00:11:49.480 --> 00:11:52.239
+We have Debian as a platform,
+
+00:11:52.240 --> 00:11:58.919
+we have Emacs as an editor-centered office environment
+
+00:11:58.920 --> 00:12:03.439
+and we have Gnus as an incredibly powerful MUA.
+
+00:12:03.440 --> 00:12:07.839
+But on the non-proprietary side we don't have anything
+
+00:12:07.840 --> 00:12:12.079
+that can reasonably be considered a digital ecosystem.
+
+00:12:12.080 --> 00:12:16.439
+I mean, the services aspect is missing.
+
+NOTE By*
+
+00:12:16.440 --> 00:12:20.799
+Over the past two decades I have created
+
+00:12:20.800 --> 00:12:24.399
+quite an elaborate digital ecosystem for myself.
+
+00:12:24.400 --> 00:12:26.759
+It is called: By*.
+
+00:12:26.760 --> 00:12:30.839
+The Libre-Halaal ByStar Digital Ecosystem
+
+00:12:30.840 --> 00:12:35.439
+is being built to provide autonomy-oriented services
+
+00:12:35.440 --> 00:12:37.359
+on internet scale.
+
+00:12:37.360 --> 00:12:42.919
+The * in ByStar stands for Unix's globbing symbol,
+
+00:12:42.920 --> 00:12:46.919
+signifying that our scope is everything.
+
+00:12:46.920 --> 00:12:52.039
+Notice in this bigger picture that in the red box,
+
+00:12:52.040 --> 00:12:58.439
+our focus remains to be Emacs, Gnus and the ultimate MUA.
+
+00:12:58.440 --> 00:13:03.439
+I am not here to sell you ByStar, but perhaps
+
+00:13:03.440 --> 00:13:06.239
+you should be in the market for something like that.
+
+00:13:06.240 --> 00:13:10.879
+We need non-proprietary digital ecosystems.
+
+00:13:10.880 --> 00:13:13.359
+Very briefly, I'll give you
+
+00:13:13.360 --> 00:13:16.319
+some pointers to the full ByStar story.
+
+00:13:16.320 --> 00:13:23.239
+The full ByStar story is a 250 plus pages book titled:
+
+00:13:23.240 --> 00:13:26.079
+Nature Of Polyexistentials,
+
+00:13:26.080 --> 00:13:28.399
+Basis For Abolishment Of
+
+00:13:28.400 --> 00:13:31.319
+The Western Intellectual Property Rights Regime,
+
+00:13:31.320 --> 00:13:33.479
+And Introduction Of
+
+00:13:33.480 --> 00:13:36.359
+The Libre-Halaal ByStar Digital Ecosystem.
+
+00:13:36.360 --> 00:13:42.039
+I have it self-published on my own ByName public web page.
+
+00:13:42.040 --> 00:13:46.639
+The ByStar story starts with understanding of the
+
+00:13:46.640 --> 00:13:48.959
+Nature Of Polyexistentials.
+
+00:13:48.960 --> 00:13:53.839
+Polyexistentials inherently exist in multiples.
+
+00:13:53.840 --> 00:13:56.959
+Software is a polyexistential.
+
+00:13:56.960 --> 00:14:01.919
+Polyexistentials are naturally non-scarce,
+
+00:14:01.920 --> 00:14:06.279
+and making polyexistential artificially scarce,
+
+00:14:06.280 --> 00:14:08.599
+which is what the Western
+
+00:14:08.600 --> 00:14:11.119
+intellectual property rights regime does,
+
+00:14:11.120 --> 00:14:13.599
+is counter to nature.
+
+00:14:13.600 --> 00:14:17.639
+Polyexistentials are unownable
+
+00:14:17.640 --> 00:14:20.039
+and should not be considered property.
+
+00:14:20.040 --> 00:14:25.079
+The Western IPR regime is in conflict with nature.
+
+00:14:25.080 --> 00:14:29.039
+But, the book is more than just philosophy.
+
+00:14:29.040 --> 00:14:32.359
+In that book I also cover
+
+00:14:32.360 --> 00:14:35.799
+the bigger picture of healthy digital ecosystems
+
+00:14:35.800 --> 00:14:39.359
+which also includes the topic of this presentation.
+
+00:14:39.360 --> 00:14:43.399
+I'd be interested in your thoughts and your feedback,
+
+00:14:43.400 --> 00:14:45.679
+if you choose to dig deeper.
+
+00:14:45.680 --> 00:14:50.999
+And if you want to dig deeper, here are some links.
+
+00:14:51.000 --> 00:14:55.079
+By* is about re-decentralization
+
+00:14:55.080 --> 00:14:57.159
+of Internet application services.
+
+00:14:57.160 --> 00:15:00.759
+Among other things, ByStar provides
+
+00:15:00.760 --> 00:15:05.159
+complete own-your-email services. I mean,
+
+00:15:05.160 --> 00:15:10.319
+private Hillary-Clinton-Style mail servers for everyone.
+
+00:15:10.320 --> 00:15:16.519
+There is an overview of ByStar at by-star.net.
+
+NOTE Libre-Halaal
+
+00:15:16.520 --> 00:15:21.199
+You may have noticed that I consistently use
+
+00:15:21.200 --> 00:15:25.479
+the "Libre-Halaal" label with ByStar.
+
+00:15:25.480 --> 00:15:28.919
+Halaal is a very sensitive word.
+
+00:15:28.920 --> 00:15:30.719
+I am a Moslem.
+
+00:15:30.720 --> 00:15:35.919
+But my use of Halaal is not in a religious context.
+
+00:15:35.920 --> 00:15:39.079
+It is in a philosphical context.
+
+00:15:39.080 --> 00:15:42.759
+And the scope of the "Libre-Halaal" label
+
+00:15:42.760 --> 00:15:46.439
+is manner-of-existence of Software and Services.
+
+00:15:46.440 --> 00:15:50.599
+It is not about Halaal-ness with respect to
+
+00:15:50.600 --> 00:15:54.959
+function and use of Software and Services.
+
+00:15:54.960 --> 00:15:58.239
+Unfortunately, the word Halaal
+
+00:15:58.240 --> 00:16:02.319
+and the concept of Halaal does not exist in English.
+
+00:16:02.320 --> 00:16:06.759
+So, first I introduce it into Globish.
+
+00:16:06.760 --> 00:16:12.799
+I have done so in PLPC-120039.
+
+00:16:12.800 --> 00:16:18.199
+Further, I explain as to why labels
+
+00:16:18.200 --> 00:16:22.639
+of Open Source and Free Software are both ill-directed.
+
+00:16:22.640 --> 00:16:25.839
+We then carefully define
+
+00:16:25.840 --> 00:16:29.999
+"Libre-Halaal Software" and "Libre-Halaal Services".
+
+00:16:30.000 --> 00:16:33.919
+Notice that last link.
+
+00:16:33.920 --> 00:16:36.199
+I bet, this is the first time
+
+00:16:36.200 --> 00:16:40.679
+that anyone includes a link to his "Open Business Plan"
+
+00:16:40.680 --> 00:16:43.159
+in an Emacs Conference.
+
+00:16:43.160 --> 00:16:46.559
+I hope others would do this as well.
+
+00:16:46.560 --> 00:16:49.679
+There is appetite out there
+
+00:16:49.680 --> 00:16:53.639
+for privacy- and autonomy-oriented digital ecosystems,
+
+00:16:53.640 --> 00:16:57.759
+and there is no conflict between honest business,
+
+00:16:57.760 --> 00:17:01.039
+honest profit, and Libre-Halaal Software
+
+00:17:01.040 --> 00:17:02.919
+and Libre-Halaal Services.
+
+00:17:02.920 --> 00:17:08.039
+The sub-title of our open business plan is:
+
+00:17:08.040 --> 00:17:12.879
+"An Inversion to the Proprietary Internet Services Model".
+
+00:17:12.880 --> 00:17:20.879
+And here are the same links as a native Reveal slide.
+
+00:17:20.880 --> 00:17:24.679
+If instead of a video, you are viewing
+
+00:17:24.680 --> 00:17:27.399
+this presentation as a Reveal web page,
+
+00:17:27.400 --> 00:17:31.319
+you can just click on the pointers and URLs.
+
+NOTE The BISOS integration framework
+
+00:17:31.320 --> 00:17:36.879
+So, what was the point of bringing ByStar
+
+00:17:36.880 --> 00:17:38.119
+into this presentation?
+
+00:17:38.120 --> 00:17:42.319
+In tangible terms, what have we gotten out of
+
+00:17:42.320 --> 00:17:45.639
+the tangent we took on the ByStar bigger picture?
+
+00:17:45.640 --> 00:17:50.839
+Of course we have the ByStar Digital Ecosystem itself.
+
+00:17:50.840 --> 00:17:54.879
+But that is not immediately relevant to this presentation.
+
+00:17:54.880 --> 00:17:59.959
+Here, through BISOS we now have
+
+00:17:59.960 --> 00:18:04.359
+an integration framework, which we definitely needed.
+
+00:18:04.360 --> 00:18:07.879
+We now have BISOS-MARMEE,
+
+00:18:07.880 --> 00:18:11.519
+Multi-Account Resident Mail Exchange Environment,
+
+00:18:11.520 --> 00:18:13.679
+which is a consistent set
+
+00:18:13.680 --> 00:18:17.639
+of MUA-related software components --- which we need.
+
+00:18:17.640 --> 00:18:23.159
+We also needed to augment Emacs in our own terms,
+
+00:18:23.160 --> 00:18:25.919
+so we have Blee for that,
+
+00:18:25.920 --> 00:18:29.959
+ByStar Libre-Halaal Emacs Environment,
+
+00:18:29.960 --> 00:18:32.919
+is ByStar ecosystemized Emacs.
+
+00:18:32.920 --> 00:18:37.679
+And finally Blee-Gnus, which is
+
+00:18:37.680 --> 00:18:40.639
+Gnus and MARMEE integrated with Blee.
+
+00:18:40.640 --> 00:18:46.479
+With these in place, we can now dive deeper into MARMEE.
+
+00:18:46.480 --> 00:18:53.119
+The idea of MARMEE, is that of packaging together
+
+00:18:53.120 --> 00:18:56.079
+the mail protocols parts of the Split-MUA.
+
+00:18:56.080 --> 00:19:00.799
+MARMEE (which is of course in the context of BISOS)
+
+00:19:00.800 --> 00:19:03.679
+is the green box in this slide.
+
+00:19:03.680 --> 00:19:08.519
+For outgoing mail, we use an altered qmail.
+
+00:19:08.520 --> 00:19:12.679
+We will be looking deeper into qmail a bit later.
+
+00:19:12.680 --> 00:19:17.559
+For incoming mail, we are using offlineimap
+
+00:19:17.560 --> 00:19:20.119
+which is oauth2 aware.
+
+NOTE BISOS-MARMEE
+
+00:19:20.120 --> 00:19:23.439
+Before going into more details,
+
+00:19:23.440 --> 00:19:26.519
+let's take a look at the parts lists for
+
+00:19:26.520 --> 00:19:29.359
+BISOS-MARMEE and Blee-Gnus.
+
+00:19:29.360 --> 00:19:33.719
+MARMEE is a collection of Python-based libraries
+
+00:19:33.720 --> 00:19:37.479
+and Debian packages that provide for rich sending
+
+00:19:37.480 --> 00:19:40.279
+and receiving of email outside of Emacs.
+
+00:19:40.280 --> 00:19:44.239
+Here is our BISOS-MARMEE parts list.
+
+00:19:44.240 --> 00:19:48.599
+MARMEE features include tracked mail Sending
+
+00:19:48.600 --> 00:19:51.919
+for confirmed mail communications
+
+00:19:51.920 --> 00:19:54.599
+and email distribution facilities
+
+00:19:54.600 --> 00:19:57.559
+(say, similar to Constant Contact).
+
+00:19:57.560 --> 00:20:02.079
+For Delivery Status Notification (DSN),
+
+00:20:02.080 --> 00:20:06.039
+we have adopted flufl.bounce.
+
+00:20:06.040 --> 00:20:10.879
+I'll be touching on everything that is qmail-related,
+
+00:20:10.880 --> 00:20:17.319
+namely qmail-remote.cs and mailfront, in a separate slide.
+
+00:20:17.320 --> 00:20:21.759
+notmuch is our choice of mail search engine.
+
+NOTE Blee-Gnus
+
+00:20:21.760 --> 00:20:27.319
+Similarly, here is our Blee-Gnus Parts List.
+
+00:20:27.320 --> 00:20:33.439
+Blee-Gnus is Gnus and MARMEE integrated with BISOS and Blee.
+
+00:20:33.440 --> 00:20:38.599
+Notice mentions of org-msg and polymode here.
+
+00:20:38.600 --> 00:20:42.879
+Later, I'll expand on these in the context of
+
+00:20:42.880 --> 00:20:47.679
+transitioning from Message-Mode to Message-Polymode.
+
+NOTE In combination
+
+00:20:47.680 --> 00:20:52.199
+With these parts in place,
+
+00:20:52.200 --> 00:20:55.279
+now let's see how they will all come together.
+
+00:20:55.280 --> 00:20:59.999
+Gnus is very flexible, and in combination with MARMEE,
+
+00:21:00.000 --> 00:21:03.639
+it can create an incredibly powerful MUA.
+
+00:21:03.640 --> 00:21:07.279
+On this slide, note the boxes
+
+00:21:07.280 --> 00:21:10.319
+that include the FPs label.
+
+00:21:10.320 --> 00:21:14.839
+FP stand for File Parameters.
+
+00:21:14.840 --> 00:21:18.519
+It is the basis of BISOS's configuration
+
+00:21:18.520 --> 00:21:20.039
+and secrets management.
+
+00:21:20.040 --> 00:21:24.319
+Notice that it has consistent agents
+
+00:21:24.320 --> 00:21:27.839
+inside of Emacs and on the OS.
+
+00:21:27.840 --> 00:21:29.919
+This is a big deal
+
+00:21:29.920 --> 00:21:34.719
+in that it can reduce user visible configuration complexity.
+
+NOTE X822-Bus
+
+00:21:34.720 --> 00:21:39.759
+Also, notice the X822-Bus here.
+
+00:21:39.760 --> 00:21:43.999
+The idea of X822-Bus is that of
+
+00:21:44.000 --> 00:21:49.839
+allowing for communication among user's preferences, Gnus
+
+00:21:49.840 --> 00:21:53.599
+and MARMEE-qmail through addition of X- fields
+
+00:21:53.600 --> 00:21:57.959
+in RFC-822 message headers.
+
+00:21:57.960 --> 00:22:03.599
+X822-Bus is used for selection of mail sending agents
+
+00:22:03.600 --> 00:22:08.839
+and specification of delivery status parameters.
+
+NOTE bystar-qmail
+
+00:22:08.840 --> 00:22:12.279
+Of key significance in this picture
+
+00:22:12.280 --> 00:22:15.479
+is our choice of qmail for outgoing mail.
+
+00:22:15.480 --> 00:22:22.519
+Compared to sendmail, postfix, exim,
+
+00:22:22.520 --> 00:22:25.399
+and other conventional MTAs;
+
+00:22:25.400 --> 00:22:31.719
+the qmail ecosystem is far more flexible and potent.
+
+00:22:31.720 --> 00:22:34.599
+We are not using qmail as is.
+
+00:22:34.600 --> 00:22:37.999
+Ours is called bystar-qmail.
+
+00:22:38.000 --> 00:22:41.799
+When we use it as a traditional MTA,
+
+00:22:41.800 --> 00:22:45.439
+we refer to it as PALS-qmail.
+
+00:22:45.440 --> 00:22:52.599
+And when we use it on the MUA side, we call it MARMEE-qmail.
+
+00:22:52.600 --> 00:22:56.599
+Just like Emacs, qmail has
+
+00:22:56.600 --> 00:22:59.959
+a solid core and a flexible periphery.
+
+00:22:59.960 --> 00:23:04.479
+All our alterations have been on the periphery.
+
+00:23:04.480 --> 00:23:07.890
+We have replaced qmail-remote
+
+00:23:07.891 --> 00:23:14.479
+with our own Python implementation called qmail-remote.cs.
+
+00:23:14.480 --> 00:23:20.919
+By being in Python, it can do a lot more a lot more easily.
+
+00:23:20.920 --> 00:23:26.540
+For example, qmail-remote.cs interacts with
+
+00:23:26.541 --> 00:23:33.079
+Google Oauth2 APIs and allows you to send through Gmail.
+
+00:23:33.080 --> 00:23:36.399
+This is shown with the red circle.
+
+00:23:36.400 --> 00:23:43.639
+We have also replaced qmail-smtpd with mailfront,
+
+00:23:43.640 --> 00:23:46.159
+shown with a blue circle.
+
+00:23:46.160 --> 00:23:51.359
+This allows us to use MARMEE Split-MUA
+
+00:23:51.360 --> 00:23:53.999
+through protocol interfaces.
+
+00:23:54.000 --> 00:23:56.559
+Let's take a look at that.
+
+NOTE Using MARMEE with other MUAs outside Emacs
+
+00:23:56.560 --> 00:24:02.719
+Previously we looked at the "Direct Interface" of MARMEE,
+
+00:24:02.720 --> 00:24:08.479
+specifically, qmail-inject and Maildir for Gnus.
+
+00:24:08.480 --> 00:24:11.479
+But what if we wanted to use
+
+00:24:11.480 --> 00:24:15.159
+MARMEE with other MUAs outside of Emacs?
+
+00:24:15.160 --> 00:24:18.799
+That can be done through the "Protocol Interface".
+
+00:24:18.800 --> 00:24:22.039
+MARMEE also includes "mailfront"
+
+00:24:22.040 --> 00:24:27.439
+which can function as an SMTP submit server for localhost.
+
+00:24:27.440 --> 00:24:30.599
+This way, we can configure
+
+00:24:30.600 --> 00:24:36.239
+the outgoing mail part of any MUA to point to the localhost
+
+00:24:36.240 --> 00:24:41.399
+and have MARMEE-qmail function as an outgoing proxy.
+
+NOTE Incoming mail
+
+00:24:41.400 --> 00:24:47.919
+For incoming mail, MARMEE-Split-MUA-Protocol-Interface
+
+00:24:47.920 --> 00:24:51.359
+includes "Courier", which can function
+
+00:24:51.360 --> 00:24:54.079
+as an IMAP server for localhost.
+
+00:24:54.080 --> 00:24:58.519
+This way, we can configure the incoming mail part
+
+00:24:58.520 --> 00:25:02.319
+of any MUA to point to the localhost
+
+00:25:02.320 --> 00:25:06.519
+and have MARMEE function as an incoming proxy
+
+00:25:06.520 --> 00:25:10.759
+by serving the local Maildir to the MUA.
+
+NOTE Licensing and project status
+
+00:25:10.760 --> 00:25:18.079
+All sources for all of ByStar, BISOS,
+
+00:25:18.080 --> 00:25:23.439
+Blee and MARMEE are subject to Affero GPL.
+
+00:25:23.440 --> 00:25:28.319
+The sources and documentation are all republished
+
+00:25:28.320 --> 00:25:30.559
+under various "Organizations"
+
+00:25:30.560 --> 00:25:35.439
+under github.com/mohsenBanan
+
+00:25:35.440 --> 00:25:40.679
+All of ByStar, BISOS, Blee and MARMEE
+
+00:25:40.680 --> 00:25:42.839
+reflect work in progress,
+
+00:25:42.840 --> 00:25:46.319
+and we are NOT recruiting users at this time.
+
+00:25:46.320 --> 00:25:49.279
+For more than two decades,
+
+00:25:49.280 --> 00:25:53.159
+I have been using these all in that bigger context.
+
+00:25:53.160 --> 00:25:56.239
+They are mostly real,
+
+00:25:56.240 --> 00:26:01.399
+but so far, just for myself and a few other engineers.
+
+00:26:01.400 --> 00:26:06.519
+Our model is similar to God's early days.
+
+00:26:06.520 --> 00:26:08.319
+You may ask:
+
+00:26:08.320 --> 00:26:12.119
+"How did God create all of this in just 7 days?"
+
+00:26:12.120 --> 00:26:17.199
+Well, easy, He did not have an installed base to deal with.
+
+NOTE Installing MARMEE
+
+00:26:17.200 --> 00:26:24.519
+You can obtain and install MARMEE in two ways. As is:
+
+00:26:24.520 --> 00:26:29.439
+as standalone-MARMEE, you can just
+
+00:26:29.440 --> 00:26:31.919
+pip install bisos.marmee.
+
+00:26:31.920 --> 00:26:35.879
+For the Gnus part you are completely on your own.
+
+00:26:35.880 --> 00:26:40.279
+Or on a Debian-11, you can just run
+
+00:26:40.280 --> 00:26:43.399
+the bisos bootstrap script.
+
+00:26:43.400 --> 00:26:48.359
+That way you will have all of BISOS, which includes MARMEE
+
+00:26:48.360 --> 00:26:52.159
+and you will have Blee, which includes Blee-Gnus.
+
+00:26:52.160 --> 00:26:54.719
+If you plan to do so,
+
+00:26:54.720 --> 00:26:58.839
+I suggest that you first try it in a disposable VM.
+
+00:26:58.840 --> 00:27:02.159
+BISOS and Blee are large.
+
+00:27:02.160 --> 00:27:06.359
+Many apt and pip packages will be installed!
+
+00:27:06.360 --> 00:27:11.839
+And here are the same links as a native Reveal slide.
+
+00:27:11.840 --> 00:27:17.519
+If you are viewing this presentation as Reveal.js web page,
+
+00:27:17.520 --> 00:27:20.479
+you can just click on the pointers and URLs.
+
+NOTE MARMEE as an Emacs "Common Agent"
+
+00:27:20.480 --> 00:27:25.359
+Let's consider MARMEE as an Emacs "Common Agent".
+
+00:27:25.360 --> 00:27:28.919
+By "Common-Agent" I mean a capability
+
+00:27:28.920 --> 00:27:30.959
+which Emacs builds on
+
+00:27:30.960 --> 00:27:33.759
+and which other Apps can also use.
+
+00:27:33.760 --> 00:27:38.479
+Emacs has a very rich applications development framework
+
+00:27:38.480 --> 00:27:41.119
+for absorbing common-agents.
+
+00:27:41.120 --> 00:27:45.474
+Consider how magit has absorbed git,
+
+00:27:45.475 --> 00:27:49.774
+or how flycheck has absorbed mypy
+
+00:27:49.775 --> 00:27:54.199
+or how EAF does its work outside of Emacs ---
+
+00:27:54.200 --> 00:27:57.919
+that too can be considered a common-agent.
+
+00:27:57.920 --> 00:28:02.039
+The common-agent model permits us
+
+00:28:02.040 --> 00:28:04.599
+to do more outside of Emacs.
+
+00:28:04.600 --> 00:28:08.639
+Common-agents maximize social benefits
+
+00:28:08.640 --> 00:28:10.559
+and are more convivial.
+
+00:28:10.560 --> 00:28:15.479
+For example, any MUA can profit from MARMEE.
+
+00:28:15.480 --> 00:28:18.439
+But we don't have good ways of
+
+00:28:18.440 --> 00:28:21.399
+packaging Emacs and its packages
+
+00:28:21.400 --> 00:28:23.639
+with their common-agents.
+
+00:28:23.640 --> 00:28:28.359
+Instead, we usually end up with DIY recipes.
+
+00:28:28.360 --> 00:28:32.479
+This is why I am contextualizing
+
+00:28:32.480 --> 00:28:35.439
+Emacs inside of Blee and BISOS.
+
+00:28:35.440 --> 00:28:37.999
+That is what they are for.
+
+00:28:38.000 --> 00:28:40.424
+And that is why I consider them
+
+00:28:40.425 --> 00:28:43.199
+immediately relevant to this presentation.
+
+00:28:43.200 --> 00:28:47.719
+With an incredibly powerful Display Engine,
+
+00:28:47.720 --> 00:28:51.279
+and an incredibly powerful Elisp Engine,
+
+00:28:51.280 --> 00:28:55.039
+and an incredibly powerful Input Methods Engine,
+
+00:28:55.040 --> 00:28:59.559
+and an incredibly powerful Common-Agents paradigm,
+
+00:28:59.560 --> 00:29:02.707
+Emacs has the potential of being
+
+00:29:02.708 --> 00:29:06.407
+any non-proprietary digital ecosystem's
+
+00:29:06.408 --> 00:29:08.879
+preferred usage environment.
+
+00:29:08.880 --> 00:29:14.090
+I am in favor of putting more around Emacs
+
+00:29:14.091 --> 00:29:17.440
+and strengthening integration of Emacs
+
+00:29:17.441 --> 00:29:19.719
+with Debian, explicitly,
+
+00:29:19.720 --> 00:29:22.839
+perhaps even at the cost of
+
+00:29:22.840 --> 00:29:26.599
+de-emphasizing its multi-platform attribute.
+
+00:29:26.600 --> 00:29:30.319
+A smaller Emacs is a better Emacs.
+
+00:29:30.320 --> 00:29:33.719
+Notice that in this slide,
+
+00:29:33.720 --> 00:29:37.279
+I have used many arrows in many colors.
+
+00:29:37.280 --> 00:29:45.599
+Much of Emacs's power comes from its ability
+
+00:29:45.600 --> 00:29:47.759
+to absorb and to integrate.
+
+00:29:47.760 --> 00:29:51.919
+Tomohiro is right on the mark when he says,
+
+00:29:51.920 --> 00:29:55.359
+"The reason why Emacs platform is good
+
+00:29:55.360 --> 00:29:58.119
+is that it cooperates with OS,
+
+00:29:58.120 --> 00:30:00.919
+not because it is good by itself."
+
+00:30:00.920 --> 00:30:03.999
+I am suggesting that we should
+
+00:30:04.000 --> 00:30:06.519
+raise the bar from the OS
+
+00:30:06.520 --> 00:30:09.839
+to the entirety of our digital ecosystem.
+
+00:30:09.840 --> 00:30:13.039
+There are many models
+
+00:30:13.040 --> 00:30:15.839
+for Emacs to cooperate with the OS
+
+00:30:15.840 --> 00:30:19.319
+and with applications and with services.
+
+00:30:19.320 --> 00:30:25.439
+The colors of arrows in the previous slide correspond to
+
+00:30:25.440 --> 00:30:28.879
+the model of interface of the common-agent:
+
+00:30:28.880 --> 00:30:33.999
+for example, sub-process invocation, pipe-based
+
+00:30:34.000 --> 00:30:39.359
+asynchronous interface, or file-based interactions.
+
+NOTE Consistent configuration
+
+00:30:39.360 --> 00:30:44.759
+One important aspect of common-agent paradigm is that
+
+00:30:44.760 --> 00:30:50.399
+both the common-agent and its Emacs App
+
+00:30:50.400 --> 00:30:53.039
+need to be configured consistently.
+
+00:30:53.040 --> 00:30:57.959
+In MARMEE and Blee-Gnus,
+
+00:30:57.960 --> 00:31:01.919
+we use File-Params to accomplish this.
+
+00:31:01.920 --> 00:31:06.959
+In BISOS, there is a Python interface to File-Params,
+
+00:31:06.960 --> 00:31:10.239
+there is a Bash interface to File-Params,
+
+00:31:10.240 --> 00:31:15.719
+and in Blee, there is an Elisp interface to File-Params.
+
+00:31:15.720 --> 00:31:18.919
+So, configurations are extended.
+
+00:31:18.920 --> 00:31:23.279
+Furthermore, File-Params can be encrypted,
+
+00:31:23.280 --> 00:31:26.959
+and credentials can be protected and shared.
+
+00:31:26.960 --> 00:31:33.919
+This is a significant improvement over .authinfo
+
+00:31:33.920 --> 00:31:36.959
+and its more recent incarnations.
+
+NOTE Feedback and requests
+
+00:31:36.960 --> 00:31:41.199
+EmacsConf could be a great place
+
+00:31:41.200 --> 00:31:44.374
+for users to provide feedback to developers
+
+00:31:44.375 --> 00:31:47.879
+and for developers to suggest to developers.
+
+00:31:47.880 --> 00:31:52.759
+In that spirit, my primary audience in this part
+
+00:31:52.760 --> 00:31:54.839
+are fellow Emacs developers.
+
+00:31:54.840 --> 00:32:00.039
+BISOS-MARMEE and Blee-Gnus are starting points.
+
+00:32:00.040 --> 00:32:02.439
+We can collectively work
+
+00:32:02.440 --> 00:32:04.679
+towards improving what is in place.
+
+00:32:04.680 --> 00:32:07.919
+Some such improvements involve
+
+00:32:07.920 --> 00:32:11.919
+collaboration among various Emacs developers.
+
+00:32:11.920 --> 00:32:16.599
+Here, I am making some explicit requests
+
+00:32:16.600 --> 00:32:19.559
+from some of the relevant emacs developers.
+
+00:32:19.560 --> 00:32:24.159
+At most, these are requests and invitations.
+
+00:32:24.160 --> 00:32:28.519
+For each of these requests, I am providing links
+
+00:32:28.520 --> 00:32:30.119
+for additional details.
+
+00:32:30.120 --> 00:32:33.039
+In due course, I'll follow up
+
+00:32:33.040 --> 00:32:35.279
+in the Emacs developers mailing list.
+
+NOTE X-Message-SMTP-Method: qmail
+
+00:32:35.280 --> 00:32:41.879
+Gnus uses X-Message-SMTP-Method
+
+00:32:41.880 --> 00:32:45.119
+for selection of Mail-Sending-Agent.
+
+00:32:45.120 --> 00:32:50.519
+Even though all the qmail injection code is still in Gnus,
+
+00:32:50.520 --> 00:32:58.279
+support for "X-Message-SMTP-Method: qmail" is missing.
+
+00:32:58.280 --> 00:33:02.759
+It takes 2 lines of code to revive it.
+
+00:33:02.760 --> 00:33:07.399
+With regards to (1), qmail was previously supported in Gnus.
+
+00:33:07.400 --> 00:33:11.319
+Lars, can you please reactivate it? Thanks.
+
+NOTE X-Message-Send-Method
+
+00:33:11.320 --> 00:33:16.439
+(2) is a terminology suggestion.
+
+00:33:16.440 --> 00:33:21.559
+The term X-Message-SMTP-Method violates conceptual layering.
+
+00:33:21.560 --> 00:33:27.079
+Please consider changing it to X-Message-Send-Method.
+
+00:33:27.080 --> 00:33:33.719
+In a Split-MUA setup, Gnus need not know about SMTP at all.
+
+00:33:33.720 --> 00:33:36.599
+We just need to pass information
+
+00:33:36.600 --> 00:33:39.319
+to a Mail-Sending-Agent selector.
+
+NOTE Sharing config info and secrets with common agents
+
+00:33:39.320 --> 00:33:44.439
+(3) is simply a design suggestion for
+
+00:33:44.440 --> 00:33:46.759
+which I prepared the context.
+
+00:33:46.760 --> 00:33:51.839
+.authinfo and Emacs auth-source library
+
+00:33:51.840 --> 00:33:54.199
+are too Emacs-centric.
+
+00:33:54.200 --> 00:33:57.839
+We need to share config info and secrets
+
+00:33:57.840 --> 00:34:00.799
+between common-agents and Emacs.
+
+00:34:00.800 --> 00:34:03.639
+The File Parameters approach
+
+00:34:03.640 --> 00:34:05.799
+can be a general-purpose solution.
+
+00:34:05.800 --> 00:34:10.839
+Is it reasonable to extend auth-source library to
+
+00:34:10.840 --> 00:34:12.719
+support File Params?
+
+00:34:12.720 --> 00:34:16.519
+I'll cover (4) in the next slide.
+
+00:34:16.520 --> 00:34:21.159
+(5) is a philosophical common suggestion
+
+00:34:21.160 --> 00:34:26.439
+to all Emacs developers. We need to better cultivate
+
+00:34:26.440 --> 00:34:30.879
+the model of Common-Agents integration with Emacs.
+
+00:34:30.880 --> 00:34:39.599
+And here are the same links as a native Reveal slide.
+
+NOTE message-polymode
+
+00:34:39.600 --> 00:34:42.799
+A mail message comprises of
+
+00:34:42.800 --> 00:34:45.599
+Envelope, Header and BodyParts.
+
+00:34:45.600 --> 00:34:49.439
+Each of these have their own syntax (their own mode).
+
+00:34:49.440 --> 00:34:53.639
+Conceivably Each BodyPart has its own mode.
+
+00:34:53.640 --> 00:34:59.439
+So, we need to evolve Message-Mode into Message-Polymode.
+
+00:34:59.440 --> 00:35:03.719
+More or less by default, org-mode has become
+
+00:35:03.720 --> 00:35:08.999
+the beginnings of "Emacs Native Markup Language -- ENML".
+
+00:35:09.000 --> 00:35:14.399
+With org-msg you can write your emails in org-mode ---
+
+00:35:14.400 --> 00:35:16.559
+destined as html.
+
+00:35:16.560 --> 00:35:19.559
+org-msg needs to become
+
+00:35:19.560 --> 00:35:22.239
+an integral part of Message-Polymode.
+
+00:35:22.240 --> 00:35:25.119
+It would be heavenly
+
+00:35:25.120 --> 00:35:29.959
+if Lars, Jérémy and Vitalie could collaborate
+
+00:35:29.960 --> 00:35:34.079
+and give us the needed Message-Polymode. Thank you.
+
+NOTE Vertical slice use cases
+
+00:35:34.080 --> 00:35:38.119
+One way to verify that we have not gone astray
+
+00:35:38.120 --> 00:35:42.759
+in our horizontal bigger pictures is to verify them
+
+00:35:42.760 --> 00:35:46.919
+through the concept of "Vertical Slice Use Cases".
+
+00:35:46.920 --> 00:35:50.799
+Let one use case be reading and writing
+
+00:35:50.800 --> 00:35:54.639
+of mail on multiple gmail accounts with Gnus.
+
+00:35:54.640 --> 00:35:59.319
+Google now requires use of oauth2 tokens
+
+00:35:59.320 --> 00:36:02.439
+which MARMEE can do outside of emacs.
+
+00:36:02.440 --> 00:36:05.679
+There is a recent email thread
+
+00:36:05.680 --> 00:36:09.119
+on that in the emacs-devel mailing list.
+
+00:36:09.120 --> 00:36:14.279
+Let another use case be that of tracking delivery
+
+00:36:14.280 --> 00:36:18.679
+and non-delivery reports for custom envelope addresses
+
+00:36:18.680 --> 00:36:26.039
+of byname.net (part of ByStar) autonomous mail services.
+
+00:36:26.040 --> 00:36:30.319
+I would have loved to walk you through these
+
+00:36:30.320 --> 00:36:32.959
+vertical slice use cases
+
+00:36:32.960 --> 00:36:36.439
+as screen captures of my Blee environment.
+
+00:36:36.440 --> 00:36:40.639
+For that, I need at least another 20 minutes.
+
+00:36:40.640 --> 00:36:43.079
+But my time is up.
+
+00:36:43.080 --> 00:36:46.719
+So, let's consider this as the first
+
+00:36:46.720 --> 00:36:48.919
+in a series of presentations
+
+00:36:48.920 --> 00:36:51.799
+where next in this series could be
+
+00:36:51.800 --> 00:36:55.479
+the mentioned two vertical slice use cases.
+
+00:36:55.480 --> 00:36:59.279
+Perhaps there could be another presentation
+
+00:36:59.280 --> 00:37:02.879
+on this topic in EmacsConf 2023.
+
+00:37:02.880 --> 00:37:06.759
+This document was produced entirely with
+
+00:37:06.760 --> 00:37:10.799
+Libre-Halaal Software, and is published using
+
+00:37:10.800 --> 00:37:13.079
+Libre-Halaal Internet Services.
+
+00:37:13.080 --> 00:37:17.959
+I want to thank all the EmacsConf Organizers
+
+00:37:17.960 --> 00:37:19.519
+for their great work,
+
+00:37:19.520 --> 00:37:30.960
+and Sacha, Leo, and Amin in particular.