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