WEBVTT captioned by amitav NOTE Introduction 00:00:01.040 --> 00:00:03.079 Hi, I'm Andrew Hyatt. 00:00:03.080 --> 00:00:09.399 I'm going to talk to you today about Emacs and AI, 00:00:09.400 --> 00:00:10.879 and where things are right now 00:00:10.880 --> 00:00:12.119 in the world of Emacs and AI, 00:00:12.120 --> 00:00:14.159 via large language models, 00:00:14.160 --> 00:00:16.999 and where things might be going, 00:00:17.000 --> 00:00:22.699 and what it means for the future of Emacs. 00:00:22.700 --> 00:00:27.279 I think what we're seeing with Emacs is interesting. 00:00:27.280 --> 00:00:29.399 We've seen a lot of different things 00:00:29.400 --> 00:00:31.559 come around in the past year, 00:00:31.560 --> 00:00:33.119 in the past several years. 00:00:33.120 --> 00:00:35.079 There's lots of different solutions. 00:00:35.080 --> 00:00:36.759 But in the past year, things have been very interesting. 00:00:36.760 --> 00:00:39.679 I think there's new and interesting questions 00:00:39.680 --> 00:00:43.279 about what does it mean to use Emacs? 00:00:43.280 --> 00:00:45.479 What does it mean to use any editor? 00:00:45.480 --> 00:00:47.279 I'm going to be talking about Emacs, 00:00:47.280 --> 00:00:50.359 and I'm going to show you various Emacs packages 00:00:50.360 --> 00:00:53.079 as demonstrations of these ideas. 00:00:53.080 --> 00:00:59.839 But there's the general question of 00:00:59.840 --> 00:01:03.719 what does it mean to use any editor, not just Emacs? 00:01:03.720 --> 00:01:06.239 What does it mean to do work? 00:01:06.240 --> 00:01:10.719 And I think the industry in general is facing these challenges 00:01:10.720 --> 00:01:13.279 of we don't really know where things are going to end up, 00:01:13.280 --> 00:01:16.919 but we do know the direction they're going. 00:01:16.920 --> 00:01:20.039 Emacs is a reflection of that. 00:01:20.040 --> 00:01:23.239 I think the answer for Emacs might be 00:01:23.240 --> 00:01:25.719 a little bit different than everything else, 00:01:25.720 --> 00:01:28.599 but I do want to show you what's out there 00:01:28.600 --> 00:01:33.319 so we can explore what are the possibilities 00:01:33.320 --> 00:01:41.119 of Emacs, AI, and generally how we get things done. 00:01:41.120 --> 00:01:44.719 Thanks. Let's dive right into it. NOTE Copilot 00:01:44.720 --> 00:01:48.079 We're going to start by showing you 00:01:48.080 --> 00:01:51.039 some things that are pretty well integrated, 00:01:51.040 --> 00:01:55.279 that look a lot like what you see in Emacs 00:01:55.280 --> 00:01:58.679 and fit in with the kinds of editing 00:01:58.680 --> 00:02:02.639 that you normally do in Emacs. 00:02:02.640 --> 00:02:06.579 So this is just kind of like, it's well integrated. 00:02:06.580 --> 00:02:08.779 So we're going to talk about Copilot and Semext. 00:02:08.780 --> 00:02:12.679 Copilot is by Microsoft via GitHub, 00:02:12.680 --> 00:02:14.759 and Semext is just my personal demo, 00:02:14.760 --> 00:02:18.039 but they're both showing you, you know, 00:02:18.040 --> 00:02:24.399 this kind of thing. Let's start with Copilot. 00:02:24.400 --> 00:02:31.919 Let's try out Copilot on just a standard bit of Elisp. 00:02:31.920 --> 00:02:38.439 We're going to write a Fibonacci function. 00:02:38.440 --> 00:02:43.079 Let's try out Emacs on a standard bit of Elisp. 00:02:43.080 --> 00:02:49.279 We're going to write a Fibonacci function. 00:02:49.280 --> 00:02:53.159 And you can see like as soon as we even start typing it, 00:02:53.160 --> 00:02:56.339 we get everything as a completion. 00:02:56.340 --> 00:02:59.879 So you can just press Tab here, 00:02:59.880 --> 00:03:02.159 and you've just completed 00:03:02.160 --> 00:03:06.799 a significant bunch of Emacs Lisp code. 00:03:06.800 --> 00:03:09.919 It will do this no matter where you are. 00:03:09.920 --> 00:03:14.799 So, pretty useful. It will just keep suggesting things. 00:03:14.800 --> 00:03:16.439 Do you want to do this? 00:03:16.440 --> 00:03:17.479 I'm not sure. 00:03:17.480 --> 00:03:22.839 But it usually is offering pretty reasonable things. 00:03:22.840 --> 00:03:29.299 So you could do this with code, 00:03:29.300 --> 00:03:32.119 of course, any code. 00:03:32.120 --> 00:03:33.919 You don't really even have to have a mode for it, right? 00:03:33.920 --> 00:03:36.679 That's kind of the beauty of AI is that 00:03:36.680 --> 00:03:38.519 you don't need any Emacs functionality for this, 00:03:38.520 --> 00:03:39.519 except for Copilot. 00:03:39.520 --> 00:03:41.679 It doesn't need to know the structure of your code. 00:03:41.680 --> 00:03:45.279 It doesn't need anything except for the text itself 00:03:45.280 --> 00:03:51.239 and whatever AI integration that this is. 00:03:51.240 --> 00:03:53.739 We can look at, you can do the same thing with Org-mode. 00:03:53.740 --> 00:03:57.999 So we could say create, no, 00:03:58.000 --> 00:04:02.919 how about let's, let's do, you know, spring cleaning. 00:04:02.920 --> 00:04:10.839 It's actually the fall, but still we'll say spring cleaning. 00:04:10.840 --> 00:04:12.767 And it'll start suggesting things that, you know, 00:04:12.768 --> 00:04:15.439 maybe at first, it doesn't really know what to do to 00:04:15.440 --> 00:04:16.433 clean up all code. 00:04:16.434 --> 00:04:18.400 It thinks I need to clean up code, but no, 00:04:18.401 --> 00:04:21.839 this is going to be actual, you know, 00:04:21.840 --> 00:04:31.567 clean hood over range. Clean out pantry. 00:04:31.568 --> 00:04:33.879 These are all really reasonable suggestions. 00:04:33.880 --> 00:04:38.319 You just keep going here. NOTE Semext 00:04:38.320 --> 00:04:40.559 I'm going to demonstrate Semext, 00:04:40.560 --> 00:04:43.879 which is a package I have on GNU Elpa, 00:04:43.880 --> 00:04:48.719 that is designed to integrate AI in a very Emacs-like way. 00:04:48.720 --> 00:04:50.999 And so what you could do is you could do a 00:04:51.000 --> 00:04:54.799 semext-search-forward. 00:04:54.800 --> 00:04:58.719 The UI looks just like other Emacs commands, 00:04:58.720 --> 00:05:02.379 but you can search for anything. 00:05:02.380 --> 00:05:06.279 There's really no way to express what I'm about to, 00:05:06.280 --> 00:05:08.679 what I'm trying to demonstrate 00:05:08.680 --> 00:05:12.359 in Emacs's normal search commands. 00:05:12.360 --> 00:05:15.399 You could really ask for anything. 00:05:15.400 --> 00:05:18.759 And it takes a little while, which is not Emacs-like, 00:05:18.760 --> 00:05:20.033 but everything else is sort of like 00:05:20.034 --> 00:05:21.719 it's designed to be like Emacs, 00:05:21.720 --> 00:05:23.519 except way more powerful. 00:05:23.520 --> 00:05:27.119 You don't need any mode to be active for this. 00:05:27.120 --> 00:05:32.039 You just need the library 00:05:32.040 --> 00:05:34.759 and an AI provider of some sort, either locally 00:05:34.760 --> 00:05:41.199 or, you know, your favorite cloud provider. NOTE Integrated AI experiences: gptel, ellama, chatgpt-shell, etc. 00:05:41.200 --> 00:05:43.679 Now we're going to move on to a different way 00:05:43.680 --> 00:05:46.399 of interacting with AI and Emacs. 00:05:46.400 --> 00:05:52.319 This way is less like the normal editing experience. 00:05:52.320 --> 00:05:56.999 So you lose some familiarity. However, in exchange, 00:05:57.000 --> 00:05:58.079 it is a lot more powerful. 00:05:58.080 --> 00:06:00.119 And there's a whole suite of these tools. 00:06:00.120 --> 00:06:02.479 I'm going to demonstrate gptel, 00:06:02.480 --> 00:06:05.779 which is the most popular one. 00:06:05.780 --> 00:06:06.399 But there are many. 00:06:06.400 --> 00:06:08.479 And I think different people have 00:06:08.480 --> 00:06:11.759 their own preferences of what they like to use. 00:06:11.760 --> 00:06:12.999 We're going to try now something 00:06:13.000 --> 00:06:15.079 that is a step away from just editing. 00:06:15.080 --> 00:06:19.839 And we're going to, I'm actually using gptel. 00:06:19.840 --> 00:06:22.799 There are several packages that are going to be 00:06:22.800 --> 00:06:25.959 doing the same sort of thing as I'm going to show you. 00:06:25.960 --> 00:06:29.999 gptel has sort of become the most popular one. 00:06:30.000 --> 00:06:32.199 So that's why I'm showing that to you. 00:06:32.200 --> 00:06:39.319 But let's just highlight everything and say gptel rewrite. 00:06:39.320 --> 00:06:42.399 And gptel basically just has a few things. 00:06:42.400 --> 00:06:45.119 There's different ways of thinking about this. 00:06:45.120 --> 00:06:49.999 With just a few very configurable menus, 00:06:50.000 --> 00:06:53.959 you can do a large variety of things. 00:06:53.960 --> 00:06:59.819 So let's give rewrite instructions. 00:06:59.820 --> 00:07:06.600 "Turn this into an iterative program 00:07:06.601 --> 00:07:12.199 instead of a recursive program." 00:07:12.200 --> 00:07:17.799 In Elisp, you really should not be using recursion. 00:07:17.800 --> 00:07:20.359 So we could say "return to be ready". 00:07:20.360 --> 00:07:21.119 Do we accept it? 00:07:21.120 --> 00:07:24.519 Yes, we accept it. Or we could iterate and say, no, no, 00:07:24.520 --> 00:07:26.799 that's not what we meant. We meant something else. 00:07:26.800 --> 00:07:29.159 Or you did something a little something wrong. 00:07:29.160 --> 00:07:29.879 Please fix it. 00:07:29.880 --> 00:07:31.879 So this is all very powerful. 00:07:31.880 --> 00:07:33.799 Is this editing? 00:07:33.800 --> 00:07:40.279 Well, it's in the editor. 00:07:40.280 --> 00:07:42.759 You could do this while editing, while deleting, 00:07:42.760 --> 00:07:44.959 you could be doing some sort of traditional editing. 00:07:44.960 --> 00:07:47.679 And then this, which is editing 00:07:47.680 --> 00:07:48.919 in the sense that it's in your editor, 00:07:48.920 --> 00:07:51.039 you might have to highlight 00:07:51.040 --> 00:07:52.799 some parts of the file and do things, 00:07:52.800 --> 00:07:54.719 but generally you don't even need to, 00:07:54.720 --> 00:07:59.879 or you go to a spot and you say, put code at this spot. 00:07:59.880 --> 00:08:01.959 It's kind of like editing. 00:08:01.960 --> 00:08:05.839 I would say it's not exactly editing, 00:08:05.840 --> 00:08:10.159 but it's at least something that must happen in an editor 00:08:10.160 --> 00:08:12.359 and it's well integrated into Emacs. 00:08:12.360 --> 00:08:14.759 As you can tell, it used very sort of 00:08:14.760 --> 00:08:18.239 modern standard Emacs UI paradigms 00:08:18.240 --> 00:08:20.759 and it's all written in Elisp. 00:08:20.760 --> 00:08:23.779 Everything is happening in Elisp here. 00:08:23.780 --> 00:08:25.959 So this is just very much an Emacs experience. 00:08:25.960 --> 00:08:27.679 It's just not exactly editing 00:08:27.680 --> 00:08:29.879 because the thing doing the editing 00:08:29.880 --> 00:08:32.519 is the AI and not you. 00:08:32.520 --> 00:08:36.039 You're just kind of telling it what to do. NOTE Outside the editor 00:08:36.040 --> 00:08:41.119 Now we're going to go and look at a way of interaction 00:08:41.120 --> 00:08:43.239 that's even more powerful 00:08:43.240 --> 00:08:46.279 and even more disconnected from the normal editing experience. 00:08:46.280 --> 00:08:47.919 In fact, it's so disconnected 00:08:47.920 --> 00:08:52.399 that most people are using this without an editor. 00:08:52.400 --> 00:08:57.879 These are things like Claude Code 00:08:57.880 --> 00:09:01.079 or the sort of open source equivalent, Aider. 00:09:01.080 --> 00:09:05.039 There's a few other things that follow this pattern as well. 00:09:05.040 --> 00:09:07.479 But it's very interesting in the sense 00:09:07.480 --> 00:09:09.839 that while you can integrate these with the editors, 00:09:09.840 --> 00:09:12.039 and I'm going to show you an Emacs integration, 00:09:12.040 --> 00:09:13.519 you don't need to. 00:09:13.520 --> 00:09:16.939 And that's not the way most people are using them. 00:09:16.940 --> 00:09:19.759 And I find it very interesting that sort of 00:09:19.760 --> 00:09:23.719 we're going back kind of full circle where, you know, 00:09:23.720 --> 00:09:31.959 in the 1960s or 70s, we were using Ed from the terminal 00:09:31.960 --> 00:09:35.639 to edit files, but then we created editors, 00:09:35.640 --> 00:09:37.959 and that was a really good idea. 00:09:37.960 --> 00:09:40.167 It is a lot easier to edit files 00:09:40.168 --> 00:09:42.499 when you have an actual UI. 00:09:42.500 --> 00:09:46.879 But now it's 2025, and we're back in the terminal, 00:09:46.880 --> 00:09:50.799 and we're editing files through the terminal, 00:09:50.800 --> 00:09:53.599 and you know what, it's great, 00:09:53.600 --> 00:09:56.899 but I think it's even better with Emacs. 00:09:56.900 --> 00:10:00.279 On the other hand, it comes with some trade-offs, 00:10:00.280 --> 00:10:04.733 as you can see, as we will see. NOTE Outside Experiences: claude-code.el, aidermacs, eca 00:10:04.734 --> 00:10:07.467 Okay, we're going to look at 00:10:07.468 --> 00:10:20.320 [audio glitch] Claude Code IDE, aidermacs, ECA. 00:10:20.321 --> 00:10:22.639 Last time, I didn't show you all the variants. 00:10:22.640 --> 00:10:26.839 I do want to show you eca, which points to, 00:10:26.840 --> 00:10:29.799 it is a very similar tool in what it does, 00:10:29.800 --> 00:10:32.739 but does have a different 00:10:32.740 --> 00:10:37.239 and I think better type of Emacs integration. 00:10:37.240 --> 00:10:42.599 All right, we're going to demonstrate Claude Code IDE, 00:10:42.600 --> 00:10:46.839 which is one of three Claude Code packages. 00:10:46.840 --> 00:10:47.719 It's a bit confusing. 00:10:47.720 --> 00:10:52.039 One of them will be demoed by another presenter 00:10:52.040 --> 00:10:54.639 at the Emacs conference, so stay tuned for that. 00:10:54.640 --> 00:10:56.439 Here I'm just going to give you a little taste 00:10:56.440 --> 00:10:58.759 of what these packages look like. 00:10:58.760 --> 00:11:03.339 So if we say Claude Code IDE, 00:11:03.340 --> 00:11:06.839 it presents us with basically 00:11:06.840 --> 00:11:09.039 almost exactly what you would get 00:11:09.040 --> 00:11:11.519 when you're running this in the terminal. 00:11:11.520 --> 00:11:13.933 And essentially there's a terminal interface. 00:11:13.934 --> 00:11:16.659 You can see that there's a vterm. 00:11:16.660 --> 00:11:20.699 But here we're going to say, "In scratch.el"... 00:11:20.700 --> 00:11:23.400 let's say what we want to happen. 00:11:23.401 --> 00:11:32.133 [In scratch.el, there is a fibonacci function. 00:11:32.134 --> 00:11:39.567 Can you add all normal elisp headers 00:11:39.568 --> 00:11:43.859 and footers to this file?] 00:11:43.860 --> 00:11:45.840 So, we just say what's going to happen, 00:11:45.841 --> 00:11:48.399 and this is going to do things in the background. 00:11:48.400 --> 00:11:50.979 It's not going to do things through Emacs. 00:11:50.980 --> 00:11:54.079 That said, there is an integration with Emacs, 00:11:54.080 --> 00:12:00.659 so that it can do things like show you these nice ediffs. 00:12:00.660 --> 00:12:03.199 My screen is not really wide enough 00:12:03.200 --> 00:12:04.699 to show you a really great ediff here, 00:12:04.700 --> 00:12:06.239 but you can kind of see what it's doing, 00:12:06.240 --> 00:12:09.079 and you can see, yeah, that looks good, 00:12:09.080 --> 00:12:14.120 so you could say yes, yes, accept the changes, 00:12:14.121 --> 00:12:25.299 and if we... Just need to revert the buffer. 00:12:25.300 --> 00:12:28.459 We can quit the printout of this. 00:12:28.460 --> 00:12:33.019 We see that it just did everything I asked it to. 00:12:33.020 --> 00:12:36.139 Is everything exactly right? 00:12:36.140 --> 00:12:39.159 Probably not. It's reasonable for a start though. 00:12:39.160 --> 00:12:40.959 But you could ask it to do anything. 00:12:40.960 --> 00:12:45.339 You could say, write unit tests for this, and it will. 00:12:45.340 --> 00:12:49.019 You could say, write me a suite of functions 00:12:49.020 --> 00:12:52.579 like Fibonacci, and it'll probably do something reasonable. 00:12:52.580 --> 00:12:54.900 But you can see this is not editing. 00:12:54.901 --> 00:12:58.659 There's nothing editing-like about this. 00:12:58.660 --> 00:13:07.159 That said, there is something that is editing. 00:13:07.160 --> 00:13:08.599 You need to give it instructions. 00:13:08.600 --> 00:13:10.959 You need to tell it what to do. NOTE Org files 00:13:10.960 --> 00:13:19.619 And what you could do is... You could have a project.org, 00:13:19.620 --> 00:13:23.899 and what you could do is you could have functions. 00:13:23.900 --> 00:13:26.659 The way I've done things often is .... 00:13:26.660 --> 00:13:28.439 You could say something like, 00:13:28.440 --> 00:13:36.199 unit tests for Fibonacci. How do you spell Fibonacci? 00:13:36.200 --> 00:13:40.479 I don't remember. But then you could say that this is, 00:13:40.480 --> 00:13:47.159 you could clock it, basically. org-clock. 00:13:47.160 --> 00:13:48.879 What I've done is... 00:13:48.880 --> 00:13:50.399 You could add custom commands to Claude Code, 00:13:50.400 --> 00:13:53.119 and you could just say, look, here's my Org file, 00:13:53.120 --> 00:13:57.879 read it and do the thing that I'm clocked in as. 00:13:57.880 --> 00:14:01.159 And then you can write a bunch of instructions here, like, 00:14:01.160 --> 00:14:07.039 I like to use ert for tests. Tests should, like, whatever. 00:14:07.040 --> 00:14:08.639 You should just say... everything 00:14:08.640 --> 00:14:10.999 you need to kind of specify. 00:14:11.000 --> 00:14:13.199 As you get to more complicated tasks, 00:14:13.200 --> 00:14:16.679 it's harder and harder to give it all the context 00:14:16.680 --> 00:14:17.799 it needs for a task, 00:14:17.800 --> 00:14:22.299 and Org Mode is actually a pretty good way to do this. 00:14:22.300 --> 00:14:24.079 I find that this works pretty well, 00:14:24.080 --> 00:14:26.699 and you can even have it instruct Claude 00:14:26.700 --> 00:14:29.333 to just mark things done in your Org file 00:14:29.334 --> 00:14:30.679 when they're done. 00:14:30.680 --> 00:14:32.867 And it knows how to do this, of course. 00:14:32.868 --> 00:14:37.959 So, let's just clock out. 00:14:37.960 --> 00:14:45.239 That's one way to do things. NOTE ECA 00:14:45.240 --> 00:14:49.499 So one other thing I'd like to show you is eca, 00:14:49.500 --> 00:14:52.879 which, compared to Claude Code, ECA is open source. 00:14:52.880 --> 00:14:54.239 It's very nice in that respect. 00:14:54.240 --> 00:14:57.839 It doesn't have to use Anthropic's models. 00:14:57.840 --> 00:15:00.279 You can use local models, 00:15:00.280 --> 00:15:07.619 but it has the advantage of integrating very well with Emacs. 00:15:07.620 --> 00:15:08.559 I'm not going to demonstrate it, 00:15:08.560 --> 00:15:11.159 because it works essentially the same thing you could do 00:15:11.160 --> 00:15:14.119 approximately the same kinds of things 00:15:14.120 --> 00:15:15.479 you could do with Claude Code. 00:15:15.480 --> 00:15:17.439 You just write what you want to happen 00:15:17.440 --> 00:15:18.639 and it will make it happen. 00:15:18.640 --> 00:15:21.879 It again does not do this through Emacs, 00:15:21.880 --> 00:15:23.039 but what it does do is 00:15:23.040 --> 00:15:25.119 it gives you a much better Emacs interface 00:15:25.120 --> 00:15:26.919 that's not terminal-based, 00:15:26.920 --> 00:15:29.639 because you're not using it through the terminal, 00:15:29.640 --> 00:15:31.239 or not even through comint, 00:15:31.240 --> 00:15:35.599 you are using it through a backend 00:15:35.600 --> 00:15:37.499 that is exchanging structured information 00:15:37.500 --> 00:15:40.999 with this process that is doing all the work. 00:15:41.000 --> 00:15:41.900 But other than that, 00:15:41.901 --> 00:15:44.519 it's the same model as Claude Code 00:15:44.520 --> 00:15:52.059 and projects of that nature. NOTE Editing 00:15:52.060 --> 00:15:56.159 We've seen in the demos that I gave 00:15:56.160 --> 00:15:58.639 that there are AI experiences 00:15:58.640 --> 00:16:01.279 that are very natural in the world of editing. 00:16:01.280 --> 00:16:05.339 because they, like Copilot, just offers completion, 00:16:05.340 --> 00:16:09.479 it fits very well with what we all do in Emacs. 00:16:09.480 --> 00:16:14.279 And it's truly, yes, it's kind of a cheat in a sense 00:16:14.280 --> 00:16:15.639 for editing experiences, 00:16:15.640 --> 00:16:20.159 because it can do so much, but it's just editing. 00:16:20.160 --> 00:16:25.259 Whereas things like gptel and those kinds of tools, 00:16:25.260 --> 00:16:29.799 they are clearly in an editor and using editor, 00:16:29.800 --> 00:16:35.319 they're using Emacs, but they represent sort of like, well, 00:16:35.320 --> 00:16:37.759 you can edit for a while, then you could use these tools 00:16:37.760 --> 00:16:39.479 to do something that is not editing, 00:16:39.480 --> 00:16:45.899 this AI just changing the buffer for you. And that's fine. 00:16:45.900 --> 00:16:48.399 It's still... It may not be editing, 00:16:48.400 --> 00:16:52.033 but it's still clearly something that 00:16:52.034 --> 00:16:55.567 is useful to do in Emacs 00:16:55.568 --> 00:16:57.039 and belongs in Emacs. 00:16:57.040 --> 00:17:01.859 But the new tools like Claude Code and things like that 00:17:01.860 --> 00:17:02.639 are kind of different. 00:17:02.640 --> 00:17:06.639 Yes, they will get better integrated with Emacs, 00:17:06.640 --> 00:17:11.639 but it's not clear that they really need to. 00:17:11.640 --> 00:17:15.479 They can do a lot of things without editing. 00:17:15.480 --> 00:17:19.239 In a sense, editing is obsolete in some sense. 00:17:19.240 --> 00:17:23.459 For as many tasks, you don't need to edit anymore. 00:17:23.460 --> 00:17:26.439 And that's a nice thing. 00:17:26.440 --> 00:17:30.579 No one really knows when all this will end, 00:17:30.580 --> 00:17:36.879 how far things will go. It could be that in a decade or so, 00:17:36.880 --> 00:17:41.039 no one's really editing for work anymore. 00:17:41.040 --> 00:17:43.159 Maybe you're just writing instructions. 00:17:43.160 --> 00:17:44.319 You could do that with anything. 00:17:44.320 --> 00:17:47.439 You don't need Emacs or any special editor. 00:17:47.440 --> 00:17:50.439 We could all be using Notepad. That would be bad. 00:17:50.440 --> 00:17:58.039 But... I think it could go that far, 00:17:58.040 --> 00:18:01.839 but it could be that, well, for many specialized things, 00:18:01.840 --> 00:18:04.359 people are still using editing for certain tasks, 00:18:04.360 --> 00:18:07.000 but most tasks are getting fed to just... 00:18:07.001 --> 00:18:08.839 AI is just doing those things. 00:18:08.840 --> 00:18:15.759 In any case, I think it's clear that editing is diminishing, 00:18:15.760 --> 00:18:17.959 the need for editing itself is diminishing. 00:18:17.960 --> 00:18:21.879 And in such a world, It's interesting to think 00:18:21.880 --> 00:18:24.799 where Emacs is headed, especially in relation to 00:18:24.800 --> 00:18:26.359 all the other editors. 00:18:26.360 --> 00:18:28.599 I think people will use Emacs less. 00:18:28.600 --> 00:18:31.639 But I think other editors, like VS Code, 00:18:31.640 --> 00:18:37.999 may simply disappear or be a relatively fringe tool. 00:18:38.000 --> 00:18:42.719 And Emacs is going to follow its own path. 00:18:42.720 --> 00:18:44.679 It's very extensible. It could do anything. 00:18:44.680 --> 00:18:47.919 If there's one thing Emacs can do, it's adapt. 00:18:47.920 --> 00:18:51.679 Emacs has been around for a long time. 00:18:51.680 --> 00:18:54.799 It's pretty clear that Emacs will be around for a long time. 00:18:54.800 --> 00:18:58.879 It might be that in the future, 00:18:58.880 --> 00:19:04.339 editing is some sort of like an artisanal activity that we do. 00:19:04.340 --> 00:19:05.599 It's kind of weird to think about it. 00:19:05.600 --> 00:19:07.679 It's not like baking bread. 00:19:07.680 --> 00:19:10.079 But it is the sense that AI might be 00:19:10.080 --> 00:19:12.399 churning out code in the way, you know, 00:19:12.400 --> 00:19:14.199 the factories are turning out bread, 00:19:14.200 --> 00:19:17.139 but if you really want the good stuff, 00:19:17.140 --> 00:19:20.999 you'll have to do it yourself. 00:19:21.000 --> 00:19:23.959 I don't know if it'll be exactly like that, 00:19:23.960 --> 00:19:29.519 but it could be that Emacs survives and thrives 00:19:29.520 --> 00:19:33.559 in a very kind of specialized ecosystem of people 00:19:33.560 --> 00:19:35.599 who contribute and use it in the way 00:19:35.600 --> 00:19:39.539 it has survived and thrive right now. 00:19:39.540 --> 00:19:46.139 And I think that's a really nice way for all this to end up. 00:19:46.140 --> 00:19:48.719 There's the whole sense of how society will end up 00:19:48.720 --> 00:19:50.759 if all this happens. I don't know, 00:19:50.760 --> 00:19:54.639 but Emacs will be there for us when whatever happens. 00:19:54.640 --> 00:20:00.079 So thank you, and let's help make Emacs the best it can be 00:20:00.080 --> 00:20:04.880 to survive and thrive in the next decade.