summaryrefslogtreecommitdiffstats
path: root/2023/talks/web.md
blob: f4b05d7e62300b9dd62792cdad3e43ad9c4b895d (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
[[!meta title="Emacs saves the Web (maybe)"]]
[[!meta copyright="Copyright © 2023 Yuchen Pei"]]
[[!inline pages="internal(2023/info/web-nav)" raw="yes"]]

<!-- Initially generated with emacsconf-publish-talk-page and then left alone for manual editing -->
<!-- You can manually edit this file to update the abstract, add links, etc. --->


# Emacs saves the Web (maybe)
Yuchen Pei (he/him, pronounced: "eww-churn pay"), IRC: dragestil, <mailto:id@ypei.org>, <https://ypei.org>, mastodon: dragestil@hostux.social

[[!inline pages="internal(2023/info/web-before)" raw="yes"]]

On one hand, Emacs is the crown jewel of the GNU Project for its
customisability and the ability to effortlessly convert users to
hackers. On the other hand, today many of the sticky issues with
proprietary software proliferation stems from the web, including the
Javascript trap[1] on the client side and the SaaSS trap[2] on the
server side. So enters the topic of this talk. I will briefly talk about
these issues and existing non-emacs solutions, followed by ideas and
demonstrations on how Emacs can fix user freedom on the web, including:
emacs clients for specific websites and services, emacs-based browsers
aka universal frontends, transformer of emacs packages to web apps and
firefox browser extensions, and more.

- [1] <https://www.gnu.org/philosophy/javascript-trap.html>
- [2] <https://www.gnu.org/philosophy/who-does-that-server-really-serve.en.html>

Projects and tools mentioned in the talk:

- LibreJS <https://gnu.org/s/librejs>
- lynx <https://lynx.invisible-island.net>
- noscript <https://NoScript.net>
- GreaseMonkey <https://www.greasespot.net/>
- Haketilo <https://haketilo.koszko.org>
- mitmproxy <https://mitmproxy.org>
- Invidious <https://invidious.io>
- youtube-dl <https://youtube-dl.org>
- libretube <https://libre-tube.github.io>
- newpipe <https://newpipe.net>
- woob <https://woob.tech/>
- Redirector <http://einaregilsson.com/redirector/>
- libredirect <https://libredirect.github.io>
- openwith <https://addons.mozilla.org/addon/open-with/>
- mastodon.el <https://codeberg.org/martianh/mastodon.el>
- mastorg <https://g.ypei.me/dotted.git/tree/emacs/.emacs.d/lisp/my/mastorg.el>
- sx.el <https://github.com/vermiculus/sx.el>
- buildbot.el <https://g.ypei.me/buildbot.el.git/about/>
- emacs-hnreader <https://github.com/thanhvg/emacs-hnreader>
- emacs-w3m <https://emacs-w3m.github.io/>
- luwak <https://g.ypei.me/luwak.git/about/>
- url-rewrite <https://g.ypei.me/url-rewrite.git/about/>
- wkhtmltopdf <https://wkhtmltopdf.org>
- pdf-tools <https://github.com/vedang/pdf-tools>
- emacs-web-server <https://elpa.gnu.org/packages/web-server.html>
- yolo.el <https://g.ypei.me/dotted.git/tree/emacs/.emacs.d/lisp/my/yolo.el>
- bom.el <https://g.ypei.me/bom.el.git/about/>

About the speaker:

Yuchen is a computer programmer, mathematician and free software
advocate based in Melbourne, Australia. He is addicted to writing
Emacs packages[3], of which a few has made into ELPA. He likes to
claim to be the only free software advocate in Australia, in the hope
that someone will correct him and point him to fellow comrades
fighting for user freedom in Oz.

- [3] <https://g.ypei.me>
# Discussion

## Questions and answers

-   Q: I like the idea of using org mode to display data from the web.
    Are there many different packages that does that? (I am newish to
    Emacs, so maybe this is obvious to everyone else.)
    -   A: dragestil uses roughly 10 packages that display data from the
        web.  Roughly half of them are org-mode based
-   Q: Have you tried EAF (Emacs Application Framework) and its browser?
    If yes, what is your opinion about it?
    -   A: No I haven't. My impression is it would run javascript by
        default. Not sure whether it has any extensions to block js. A
        nice comparison between different browsers including EAF, nyxt
        and emacs-webkit can be found in the readme file of
        <https://github.com/akirakyle/emacs-webkit>
-   Q: I find the JavaScript trap almost impossible to avoid since I
    like to buy used stuff online and use my online bank. How do you
    deal with the JavaScript trap? I use NoScript and compromise on the
    few things I really feel I cannot live wihtout. Eww is nice for a
    lot of things, especially with R for less noise, but I need Firefox
    for those JS-entrapped pages...
    -   A: Unfortunately I don't have a solution for that. I run
        nonfree javascript when doing banking or online shopping, though
        in a more isolated environment (mullvad browser) with a VPN.
        It's a tiny portion of my online activity (<.1% I suppose), so
        it's not *that* bad
    -   However, that does not mean emacs cannot help. woob has a few
        clients interfacing with online banking, so perhaps at least
        some banks allow the possibility of non-js client. It would be
        good to look into this.
-   Q: This is not really relevant to the talk, but I am curious about
    your nickname. Do you have some connection to Norway? Your nick
    indicates an interest in the architectural style inspired by the
    decoration on viking ships that was popular in the early 20th
    century. dragestil = dragon style
    -   A: dragestil is my favourite architectural style. Look at these
        images on wikipedia <https://en.wikipedia.org/wiki/Dragestil> -
        aren't they gorgeous? I've only seen one of these famous ones
        in real life, the Buksnes Church on Lofoten Islands.
-   Thoughts about Nyxt; about its aims, its approach, its relevance,
    etc.?
    -   Very early on, ran into issues with keybindings. More
        specifically, some conflicts between binding j to follow-hint in
        document mode and C-s/C-r to next-suggestion/previous-suggestion
        in prompt buffer mode. Did not continue with trying nyxt because
        keybindings are basic functionalities IMO. Might revisit
        someday. nyxt has a noscript-mode btw that blocks javascript. A
        nice comparison between different browsers including EAF, nyxt
        and emacs-webkit can be found in the readme file of
        <https://github.com/akirakyle/emacs-webkit>
- Q: so trying to understand, is emacs being used as a web proxy to scrub potentially privacy attacking JS?
- Q: Anyone else here has experimented with Nyxt? I haven't much, but can't say there's not an overlap with some of the ideas of Emacs and all. Just curious.
  - Not the speaker: 
    - I recommend qutebrowser over nyxt. For me it was just easier to use, customize and has better user experience.
    - I do/did too. But then it occurred to be that a very simple locally-loaded extension might very well be able to transform any of the major browsers into 99 + of Nyxt when paired with an Emacs backend (and websocket async bidirectional communication between the two)... (when said extension is made of a service worker part and a per-page part, to access both browser-level API/state, and page-level DOM, with just these two bits) e.g. could expose/present open tabs as pseudo-buffers (à la "virtual buffers/files"), candidates for completion, and such
	
## Notes

-   mastorg for mastodon
-   hacker news in org mode
-   emacs-web-server for hosting things from Emacs
- Dang, this is really a great demo.
- I love how he's using org-mode to do it all.
- It might actually save the web!
- Emacs as a Firefox extension!!! Ha!
- Definitely some interesting ideas in that one, and the literate form is top-notch. Warrants a focused rewatch for me (back-n-forth between 2 talks is not conductive to my best focus it seems...)
- I *really* like Org-Babel as a bridge to make complex one-off tasks ("why did the stuff in the database get into this state?" type things, usually) reproduceable and version-controlled.
  - Hear hear! Howard's talks over the years have converted me to do pretty much anything in Org-mode in literate form at this point :)
- I use org-babel for recurring tasks that I need to remember. Things I have to run once a month, etc. I guess I could use cron, but usually they aren't really time sensitive enough. Or they are things like clearing my mu4e trash, which requires that I quit mu4e.
- "It's not Emacs!" Ha!



[[!inline pages="internal(2023/info/web-after)" raw="yes"]]

[[!inline pages="internal(2023/info/web-nav)" raw="yes"]]