diff options
author | Sacha Chua <sacha@sachachua.com> | 2022-12-04 11:15:25 -0500 |
---|---|---|
committer | Sacha Chua <sacha@sachachua.com> | 2022-12-04 11:15:25 -0500 |
commit | 610c3e88ea652f7d521f31601c0990e5df340bae (patch) | |
tree | 3495080f08c82a2c31c153fe12f1273597db7229 /2022 | |
parent | 17f51968f4e3a1b8481d7aa8945e90d7c9b716fc (diff) | |
download | emacsconf-wiki-610c3e88ea652f7d521f31601c0990e5df340bae.tar.xz emacsconf-wiki-610c3e88ea652f7d521f31601c0990e5df340bae.zip |
Automated commit
Diffstat (limited to '2022')
-rw-r--r-- | 2022/captions/emacsconf-2022-rms--what-id-like-to-see-in-emacs--main--chapters.vtt | 32 | ||||
-rw-r--r-- | 2022/captions/emacsconf-2022-rms--what-id-like-to-see-in-emacs--main.vtt | 756 | ||||
-rw-r--r-- | 2022/info/rms-after.md | 252 | ||||
-rw-r--r-- | 2022/info/rms-before.md | 24 |
4 files changed, 1062 insertions, 2 deletions
diff --git a/2022/captions/emacsconf-2022-rms--what-id-like-to-see-in-emacs--main--chapters.vtt b/2022/captions/emacsconf-2022-rms--what-id-like-to-see-in-emacs--main--chapters.vtt new file mode 100644 index 00000000..24aba25c --- /dev/null +++ b/2022/captions/emacsconf-2022-rms--what-id-like-to-see-in-emacs--main--chapters.vtt @@ -0,0 +1,32 @@ +WEBVTT + + +00:00:00.000 --> 00:02:33.540 +GNU Emacs and its purpose + +00:02:33.640 --> 00:03:46.280 +Lisp as the extension language + +00:03:46.280 --> 00:06:14.640 +JavaScript versus freedom + +00:06:14.640 --> 00:07:23.307 +Updating "An Introduction to Emacs Lisp Programming" + +00:07:23.407 --> 00:08:31.707 +More memorable package names + +00:08:31.807 --> 00:10:23.620 +Simplifying the command interface + +00:10:23.620 --> 00:11:22.220 +Modularity + +00:11:22.220 --> 00:12:55.460 +Editing formatted text + +00:12:55.460 --> 00:15:31.300 +Not the equivalent of a modern web browser + +00:15:31.300 --> 00:17:01.500 +Getting involved 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. diff --git a/2022/info/rms-after.md b/2022/info/rms-after.md index 44a8cc2b..6bfe92b4 100644 --- a/2022/info/rms-after.md +++ b/2022/info/rms-after.md @@ -1,6 +1,258 @@ <!-- Automatically generated by emacsconf-publish-after-page --> +<a name="rms-mainVideo-transcript"></a> +# Transcript + +[[!template new="1" text="""Hello! I'm going to talk about what I would like to see""" start="00:00:00.000" video="mainVideo-rms" id="subtitle"]] +[[!template text="""in GNU Emacs in the future,""" start="00:00:08.960" video="mainVideo-rms" id="subtitle"]] +[[!template text="""and what I would prefer not to find there.""" start="00:00:11.240" video="mainVideo-rms" id="subtitle"]] +[[!template text="""This is all within the context""" start="00:00:17.600" video="mainVideo-rms" id="subtitle"]] +[[!template text="""of GNU Emacs and its purpose.""" start="00:00:22.080" video="mainVideo-rms" id="subtitle"]] +[[!template text="""GNU Emacs is a part of the GNU operating system,""" start="00:00:25.360" video="mainVideo-rms" id="subtitle"]] +[[!template text="""and the purpose of the GNU operating system""" start="00:00:30.600" video="mainVideo-rms" id="subtitle"]] +[[!template text="""is not simply to do a good job technically,""" start="00:00:33.400" video="mainVideo-rms" id="subtitle"]] +[[!template text="""not simply to be good to use.""" start="00:00:38.840" video="mainVideo-rms" id="subtitle"]] +[[!template text="""Its main purpose, its overall purpose,""" start="00:00:42.640" video="mainVideo-rms" id="subtitle"]] +[[!template text="""is to give people freedom,""" start="00:00:45.760" video="mainVideo-rms" id="subtitle"]] +[[!template text="""and to help them value and defend that freedom.""" start="00:00:48.560" video="mainVideo-rms" id="subtitle"]] +[[!template text="""A GNU package, by being a convenient, well-written program,""" start="00:00:54.760" video="mainVideo-rms" id="subtitle"]] +[[!template text="""should contribute to that overall ethical and social goal,""" start="00:01:00.160" video="mainVideo-rms" id="subtitle"]] +[[!template text="""and not only to the usefulness of our software.""" start="00:01:06.000" video="mainVideo-rms" id="subtitle"]] +[[!template text="""This is true for GNU Emacs""" start="00:01:10.440" video="mainVideo-rms" id="subtitle"]] +[[!template text="""as much as it is for any other free program we’ve developed.""" start="00:01:14.080" video="mainVideo-rms" id="subtitle"]] +[[!template text="""In fact, GNU Emacs is the first GNU program that I released.""" start="00:01:18.720" video="mainVideo-rms" id="subtitle"]] +[[!template text="""I had written some other things before that,""" start="00:01:25.320" video="mainVideo-rms" id="subtitle"]] +[[!template text="""but didn't release them at that time.""" start="00:01:28.800" video="mainVideo-rms" id="subtitle"]] +[[!template text="""There was no particular use in doing so.""" start="00:01:30.600" video="mainVideo-rms" id="subtitle"]] +[[!template text="""So it was through GNU Emacs""" start="00:01:34.200" video="mainVideo-rms" id="subtitle"]] +[[!template text="""that I learned about various things""" start="00:01:36.107" video="mainVideo-rms" id="subtitle"]] +[[!template text="""such as software licenses and how to defend freedom.""" start="00:01:38.407" video="mainVideo-rms" id="subtitle"]] +[[!template text="""You're of course familiar with what GNU Emacs is today,""" start="00:01:44.240" video="mainVideo-rms" id="subtitle"]] +[[!template text="""thanks to the contributions of thousands of other people""" start="00:01:50.507" video="mainVideo-rms" id="subtitle"]] +[[!template text="""who came after me.""" start="00:01:54.340" video="mainVideo-rms" id="subtitle"]] +[[!template text="""What would I like?""" start="00:01:57.067" video="mainVideo-rms" id="subtitle"]] +[[!template text="""What would other people like?""" start="00:01:58.880" video="mainVideo-rms" id="subtitle"]] +[[!template text="""Lots of people come to Emacs familiar with VS Code,""" start="00:02:01.533" video="mainVideo-rms" id="subtitle"]] +[[!template text="""and they say, "Please make Emacs more like VS Code.""" start="00:02:06.480" video="mainVideo-rms" id="subtitle"]] +[[!template text="""Change everything that you did in the 1980s and 90s""" start="00:02:10.520" video="mainVideo-rms" id="subtitle"]] +[[!template text="""to be like that other thing."""" start="00:02:15.840" video="mainVideo-rms" id="subtitle"]] +[[!template text="""That wouldn't be feasible even if we wanted to.""" start="00:02:18.320" video="mainVideo-rms" id="subtitle"]] +[[!template text="""Our goal is not to be... not resembling VS Code.""" start="00:02:24.200" video="mainVideo-rms" id="subtitle"]] +[[!template text="""Any resemblance is coincidental.""" start="00:02:30.440" video="mainVideo-rms" id="subtitle"]] +[[!template new="1" text="""But in particular,""" start="00:02:33.640" video="mainVideo-rms" id="subtitle"]] +[[!template text="""we do not want to have extension languages other than Lisp.""" start="00:02:38.040" video="mainVideo-rms" id="subtitle"]] +[[!template text="""Emacs Lisp is the variant of Lisp""" start="00:02:43.874" video="mainVideo-rms" id="subtitle"]] +[[!template text="""that we've always supported,""" start="00:02:47.574" video="mainVideo-rms" id="subtitle"]] +[[!template text="""which has evolved along with Emacs.""" start="00:02:49.574" video="mainVideo-rms" id="subtitle"]] +[[!template text="""We can conceivably have Scheme as well,""" start="00:02:52.960" video="mainVideo-rms" id="subtitle"]] +[[!template text="""if we can sufficiently solve the problems,""" start="00:02:57.400" video="mainVideo-rms" id="subtitle"]] +[[!template text="""the technical problems of making Scheme""" start="00:03:01.140" video="mainVideo-rms" id="subtitle"]] +[[!template text="""and Emacs Lisp interoperate.""" start="00:03:03.760" video="mainVideo-rms" id="subtitle"]] +[[!template text="""We did some design work, I think that was with Tom Lord,""" start="00:03:06.480" video="mainVideo-rms" id="subtitle"]] +[[!template text="""whom the community will greatly miss.""" start="00:03:11.600" video="mainVideo-rms" id="subtitle"]] +[[!template text="""In the 1990s, there are challenges that remain;""" start="00:03:15.880" video="mainVideo-rms" id="subtitle"]] +[[!template text="""maybe it can be done.""" start="00:03:19.340" video="mainVideo-rms" id="subtitle"]] +[[!template text="""But a non-Lispy language would be a mistake.""" start="00:03:21.360" video="mainVideo-rms" id="subtitle"]] +[[!template text="""It would divert our development focus into areas""" start="00:03:27.960" video="mainVideo-rms" id="subtitle"]] +[[!template text="""that we don't need, languages that are less powerful,""" start="00:03:33.000" video="mainVideo-rms" id="subtitle"]] +[[!template text="""less beautiful, and less desirable for the purpose.""" start="00:03:37.480" video="mainVideo-rms" id="subtitle"]] +[[!template new="1" text="""However, the language that we above all shouldn't support""" start="00:03:46.280" video="mainVideo-rms" id="subtitle"]] +[[!template text="""is JavaScript. That's not because of the language itself.""" start="00:03:52.120" video="mainVideo-rms" id="subtitle"]] +[[!template text="""I don't know the JavaScript language,""" start="00:03:57.333" video="mainVideo-rms" id="subtitle"]] +[[!template text="""I've heard people say it's rather clumsy""" start="00:04:00.480" video="mainVideo-rms" id="subtitle"]] +[[!template text="""and not well designed, but I don't know this.""" start="00:04:04.200" video="mainVideo-rms" id="subtitle"]] +[[!template text="""In any case, it's not what my views are based on.""" start="00:04:07.520" video="mainVideo-rms" id="subtitle"]] +[[!template text="""There's something much worse about JavaScript,""" start="00:04:12.400" video="mainVideo-rms" id="subtitle"]] +[[!template text="""which is not the language itself, but how people use it.""" start="00:04:14.840" video="mainVideo-rms" id="subtitle"]] +[[!template text="""Namely, it's been adopted as a way for a network server""" start="00:04:18.800" video="mainVideo-rms" id="subtitle"]] +[[!template text="""to send a program to your machine""" start="00:04:23.640" video="mainVideo-rms" id="subtitle"]] +[[!template text="""without your even noticing, so that this program,""" start="00:04:26.120" video="mainVideo-rms" id="subtitle"]] +[[!template text="""written by you don't know who, will run on your computer""" start="00:04:30.120" video="mainVideo-rms" id="subtitle"]] +[[!template text="""and do you don't know what.""" start="00:04:35.107" video="mainVideo-rms" id="subtitle"]] +[[!template text="""And you're supposed to just trust""" start="00:04:37.200" video="mainVideo-rms" id="subtitle"]] +[[!template text="""all and sundry developers of software""" start="00:04:39.774" video="mainVideo-rms" id="subtitle"]] +[[!template text="""for the sites you visit,""" start="00:04:43.640" video="mainVideo-rms" id="subtitle"]] +[[!template text="""which very commonly do malicious things, often unknown""" start="00:04:45.840" video="mainVideo-rms" id="subtitle"]] +[[!template text="""to the people who are running the server itself.""" start="00:04:51.320" video="mainVideo-rms" id="subtitle"]] +[[!template text="""They paid someone else to design a website""" start="00:04:55.680" video="mainVideo-rms" id="subtitle"]] +[[!template text="""and they probably said, oh,""" start="00:04:59.320" video="mainVideo-rms" id="subtitle"]] +[[!template text="""make it fashionable and attractive.""" start="00:05:01.407" video="mainVideo-rms" id="subtitle"]] +[[!template text="""And they didn't insist, don't snoop on the visitors,""" start="00:05:04.440" video="mainVideo-rms" id="subtitle"]] +[[!template text="""even if they understood what the issue was.""" start="00:05:09.760" video="mainVideo-rms" id="subtitle"]] +[[!template text="""So these sites snoop. It's a serious problem.""" start="00:05:12.840" video="mainVideo-rms" id="subtitle"]] +[[!template text="""The problem comes not from the language JavaScript,""" start="00:05:20.480" video="mainVideo-rms" id="subtitle"]] +[[!template text="""but from the fact that browsers, by default,""" start="00:05:24.080" video="mainVideo-rms" id="subtitle"]] +[[!template text="""will pull in JavaScript code that gets sent to them""" start="00:05:28.680" video="mainVideo-rms" id="subtitle"]] +[[!template text="""and run it to do anything at all.""" start="00:05:32.440" video="mainVideo-rms" id="subtitle"]] +[[!template text="""Emacs is supposed to defend your freedom.""" start="00:05:35.933" video="mainVideo-rms" id="subtitle"]] +[[!template text="""It's supposed to help you to defend your freedom,""" start="00:05:39.320" video="mainVideo-rms" id="subtitle"]] +[[!template text="""and lead you to defend your freedom,""" start="00:05:42.520" video="mainVideo-rms" id="subtitle"]] +[[!template text="""which means it shouldn't lead you""" start="00:05:45.640" video="mainVideo-rms" id="subtitle"]] +[[!template text="""to throw your freedom away as soon as you visit a site""" start="00:05:47.200" video="mainVideo-rms" id="subtitle"]] +[[!template text="""that tries to send you a non-free program""" start="00:05:50.960" video="mainVideo-rms" id="subtitle"]] +[[!template text="""to run straight off of that other machine.""" start="00:05:53.920" video="mainVideo-rms" id="subtitle"]] +[[!template text="""So it's important not to lead users""" start="00:05:58.280" video="mainVideo-rms" id="subtitle"]] +[[!template text="""to do computing this way.""" start="00:06:04.080" video="mainVideo-rms" id="subtitle"]] +[[!template text="""So what are some good things""" start="00:06:06.520" video="mainVideo-rms" id="subtitle"]] +[[!template text="""that we would want instead of this?""" start="00:06:10.800" video="mainVideo-rms" id="subtitle"]] +[[!template new="1" text="""One thing we want""" start="00:06:14.640" video="mainVideo-rms" id="subtitle"]] +[[!template text="""is to update the "Introduction to Emacs Lisp Programming"""" start="00:06:19.874" video="mainVideo-rms" id="subtitle"]] +[[!template text="""by the late Bob Chassell.""" start="00:06:26.574" video="mainVideo-rms" id="subtitle"]] +[[!template text="""It's a book that makes it easy for even non-programmers""" start="00:06:29.480" video="mainVideo-rms" id="subtitle"]] +[[!template text="""to learn to write simple programs in Emacs Lisp.""" start="00:06:34.720" video="mainVideo-rms" id="subtitle"]] +[[!template text="""And from there, they can go on to do better.""" start="00:06:38.000" video="mainVideo-rms" id="subtitle"]] +[[!template text="""We made a pretty big change in Emacs Lisp""" start="00:06:41.200" video="mainVideo-rms" id="subtitle"]] +[[!template text="""a few years ago, implementing lexical scoping by default.""" start="00:06:44.800" video="mainVideo-rms" id="subtitle"]] +[[!template text="""Originally, Emacs Lisp used to be entirely dynamic scoping,""" start="00:06:49.480" video="mainVideo-rms" id="subtitle"]] +[[!template text="""like some of the earliest Lisp interpreters.""" start="00:06:57.360" video="mainVideo-rms" id="subtitle"]] +[[!template text="""This is a change that should have a careful job""" start="00:07:01.960" video="mainVideo-rms" id="subtitle"]] +[[!template text="""of updating for the introduction.""" start="00:07:06.520" video="mainVideo-rms" id="subtitle"]] +[[!template text="""I'm sure we've made it clear in the reference manual,""" start="00:07:10.560" video="mainVideo-rms" id="subtitle"]] +[[!template text="""but that's not what beginners read first.""" start="00:07:14.600" video="mainVideo-rms" id="subtitle"]] +[[!template text="""We need something to teach them in lexical scoping.""" start="00:07:18.400" video="mainVideo-rms" id="subtitle"]] +[[!template new="1" text="""Another thing we could use is to make it easier""" start="00:07:23.407" video="mainVideo-rms" id="subtitle"]] +[[!template text="""to understand the facilities that we have.""" start="00:07:30.440" video="mainVideo-rms" id="subtitle"]] +[[!template text="""For instance, I think every package""" start="00:07:33.880" video="mainVideo-rms" id="subtitle"]] +[[!template text="""that you might load into your Emacs and run""" start="00:07:38.560" video="mainVideo-rms" id="subtitle"]] +[[!template text="""should have a name that helps you remember what job it does.""" start="00:07:42.200" video="mainVideo-rms" id="subtitle"]] +[[!template text="""It doesn't have to be super long to tell you""" start="00:07:47.680" video="mainVideo-rms" id="subtitle"]] +[[!template text="""what job that package does.""" start="00:07:51.374" video="mainVideo-rms" id="subtitle"]] +[[!template text="""You can read the description to learn that.""" start="00:07:53.607" video="mainVideo-rms" id="subtitle"]] +[[!template text="""But once you've read the description,""" start="00:07:56.874" video="mainVideo-rms" id="subtitle"]] +[[!template text="""it should be memorable. When you see that name again,""" start="00:07:59.600" video="mainVideo-rms" id="subtitle"]] +[[!template text="""you should realize, oh, that's the package I could use""" start="00:08:03.074" video="mainVideo-rms" id="subtitle"]] +[[!template text="""to do "less" and so. We've had a tendency""" start="00:08:06.607" video="mainVideo-rms" id="subtitle"]] +[[!template text="""to give packages names for the sake of pure wordplay""" start="00:08:11.880" video="mainVideo-rms" id="subtitle"]] +[[!template text="""or lack of obvious meaning,""" start="00:08:17.940" video="mainVideo-rms" id="subtitle"]] +[[!template text="""and I think we should add on, to those packages,""" start="00:08:23.574" video="mainVideo-rms" id="subtitle"]] +[[!template text="""names that people will remember.""" start="00:08:28.189" video="mainVideo-rms" id="subtitle"]] +[[!template new="1" text="""Also, there are ways we can simplify the command interface""" start="00:08:31.807" video="mainVideo-rms" id="subtitle"]] +[[!template text="""of Emacs. For instance, there are many different parameters""" start="00:08:39.200" video="mainVideo-rms" id="subtitle"]] +[[!template text="""users can specify that can have several values,""" start="00:08:43.760" video="mainVideo-rms" id="subtitle"]] +[[!template text="""and sometimes you do various kinds of editing""" start="00:08:48.000" video="mainVideo-rms" id="subtitle"]] +[[!template text="""in one session. That's normal in Emacs,""" start="00:08:51.807" video="mainVideo-rms" id="subtitle"]] +[[!template text="""and you might want different parameter settings""" start="00:08:54.440" video="mainVideo-rms" id="subtitle"]] +[[!template text="""for different kinds of editing.""" start="00:08:57.840" video="mainVideo-rms" id="subtitle"]] +[[!template text="""So you specify parameter value A, do some editing,""" start="00:09:00.407" video="mainVideo-rms" id="subtitle"]] +[[!template text="""you specify parameter value B, and do some editing,""" start="00:09:06.200" video="mainVideo-rms" id="subtitle"]] +[[!template text="""and you'd switch back and forth, so you want""" start="00:09:10.240" video="mainVideo-rms" id="subtitle"]] +[[!template text="""to switch back and forth between these parameters.""" start="00:09:13.720" video="mainVideo-rms" id="subtitle"]] +[[!template text="""I think we should aim ...""" start="00:09:17.440" video="mainVideo-rms" id="subtitle"]] +[[!template text="""People have added various commands to switch""" start="00:09:22.707" video="mainVideo-rms" id="subtitle"]] +[[!template text="""between the last two or n values of this parameter,""" start="00:09:26.740" video="mainVideo-rms" id="subtitle"]] +[[!template text="""and another command to switch""" start="00:09:30.500" video="mainVideo-rms" id="subtitle"]] +[[!template text="""between the last two or n values of this [other] parameter,""" start="00:09:32.774" video="mainVideo-rms" id="subtitle"]] +[[!template text="""and then that parameter, you know, and that parameter.""" start="00:09:36.840" video="mainVideo-rms" id="subtitle"]] +[[!template text="""I think we should be able to have""" start="00:09:41.360" video="mainVideo-rms" id="subtitle"]] +[[!template text="""a switch between the last n values command""" start="00:09:44.767" video="mainVideo-rms" id="subtitle"]] +[[!template text="""that works on various different parameters,""" start="00:09:49.120" video="mainVideo-rms" id="subtitle"]] +[[!template text="""and thus makes it easy to remember""" start="00:09:54.320" video="mainVideo-rms" id="subtitle"]] +[[!template text="""that there is this facility.""" start="00:09:57.040" video="mainVideo-rms" id="subtitle"]] +[[!template text="""Because right now the commands to do that are all ad-hoc,""" start="00:09:59.340" video="mainVideo-rms" id="subtitle"]] +[[!template text="""and if you don't use a toggling among the last n values""" start="00:10:03.874" video="mainVideo-rms" id="subtitle"]] +[[!template text="""of a given parameter, you won't know how to do it.""" start="00:10:08.640" video="mainVideo-rms" id="subtitle"]] +[[!template text="""It won't be obvious that there is a way,""" start="00:10:11.840" video="mainVideo-rms" id="subtitle"]] +[[!template text="""so you'd have to go to a suitable manual""" start="00:10:15.367" video="mainVideo-rms" id="subtitle"]] +[[!template text="""and study for a while to think of that.""" start="00:10:17.767" video="mainVideo-rms" id="subtitle"]] +[[!template text="""We could make this easily discoverable.""" start="00:10:20.100" video="mainVideo-rms" id="subtitle"]] +[[!template new="1" text="""There is another kind of modularity that's important,""" start="00:10:23.620" video="mainVideo-rms" id="subtitle"]] +[[!template text="""and that is modularity at the level of maintenance.""" start="00:10:30.140" video="mainVideo-rms" id="subtitle"]] +[[!template text="""This is something all programmers know about, of course,""" start="00:10:34.100" video="mainVideo-rms" id="subtitle"]] +[[!template text="""but in Emacs, various parts interact with other parts,""" start="00:10:38.307" video="mainVideo-rms" id="subtitle"]] +[[!template text="""and we've tried to make them modular in design""" start="00:10:43.300" video="mainVideo-rms" id="subtitle"]] +[[!template text="""by using lots of hooks,""" start="00:10:47.980" video="mainVideo-rms" id="subtitle"]] +[[!template text="""but we haven't gone as far as we could.""" start="00:10:50.380" video="mainVideo-rms" id="subtitle"]] +[[!template text="""With some effort, we could find calls""" start="00:10:54.380" video="mainVideo-rms" id="subtitle"]] +[[!template text="""from over here to over there""" start="00:10:58.060" video="mainVideo-rms" id="subtitle"]] +[[!template text="""that could be replaced by use of hooks,""" start="00:11:00.220" video="mainVideo-rms" id="subtitle"]] +[[!template text="""so that we could reduce the extent""" start="00:11:03.140" video="mainVideo-rms" id="subtitle"]] +[[!template text="""to which you need to know about one part of Emacs""" start="00:11:05.940" video="mainVideo-rms" id="subtitle"]] +[[!template text="""to maintain another part of Emacs,""" start="00:11:09.974" video="mainVideo-rms" id="subtitle"]] +[[!template text="""and I think that as we keep adding more facilities to Emacs,""" start="00:11:12.707" video="mainVideo-rms" id="subtitle"]] +[[!template text="""this kind of modularity will be an investment that pays off.""" start="00:11:17.580" video="mainVideo-rms" id="subtitle"]] +[[!template new="1" text="""There’s one big area of features""" start="00:11:22.220" video="mainVideo-rms" id="subtitle"]] +[[!template text="""that I would like to see in Emacs,""" start="00:11:27.240" video="mainVideo-rms" id="subtitle"]] +[[!template text="""and that's the ability to edit""" start="00:11:30.800" video="mainVideo-rms" id="subtitle"]] +[[!template text="""formatted documents in WYSIWYG, to be able to edit""" start="00:11:33.180" video="mainVideo-rms" id="subtitle"]] +[[!template text="""a letter or a scientific mathematical paper with formulas""" start="00:11:40.340" video="mainVideo-rms" id="subtitle"]] +[[!template text="""or a nicely laid out manual,""" start="00:11:47.940" video="mainVideo-rms" id="subtitle"]] +[[!template text="""looking at what it's really going to look like.""" start="00:11:52.900" video="mainVideo-rms" id="subtitle"]] +[[!template text="""Now we have free software to do this.""" start="00:11:56.660" video="mainVideo-rms" id="subtitle"]] +[[!template text="""For instance, I use LibreOffice some of the time.""" start="00:12:00.460" video="mainVideo-rms" id="subtitle"]] +[[!template text="""Sometimes it's faster than writing something""" start="00:12:04.660" video="mainVideo-rms" id="subtitle"]] +[[!template text="""to be formatted with a text formatter""" start="00:12:08.100" video="mainVideo-rms" id="subtitle"]] +[[!template text="""and then formatting it. But when I use LibreOffice,""" start="00:12:11.860" video="mainVideo-rms" id="subtitle"]] +[[!template text="""I always miss the commands and facilities,""" start="00:12:16.180" video="mainVideo-rms" id="subtitle"]] +[[!template text="""the editing facilities of Emacs.""" start="00:12:19.220" video="mainVideo-rms" id="subtitle"]] +[[!template text="""I'd like to have them both together, something with""" start="00:12:22.674" video="mainVideo-rms" id="subtitle"]] +[[!template text="""the text formatting capabilities of LibreOffice""" start="00:12:26.500" video="mainVideo-rms" id="subtitle"]] +[[!template text="""or even better of TeX, but the editing commands""" start="00:12:30.340" video="mainVideo-rms" id="subtitle"]] +[[!template text="""and facilities of Emacs. This would be a big job,""" start="00:12:36.060" video="mainVideo-rms" id="subtitle"]] +[[!template text="""but it can be made up of a lot of medium-sized jobs.""" start="00:12:40.300" video="mainVideo-rms" id="subtitle"]] +[[!template text="""If people start working on those medium-sized jobs,""" start="00:12:45.980" video="mainVideo-rms" id="subtitle"]] +[[!template text="""then in a number of years""" start="00:12:50.020" video="mainVideo-rms" id="subtitle"]] +[[!template text="""we'll have something absolutely amazing.""" start="00:12:52.060" video="mainVideo-rms" id="subtitle"]] +[[!template new="1" text="""But one thing I think we really shouldn't have""" start="00:12:55.460" video="mainVideo-rms" id="subtitle"]] +[[!template text="""is the equivalent of a modern web browser.""" start="00:13:01.140" video="mainVideo-rms" id="subtitle"]] +[[!template text="""The World Wide Web started out in the 1990s""" start="00:13:06.500" video="mainVideo-rms" id="subtitle"]] +[[!template text="""in a much simpler form,""" start="00:13:10.940" video="mainVideo-rms" id="subtitle"]] +[[!template text="""where a web page described its contents,""" start="00:13:13.874" video="mainVideo-rms" id="subtitle"]] +[[!template text="""and the web browser laid them out,""" start="00:13:17.820" video="mainVideo-rms" id="subtitle"]] +[[!template text="""and the user could parameterize""" start="00:13:21.180" video="mainVideo-rms" id="subtitle"]] +[[!template text="""how to lay out various kinds of situations.""" start="00:13:23.807" video="mainVideo-rms" id="subtitle"]] +[[!template text="""This was not only convenient for users""" start="00:13:27.140" video="mainVideo-rms" id="subtitle"]] +[[!template text="""who wanted to control things and understand things,""" start="00:13:31.807" video="mainVideo-rms" id="subtitle"]] +[[!template text="""it was also freedom-respecting""" start="00:13:35.974" video="mainVideo-rms" id="subtitle"]] +[[!template text="""because the layout was done by your browser.""" start="00:13:39.740" video="mainVideo-rms" id="subtitle"]] +[[!template text="""If you had a free browser, you were in control,""" start="00:13:43.020" video="mainVideo-rms" id="subtitle"]] +[[!template text="""even though the browser was complicated already.""" start="00:13:48.100" video="mainVideo-rms" id="subtitle"]] +[[!template text="""But starting around two decades ago,""" start="00:13:51.620" video="mainVideo-rms" id="subtitle"]] +[[!template text="""there was an explosion in the complexity of browsers""" start="00:13:54.807" video="mainVideo-rms" id="subtitle"]] +[[!template text="""as companies wanted to have more and more control""" start="00:13:58.820" video="mainVideo-rms" id="subtitle"]] +[[!template text="""over exactly what would appear on a user's screen.""" start="00:14:02.780" video="mainVideo-rms" id="subtitle"]] +[[!template text="""So they invented lots of features to control that,""" start="00:14:07.700" video="mainVideo-rms" id="subtitle"]] +[[!template text="""features where the user couldn't really customize""" start="00:14:12.474" video="mainVideo-rms" id="subtitle"]] +[[!template text="""how something would actually appear""" start="00:14:16.007" video="mainVideo-rms" id="subtitle"]] +[[!template text="""because the whole point was that""" start="00:14:18.407" video="mainVideo-rms" id="subtitle"]] +[[!template text="""the company could control that.""" start="00:14:21.307" video="mainVideo-rms" id="subtitle"]] +[[!template text="""And JavaScript was sort of the ultimate level""" start="00:14:23.807" video="mainVideo-rms" id="subtitle"]] +[[!template text="""of "the company controls everything."""" start="00:14:27.020" video="mainVideo-rms" id="subtitle"]] +[[!template text="""Because of this, going beyond the simple level""" start="00:14:32.107" video="mainVideo-rms" id="subtitle"]] +[[!template text="""of web page formatting features in Emacs""" start="00:14:38.500" video="mainVideo-rms" id="subtitle"]] +[[!template text="""is basically heading down a path that leads to subjugation.""" start="00:14:43.540" video="mainVideo-rms" id="subtitle"]] +[[!template text="""It's a path that we need to stay away from.""" start="00:14:50.940" video="mainVideo-rms" id="subtitle"]] +[[!template text="""It's a path to an unjust world of computing""" start="00:14:54.740" video="mainVideo-rms" id="subtitle"]] +[[!template text="""that you can easily see around you.""" start="00:15:00.407" video="mainVideo-rms" id="subtitle"]] +[[!template text="""Web browsers nowadays are designed to display ads""" start="00:15:03.420" video="mainVideo-rms" id="subtitle"]] +[[!template text="""that you may not want to see.""" start="00:15:08.700" video="mainVideo-rms" id="subtitle"]] +[[!template text="""They're designed for DRM.""" start="00:15:11.667" video="mainVideo-rms" id="subtitle"]] +[[!template text="""They're designed for companies to snoop on you""" start="00:15:17.900" video="mainVideo-rms" id="subtitle"]] +[[!template text="""in unobvious ways. And all of that""" start="00:15:22.420" video="mainVideo-rms" id="subtitle"]] +[[!template text="""we should protect ourselves from,""" start="00:15:26.300" video="mainVideo-rms" id="subtitle"]] +[[!template text="""protect our users from.""" start="00:15:28.980" video="mainVideo-rms" id="subtitle"]] +[[!template new="1" text="""So I hope that some of you will be enthusiastic""" start="00:15:31.300" video="mainVideo-rms" id="subtitle"]] +[[!template text="""about some of these changes,""" start="00:15:39.980" video="mainVideo-rms" id="subtitle"]] +[[!template text="""especially towards editing formatted text.""" start="00:15:42.060" video="mainVideo-rms" id="subtitle"]] +[[!template text="""If you want to get involved, we have""" start="00:15:46.940" video="mainVideo-rms" id="subtitle"]] +[[!template text="""a development discussion list called emacs-devel@gnu.org.""" start="00:15:51.980" video="mainVideo-rms" id="subtitle"]] +[[!template text="""You can join that. You can also,""" start="00:15:57.820" video="mainVideo-rms" id="subtitle"]] +[[!template text="""if you get interested in working on a package""" start="00:16:02.380" video="mainVideo-rms" id="subtitle"]] +[[!template text="""and you're not an experienced Emacs Lisp developer,""" start="00:16:05.740" video="mainVideo-rms" id="subtitle"]] +[[!template text="""it's a very good idea to look for an experienced developer""" start="00:16:09.500" video="mainVideo-rms" id="subtitle"]] +[[!template text="""to talk with.""" start="00:16:13.740" video="mainVideo-rms" id="subtitle"]] +[[!template text="""Make sure you can write programs in Emacs Lisp first.""" start="00:16:14.980" video="mainVideo-rms" id="subtitle"]] +[[!template text="""It's not useful to take up the expert’s time learning that.""" start="00:16:19.220" video="mainVideo-rms" id="subtitle"]] +[[!template text="""You can still learn it from the introduction.""" start="00:16:24.260" video="mainVideo-rms" id="subtitle"]] +[[!template text="""But after that, when it's a matter of how to design""" start="00:16:27.407" video="mainVideo-rms" id="subtitle"]] +[[!template text="""your favorite package, do have a discussion with developers.""" start="00:16:31.660" video="mainVideo-rms" id="subtitle"]] +[[!template text="""They'll give you design ideas""" start="00:16:36.180" video="mainVideo-rms" id="subtitle"]] +[[!template text="""that will help you make a package that we put into Emacs.""" start="00:16:39.060" video="mainVideo-rms" id="subtitle"]] +[[!template text="""Now it's time for questions.""" start="00:16:43.180" video="mainVideo-rms" id="subtitle"]] + + + +Captioner: anush Questions or comments? Please e-mail [emacsconf-org-private@gnu.org](mailto:emacsconf-org-private@gnu.org?subject=Comment%20for%20EmacsConf%202022%20rms%3A%20What%20I%27d%20like%20to%20see%20in%20Emacs) diff --git a/2022/info/rms-before.md b/2022/info/rms-before.md index d1bdd717..e3d414b3 100644 --- a/2022/info/rms-before.md +++ b/2022/info/rms-before.md @@ -3,16 +3,36 @@ For context, we will first play Richard Stallman's 2014 TEDx talk called "Free S The following image shows where the talk is in the schedule for Sun 2022-12-04. Solid lines show talks with Q&A via BigBlueButton. Dashed lines show talks with Q&A via IRC or Etherpad.<div class="schedule-in-context schedule-svg-container" data-slug="rms"> -<svg width="800" height="150" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <title> Schedule for Sunday</title> <rect width="800" height="150" x="0" y="0" fill="white"></rect> <text font-size="10" fill="black" y="12" x="3"> Sunday</text> <a href="/2022/talks/sun-open" title="Sunday opening remarks" data-slug="sun-open"> <title> 9:00- 9:05 Sunday opening remarks</title> <rect x="0" y="15" opacity="0.5" width="7" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(5,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sun-open</text></g></a> <a href="/2022/talks/survey" title="Results of the 2022 Emacs Survey" data-slug="survey"> <title> 9:05- 9:25 Results of the 2022 Emacs Survey</title> <rect x="7" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(36,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> survey</text></g></a> <a href="/2022/talks/orgyear" title="This Year in Org" data-slug="orgyear"> <title> 9:35- 9:45 This Year in Org</title> <rect x="54" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(67,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> orgyear</text></g></a> <a href="/2022/talks/rolodex" title="Build a Zettelkasten with the Hyperbole Rolodex" data-slug="rolodex"> <title> 9:55-10:20 Build a Zettelkasten with the Hyperbole Rolodex</title> <rect x="86" y="15" opacity="0.5" width="39" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(123,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> rolodex</text></g></a> <a href="/2022/talks/orgsuperlinks" title="Linking headings with org-super-links (poor-man's Zettelkasten)" data-slug="orgsuperlinks"> <title> 10:40-10:50 Linking headings with org-super-links (poor-man's Zettelkasten)</title> <rect x="156" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(169,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> orgsuperlinks</text></g></a> <a href="/2022/talks/orgvm" title="orgvm: a simple HTTP server for org" data-slug="orgvm"> <title> 11:10-11:20 orgvm: a simple HTTP server for org</title> <rect x="203" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(216,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> orgvm</text></g></a> <a href="/2022/talks/hyperorg" title="Powerful productivity with Hyperbole and Org Mode" data-slug="hyperorg"> <title> 1:00- 1:30 Powerful productivity with Hyperbole and Org Mode</title> <rect x="376" y="15" opacity="0.5" width="47" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(421,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> hyperorg</text></g></a> <a href="/2022/talks/workflows" title="Org workflows for developers" data-slug="workflows"> <title> 1:50- 2:15 Org workflows for developers</title> <rect x="454" y="15" opacity="0.5" width="39" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(491,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> workflows</text></g></a> <a href="/2022/talks/grail" title="GRAIL---A Generalized Representation and Aggregation of Information Layers" data-slug="grail"> <title> 2:35- 2:55 GRAIL---A Generalized Representation and Aggregation of Information Layers</title> <rect x="525" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(554,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> grail</text></g></a> <a href="/2022/talks/indieweb" title="Putting Org Mode on the Indieweb" data-slug="indieweb"> <title> 3:25- 3:45 Putting Org Mode on the Indieweb</title> <rect x="603" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(632,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> indieweb</text></g></a> <a href="/2022/talks/devel" title="Emacs development updates" data-slug="devel"> <title> 4:05- 4:15 Emacs development updates</title> <rect x="666" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(679,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> devel</text></g></a> <a href="/2022/talks/fanfare" title="Fanfare for the Common Emacs User" data-slug="fanfare"> <title> 4:25- 4:35 Fanfare for the Common Emacs User</title> <rect x="698" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(711,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> fanfare</text></g></a> <a href="/2022/talks/sun-close" title="Sunday closing remarks" data-slug="sun-close"> <title> 4:50- 5:00 Sunday closing remarks</title> <rect x="737" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(750,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sun-close</text></g></a> <a href="/2022/talks/rde" title="rde Emacs introduction" data-slug="rde"> <title> 10:00-10:25 rde Emacs introduction</title> <rect x="94" y="75" opacity="0.5" width="39" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(131,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> rde</text></g></a> <a href="/2022/talks/justl" title="justl: Driving recipes within Emacs" data-slug="justl"> <title> 10:50-11:05 justl: Driving recipes within Emacs</title> <rect x="172" y="75" opacity="0.5" width="23" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(193,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> justl</text></g></a> <a href="/2022/talks/rms" title="What I'd like to see in Emacs" data-slug="rms"> <title> 11:15-11:35 What I'd like to see in Emacs</title> <rect stroke-width="3" x="211" y="75" opacity="0.8" width="31" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(240,133)"> <text font-weight="bold" fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> rms</text></g></a> <a href="/2022/talks/detached" title="Getting detached from Emacs" data-slug="detached"> <title> 1:00- 1:15 Getting detached from Emacs</title> <rect x="376" y="75" opacity="0.5" width="23" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(397,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> detached</text></g></a> <a href="/2022/talks/eshell" title="Top 10 reasons why you should be using Eshell" data-slug="eshell"> <title> 1:40- 1:55 Top 10 reasons why you should be using Eshell</title> <rect x="439" y="75" opacity="0.5" width="23" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(460,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> eshell</text></g></a> <a href="/2022/talks/async" title="Emacs was async before async was cool" data-slug="async"> <title> 2:20- 2:40 Emacs was async before async was cool</title> <rect x="501" y="75" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(530,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> async</text></g></a> <a href="/2022/talks/dbus" title="The Wheels on D-Bus" data-slug="dbus"> <title> 3:15- 3:35 The Wheels on D-Bus</title> <rect x="588" y="75" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(617,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> dbus</text></g></a> <a href="/2022/talks/localizing" title="Pre-localizing Emacs" data-slug="localizing"> <title> 4:00- 4:10 Pre-localizing Emacs</title> <rect x="658" y="75" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(671,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> localizing</text></g></a> <a href="/2022/talks/python" title="Short hyperlinks to Python docs" data-slug="python"> <title> 4:30- 4:35 Short hyperlinks to Python docs</title> <rect x="705" y="75" opacity="0.5" width="7" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(710,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> python</text></g></a> <g transform="translate(0,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 9 AM</text></g> <g transform="translate(94,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 10 AM</text></g> <g transform="translate(188,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 11 AM</text></g> <g transform="translate(282,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 12 PM</text></g> <g transform="translate(376,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 1 PM</text></g> <g transform="translate(470,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 2 PM</text></g> <g transform="translate(564,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 3 PM</text></g> <g transform="translate(658,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 4 PM</text></g> <g transform="translate(752,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 5 PM</text></g></svg> +<svg width="800" height="150" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <title> Schedule for Sunday</title> <rect width="800" height="150" x="0" y="0" fill="white"></rect> <text font-size="10" fill="black" y="12" x="3"> Sunday</text> <a href="/2022/talks/sun-open" title="Sunday opening remarks" data-slug="sun-open"> <title> 9:00- 9:05 Sunday opening remarks</title> <rect x="0" y="15" opacity="0.5" width="7" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(5,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sun-open</text></g></a> <a href="/2022/talks/survey" title="Results of the 2022 Emacs Survey" data-slug="survey"> <title> 9:06- 9:26 Results of the 2022 Emacs Survey</title> <rect x="9" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(38,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> survey</text></g></a> <a href="/2022/talks/orgyear" title="This Year in Org" data-slug="orgyear"> <title> 9:35- 9:45 This Year in Org</title> <rect x="54" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(67,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> orgyear</text></g></a> <a href="/2022/talks/rolodex" title="Build a Zettelkasten with the Hyperbole Rolodex" data-slug="rolodex"> <title> 9:57-10:22 Build a Zettelkasten with the Hyperbole Rolodex</title> <rect x="89" y="15" opacity="0.5" width="39" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(126,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> rolodex</text></g></a> <a href="/2022/talks/orgsuperlinks" title="Linking headings with org-super-links (poor-man's Zettelkasten)" data-slug="orgsuperlinks"> <title> 10:40-10:50 Linking headings with org-super-links (poor-man's Zettelkasten)</title> <rect x="156" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(169,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> orgsuperlinks</text></g></a> <a href="/2022/talks/orgvm" title="orgvm: a simple HTTP server for org" data-slug="orgvm"> <title> 11:10-11:20 orgvm: a simple HTTP server for org</title> <rect x="203" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(216,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> orgvm</text></g></a> <a href="/2022/talks/hyperorg" title="Powerful productivity with Hyperbole and Org Mode" data-slug="hyperorg"> <title> 1:00- 1:30 Powerful productivity with Hyperbole and Org Mode</title> <rect x="376" y="15" opacity="0.5" width="47" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(421,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> hyperorg</text></g></a> <a href="/2022/talks/workflows" title="Org workflows for developers" data-slug="workflows"> <title> 1:50- 2:15 Org workflows for developers</title> <rect x="454" y="15" opacity="0.5" width="39" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(491,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> workflows</text></g></a> <a href="/2022/talks/grail" title="GRAIL---A Generalized Representation and Aggregation of Information Layers" data-slug="grail"> <title> 2:35- 2:55 GRAIL---A Generalized Representation and Aggregation of Information Layers</title> <rect x="525" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(554,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> grail</text></g></a> <a href="/2022/talks/indieweb" title="Putting Org Mode on the Indieweb" data-slug="indieweb"> <title> 3:25- 3:45 Putting Org Mode on the Indieweb</title> <rect x="603" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(632,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> indieweb</text></g></a> <a href="/2022/talks/devel" title="Emacs development updates" data-slug="devel"> <title> 4:05- 4:15 Emacs development updates</title> <rect x="666" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(679,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> devel</text></g></a> <a href="/2022/talks/fanfare" title="Fanfare for the Common Emacs User" data-slug="fanfare"> <title> 4:25- 4:35 Fanfare for the Common Emacs User</title> <rect x="698" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(711,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> fanfare</text></g></a> <a href="/2022/talks/sun-close" title="Sunday closing remarks" data-slug="sun-close"> <title> 4:50- 5:00 Sunday closing remarks</title> <rect x="737" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(750,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sun-close</text></g></a> <a href="/2022/talks/rde" title="rde Emacs introduction" data-slug="rde"> <title> 10:00-10:25 rde Emacs introduction</title> <rect x="94" y="75" opacity="0.5" width="39" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(131,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> rde</text></g></a> <a href="/2022/talks/justl" title="justl: Driving recipes within Emacs" data-slug="justl"> <title> 10:50-11:05 justl: Driving recipes within Emacs</title> <rect x="172" y="75" opacity="0.5" width="23" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(193,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> justl</text></g></a> <a href="/2022/talks/rms" title="What I'd like to see in Emacs" data-slug="rms"> <title> 11:15-11:35 What I'd like to see in Emacs</title> <rect stroke-width="3" x="211" y="75" opacity="0.8" width="31" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(240,133)"> <text font-weight="bold" fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> rms</text></g></a> <a href="/2022/talks/detached" title="Getting detached from Emacs" data-slug="detached"> <title> 1:01- 1:16 Getting detached from Emacs</title> <rect x="378" y="75" opacity="0.5" width="23" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(399,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> detached</text></g></a> <a href="/2022/talks/eshell" title="Top 10 reasons why you should be using Eshell" data-slug="eshell"> <title> 1:40- 1:55 Top 10 reasons why you should be using Eshell</title> <rect x="439" y="75" opacity="0.5" width="23" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(460,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> eshell</text></g></a> <a href="/2022/talks/async" title="Emacs was async before async was cool" data-slug="async"> <title> 2:20- 2:40 Emacs was async before async was cool</title> <rect x="501" y="75" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(530,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> async</text></g></a> <a href="/2022/talks/dbus" title="The Wheels on D-Bus" data-slug="dbus"> <title> 3:15- 3:35 The Wheels on D-Bus</title> <rect x="588" y="75" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(617,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> dbus</text></g></a> <a href="/2022/talks/localizing" title="Pre-localizing Emacs" data-slug="localizing"> <title> 4:00- 4:10 Pre-localizing Emacs</title> <rect x="658" y="75" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(671,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> localizing</text></g></a> <a href="/2022/talks/python" title="Short hyperlinks to Python docs" data-slug="python"> <title> 4:30- 4:35 Short hyperlinks to Python docs</title> <rect x="705" y="75" opacity="0.5" width="7" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(710,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> python</text></g></a> <g transform="translate(0,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 9 AM</text></g> <g transform="translate(94,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 10 AM</text></g> <g transform="translate(188,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 11 AM</text></g> <g transform="translate(282,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 12 PM</text></g> <g transform="translate(376,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 1 PM</text></g> <g transform="translate(470,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 2 PM</text></g> <g transform="translate(564,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 3 PM</text></g> <g transform="translate(658,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 4 PM</text></g> <g transform="translate(752,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 5 PM</text></g></svg> </div> [[!toc ]] Format: 18-min talk followed by moderated Mumble Q&A (<a href="https://chat.emacsconf.org/?join=emacsconf,emacsconf-org,emacsconf-accessible,emacsconf-gen,emacsconf-dev">#emacsconf-dev</a>) Etherpad: <https://pad.emacsconf.org/2022-rms> Discuss on IRC: [#emacsconf-dev](https://chat.emacsconf.org/?join=emacsconf,emacsconf-dev) -Status: Talk captioned +Status: Now playing on the conference livestream <div>Times in different timezones:</div><div class="times" start="2022-12-04T16:15:00Z" end="2022-12-04T16:35:00Z"><div class="conf-time">Sunday, Dec 4 2022, ~11:15 AM - 11:35 AM EST (US/Eastern)</div><div class="others"><div>which is the same as:</div>Sunday, Dec 4 2022, ~10:15 AM - 10:35 AM CST (US/Central)<br />Sunday, Dec 4 2022, ~9:15 AM - 9:35 AM MST (US/Mountain)<br />Sunday, Dec 4 2022, ~8:15 AM - 8:35 AM PST (US/Pacific)<br />Sunday, Dec 4 2022, ~4:15 PM - 4:35 PM UTC <br />Sunday, Dec 4 2022, ~5:15 PM - 5:35 PM CET (Europe/Paris)<br />Sunday, Dec 4 2022, ~6:15 PM - 6:35 PM EET (Europe/Athens)<br />Sunday, Dec 4 2022, ~9:45 PM - 10:05 PM IST (Asia/Kolkata)<br />Monday, Dec 5 2022, ~12:15 AM - 12:35 AM +08 (Asia/Singapore)<br />Monday, Dec 5 2022, ~1:15 AM - 1:35 AM JST (Asia/Tokyo)</div></div><div><a href="/2022/watch/dev/">Find out how to watch and participate</a></div> +[[!template id="vid" vidid="rms-mainVideo" src="https://media.emacsconf.org/2022/emacsconf-2022-rms--what-id-like-to-see-in-emacs--main.webm" poster="https://media.emacsconf.org/2022/emacsconf-2022-rms--what-id-like-to-see-in-emacs--main.png" captions="""<track label="English" kind="captions" srclang="en" src="/2022/captions/emacsconf-2022-rms--what-id-like-to-see-in-emacs--main.vtt" default />""" +size="81M" duration="17:01" other_resources="""[Download --main.webm (81MB)](https://media.emacsconf.org/2022/emacsconf-2022-rms--what-id-like-to-see-in-emacs--main.webm) +[Download --main.vtt](https://media.emacsconf.org/2022/emacsconf-2022-rms--what-id-like-to-see-in-emacs--main.vtt) +[Download --main--chapters.vtt](https://media.emacsconf.org/2022/emacsconf-2022-rms--what-id-like-to-see-in-emacs--main--chapters.vtt) +[View transcript](https://emacsconf.org/2022/talks/rms#rms-mainVideo-transcript) +[View on Toobnix](https://toobnix.org/w/oWWwS9T9BTQU8DnJ2g56vm) +"""]] +[[!template id="chapters" vidid="rms-mainVideo" data=""" +00:00:00.000 GNU Emacs and its purpose +02:33.640 Lisp as the extension language +03:46.280 JavaScript versus freedom +06:14.640 Updating "An Introduction to Emacs Lisp Programming" +07:23.407 More memorable package names +08:31.807 Simplifying the command interface +10:23.620 Modularity +11:22.220 Editing formatted text +12:55.460 Not the equivalent of a modern web browser +15:31.300 Getting involved + +"""]] # Description |