summaryrefslogtreecommitdiffstats
path: root/2021/captions/eaf.md
blob: 2e9a618cedaa195a6535f7ec1e0000d480832e9f (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
<a name="transcript"></a>
# Transcript

[[!template new="1" text="Hi, my name is Matthew Zeng," start="00:00:03.040" video="mainVideo" id=subtitle]]
[[!template text="aka MT or Mingde." start="00:00:05.206" video="mainVideo" id=subtitle]]
[[!template text="I am one of the maintainers" start="00:00:14.286" video="mainVideo" id=subtitle]]
[[!template text="I was also here last year during EmacsConf2020" start="00:00:18.566" video="mainVideo" id=subtitle]]
[[!template text="and did a 20 minute presentation" start="00:00:22.606" video="mainVideo" id=subtitle]]
[[!template text="as well as a small demo." start="00:00:26.606" video="mainVideo" id=subtitle]]
[[!template text="A lot of things had changed since 2020," start="00:00:28.486" video="mainVideo" id=subtitle]]
[[!template text="and that's why today I'm here to present:" start="00:00:31.966" video="mainVideo" id=subtitle]]
[[!template text="Emacs Application Framework, A 2021 Update." start="00:00:34.406" video="mainVideo" id=subtitle]]
[[!template new="1" text="So we all know Emacs," start="00:00:38.046" video="mainVideo" id=subtitle]]
[[!template text="and we definitely know that" start="00:00:41.086" video="mainVideo" id=subtitle]]
[[!template text="Emacs is not just a text editor," start="00:00:42.326" video="mainVideo" id=subtitle]]
[[!template text="but a text-centric work environment," start="00:00:44.486" video="mainVideo" id=subtitle]]
[[!template text="We all want that, right?" start="00:00:53.126" video="mainVideo" id=subtitle]]
[[!template text="Therefore the EAF project wants to" start="00:00:55.361" video="mainVideo" id=subtitle]]
[[!template text="solve this problem while also" start="00:00:58.366" video="mainVideo" id=subtitle]]
[[!template text="retaining the rich Emacs ecosystem" start="00:01:00.286" video="mainVideo" id=subtitle]]
[[!template text="and its customizability and extensibility." start="00:01:02.806" video="mainVideo" id=subtitle]]
[[!template text="The solution is to outsource the hard part" start="00:01:06.046" video="mainVideo" id=subtitle]]
[[!template text="to Python and NodeJS" start="00:01:10.726" video="mainVideo" id=subtitle]]
[[!template text="by bridging Elisp with them" start="00:01:12.486" video="mainVideo" id=subtitle]]
[[!template text="so that Python and JavaScript" start="00:01:14.366" video="mainVideo" id=subtitle]]
[[!template text="can do the hard work" start="00:01:16.126" video="mainVideo" id=subtitle]]
[[!template text="and minimize the Elisp workload," start="00:01:17.926" video="mainVideo" id=subtitle]]
[[!template text="Do note that Python and JavaScript" start="00:01:24.446" video="mainVideo" id=subtitle]]
[[!template text="already have a very mature ecosystem" start="00:01:27.646" video="mainVideo" id=subtitle]]
[[!template text="that provides a foundation" start="00:01:30.406" video="mainVideo" id=subtitle]]
[[!template text="to Python and JavaScript ecosystems," start="00:01:38.006" video="mainVideo" id=subtitle]]
[[!template text="modern multimedia apps too." start="00:01:42.286" video="mainVideo" id=subtitle]]
[[!template text="As we're on a tight schedule today," start="00:01:44.366" video="mainVideo" id=subtitle]]
[[!template text="I can't go into every detail" start="00:01:47.606" video="mainVideo" id=subtitle]]
[[!template text="about how EAF achieves this." start="00:01:49.726" video="mainVideo" id=subtitle]]
[[!template text="I did go through a lot of things" start="00:01:51.486" video="mainVideo" id=subtitle]]
[[!template text="during last year's presentation," start="00:01:53.606" video="mainVideo" id=subtitle]]
[[!template text="to check out that presentation," start="00:01:57.326" video="mainVideo" id=subtitle]]
[[!template text="Today we're focusing on *what changed*." start="00:02:01.686" video="mainVideo" id=subtitle]]
[[!template new="1" text="Now the first change" start="00:02:05.726" video="mainVideo" id=subtitle]]
[[!template text="that you'll definitely notice" start="00:02:09.606" video="mainVideo" id=subtitle]]
[[!template text="This logo uses gearwheels" start="00:02:12.686" video="mainVideo" id=subtitle]]
[[!template text="to web and multimedia applications" start="00:02:18.486" video="mainVideo" id=subtitle]]
[[!template new="1" text="Since last year, EAF has replaced" start="00:02:23.286" video="mainVideo" id=subtitle]]
[[!template text="the DBus communication technology" start="00:02:28.726" video="mainVideo" id=subtitle]]
[[!template text="with the cross-platform EPC," start="00:02:30.886" video="mainVideo" id=subtitle]]
[[!template text="This and some other changes" start="00:02:42.160" video="mainVideo" id=subtitle]]
[[!template text="enable EAF to support Windows," start="00:02:43.760" video="mainVideo" id=subtitle]]
[[!template text="Windows 10 and Windows Subsystem for Linux," start="00:02:46.080" video="mainVideo" id=subtitle]]
[[!template text="as well as all distros that support" start="00:02:49.519" video="mainVideo" id=subtitle]]
[[!template text="pacman, apt, dnf, pkg," start="00:02:51.840" video="mainVideo" id=subtitle]]
[[!template text="zypper package installer commands," start="00:02:54.319" video="mainVideo" id=subtitle]]
[[!template text="which includes Arch-based, Debian," start="00:02:56.959" video="mainVideo" id=subtitle]]
[[!template text="or Ubuntu-based, Fedora, etc." start="00:02:59.840" video="mainVideo" id=subtitle]]
[[!template text="However, do note that the maOS support" start="00:03:04.720" video="mainVideo" id=subtitle]]
[[!template text="works with some known issues." start="00:03:08.239" video="mainVideo" id=subtitle]]
[[!template text="Have a look if you want to try out." start="00:03:10.319" video="mainVideo" id=subtitle]]
[[!template new="1" text="Previously, EAF was able to make Elisp" start="00:03:15.360" video="mainVideo" id=subtitle]]
[[!template text="communicate with Python, as well as" start="00:03:18.400" video="mainVideo" id=subtitle]]
[[!template text="Python to communicate with JavaScript," start="00:03:20.720" video="mainVideo" id=subtitle]]
[[!template text="meaning that Elisp can call" start="00:03:23.280" video="mainVideo" id=subtitle]]
[[!template text="Python functions and vice versa," start="00:03:24.959" video="mainVideo" id=subtitle]]
[[!template text="and Python can call JavaScript functions" start="00:03:27.280" video="mainVideo" id=subtitle]]
[[!template text="and vice versa, but if you want Elisp" start="00:03:29.680" video="mainVideo" id=subtitle]]
[[!template text="to communicate with JavaScript," start="00:03:32.560" video="mainVideo" id=subtitle]]
[[!template text="you have to go through Python," start="00:03:34.720" video="mainVideo" id=subtitle]]
[[!template text="which is rather troublesome." start="00:03:36.239" video="mainVideo" id=subtitle]]
[[!template text="Now, thanks to the EPC," start="00:03:38.879" video="mainVideo" id=subtitle]]
[[!template text="Elisp can communicate" start="00:03:41.120" video="mainVideo" id=subtitle]]
[[!template text="with JavaScript directly" start="00:03:42.400" video="mainVideo" id=subtitle]]
[[!template text="using =eval_js= function" start="00:03:43.840" video="mainVideo" id=subtitle]]
[[!template text="and =eval_emacs_function=" start="00:03:45.519" video="mainVideo" id=subtitle]]
[[!template text="in Elisp and Python respectively." start="00:03:47.040" video="mainVideo" id=subtitle]]
[[!template text="This greatly simplifies the code" start="00:03:49.840" video="mainVideo" id=subtitle]]
[[!template text="that will be needed" start="00:03:51.840" video="mainVideo" id=subtitle]]
[[!template text="to write a web app in EAF." start="00:03:52.640" video="mainVideo" id=subtitle]]
[[!template new="1" text="Speaking of web applications," start="00:03:56.959" video="mainVideo" id=subtitle]]
[[!template text="VueJS is a web framework" start="00:03:59.120" video="mainVideo" id=subtitle]]
[[!template text="that's been gaining a lot of popularity" start="00:04:01.200" video="mainVideo" id=subtitle]]
[[!template text="in recent years" start="00:04:03.840" video="mainVideo" id=subtitle]]
[[!template text="for its simplicity and functionality." start="00:04:04.720" video="mainVideo" id=subtitle]]
[[!template text="In the past, you were only able to write" start="00:04:08.959" video="mainVideo" id=subtitle]]
[[!template text="simple JavaScript and HTML web apps" start="00:04:11.840" video="mainVideo" id=subtitle]]
[[!template text="for EAF. It was quite some work" start="00:04:14.319" video="mainVideo" id=subtitle]]
[[!template text="to create a full-featured web application." start="00:04:17.280" video="mainVideo" id=subtitle]]
[[!template text="Now you can write new apps using EAF" start="00:04:20.880" video="mainVideo" id=subtitle]]
[[!template text="that work seamlessly with Emacs and Elisp." start="00:04:23.360" video="mainVideo" id=subtitle]]
[[!template text="There are a few existing EAF apps" start="00:04:27.919" video="mainVideo" id=subtitle]]
[[!template text="written with Vue already" start="00:04:30.880" video="mainVideo" id=subtitle]]
[[!template text="to demonstrate the possibilities" start="00:04:32.800" video="mainVideo" id=subtitle]]
[[!template text="of Vue-based extensions in Emacs." start="00:04:34.639" video="mainVideo" id=subtitle]]
[[!template text="The first one is the EAF File Manager," start="00:04:38.720" video="mainVideo" id=subtitle]]
[[!template text="written by ManateeLazycat himself," start="00:04:41.520" video="mainVideo" id=subtitle]]
[[!template text="as an alternative option to dired," start="00:04:44.160" video="mainVideo" id=subtitle]]
[[!template text="as he found dired's performance" start="00:04:46.400" video="mainVideo" id=subtitle]]
[[!template text="to lag considerably" start="00:04:47.919" video="mainVideo" id=subtitle]]
[[!template text="when there are way too many files." start="00:04:49.280" video="mainVideo" id=subtitle]]
[[!template text="It supports wdired and fd functionality," start="00:04:52.240" video="mainVideo" id=subtitle]]
[[!template text="and let me demonstrate that to you." start="00:04:56.080" video="mainVideo" id=subtitle]]
[[!template text="See? And this is the app." start="00:05:01.600" video="mainVideo" id=subtitle]]
[[!template text="Go back here." start="00:05:06.160" video="mainVideo" id=subtitle]]
[[!template text="Another one is the EAF RSS Reader," start="00:05:08.639" video="mainVideo" id=subtitle]]
[[!template text="written by our Summer of Code 2021 student" start="00:05:12.240" video="mainVideo" id=subtitle]]
[[!template text="ShaoChenHeng. It is a fast RSS reader" start="00:05:15.039" video="mainVideo" id=subtitle]]
[[!template text="that uses the EAF browser for previews," start="00:05:18.240" video="mainVideo" id=subtitle]]
[[!template text="and let me demo that to you as well." start="00:05:21.600" video="mainVideo" id=subtitle]]
[[!template text="Pragmatic Emacs." start="00:05:32.479" video="mainVideo" id=subtitle]]
[[!template text="And you can view every site" start="00:05:35.039" video="mainVideo" id=subtitle]]
[[!template text="in the EAF Browser." start="00:05:37.199" video="mainVideo" id=subtitle]]
[[!template new="1" text="To ease the process" start="00:05:45.360" video="mainVideo" id=subtitle]]
[[!template text="of creating a new EAF application," start="00:05:46.880" video="mainVideo" id=subtitle]]
[[!template text="we've separated the EAF core and its apps," start="00:05:49.840" video="mainVideo" id=subtitle]]
[[!template text="so that EAF apps now have" start="00:05:52.880" video="mainVideo" id=subtitle]]
[[!template text="their individual repositories." start="00:05:54.479" video="mainVideo" id=subtitle]]
[[!template text="You can find them under" start="00:05:56.800" video="mainVideo" id=subtitle]]
[[!template text="the emacs-eaf GitHub organization." start="00:05:58.000" video="mainVideo" id=subtitle]]
[[!template text="Because of the number of EAF apps" start="00:06:02.000" video="mainVideo" id=subtitle]]
[[!template text="and their dependencies" start="00:06:04.560" video="mainVideo" id=subtitle]]
[[!template text="that vary from system to system," start="00:06:05.840" video="mainVideo" id=subtitle]]
[[!template text="we've also introduced a new" start="00:06:08.319" video="mainVideo" id=subtitle]]
[[!template text="=M-x eaf-install-and-update= command" start="00:06:10.080" video="mainVideo" id=subtitle]]
[[!template text="which is a wrapper around the new" start="00:06:12.639" video="mainVideo" id=subtitle]]
[[!template text="install-eaf python script" start="00:06:14.560" video="mainVideo" id=subtitle]]
[[!template text="dedicated to installing, updating," start="00:06:17.039" video="mainVideo" id=subtitle]]
[[!template text="and maintaining EAF apps" start="00:06:19.280" video="mainVideo" id=subtitle]]
[[!template text="and their dependencies" start="00:06:20.720" video="mainVideo" id=subtitle]]
[[!template text="for the end user." start="00:06:21.680" video="mainVideo" id=subtitle]]
[[!template text="Now it is very easy" start="00:06:24.160" video="mainVideo" id=subtitle]]
[[!template text="to create a new EAF app." start="00:06:25.600" video="mainVideo" id=subtitle]]
[[!template text="You just need to do it." start="00:06:27.440" video="mainVideo" id=subtitle]]
[[!template text="You can just do it in your own repository," start="00:06:29.039" video="mainVideo" id=subtitle]]
[[!template text="such as in GitHub, GitLab, or wherever." start="00:06:31.120" video="mainVideo" id=subtitle]]
[[!template text="The first thing to do is" start="00:06:34.720" video="mainVideo" id=subtitle]]
[[!template text="to fork the eaf-demo or the eaf-vue-demo" start="00:06:36.160" video="mainVideo" id=subtitle]]
[[!template text="as a starting template," start="00:06:39.520" video="mainVideo" id=subtitle]]
[[!template text="then update the dependencies.json file" start="00:06:41.280" video="mainVideo" id=subtitle]]
[[!template text="to list the new dependencies you introduced" start="00:06:43.520" video="mainVideo" id=subtitle]]
[[!template text="on various systems." start="00:06:46.400" video="mainVideo" id=subtitle]]
[[!template text="Afterwards, once your app is finished," start="00:06:48.560" video="mainVideo" id=subtitle]]
[[!template text="you simply need to submit a PR" start="00:06:51.199" video="mainVideo" id=subtitle]]
[[!template text="to the EAF core" start="00:06:53.039" video="mainVideo" id=subtitle]]
[[!template text="that modifies the applications.json list" start="00:06:54.000" video="mainVideo" id=subtitle]]
[[!template text="to include your new app. And that's it." start="00:06:56.720" video="mainVideo" id=subtitle]]
[[!template text="Come try it out and write your own" start="00:07:03.039" video="mainVideo" id=subtitle]]
[[!template text="EAF extensions today!" start="00:07:04.720" video="mainVideo" id=subtitle]]
[[!template new="1" text="There are many other new updates." start="00:07:09.599" video="mainVideo" id=subtitle]]
[[!template text="To list a few: we reached" start="00:07:11.840" video="mainVideo" id=subtitle]]
[[!template text="more than 60 contributors, hooray!" start="00:07:13.919" video="mainVideo" id=subtitle]]
[[!template text="And also, you can now use the familiar" start="00:07:17.199" video="mainVideo" id=subtitle]]
[[!template text="Control s and Control r isearch" start="00:07:19.759" video="mainVideo" id=subtitle]]
[[!template text="for real-time search," start="00:07:22.160" video="mainVideo" id=subtitle]]
[[!template text="functioning very similar" start="00:07:23.280" video="mainVideo" id=subtitle]]
[[!template text="to the Emacs isearch," start="00:07:24.560" video="mainVideo" id=subtitle]]
[[!template text="in the EAF Browser, PDF Viewer," start="00:07:27.039" video="mainVideo" id=subtitle]]
[[!template text="and many other applications." start="00:07:29.759" video="mainVideo" id=subtitle]]
[[!template text="Additionally, you can also create" start="00:07:32.080" video="mainVideo" id=subtitle]]
[[!template text="EAF PDF annotations" start="00:07:34.000" video="mainVideo" id=subtitle]]
[[!template text="either inline or as a pop-up, etc. etc. etc." start="00:07:35.680" video="mainVideo" id=subtitle]]
[[!template text="Finally, let's talk about Popweb." start="00:07:44.319" video="mainVideo" id=subtitle]]
[[!template text="Popweb is a very, very new project" start="00:07:47.680" video="mainVideo" id=subtitle]]
[[!template text="that started like exactly two weeks ago," start="00:07:50.080" video="mainVideo" id=subtitle]]
[[!template text="that focuses particularly on the" start="00:07:52.639" video="mainVideo" id=subtitle]]
[[!template text="multimedia pop-up functionality in Emacs." start="00:07:55.199" video="mainVideo" id=subtitle]]
[[!template text="Pop is considered to be a sister project" start="00:07:55.919" video="mainVideo" id=subtitle]]
[[!template text="and lightweight version of EAF." start="00:08:02.080" video="mainVideo" id=subtitle]]
[[!template text="They both share a very similar design" start="00:08:04.879" video="mainVideo" id=subtitle]]
[[!template text="and some code, and they are maintained" start="00:08:07.039" video="mainVideo" id=subtitle]]
[[!template text="by the same people," start="00:08:09.039" video="mainVideo" id=subtitle]]
[[!template text="which is me and ManateeLazycat." start="00:08:10.080" video="mainVideo" id=subtitle]]
[[!template text="Here's a quick demo to see the" start="00:08:13.680" video="mainVideo" id=subtitle]]
[[!template text="responsiveness of its preview." start="00:08:15.599" video="mainVideo" id=subtitle]]
[[!template text="Here we go. On the right, see..." start="00:08:23.840" video="mainVideo" id=subtitle]]
[[!template text="Oh, here we go. Yes." start="00:08:27.919" video="mainVideo" id=subtitle]]
[[!template text="And these are the LaTeX preview." start="00:08:30.720" video="mainVideo" id=subtitle]]
[[!template text="I can quickly show the next one." start="00:08:32.560" video="mainVideo" id=subtitle]]
[[!template text="So this is the end of my presentation." start="00:08:44.800" video="mainVideo" id=subtitle]]
[[!template text="Feel free to post questions" start="00:08:48.160" video="mainVideo" id=subtitle]]
[[!template text="on the collaborative pad, IRC," start="00:08:50.000" video="mainVideo" id=subtitle]]
[[!template text="or directly send me an email." start="00:08:52.160" video="mainVideo" id=subtitle]]
[[!template text="I'll be around all this," start="00:08:53.519" video="mainVideo" id=subtitle]]
[[!template text="at all these places," start="00:08:55.680" video="mainVideo" id=subtitle]]
[[!template text="and if you found any issue," start="00:08:57.839" video="mainVideo" id=subtitle]]
[[!template text="please submit an issue" start="00:08:59.519" video="mainVideo" id=subtitle]]
[[!template text="to the EAF official issues," start="00:09:01.200" video="mainVideo" id=subtitle]]
[[!template text="and don't forget to check out the wiki." start="00:09:04.160" video="mainVideo" id=subtitle]]
[[!template text="Thank you and enjoy" start="00:09:08.880" video="mainVideo" id=subtitle]]
[[!template text="the rest of EmacsConf 2021." start="00:09:10.160" video="mainVideo" id=subtitle]]
[[!template text="captions by sachac" start="00:09:13.680" video="mainVideo" id=subtitle]]