From 0c5fb02702d761b4ed2b5ef74b8e6e964ec6f4f6 Mon Sep 17 00:00:00 2001 From: Andrew Engelbrecht Date: Thu, 2 Mar 2023 17:13:26 -0500 Subject: [PATCH] added Adrian Cochrane's slides --- Adrian_Cochrane/DIY Browsers.pdf | Bin 0 -> 51526 bytes Adrian_Cochrane/diy-browsers.html | 185 ++++++++++++++++++++++++++++++ 2 files changed, 185 insertions(+) create mode 100644 Adrian_Cochrane/DIY Browsers.pdf create mode 100644 Adrian_Cochrane/diy-browsers.html diff --git a/Adrian_Cochrane/DIY Browsers.pdf b/Adrian_Cochrane/DIY Browsers.pdf new file mode 100644 index 0000000000000000000000000000000000000000..51253aa53b71ad14d6ee03d8b945e03d92eeaa67 GIT binary patch literal 51526 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

L>f;Ue+#RL%%xx=k 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

Ulpf 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 + + + DIY Browsers + + + +

DIY Browsers

+

By Adrian Cochrane

+ +
+ +

W3C web "recommendations"

+

Are longer than:

+
    +
  • C11
  • +
  • C++17
  • +
  • UEFI
  • +
  • USB3.2
  • +
  • POSIX
  • +
  • Intel x86
  • +
  • IETF RFCs
  • +
  • Longest novels listed by Wikipedia
  • +
+

https://drewdevault.com/2020/03/18/Reckless-limitless-scope.html

+ +
+ +
    +
  1. Freedom to use
  2. +
  3. Freedom to modify
  4. +
  5. Freedom to share
  6. +
  7. Freedom to share modifications
  8. +
+ +
+ +

WebKit Linecounts

+
+
WebKit
+
18m
+
+
Tests
+
10m
+
Source
+
7.3m
+
+
JavascriptCore
+
0.6m
+
3rd Party
+
4m
+
+
libwebrtc
+
2.7m
+
+
WebCore
+
1.6m
+
WebDriver
+
6.8k
+
WebGPU
+
29k
+
WebInspectorUI
+
0.25m
+
WebKit
+
0.5m
+
WebKit Legacy
+
0.13m
+
+
+
+ +
+ +
+
WebCore
+
1.6m
+
+
bridge + platform + PAL
+
0.67m
+
dom + domjit + html + mathml + svg + xml + editting + history + page
+
0.30m
+
css + cssjit + animation + display + layout + rendering + style
+
0.26m
+
bindings + crypto + fileapi + storage + workers + worklets
+
0.12m
+
loader + contentextensions
+
41k
+
+
+ +
+ +
+gemini.circumlunar.space:1965
+> gemini://gemini.circumlunar.space/
+< 20 text/gemini
+< # Project Gemini
+< # Overview
+< Gemini is a new internet protocol which:
+< * Is heavier than gopher
+< * Is lighter than the web
+< * Will not replace either
+< * Strives for maximum power to weight ratio
+< * Takes user privacy very seriously
+< # Resources
+< => news/ Official Project Gemini news
+  
+ +
+

Hypertext is universal

+
+
+
Rhapsode
+
Voice browser
+
Amphiarao
+
Webpage debugger
+
Haphaestus
+
TV browser
+
+ +

The Argonaut Stack!

+ +
+ +

Source code simplicity is important
Inclusivity is vital!

+ +
+ +

Mechanism

+
    +
  1. HURL
  2. +
  3. http-client-tls
  4. +
  5. html-conduit
  6. +
  7. html-conduit-stylist
  8. +
  9. Haskell Stylist
  10. +
  11. CatTrap + Balkon
  12. +
  13. Mondrian + Typograffiti
  14. +
+
+
    +
  • Harfbuzz
  • +
  • LibICU
  • +
  • Fontconfig
  • +
  • FreeType
  • +
+ +
+ +

Live Demo

+ +
+ +
    +
  • Contribute code
  • +
  • Build your own!
  • +
  • Use latest HTML & CSS
  • +
  • Progressively enhance, especially regarding JavaScript use
  • +
  • Proxy silos (e.g. Invidious, Nitter, Scribe)
  • +
  • Build native (GTK? Qt?) standards-based apps
  • +
  • Keep making the web great!
  • +
+ +
+ +
    +
  • https://haphaestus.org/
  • +
  • https://rhapsode-web.org/ 9.4kLoC
  • +
  • https://argonaut-constellation.org/
  • +
  • NLnet-funded
  • +
+ +

Questions?

+ + -- 2.25.1