WEBVTT 00:00:00.000 --> 00:00:02.492 [Amin]: Yep, thanks RMS for the great talk. 00:00:02.493 --> 00:00:04.759 Now it's time for questions and answers. 00:00:04.760 --> 00:00:13.519 I will paste the questions here and RMS will choose which ones to answer. 00:00:13.520 --> 00:00:17.501 [Richard]: Please don't post a lot of questions in the Mumble chat 00:00:17.502 --> 00:00:19.239 and fill up the buffer. 00:00:19.240 --> 00:00:25.359 There's a limit to what I can see on the screen, so make sure it's visible. 00:00:25.360 --> 00:00:27.159 Don't get too far ahead. 00:00:27.160 --> 00:00:42.279 [Amin]: Sure, I will only paste one or two questions at a time. 00:00:42.280 --> 00:00:43.639 I think it would also be helpful 00:00:43.640 --> 00:00:47.359 if you read out the questions as you answer them, Richard. 00:00:47.360 --> 00:00:56.799 [Richard]: Okay. NOTE Pragmatically, how are people that buy into these ideals, and especially those that build the software, meant to live/thrive, short of renouncing many of the luxuries of modern life, as many have been struggling to reconcile both it appears. Wouldn't it be smarter and more productive longer-term to solve that problem too? 00:00:56.800 --> 00:01:01.079 Well, this question is a little silly. 00:01:01.080 --> 00:01:05.159 It's based on sort of all or none thinking. 00:01:05.160 --> 00:01:09.079 Pragmatically, how are people that buy into these ideals? 00:01:09.080 --> 00:01:11.199 I find that term offensive. 00:01:11.200 --> 00:01:16.479 And especially those that build the software meant to live/thrive, 00:01:16.480 --> 00:01:20.839 short of renouncing many of the luxuries of modern life. 00:01:20.840 --> 00:01:24.239 It's repackaged standard. 00:01:24.240 --> 00:01:30.319 You'll die if you don't write proprietary software. 00:01:30.320 --> 00:01:33.839 But most people in the world don't write proprietary software 00:01:33.840 --> 00:01:36.079 and that doesn't kill them. 00:01:36.080 --> 00:01:41.799 Whatever you do to make money, if you're reasonably well paid at it, 00:01:41.800 --> 00:01:44.119 which if you're working in software, I hope you are, 00:01:44.120 --> 00:01:49.479 that enables you to have a lot of time to do something else, 00:01:49.480 --> 00:01:53.199 like write some free software, even supposing you find no way 00:01:53.200 --> 00:02:01.639 to make any money from the free software world, but that's just the worst case. 00:02:01.640 --> 00:02:08.079 And for a lot of people, the life they find isn't the worst case. 00:02:08.080 --> 00:02:13.559 So I think it's basically, the question is an exaggeration. 00:02:13.560 --> 00:02:16.399 We don't need to worry about it. 00:02:16.400 --> 00:02:22.479 There are many businesses which do hire people to write free software. 00:02:22.480 --> 00:02:26.079 So write whatever free program for the business 00:02:26.080 --> 00:02:28.079 that the business wants you to write. 00:02:28.080 --> 00:02:32.759 And make sure you get permission to write your own software 00:02:32.760 --> 00:02:34.639 and release it as free software 00:02:34.640 --> 00:02:38.239 and contribute it to free software projects, 00:02:38.240 --> 00:02:46.759 and you'll be able to contribute. 00:02:46.760 --> 00:02:48.439 How can I help? 00:02:48.440 --> 00:02:52.519 In addition, one very big part of the software business 00:02:52.520 --> 00:02:56.359 is custom software development for a client. 00:02:56.360 --> 00:02:59.919 One client at a time, basically. 00:02:59.920 --> 00:03:05.519 And if that business is not treating its clients as suckers, 00:03:05.520 --> 00:03:10.719 it will release the code to them under a free software license. 00:03:10.720 --> 00:03:14.039 Okay, there you are. You're getting paid to write free software. 00:03:14.040 --> 00:03:24.599 Perfectly ethical. NOTE I have been admiring your work for free software for many years now. I am a bit concerned about what will happen to the GNU project when you retire (not soon, I hope!!). Have you planned how to manage the GNU project in the long run? 00:03:24.600 --> 00:03:28.719 I have been admiring your work for free software for many years now. 00:03:28.720 --> 00:03:33.639 I'm a bit concerned about what will happen to the GNU project when you retire. 00:03:33.640 --> 00:03:37.359 Have you planned how to manage the GNU project in the long run? 00:03:37.360 --> 00:03:45.359 I haven't found a way. I had an idea for what to do. 00:03:45.360 --> 00:03:54.639 I hoped to train some people who were activists and committed supporters 00:03:54.640 --> 00:04:01.159 to start making some decisions without me and I would give them feedback. 00:04:01.160 --> 00:04:10.199 But I didn't succeed in getting them to discuss issues and propose decisions. 00:04:10.200 --> 00:04:11.719 Well, I guess I'll have to try again. Over. 00:04:11.720 --> 00:04:28.679 Just a second. I have to go and open the door. NOTE In response to your aversion to JavaScript support in Emacs: In the same way that to revolt against the nonfree spirit in software development one has to develop software, and that to fight nonfree compilers one has to write a free compiler - can you fairly consider rejection of JavaScript as a tool conducive to improving the state of free JavaScript? A server can send back any MIME type to execute on your machine, JS was just the most convenient. 00:04:52.520 --> 00:04:55.479 In response to your aversion to JavaScript support in Emacs 00:04:55.480 --> 00:04:58.039 in the same way that to revolt against 00:04:58.040 --> 00:05:00.479 the non-free spirit in software development, 00:05:00.480 --> 00:05:04.439 one has to develop software and that to fight non-free compilers, 00:05:04.440 --> 00:05:05.999 one has to write a free compiler. 00:05:06.000 --> 00:05:11.199 Can you fairly consider rejection of JavaScript as a tool conducive 00:05:11.200 --> 00:05:14.159 to improving the state of free JavaScript? 00:05:14.160 --> 00:05:16.759 There's a fundamental confusion here. 00:05:16.760 --> 00:05:23.439 The problem with JavaScript is not comparable to the problem of 00:05:23.440 --> 00:05:31.519 non-free C compilers or C++ compilers or Java compilers. 00:05:31.520 --> 00:05:36.839 This is a totally different kind of issue. 00:05:36.840 --> 00:05:40.479 We have free JavaScript support. 00:05:40.480 --> 00:05:45.839 Free browsers contain that. 00:05:45.840 --> 00:05:48.519 That's not the issue. 00:05:48.520 --> 00:05:52.399 The issue is what about the programs you're going to run? 00:05:52.400 --> 00:05:58.359 If you're talking about C, well, if you're going to run a C program, 00:05:58.360 --> 00:06:02.799 it's because at compile at first, it's because you got the source code. 00:06:02.800 --> 00:06:09.039 Probably it's free software or else it's a private project, 00:06:09.040 --> 00:06:14.919 internal project, and there's no particular danger in that. 00:06:14.920 --> 00:06:18.399 If JavaScript were just like that, 00:06:18.400 --> 00:06:21.319 there'd be no particular danger in JavaScript either. 00:06:21.320 --> 00:06:26.959 The problem is that hundreds of thousands of websites, 00:06:26.960 --> 00:06:33.199 or is it millions, are sending JavaScript programs to their visitors 00:06:33.200 --> 00:06:35.919 who don't even know what JavaScript is, 00:06:35.920 --> 00:06:39.159 who are not programmers, who have no idea what's going on. 00:06:39.160 --> 00:06:43.439 So these programs are usually non-free. 00:06:43.440 --> 00:06:48.599 They end up in the user's browser, they run, many of them are malware. 00:06:48.600 --> 00:06:51.039 So what's going to happen? 00:06:51.040 --> 00:06:57.679 Basically, JavaScript is a platform for websites to mistreat users. 00:06:57.680 --> 00:06:59.679 I know it can be used in other ways, 00:06:59.680 --> 00:07:06.319 but socially, the existence of those other ways makes little difference. 00:07:06.320 --> 00:07:10.799 The important thing about JavaScript is the danger that it creates. NOTE With all the recent additions and optimizations to Emacs Lisp (lexical scoping, native compilation etc.) would you deem Emacs Lisp suitable for general purpose programming outside Emacs (i.e. scripting, running web servers). If not, why? 00:07:27.000 --> 00:07:32.279 This question is about the idea of using Emacs Lisp 00:07:32.280 --> 00:07:37.919 for general purpose programming that has nothing to do with Emacs. 00:07:37.920 --> 00:07:44.479 Well, in theory, I guess, in principle, there's nothing wrong with that. 00:07:44.480 --> 00:07:56.879 But I think that would be a distraction, and I'd rather we didn't do it. 00:07:56.880 --> 00:08:02.359 Now, if we had a thousand great programmers ready to do that, 00:08:02.360 --> 00:08:05.999 and every other thing we could use, sure. 00:08:06.000 --> 00:08:12.639 But the fact is, we don't. And I'd really rather-- 00:08:12.640 --> 00:08:17.479 There are many platforms that are fine to write programs on. 00:08:17.480 --> 00:08:26.399 So I'd rather we work on making Emacs better at editing 00:08:26.400 --> 00:08:30.799 and improving Emacs Lisp in the ways that help that goal, 00:08:30.800 --> 00:08:38.999 and leave developing general purpose programming platforms to other languages. NOTE Could you give a few examples of the medium-sized jobs necessary for WYSIWYG-editor support in Emacs? 00:08:44.760 --> 00:08:51.559 Could I give a list of the specific medium-sized jobs 00:08:51.560 --> 00:08:54.959 necessary for WYSIWYG editing? 00:08:54.960 --> 00:08:58.999 Well, I can't really. I don't have a list of one. 00:08:59.000 --> 00:09:04.399 And I'd really appreciate it if people started putting together such a list. 00:09:04.400 --> 00:09:08.839 But if you look at every feature that LibreOffice has 00:09:08.840 --> 00:09:14.399 that Emacs doesn't have, I think you will get a list. 00:09:14.400 --> 00:09:17.679 Now, maybe some of those are not that important. 00:09:17.680 --> 00:09:23.759 Maybe only a subset of them would make the list of really important ones. 00:09:23.760 --> 00:09:27.439 But I think that will give everybody a start. NOTE Should GNU (or someone else) define a safe-subset of HTML/CSS/JS to make web browsers simpler and safer (e.g. by preventing JS from contacting servers)? 00:09:33.480 --> 00:09:39.159 Should GNU or someone else define a safe subset of HTML, CSS, JS 00:09:39.160 --> 00:09:41.559 to make web browsers simpler and safer? 00:09:41.560 --> 00:09:46.519 You know, that would be an interesting thing to explore. 00:09:46.520 --> 00:09:48.879 But I don't know whether it can be done. 00:09:48.880 --> 00:09:53.439 The thing is, one of the dangerous things about JavaScript 00:09:53.440 --> 00:09:55.959 is browser profiling. 00:09:55.960 --> 00:10:02.559 Every machine runs a program at a slightly different speed. 00:10:02.560 --> 00:10:09.399 And the idea of browser profiling is that the website sends a JavaScript program 00:10:09.400 --> 00:10:13.399 to run on every visitor's browser. 00:10:13.400 --> 00:10:19.999 And it's actually a collection of benchmarks. 00:10:20.000 --> 00:10:26.079 And the collection of results is different for each user's computer. 00:10:26.080 --> 00:10:30.919 And so it enables the website to recognize each one when it comes back 00:10:30.920 --> 00:10:34.799 even if there's no cookie to help it. 00:10:34.800 --> 00:10:42.719 So, which features are sufficient to make possible browser profiling? 00:10:42.720 --> 00:10:46.799 There may be no particular unusual feature that's crucial. 00:10:46.800 --> 00:10:48.639 But arithmetic might be enough. NOTE How can we ensure the continuity of an understanding of the more arcane parts of the [Emacs] source code, and increase their evolvability, notably with regards to display, single-threading limitations, etc.? 00:10:57.440 --> 00:11:00.679 How can we ensure the continuity of an understanding 00:11:00.680 --> 00:11:02.999 of the more arcane parts of source code 00:11:03.000 --> 00:11:08.279 and increase their evolvability, notably with regard to display, 00:11:08.280 --> 00:11:14.879 single-threading limitations, etc.? 00:11:14.880 --> 00:11:19.759 Well, single-threading is a very specific thing. 00:11:19.760 --> 00:11:26.559 And the furthest that I've bothered to think about it is 00:11:26.560 --> 00:11:33.799 how can we enable easily multiple list program threads 00:11:33.800 --> 00:11:35.199 to be running in parallel. 00:11:35.200 --> 00:11:39.759 But if you're talking about multi-threading in display, 00:11:39.760 --> 00:11:42.239 I don't know if that even helps. 00:11:42.240 --> 00:11:48.599 Of course, my machine doesn't really enable me to run 00:11:48.600 --> 00:11:57.719 multiple threads in a single program, so it never mattered to me. 00:11:57.720 --> 00:12:06.319 Basically, now, development of a display code 00:12:06.320 --> 00:12:12.239 not in regard to threads, well, that's more feasible. 00:12:12.240 --> 00:12:19.279 But the thing is, generally, any new feature is likely to require 00:12:19.280 --> 00:12:25.799 changes in the buffer data structure to represent the use of the feature. 00:12:25.800 --> 00:12:29.199 And I think that's going to be the hard part. 00:12:29.200 --> 00:12:33.479 So, display won't be the hard part, and it won't be the first part. 00:12:33.480 --> 00:12:37.599 The first part is figuring out how you're going to represent a buffer 00:12:37.600 --> 00:12:43.519 with a certain display bell or whistle in it. 00:12:43.520 --> 00:12:47.719 And once you've worked that out and worked out how it's going to work well 00:12:47.720 --> 00:12:51.359 in editing, then I think you'll be able to figure out 00:12:51.360 --> 00:12:55.119 what display has to do to handle it. 00:12:55.120 --> 00:13:01.079 Of course, you have to decide that data structure, 00:13:01.080 --> 00:13:05.199 thinking about how display is going to handle it efficiently. 00:13:05.200 --> 00:13:13.119 If the data structure is bad, it won't be possible to display efficiently. 00:13:13.120 --> 00:13:15.759 So you need to think about that at that stage. 00:13:15.760 --> 00:13:19.599 But the actual work is working out the data structure 00:13:19.600 --> 00:13:21.559 and the editing to handle it. 00:13:21.560 --> 00:13:31.639 Do you recommend reaching out to schools for volunteers instead of universities 00:13:31.640 --> 00:13:35.639 because they're more prone to value the objectives of freedom? 00:13:35.640 --> 00:13:38.519 Well, reaching out for what? 00:13:38.520 --> 00:13:43.719 Reaching out to try to teach people about freedom? 00:13:43.720 --> 00:13:47.479 Or reaching out to find more developers? 00:13:47.480 --> 00:13:50.479 Maybe that person could respond. NOTE Are there any problems or disadvantages using the GNU AGPL for non-networked software like Emacs packages? 00:13:50.480 --> 00:14:05.199 Is there any problem or disadvantage in using the GNU AGPL 00:14:05.200 --> 00:14:08.519 for non-network software like Emacs packages? 00:14:08.520 --> 00:14:10.239 I don't see one. 00:14:10.240 --> 00:14:17.359 The reason why I didn't put the AGPL clause into the regular GNU GPL 00:14:17.360 --> 00:14:22.319 is it seemed a bit radical and I figured the community 00:14:22.320 --> 00:14:27.079 would be happier if that radical change didn't happen 00:14:27.080 --> 00:14:31.839 in the GNU general public license itself. 00:14:31.840 --> 00:14:35.839 I would like the person who asked the previous question 00:14:35.840 --> 00:14:40.719 to respond to what I said so I can get that answer 00:14:40.720 --> 00:14:43.519 and finish answering her question. 00:14:43.520 --> 00:14:46.119 Right. 00:14:46.120 --> 00:14:50.279 I will let you know if we end up hearing back from you--from per. NOTE Is there a list of Emacs issues which can be solved by programmers with different levels? For example my level is A, I know basic elisp and C. How can I help? 00:14:50.280 --> 00:15:03.439 Is there a list of Emacs issues which can be solved by programmers 00:15:03.440 --> 00:15:05.079 with different levels? 00:15:05.080 --> 00:15:07.319 I don't know of one. 00:15:07.320 --> 00:15:14.159 I tend to think that people who know basic programs 00:15:14.160 --> 00:15:20.359 the basic level of list programming can't contribute yet. 00:15:20.360 --> 00:15:25.919 They might be able to start debugging problems. 00:15:25.920 --> 00:15:30.359 It won't be easy but that might be a good first thing to do. 00:15:30.360 --> 00:15:36.359 Look at bugs that are waiting and see if you can debug one of them 00:15:36.360 --> 00:15:39.519 and then when you find out what's actually going wrong 00:15:39.520 --> 00:15:44.159 you can send that to the developers and it will very likely 00:15:44.160 --> 00:15:46.679 enable them to fix the problem quickly. 00:15:46.680 --> 00:15:52.279 In the process you'll learn a lot about programs 00:15:52.280 --> 00:15:54.039 and how programs are actually written 00:15:54.040 --> 00:15:56.959 and how to understand the code you actually come across. 00:15:56.960 --> 00:16:02.439 With features like Org mode and enriched mode, 00:16:02.440 --> 00:16:06.759 it seems that Emacs is getting closer to the goal of WYSIWYG. 00:16:06.760 --> 00:16:10.799 Well it's got somewhat closer but it has a very long way to go. 00:16:10.800 --> 00:16:15.119 If you compare it with something like LibreOffice 00:16:15.120 --> 00:16:17.039 you'll see how long away there is to go. 00:16:17.040 --> 00:16:31.399 There was an effort called GuileEmacs a while back 00:16:31.400 --> 00:16:36.839 which was some effort to get Guile to be able to compile and run Emacs Lisp. NOTE What roadblocks kept some of the other efforts from being used with Emacs? 00:16:36.840 --> 00:16:40.959 [Amin]: You mentioned there were still some challenges relating to Guile. 00:16:40.960 --> 00:16:45.879 What roadblocks kept some of the other efforts from being used with Emacs? 00:16:45.880 --> 00:16:50.275 [Richard]: Well we never finished solving the problem 00:16:50.276 --> 00:16:55.239 of reconciling Guile data types with Emacs Lisp data types. 00:16:55.240 --> 00:17:02.439 We got an idea for how to deal with the fact that 00:17:02.440 --> 00:17:08.599 Scheme handling of nil is different from Lisp handling of nil. 00:17:08.600 --> 00:17:14.679 The idea was that maybe this would get us close enough it could actually work. 00:17:14.680 --> 00:17:19.359 But I don't think anyone fully implemented it and made it actually work. NOTE What do you use emacs for beyond editing? 00:17:36.240 --> 00:17:39.759 What do you use Emacs for beyond editing? 00:17:39.760 --> 00:17:42.679 Well I use it for reading and writing email. 00:17:42.680 --> 00:17:44.759 That's what I mainly do. 00:17:44.760 --> 00:17:47.839 That's what I do most of the day. 00:17:47.840 --> 00:17:52.559 I could... I mean should I sing my song? 00:17:52.560 --> 00:17:55.119 Sure. NOTE Song about e-mail 00:17:55.120 --> 00:18:02.639 I've been answering my email all the goddamn day. 00:18:02.640 --> 00:18:10.879 I've been answering my email 'cause my work gets done that way. 00:18:10.880 --> 00:18:14.879 Can't you feel the fingers aching? 00:18:14.880 --> 00:18:18.479 Type until early in the morn. 00:18:18.480 --> 00:18:22.319 Can't you see the letters blurring? 00:18:22.320 --> 00:18:25.799 It's just an ad for porn. 00:18:25.800 --> 00:18:30.519 You can see how out of date that song is 'cause we don't 00:18:30.520 --> 00:18:32.039 get ads for porn much anymore. 00:18:32.400 --> 00:18:37.279 [Amin]: Thanks for the performance. NOTE Emacs is used by a small population relative to the population that could benefit from it. Do you have any thoughts on how to expand the user base more broadly even among software developers? 00:18:49.556 --> 00:18:52.919 [Richard]: Emacs is used by a small population relative to 00:18:52.920 --> 00:18:54.639 the population that could benefit from it. 00:18:54.640 --> 00:18:59.519 Do you have any thoughts on how to expand the user base more broadly, 00:18:59.520 --> 00:19:02.159 even among software developers? 00:19:02.160 --> 00:19:11.679 No. Basically, the fact is that on that aspect of things, 00:19:11.680 --> 00:19:20.759 VS Code has an advantage and the advantage comes from Microsoft. 00:19:20.760 --> 00:19:28.159 It's pushing that together as part of a large collection 00:19:28.160 --> 00:19:32.839 of evil proprietary software that subjugates its users. 00:19:32.840 --> 00:19:36.119 But those users don't understand that issue. 00:19:36.120 --> 00:19:40.639 So, I mean, I sure wish I could come up with an idea 00:19:40.640 --> 00:19:44.279 for how to spread awareness of free software 00:19:44.280 --> 00:19:46.599 and the injustice of non-free software. 00:19:46.600 --> 00:19:52.879 The best one that I know of is to show them the TEDx talk that you saw. 00:19:52.880 --> 00:19:57.239 If you show that to people, they'll get at least a basic idea 00:19:57.240 --> 00:19:59.039 of what's at stake here and why. NOTE Would a namespace system similar to Common Lisp packages but without :USE work in Emacs? Modern CL implementations have package local nicknames to create package local prefixes. 00:20:05.760 --> 00:20:10.719 Would a namespace system similar to Common Lisp packages but without :USE 00:20:10.720 --> 00:20:12.199 work in Emacs? 00:20:12.200 --> 00:20:14.319 I suppose it would. 00:20:14.320 --> 00:20:18.399 I mean, basically, the thing that's really broken about 00:20:18.400 --> 00:20:21.599 Common Lisp packages is use. 00:20:21.600 --> 00:20:29.999 But it's not crucial, or at least it's not crucial to allow that to exist 00:20:30.000 --> 00:20:32.119 for arbitrary use. 00:20:32.120 --> 00:20:37.079 Maybe you want to have something saying where a package can specify 00:20:37.080 --> 00:20:42.759 whether to use the standard system functions and variables and so on. 00:20:42.760 --> 00:20:49.679 But there is a drawback to Common Lisp packages, 00:20:49.680 --> 00:21:01.719 which is that all of the aspects of any given symbol have to go together. 00:21:01.720 --> 00:21:07.319 So if compile-foo is a variable and it's also a function, 00:21:07.320 --> 00:21:09.999 and it's also a property name, 00:21:10.000 --> 00:21:15.359 then if your symbol foo is aliased to compile-foo, 00:21:15.360 --> 00:21:21.839 that means it's aliased as a function, aliased as a variable, 00:21:21.840 --> 00:21:23.959 and aliased as a property name. 00:21:23.960 --> 00:21:30.319 And aliased is anything else that you're going to point to from list structure. 00:21:30.320 --> 00:21:35.799 So it's not going to work really smoothly. 00:21:35.800 --> 00:21:42.239 And I tend to think that we're better off with a naming convention. 00:21:42.240 --> 00:21:50.599 Since the use feature of Common Lisp packages causes trouble, 00:21:50.600 --> 00:21:57.919 well if you don't use that, why is it better to write compile-foo 00:21:57.920 --> 00:22:03.479 and have that be foo in the compile package than to write compile-foo? 00:22:03.480 --> 00:22:09.959 The packages are almost equivalent to name prefixes. 00:22:09.960 --> 00:22:18.799 And I think that there is an advantage of clarity to writing the name prefixes, 00:22:18.800 --> 00:22:20.639 even in the same file. 00:22:20.640 --> 00:22:28.759 That abbreviation, which is meant to just shorten the code and make it simpler, 00:22:28.760 --> 00:22:32.319 looks simpler, I believe doesn't actually help. 00:22:32.320 --> 00:22:42.439 And I say that based on many years of writing code that way. NOTE With Emacs 29 adding more (awesome) features into vanilla Emacs, how should we ensure vanilla Emacs does not get bloated with many similar features? (example: ido/icomplete, vc/magit) 00:22:42.440 --> 00:22:48.719 With Emacs 29 adding more awesome features into Vanilla Emacs, 00:22:48.720 --> 00:22:52.919 how should we ensure vanilla Emacs does not get bloated 00:22:52.920 --> 00:22:54.879 with many similar features? 00:22:54.880 --> 00:23:03.799 Example, ido/icomplete, vc/magit. 00:23:03.800 --> 00:23:08.759 Well, to some extent we can't. Users do things differently. 00:23:08.760 --> 00:23:13.679 I have never used Magit because I don't want to get used to using anything 00:23:13.680 --> 00:23:18.839 that's not, packages that are not actually part of Emacs. 00:23:18.840 --> 00:23:25.199 Now, a couple of years ago, the author of Maggot said he was starting to work 00:23:25.200 --> 00:23:30.919 on getting the copyright assignments to include Magit in Emacs. 00:23:30.920 --> 00:23:36.159 But I was unable to get any information on how this is progressing. 00:23:36.160 --> 00:23:44.599 So because I've never actually seen Magit and because Git is actually not 00:23:44.600 --> 00:23:50.559 the VC system that I use most, I don't know if I'd want to use Magit. 00:23:50.560 --> 00:23:53.199 I'd probably be happier using VC. 00:23:53.200 --> 00:23:59.959 I'm told that they have extremely different basic approaches to doing things. 00:23:59.960 --> 00:24:03.319 They're not just slight variants of each other. 00:24:03.320 --> 00:24:07.039 Now, having multiple slight variants, you know, 00:24:07.040 --> 00:24:10.919 things doing similar jobs in little different ways, 00:24:10.920 --> 00:24:13.959 that could be seen as redundant. 00:24:13.960 --> 00:24:23.759 But when packages have very different approaches, I think that's not redundant. 00:24:23.760 --> 00:24:26.919 Clarified version of earlier question. NOTE Do you recommend reaching out in [high] schools for volunteers instead of universities because they are more prone to value the objectives of freedom? 00:24:26.920 --> 00:24:31.599 Do you recommend reaching out in schools for volunteers for both advocacy 00:24:31.600 --> 00:24:35.239 and development instead of universities? 00:24:35.240 --> 00:24:40.839 I think that you'll find few people in high schools. 00:24:40.840 --> 00:24:46.799 I think the question when it says schools means high schools. 00:24:46.800 --> 00:24:51.079 I think you will find only very rarely someone in high school 00:24:51.080 --> 00:24:57.279 who is good enough at programming to start actually developing things. 00:24:57.280 --> 00:25:00.239 Once in a while, I guess. 00:25:00.240 --> 00:25:07.039 As an activist, I think somewhat more often. 00:25:07.040 --> 00:25:09.919 But the main thing is, do you know how to have a rapport 00:25:09.920 --> 00:25:13.039 with high school students? 00:25:13.040 --> 00:25:16.359 If you do, it would be a great thing to try. 00:25:16.360 --> 00:25:26.519 We have had some projects of teaching free software to people in public schools. 00:25:26.520 --> 00:25:32.559 And if you want to work on that, I suggest sending me an email 00:25:32.560 --> 00:25:35.039 and I'll put you in touch with someone who's done it. NOTE What was the thought process behind making Emacs Lisp dynamically scoped when you first created it? What advantages did it provide over the alternative? 00:25:35.040 --> 00:25:44.719 What was the thought process behind making Emacs Lisp dynamically scoped? 00:25:44.720 --> 00:25:46.039 It was easy. 00:25:46.040 --> 00:25:53.159 I knew perfectly well how to write a simple, small Lisp interpreter 00:25:53.160 --> 00:25:55.039 that was dynamically scoped. 00:25:55.040 --> 00:26:03.919 And small was absolutely necessary at the time because I was trying to make it 00:26:03.920 --> 00:26:12.079 able to run in a machine whose total address space was one megabyte. 00:26:12.080 --> 00:26:16.639 So the code had to be small. 00:26:16.640 --> 00:26:25.239 Why did I implement if and I believe not cond? 00:26:25.240 --> 00:26:30.359 Why did I implement or and not unless? 00:26:30.360 --> 00:26:33.439 Because you didn't need those others. 00:26:33.440 --> 00:26:39.839 You could write your Lisp code with a smaller Lisp interpreter 00:26:39.840 --> 00:26:49.759 if you didn't have those other convenient traditional standard parts of Lisp. 00:26:49.760 --> 00:26:54.519 So I stripped Emacs Lisp down to bare bones. 00:26:54.520 --> 00:27:01.679 Of course, nowadays that's not necessary anymore. 00:27:01.680 --> 00:27:08.239 Emacs used to be criticized as eight megabytes and constantly swapping. 00:27:08.240 --> 00:27:10.799 And someone pointed out to me ten years ago 00:27:10.800 --> 00:27:13.079 that if something's only eight megabytes, 00:27:13.080 --> 00:27:14.879 it's not going to swap at all anymore. NOTE It's hard to pick up Emacs if you do not speak English. Can something be done to address that? 00:27:18.766 --> 00:27:21.759 It's hard to pick up Emacs if you do not speak English. 00:27:21.760 --> 00:27:24.679 Can something be done to address that? 00:27:24.680 --> 00:27:28.239 Well, what do you actually suggest? 00:27:28.240 --> 00:27:30.039 Is it the documentation? 00:27:30.040 --> 00:27:34.279 Is it the names of commands? 00:27:34.280 --> 00:27:39.319 Is it the doc strings or is it the manual or both? 00:27:39.320 --> 00:27:43.879 Is it the messages that Emacs displays? 00:27:43.880 --> 00:27:47.679 I mean, each of these is a different issue technically. 00:27:47.680 --> 00:27:51.759 Now, the easiest thing to deal with would be the messages 00:27:51.760 --> 00:27:53.679 because in other GNU packages, 00:27:53.680 --> 00:27:57.639 we have a system for internationalizing messages. 00:27:57.640 --> 00:28:01.079 It's hard to adapt it directly to Emacs 00:28:01.080 --> 00:28:06.199 because it's designed for programs, tools, or applications 00:28:06.200 --> 00:28:09.639 that have a fixed set of messages to display. 00:28:09.640 --> 00:28:12.239 Emacs doesn't. You load in a different Lisp program, 00:28:12.240 --> 00:28:14.359 it's got a different set of messages. 00:28:14.360 --> 00:28:17.119 How exactly do you want to handle this? 00:28:17.120 --> 00:28:18.439 But it could be done. 00:28:18.440 --> 00:28:20.879 It's not a terribly hard problem. 00:28:20.880 --> 00:28:25.559 If you're interested, please work on it. 00:28:25.560 --> 00:28:29.719 What about the command names? 00:28:29.720 --> 00:28:35.319 Well, you could imagine coming up with an alternate set of command names 00:28:35.320 --> 00:28:40.159 and maybe a different character instead of M-x 00:28:40.160 --> 00:28:46.839 so that it would read only the translated command names 00:28:46.840 --> 00:28:51.319 and the ordinary Emacs command names wouldn't get in the way. 00:28:51.320 --> 00:28:57.719 M-x might still be there, but if you type this other thing, M-foobar, 00:28:57.720 --> 00:29:05.799 then it would only complete over the command names in the other language. 00:29:05.800 --> 00:29:10.479 This might be pretty simple to do technically, 00:29:10.480 --> 00:29:16.559 although working out the details might take a good deal of thought. 00:29:16.560 --> 00:29:20.999 And then docstrings? 00:29:21.000 --> 00:29:25.799 Well, you could just write another set of them 00:29:25.800 --> 00:29:28.839 and have other help commands to display them. NOTE Do you use Org or Org mode, and if so, to what extent? 00:29:28.840 --> 00:29:36.159 Do you use Org or Org mode, and if so, to what extent? 00:29:36.160 --> 00:29:39.759 I have never used them, and here's why. 00:29:39.760 --> 00:29:48.359 I think that the design process of Org mode went awry, 00:29:48.360 --> 00:29:52.959 not at the very beginning, but at the next stage. 00:29:52.960 --> 00:29:56.759 Originally, Org mode was an outlining mode. 00:29:56.760 --> 00:29:58.559 It's not something I wanted to use. 00:29:58.560 --> 00:30:02.999 I had nothing against including it, but I didn't ever try to use it. 00:30:03.000 --> 00:30:08.719 The documentation of it somehow wasn't easy for me to grasp, 00:30:08.720 --> 00:30:11.719 especially since I had no actual use for it, 00:30:11.720 --> 00:30:16.079 no reason to go through and remember all those things. 00:30:16.080 --> 00:30:24.599 Anyway, then people started developing other facilities to use the Org syntax, 00:30:24.600 --> 00:30:27.599 and they're totally unrelated to each other. 00:30:27.600 --> 00:30:30.599 They just happen to use the Org syntax, 00:30:30.600 --> 00:30:34.719 and some of them, occasionally, I thought it might be interesting to use this, 00:30:34.720 --> 00:30:38.639 but to use it, first I'd have to learn the Org syntax, 00:30:38.640 --> 00:30:43.199 and that was a task that had already proved discouraging. 00:30:43.200 --> 00:30:46.759 Now, the mistaken design, I think, 00:30:46.760 --> 00:30:51.159 was to integrate all those other facilities with Org mode. 00:30:51.160 --> 00:30:54.239 They should all have been separate, modularly separate, 00:30:54.240 --> 00:30:59.439 so that you could maybe use them with Org mode if you wanted to, 00:30:59.440 --> 00:31:03.199 but also use them separately from Org mode, 00:31:03.200 --> 00:31:05.279 and they'd be documented separately, 00:31:05.280 --> 00:31:08.999 and those I wanted to use, I would have learned to use. 00:31:09.000 --> 00:31:10.999 But that was hard to do. 00:31:11.000 --> 00:31:16.639 They had been welded together such that it was not easy to separate them. 00:31:16.640 --> 00:31:20.439 I really wish they'd get separated, but that's not an easy job. 00:31:20.440 --> 00:31:23.759 Each one needs to be remodularized. 00:31:23.760 --> 00:31:31.759 Anyway, there is something for which I think Org mode could become an advance. 00:31:31.760 --> 00:31:39.759 I'm not saying it isn't useful for people who like what it does, 00:31:39.760 --> 00:31:46.399 but it might play an important role if it were extended to do it, 00:31:46.400 --> 00:31:53.639 and that is we could use a replacement for Texinfo. 00:31:53.640 --> 00:31:57.639 Texinfo's syntax is arcane. 00:31:57.640 --> 00:32:05.559 It was based on what I could implement on top of TeX in 1984 or so. 00:32:05.560 --> 00:32:15.519 And, well, Org mode, Org syntax doesn't make all the distinctions, 00:32:15.520 --> 00:32:20.599 all the semantic markup distinctions that we can make in Texinfo. 00:32:20.600 --> 00:32:25.839 If it did, which would require extending it, 00:32:25.840 --> 00:32:33.399 then it might become a good format to write GNU manuals in. 00:32:33.400 --> 00:32:37.639 It could conceivably become a better format than we have now, 00:32:37.640 --> 00:32:39.719 and that would be a good thing. 00:32:39.720 --> 00:32:43.599 Not that many people know Texinfo syntax. 00:32:43.600 --> 00:32:47.479 It's not widely used except for GNU manuals. 00:32:47.480 --> 00:32:52.439 But probably more people know Org syntax, 00:32:52.440 --> 00:32:57.239 and if it were extended so that it did in a fairly natural way 00:32:57.240 --> 00:33:02.319 all the things that Texinfo does and maybe some additional ones, 00:33:02.320 --> 00:33:05.279 then it could be superior. 00:33:05.280 --> 00:33:11.239 And then we could gradually switch our manuals over to it. 00:33:11.240 --> 00:33:14.119 But we need to be able to generate all the output formats 00:33:14.120 --> 00:33:15.359 that we can generate now. 00:33:15.360 --> 00:33:19.999 That means HTML to put on websites. 00:33:20.000 --> 00:33:27.159 That means either info files or perhaps another form of the HTML output 00:33:27.160 --> 00:33:30.079 that would be good for an info browser, 00:33:30.080 --> 00:33:34.079 including the one inside Emacs and the one that's separate. 00:33:34.080 --> 00:33:42.479 And generating input to TeX so that it would generate pretty-looking manuals, 00:33:42.480 --> 00:33:46.719 which is one of the advantages of Texinfo. 00:33:46.720 --> 00:33:48.719 This is not a gigantic job. 00:33:48.720 --> 00:33:54.479 I'd say this is a medium-sized job, or maybe two or three medium-sized jobs. NOTE What do you have in mind for more modular Emacs development? 00:33:54.480 --> 00:34:05.879 What do you have in mind for more modular Emacs development? 00:34:05.880 --> 00:34:13.479 I think that that's... 00:34:13.480 --> 00:34:17.679 There's no specific feature that I have in mind to solve that. 00:34:17.680 --> 00:34:21.719 It's more of an approach to how you develop things. 00:34:21.720 --> 00:34:28.719 It's thinking about modularity when you write each package that you write, 00:34:28.720 --> 00:34:34.119 because you will find situations where it has to interact 00:34:34.120 --> 00:34:37.439 in various ways with other packages. 00:34:37.440 --> 00:34:40.879 And sometimes you'll find the other packages have hooks 00:34:40.880 --> 00:34:42.719 that will enable you to do it. 00:34:42.720 --> 00:34:45.239 And sometimes you'll find that 00:34:45.240 --> 00:34:47.679 the hook you'd really need for this is missing. 00:34:47.680 --> 00:34:52.519 In that case, the best thing to do might be to add 00:34:52.520 --> 00:34:58.479 a suitable, fairly general hook that can be used for your job 00:34:58.480 --> 00:35:00.879 to the other existing package, 00:35:00.880 --> 00:35:08.399 so that instead of a rigid connection to other parts of Emacs, 00:35:08.400 --> 00:35:09.599 which is somewhat unmodular, 00:35:09.600 --> 00:35:12.999 you could use a general-purpose hook, 00:35:13.000 --> 00:35:17.039 which you designed because it could do a lot of things, 00:35:17.040 --> 00:35:19.039 including the thing you need to do. NOTE Reframing the school question 00:35:19.040 --> 00:35:32.039 It might be interesting to reframe the school question. 00:35:32.040 --> 00:35:34.399 I think it is related to the first part, 00:35:34.400 --> 00:35:36.959 how to bring Libre software into schools. 00:35:36.960 --> 00:35:42.159 For example, my entry point was LaTeX in school. 00:35:42.160 --> 00:35:44.439 Well, it's okay. 00:35:44.440 --> 00:35:50.599 I don't see anything wrong with that, by all means, if it works. 00:35:50.600 --> 00:36:00.479 Now, my naive, perhaps, guess is that it wouldn't arouse much interest, 00:36:00.480 --> 00:36:05.879 because I suspect most people would rather use a WYSIWYG text editor 00:36:05.880 --> 00:36:13.959 than a text formatter like LaTeX, any text formatter. 00:36:13.960 --> 00:36:18.639 But if your experience is otherwise, go ahead. NOTE In light of that critique of JavaScript not being about the language per se but rather the "culture of blindly getting and running packages/libraries", what's so different with what's currently done by the vast majority of Emacs/Elisp users to just install packages blindly? 00:36:18.640 --> 00:36:28.799 In the light of that critique of JavaScript not being about language per se, 00:36:28.800 --> 00:36:33.759 but rather the culture of blindly getting and running packages, libraries. 00:36:33.760 --> 00:36:36.119 What's so different with what's currently done by the vast 00:36:36.120 --> 00:36:42.199 majority of EmacsLib users to just install packages blindly? 00:36:42.200 --> 00:36:44.199 Well, they know they're installing a package, 00:36:44.200 --> 00:36:46.799 and that makes all the difference. 00:36:46.800 --> 00:36:50.879 And people can post various versions of a package, 00:36:50.880 --> 00:36:53.679 and then people can compare them and say, 00:36:53.680 --> 00:36:59.279 "Hey, I looked at that version there, and it has a horrible bug." 00:36:59.280 --> 00:37:03.959 And so the community can do something about that. 00:37:03.960 --> 00:37:09.519 With JavaScript sent by websites, there is no way to do anything like that. 00:37:09.520 --> 00:37:13.039 And in addition, most of those programs are not free. 00:37:13.040 --> 00:37:16.559 How would you know? If you're not running LibreJS, 00:37:16.560 --> 00:37:20.799 you don't know what JavaScript programs are being installed 00:37:20.800 --> 00:37:25.319 into your browser at any given moment, or whether they're free. 00:37:25.320 --> 00:37:31.119 You know, very likely you'll just get a bunch of obfuscript, 00:37:31.120 --> 00:37:35.559 and you won't know what the source code is, or whether you could even find it. 00:37:35.560 --> 00:37:41.399 These things don't happen with EmacsList packages. 00:37:41.400 --> 00:37:48.799 At least not when they're in reputable package archives. NOTE Do you still intend to merge your patch to the "shorthands" feature to the master branch? 00:37:48.800 --> 00:37:55.839 Do you still intend to merge your patch to the shorthands feature 00:37:55.840 --> 00:37:57.519 to the master branch? 00:37:57.520 --> 00:38:05.159 Yes, but I've seen that something needs to be done with the docstrings, 00:38:05.160 --> 00:38:17.679 because s.el mentions in its docstrings the function names used in s.el, 00:38:17.680 --> 00:38:27.199 and the magnars string library that works just by renaming those symbols 00:38:27.200 --> 00:38:31.119 really would want to alter the docstrings too. 00:38:31.120 --> 00:38:34.719 And now there are multiple ways of doing that. 00:38:34.720 --> 00:38:39.519 One of them maybe is to edit the s.el source file 00:38:39.520 --> 00:38:42.559 so it'll do the right thing in either case. 00:38:42.560 --> 00:38:48.879 That would need a new docstring construct. 00:38:48.880 --> 00:38:52.159 Well, we've added many docstring constructs. 00:38:52.160 --> 00:38:54.879 We could add one more. It's not that hard a thing. NOTE Do you think the freedom e.g., we have in Emacs, becomes a hurdle for some people to pursue more important things in the world? I used to do a lot of Emacs programming, but I recently try to stay away from tinkering on Emacs. 00:38:54.880 --> 00:39:05.799 Do you think the freedom, e.g., we have in Emacs becomes a hurdle 00:39:05.800 --> 00:39:09.319 for some people to pursue more important things in the world? 00:39:09.320 --> 00:39:12.359 Is there something more important in the world? 00:39:12.360 --> 00:39:17.399 I used to do a lot of Emacs programming, but recently I decided to stay away 00:39:17.400 --> 00:39:22.199 from tink-linking, from tinking Emacs. 00:39:22.200 --> 00:39:27.159 I'm not sure what-- tinking is a strange word to me, tinkering with maybe. 00:39:27.160 --> 00:39:33.559 Well, there may be more important things for you to do than extend Emacs. 00:39:33.560 --> 00:39:39.239 On the other hand, when you look at all the distractions that the world offers 00:39:39.240 --> 00:39:42.439 that distract a lot more people than this, 00:39:42.440 --> 00:39:47.799 it really seems unfair to criticize Emacs because it's something 00:39:47.800 --> 00:39:50.959 you could put a lot of time into tinkering with. 00:39:50.960 --> 00:39:54.599 Look how much time people put into playing video games, 00:39:54.600 --> 00:39:58.199 which achieves nothing except distracting them. 00:39:58.200 --> 00:40:04.599 And if you distract yourself by playing with Emacs Lisp code, 00:40:04.600 --> 00:40:07.399 that's surely better. 00:40:07.400 --> 00:40:10.919 It has a chance of resulting in something 00:40:10.920 --> 00:40:17.919 actually useful and a chance that you'd learn something 00:40:17.920 --> 00:40:27.919 that's more important as learning than how to win a certain video game. NOTE Question about software freedom: how does it apply to software that are art/media experiences, like videogames? In your view, Is the creator of a videogame obliged to release it under a free license? 00:40:27.920 --> 00:40:29.919 Questions about software freedom. 00:40:29.920 --> 00:40:34.719 How does it apply to software that are art/media experiences 00:40:34.720 --> 00:40:36.919 like video games in your view? 00:40:36.920 --> 00:40:42.719 Well, I'd say that a video game typically is a collection of things, 00:40:42.720 --> 00:40:49.319 some of which are programs and some of which are art. 00:40:49.320 --> 00:40:54.719 And so once you analyze the game in that way, 00:40:54.720 --> 00:40:59.479 if you agree with my ideas about what the moral rules are 00:40:59.480 --> 00:41:04.319 for each of those categories, you can apply them separately 00:41:04.320 --> 00:41:06.759 to each thing in the collection. 00:41:06.760 --> 00:41:12.279 Programs are operational. They do things for you. 00:41:12.280 --> 00:41:15.879 And anything that does things for you should be free. 00:41:15.880 --> 00:41:20.999 The art that is simply displayed is not of that kind, 00:41:21.000 --> 00:41:26.239 so it doesn't, in my view, have to be free. 00:41:26.240 --> 00:41:29.359 It does have to be shareable. 00:41:29.360 --> 00:41:36.199 You have to be free to non-commercially redistribute an exact copy. 00:41:36.200 --> 00:41:40.039 When I talk about sharing, that's what it means, precisely that. 00:41:40.040 --> 00:41:45.319 Non-commercially redistribute exact copies to others when you wish. 00:41:45.320 --> 00:41:58.359 How would technologies like WebAssembly fit with the JavaScript issues? 00:41:58.360 --> 00:42:00.519 They don't change anything much. 00:42:00.520 --> 00:42:06.079 Basically, if the program is JavaScript source code 00:42:06.080 --> 00:42:09.999 that you could actually read, well, then if it had a free license on it, 00:42:10.000 --> 00:42:11.279 it would be free software. 00:42:11.280 --> 00:42:16.319 And if the free license is indicated in the standardized format 00:42:16.320 --> 00:42:24.959 that LibreJS understands, it would actually recognize it as free software. 00:42:24.960 --> 00:42:30.759 If it's obfuscated, then it's not the source code. 00:42:30.760 --> 00:42:35.599 And if it's WebAssembly, then it's not the source code. 00:42:35.600 --> 00:42:41.999 So those are both compiled versions of source code that isn't in the page. 00:42:42.000 --> 00:42:45.759 So they make things somewhat nastier, 00:42:45.760 --> 00:42:51.159 in the sense that you couldn't have much chance of reading it 00:42:51.160 --> 00:42:52.999 and seeing what it does. 00:42:53.000 --> 00:42:55.479 But either way, it's not free, 00:42:55.480 --> 00:43:00.599 even if it's source code with no free license, it's still not free. 00:43:00.600 --> 00:43:03.639 If it's a compiled version rather than source, 00:43:03.640 --> 00:43:07.359 that's a little further away from being free. 00:43:07.360 --> 00:43:11.599 But further away from being free doesn't make it worse. 00:43:11.600 --> 00:43:13.599 It's equally bad. 00:43:13.600 --> 00:43:18.559 If it gets further away from being free, 00:43:18.560 --> 00:43:23.439 that means the work that you might have to do to free it is more, 00:43:23.440 --> 00:43:26.239 but it's not worse. 00:43:26.240 --> 00:43:28.839 Non-free is bad. NOTE Have you seen Haketilo? It seems similar to LibreJS. 00:43:35.915 --> 00:43:38.959 Have you seen Haketilo? 00:43:38.960 --> 00:43:41.679 It seems similar to LibreJS. 00:43:41.680 --> 00:43:44.519 Haketilo is meant to enable people 00:43:44.520 --> 00:43:49.199 to get some of the benefits of the free software community 00:43:49.200 --> 00:43:54.439 with free replacement JavaScript programs for websites. 00:43:54.440 --> 00:44:00.879 So potentially it offers a real solution to the JavaScript problem. 00:44:00.880 --> 00:44:05.039 It has a long way to go from what I hear. 00:44:05.040 --> 00:44:07.999 If you want to work on it, please do. 00:44:08.000 --> 00:44:14.159 Of course, writing free replacement JavaScript 00:44:14.160 --> 00:44:16.919 for a million websites is an enormous job, 00:44:16.920 --> 00:44:19.319 but maybe we could do it for some sites. 00:44:19.320 --> 00:44:24.319 It depends how many people get enthusiastic about doing it 00:44:24.320 --> 00:44:25.959 and how many sites cooperate. 00:44:25.960 --> 00:44:32.719 Is writing free software replacement to GitHub Copilot 00:44:32.720 --> 00:44:36.759 with proper license attribution a good idea? 00:44:36.760 --> 00:44:44.959 Maybe, but remember that Copilot is not a program. Copilot is a service. 00:44:44.960 --> 00:44:50.119 It is something that somebody else's computer will do for you. 00:44:50.120 --> 00:44:55.439 It's a computation that someone else's server will do for you when you ask. 00:44:55.440 --> 00:45:06.239 And so what are the practical problems of doing that? I'm not sure. 00:45:06.240 --> 00:45:13.479 The point is, of course, the server runs by running a program. 00:45:13.480 --> 00:45:17.439 The service operates by running programs. 00:45:17.440 --> 00:45:21.119 But still, a service is a very different kind of thing from a program. 00:45:21.120 --> 00:45:28.999 People who use Copilot don't get any sort of copy of Copilot. 00:45:29.000 --> 00:45:33.319 All they do is send something they're working on to that server 00:45:33.320 --> 00:45:34.999 and they get something back. 00:45:35.000 --> 00:45:45.567 So it might be a good idea. NOTE Do you have any suggestions for helping propective contributers streamline the copyright assignment needed to contribute to Emacs (and other FSF software projects)? 00:45:45.568 --> 00:45:48.359 Do you have any suggestions for helping prospective contributors 00:45:48.360 --> 00:45:53.359 streamline the copyright assignment needed to contribute to Emacs? 00:45:53.360 --> 00:45:57.279 I don't think that's needed. 00:45:57.280 --> 00:46:04.359 Basically, the copyright assignment itself is pretty easy 00:46:04.360 --> 00:46:06.599 and doesn't take very long. 00:46:06.600 --> 00:46:09.919 What is sometimes harder is the copyright disclaimer, 00:46:09.920 --> 00:46:14.959 the employer disclaimer, where your employer, 00:46:14.960 --> 00:46:20.399 if you're employed to program, or if your job includes programming 00:46:20.400 --> 00:46:24.399 or could include programming, we want to be sure that your employer 00:46:24.400 --> 00:46:30.559 is not going to say that you had no right to contribute that to any program 00:46:30.560 --> 00:46:37.799 because it belonged to the employer all along and you broke the rules 00:46:37.800 --> 00:46:42.319 and the project you contributed to is shafted. 00:46:42.320 --> 00:46:50.679 Well, we are working on some simplifications to that text 00:46:50.680 --> 00:46:55.119 in the hope of making it easier to get companies to say yes to it. 00:46:55.120 --> 00:46:59.039 But fundamentally, they've got to say yes to it. 00:46:59.040 --> 00:47:06.279 We need them to say yes to it. 00:47:06.280 --> 00:47:08.719 We can't make them say yes to it. 00:47:08.720 --> 00:47:09.799 We can only ask. NOTE Can complexity induced by company-funded free/libre code become a problem, when the company pulls out, leaving the code potentially unmaintainable? 00:47:09.800 --> 00:47:13.759 Can complexity induced by company funded... 00:47:13.760 --> 00:47:17.119 Sorry, it talks about open code. 00:47:17.120 --> 00:47:21.359 I don't know what that means. 00:47:21.360 --> 00:47:23.759 Is this talking about free software? 00:47:23.760 --> 00:47:27.759 [Amin]: I think it would be safe to assume that they are indeed 00:47:27.760 --> 00:47:28.959 talking about free software. 00:47:28.960 --> 00:47:34.119 [Richard]: Okay, because I don't use the term open to classify programs. 00:47:34.120 --> 00:47:39.359 I'm not a supporter of open source and I never was. 00:47:39.360 --> 00:47:42.519 And the reason is very important. 00:47:42.520 --> 00:47:50.199 I touched on this briefly in the TEDx video. 00:47:50.200 --> 00:47:58.639 But basically, the idea of the free software movement is that users deserve 00:47:58.640 --> 00:48:04.559 the freedom to study, change and redistribute the code that they use. 00:48:04.560 --> 00:48:09.879 And it is an injustice to deny that to users. 00:48:09.880 --> 00:48:13.719 And therefore, software must be free. 00:48:13.720 --> 00:48:16.159 It's wrong if it's not free. 00:48:16.160 --> 00:48:22.879 Well, the people who created the idea of open source about 14 years later, 00:48:22.880 --> 00:48:27.719 they wanted to avoid bringing up that question. 00:48:27.720 --> 00:48:31.999 And they more or less succeeded when people talk about open source. 00:48:32.000 --> 00:48:38.959 Occasionally, that question has seeped in from the free software community. 00:48:38.960 --> 00:48:41.599 But most of the time, it never occurs to them. 00:48:41.600 --> 00:48:47.519 They simply take for granted that it's legitimate for a program not to be open. 00:48:47.520 --> 00:48:52.759 Well, that's missing the point that I consider most important. 00:48:52.760 --> 00:48:57.679 So whenever I talk about this area, I talk about it in 00:48:57.680 --> 00:49:04.039 terms of free, libre, freedom-respecting software. 00:49:04.040 --> 00:49:09.839 So, can complexity-induced by company-funded free code 00:49:09.840 --> 00:49:12.399 become a problem when the company pulls out, 00:49:12.400 --> 00:49:16.239 leaving the code potentially unmaintainable? 00:49:16.240 --> 00:49:21.999 Well, I'd say over-complicated free programs 00:49:22.000 --> 00:49:24.879 which don't have community contributors 00:49:24.880 --> 00:49:27.359 can fall into that problem. 00:49:27.360 --> 00:49:31.279 It's not limited to programs developed by companies, I think. NOTE What do you think of Hyperbole or EEV instead of org mode, or other things for the stuff that org mode does "second brain / knowledge base", or GTD 'getting things done' etc... among other things in Emacs or other Emacs packages 00:49:31.280 --> 00:49:42.239 What do you think of Hyperbole or EEV instead of Org mode? 00:49:42.240 --> 00:49:46.759 Well, I don't actually know that much about either of them. 00:49:46.760 --> 00:49:49.439 I don't know what EEV is. 00:49:49.440 --> 00:49:54.257 I've heard of Hyperbole, but it was many years ago that I looked at it, 00:49:54.258 --> 00:49:56.399 and I don't remember what I saw. 00:49:56.400 --> 00:50:03.199 So, I'm sorry I can't have an educated opinion about those specific things. 00:50:03.200 --> 00:50:07.319 It would be interesting for somebody to study that. 00:50:07.320 --> 00:50:10.319 Now, there'd be a lot to study. 00:50:10.320 --> 00:50:14.999 After all, Org mode consists of an outlining mode together 00:50:15.000 --> 00:50:20.119 with lots of other specific features that have been welded onto it. 00:50:20.120 --> 00:50:26.479 And if they were separated, made modular, separate parts of Emacs, 00:50:26.480 --> 00:50:31.599 it would be a lot easier to adapt some of them to work with hyperbole 00:50:31.600 --> 00:50:32.799 if we wanted to. 00:50:32.800 --> 00:50:34.879 Of course, do we want to? 00:50:34.880 --> 00:50:36.359 That's another question. 00:50:36.360 --> 00:50:38.519 What is EEV? 00:50:38.520 --> 00:50:46.279 I think it's similar in many ways to hyperbole. 00:50:46.280 --> 00:50:50.039 I haven't used either of them too much myself, but yeah, 00:50:50.040 --> 00:50:51.759 they are fairly similar as far as I know. 00:50:51.760 --> 00:50:55.759 If they're fairly similar, I guess that brings up the question, 00:50:55.760 --> 00:50:58.319 is either of them actually part of Emacs? 00:50:58.320 --> 00:51:04.639 I think hyperbole is a GNU package. 00:51:04.640 --> 00:51:07.719 I'm not sure if it's part of Emacs or GNU ELPA. 00:51:07.720 --> 00:51:10.879 It might be, but EEV is not as of yet. 00:51:10.880 --> 00:51:12.159 But both are free software. 00:51:12.160 --> 00:51:19.159 Well, it might be that it doesn't make sense to include them both in any sense. 00:51:19.160 --> 00:51:21.159 People can write them and distribute them, 00:51:21.160 --> 00:51:23.679 but that doesn't mean we need to pick them up. 00:51:23.680 --> 00:51:28.359 We might want to compare them and see which one is better 00:51:28.360 --> 00:51:32.799 and then look at whether it could be improved further 00:51:32.800 --> 00:51:35.319 by bringing in features from the other. 00:51:35.320 --> 00:51:40.199 This is what you do if those two things exist 00:51:40.200 --> 00:51:42.519 and you want to make the best possible thing 00:51:42.520 --> 00:51:44.999 to add, for instance, to Emacs. 00:51:45.000 --> 00:51:56.319 But since I don't know any specifics anymore, and with EEV I never did, 00:51:56.320 --> 00:52:01.639 I don't want to state any sort of a priori preference. 00:52:01.640 --> 00:52:06.250 I don't have one. NOTE Are there plans to bring modal editing (eg. evil-mode, viper) to Emacs core and did your opinion on modal editing change over the years? 00:52:06.251 --> 00:52:10.959 Are there plans to bring modal editing to Emacs core? 00:52:10.960 --> 00:52:11.759 What does that mean? 00:52:11.760 --> 00:52:19.399 [Amin]: I think they're speaking about projects or editing modes such as VI, 00:52:19.400 --> 00:52:23.639 where by default whatever you type is not getting inserted, 00:52:23.640 --> 00:52:28.319 but you can navigate between different modes 00:52:28.320 --> 00:52:30.199 and one of them being text insertion. 00:52:30.200 --> 00:52:35.759 [Richard]: Well, I don't have a wish for that. 00:52:35.760 --> 00:52:38.399 Now, I mean, it's not somehow morally anathema. 00:52:38.400 --> 00:52:49.279 I mean, it's not as if it were a non-free program. 00:52:49.280 --> 00:52:58.439 But it wouldn't be easy to design that in such a way that 00:52:58.440 --> 00:53:02.999 it fit into the framework of existing Emacs without doing any violence to it. NOTE What is your opinion on the current state of large machine learning/AI models? 00:53:03.000 --> 00:53:16.719 What is your opinion of the current state of large machine learning models? 00:53:16.720 --> 00:53:20.919 Even if the model is released under a free license, 00:53:20.920 --> 00:53:25.399 it cannot be modified in a meaningful way? 00:53:25.400 --> 00:53:29.039 I don't think that's true. 00:53:29.040 --> 00:53:33.279 A person who was in the field of machine learning 00:53:33.280 --> 00:53:35.839 told me that you can modify it. 00:53:35.840 --> 00:53:38.999 You can modify it by starting with what you've got 00:53:39.000 --> 00:53:40.839 and doing some further training, 00:53:40.840 --> 00:53:47.159 and you don't need, I'm told, the previously used training data to train it, 00:53:47.160 --> 00:53:49.439 to modify it. 00:53:49.440 --> 00:53:53.399 Based on that, I concluded that the trained neural network 00:53:53.400 --> 00:53:56.879 can be treated as source code. 00:53:56.880 --> 00:54:01.079 And after all, it's not made from any other kind of source code. 00:54:01.080 --> 00:54:04.839 So, in some sense, what else could the source code be? NOTE I thought it was a virtue to separate the content from the style or appearance of information. Part of being free is also to view information in the format that you want. Does your WYSIWYG idea erode this virtue and lead to more thinking -- perhaps undue thinking about style over substance? 00:54:14.302 --> 00:54:17.519 I thought it was a virtue to separate the content 00:54:17.520 --> 00:54:19.719 from the style or appearance of information. 00:54:19.720 --> 00:54:24.759 Part of being free is also to view information in the format you want. 00:54:24.760 --> 00:54:29.959 Does your WYSIWYG idea erode this virtue and lead to more thinking, 00:54:29.960 --> 00:54:34.359 perhaps undue thinking about style over substance? 00:54:34.360 --> 00:54:38.919 Well, I don't know, actually. 00:54:38.920 --> 00:54:43.959 I know that in LibreOffice you can make named styles, 00:54:43.960 --> 00:54:46.959 and you can apply them to parts of the text, 00:54:46.960 --> 00:54:51.239 and later on you can change what any given named style 00:54:51.240 --> 00:54:53.719 means in terms of appearance. 00:54:53.720 --> 00:55:03.319 So, is that enough independence of appearance from semantics? 00:55:03.320 --> 00:55:06.319 I am hardly a power user of LibreOffice. 00:55:06.320 --> 00:55:09.239 I've come across that feature. I've never used it. 00:55:09.240 --> 00:55:17.559 The only things I write with it are pretty simple. 00:55:17.560 --> 00:55:23.519 I have a feeling that I've been doing this for a rather long time. 00:55:23.520 --> 00:55:27.279 Do you recall when I started answering questions? 00:55:27.280 --> 00:55:29.799 I think it was something like an hour ago. 00:55:29.800 --> 00:55:35.759 Yeah, I think so. About an hour or 45 minutes-ish. 00:55:35.760 --> 00:55:38.839 Well, then I'll do a few questions more. NOTE Do you ever dabble in retro-computing, e.g. logging into TOPS10/20 systems SDF, etc? 00:55:38.840 --> 00:55:42.679 Do you ever dabble in retrocomputing? 00:55:42.680 --> 00:55:47.319 No. I decided it's a waste of time. 00:55:47.320 --> 00:55:51.759 It basically would be tinkering that would not develop 00:55:51.760 --> 00:55:56.039 anything of any importance or use. 00:55:56.040 --> 00:56:02.839 And I know that if I'm going to enjoy developing something, 00:56:02.840 --> 00:56:06.079 I could enjoy it developing anything. 00:56:06.080 --> 00:56:10.239 You know, I could enjoy just as much developing something 00:56:10.240 --> 00:56:17.199 that I think is needed right now for non-retrocomputing 00:56:17.200 --> 00:56:20.679 as I could enjoy working on retrocomputing. 00:56:20.680 --> 00:56:26.079 So I decided never to let retrocomputing 00:56:26.080 --> 00:56:30.759 distract my attention from useful computing. NOTE Do you know Gemini? 00:56:38.196 --> 00:56:40.359 Do you know the Gemini Project - 00:56:40.360 --> 00:56:45.239 a network of very simplified markdown-like text files without images 00:56:45.240 --> 00:56:52.759 and third-party materials transmitted via an open public free protocol, 00:56:52.760 --> 00:56:56.519 which is not HTTPS? 00:56:56.520 --> 00:56:58.839 I don't remember if I ever heard of that before. 00:56:58.840 --> 00:57:02.639 Sorry, I have no opinion about it. 00:57:02.640 --> 00:57:10.799 But I think that the lack of images will turn out to be a considerable drawback. 00:57:10.800 --> 00:57:14.159 I mean, imagine a website. 00:57:14.160 --> 00:57:19.439 Well, there are lots of reasons you might want to put in images. 00:57:19.440 --> 00:57:27.559 It's not limited just to making it look snazzy and distracting. 00:57:27.560 --> 00:57:32.159 There are a lot of pictures you might want to include and diagrams, 00:57:32.160 --> 00:57:37.719 and scientific papers include pictures and diagrams. 00:57:37.720 --> 00:57:41.359 It would be crippling if they couldn't be in there. 00:57:41.360 --> 00:57:46.519 So basically, I think that exclusion of images is a big loss. 00:57:46.520 --> 00:57:56.879 [Amin]: Thanks. I think that's so far all the questions I see on the pad, 00:57:56.880 --> 00:58:00.319 but let's give it maybe another minute or two 00:58:00.320 --> 00:58:04.479 if people have any other question or two to get in before we call this close. NOTE stallmansupport.org 00:58:04.480 --> 00:58:27.520 [Richard] Well, I'd like to mention that if you've heard 00:58:27.521 --> 00:58:43.959 rumors of attacks against me that people have made, it's mostly false, 00:58:43.960 --> 00:58:50.079 and you can find out more by looking at stallmansupport.org. 00:58:50.080 --> 00:58:55.359 So I refer you there, and I hope you'll take a look. 00:58:55.360 --> 00:59:04.639 [Amin]: Yes, thank you. 00:59:04.640 --> 00:59:08.599 All right, I think that's pretty much all the questions that we have. 00:59:08.600 --> 00:59:10.559 Thanks again, Richard, both for your great talk 00:59:10.560 --> 00:59:14.319 and also for taking this much time answering so many questions. 00:59:14.320 --> 00:59:17.999 We really appreciate it. 00:59:18.000 --> 00:59:21.639 [Richard]: Well, this is what I do. 00:59:21.640 --> 00:59:28.839 GNU and the Free Software Movement are what I've dedicated my life to, 00:59:28.840 --> 00:59:34.679 and since I'm still alive, I've got more to dedicate to them. 00:59:34.680 --> 00:59:40.319 [Amin]: Wonderful, and we all hope that it keeps on coming 00:59:40.320 --> 00:59:43.839 and you're able to continue for a very long time into the future. 00:59:43.840 --> 00:59:46.079 [Richard]: Happy hacking. 00:59:46.080 --> 00:59:49.960 [Amin]: Happy hacking. Bye.