A place to cache linked articles (think custom and personal wayback machine)
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

index.html 17KB

3 lat temu
3 lat temu
3 lat temu
3 lat temu
3 lat temu
3 lat temu
3 lat temu
3 lat temu
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198
  1. <!doctype html><!-- This is a valid HTML5 document. -->
  2. <!-- Screen readers, SEO, extensions and so on. -->
  3. <html lang="fr">
  4. <!-- Has to be within the first 1024 bytes, hence before the `title` element
  5. See: https://www.w3.org/TR/2012/CR-html5-20121217/document-metadata.html#charset -->
  6. <meta charset="utf-8">
  7. <!-- Why no `X-UA-Compatible` meta: https://stackoverflow.com/a/6771584 -->
  8. <!-- The viewport meta is quite crowded and we are responsible for that.
  9. See: https://codepen.io/tigt/post/meta-viewport-for-2015 -->
  10. <meta name="viewport" content="width=device-width,initial-scale=1">
  11. <!-- Required to make a valid HTML5 document. -->
  12. <title>CommunityWiki: Smol Net (archive) — David Larlet</title>
  13. <meta name="description" content="Publication mise en cache pour en conserver une trace.">
  14. <!-- That good ol' feed, subscribe :). -->
  15. <link rel="alternate" type="application/atom+xml" title="Feed" href="/david/log/">
  16. <!-- Generated from https://realfavicongenerator.net/ such a mess. -->
  17. <link rel="apple-touch-icon" sizes="180x180" href="/static/david/icons2/apple-touch-icon.png">
  18. <link rel="icon" type="image/png" sizes="32x32" href="/static/david/icons2/favicon-32x32.png">
  19. <link rel="icon" type="image/png" sizes="16x16" href="/static/david/icons2/favicon-16x16.png">
  20. <link rel="manifest" href="/static/david/icons2/site.webmanifest">
  21. <link rel="mask-icon" href="/static/david/icons2/safari-pinned-tab.svg" color="#07486c">
  22. <link rel="shortcut icon" href="/static/david/icons2/favicon.ico">
  23. <meta name="msapplication-TileColor" content="#f7f7f7">
  24. <meta name="msapplication-config" content="/static/david/icons2/browserconfig.xml">
  25. <meta name="theme-color" content="#f7f7f7" media="(prefers-color-scheme: light)">
  26. <meta name="theme-color" content="#272727" media="(prefers-color-scheme: dark)">
  27. <!-- Documented, feel free to shoot an email. -->
  28. <link rel="stylesheet" href="/static/david/css/style_2021-01-20.css">
  29. <!-- See https://www.zachleat.com/web/comprehensive-webfonts/ for the trade-off. -->
  30. <link rel="preload" href="/static/david/css/fonts/triplicate_t4_poly_regular.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: light), (prefers-color-scheme: no-preference)" crossorigin>
  31. <link rel="preload" href="/static/david/css/fonts/triplicate_t4_poly_bold.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: light), (prefers-color-scheme: no-preference)" crossorigin>
  32. <link rel="preload" href="/static/david/css/fonts/triplicate_t4_poly_italic.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: light), (prefers-color-scheme: no-preference)" crossorigin>
  33. <link rel="preload" href="/static/david/css/fonts/triplicate_t3_regular.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: dark)" crossorigin>
  34. <link rel="preload" href="/static/david/css/fonts/triplicate_t3_bold.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: dark)" crossorigin>
  35. <link rel="preload" href="/static/david/css/fonts/triplicate_t3_italic.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: dark)" crossorigin>
  36. <script>
  37. function toggleTheme(themeName) {
  38. document.documentElement.classList.toggle(
  39. 'forced-dark',
  40. themeName === 'dark'
  41. )
  42. document.documentElement.classList.toggle(
  43. 'forced-light',
  44. themeName === 'light'
  45. )
  46. }
  47. const selectedTheme = localStorage.getItem('theme')
  48. if (selectedTheme !== 'undefined') {
  49. toggleTheme(selectedTheme)
  50. }
  51. </script>
  52. <meta name="robots" content="noindex, nofollow">
  53. <meta content="origin-when-cross-origin" name="referrer">
  54. <!-- Canonical URL for SEO purposes -->
  55. <link rel="canonical" href="https://communitywiki.org/wiki/SmolNet">
  56. <body class="remarkdown h1-underline h2-underline h3-underline em-underscore hr-center ul-star pre-tick" data-instant-intensity="viewport-all">
  57. <article>
  58. <header>
  59. <h1>CommunityWiki: Smol Net</h1>
  60. </header>
  61. <nav>
  62. <p class="center">
  63. <a href="/david/" title="Aller à l’accueil"><svg class="icon icon-home">
  64. <use xlink:href="/static/david/icons2/symbol-defs.svg#icon-home"></use>
  65. </svg> Accueil</a> •
  66. <a href="https://communitywiki.org/wiki/SmolNet" title="Lien vers le contenu original">Source originale</a>
  67. </p>
  68. </nav>
  69. <hr>
  70. <p>The “smol” net is the “small” net. It’s small because it is build for friends and friends of friends. It doesn’t have to scale to millions of people because those millions should build their own local small nets.</p>
  71. <p>That is:</p>
  72. <ul><li>servers are small, with fewer resources (cores, RAM, disk space)</li><li>communities are small (sometimes the number of accounts are limited arbitrarily)</li></ul>
  73. <p>That is, there is a plan to <i>limit growth</i>. Since scale is not a goal, the technology stack can be <i>simpler</i> and <i>easier to understand</i>. The smol net prefers <a class="local" href="https://communitywiki.org/wiki/SimpleSystems">simple systems</a>.</p>
  74. <h2>Smolnet communities</h2>
  75. <ul><li>Pubnix systems and the family of Tilde servers offer all sorts of hosting and shell access</li><li>The Circumlunar spaces offer Gemini hosting, shell access</li><li>Local, non-federating chat servers are simple to set up and run for a community</li></ul>
  76. <h2>What is the smol net?</h2>
  77. <p><a class="fediverse" href="https://mastodon.sdf.org/users/Shufei">@Shufei</a> said:</p>
  78. <blockquote><p>There’s a nascent movement offing, I think. Retrotech started it, hacker culture and tech, natch, but it’s incorporating new stuff like Gemini. Textnet, “slow internet”, I call it smolnet. People are tired of the corporate behemoths and cacophony. Demimondes like SDF provide a respite from all that, and a forum for some resistance and development apart from the bloat and blather. There’s a demotic tinge to it all in the hacker tradition, but without necessitating 1337ness.</p></blockquote>
  79. <p> Talon’s post <a class="url https outside" href="https://talon.computer/log/small-web/">Small Web</a> said:</p>
  80. <blockquote><p>Unfortunately, capitalism has been working ever diligently in the opposite direction towards hooking people into unhealthy computing practices. It can feel hopeless hearing my loved ones actively complain about how Facebook and Twitter make them feel bad yet continue checking their timeline throughout the day. … By reconsidering the utility of time-tested protocols and hobbling together a few new ones, a growing community of people are leaving the proprietary world of flashy social-media websites to slow down and enjoy life accented by computers, not controlled by them. … On the Small Web, communities host themselves which means cross-domain browsing is very much encouraged and an important feature of the network at large. Real people, not corporations, host the Small Web.</p></blockquote>
  81. <h2>Applying the concept of smol net</h2>
  82. <p>The emphasis on the small net or <i>smol</i> in general is surprisingly fruitful.</p>
  83. <p>Here’s an example of how to use “smol” in reasoning about web crawlers.</p>
  84. <p>Do you ever think about web crawlers? The Googlebots and Bingbots of this world? They don’t know whether a site is active or not. And since they have tons of money and work at scale, they just crawl the web permanently. They don’t mind the CO₂ they produce. Maybe they think their energy is green. They don’t mind the CO₂ <i>your</i> site produces as it serves their useless crawling, since that CO₂ is on you, not on <i>them</i>. They operate at scale, so they can’t ask you for your permission. It would take forever to ask everybody for permission, they say. It doesn’t scale, they say! Ah, but that’s only important to them because when it scales, they can make money. <i>You</i> don’t care if it scales! They also can’t be arsed to learn how your site works. Perhaps they should simply subscribe their machines to your feed. That’s where all the new stuff is, after all. But no, if it’s all the same to you, they don’t believe in feeds and they’d rather just download your site all over, follow all the links. Perhaps, if they’re nice and did their job, they’ll observe the [[Robots_exclusion_standard<a class="edit" href="https://communitywiki.org/wiki?action=edit;id=Robots_exclusion_standard" rel="nofollow" title="Click to edit this page">?</a>]]. If you were an obedient citizen of the world, you will have written the <code>robots.txt</code> file they require, and you will have organised the URLs of your site such that the exclusion rules actually work. This might not be obvious but you can only exclude URL path prefixes, so it is impossible to exclude URLs that <i>end</i> in <code>/history</code> for example. You can only exclude URLs where the path <i>starts</i> with <code>/history</code>. And then the cancer grows. Bots can have their dedicated sections in the <code>robots.txt</code> file. They are expected to self-identify via the user agent header on the web. Now you can write more complicated rules on your server taking the user agent into account. And slowly but surely you have been pulled into the arms race, have made your technology stack more complicated, have spent time of your short life on dealing with problems <i>they</i> are causing, because <i>they</i> are making money, where as <i>your</i> website will crash and burn as it runs out of memory and CPU. They will say: why didn’t you install a caching proxy? Why don’t you rate limit access? Did you double check your setup? And more time is spent on the corpocaca web of scaling shit. Until you emerge on the other end, proud of what you have done not because it was easy but because it was hard. Now you can offer the same kind of condescending advice to newbies! Sweet, sweet <i>knowledge is power</i>. Of course, it was useless and unwanted knowledge. You could have played a musical instrument or painted some flowers, but no, you had to fix your website because you were thinking small and they are operating at scale. This is why you can never talk to a human on their side, and if you do, they can’t fix it for you. It wouldn’t scale. And if it doesn’t scale, it doesn’t pay. So you go with the flow and waste away your life.</p>
  85. <p>Or you could decide to do your best and leave it. Join the small web instead. Discover other “smol” tech outside the web.</p>
  86. <h2>Failing at being smol</h2>
  87. <p>Let’s use a different example: Wikipedia. With wikis still being non-federating, one would think that they don’t really scale. And indeed, Google, Facebook, Twitter, Amazon: none of them run one big wiki to rule them all. But in a way, Wikipedia does. How?</p>
  88. <p>Mediawiki (the <a class="near" href="http://www.usemod.com/cgi-bin/mb.pl?WikiEngine" title="MeatBall">wiki engine</a> Wikipedia uses) has some features that were new at the time. Sure, technically, Wikipedia is surrounded by caching servers and all of that. But more fundamentally, from a social perspective:</p>
  89. <p>There is no useful, unified list of recent changes. The torrent of changes is simply too big for individuals to absorb. Instead, people often just see their own <a class="near" href="http://www.usemod.com/cgi-bin/mb.pl?SubscribedChanges" title="MeatBall">subscribed changes</a>. Thus, there is no community to build around community editing. There are no <a class="near" href="http://www.usemod.com/cgi-bin/mb.pl?RecentChangesJunkies" title="MeatBall">RecentChangesJunkies</a> for the entire site.</p>
  90. <p>If at all, communities form around subsets of pages. Pages belong to categories and some editors feel particular affinity with just a few categories. The “Project Gemini” page, for example, belongs to:</p>
  91. <ul><li>Project Gemini</li><li>Space program of the United States</li><li>History of the United States (1945–1964)</li><li>History of the United States (1964–1980)</li><li>1962 establishments in the United States</li><li>1966 disestablishments in the United States</li><li>Engineering projects</li><li>Human spaceflight programs</li><li>Crewed spacecraft</li><li>Military projects of the United States</li></ul>
  92. <p>Quite disparate fields of interest!</p>
  93. <h2>See Also</h2>
  94. <p>« … we need to adopt a broader view of what it will take to fix the brokenness of the social web. That will require challenging the logic of today’s platforms — and first and foremost challenging the very concept of megascale as a way that humans gather. If megascale is what gives Facebook its power, and what makes it dangerous, collective action against the web as it is today is necessary for change.» – in <a class="url https outside" href="https://www.theatlantic.com/technology/archive/2020/12/facebook-doomsday-machine/617384/">Facebook is a Doomsday Machine</a> by Adrienne LaFrance, for The Atlantic, via <a class="url https outside" href="https://tech.slashdot.org/story/21/01/03/2321217/the-atlantic-urges-humankind-to-fix-the-social-web">Slashdot</a></p>
  95. <p>«We’ve been killing conversations about software with “That won’t scale” for so long we’ve forgotten that scaling problems aren’t inherently fatal. … Situated software isn’t a technological strategy so much as an attitude about closeness of fit between software and its group of users, and a refusal to embrace scale, generality or completeness as unqualified virtues.» – <a class="url https outside" href="https://web.archive.org/web/20180429085210/http://shirky.com/writings/herecomeseverybody/situated_software.html">Situated Software</a>, by <a class="local" href="https://communitywiki.org/wiki/ClayShirky">ClayShirky</a>, on the <a class="near" href="http://archive.org" title="CommunityLocalNames">InternetArchive</a></p>
  96. <hr><p><a class="near" href="http://wiki.c2.com/?CategoryPhilosophy" title="Wiki">CategoryPhilosophy</a></p>
  97. </article>
  98. <hr>
  99. <footer>
  100. <p>
  101. <a href="/david/" title="Aller à l’accueil"><svg class="icon icon-home">
  102. <use xlink:href="/static/david/icons2/symbol-defs.svg#icon-home"></use>
  103. </svg> Accueil</a> •
  104. <a href="/david/log/" title="Accès au flux RSS"><svg class="icon icon-rss2">
  105. <use xlink:href="/static/david/icons2/symbol-defs.svg#icon-rss2"></use>
  106. </svg> Suivre</a> •
  107. <a href="http://larlet.com" title="Go to my English profile" data-instant><svg class="icon icon-user-tie">
  108. <use xlink:href="/static/david/icons2/symbol-defs.svg#icon-user-tie"></use>
  109. </svg> Pro</a> •
  110. <a href="mailto:david%40larlet.fr" title="Envoyer un courriel"><svg class="icon icon-mail">
  111. <use xlink:href="/static/david/icons2/symbol-defs.svg#icon-mail"></use>
  112. </svg> Email</a> •
  113. <abbr class="nowrap" title="Hébergeur : Alwaysdata, 62 rue Tiquetonne 75002 Paris, +33184162340"><svg class="icon icon-hammer2">
  114. <use xlink:href="/static/david/icons2/symbol-defs.svg#icon-hammer2"></use>
  115. </svg> Légal</abbr>
  116. </p>
  117. <template id="theme-selector">
  118. <form>
  119. <fieldset>
  120. <legend><svg class="icon icon-brightness-contrast">
  121. <use xlink:href="/static/david/icons2/symbol-defs.svg#icon-brightness-contrast"></use>
  122. </svg> Thème</legend>
  123. <label>
  124. <input type="radio" value="auto" name="chosen-color-scheme" checked> Auto
  125. </label>
  126. <label>
  127. <input type="radio" value="dark" name="chosen-color-scheme"> Foncé
  128. </label>
  129. <label>
  130. <input type="radio" value="light" name="chosen-color-scheme"> Clair
  131. </label>
  132. </fieldset>
  133. </form>
  134. </template>
  135. </footer>
  136. <script src="/static/david/js/instantpage-5.1.0.min.js" type="module"></script>
  137. <script>
  138. function loadThemeForm(templateName) {
  139. const themeSelectorTemplate = document.querySelector(templateName)
  140. const form = themeSelectorTemplate.content.firstElementChild
  141. themeSelectorTemplate.replaceWith(form)
  142. form.addEventListener('change', (e) => {
  143. const chosenColorScheme = e.target.value
  144. localStorage.setItem('theme', chosenColorScheme)
  145. toggleTheme(chosenColorScheme)
  146. })
  147. const selectedTheme = localStorage.getItem('theme')
  148. if (selectedTheme && selectedTheme !== 'undefined') {
  149. form.querySelector(`[value="${selectedTheme}"]`).checked = true
  150. }
  151. }
  152. const prefersColorSchemeDark = '(prefers-color-scheme: dark)'
  153. window.addEventListener('load', () => {
  154. let hasDarkRules = false
  155. for (const styleSheet of Array.from(document.styleSheets)) {
  156. let mediaRules = []
  157. for (const cssRule of styleSheet.cssRules) {
  158. if (cssRule.type !== CSSRule.MEDIA_RULE) {
  159. continue
  160. }
  161. // WARNING: Safari does not have/supports `conditionText`.
  162. if (cssRule.conditionText) {
  163. if (cssRule.conditionText !== prefersColorSchemeDark) {
  164. continue
  165. }
  166. } else {
  167. if (cssRule.cssText.startsWith(prefersColorSchemeDark)) {
  168. continue
  169. }
  170. }
  171. mediaRules = mediaRules.concat(Array.from(cssRule.cssRules))
  172. }
  173. // WARNING: do not try to insert a Rule to a styleSheet you are
  174. // currently iterating on, otherwise the browser will be stuck
  175. // in a infinite loop…
  176. for (const mediaRule of mediaRules) {
  177. styleSheet.insertRule(mediaRule.cssText)
  178. hasDarkRules = true
  179. }
  180. }
  181. if (hasDarkRules) {
  182. loadThemeForm('#theme-selector')
  183. }
  184. })
  185. </script>
  186. </body>
  187. </html>