WEBVTT
00:00.000 --> 00:06.880
Oh, wow, how exciting. Well, maybe I should share something then. Um, well, thank you very much and
00:06.880 --> 00:14.800
welcome to, uh, uh, welcome to my talk. I'm a little distracted here. I had a friend who came
00:14.800 --> 00:20.320
over and just brought me a whole bunch of peanut butter cups, homemade peanut butter cups. Maybe
00:20.320 --> 00:26.400
I'll show those off, uh, later. What? Okay. Here, uh, put it right there.
00:33.840 --> 00:41.760
Okay. So I'm going to, uh, get over to my plan, uh, stuff I'm sharing here, hopefully.
00:42.800 --> 00:48.640
Uh, and, and we'll jump, jump right in because I'm going to need as much time as I can possibly
00:48.640 --> 00:55.520
have today. Thanks so much for, uh, joining me for Emacs conference and for, especially for,
00:56.400 --> 01:03.520
um, all of you who, who, who participated, you know, in the discussions, contributing talks and,
01:03.520 --> 01:09.600
um, you know, uh, you know, including running the, the, the, and it's just so much fun to be here.
01:09.600 --> 01:16.320
Um, I guess while I'm standing here and, and saying stuff that's, that I'm going to have to
01:16.320 --> 01:23.280
transcribe, cause I didn't, uh, prepare a recorded version. Uh, I had a lot of trouble
01:23.280 --> 01:28.880
trimming this down so I can solve that problem by just talking a lot at the beginning, uh,
01:28.880 --> 01:37.120
about other stuff. Um, so in addition to the thanks, I just want to say thanks also to the
01:37.120 --> 01:41.920
folks on the development list that helped me kind of come up to speed on this. I won't make a big
01:41.920 --> 01:48.880
list here, but, um, and, and, and for all that I've learned from my previous conferences, it's
01:48.880 --> 01:55.200
just, I can't stress enough what a great opportunity volunteering for, uh, free software related things
01:55.200 --> 02:00.080
are, uh, as a way to get involved. People will just totally teach you how to be helpful and I'm
02:00.080 --> 02:18.800
loving it. I can preview the stream, but it's not super easy right now. I got all my screens
02:18.800 --> 02:23.680
kind of dedicated to other stuff. So should I pause for a second before I get into the slides?
02:23.680 --> 02:27.680
Cause that's, they're, they'll be hard to see if I'm not full screen.
02:29.440 --> 02:34.240
Yeah, that would be nice. Okay. Well, I'll keep ad libbing then cause I just have a million,
02:34.240 --> 02:42.960
uh, things I can say. Um, uh, so, uh, let me just quickly talk, uh, things that aren't in here.
02:42.960 --> 02:50.320
Um, I'm going to mention the mysis2.org and the, that project, which provides a port
02:51.280 --> 03:03.520
of, uh, the GNU, uh, uh, glibc and a lot of GNU and, uh, uh, their free software. Um, so, uh,
03:03.520 --> 03:03.840
I don't...
03:03.840 --> 03:07.760
All right, I'm switching a room to, uh, a DVD room to Stefan.
03:12.080 --> 03:15.440
All right. So I'm going to take mumble out of my, uh, pardon me, folks.
03:16.080 --> 03:18.640
It's going to take mumble out of my speakers here.
03:22.800 --> 03:30.080
Okay. We'll take the speakers out of play entirely and I'll just switch to some headphones.
03:33.600 --> 03:34.720
All right. So...
03:36.720 --> 03:42.240
Perfect. What an amazing amount of time. All right. So thanks a lot. Uh, today I've got a jam
03:42.400 --> 03:48.720
packed talk. Um, I've, I've done my best to make, to make this not too overwhelming,
03:48.720 --> 03:55.040
but overall we're going to try to try to actually build, um, Emacs while we're talking today.
03:55.040 --> 04:00.400
And we might actually build several Emacs. Uh, so let's take a look at that real quick.
04:00.400 --> 04:08.160
Um, so over here we have a screen where I am just once a minute looking, uh,
04:08.480 --> 04:15.360
uh, indirectly at whether there have been any pushes, uh, upstream to either the Emacs 29 or
04:15.360 --> 04:24.320
Emacs 30 branches. So I've arranged for us to sort of keep an eye on that, um, while we talk.
04:24.320 --> 04:30.000
And, you know, maybe that's, that's one thing that we'll do. And then additionally, we'll probably
04:30.640 --> 04:36.640
fire up a shell. This is the MySys2 environment that I talked about before,
04:36.640 --> 04:42.160
and we'll probably create some directories and things. But before we get into all that, let's,
04:42.160 --> 04:48.080
let's give some, some context. Uh, I've been doing my best to try to, uh, make sure all this
04:48.080 --> 04:54.240
information is on the Emacs wiki as well. So, uh, sorry, as I said, I got a little caught off guard.
04:54.240 --> 05:02.640
So I'm moving my foot pedals to the floor, back to the floor here. And I should be able to advance
05:02.640 --> 05:11.760
slides here. All right. So, um, I kind of provided some special definitions for things. I'm going to
05:11.760 --> 05:21.680
kind of level set with those. The, uh, um, when I say a binary release, I'm talking about some,
05:21.680 --> 05:27.440
some, uh, I'm talking about Emacs for Windows as, uh, just ready to run out of its folder or
05:28.080 --> 05:35.600
in whatever similar form. The, when I say a build, I'm talking about kind of a process of doing that.
05:36.400 --> 05:41.040
Um, when Emacs.get, of course, that's the upstream hosted by GNU Savannah.
05:41.600 --> 05:51.680
The Emacs release is, is a tarball created from that. The sources for, um, Emacs are going to be
05:51.680 --> 05:58.480
one of those two things, um, very specifically. So I'm not going to talk about patches patching.
05:58.480 --> 06:06.720
There's some implications there. Perhaps we'll get into it. Uh, so a snapshot is when I build
06:06.720 --> 06:14.880
from anything other than a release source, uh, a tarball. Um, just if I, if I say that I'm talking
06:14.880 --> 06:23.600
specifically about the, uh, the XZ version of the file as, as a technical point. Um,
06:23.600 --> 06:32.480
so that may come up. All right. Nothing else I think up my sleeve. Um, the, uh, as, as a key
06:32.480 --> 06:38.320
data point, it's worth understanding that there's a file called configure AC. It's going to be
06:38.320 --> 06:46.160
processed, uh, as part of auto-conf. We, we initially access that when we run, um, auto-gen
06:46.160 --> 06:52.720
as you'll see in a little bit. Um, the, but before, but, uh, so the auto-gen script will
06:52.720 --> 07:00.160
generally consider this, uh, so in a release build, um, this has been thought about kind of for us as
07:00.240 --> 07:10.480
part of, um, making the tarball. Um, the configure.ac, um, yeah, I think I pretty much covered,
07:10.480 --> 07:16.880
covered this. So, um, those, those that kind of partially built status, that's a,
07:16.880 --> 07:22.640
might be another phrase that you hear me use. So this slide unpacks that a little more.
07:22.880 --> 07:29.520
Um, so it can be a little confusing to understand what exactly the, you know, what is it, you know,
07:29.520 --> 07:36.160
how stable is Emacs depending on what I have. So the, I got a kind of set of rules of thumb here,
07:36.160 --> 07:43.680
right? First I want the highest, uh, you know, dot, uh, dot release value that I can get,
07:43.680 --> 07:50.080
assuming that that's higher than one. If it's, if it were to only be one, let's say,
07:50.160 --> 07:58.560
if it were to only be one, let's say my choices were 29.1 and 30.1, I would take 30.1. Um,
07:59.200 --> 08:05.520
cause that's, that's weird. But, um, what you'll normally see is you might see a 28.2,
08:06.080 --> 08:15.760
you might see a 29.1. So here I think 28.2 is got the most, most, most stable, um,
08:16.560 --> 08:26.160
set, uh, the, uh, or set of release binaries. The 29.1 will, will have a little more features,
08:26.160 --> 08:33.680
but will tend to be more stable than, uh, any, uh, lower point releases for 29, uh, certainly
08:33.680 --> 08:39.600
than any release candidates for 29, which might even have new features, um, but are mostly going
08:39.600 --> 08:46.000
to just be packages. So they're going to become the most stable thing here. And especially if
08:46.000 --> 08:53.600
they, they, they have a, you know, if this, this is not, uh, if this were to be 29.2 release
08:53.600 --> 09:04.960
candidate one as well, looking forward to seeing, um, the, uh, 30.50. Um, and, and in between this,
09:04.960 --> 09:11.840
this pretest here, we're talking about kind of developer land. Um, so, um, the expectation is
09:11.840 --> 09:16.560
that, you know, what you're doing that applies to windows users, uh, just as much if you are
09:16.560 --> 09:22.960
building anything in the snapshot range, any of that is going to be in this 30.0.50. Currently
09:22.960 --> 09:32.240
that'll change when the, uh, when the 30, 30, uh, an Emacs 30 release tags, uh, or release branches
09:32.240 --> 09:42.880
come. Okay. So let's talk about the local. Um, there's not much to know about what I have going
09:42.880 --> 09:51.200
on, except that I have my, my paths mess messed with. So, um, if, if that, that were to come up,
09:51.200 --> 09:57.120
if you're wondering how, why does this, uh, and insist command work, that's probably the place
09:57.120 --> 10:03.760
where you'd notice it. Uh, I am using windows 10. I haven't tried windows 11, uh, as mentioned,
10:03.760 --> 10:09.520
mysis2 is critical to all this. There's one script in particular that will error out if you try to do
10:09.520 --> 10:16.560
anything other than use mysis's, mysis's shell. And in fact, mysis owns or provides three shells
10:16.560 --> 10:21.760
and of them, that script is designed to work with a specific one of them as, as we'll come to.
10:22.720 --> 10:29.120
Uh, I don't talk about installing the dependencies, but just as, as kind of some kind of help,
10:29.680 --> 10:38.480
um, you can search using this formula and install, uh, using this formula.
10:38.480 --> 10:40.800
Good luck with those, you know, grep commands.
10:43.520 --> 10:49.440
And this is the tool for building the self-installing self-extracting installer or, uh,
10:49.520 --> 10:55.600
executable self-installer. Um, the script for that is provided along with the Emacs source.
10:56.720 --> 11:03.280
Um, and I've provided a helpful link to the main page for the project download link on the left.
11:03.280 --> 11:09.680
It is not, um, it's kind of scare where the way that this link appears, but I have clicked it and
11:09.680 --> 11:18.960
it's working for me. Automation does, uh, we'll, we have some time we'll be looking at this at a
11:18.960 --> 11:24.560
minimum. I wanted to mention that what I do on my local, what you're seeing in the crawler, I hope,
11:25.280 --> 11:35.600
uh, represents a, uh, a simple sleep loop. Uh, and we'll, we'll look into that if we have time.
11:36.560 --> 11:42.960
Um, I do have a little bit, I do use like a cron job and so on to clean up some hosting that,
11:42.960 --> 11:50.160
that I pay for, um, where I've got, where I, where I kind of self host some, uh, snapshots,
11:50.720 --> 11:58.880
more stuff than I feel comfortable uploading to, uh, to GNU. The, um,
12:01.760 --> 12:06.480
you know, I never said, uh, my name is Corwin Brust. For the last couple of years, I've been
12:06.480 --> 12:12.480
the volunteer making, uh, um, making the snapshots, the quote unquote, official binaries,
12:12.480 --> 12:20.560
uh, for windows of the, um, of, of Emacs for windows. So that's, that's all the different
12:20.560 --> 12:25.680
versions. Uh, help is always welcome with that. I'd be very happy to teach you in more depth.
12:25.680 --> 12:31.920
This video is, you know, kind of my drop dead file. Uh, I don't have specific plans. Uh, if
12:31.920 --> 12:36.480
somebody's like, Hey, get out of the way, this is the one thing I think I can do. Um, Hey,
12:36.480 --> 12:44.640
that's real relatable. Okay. Um, so I haven't tried, uh, the, I haven't tried a lot of fun
12:44.640 --> 12:50.400
things that I won't talk about. Um, the, uh, the rest of this talk is going to get into the
12:50.400 --> 12:56.560
nitty gritty. As I said, um, if we can't convince Emacs to start building over on that screen,
12:56.560 --> 13:05.120
we'll be opening it up here on the center stage. Um, uh, this begins and there's, there's, there's,
13:05.120 --> 13:11.520
there's great insight here too, on the wiki, uh, with picking an FTP source for any official
13:11.520 --> 13:19.760
release that is for a stable product, please visit, um, ftp.gnu.org. Otherwise you'll want
13:19.760 --> 13:27.280
to switch that FTP dot at the beginning to alpha dot and take a pretest, uh, or any snapshot or
13:27.280 --> 13:36.640
otherwise, then publish there the, uh, next, uh, you know, I'm gonna, you have some examples in
13:36.640 --> 13:43.440
here that assume that you're doing a release bill that you're doing $29 one, but, um, I am glancing
13:43.520 --> 13:51.440
out of the, the right side of my face at the chat on the opt-ins. Anybody in there wants to direct
13:51.440 --> 13:57.840
me at a particular, um, we can make some other, we can build something else. If you want to see
13:57.840 --> 14:03.840
a snapshot build more mentioned that, um, the examples that you're going to see here that I
14:03.840 --> 14:12.560
will, without other direction, cut and paste, um, are all, uh, based on the release bill. So,
14:14.640 --> 14:22.320
um, so, uh, we'll use the, uh, I mentioned that there are several shells provided by MySys2.
14:22.960 --> 14:33.120
The MinGW64 shell is the one that we mostly need. Um, I tested all of this as well with the MinGW32
14:33.120 --> 14:40.400
shell. Um, so that, that should work and, and see mix binaries that, that, that work for me.
14:44.080 --> 14:50.720
Uh, I, as I mentioned, I don't get into the details of installing all your prerequisites.
14:50.720 --> 14:56.560
I found that doing it in a headfirst manner wasn't, uh, wasn't difficult. And I also found
14:56.560 --> 15:00.240
that there's a number of tutorials. I didn't want to pick one to link here.
15:01.040 --> 15:10.800
Um, there, uh, here, uh, okay. So our general formula for building Emacs, irrespective of
15:10.800 --> 15:19.600
Windows, looks like, does the configure script exist if not run autogen? From a Windows build
15:19.600 --> 15:27.600
standpoint, this is, if I'm not running a release, release build, call the autogen script.
15:27.840 --> 15:32.080
Right. And this would be in the directory where we want to pack this. I'll demonstrate
15:32.080 --> 15:42.640
within three minutes if, uh, if one, if nobody's pushed upstream to Emacs. Um, so, uh, the configure,
15:42.640 --> 15:53.280
uh, and, uh, configure options are, uh, uh, the, the configure, you know, if the configure, sorry,
15:54.240 --> 16:01.520
the configure script exists, then, uh, it doesn't, doesn't exist. So the only reason,
16:01.520 --> 16:07.920
so in my process, I will always execute that step because I clean everything after every build,
16:07.920 --> 16:16.880
um, in all my contexts. Um, however, if you were, you know, had a, a checkout of emacs.get
16:16.880 --> 16:21.440
and you are building it at several releases, then maybe you've got a configure script and then you
16:21.440 --> 16:27.600
all want to know, um, the, you know, whether you have to bootstrap and the typical complexities,
16:27.600 --> 16:33.200
but otherwise you might be able to skip that in, in, in the abstract. Um,
16:36.080 --> 16:41.520
is that right? Or is it, is it the make, uh, so, and if they make file doesn't exist,
16:41.520 --> 16:46.080
make install. I know I'm looking at that in question whether it's correct. Sorry about that.
16:46.640 --> 16:55.600
Um, in any case, uh, so auto-gen configure make install is our recipe. Auto-gen creates the
16:55.600 --> 17:01.840
configure script, configure creates the make file, the make file. Um, in the case of windows,
17:01.840 --> 17:08.080
I almost always want the install, uh, and to specify some location where the installed emacs
17:08.080 --> 17:19.120
will land. This is where all of the recipes for packaging emacs go. And if I were, uh, you know,
17:19.120 --> 17:24.640
using this as a movie to upgrade, I personally would do that by, by specifying an install path,
17:24.640 --> 17:31.520
quote unquote, on top of, uh, a main installation. I don't do that. I update shortcuts mainly based
17:31.520 --> 17:37.600
on what specifically I want to try, uh, in an effort to, to, to, to notice, uh, interesting
17:37.600 --> 17:44.400
patches and confirm they work on windows, which mostly they do. There's not a lot of code in my
17:44.400 --> 17:49.760
experience that is, uh, windows specific and very, very little around the build process.
17:50.320 --> 17:57.440
All right. Huge rabbit hole zone. And I still have a minute before I have to, uh, kick off
17:57.440 --> 18:07.120
the first part of our demo. So let's, let's keep, keep diving in, um, the, those specific part
18:07.120 --> 18:11.920
windows specific parts beside the dot exe extension that we're going to find slammed
18:11.920 --> 18:17.680
onto all of our familiar, uh, executables. We're also going to have emacs client W,
18:18.400 --> 18:26.880
which is a wrapper that hides, um, how hard it is to get, uh, to, to, to get it,
18:27.600 --> 18:31.760
how bad the abstraction is between the window management layer and the GUI,
18:32.400 --> 18:37.040
and then all the different parts on windows. Essentially, it wants to create a shell window.
18:37.040 --> 18:42.960
If we just double click emacs dot exe. So emacs client W, uh, and run emacs,
18:42.960 --> 18:49.440
they're going to solve that problem. Um, uh, wrapping emacs and emacs client respectively.
18:51.600 --> 19:00.320
And, um, just, uh, all right. So let's, let's go ahead and do something. I'll, I'm going to
19:00.320 --> 19:08.080
take away the ticker here for a minute. And what you're not seeing is off stage. I am killing that
19:08.080 --> 19:19.680
so we don't get built in parallel. Um, so, um, so at this point I'm going to open up a shell and
19:19.680 --> 19:24.240
I'm going to start talking just a little bit about my local build environment, which we haven't
19:24.240 --> 19:32.640
gotten into. In fact, just to make that even easier, let's, um, let's just take a look at it
19:32.640 --> 19:40.640
a little bit. Probably the easiest spot is here.
19:47.680 --> 19:55.280
All right. So here we have the familiar windows, my computer interface. I have the G drive and the
19:55.680 --> 20:07.200
H drive, four terabyte drives, um, dedicated to my, um, really overblown emacs build process.
20:08.160 --> 20:14.000
Um, this just lets me be super lazy. There's no reason you need any massive amount of storage
20:14.000 --> 20:22.080
to do any of this. Um, inside here, and now I'll actually switch you back to the other screen.
20:23.040 --> 20:26.560
Um, we'll, we'll find,
20:37.280 --> 20:46.480
oops, sorry about that. I didn't take the time to label that one. Um, so here you can see
20:46.480 --> 20:53.760
the primary output that I'm looking at through this automated process. I come along, I look at
20:53.760 --> 20:59.840
the bug reports, or maybe I'm just restarting my computer and choosing what emacs version at random.
20:59.840 --> 21:06.240
And then in that case, I look at this modified date and I say, um, my config that I, you know,
21:06.240 --> 21:11.120
that I'm playing with right now is all set for emacs 30, or I'm testing the both and I'm
21:11.120 --> 21:16.400
relaunching both of these. Right. So for me, that starts by diving into the install folder,
21:16.400 --> 21:22.720
going into the bin folder, which looks exactly the way my automation leaves it. I then come in
21:22.720 --> 21:34.320
to run the run emacs and I create a shortcut, um, to it. So I'm a keyboard person. So that's
21:34.320 --> 21:40.400
usually done like this. And then I just know that the context menu is going to come up in the right
21:40.400 --> 21:49.120
place. So I'll come up and, um, possibly change the, change the shortcut, right.
21:53.120 --> 22:01.280
If I don't mess with it. Um, so here's where I'll add my minus Q, if that's kind of where
22:01.280 --> 22:06.800
my world was at, or it kind of depends on what I'm doing with these, which varies week to week.
22:07.440 --> 22:12.000
Um, so restarting my emacs, uh, involves doing the same thing, going to my desktop
22:12.560 --> 22:23.200
and where you'll find a number of emac shortcuts and, um, updating the shortcut in the same manner
22:23.920 --> 22:28.000
joint actually, maybe we'll just, let's go back there and just show it.
22:28.000 --> 22:31.600
So if we look at, for example, my ERC,
22:31.760 --> 22:39.040
you can see, it's going to be pointing at one of these clones and then it's going to
22:39.760 --> 22:44.720
maybe tell me that I want, it wants to be full screen. Nope, not currently. And then it might,
22:44.720 --> 22:48.720
uh, have some stuff in there about auto-loading at config and what
22:48.720 --> 22:52.560
connections I'm going to, some commands I've defined to start connections.
22:53.280 --> 22:57.680
All right. And sorry, I got a phone call. I was checking. It wasn't in an org, the org,
22:57.680 --> 23:04.160
not the other organizers giving me the hook. So, um, all right. So that's, that's probably
23:04.160 --> 23:11.440
enough on the local system. Let's get back to the, to, to building emacs. And now it hopefully makes
23:11.440 --> 23:17.440
a certain amount of sense when I say we're going to wander over to the H drive and, and, and, and,
23:17.920 --> 23:22.560
hopefully makes a certain amount of sense when I say we're going to wander over to the H drive
23:22.560 --> 23:31.520
and recreate the structure that, um, both my process sort of assumes and the scripts you'll
23:31.520 --> 23:41.440
find in the admin NT, uh, build disk folder in source used to assume. Those scripts are in need
23:41.440 --> 23:49.440
of some love. And in just a little bit, I'll be mentioning a build, uh, a, uh, a, a, a particular
23:49.440 --> 23:54.000
bug that you might want to pay attention to if you're interested in making a self-installer.
23:54.800 --> 24:04.320
All right. So, um, we're going to create, uh, an emacs build directory.
24:04.320 --> 24:16.960
And we've got a handy git clone stage, git clone command stage for ourself. That would work. Um,
24:19.360 --> 24:26.160
do not currently see anybody lobbying for that. So instead we will run the rather faster
24:27.120 --> 24:36.080
uh, W get command on Savannah, which is not pasted in here. Nice. Let's see if I can freehand it.
24:36.080 --> 24:40.000
Not going to do it. Uh,
24:40.720 --> 24:41.840
okay.
24:52.000 --> 24:56.560
I beg your pardon. I'm grabbing a URL from the internet.
25:00.080 --> 25:06.960
Uh, okay. Yeah, I can, I can honestly, I can freehand it, whatever. Okay. Sorry. I, uh,
25:07.680 --> 25:13.200
I didn't have that bookmarked in all handy. Like I thought I did. Um, so we'll just say
25:13.200 --> 25:30.480
ftp.gnu.org slash, uh, what is it? Pub emacs, emacs-29.1, uh, .org.gnu.org.exe.
25:30.480 --> 25:47.040
I really think I'd have this command sitting around. It makes me want to scrap the whole
25:47.040 --> 25:54.720
demo. I'm not going to lie. Okay. How am I doing? Um, I think at least 15 minutes. Um,
25:54.720 --> 25:58.160
but in the command that you were freehanding, should the pub be GNU instead?
25:59.120 --> 26:01.680
Oh, thanks. I'm sorry.
26:07.440 --> 26:13.360
There we go. Thank you. All right. And then we'll,
26:17.760 --> 26:20.160
and I'm not sure I provided commands for this either,
26:20.720 --> 26:29.600
but it is trivially easy to do. And while that happens, we'll get to move on a few slides.
26:31.760 --> 26:38.000
Um, the configure script I'm not talking about in a lot of detail, but I do want to mention that the
26:38.000 --> 26:44.720
GNU binaries are provided with native, uh, compilation enabled. That's the feature that
26:44.800 --> 26:55.360
uses gcc lib gcc get on windows. If available, that lib gcc get will be used. Um, but when,
26:55.360 --> 27:03.200
but, uh, if, if, uh, emacs has that feature, then it will take by compile, uh, native code and,
27:03.200 --> 27:10.880
uh, asynchronously compile that as needed, uh, with the ahead of time feature. We're going to
27:10.880 --> 27:15.360
do as much of that ahead of time. And for folks that are consuming the windows binary, the
27:15.360 --> 27:21.360
thinking goes that they might not have my assist too. They might not have lib gcc jet. They might
27:21.360 --> 27:28.560
be happy that they're enabled in a, you know, a lot of time running emacs on their local environments
27:30.400 --> 27:39.120
at all, you know, in a, maybe a lockdown, uh, corporate context. So aside that, um, there's
27:39.120 --> 27:45.120
your first glimpse at the configure, um, program that we're going to run in a moment. In fact,
27:45.120 --> 27:52.160
I'm going to go as far as putting it on the clipboard. Um, really just looking at this,
27:52.160 --> 27:57.120
the AOT flag is the one I'd call attention to, but it's worth understanding that windows doesn't
27:57.120 --> 28:02.000
provide a D bus capability. So windows native program isn't going to be able to depend on D
28:02.000 --> 28:07.600
bus. We're going to, we're going to explicitly ask that that be left out. I think that's actually
28:07.600 --> 28:12.080
optional and it's documentation. I think the configure program is smart enough to know that
28:12.080 --> 28:20.080
we don't want D bus on windows. Um, otherwise we tend to compile with things. Um, there there's
28:20.080 --> 28:26.320
missing documentation. We could say the, uh, all of the libraries are treated in the way I mentioned
28:26.320 --> 28:34.880
in that, um, JPEG support will be available as long as the JPEG is, is available in our environment
28:34.880 --> 28:40.320
and configure script certainly notices that, um, the GNU provided binaries are provided with
28:40.320 --> 28:47.280
minus O2. And that's also my default personally on windows. Um, however, and I'm going to skip
28:47.280 --> 28:59.680
this since I mentioned it, um, mentioned, uh, and, uh, um, so I guess I'll say, um, you can,
28:59.680 --> 29:06.560
um, say with the, it's worth knowing that you, if you're not one reason that, that you're building
29:06.560 --> 29:11.200
might be because you want to turn off native compilation for whatever reason. If you have
29:11.200 --> 29:16.640
low juices, you get, get, but don't want Emacs to use it. Uh, especially as that default looks like
29:16.640 --> 29:26.480
it could be changing with Emacs 30. Um, the, uh, the debug configuration, um, this is, this is the,
29:26.480 --> 29:33.200
uh, kind of, uh, what, what I'm currently using this on commentary, uh, I've seen on the next
29:33.200 --> 29:45.280
development list. Let's check on our checkout and see if we can't get a build running. Um,
29:45.280 --> 29:51.440
this is a release build, so I won't be starting with, uh, so we'll start by hopping into its
29:51.440 --> 30:14.080
directory and we, um, we have, uh, but not. Okay. So that tells us we're going to run
30:14.640 --> 30:23.440
our configure program, but we don't need to run a config IC. So,
30:31.280 --> 30:34.320
so let's get that going and, uh,
30:36.000 --> 30:41.360
hopefully that's showing through just enough to be fun, not too much to be distracting.
30:45.040 --> 30:55.760
Um, the, uh, the unoptimized, uh, uh, um, please report issues. If your Emacs is crashing,
30:55.760 --> 31:01.200
uh, to the Emacs development list, not to me personally. Um, although you are of course,
31:01.200 --> 31:06.960
welcome to copy me. Um, if you especially I'm subscribed to that list, so I get all the mail.
31:06.960 --> 31:14.000
So I don't mind being copied. Uh, and, uh, as well, if you think it's, uh,
31:15.040 --> 31:20.160
you know, related to packaging, that actually makes sense or windows related to even, and,
31:20.160 --> 31:25.120
uh, it can be tested with an extra snapshot that should be uploaded to the canoe alpha side.
31:25.120 --> 31:31.600
I could look at that if I have time. There's with the configure script to make file for
31:32.160 --> 31:39.840
Emacs is really, really complicated. If time permits, which I'm now confident it will not,
31:39.840 --> 31:44.240
we will look at, uh, make file that I tried writing that, uh, orchestrates this whole
31:44.240 --> 31:52.160
process that I'm talking about. Um, as, uh, let's see. So the build, uh, build process,
31:52.160 --> 32:03.120
I run my builds with, uh, explosively specifying the max CPU, uh, with minus J, but minus B one
32:03.120 --> 32:08.320
to get the full build, uh, full log into your recipes. That is probably the magic thing.
32:09.040 --> 32:12.560
Matt, um, shouldn't to understand what, uh,
32:16.000 --> 32:23.600
or that, uh, that, that, uh, that I'm glad that I know, uh, as I'm trying to write my automations,
32:26.960 --> 32:36.080
uh, the, um, so I call that out here, the binary, uh, releases. Um, okay. So in this section,
32:36.080 --> 32:41.120
we're going to start to get into what are all those files. And there's a bug report related to
32:41.120 --> 32:46.640
that, but I didn't get into here. So, um, that's kind of to the point about the less said about
32:46.640 --> 32:50.800
this, the better, uh, that's my explanation for stepping through some of these slides.
32:50.800 --> 32:58.240
Uh, of course we'll share them all, uh, uh, hopefully by the time that this video is published.
32:58.960 --> 33:06.640
Oh, I mentioned, um, I may have mentioned already freshly installed, but, uh, fully installed. Uh,
33:06.640 --> 33:15.200
the, the, the key distinction here is that, uh, Emacs is distributed in the binary form for Windows
33:15.200 --> 33:21.600
with some DLL files that actually come from the mysys2 project. There's an implication there to
33:21.760 --> 33:26.160
there's an implication there to GCC that I definitely want to get to it talking about.
33:28.080 --> 33:35.840
Um, so freshly installed means we haven't copied those binaries from the mysys2, uh,
33:35.840 --> 33:45.360
installation into the Emacs, uh, installation. Uh, and then, uh, when we re-archived that
33:45.360 --> 33:48.640
local Emacs installation, that's how we're going to create the full zip.
33:48.640 --> 33:54.160
So hopefully that actually is a pretty good summary of what all those files are. Um, but
33:54.160 --> 34:00.320
there are readme files, uh, on the FTP that do a pretty good job, um, if you can dig enough to find
34:00.320 --> 34:11.120
one and my apologies for, uh, tardiness getting a new version on that posted. Um, the Emacs, uh,
34:11.120 --> 34:17.040
so those dependencies, uh, are listed within Emacs itself. And as we'll just talk about in a moment,
34:17.040 --> 34:24.240
there's a way, uh, that we can use, we can access that when we collect them in order to meet, uh,
34:24.240 --> 34:31.840
the GCC requirement that is essentially to include, um, include the sources for the,
34:31.840 --> 34:41.200
for those binaries, the things that were compiled against. Um, the, uh, so, so here we go,
34:41.200 --> 34:45.280
we're, we're into the build process. Let's just take a look and see if configure it got done.
34:45.280 --> 34:52.240
It sure did. And now we can see a table of, of hopefully good, but good and bad news, um,
34:52.240 --> 34:57.840
and potential, um, where we're learning that we're using the pdumper strategy and any number of other
34:57.840 --> 35:04.320
things that we might be messing with as our motivation for, for building ourselves on Emacs.
35:04.320 --> 35:12.560
Um, again, this table represents, uh, what you'll, what, what, what it looks like for me when I'm
35:12.560 --> 35:22.720
building for the GNU distributed binaries. All right. So, um, kind of moving, moving as quickly
35:22.720 --> 35:31.200
as I can here. I'm at 40 after, I believe that's the five minute mark. So, um, having just succeeded
35:31.200 --> 35:37.040
in, in configuring Emacs, I don't think we're going to build it. Uh, uh, I don't think we're
35:37.040 --> 35:42.720
going to actually get to running make install. Um, but I have it sitting here on my keyboard
35:43.280 --> 35:54.320
or clipboard, assuming that we will, right? No. Oh, wow. I think I've managed to confuse this.
35:54.320 --> 36:06.240
All right. So for me, that looks simply like, uh, make, uh, V equals one install, uh,
36:08.160 --> 36:11.040
prefix equals, uh,
36:18.400 --> 36:19.920
and we can at least get it kicked off.
36:20.640 --> 36:27.680
And that can, that command is just, uh, just is no, no different than I showed on the slide where
36:27.680 --> 36:32.160
I, where I gave it, uh, wasn't planning to stop and explain it. I was just planning to paste it.
36:33.360 --> 36:38.640
So, so, so again, recapping the rest of the process here and maybe actually making it,
36:38.640 --> 36:44.320
if you can believe it or not, through the rest of these slides, um, we, to, to, to create the
36:44.800 --> 36:49.600
full set of binaries, we're going to need a no dependent, no depths archive. That's without the
36:49.600 --> 36:57.760
mysys2, uh, deal provided DLLs, just the things that we compile as part of making Emacs. Um,
37:00.320 --> 37:07.840
the, uh, the build depths zip script is provided with the source distribution is your tool for,
37:07.840 --> 37:11.760
uh, meeting the GPL requirements, right? Source as mentioned before,
37:12.640 --> 37:18.560
um, there is a second bug that I did, uh, include some more information on in my notes already.
37:19.680 --> 37:25.600
Um, that, uh, that gets into the details of this other feature I alluded to.
37:26.480 --> 37:35.120
Um, I'll just skip into that. Um, we, we can, with, with, uh, with a, an appropriate version
37:35.680 --> 37:42.240
of that, which you may need a patch, uh, to, to have, you can list out the dependencies
37:42.240 --> 37:47.200
and, and that version as well. Can consider the dependencies of the Emacs binary versus
37:47.200 --> 37:51.680
the hard-coded list you might find, depending on when you look at this file in the source tree.
37:53.680 --> 38:01.360
The diff, um, so I also have a hack here that, uh, works around the absolute requirement to
38:01.600 --> 38:18.320
run this with the mysys2 and not the minGW64 script. Um, once we've made that zip file that
38:18.320 --> 38:25.360
contain that's, that's our installed Emacs without the DLLs provided by mysys2, we'll then unpack
38:25.360 --> 38:30.960
the dependencies that were created by that Python script we just talked about from the Emacs source
38:30.960 --> 38:38.080
tree. At that point, once those are unpacked, we can now make what's called the full installer,
38:38.080 --> 38:42.800
or sometimes I might call it the unqualified installer, because it's just going to be called
38:42.800 --> 38:54.800
Emacs29.1.zip. Um, and that, uh, that file, which, which creates the, the, the, the, the,
38:54.800 --> 39:02.640
which creates the archive, uh, that, uh, that, that, that file is exactly the same,
39:02.640 --> 39:08.400
plus the, uh, the dependencies that we unzipped in the bin folder of the installed Emacs.
39:09.680 --> 39:14.480
The, uh, executable self-installer, which I would love to have more time to talk about.
39:14.480 --> 39:18.720
I gave a few pointers here on the hard part of running it. Most importantly,
39:19.680 --> 39:26.640
if I've installed in any kind of funny looking name, I end up renaming it to like Emacs-29.1
39:26.640 --> 39:35.200
or Emacs-29. or 30.0.50 or whatever. And I just renamed that installed Emacs folder.
39:35.200 --> 39:39.680
And then I go to the root of wherever I created that, the parent directory above it.
39:40.320 --> 39:46.560
And that's where I make my copy of the Emacs NSI, um, the, the NSIS script.
39:47.520 --> 39:55.600
And, uh, that's also where I, and then, um, then from that parent directory, I execute,
39:55.600 --> 40:02.560
uh, making sys, uh, here. I, as mentioned, um, I, I can get away with this because I have it
40:02.560 --> 40:07.520
on my path and it's my recollection. I think I tested this and couldn't reproduce the problem.
40:07.520 --> 40:11.200
So I didn't document it here, but I've had some problems with running this
40:11.200 --> 40:20.400
when, uh, when NSIS wasn't on my path. The, uh, the, the, the final step here
40:20.400 --> 40:27.600
and the last, the GPL requirement is to include all the sources, except when I'm doing a release
40:27.600 --> 40:34.320
build, I always do this. Um, and that's the new practice when making Snapchat binaries is to go
40:34.320 --> 40:39.840
ahead and include the sources, even though we might have the specific revision number, um,
40:39.840 --> 40:46.800
our thinking is we want absolute clarity, um, that, that somebody, uh, can say, okay,
40:46.800 --> 40:51.200
this binary did this thing, send me the source for it. I'm going to go take that into my own
40:51.200 --> 40:56.800
open source, or yeah, maybe they would, the jerks, um, into my own open source project.
40:56.880 --> 41:03.360
And, um, you know, off they go, uh, and that needs to be possible.
41:04.800 --> 41:12.480
Um, so, um, beyond that, the rest of this is, is really detailed that you find covered in the GNU
41:12.480 --> 41:19.520
maintainers manual. Um, this is the, the current set of Windows binaries that, um, it's busily
41:19.520 --> 41:29.040
working on creating a like for like a mirror to behind the scenes here is called a 29.1 underscore
41:29.040 --> 41:36.080
two. Um, and I have a lot of automation, uh, available on this site. So at this point,
41:36.080 --> 41:45.200
I'm just, I think I'm only a minute, 40 seconds over. I'm gonna invite my, uh, co-organizers
41:45.200 --> 41:49.760
back onto the call or any volunteers that want to jump in and anybody, if there's people on the
41:49.760 --> 41:57.440
BBB, I'd be happy to take questions. If there aren't, um, I have a screen full of, uh, the
41:57.440 --> 42:04.080
automation stuff ready to go as a kind of a second ring in my circus today. So if you're still with
42:04.080 --> 42:08.640
me, thanks a lot for joining me. And I really enjoyed this talk. Uh, if this is where we're
42:08.640 --> 42:14.560
going to close it out, I don't know where we're at for schedule today. Thanks a lot for a great
42:14.560 --> 42:20.880
talk, Corwin. Um, in terms of like schedule, yeah, you went over a little bit for the official,
42:20.880 --> 42:26.880
like, um, schedule or time of your talk, but I think, uh, we actually have maybe like six or
42:26.880 --> 42:32.640
seven more minutes, um, here on stream for, um, questions and such, if folks have questions,
42:32.640 --> 42:38.320
or if you want to like quickly maybe show one or two more things. Um, but I think the hard stuff
42:38.320 --> 42:43.520
is about like maybe 10 minutes ish for now. And then we'll have to rush over to, um, uh, for the
42:43.520 --> 42:55.520
closing remarks. So, well, that sounds awesome. Okay. So I'm looking at the, the dev chat. Uh,
42:55.520 --> 43:01.040
I see a comment on cross-compiling the emacs, but I'm sorry, I'm looking at IRC primarily, but,
43:01.040 --> 43:08.080
uh, feel free to jump in if you're on, uh, BBB with me, or, uh, uh, if, if you put something on
43:08.160 --> 43:16.400
the pad, I'm sure, uh, we'll see it between the two of us, uh, over here. Okay. So cross-compiling
43:16.400 --> 43:20.640
emacs for Serenity. I haven't tried really any cross-compiling. I think that would be very
43:20.640 --> 43:28.240
interesting. I would most likely focus on doing exactly what I do on a GNU system, completely
43:28.240 --> 43:35.760
ditching. Um, so I guess with my, my remaining time, rather than walking through code, um, for
43:35.760 --> 43:42.080
my automation, which can be another talk, if in fact there's an interest in that, um, I want to,
43:42.080 --> 43:48.480
I guess, say a couple of words about the non-free operating system that I'm using here. I did my
43:48.480 --> 43:58.880
best to use no non-free software other than the, uh, the operating system that is the context for
43:58.880 --> 44:07.920
this talk in preparing this talk for you. I personally have a lot more, uh, time and energy,
44:07.920 --> 44:15.840
I have to say, invested in proprietary tools for doing a lot of the things that, that go into this.
44:15.840 --> 44:22.000
So I really respect the work of people that pull that off. Um, I'm sorry I didn't get my pre-recorded
44:22.000 --> 44:30.320
stuff, uh, kind of in order for everybody, but I just want to stress, like, uh, it is all absolutely
44:30.320 --> 44:35.520
possible and just hats off to everybody that, that used, uh, entirely free software to get their,
44:36.240 --> 44:43.360
get their recordings done in time. Um, and what you did see, unless it was provided by the operating
44:43.360 --> 44:49.200
system in my presentation today, was all, uh, free software with the debatable exception of
44:49.200 --> 44:56.160
NSYS, which styles itself as open source, maybe for, uh, marketing reasons.
44:56.720 --> 45:00.400
Okay, uh, in any case, uh, certainly we can get all that source.
45:08.080 --> 45:14.640
Thanks for the note, Corin. It's good to know that, uh, building or, uh, yeah, doing the build of Emacs
45:14.720 --> 45:20.880
for Windows on Windows can be done, uh, using only free software. Yeah, absolutely.
45:23.440 --> 45:29.520
Probably the right closing note, right? Um, I just, uh, thanks again to the organizers for
45:29.520 --> 45:33.920
bearing with me. And like, every time I was like, you guys, I'm terrible at this. They're just like,
45:33.920 --> 45:38.240
no, you're doing fine. Keep going. You did a great job live last time. You can do it live,
45:38.240 --> 45:43.040
you know, and, and saying all the right things to just, uh, encourage me to come back,
45:43.920 --> 45:46.160
uh, this year and every year.
45:49.760 --> 45:53.520
Well, as I said before, we were very lucky to have you and the rest of the team, of course,
45:53.520 --> 45:59.520
as well. And, um, goes without saying, but all the speakers and the audience, the participants as
45:59.520 --> 46:14.240
well. So, um, so, uh, are we, we're still live over here that, you know, you know, me, I'm the
46:14.240 --> 46:22.800
Mike Hogg that I am. I can't resist, um, throwing, throwing up another screen here. And, uh, in fact,
46:22.800 --> 46:32.160
let's go ahead and go back to our, to our crawler, right? And I'll bring back our build
46:32.160 --> 46:40.480
if it finishes and maybe we'll show making the installer as well. Um, uh, but I have the CPU
46:40.480 --> 46:49.680
account turned down a little bit here. Uh, note, I didn't specify minus J here. Um, so, uh, over
46:49.680 --> 46:54.000
here is my automation. Uh, in case you do want to take a look, I can at least provide the
46:54.000 --> 46:59.760
orientation of what you're looking at. Scrape log is probably my first thing I want to show off.
46:59.760 --> 47:08.400
Um, it's not beautiful, but this works, uh, pretty well for me to get a sense of something might
47:08.400 --> 47:14.640
have changed in terms of how many warnings or errors are happening when I build Emacs. So I
47:14.720 --> 47:18.640
have this whole automation going on and I frequently want to answer the question,
47:19.280 --> 47:25.600
you know, what's the change rate in, uh, warnings or what have you. So this kind of gives me a count
47:26.400 --> 47:36.880
of that. Um, so from there, uh, accrued CI is the script we're watching run in the other pane.
47:37.840 --> 47:44.960
Um, we can see it's, uh, just starting to do its thing again.
47:48.800 --> 47:56.960
And, uh, the make file I mentioned, this is a top-down rewrite of everything else that I've done.
47:57.040 --> 48:08.640
It has some bugs right now. Um, the, uh, the build distribution is the main script that I use for my
48:08.640 --> 48:17.120
personal builds. This is what is run by the crude CI script. Uh, it has a fun tie-in to this, uh,
48:17.120 --> 48:23.200
web interface here, um, where we can, you don't need the port number when you go to it. That's
48:23.200 --> 48:33.680
just if I'm going to post. Um, the, uh, blah, blah, blah, blah, blah. This, this script is
48:33.680 --> 48:39.120
really long and complicated and probably needs some diving into, but you can see that, um, one
48:39.120 --> 48:43.760
of the complexities I have to deal with is that I'm going to need something in the format of an
48:43.840 --> 48:53.920
emacs-version for strategic, um, nsys reasons. So, uh, it takes care of kind of every complexity
48:54.480 --> 49:03.120
that I mentioned today in some respects, um, as does the make file. Build release is, um, another
49:03.120 --> 49:11.360
fairly useful incarnation of this. This is just focused on the release process, and this does
49:11.360 --> 49:18.800
work, uh, for example, to create the, the, the, you know, like, like, well, I could like, uh,
49:18.800 --> 49:25.600
for like files as far as I can tell. So what are currently posted for emacs 29.1 and the release
49:25.600 --> 49:32.400
candidate. Um, so I'll probably use that next time. And if it's still like, for like, I'll
49:32.400 --> 49:40.960
probably post the ones that came from this. Um, uh, building, uh, TreeSitter, I make some DLLs
49:40.960 --> 49:47.120
there. If you're looking for hints on how to get going or just simply, uh, a huge long list
49:47.120 --> 49:55.840
of Git repositories that make grammars, you can use that is here as well. Um, finally, I mentioned
49:55.840 --> 50:04.800
I have a, um, I have a website where I publish my own personal snapshots that I make, uh, that
50:04.800 --> 50:11.680
folder full of install directories, but all of the usual GNU style binary distributables, including
50:11.680 --> 50:22.320
the source code and the source code for the dependencies. Um, the, uh, so this program is
50:22.320 --> 50:27.680
another one of those complicated find commands and therefore potentially the most useful thing
50:27.680 --> 50:34.960
in here to take to you. Um, and here I'm deleting, uh, binaries older than 17 years. Uh, everything
50:34.960 --> 50:42.240
except the, uh, node apps file and the sources of it you'll find on my website. Currently those
50:42.240 --> 50:48.800
indefinitely, I'll probably roll out 120 days or something, um, for those eventually.
50:53.600 --> 51:00.400
Oh, uh, I can talk about this one even. Um, the, uh, so here you'll see the two branches that I'm
51:00.400 --> 51:06.560
tracking. The job of this script is, uh, this runs on the website. I call it with a, like a remote
51:06.560 --> 51:15.920
rsync, uh, type, uh, or an SSA remote, uh, SSH command. Um, and right after the rsync,
51:15.920 --> 51:26.080
rsyncing up any new Emacs that I built. And, uh, it's, uh, it's job is to update my fancy
51:26.080 --> 51:34.880
directory indexing. So let's look at Corwin's website. Here's my Emacs 29 folder.
51:37.360 --> 51:50.400
We have about two more minutes, Corwin. Yeah. It'll take that entire two minutes to, uh,
51:50.400 --> 51:56.400
load this directory because I am, because I have not yet ever pruned any of these dang binaries.
51:56.400 --> 52:02.800
So every version of, uh, Emacs 29 that I've ever made for myself is probably here. Nice.
52:03.600 --> 52:08.480
Uh, I strongly recommend that you bookmark this folder if you're using these for something and
52:08.480 --> 52:14.240
you always want the latest. Um, so here, this particular, uh, latest 29, Emacs 29 latest,
52:14.240 --> 52:22.560
or simply replace the 29 with 30 to get those. Uh, alas, no, no such luck for TreeSetter.
52:23.120 --> 52:26.320
But if we look at, uh, that,
52:36.400 --> 52:40.320
live this long without making a typo. Now look at me.
52:40.320 --> 52:46.080
Uh-oh. Oh.
52:51.520 --> 52:56.720
So here, um, you know, we can see the icon application and so on, even in the TreeSetter
52:56.720 --> 53:01.440
folder. This is all I'm talking about, about the fanciness that's set up by that other script that
53:02.400 --> 53:06.880
I'm showing over here and run after each time I run the upload. It just
53:07.840 --> 53:12.640
looks to see if anything's new and add some lines to the .htaccess file.
53:15.840 --> 53:22.400
Um, I'm particularly proud of this one. I'm not going to lie. Um, linking out to each,
53:22.400 --> 53:26.560
each, uh, project that we're using, letting us know the commit version,
53:26.560 --> 53:34.320
and then, uh, for the DLLs, quick link out to the log and the signature file for this DLL. Um,
53:36.960 --> 53:46.160
I find that a lot, just a lot more readable than, uh, listing them all out individually. And I'd
53:46.160 --> 53:53.360
love to do something like that on the GNU site. So I'm, I think we've got to be out of time by
53:53.360 --> 53:59.600
now. I've just got to say, hey, thanks again for having me, uh, for those that, uh, watch the talk
53:59.600 --> 54:04.400
either live or after the conference. Uh, appreciate everyone's support to get me to
54:04.400 --> 54:10.320
the point where I will be able to, uh, to do this, this, this cool volunteer task,
54:10.320 --> 54:14.160
uh, which is fun and easy to do and reach out to me if you're interested in helping with it.
54:18.960 --> 54:24.320
Well, awesome. Thanks a lot for the awesome talk, Corbyn. And, uh, of course, as a fellow
54:24.320 --> 54:29.920
core, uh, core organizer, uh, for all, for all that you do, um, in and around Emacs Conf
54:29.920 --> 54:33.280
and of course for, uh, GNU Emacs as well, it's much appreciated.
54:36.160 --> 54:43.200
Big, big words from coming from you, my friend. Um, thanks for the kind words.
54:45.040 --> 54:49.840
Cheers. My pleasure. All right. And with that, I think we're gonna, uh, wrap up the dev, uh,
54:49.840 --> 54:55.360
track here and, uh, we'll be with you again shortly in a few minutes on the gen stream,
54:55.360 --> 55:00.400
the gen track for the closing remarks for today, um, only for today, because we're going to be
55:00.400 --> 55:07.520
back tomorrow again as well. So don't go anywhere and, uh, see you on the gen track in a bit.
55:25.920 --> 55:32.720
Oh my God, I did it. We got done within the time. You're my hero. Um, and thank you so
55:32.720 --> 55:41.520
much for just keeping me honest there and, uh, like helping me keep my eye on the time and such.
55:41.520 --> 55:53.680
You have to look at the recording and see whether you feel like doing it again.
55:56.160 --> 55:59.520
I'm sorry. I had my sound screwed up and I'm sorry if I talked over somebody,
55:59.520 --> 56:01.680
I couldn't hear anything on mumble until this very moment.
56:03.520 --> 56:08.960
Oh, uh, because he's your webcam for it. Um, like as a, like a virtual webcam thingy,
56:09.440 --> 56:15.760
it was low res, especially when things are changing as you're scrolling around. So we'll
56:15.760 --> 56:19.920
see what kind of recording we can recover from it. And then you can decide whether you maybe
56:19.920 --> 56:26.480
want to clean it up with like screenshots. I recorded on this end too. We shouldn't have
56:26.480 --> 56:30.720
that problem with my recording. Thank you. Thank you. Thank you. I think we're still live on the
56:30.720 --> 56:42.240
dev stream. Someone could, uh, take that off. Oh, yes. Because, uh, I'll, I'll set it to rebroadcast.
56:45.520 --> 56:50.640
Yeah. I love doing that for the closing remarks. That's a fine tradition
56:52.000 --> 56:58.480
or it's a tradition now. Cause I'm pretty sure this means we've done it twice.
57:01.680 --> 57:07.360
I once heard that, you know, uh, as a fan-ish meaning like a fan-ish is a term of endearment
57:07.360 --> 57:12.240
for a science fiction fan to another. We say we're, we're fans or things we do are fan-ish and
57:12.800 --> 57:18.960
a fan-ish tradition then is if you do it three times, it's tradition, but we're on a budget here.
57:19.680 --> 57:31.600
So, all right. I think we should, um, head over to mumble and talk on mumble. Um, and just decide
57:31.600 --> 57:36.240
and see like which big blue button room we're going to be in for closing. Okay. So we're clear
57:36.240 --> 57:39.600
on BBB here? Yep. I think so.