Attachment 'gwit-slides.md'
Download 1 % gwit: Human-scale Distributed Web over Git
2 % Ivan Vilata (Degauss) [ivan@selidor.net](mailto:ivan@selidor.net)
3 % Wireless Battle Mesh v15, 2023-05-11 (Calafou)
4
5 <!-- pandoc -t slidy -s -o gwit-slides.html gwit-slides.md -->
6
7 # Some problems with the Web
8
9 * Online dependency
10 * Inefficient
11 * Increasingly complex
12 * A privacy nightmare
13 * Bloated and hostile
14 * Centralized and centralizing
15 * Unreliable content
16 * Fragile
17
18 # A better Web
19
20 * Human-scale
21 * Privacy-respecting
22 * Offline support
23 * Lightweight
24 * Decentralized/distributed
25 * Authenticated content
26 * Long term-proof
27
28 # Some alternatives to the Web
29
30 * Smolnet: simple, still online
31 * Decentralized Web: resilient, quite complex
32 * Web3: dubious incentives & resource-hungry
33
34 We need simpler solutions!
35
36 # “Use git.”
37
38 “[…] we have been denying ourselves super powers for years simply by continuing to distribute our content in a fashion which makes it really impractical to grab sites wholesale, even though the bandwidth and disk space required to do this (for simple text files, anyway) has long been easy to come by.”
39
40 \-- Solderpunk, *Low budget P2P content distribution with git*
41
42 # Enter gwit
43
44 gwit = Git (with PGP commit signatures) + URI format
45
46 * For lightweight sites
47 * Minimalist
48 * From Git: distributed, replicated, authenticated
49 * Full-history site replication on access
50 * Offline browsing when possible
51 * Git ubiquity + site replication: long-term access
52
53 <https://gwit.site/>
54
55 # Lightweight decentralization
56
57 * Petnames for sites (Spritely-style)
58 * Site recommendations
59 * Host & transport independence
60 * Dumb HTTP server, Git forge, sneakernet, P2P…
61
62 # URI examples
63
64 ```
65 gwit://0x0123456789ABCDEF0123456789ABCDEFFEDCBA98/posts.html#latest
66 gwit://│Carol's blog│/test/page.gmi
67 gwit://┊☞Bob's site⇒Meet Carol┊/gemlog/
68 gwit://0x0123456789ABCDEF0123456789ABCDEFFEDCBA98:9c359d88d4882d17d673a7fb89c9af8349a4fb7c/breaking-news.gmi
69 ```
70
71 # Easy publication
72
73 1. Put site files in a Git repo
74 2. Create PGP key for site, put in the repo
75 3. Add optional config file
76 4. Sign commits with the site key
77 5. Publish the repo anywhere
78
79 Support existing static Web & Gemini sites.
80
81 Be forgiving with author changing mind.
82
83 # Example gwit.ini
84
85 ```
86 [site]
87 name = Foo Bar
88 title = Foo Bar: the Bar for all your Foos
89 title-fr = Le Bar de Foo : le Bar pour tous vos Foos
90 desc = "It's the Foo Bar!\n\nFind your best Foos here."
91 desc-fr = "C'est le Bar de Foo !\n\nTrouvez vos meilleurs Foos ici."
92 license = CC-BY
93 root = output
94 index = index.gmi
95 remote = https://git.example.net/foo/bar-site.git
96 branch = gemini-output
97
98 [remote "hut-mirror"]
99 url = https://hut.example.org/foo-mirror/bar-site
100
101 [alt "gemini"]
102 base = gemini://foo.example.net/bar-site/
103
104 [link "Someone's site"]
105 key = 0x0123456789ABCDEF0123456789ABCDEFFEDCBA98
106 remote = https://hub.example.com/someone/my-gwit-site.git
107 branch = published
108 ```
109
110 # Web/Gemini to gwit
111
112 * `alt` sections in `gwit.ini`
113 * `/.well-known/gwit.ini` (RFC8615)
114
115 ```
116 [site]
117 key = 0xFEDCBA98765432100123456789ABCDEF76543210
118 remote = https://git.example.net/foo/bar-site.git
119 branch = gemini-output
120 ```
121
122 # Lightweight reading
123
124 * Key: secure site retrieval/update
125 * Key: familiar Web-like navigation
126 * No clients yet! (soon)
127
128 (Docs and other tools missing too.)
129
130 # Deliberation welcome!
131
132 Help shape the thing:
133
134 * gwit spec: [https://git.sr.ht/~ivilata/gwit-spec](https://git.sr.ht/~ivilata/gwit-spec)
135 * Mailing list: [https://lists.sr.ht/~ivilata/gwit-spec](https://lists.sr.ht/~ivilata/gwit-spec)
136
137 Thanks! 👋