WEBVTT 00:00:02.419 --> 00:00:08.480 2 seconds. All right. I think we are live. 00:00:08.480 --> 00:00:10.280 Yes. So, hi again, everyone. 00:00:10.580 --> 00:00:13.620 I have the pleasure to welcome John Wiegley 00:00:13.620 --> 00:00:15.440 in person to this EmacsConf. 00:00:15.700 --> 00:00:17.260 Hi, John. Hello there. 00:00:17.680 --> 00:00:18.820 How are you doing, Leo? 00:00:18.820 --> 00:00:21.100 I am doing fantastic, and even more now that 00:00:21.100 --> 00:00:23.540 I am in a room with you because we've been, 00:00:24.279 --> 00:00:25.640 we were reminiscing with Sacha. 00:00:25.640 --> 00:00:30.860 So you had been there in person in 2013 And 00:00:30.860 --> 00:00:32.680 since we started doing those online, 00:00:32.680 --> 00:00:35.020 Juan, since 2019, I think you've always been 00:00:35.020 --> 00:00:38.460 online, right? Usually it's a pre-recorded 00:00:38.520 --> 00:00:40.440 video. I think this will be the first 1 I do 00:00:40.440 --> 00:00:42.540 live in a long time. You're right. 00:00:42.540 --> 00:00:44.239 I'm saying we are online right now, 00:00:44.239 --> 00:00:45.920 but I just meant pre-recorded video. 00:00:45.920 --> 00:00:48.400 So it's good to have you almost in person or 00:00:48.400 --> 00:00:50.900 at least live and we are excited to hear 00:00:50.900 --> 00:00:52.360 about some of the Emacs news. 00:00:52.360 --> 00:00:54.780 So the floor is yours. 00:00:55.080 --> 00:00:56.900 All right, well welcome everybody. 00:00:57.260 --> 00:01:00.239 This is the yearly state of the Emacs union, 00:01:00.239 --> 00:01:02.860 I guess, about how Emacs development is 00:01:02.860 --> 00:01:05.379 going. Just to note, I am not currently a 00:01:05.379 --> 00:01:07.760 maintainer of Emacs. So what I do to get 00:01:07.760 --> 00:01:09.920 these notes is I call up my friend, 00:01:09.920 --> 00:01:12.040 Eli Zaretsky, 1 of the current Emacs 00:01:12.040 --> 00:01:13.820 maintainers, and he and I sit down for an 00:01:13.820 --> 00:01:17.160 hour, and he just gives me his dump of what's 00:01:17.160 --> 00:01:19.400 been going on. So I'm sort of just the 00:01:19.400 --> 00:01:22.200 messenger here. But thanks to Eli for these 00:01:22.200 --> 00:01:24.400 notes and all of the efforts that he 00:01:24.400 --> 00:01:27.400 contributes. So what he's been telling me is 00:01:27.400 --> 00:01:30.060 that this Emacs 29 release that we had 00:01:30.060 --> 00:01:31.720 recently looks to have been very, 00:01:31.720 --> 00:01:33.580 very successful, which is some good news, 00:01:33.580 --> 00:01:35.420 because there were a lot of new features, 00:01:35.660 --> 00:01:37.360 and some of those features were actually 00:01:37.360 --> 00:01:39.520 quite radical. So far, 00:01:39.520 --> 00:01:40.680 it's been quite a success, 00:01:40.680 --> 00:01:42.440 no serious problems with it, 00:01:42.440 --> 00:01:44.080 and we have Emacs 29.2 00:01:45.140 --> 00:01:46.740 will be released very soon. 00:01:47.260 --> 00:01:50.020 They are thinking now about starting the 00:01:50.020 --> 00:01:53.080 Emacs 30 release cycle soon after 29.2 00:01:53.520 --> 00:01:55.880 is released, where the release branch, 00:01:55.880 --> 00:01:58.120 which is called Emacs-30 usually, 00:01:59.060 --> 00:02:01.400 will be cut and then development will become 00:02:01.400 --> 00:02:03.960 frozen with only bug fixes going into that 00:02:03.960 --> 00:02:07.200 branch. That may take quite some time until 00:02:07.200 --> 00:02:09.639 it actually comes to fruition as a release, 00:02:09.639 --> 00:02:11.660 but at least it means that the release is 00:02:11.660 --> 00:02:13.860 going to start taking shape in that branch 00:02:13.860 --> 00:02:17.720 soon. So, for now, Emacs 30 looks like maybe 00:02:17.720 --> 00:02:19.540 it's going to be a little less interesting 00:02:19.600 --> 00:02:23.160 than Emacs 29 was, meaning not a huge number 00:02:23.160 --> 00:02:25.120 of changing features. But there are still 00:02:25.120 --> 00:02:26.820 some new things going in. 00:02:26.980 --> 00:02:29.960 So 1 of them is that Emacs 30 is going to 00:02:29.960 --> 00:02:32.300 have Android support. So you will be able to 00:02:32.300 --> 00:02:34.900 run Emacs 30 on your Android devices. 00:02:35.140 --> 00:02:37.120 So if you've ever wanted to have native Emacs 00:02:37.120 --> 00:02:39.500 on a tablet, which I know I've always wanted, 00:02:40.140 --> 00:02:42.940 that will become possible with Emacs 30. 00:02:43.140 --> 00:02:45.480 There's also going to be much better support 00:02:45.480 --> 00:02:46.780 for touchscreen devices, 00:02:47.440 --> 00:02:50.260 coincidentally, both laptops and tablets. 00:02:50.740 --> 00:02:53.240 So that'll enhance that Android support. 00:02:54.860 --> 00:02:57.180 There will be some recently gained support 00:02:57.240 --> 00:03:01.720 for LLDB in GUD.dl. So if you're on a Mac OS 00:03:01.720 --> 00:03:05.580 machine or a machine that uses just LLVM as 00:03:05.580 --> 00:03:07.060 part of the compilation process, 00:03:07.400 --> 00:03:10.180 then you probably are familiar with LLDB as 00:03:10.180 --> 00:03:11.380 the command line debugger. 00:03:11.720 --> 00:03:14.940 And that support for using LLDB through a GUD 00:03:15.040 --> 00:03:17.320 will become possible in Emacs 30. 00:03:17.320 --> 00:03:19.000 I'm looking forward to this actually quite a 00:03:19.000 --> 00:03:22.620 bit as well. C Perl mode is being deprecated, 00:03:23.200 --> 00:03:25.920 and all future work now is only being put 00:03:25.920 --> 00:03:30.660 towards C Perl mode. Another 1 is that there 00:03:30.660 --> 00:03:33.000 are going to be some new major modes based on 00:03:33.000 --> 00:03:35.780 TreeSitter. They will be for the languages 00:03:35.860 --> 00:03:38.160 Lua, Elixir, and HTML. 00:03:38.800 --> 00:03:39.980 And if you're not familiar, 00:03:40.160 --> 00:03:42.620 I think TreeSitter was introduced in Emacs 00:03:42.620 --> 00:03:46.660 29. It's a library that allows you to specify 00:03:47.460 --> 00:03:49.900 the grammar of a programming language as a 00:03:49.900 --> 00:03:53.300 BNF file, and I think using JavaScript, 00:03:53.540 --> 00:03:56.600 and then with that file as input to Emacs, 00:03:56.600 --> 00:03:59.840 it is then able to do syntax highlighting, 00:04:00.940 --> 00:04:03.080 syntax discovery, all of those things within 00:04:03.080 --> 00:04:06.140 Emacs without having to use elisp and regexps 00:04:06.460 --> 00:04:08.300 to discover the structure of the language. 00:04:08.300 --> 00:04:10.440 It defers the structure gathering to 00:04:10.440 --> 00:04:13.420 TreeSitter and then uses that information to 00:04:13.420 --> 00:04:14.560 navigate the language. 00:04:15.200 --> 00:04:17.300 So, As time goes on, you'll see more and more 00:04:17.300 --> 00:04:19.540 languages taking on TreeSetter support. 00:04:19.540 --> 00:04:21.160 So the next 3 coming up, 00:04:21.160 --> 00:04:22.660 Lua, Elixir, and HTML. 00:04:24.060 --> 00:04:26.680 And then the last feature for Emacs 30 is 00:04:26.680 --> 00:04:29.860 that the byte compiler will now detect and 00:04:29.860 --> 00:04:32.920 warn about many more questionable constructs. 00:04:33.340 --> 00:04:35.300 Things like empty macro bodies, 00:04:35.740 --> 00:04:37.160 missing lexical constructs, 00:04:37.580 --> 00:04:40.220 or say, condition case without any handlers. 00:04:40.580 --> 00:04:43.340 Just silly stuff that might litter the code, 00:04:43.340 --> 00:04:45.180 but now you'll get a warning about it from 00:04:45.180 --> 00:04:46.920 the byte compiler to help you clean up the 00:04:46.920 --> 00:04:49.160 code and get rid of those potential sites of 00:04:49.160 --> 00:04:52.740 error. So this is the main thing that will be 00:04:52.740 --> 00:04:55.160 worked on for Emacs 30 and what's looked like 00:04:55.160 --> 00:04:56.400 shaping up for the release. 00:04:56.680 --> 00:04:58.940 And also, he wanted me to announce that 00:04:58.940 --> 00:05:01.340 Stefan Kongas is now a new co-maintainer. 00:05:01.980 --> 00:05:03.260 And Stefan is, I believe, 00:05:03.260 --> 00:05:05.500 here with us in the conference and he'll be 00:05:05.500 --> 00:05:07.940 able, I hope, to help me answer any questions 00:05:08.080 --> 00:05:10.120 about future Emacs development because I'm 00:05:10.120 --> 00:05:12.240 not in the heat of it and don't have all 00:05:12.240 --> 00:05:13.600 those answers at the moment. 00:05:14.580 --> 00:05:17.180 So That is all there is as far as a 00:05:17.180 --> 00:05:18.840 development update for now. 00:05:19.340 --> 00:05:21.980 And I am available to take any questions. 00:05:24.860 --> 00:05:26.200 All right. Thank you so much, 00:05:26.200 --> 00:05:29.340 Sean, for being the messenger of all this 00:05:29.340 --> 00:05:31.820 good news. I mean, you did start by saying 00:05:31.820 --> 00:05:33.480 this would not be as exciting, 00:05:33.600 --> 00:05:36.280 perhaps, as prior releases of Emacs, 00:05:36.280 --> 00:05:38.980 but you then proceeded to say a lot of stuff 00:05:38.980 --> 00:05:40.760 that it felt very exciting to me. 00:05:40.760 --> 00:05:43.620 So good, good. Glad to hear that. 00:05:44.540 --> 00:05:47.180 Right. So we do have questions coming in 00:05:47.180 --> 00:05:50.380 already and again people the link is on IRC 00:05:50.380 --> 00:05:52.120 and also on the talks page if you want to 00:05:52.120 --> 00:05:53.260 start asking questions. 00:05:53.480 --> 00:05:54.840 So John what I'm going to do I'm going to 00:05:54.840 --> 00:05:56.580 read you the questions and then you can 00:05:56.580 --> 00:05:58.300 answer them. Is that okay with you? 00:05:58.320 --> 00:06:01.620 Absolutely. So starting with the first 00:06:01.620 --> 00:06:04.440 question which changes in recent Emacs 00:06:04.440 --> 00:06:06.540 releases are you enjoying using? 00:06:08.360 --> 00:06:11.820 I have really liked the visual line mode. 00:06:13.140 --> 00:06:15.060 I'm not sure how recent that is. 00:06:15.060 --> 00:06:16.820 Some of these features I only discovered 00:06:16.840 --> 00:06:19.580 quite late, the new display line number 00:06:19.700 --> 00:06:21.380 functionality, where it's much, 00:06:21.380 --> 00:06:23.040 much, much faster, and of course, 00:06:23.040 --> 00:06:25.320 native compilation. Native compilation has 00:06:25.320 --> 00:06:27.360 been quite brilliant for some of the larger 00:06:27.360 --> 00:06:29.480 packages that I use. I do a lot of stuff in 00:06:29.480 --> 00:06:31.820 Emacs. I use GNU's, I use E-Shell, 00:06:31.820 --> 00:06:33.540 I use Org Mode quite a lot. 00:06:33.580 --> 00:06:36.100 So native compilation has brought the user 00:06:36.100 --> 00:06:39.960 experience much closer to a modern app than 00:06:39.960 --> 00:06:42.180 some of the lagging and slowness that I might 00:06:42.180 --> 00:06:43.580 have experienced in the past. 00:06:44.340 --> 00:06:47.180 Definitely. Moving on to the next question. 00:06:47.260 --> 00:06:49.200 What do you think the future in the area of 00:06:49.200 --> 00:06:51.040 artificial intelligence from the developer 00:06:51.060 --> 00:06:53.580 point of view? Could you say that 1 more 00:06:53.580 --> 00:06:54.876 time? Your voice broke up a little bit. 00:06:54.876 --> 00:06:55.025 Oh, sorry. What do you think the future in 00:06:55.025 --> 00:06:55.141 the area of artificial intelligence from the 00:06:55.141 --> 00:06:55.208 developer point of view? 00:06:55.208 --> 00:06:55.324 Could you say that 1 more time? 00:06:55.324 --> 00:06:55.440 Your voice broke up a little bit. 00:06:55.440 --> 00:06:58.100 Oh, sorry. What do you think the future in 00:06:58.100 --> 00:07:00.580 the area of artificial intelligence from the 00:07:00.580 --> 00:07:01.560 developer point of view? 00:07:01.560 --> 00:07:02.860 It's also a shaky question, 00:07:02.860 --> 00:07:04.500 I think, but you get the point. 00:07:04.960 --> 00:07:09.220 I do use chat-gpt-shell inside of Emacs quite 00:07:09.220 --> 00:07:10.920 a bit, actually, when doing development in 00:07:10.920 --> 00:07:12.440 other languages. Just the other day, 00:07:12.440 --> 00:07:15.200 I was working on my Ledger accounting 00:07:15.220 --> 00:07:18.080 program, and I haven't done a lot of C++ in 00:07:18.080 --> 00:07:21.180 recent years. So I had forgotten how to 00:07:21.180 --> 00:07:23.760 exactly compare 2 strings only up to the 00:07:23.760 --> 00:07:25.020 length of the shortest string. 00:07:25.020 --> 00:07:26.940 I know I could have cranked that out just 00:07:26.940 --> 00:07:28.740 writing it C style, but I didn't remember 00:07:28.740 --> 00:07:30.800 what the current state of the art is for C++ 00:07:30.940 --> 00:07:33.460 and the STL. So I just asked chatGPT. 00:07:33.680 --> 00:07:36.140 I asked the exact question that I just said 00:07:36.140 --> 00:07:38.220 to you and sure enough it popped out the 00:07:38.220 --> 00:07:40.080 one-liner that was exactly what I needed. 00:07:40.080 --> 00:07:42.240 So I think in terms of developer assistance, 00:07:42.800 --> 00:07:45.820 not having to keep all of standard libraries 00:07:45.860 --> 00:07:47.460 or common idioms in memory. 00:07:47.520 --> 00:07:49.460 I don't know if other people are familiar 00:07:49.480 --> 00:07:51.080 with Rosetta Stone projects. 00:07:51.460 --> 00:07:53.680 They're projects where you have say a hundred 00:07:53.680 --> 00:07:55.780 different languages and there's a particular 00:07:55.860 --> 00:07:58.640 question, say, how do I read a file and copy 00:07:58.640 --> 00:07:59.720 it to another location? 00:07:59.820 --> 00:08:01.880 And then it has an instance of doing that 00:08:01.880 --> 00:08:03.820 activity for every 1 of those languages. 00:08:04.180 --> 00:08:05.140 That's a great database, 00:08:05.140 --> 00:08:07.160 and I've used them quite a bit in the past 00:08:07.160 --> 00:08:09.260 for remembering how to do certain things, 00:08:09.440 --> 00:08:12.540 say, converting a string to UTF-8. 00:08:13.280 --> 00:08:15.660 I think that AI does a great job of 00:08:15.660 --> 00:08:17.780 completely replacing the need for databases 00:08:17.900 --> 00:08:19.920 like that because you can just ask how do I 00:08:19.920 --> 00:08:21.980 copy a convert a string to UTF-8. 00:08:23.760 --> 00:08:27.440 Yeah exactly and you know especially with 00:08:27.440 --> 00:08:30.480 languages which are tried well tried you know 00:08:30.480 --> 00:08:32.360 it's very easy to get an answer that is 00:08:32.360 --> 00:08:34.940 correct. But sometimes what I find bothersome 00:08:34.940 --> 00:08:37.460 with this type of coding, 00:08:37.460 --> 00:08:39.840 I think it's AI-aided coding, 00:08:39.840 --> 00:08:40.820 but it's still coding, 00:08:41.120 --> 00:08:43.140 is that, especially with C languages, 00:08:43.140 --> 00:08:44.240 sometimes you're going to end up with 00:08:44.240 --> 00:08:45.860 undefined behaviors and stuff like this just 00:08:45.860 --> 00:08:47.900 because other people have been doing it, 00:08:47.900 --> 00:08:50.860 not because the algorithm or the model was 00:08:50.860 --> 00:08:53.680 trained with data that dates back to 10 years 00:08:53.680 --> 00:09:00.060 ago. At the time, C++ was a little different. 00:09:00.060 --> 00:09:01.400 Anyway, I'm not here to talk, 00:09:01.400 --> 00:09:03.960 you are here to talk. Moving on to the next 00:09:03.960 --> 00:09:06.560 question. People already get to hear my voice 00:09:06.560 --> 00:09:09.640 plenty, whereas yours are much sparser. 00:09:10.520 --> 00:09:13.580 All right. So, what is the future of Emacs on 00:09:13.580 --> 00:09:16.080 macOS? I understand that there are too few 00:09:16.080 --> 00:09:17.420 developers for the platform. 00:09:17.440 --> 00:09:21.600 Is that still true? That's a good question. 00:09:21.600 --> 00:09:23.620 I don't know what the current statistics are. 00:09:23.620 --> 00:09:27.040 I've been a user of Emacs on Mac OS for 00:09:27.040 --> 00:09:29.920 decades now. It feels like the, 00:09:30.140 --> 00:09:33.480 There's also that Mac port version of Emacs, 00:09:33.480 --> 00:09:35.920 which builds Emacs more directly using the 00:09:35.920 --> 00:09:37.860 GUI libraries on the platform. 00:09:38.300 --> 00:09:40.320 That continues to be updated with every 00:09:40.320 --> 00:09:42.040 single new release that comes out. 00:09:42.620 --> 00:09:45.220 So I'd say that the support may not be as 00:09:45.220 --> 00:09:47.540 great as it is on Linux and other platforms, 00:09:47.640 --> 00:09:50.500 but to this day I haven't suffered from being 00:09:50.500 --> 00:09:55.220 a Mac user. Great. The only thing I remember 00:09:55.240 --> 00:10:00.480 about Emacs on macOS was that emojis made it 00:10:00.480 --> 00:10:03.540 inside the GUI first before they did it 00:10:03.540 --> 00:10:05.820 anywhere else. That's the 1 anecdote that I 00:10:05.820 --> 00:10:09.520 have on MacOS. Right. And historically that 00:10:09.520 --> 00:10:12.720 feature was removed in order to prevent Mac 00:10:12.720 --> 00:10:14.840 from having features that Linux did not. 00:10:15.160 --> 00:10:16.860 I didn't want to go into that point. 00:10:16.860 --> 00:10:18.340 I just wanted to mention the beginning of the 00:10:18.340 --> 00:10:19.840 anecdote and people can find it out. 00:10:19.840 --> 00:10:22.040 But yes, that's also what it led to. 00:10:24.020 --> 00:10:25.340 Moving on to the next question. 00:10:25.640 --> 00:10:28.120 Why aren't you contributing to Emacs anymore? 00:10:28.140 --> 00:10:29.360 Lack of time, I guess? 00:10:30.240 --> 00:10:31.840 Lack of time, primarily. 00:10:32.300 --> 00:10:33.840 Work has been very consuming. 00:10:33.900 --> 00:10:36.020 There are a lot of other projects and things 00:10:36.020 --> 00:10:39.000 that I like doing. I still find Emacs Lisp 00:10:39.000 --> 00:10:40.460 very, very fun to write. 00:10:40.840 --> 00:10:43.260 Just the other day, I was hacking up some 00:10:43.260 --> 00:10:45.760 extension macros for myself for org mode. 00:10:45.920 --> 00:10:48.900 But to have the time needed to sit down and 00:10:48.900 --> 00:10:51.580 design a whole new mode and work on it. 00:10:51.580 --> 00:10:53.660 I've been spending a lot of my time now in 00:10:53.660 --> 00:10:55.580 functional languages, especially theorem 00:10:55.580 --> 00:10:57.840 provers. I just find that so intellectually 00:10:58.100 --> 00:10:59.620 satisfying and interesting. 00:11:00.400 --> 00:11:01.860 Plus it pays a lot better. 00:11:01.860 --> 00:11:03.680 Never had a paying job as an Emacs list 00:11:03.680 --> 00:11:06.420 developer. So when it comes to now just being 00:11:06.420 --> 00:11:08.380 a fun language or a hobby language, 00:11:08.420 --> 00:11:10.680 it is relegated to the time that I have free 00:11:10.680 --> 00:11:13.680 when it's available. Right. 00:11:13.700 --> 00:11:15.420 Well, the good thing is that it's kind of 00:11:15.420 --> 00:11:16.360 like riding a bicycle, 00:11:16.360 --> 00:11:17.980 you know, writing a major mode, 00:11:17.980 --> 00:11:20.160 it comes back relatively quickly and still 00:11:20.160 --> 00:11:22.600 enjoyable. You know, the other day, 00:11:22.600 --> 00:11:25.200 actually, I took notes on a mode that I 00:11:25.200 --> 00:11:28.100 wanted to write. There's an app I use on the 00:11:28.100 --> 00:11:30.060 Mac called drafts, and I really love it. 00:11:30.060 --> 00:11:31.460 I use it all the time. 00:11:31.720 --> 00:11:34.600 I wanted to mimic the interface of this app 00:11:34.600 --> 00:11:37.620 in Emacs. So I could use Emacs as my drafts 00:11:37.680 --> 00:11:40.060 application rather than this separate 1. 00:11:40.440 --> 00:11:42.720 So I noted down all the different user 00:11:42.720 --> 00:11:44.580 parameters and how it should function and 00:11:44.580 --> 00:11:47.240 everything to describe the app to myself as 00:11:47.240 --> 00:11:50.320 sort of notes to get me started on that work 00:11:50.320 --> 00:11:52.460 when I did have free time to work on it. 00:11:52.540 --> 00:11:54.760 Somebody out there on the internet just saw 00:11:54.760 --> 00:11:57.040 these notes, because I keep a lot of my stuff 00:11:57.040 --> 00:11:59.680 on GitHub. They fed it to chat GPT, 00:12:00.280 --> 00:12:01.960 going back to your AI question. 00:12:02.220 --> 00:12:04.540 And they actually sent back to me a mode that 00:12:04.540 --> 00:12:06.640 implemented everything that I had said, 00:12:06.820 --> 00:12:07.740 which was effectively, 00:12:08.200 --> 00:12:10.960 chat GPT, seeing that what I had described 00:12:10.960 --> 00:12:14.500 was clear enough for it to derive most of the 00:12:14.500 --> 00:12:16.560 code that I would have wanted to write. 00:12:16.560 --> 00:12:19.200 So maybe, maybe another thing that AI can do 00:12:19.200 --> 00:12:20.880 is it can increase the value, 00:12:21.340 --> 00:12:23.400 the efficiency of my free time. 00:12:24.360 --> 00:12:26.820 Exactly. I think that's a wonderful point. 00:12:27.120 --> 00:12:29.540 And phrasing it as efficiency of free time is 00:12:29.540 --> 00:12:31.360 great because you still have the expertise, 00:12:31.360 --> 00:12:33.420 obviously, that you're mobilizing into the 00:12:33.420 --> 00:12:35.560 design that you're formulating to charge DPT, 00:12:35.860 --> 00:12:37.680 but then this expertise is turned into 00:12:37.680 --> 00:12:39.060 something that actually works. 00:12:40.080 --> 00:12:41.780 Perhaps we're all going to become software 00:12:41.780 --> 00:12:42.980 architects at some point, 00:12:42.980 --> 00:12:45.800 and then the busy work of actually coding the 00:12:45.800 --> 00:12:48.760 library and the software will be relegated to 00:12:48.760 --> 00:12:51.000 AI. That's an interesting future where we 00:12:51.000 --> 00:12:55.240 still, however, need to acquire the skills to 00:12:55.240 --> 00:12:56.660 know what is code, I suppose. 00:12:56.660 --> 00:12:58.880 But that's an interesting future to think of. 00:13:00.940 --> 00:13:02.060 A fairly long question. 00:13:02.060 --> 00:13:04.280 So 1 of the tricky things about running Emacs 00:13:04.280 --> 00:13:06.900 on Android is do you use anything that 00:13:06.900 --> 00:13:08.320 requires extra packages? 00:13:08.420 --> 00:13:11.600 Example like PDF tools with new PDF or going 00:13:11.600 --> 00:13:13.820 with a database, playing music or video with 00:13:13.820 --> 00:13:15.840 MPD or MPV on Bonga, LFeed. 00:13:16.320 --> 00:13:17.900 Do you run Emacs Termex, 00:13:18.040 --> 00:13:20.200 Emacs APK, Emacs in virtual machine? 00:13:20.200 --> 00:13:22.420 This is also the case on Emacs for Windows to 00:13:22.420 --> 00:13:23.980 a lesser degree. So summarizing, 00:13:24.280 --> 00:13:27.240 how do you make Emacs work on Android if you 00:13:27.240 --> 00:13:30.040 do not have the synergy of stuff that you 00:13:30.040 --> 00:13:32.560 usually find on Linux systems like MPV and 00:13:32.560 --> 00:13:34.420 all the fancy applications like this? 00:13:35.340 --> 00:13:38.380 It's a good question. Since I'm not an 00:13:38.380 --> 00:13:40.460 Android user and I've never tried running 00:13:40.460 --> 00:13:42.020 Emacs on Android platforms, 00:13:42.100 --> 00:13:44.920 I'm not sure what's available out there to 00:13:44.920 --> 00:13:46.440 plug Emacs into. I mean, 00:13:46.440 --> 00:13:48.160 effectively, that question comes down to 00:13:48.160 --> 00:13:50.420 external dependencies and system support. 00:13:50.940 --> 00:13:53.320 That would be a great question for Stefan or 00:13:53.320 --> 00:13:55.740 somebody who has tried using Emacs, 00:13:56.200 --> 00:13:58.600 the development version of Emacs on Android. 00:14:00.660 --> 00:14:03.980 Great. We'll put a pin in this for Stéphane 00:14:04.540 --> 00:14:07.580 afterwards. Great, so moving on to the next 00:14:07.580 --> 00:14:09.860 question. Will Org Tech someday become the 00:14:09.860 --> 00:14:11.320 default tech mode in Emacs? 00:14:11.320 --> 00:14:14.880 And if so, when? Will Org what become? 00:14:15.240 --> 00:14:17.980 Org Tech, you know, the LaTeX mode. 00:14:19.120 --> 00:14:24.840 I do not know. It's been a while since I've 00:14:24.840 --> 00:14:26.880 done LaTeX. It must have been like 4 years, 00:14:26.880 --> 00:14:30.280 but it was a pretty, the major mode for 00:14:30.280 --> 00:14:32.560 editing documents, like the state of the art 00:14:32.560 --> 00:14:34.840 for editing latex documents in Emacs. 00:14:34.940 --> 00:14:36.320 And apparently it's not default. 00:14:36.340 --> 00:14:38.360 I assume there's latex mode or something that 00:14:38.360 --> 00:14:41.580 is doing it. So were you saying octech, 00:14:41.760 --> 00:14:45.020 like A-U-C tech? Oh, did I not pronounce the 00:14:45.020 --> 00:14:48.140 C? Octech, yes. I thought you said org tech. 00:14:48.140 --> 00:14:49.620 I wasn't familiar with that. 00:14:50.280 --> 00:14:52.540 Octech is the only 1 I've ever used. 00:14:52.640 --> 00:14:55.360 I know there is a built-in LaTeX mode, 00:14:55.580 --> 00:14:57.240 but I've never used it. 00:14:57.240 --> 00:14:59.140 I always just download whatever the latest 00:14:59.140 --> 00:15:01.160 version of Org Tech is and use that. 00:15:01.280 --> 00:15:03.840 I don't know why it's not a standard package. 00:15:03.840 --> 00:15:07.360 Becoming a standard package has its own costs 00:15:07.360 --> 00:15:09.860 for the development cycle because it slows 00:15:09.860 --> 00:15:11.740 down release cycle quite a bit. 00:15:12.120 --> 00:15:14.680 It's now you have to create PRs that are 00:15:14.680 --> 00:15:17.240 reviewed by the Emacs Devel mailing list. 00:15:17.620 --> 00:15:19.340 It is a little more inertia. 00:15:19.340 --> 00:15:21.680 Of course, it gets you more distribution 00:15:21.940 --> 00:15:24.020 because it's a default package now, 00:15:24.020 --> 00:15:26.100 and everybody can be using that. 00:15:26.140 --> 00:15:28.600 But it's not something every developer 00:15:28.660 --> 00:15:31.400 decides to do. It took a few years, 00:15:31.400 --> 00:15:34.620 in fact, to get usePackage into Emacs core. 00:15:34.660 --> 00:15:37.200 And that only happened after it was so stable 00:15:37.200 --> 00:15:39.360 that it really wasn't receiving many changes 00:15:39.360 --> 00:15:44.760 anymore. Yeah, yeah it's it's the thing when 00:15:44.760 --> 00:15:46.720 you move into core you lose a lot of your 00:15:46.720 --> 00:15:49.280 agility in terms of how you're writing the 00:15:49.280 --> 00:15:50.940 code or how you expand code. 00:15:51.300 --> 00:15:54.220 That's why you have this vibrant community on 00:15:54.220 --> 00:15:57.680 Melpa compared to core but you know it 00:15:57.740 --> 00:15:59.480 doesn't necessarily ought to be this way it 00:15:59.480 --> 00:16:02.320 could be a little different you know And it 00:16:02.320 --> 00:16:04.580 feels like there's this repetition between 00:16:04.760 --> 00:16:06.820 repartition, sorry, between people developing 00:16:06.820 --> 00:16:08.600 for the core of Emacs and people developing 00:16:08.600 --> 00:16:10.760 on Melpa, but at the end of the day those 2 00:16:10.760 --> 00:16:13.020 groups are constantly talking to 1 another 00:16:13.180 --> 00:16:15.240 and taking cues from 1 another as well. 00:16:15.240 --> 00:16:17.540 So that's great. And there's of course... 00:16:18.820 --> 00:16:21.880 May I jump in about this particular question 00:16:21.900 --> 00:16:25.080 because I think I mean You know, 00:16:25.080 --> 00:16:27.540 Org Mode doesn't really have any problems 00:16:27.540 --> 00:16:29.380 with releases Correct. 00:16:29.380 --> 00:16:32.820 Just because it's distributed with Emacs so 00:16:32.860 --> 00:16:35.020 there is a difference between being in the 00:16:35.020 --> 00:16:37.960 core proper and being distributed with Emacs. 00:16:38.520 --> 00:16:40.080 And for something like use packages, 00:16:40.080 --> 00:16:42.280 it's really necessary to be in the core. 00:16:42.600 --> 00:16:44.840 But for something like major mode, 00:16:45.060 --> 00:16:48.740 it's a bit easier. That's a very very good 00:16:48.740 --> 00:16:50.400 point. Yeah, I'd forgotten about that 00:16:50.400 --> 00:16:53.000 distinction. Org mode does advance pretty 00:16:53.000 --> 00:16:55.900 rapidly and then it makes releases into the 00:16:55.900 --> 00:16:59.640 core distribution. Gianni, 00:16:59.640 --> 00:17:01.480 I believe you also wanted to say something 00:17:01.480 --> 00:17:03.840 before someone started jumped in with a 00:17:03.840 --> 00:17:08.700 question do you happen to remember okay 00:17:08.700 --> 00:17:12.020 that's fine I lost her to lost to their time 00:17:12.560 --> 00:17:14.560 I'll be moving on to the next question then 00:17:15.700 --> 00:17:17.460 and by the way feel free to interrupt us you 00:17:17.460 --> 00:17:19.619 know The whole point of this discussion is 00:17:19.619 --> 00:17:21.140 for you to ask questions to John Wheatley. 00:17:21.140 --> 00:17:23.520 So whether it be via the other pad or via 00:17:23.520 --> 00:17:26.180 BBB, choose your weapon. 00:17:27.260 --> 00:17:28.820 All right, moving on to the next question in 00:17:28.820 --> 00:17:30.520 the meantime. And we have about 7 minutes 00:17:30.520 --> 00:17:32.760 left of Q&A and then we'll be moving on to 00:17:32.760 --> 00:17:35.780 Stéphane. So, do you use other IDEs for 00:17:35.780 --> 00:17:38.040 theorem proving work, notably VS Code for 00:17:38.040 --> 00:17:42.340 Lean? Which languages and provers can or do 00:17:42.340 --> 00:17:45.920 you use Emacs for? I've only used Emacs. 00:17:46.120 --> 00:17:49.840 I've used Emacs for working with ACL 2, 00:17:49.960 --> 00:17:53.480 Coq, Agda, and Lean, and I really love 00:17:53.480 --> 00:17:55.680 Proof-General. Coq is my favorite language to 00:17:55.680 --> 00:17:57.740 be working in. Agda has really great support 00:17:57.740 --> 00:17:59.540 as well, has a very nice Emacs mode. 00:17:59.540 --> 00:18:02.920 I'm only just now starting to get into Lean 00:18:02.920 --> 00:18:05.140 4. So I have everything installed, 00:18:05.280 --> 00:18:07.240 but I haven't really started coding in 00:18:07.240 --> 00:18:08.800 earnest. I'm still reading a lot of the 00:18:08.800 --> 00:18:10.920 tutorials and learning a bit about the 00:18:10.920 --> 00:18:13.440 language. There was a while there where I 00:18:13.440 --> 00:18:17.540 used a IDE for ACL 2 that was outside of 00:18:17.540 --> 00:18:19.920 Emacs, only because it was the same IDE all 00:18:19.920 --> 00:18:22.040 my co-workers were using and it was easier to 00:18:22.040 --> 00:18:24.240 share tips and tricks with them. 00:18:24.520 --> 00:18:28.240 But yeah, no, I found Emacs to be a great 00:18:28.240 --> 00:18:29.860 home for doing theorem proving. 00:18:32.120 --> 00:18:36.580 Right. Next question. Can we see that AI 00:18:36.580 --> 00:18:40.760 generated draft? You know what you mentioned 00:18:40.760 --> 00:18:43.420 before about the draft that you then fed into 00:18:43.420 --> 00:18:45.480 ChargPT? Do you happen to have this draft 00:18:45.480 --> 00:18:51.440 anywhere? Let me see if it's still on GitHub. 00:18:51.760 --> 00:18:54.300 Just take me 1 second to take a look here. 00:18:55.260 --> 00:18:59.820 Take your time. The problem is I don't quite 00:18:59.820 --> 00:19:01.820 remember where I made the note. 00:19:04.700 --> 00:19:07.260 But no, I don't see it on GitHub, 00:19:07.340 --> 00:19:09.840 so I don't have it readily at hand. 00:19:10.580 --> 00:19:13.240 Well, that's fine. We'll be able to... 00:19:13.520 --> 00:19:15.060 Well, if you happen to find it, 00:19:15.060 --> 00:19:17.280 we'll make sure to add it on the pad and then 00:19:17.280 --> 00:19:20.940 on the talks page. And I think we would all 00:19:20.940 --> 00:19:22.440 be interested to see what this design 00:19:22.440 --> 00:19:27.160 document that actually made something work 00:19:27.160 --> 00:19:28.980 afterwards in JudgeDPT with Elisp. 00:19:28.980 --> 00:19:30.720 I'm very interested to see what it would do 00:19:30.720 --> 00:19:32.720 because I tend to be very interested about 00:19:32.720 --> 00:19:34.780 this type of stuff I had generated but I 00:19:34.780 --> 00:19:36.860 never thought about doing it with Elisp 00:19:37.040 --> 00:19:39.000 because somehow it feels like 2 different 00:19:39.000 --> 00:19:41.020 worlds, like Elisp is kind of from the past, 00:19:41.260 --> 00:19:44.040 don't going me wrong, I love it and I use it 00:19:44.140 --> 00:19:46.920 every day But it's 2 different parts of my 00:19:46.920 --> 00:19:48.820 brain that I didn't think about linking. 00:19:48.820 --> 00:19:51.100 So I'd be very excited to see this as well. 00:19:53.040 --> 00:19:54.640 Moving on to the next question. 00:19:54.640 --> 00:19:56.980 Oh, go on, please. I did find it. 00:19:57.260 --> 00:20:01.080 I'm gonna have to give it to you as a link 00:20:01.080 --> 00:20:03.380 here. Sure, you can do it on the blue button 00:20:03.380 --> 00:20:05.900 and I'll put it on the pad. 00:20:10.160 --> 00:20:12.540 I put it into the public chat for Bibi. 00:20:12.960 --> 00:20:15.920 Yes. So if anyone is interested, 00:20:15.920 --> 00:20:18.280 I'm putting it right in the answer to the 00:20:18.280 --> 00:20:20.200 question right here on my screen. 00:20:20.200 --> 00:20:22.120 So feel free to click on it and explore it. 00:20:22.120 --> 00:20:23.680 I'm kind of curious, so I'm gonna... 00:20:23.680 --> 00:20:25.560 Can I click it on stream and can we look at 00:20:25.560 --> 00:20:26.620 it a little bit together? 00:20:26.740 --> 00:20:29.020 Sure, sure. I haven't tried running it, 00:20:29.020 --> 00:20:31.680 I can't say for its fitness, 00:20:31.680 --> 00:20:34.220 but it's definitely enough of the groundwork 00:20:34.400 --> 00:20:36.660 done that it's absolutely an assistance. 00:20:38.100 --> 00:20:40.260 Right. Okay, so it's loading up right now? 00:20:41.540 --> 00:20:42.620 You can see my webcam, 00:20:42.620 --> 00:20:45.680 right? I can see your browser attempting to 00:20:45.680 --> 00:20:47.360 load. There we go. Okay, 00:20:47.360 --> 00:20:50.060 cool. So I'm not sure what GitHub is doing. 00:20:50.060 --> 00:20:51.460 Let me give it a little more room. 00:20:51.460 --> 00:20:54.360 The reactive setup is not working too well. 00:20:57.260 --> 00:20:58.840 Oh, I see. You're viewing the... 00:20:59.540 --> 00:21:02.220 I see. Can I see the file then? 00:21:02.220 --> 00:21:04.020 I should be able to see the file. 00:21:06.460 --> 00:21:09.060 I think he just mentions the code in that 00:21:09.060 --> 00:21:11.640 comment. So if there's a way to view only the 00:21:11.640 --> 00:21:14.897 comment it would make it clear. 00:21:14.897 --> 00:21:16.660 Right. Okay. I'm loading the file separately. 00:21:17.320 --> 00:21:18.500 I'm checking the time. 00:21:18.740 --> 00:21:21.340 We have about 3 minutes left and I think we 00:21:21.340 --> 00:21:22.900 have a question. In the meantime, 00:21:22.900 --> 00:21:25.760 whilst I show this, I'm gonna launch another 00:21:25.760 --> 00:21:28.820 question, which was about Drafts. 00:21:29.440 --> 00:21:30.740 You are carrying, you're talking about 00:21:30.740 --> 00:21:32.480 Drafts, but does that mean you're not using 00:21:32.480 --> 00:21:35.920 org anymore? Oh, no, I use org all the time. 00:21:35.920 --> 00:21:38.100 In fact, the way that I've configured drafts 00:21:38.160 --> 00:21:40.580 is that after I type the thing in the note 00:21:40.580 --> 00:21:43.260 into drafts, I hit a key and it creates an 00:21:43.260 --> 00:21:45.420 org mode capture item for it. 00:21:45.540 --> 00:21:48.560 The reason why I use Drafts instead of Emacs 00:21:48.560 --> 00:21:50.660 is because it's always available. 00:21:51.100 --> 00:21:53.960 If Emacs is currently doing some job for me, 00:21:53.960 --> 00:21:56.340 say I'm running some long-running subshell 00:21:57.060 --> 00:21:59.440 and the UI is frozen up whatnot, 00:21:59.700 --> 00:22:02.360 Drafts is always 100% of the time instantly 00:22:02.360 --> 00:22:04.900 available. So that's why I tend to then lean 00:22:04.900 --> 00:22:07.920 on it a bit, but all of the destination of 00:22:07.920 --> 00:22:10.240 that data is still Org Mode and everything 00:22:10.240 --> 00:22:12.460 that I do gets tracked through Org Mode. 00:22:13.080 --> 00:22:16.160 That's also why I wanted to implement the UI 00:22:16.160 --> 00:22:18.800 scheme of drafts in Emacs so that I could 00:22:18.800 --> 00:22:20.860 drop the use of this external application. 00:22:21.540 --> 00:22:23.160 And then, I mean, I would still have the 00:22:23.160 --> 00:22:25.580 problem of sometimes Emacs being unavailable, 00:22:26.060 --> 00:22:30.040 but I would pay that price in order to have 00:22:30.040 --> 00:22:32.700 that good UI of drafts inside Emacs. 00:22:34.640 --> 00:22:37.700 Great. I think we have, 00:22:38.420 --> 00:22:39.720 we might be too tight on time. 00:22:39.720 --> 00:22:41.640 We only have about 2 minutes and I need to 00:22:41.640 --> 00:22:44.180 jump room to go into Stephane's room as well. 00:22:44.440 --> 00:22:47.380 So John, where I get to thank you so much for 00:22:47.380 --> 00:22:53.160 taking the time to answer our questions, 00:22:53.260 --> 00:22:55.040 but also doing a little bit of reporting on 00:22:55.040 --> 00:22:58.380 the state of Emacs. And now we'll get to 00:22:58.380 --> 00:22:59.280 continue this with Stéphane. 00:22:59.280 --> 00:23:01.300 So do you have any last words for everyone, 00:23:01.300 --> 00:23:03.660 John? No, no. I look forward to hearing 00:23:03.660 --> 00:23:06.420 Stéphane speak. Okay, great. 00:23:06.420 --> 00:23:07.360 And we'll look forward, 00:23:07.360 --> 00:23:09.300 potentially, to having you again next year, 00:23:10.520 --> 00:23:12.680 potentially still doing news like this, 00:23:12.980 --> 00:23:15.920 and, fingers crossed, maybe having you live 00:23:15.920 --> 00:23:18.660 again. Maybe, maybe let's see what happens. 00:23:19.700 --> 00:23:20.860 All right, John. Thank you so much. 00:23:20.860 --> 00:23:22.280 Bye bye. Bye bye.