summaryrefslogtreecommitdiffstats
path: root/2024/captions/emacsconf-2024-guile--beguiling-emacs-guileemacs-relaunched--robin-templeton-...
diff options
context:
space:
mode:
authorSacha Chua <sacha@sachachua.com>2024-12-13 11:03:03 -0500
committerSacha Chua <sacha@sachachua.com>2024-12-13 11:03:03 -0500
commit1147abeaa0686a5ae3c71df674ccd709b4b3617f (patch)
tree3254abd08a949d665ed0d2a1fa853cf917241f89 /2024/captions/emacsconf-2024-guile--beguiling-emacs-guileemacs-relaunched--robin-templeton--answers.vtt
parentd99364ed2b2d51acdf668525d5b449a25d8a37c0 (diff)
downloademacsconf-wiki-master.tar.xz
emacsconf-wiki-master.zip
add answers captionsHEADmaster
Diffstat (limited to '2024/captions/emacsconf-2024-guile--beguiling-emacs-guileemacs-relaunched--robin-templeton--answers.vtt')
-rw-r--r--2024/captions/emacsconf-2024-guile--beguiling-emacs-guileemacs-relaunched--robin-templeton--answers.vtt720
1 files changed, 720 insertions, 0 deletions
diff --git a/2024/captions/emacsconf-2024-guile--beguiling-emacs-guileemacs-relaunched--robin-templeton--answers.vtt b/2024/captions/emacsconf-2024-guile--beguiling-emacs-guileemacs-relaunched--robin-templeton--answers.vtt
new file mode 100644
index 00000000..510e556e
--- /dev/null
+++ b/2024/captions/emacsconf-2024-guile--beguiling-emacs-guileemacs-relaunched--robin-templeton--answers.vtt
@@ -0,0 +1,720 @@
+WEBVTT
+
+00:00:00.000 --> 00:00:08.119
+All right. Hey, thanks for bearing with us there. We had a
+
+00:00:08.120 --> 00:00:11.239
+couple of bumps in the road, a cross between a couple of
+
+00:00:11.240 --> 00:00:13.479
+different versions of our program that we deliver here,
+
+00:00:13.480 --> 00:00:17.959
+different ways that we bring this stream together between
+
+00:00:17.960 --> 00:00:22.359
+the recorded content that that speakers are putting
+
+00:00:22.360 --> 00:00:26.879
+together in advance in the live content, such as what you're
+
+00:00:26.880 --> 00:00:31.039
+seeing right here. So thanks go to Sacha and Leo, and
+
+00:00:31.040 --> 00:00:34.359
+everybody behind the stages gluing it all together. And
+
+00:00:34.360 --> 00:00:40.199
+we're back here now, and I'm speaking with Robin, who us
+
+00:00:40.200 --> 00:00:42.799
+ready to take on some of your questions and address some of
+
+00:00:42.800 --> 00:00:46.879
+the comments over here on the etherpad. If you want to jump in
+
+00:00:46.880 --> 00:00:51.319
+there, there's links in the chat. And thanks so much, Robin,
+
+00:00:51.320 --> 00:00:53.999
+for your talk. And it's also been a pleasure chatting with
+
+00:00:54.000 --> 00:00:57.919
+you just a little bit over the last couple of months on IRC.
+
+00:00:57.920 --> 00:01:33.319
+Yeah, absolutely. Great meeting you.
+
+00:01:33.320 --> 00:01:37.679
+All right. All right, everyone. I think I am streaming now.
+
+00:01:37.680 --> 00:01:42.439
+So let's look at it. Let's see. I see the IRC scrolling. So
+
+00:01:42.440 --> 00:01:47.199
+let's see where that's going. Yes, the Common Lisp is what I
+
+00:01:47.200 --> 00:01:50.519
+thought would piss people off. And because it's not part of
+
+00:01:50.520 --> 00:01:54.239
+either community, but I think it would be a good compromise
+
+00:01:54.240 --> 00:01:57.839
+for building a Lisp into a language that's more suitable for
+
+00:01:57.840 --> 00:02:01.879
+building large systems like the kind that we are building in
+
+00:02:01.880 --> 00:02:07.279
+Emacs today. I also left out an important part of the talk,
+
+00:02:07.280 --> 00:02:12.079
+which is part of the motivation for transitioning from C to
+
+00:02:12.080 --> 00:02:15.599
+Lisp. And that's the performance characteristics
+
+00:02:15.600 --> 00:02:19.399
+fundamentally change when you get a modern and high
+
+00:02:19.400 --> 00:02:23.559
+performance Lisp system involved. it starts getting less
+
+00:02:23.560 --> 00:02:27.799
+practical to just call out to C to speed up every operation.
+
+00:02:27.800 --> 00:02:31.559
+Among other things, you lose the ability to use more
+
+00:02:31.560 --> 00:02:34.759
+advanced control structures, like the limited
+
+00:02:34.760 --> 00:02:40.039
+continuations. And you also have to pay the overhead of
+
+00:02:40.040 --> 00:02:43.879
+calling out to our foreign function. So it gets to be an
+
+00:02:43.880 --> 00:02:47.879
+increasingly better deal to optimize your list
+
+00:02:47.880 --> 00:02:52.719
+implementation and provide ways for building faster list
+
+00:02:52.720 --> 00:02:55.879
+programs, such as type annotations, once you've gotten
+
+00:02:55.880 --> 00:03:01.479
+over a certain threshold of performance.
+
+NOTE Q: About fibers: My understanding is that the problem with making Elisp concurrent is that none of the data structures (buffer, cons, vector, window etc) are concurrency-safe.  How do fibers help with this?
+
+00:03:01.480 --> 00:03:07.359
+I'm going to look at the pad. Here we go. The first question is
+
+00:03:07.360 --> 00:03:12.519
+about fibers and whether they help with making Elisp
+
+00:03:12.520 --> 00:03:18.279
+concurrent in terms of its data structures. Yes, that's
+
+00:03:18.280 --> 00:03:23.879
+absolutely correct. Fibers by themselves do not provide
+
+00:03:23.880 --> 00:03:26.799
+thread safety for any of the existing Emacs data
+
+00:03:26.800 --> 00:03:32.879
+structures. What they are useful for is building things
+
+00:03:32.880 --> 00:03:38.199
+that don't use Emacs data structures, say a network client
+
+00:03:38.200 --> 00:03:44.559
+that reads input from a stream or in scheme, a port or a stream
+
+00:03:44.560 --> 00:03:49.679
+instead of a buffer. And we can also take a look at options for
+
+00:03:49.680 --> 00:03:54.199
+making more Emacs features concurrency safe or thread
+
+00:03:54.200 --> 00:03:58.079
+safe. For example, we could introduce the idea of a thread
+
+00:03:58.080 --> 00:04:03.039
+local buffer that didn't require locks for sharing between
+
+00:04:03.040 --> 00:04:09.239
+different threads. And I'm not sure how that would develop,
+
+00:04:09.240 --> 00:04:12.319
+but I'm sure the Emacs maintainers already have some ideas
+
+00:04:12.320 --> 00:04:17.519
+in this direction. Fibers will basically provide a
+
+00:04:17.520 --> 00:04:22.159
+high-performance system that you can use apart from
+
+00:04:22.160 --> 00:04:28.079
+ordinary Emacs-less constructs.
+
+NOTE Q: Do you have a rough idea of how much of Guile is written in C?
+
+00:04:28.080 --> 00:04:34.839
+Let's see. We have another question. Emacs is roughly 25% C.
+
+00:04:34.840 --> 00:04:38.839
+How much of Guile is in C?
+
+00:04:38.840 --> 00:04:45.679
+Well, part of my point about C is not so much that there, well,
+
+00:04:45.680 --> 00:04:50.279
+obviously, I phrased it a little provocatively, but the
+
+00:04:50.280 --> 00:04:54.719
+problem is not so much that there is C, but that there is so
+
+00:04:54.720 --> 00:05:00.279
+much C involved in every single layer of the application.
+
+00:05:00.280 --> 00:05:04.559
+So, for example, we're limited in our ability to use tools
+
+00:05:04.560 --> 00:05:08.159
+like limit continuations, which can be used to express
+
+00:05:08.160 --> 00:05:13.599
+buffer local variable binding in a few dozen lines, because
+
+00:05:13.600 --> 00:05:21.839
+Emacs has so much calling back and forth between guile and C,
+
+00:05:21.840 --> 00:05:26.599
+due to so much basic functionality being in primitive C
+
+00:05:26.600 --> 00:05:34.119
+subroutines. So that's one issue apart from the question of
+
+00:05:34.120 --> 00:05:38.359
+how much is in a particular language. To answer the question
+
+00:05:38.360 --> 00:05:45.879
+about Guile, Guile has about 165,000 lines of scheme code
+
+00:05:45.880 --> 00:05:51.599
+and about 160,000 lines of C code, so it's about half and
+
+00:05:51.600 --> 00:05:55.879
+half. And that shouldn't really be surprising given that it
+
+00:05:55.880 --> 00:06:00.359
+is actually focused on low-level things like building a
+
+00:06:00.360 --> 00:06:05.079
+high-performance bytecode compiler, and a just-in-time
+
+00:06:05.080 --> 00:06:09.719
+compiler, and so on, as well as providing its own fairly
+
+00:06:09.720 --> 00:06:14.999
+rich, but still far less complete than Emacs's standard
+
+00:06:15.000 --> 00:06:19.239
+library, in terms of Ice9 and other system libraries
+
+NOTE Q: A Common Lisp implementation for Guile sounds really cool! Is there already work on this underway?
+
+00:06:19.240 --> 00:06:24.359
+shipped with Guile. The next question is on a Common Lisp
+
+00:06:24.360 --> 00:06:27.759
+implementation for Guile, and whether work on it is
+
+00:06:27.760 --> 00:06:33.079
+underway. In fact, work on it is already underway. I've been
+
+00:06:33.080 --> 00:06:36.399
+working on it on and off in my spare time for a couple of years
+
+00:06:36.400 --> 00:06:40.039
+now. I've gotten, I think, a couple of chapters of the
+
+00:06:40.040 --> 00:06:43.519
+hyperspectin, if you want to measure it that way. But I've
+
+00:06:43.520 --> 00:06:51.719
+been focusing my work more on research and on what we need to
+
+00:06:51.720 --> 00:06:57.399
+do to have a LISP environment, a polyglot LISP environment,
+
+00:06:57.400 --> 00:07:02.759
+wherein the features of Common Lisp and Scheme and Emacs
+
+00:07:02.760 --> 00:07:08.919
+Lisp can all work easily and ergonomically together. So
+
+00:07:08.920 --> 00:07:13.879
+this involves things like the question of Lisps having
+
+00:07:13.880 --> 00:07:22.079
+Lisp1s versus Lisp2s. That is, a Lisp1-like scheme has one
+
+00:07:22.080 --> 00:07:27.599
+namespace, like every variable is a single name that can
+
+00:07:27.600 --> 00:07:31.999
+refer to one value, whereas in Lisp2s like EmacsLisp,
+
+00:07:32.000 --> 00:07:37.399
+symbols can have different definitions as functions and as
+
+00:07:37.400 --> 00:07:41.119
+variables, as well as other namespaces like property
+
+00:07:41.120 --> 00:07:45.719
+lists. So Kent Pittman has some interesting thoughts on
+
+00:07:45.720 --> 00:07:51.039
+this that I've been looking into. Another issue is the
+
+00:07:51.040 --> 00:07:57.519
+interaction between package and module systems. So I don't
+
+00:07:57.520 --> 00:08:01.839
+have really anything ready to publish just yet on this, but I
+
+00:08:01.840 --> 00:08:05.279
+have been looking into the background issues of
+
+00:08:05.280 --> 00:08:08.119
+integrating this into Guile in a useful way.
+
+00:08:08.120 --> 00:08:15.719
+And let's see, one other thing I was going to mention.
+
+00:08:15.720 --> 00:08:27.679
+Okay, I've lost it. But yeah, there is some work already. And
+
+00:08:27.680 --> 00:08:30.399
+if people are interested in moving Emacs in this direction,
+
+00:08:30.400 --> 00:08:34.479
+then we'll certainly start working on it in earnest.
+
+NOTE Q: Did switching from guile 2 to 3 give any performance benefits?
+
+00:08:34.480 --> 00:08:41.119
+Another question, did switching from Guile 2 to 3 give any
+
+00:08:41.120 --> 00:08:46.279
+performance benefits? Well, honestly, we're not really
+
+00:08:46.280 --> 00:08:50.759
+benchmarking stuff here because Guile Emacs has so much
+
+00:08:50.760 --> 00:08:55.759
+overhead from structuring the compiler to closely conform
+
+00:08:55.760 --> 00:08:59.879
+to Emacs in terms of like even things as simple as metadata
+
+00:08:59.880 --> 00:09:03.879
+layout for variable information.
+
+00:09:03.880 --> 00:09:11.999
+So I haven't actually noticed a perceptual change. I would
+
+00:09:12.000 --> 00:09:15.359
+guess based on the Gabriel benchmark results that is
+
+00:09:15.360 --> 00:09:21.399
+benefited from what somewhat from Gal 3's performance
+
+00:09:21.400 --> 00:09:27.479
+improvements but for Emacs I just don't know yet and working
+
+00:09:27.480 --> 00:09:30.199
+on the compiler's code generation and lowering the
+
+00:09:30.200 --> 00:09:33.719
+overhead is going to be the thing that provides the most
+
+00:09:33.720 --> 00:09:37.319
+return for improving that aspect of Gal Emacs.
+
+00:09:37.320 --> 00:09:54.079
+Let's see, I see SICL mentioned here, as well as SPCL. And it
+
+00:09:54.080 --> 00:09:56.919
+could certainly help with the implementation of
+
+00:09:56.920 --> 00:10:01.519
+Commonwealth and Guile, because a lot of the basic stuff is
+
+00:10:01.520 --> 00:10:05.559
+just providing a new interface to some bit of
+
+00:10:05.560 --> 00:10:08.879
+functionality. Like the sequence library, it's mostly
+
+00:10:08.880 --> 00:10:13.279
+stuff that we already have through SR5 and so on. The
+
+00:10:13.280 --> 00:10:16.879
+difficult, well, not the difficult but the time consuming
+
+00:10:16.880 --> 00:10:21.599
+parts are going to be all the little DSL sitcom on this path
+
+00:10:21.600 --> 00:10:26.999
+packed up inside it like pretty printing format loop and so
+
+00:10:27.000 --> 00:10:32.359
+on. It's for those high-level features that I think we could
+
+00:10:32.360 --> 00:10:34.959
+potentially share code with other Common Lisp
+
+00:10:34.960 --> 00:10:39.039
+implementations. And Common Lisp implementations do tend
+
+00:10:39.040 --> 00:10:43.239
+to be permissively licensed, SPCL's public domain, for
+
+00:10:43.240 --> 00:10:46.439
+example, so there's no barrier to sharing code with them.
+
+NOTE Q: Do you know if the Emacs maintainers are interested in switching to Guile as the engine for Emacs Lisp?
+
+00:10:46.440 --> 00:10:52.719
+There's another question about whether the Emacs
+
+00:10:52.720 --> 00:10:55.679
+maintainers are interested in switching to Guile as the
+
+00:10:55.680 --> 00:10:59.199
+engine for Emacs Lisp. I can't speak for the current
+
+00:10:59.200 --> 00:11:05.439
+maintainers. I can say that people have talked to previous
+
+00:11:05.440 --> 00:11:10.439
+Emacs maintainers about the whole idea, and their attitude
+
+00:11:10.440 --> 00:11:15.479
+was generally cautiously optimistic. As in, it's not
+
+00:11:15.480 --> 00:11:18.799
+something they, it's somewhat political, they didn't want
+
+00:11:18.800 --> 00:11:23.479
+to get into it, but they didn't think that it was a bad idea,
+
+00:11:23.480 --> 00:11:25.919
+and they wanted to know more about how it might evolve in the
+
+00:11:25.920 --> 00:11:31.879
+future. I can comment that Eli Zaretsky, who I believe is the
+
+00:11:31.880 --> 00:11:36.879
+current Emacs maintainer, is very concerned about
+
+00:11:36.880 --> 00:11:44.679
+cross-platform compatibility. And so if I can guess at his
+
+00:11:44.680 --> 00:11:48.519
+priorities correctly, I think that that's something that
+
+00:11:48.520 --> 00:11:52.599
+we'll have to make sure is rock solid before we propose any
+
+00:11:52.600 --> 00:11:58.359
+kind of upstreaming of Gala Emacs. but in general
+
+00:11:58.360 --> 00:12:03.719
+maintainers have been cautious but curious. So I just
+
+00:12:03.720 --> 00:12:06.719
+wanted to break in and note at this point that as lives I
+
+00:12:06.720 --> 00:12:09.519
+didn't sorry I couldn't do so more gracefully while we were
+
+00:12:09.520 --> 00:12:13.439
+still on stream but I wanted to let you know that just as of 10
+
+00:12:13.440 --> 00:12:17.399
+seconds ago or so we've had to cut away into our next talk but
+
+00:12:17.400 --> 00:12:22.199
+we can keep going here as long as we like. Okay, let's wrap up.
+
+00:12:22.200 --> 00:12:25.399
+There's only a couple questions left on the pad, so I'll
+
+00:12:25.400 --> 00:12:29.999
+answer those, and then I'll be available on IRC. So, the next
+
+NOTE Q: Do you think guile-emacs will be able to use or (collaborate with) some of the other awesome projects around Emacs Lisp?
+
+00:12:30.000 --> 00:12:33.319
+question is whether Guile Emacs will be able to collaborate
+
+00:12:33.320 --> 00:12:35.959
+with projects like Gypsum and
+
+00:12:35.960 --> 00:12:44.319
+the native compilation projects or the pre-scheme
+
+00:12:44.320 --> 00:12:48.039
+efforts. Oh, yes, that is one of the things I forgot to bring
+
+00:12:48.040 --> 00:12:53.199
+up in my talk. So, first of all, Gypsum is approaching a
+
+00:12:53.200 --> 00:12:58.199
+similar idea from a different direction. And we clearly
+
+00:12:58.200 --> 00:13:03.919
+have a different focus. My focus is on improving Emacs Lisp
+
+00:13:03.920 --> 00:13:09.279
+and making Emacs itself better by integrating Guile Elisp
+
+00:13:09.280 --> 00:13:15.159
+and Emacs, rather than replacing eLisp or deprecating it in
+
+00:13:15.160 --> 00:13:20.159
+any way. But given gypsum's requirements, I do think that we
+
+00:13:20.160 --> 00:13:26.439
+could share a lot of code required for emulating basic Emacs
+
+00:13:26.440 --> 00:13:29.839
+functionality. And this could even become interesting if
+
+00:13:29.840 --> 00:13:35.799
+we get to the point of rewriting parts of Emacs in Lisp. With
+
+00:13:35.800 --> 00:13:41.279
+respect to the native compilation effort, I'm familiar
+
+00:13:41.280 --> 00:13:45.879
+with it. I'm not that impressed with the results of it. It's a
+
+00:13:45.880 --> 00:13:52.359
+very impressive effort, but as far as I can tell, it's
+
+00:13:52.360 --> 00:13:57.239
+accelerating a bytecode interpreter that just simply has
+
+00:13:57.240 --> 00:14:02.719
+an out-of-date design, to be quite blunt. It's possible
+
+00:14:02.720 --> 00:14:08.919
+that Emacs's JIT has ideas that Guile should adopt, like
+
+00:14:08.920 --> 00:14:14.039
+perhaps libgccjit might perhaps be better than GNU
+
+00:14:14.040 --> 00:14:16.999
+Lightning, which is a relatively simple JIT that Guile
+
+00:14:17.000 --> 00:14:17.639
+uses.
+
+00:14:17.640 --> 00:14:25.839
+But it doesn't have to have a direct relationship to Guile
+
+00:14:25.840 --> 00:14:31.159
+Emacs. And as far as pre-scheme goes, I have been watching
+
+00:14:31.160 --> 00:14:36.199
+Flat Watson's work on pre-scheme with great interest
+
+00:14:36.200 --> 00:14:39.999
+because Scheme 48 used to be my favorite implementation.
+
+00:14:40.000 --> 00:14:44.919
+And I do think that it could be, it's a tool that we should look
+
+00:14:44.920 --> 00:14:47.879
+at when we're thinking about moving functionality into
+
+00:14:47.880 --> 00:14:53.199
+Lisp and could certainly make it easier to upstream some of
+
+00:14:53.200 --> 00:14:54.519
+the work we may end up doing.
+
+00:14:54.520 --> 00:15:04.199
+All right, do we have more questions?
+
+NOTE Q: SBCL, ...You mentioned Robert Strandh's SICL along with SBCL---does that work help with the implementation of CL in Guile?
+
+00:15:04.200 --> 00:15:13.159
+There's a question about SICL and SBCL. I think I answered
+
+00:15:13.160 --> 00:15:17.519
+that earlier. It should help us implement Common Lisp when
+
+00:15:17.520 --> 00:15:24.999
+it comes to high-level features and the various large
+
+00:15:25.000 --> 00:15:28.759
+subcomponents of Common Lisp. Another important factor is
+
+00:15:28.760 --> 00:15:32.279
+that Guile already has decent support for the Common Lisp
+
+00:15:32.280 --> 00:15:35.799
+object system. Without that, it would be far more
+
+00:15:35.800 --> 00:15:41.919
+difficult. But I do expect that we can share code with other
+
+00:15:41.920 --> 00:15:44.799
+Common Lisp implementations. I've personally rated
+
+00:15:44.800 --> 00:15:49.199
+Common Lisp compiler code when working on Guile Hoot, for
+
+00:15:49.200 --> 00:15:52.959
+example. So there are definitely places where they can
+
+00:15:52.960 --> 00:15:54.039
+contribute.
+
+00:15:54.040 --> 00:16:02.839
+Regarding the Hoot project and its relationship to
+
+00:16:02.840 --> 00:16:11.079
+Galimax, it's a purely speculative thing. First of all,
+
+00:16:11.080 --> 00:16:17.079
+Hoot is only tested on Scheme-to-WebAssembly
+
+00:16:17.080 --> 00:16:22.599
+compilations. I've heard some suggestions that some uses
+
+00:16:22.600 --> 00:16:26.439
+of Tree.io may not be compatible with the Hoot compiler. I'm
+
+00:16:26.440 --> 00:16:29.999
+not sure if that's the case or not.
+
+00:16:30.000 --> 00:16:41.199
+But it is a complete enough project that if Emacs is, say, 90%
+
+00:16:41.200 --> 00:16:45.119
+Lisp, there's only a few thousand lines of C code to
+
+00:16:45.120 --> 00:16:49.159
+implement, then it would be entirely practical to compile
+
+00:16:49.160 --> 00:16:54.159
+Emacs WebAssembly, as long as we had a back end, like one
+
+00:16:54.160 --> 00:16:58.119
+based on the browser's document object model, or some sort
+
+00:16:58.120 --> 00:17:04.439
+of graphical interface through WASI. And that may have some
+
+00:17:04.440 --> 00:17:07.359
+interesting applications for portability to unusual
+
+00:17:07.360 --> 00:17:11.359
+platforms. It may even bring performance advantages in
+
+00:17:11.360 --> 00:17:18.959
+cases where the WebAssembly implementation is connected
+
+00:17:18.960 --> 00:17:22.759
+to a tracing just-in-time compiler, because that may be
+
+00:17:22.760 --> 00:17:26.839
+more appropriate to the high level of dynamism the Emacs
+
+00:17:26.840 --> 00:17:32.439
+list has than the kind of simple template JITs that both
+
+00:17:32.440 --> 00:17:34.519
+Emacs and Guile are using.
+
+00:17:34.520 --> 00:17:39.799
+What a fascinating point. Just to break into active
+
+00:17:39.800 --> 00:17:43.999
+listening a little so this doesn't, to you, feel like you're
+
+00:17:44.000 --> 00:17:46.919
+talking to yourself. I can see from chat and the questions
+
+00:17:46.920 --> 00:17:51.439
+still coming in, you know, comments. You know, it isn't, but
+
+00:17:51.440 --> 00:17:54.999
+I just want you to be able to hear and feel that. Yeah, great,
+
+00:17:55.000 --> 00:18:00.679
+great point there. All right. Thank you. And yes, if there
+
+00:18:00.680 --> 00:18:04.679
+are more questions, keep throwing them at me. I should
+
+00:18:04.680 --> 00:18:07.999
+probably also mention I will have to jump out myself, but the
+
+00:18:08.000 --> 00:18:10.799
+recording will automatically end when we all jump out or
+
+00:18:10.800 --> 00:18:15.199
+just drop a note anywhere, ping me, whatever. And I'll come
+
+00:18:15.200 --> 00:18:18.439
+along and shut off the recording and we'll trim it up before
+
+00:18:18.440 --> 00:18:21.879
+we publish it. I'm looking forward to reading through
+
+00:18:21.880 --> 00:18:30.199
+anything I do miss. Thank you. Sounds good.
+
+00:18:30.200 --> 00:19:08.439
+All right, I'm not seeing changes in the etherpad. So I'm
+
+00:19:08.440 --> 00:19:14.999
+going to close this in maybe 30 seconds if there are no more
+
+00:19:15.000 --> 00:19:21.159
+additions. Thanks, everyone, for the interesting and very
+
+00:19:21.160 --> 00:19:26.399
+pointed questions on some of the most significant areas. I
+
+00:19:26.400 --> 00:19:31.919
+appreciate everyone's feedback. I'm glad this provoked so
+
+00:19:31.920 --> 00:19:33.679
+much curiosity in people.
+
+00:19:33.680 --> 00:19:44.519
+Thank you, janneke.
+
+00:19:44.520 --> 00:19:51.439
+All right, I think we are done with the Q&A session, so I'm
+
+00:19:51.440 --> 00:19:57.199
+going to close this BBB and we can continue with the rest of
+
+00:19:57.200 --> 00:19:58.719
+EmacsConf.
+
+00:19:58.720 --> 00:20:10.160
+You are currently the only person in this conference.