From 610c3e88ea652f7d521f31601c0990e5df340bae Mon Sep 17 00:00:00 2001 From: Sacha Chua Date: Sun, 4 Dec 2022 11:15:25 -0500 Subject: Automated commit --- ...022-rms--what-id-like-to-see-in-emacs--main.vtt | 756 +++++++++++++++++++++ 1 file changed, 756 insertions(+) create mode 100644 2022/captions/emacsconf-2022-rms--what-id-like-to-see-in-emacs--main.vtt (limited to '2022/captions/emacsconf-2022-rms--what-id-like-to-see-in-emacs--main.vtt') diff --git a/2022/captions/emacsconf-2022-rms--what-id-like-to-see-in-emacs--main.vtt b/2022/captions/emacsconf-2022-rms--what-id-like-to-see-in-emacs--main.vtt new file mode 100644 index 00000000..5873b47b --- /dev/null +++ b/2022/captions/emacsconf-2022-rms--what-id-like-to-see-in-emacs--main.vtt @@ -0,0 +1,756 @@ +WEBVTT captioned by anush + +NOTE GNU Emacs and its purpose + +00:00:00.000 --> 00:00:08.960 +Hello! I'm going to talk about what I would like to see + +00:00:08.960 --> 00:00:11.240 +in GNU Emacs in the future, + +00:00:11.240 --> 00:00:17.600 +and what I would prefer not to find there. + +00:00:17.600 --> 00:00:22.080 +This is all within the context + +00:00:22.080 --> 00:00:25.360 +of GNU Emacs and its purpose. + +00:00:25.360 --> 00:00:30.600 +GNU Emacs is a part of the GNU operating system, + +00:00:30.600 --> 00:00:33.300 +and the purpose of the GNU operating system + +00:00:33.400 --> 00:00:38.840 +is not simply to do a good job technically, + +00:00:38.840 --> 00:00:42.640 +not simply to be good to use. + +00:00:42.640 --> 00:00:45.760 +Its main purpose, its overall purpose, + +00:00:45.760 --> 00:00:48.560 +is to give people freedom, + +00:00:48.560 --> 00:00:54.760 +and to help them value and defend that freedom. + +00:00:54.760 --> 00:01:00.160 +A GNU package, by being a convenient, well-written program, + +00:01:00.160 --> 00:01:06.000 +should contribute to that overall ethical and social goal, + +00:01:06.000 --> 00:01:10.440 +and not only to the usefulness of our software. + +00:01:10.440 --> 00:01:14.080 +This is true for GNU Emacs + +00:01:14.080 --> 00:01:18.720 +as much as it is for any other free program we’ve developed. + +00:01:18.720 --> 00:01:25.320 +In fact, GNU Emacs is the first GNU program that I released. + +00:01:25.320 --> 00:01:28.800 +I had written some other things before that, + +00:01:28.800 --> 00:01:30.600 +but didn't release them at that time. + +00:01:30.600 --> 00:01:34.200 +There was no particular use in doing so. + +00:01:34.200 --> 00:01:36.007 +So it was through GNU Emacs + +00:01:36.107 --> 00:01:38.307 +that I learned about various things + +00:01:38.407 --> 00:01:44.240 +such as software licenses and how to defend freedom. + +00:01:44.240 --> 00:01:50.407 +You're of course familiar with what GNU Emacs is today, + +00:01:50.507 --> 00:01:54.240 +thanks to the contributions of thousands of other people + +00:01:54.340 --> 00:01:56.967 +who came after me. + +00:01:57.067 --> 00:01:58.880 +What would I like? + +00:01:58.880 --> 00:02:01.433 +What would other people like? + +00:02:01.533 --> 00:02:06.480 +Lots of people come to Emacs familiar with VS Code, + +00:02:06.480 --> 00:02:10.520 +and they say, "Please make Emacs more like VS Code. + +00:02:10.520 --> 00:02:15.840 +Change everything that you did in the 1980s and 90s + +00:02:15.840 --> 00:02:18.320 +to be like that other thing." + +00:02:18.320 --> 00:02:24.200 +That wouldn't be feasible even if we wanted to. + +00:02:24.200 --> 00:02:30.440 +Our goal is not to be... not resembling VS Code. + +00:02:30.440 --> 00:02:33.540 +Any resemblance is coincidental. + +NOTE Lisp as the extension language + +00:02:33.640 --> 00:02:37.940 +But in particular, + +00:02:38.040 --> 00:02:43.774 +we do not want to have extension languages other than Lisp. + +00:02:43.874 --> 00:02:47.474 +Emacs Lisp is the variant of Lisp + +00:02:47.574 --> 00:02:49.474 +that we've always supported, + +00:02:49.574 --> 00:02:52.960 +which has evolved along with Emacs. + +00:02:52.960 --> 00:02:57.400 +We can conceivably have Scheme as well, + +00:02:57.400 --> 00:03:01.040 +if we can sufficiently solve the problems, + +00:03:01.140 --> 00:03:03.760 +the technical problems of making Scheme + +00:03:03.760 --> 00:03:06.480 +and Emacs Lisp interoperate. + +00:03:06.480 --> 00:03:11.600 +We did some design work, I think that was with Tom Lord, + +00:03:11.600 --> 00:03:15.880 +whom the community will greatly miss. + +00:03:15.880 --> 00:03:19.240 +In the 1990s, there are challenges that remain; + +00:03:19.340 --> 00:03:21.360 +maybe it can be done. + +00:03:21.360 --> 00:03:27.960 +But a non-Lispy language would be a mistake. + +00:03:27.960 --> 00:03:33.000 +It would divert our development focus into areas + +00:03:33.000 --> 00:03:37.480 +that we don't need, languages that are less powerful, + +00:03:37.480 --> 00:03:46.280 +less beautiful, and less desirable for the purpose. + +NOTE JavaScript versus freedom + +00:03:46.280 --> 00:03:52.120 +However, the language that we above all shouldn't support + +00:03:52.120 --> 00:03:57.233 +is JavaScript. That's not because of the language itself. + +00:03:57.333 --> 00:04:00.480 +I don't know the JavaScript language, + +00:04:00.480 --> 00:04:04.200 +I've heard people say it's rather clumsy + +00:04:04.200 --> 00:04:07.520 +and not well designed, but I don't know this. + +00:04:07.520 --> 00:04:12.400 +In any case, it's not what my views are based on. + +00:04:12.400 --> 00:04:14.740 +There's something much worse about JavaScript, + +00:04:14.840 --> 00:04:18.800 +which is not the language itself, but how people use it. + +00:04:18.800 --> 00:04:23.640 +Namely, it's been adopted as a way for a network server + +00:04:23.640 --> 00:04:26.120 +to send a program to your machine + +00:04:26.120 --> 00:04:30.120 +without your even noticing, so that this program, + +00:04:30.120 --> 00:04:35.007 +written by you don't know who, will run on your computer + +00:04:35.107 --> 00:04:37.200 +and do you don't know what. + +00:04:37.200 --> 00:04:39.674 +And you're supposed to just trust + +00:04:39.774 --> 00:04:43.640 +all and sundry developers of software + +00:04:43.640 --> 00:04:45.840 +for the sites you visit, + +00:04:45.840 --> 00:04:51.320 +which very commonly do malicious things, often unknown + +00:04:51.320 --> 00:04:55.680 +to the people who are running the server itself. + +00:04:55.680 --> 00:04:59.320 +They paid someone else to design a website + +00:04:59.320 --> 00:05:01.307 +and they probably said, oh, + +00:05:01.407 --> 00:05:04.440 +make it fashionable and attractive. + +00:05:04.440 --> 00:05:09.760 +And they didn't insist, don't snoop on the visitors, + +00:05:09.760 --> 00:05:12.840 +even if they understood what the issue was. + +00:05:12.840 --> 00:05:20.480 +So these sites snoop. It's a serious problem. + +00:05:20.480 --> 00:05:24.080 +The problem comes not from the language JavaScript, + +00:05:24.080 --> 00:05:28.680 +but from the fact that browsers, by default, + +00:05:28.680 --> 00:05:32.440 +will pull in JavaScript code that gets sent to them + +00:05:32.440 --> 00:05:35.833 +and run it to do anything at all. + +00:05:35.933 --> 00:05:39.320 +Emacs is supposed to defend your freedom. + +00:05:39.320 --> 00:05:42.520 +It's supposed to help you to defend your freedom, + +00:05:42.520 --> 00:05:45.640 +and lead you to defend your freedom, + +00:05:45.640 --> 00:05:47.200 +which means it shouldn't lead you + +00:05:47.200 --> 00:05:50.960 +to throw your freedom away as soon as you visit a site + +00:05:50.960 --> 00:05:53.920 +that tries to send you a non-free program + +00:05:53.920 --> 00:05:58.280 +to run straight off of that other machine. + +00:05:58.280 --> 00:06:04.080 +So it's important not to lead users + +00:06:04.080 --> 00:06:06.520 +to do computing this way. + +00:06:06.520 --> 00:06:10.800 +So what are some good things + +00:06:10.800 --> 00:06:14.640 +that we would want instead of this? + +NOTE Updating "An Introduction to Emacs Lisp Programming" + +00:06:14.640 --> 00:06:19.774 +One thing we want + +00:06:19.874 --> 00:06:26.474 +is to update the "Introduction to Emacs Lisp Programming" + +00:06:26.574 --> 00:06:29.480 +by the late Bob Chassell. + +00:06:29.480 --> 00:06:34.720 +It's a book that makes it easy for even non-programmers + +00:06:34.720 --> 00:06:38.000 +to learn to write simple programs in Emacs Lisp. + +00:06:38.000 --> 00:06:41.200 +And from there, they can go on to do better. + +00:06:41.200 --> 00:06:44.800 +We made a pretty big change in Emacs Lisp + +00:06:44.800 --> 00:06:49.480 +a few years ago, implementing lexical scoping by default. + +00:06:49.480 --> 00:06:57.360 +Originally, Emacs Lisp used to be entirely dynamic scoping, + +00:06:57.360 --> 00:07:01.960 +like some of the earliest Lisp interpreters. + +00:07:01.960 --> 00:07:06.520 +This is a change that should have a careful job + +00:07:06.520 --> 00:07:10.560 +of updating for the introduction. + +00:07:10.560 --> 00:07:14.600 +I'm sure we've made it clear in the reference manual, + +00:07:14.600 --> 00:07:18.400 +but that's not what beginners read first. + +00:07:18.400 --> 00:07:23.307 +We need something to teach them in lexical scoping. + +NOTE More memorable package names + +00:07:23.407 --> 00:07:30.440 +Another thing we could use is to make it easier + +00:07:30.440 --> 00:07:33.880 +to understand the facilities that we have. + +00:07:33.880 --> 00:07:38.560 +For instance, I think every package + +00:07:38.560 --> 00:07:42.200 +that you might load into your Emacs and run + +00:07:42.200 --> 00:07:47.680 +should have a name that helps you remember what job it does. + +00:07:47.680 --> 00:07:51.274 +It doesn't have to be super long to tell you + +00:07:51.374 --> 00:07:53.507 +what job that package does. + +00:07:53.607 --> 00:07:56.774 +You can read the description to learn that. + +00:07:56.874 --> 00:07:59.600 +But once you've read the description, + +00:07:59.600 --> 00:08:02.974 +it should be memorable. When you see that name again, + +00:08:03.074 --> 00:08:06.507 +you should realize, oh, that's the package I could use + +00:08:06.607 --> 00:08:11.880 +to do "less" and so. We've had a tendency + +00:08:11.880 --> 00:08:17.840 +to give packages names for the sake of pure wordplay + +00:08:17.940 --> 00:08:23.474 +or lack of obvious meaning, + +00:08:23.574 --> 00:08:28.188 +and I think we should add on, to those packages, + +00:08:28.189 --> 00:08:31.707 +names that people will remember. + +NOTE Simplifying the command interface + +00:08:31.807 --> 00:08:39.200 +Also, there are ways we can simplify the command interface + +00:08:39.200 --> 00:08:43.760 +of Emacs. For instance, there are many different parameters + +00:08:43.760 --> 00:08:48.000 +users can specify that can have several values, + +00:08:48.000 --> 00:08:51.707 +and sometimes you do various kinds of editing + +00:08:51.807 --> 00:08:54.440 +in one session. That's normal in Emacs, + +00:08:54.440 --> 00:08:57.740 +and you might want different parameter settings + +00:08:57.840 --> 00:09:00.307 +for different kinds of editing. + +00:09:00.407 --> 00:09:06.200 +So you specify parameter value A, do some editing, + +00:09:06.200 --> 00:09:10.240 +you specify parameter value B, and do some editing, + +00:09:10.240 --> 00:09:13.720 +and you'd switch back and forth, so you want + +00:09:13.720 --> 00:09:17.440 +to switch back and forth between these parameters. + +00:09:17.440 --> 00:09:22.607 +I think we should aim ... + +00:09:22.707 --> 00:09:26.640 +People have added various commands to switch + +00:09:26.740 --> 00:09:30.400 +between the last two or n values of this parameter, + +00:09:30.500 --> 00:09:32.674 +and another command to switch + +00:09:32.774 --> 00:09:36.740 +between the last two or n values of this [other] parameter, + +00:09:36.840 --> 00:09:41.360 +and then that parameter, you know, and that parameter. + +00:09:41.360 --> 00:09:44.667 +I think we should be able to have + +00:09:44.767 --> 00:09:49.120 +a switch between the last n values command + +00:09:49.120 --> 00:09:54.320 +that works on various different parameters, + +00:09:54.320 --> 00:09:57.040 +and thus makes it easy to remember + +00:09:57.040 --> 00:09:59.240 +that there is this facility. + +00:09:59.340 --> 00:10:03.774 +Because right now the commands to do that are all ad-hoc, + +00:10:03.874 --> 00:10:08.540 +and if you don't use a toggling among the last n values + +00:10:08.640 --> 00:10:11.740 +of a given parameter, you won't know how to do it. + +00:10:11.840 --> 00:10:15.267 +It won't be obvious that there is a way, + +00:10:15.367 --> 00:10:17.667 +so you'd have to go to a suitable manual + +00:10:17.767 --> 00:10:20.100 +and study for a while to think of that. + +00:10:20.100 --> 00:10:23.620 +We could make this easily discoverable. + +NOTE Modularity + +00:10:23.620 --> 00:10:30.140 +There is another kind of modularity that's important, + +00:10:30.140 --> 00:10:34.100 +and that is modularity at the level of maintenance. + +00:10:34.100 --> 00:10:38.207 +This is something all programmers know about, of course, + +00:10:38.307 --> 00:10:43.300 +but in Emacs, various parts interact with other parts, + +00:10:43.300 --> 00:10:47.980 +and we've tried to make them modular in design + +00:10:47.980 --> 00:10:50.380 +by using lots of hooks, + +00:10:50.380 --> 00:10:54.380 +but we haven't gone as far as we could. + +00:10:54.380 --> 00:10:58.060 +With some effort, we could find calls + +00:10:58.060 --> 00:11:00.220 +from over here to over there + +00:11:00.220 --> 00:11:03.140 +that could be replaced by use of hooks, + +00:11:03.140 --> 00:11:05.940 +so that we could reduce the extent + +00:11:05.940 --> 00:11:09.874 +to which you need to know about one part of Emacs + +00:11:09.974 --> 00:11:12.607 +to maintain another part of Emacs, + +00:11:12.707 --> 00:11:17.580 +and I think that as we keep adding more facilities to Emacs, + +00:11:17.580 --> 00:11:22.220 +this kind of modularity will be an investment that pays off. + +NOTE Editing formatted text + +00:11:22.220 --> 00:11:27.140 +There’s one big area of features + +00:11:27.240 --> 00:11:30.700 +that I would like to see in Emacs, + +00:11:30.800 --> 00:11:33.180 +and that's the ability to edit + +00:11:33.180 --> 00:11:40.340 +formatted documents in WYSIWYG, to be able to edit + +00:11:40.340 --> 00:11:47.940 +a letter or a scientific mathematical paper with formulas + +00:11:47.940 --> 00:11:52.900 +or a nicely laid out manual, + +00:11:52.900 --> 00:11:56.660 +looking at what it's really going to look like. + +00:11:56.660 --> 00:12:00.460 +Now we have free software to do this. + +00:12:00.460 --> 00:12:04.660 +For instance, I use LibreOffice some of the time. + +00:12:04.660 --> 00:12:08.100 +Sometimes it's faster than writing something + +00:12:08.100 --> 00:12:11.860 +to be formatted with a text formatter + +00:12:11.860 --> 00:12:16.180 +and then formatting it. But when I use LibreOffice, + +00:12:16.180 --> 00:12:19.220 +I always miss the commands and facilities, + +00:12:19.220 --> 00:12:22.574 +the editing facilities of Emacs. + +00:12:22.674 --> 00:12:26.500 +I'd like to have them both together, something with + +00:12:26.500 --> 00:12:30.340 +the text formatting capabilities of LibreOffice + +00:12:30.340 --> 00:12:36.060 +or even better of TeX, but the editing commands + +00:12:36.060 --> 00:12:40.300 +and facilities of Emacs. This would be a big job, + +00:12:40.300 --> 00:12:45.980 +but it can be made up of a lot of medium-sized jobs. + +00:12:45.980 --> 00:12:50.020 +If people start working on those medium-sized jobs, + +00:12:50.020 --> 00:12:52.060 +then in a number of years + +00:12:52.060 --> 00:12:55.460 +we'll have something absolutely amazing. + +NOTE Not the equivalent of a modern web browser + +00:12:55.460 --> 00:13:01.140 +But one thing I think we really shouldn't have + +00:13:01.140 --> 00:13:06.500 +is the equivalent of a modern web browser. + +00:13:06.500 --> 00:13:10.940 +The World Wide Web started out in the 1990s + +00:13:10.940 --> 00:13:13.774 +in a much simpler form, + +00:13:13.874 --> 00:13:17.820 +where a web page described its contents, + +00:13:17.820 --> 00:13:21.180 +and the web browser laid them out, + +00:13:21.180 --> 00:13:23.707 +and the user could parameterize + +00:13:23.807 --> 00:13:27.140 +how to lay out various kinds of situations. + +00:13:27.140 --> 00:13:31.707 +This was not only convenient for users + +00:13:31.807 --> 00:13:35.874 +who wanted to control things and understand things, + +00:13:35.974 --> 00:13:39.640 +it was also freedom-respecting + +00:13:39.740 --> 00:13:43.020 +because the layout was done by your browser. + +00:13:43.020 --> 00:13:48.100 +If you had a free browser, you were in control, + +00:13:48.100 --> 00:13:51.620 +even though the browser was complicated already. + +00:13:51.620 --> 00:13:54.707 +But starting around two decades ago, + +00:13:54.807 --> 00:13:58.820 +there was an explosion in the complexity of browsers + +00:13:58.820 --> 00:14:02.780 +as companies wanted to have more and more control + +00:14:02.780 --> 00:14:07.700 +over exactly what would appear on a user's screen. + +00:14:07.700 --> 00:14:12.374 +So they invented lots of features to control that, + +00:14:12.474 --> 00:14:15.907 +features where the user couldn't really customize + +00:14:16.007 --> 00:14:18.307 +how something would actually appear + +00:14:18.407 --> 00:14:21.207 +because the whole point was that + +00:14:21.307 --> 00:14:23.707 +the company could control that. + +00:14:23.807 --> 00:14:27.020 +And JavaScript was sort of the ultimate level + +00:14:27.020 --> 00:14:32.007 +of "the company controls everything." + +00:14:32.107 --> 00:14:38.500 +Because of this, going beyond the simple level + +00:14:38.500 --> 00:14:43.540 +of web page formatting features in Emacs + +00:14:43.540 --> 00:14:50.940 +is basically heading down a path that leads to subjugation. + +00:14:50.940 --> 00:14:54.740 +It's a path that we need to stay away from. + +00:14:54.740 --> 00:15:00.307 +It's a path to an unjust world of computing + +00:15:00.407 --> 00:15:03.420 +that you can easily see around you. + +00:15:03.420 --> 00:15:08.600 +Web browsers nowadays are designed to display ads + +00:15:08.700 --> 00:15:11.567 +that you may not want to see. + +00:15:11.667 --> 00:15:17.900 +They're designed for DRM. + +00:15:17.900 --> 00:15:22.420 +They're designed for companies to snoop on you + +00:15:22.420 --> 00:15:26.300 +in unobvious ways. And all of that + +00:15:26.300 --> 00:15:28.980 +we should protect ourselves from, + +00:15:28.980 --> 00:15:31.300 +protect our users from. + +NOTE Getting involved + +00:15:31.300 --> 00:15:39.980 +So I hope that some of you will be enthusiastic + +00:15:39.980 --> 00:15:42.060 +about some of these changes, + +00:15:42.060 --> 00:15:46.940 +especially towards editing formatted text. + +00:15:46.940 --> 00:15:51.980 +If you want to get involved, we have + +00:15:51.980 --> 00:15:57.820 +a development discussion list called emacs-devel@gnu.org. + +00:15:57.820 --> 00:16:02.380 +You can join that. You can also, + +00:16:02.380 --> 00:16:05.740 +if you get interested in working on a package + +00:16:05.740 --> 00:16:09.500 +and you're not an experienced Emacs Lisp developer, + +00:16:09.500 --> 00:16:13.640 +it's a very good idea to look for an experienced developer + +00:16:13.740 --> 00:16:14.980 +to talk with. + +00:16:14.980 --> 00:16:19.220 +Make sure you can write programs in Emacs Lisp first. + +00:16:19.220 --> 00:16:24.260 +It's not useful to take up the expert’s time learning that. + +00:16:24.260 --> 00:16:27.307 +You can still learn it from the introduction. + +00:16:27.407 --> 00:16:31.660 +But after that, when it's a matter of how to design + +00:16:31.660 --> 00:16:36.180 +your favorite package, do have a discussion with developers. + +00:16:36.180 --> 00:16:39.060 +They'll give you design ideas + +00:16:39.060 --> 00:16:43.180 +that will help you make a package that we put into Emacs. + +00:16:43.180 --> 00:17:01.500 +Now it's time for questions. -- cgit v1.2.3