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 31KB

1 년 전
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272
  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>The Open-Source Software bubble that is and the blogging bubble that was (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://www.baldurbjarnason.com/2021/the-oss-bubble-and-the-blogging-bubble/">
  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>The Open-Source Software bubble that is and the blogging bubble that was</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-2021-12.svg#icon-home"></use>
  65. </svg> Accueil</a> •
  66. <a href="https://www.baldurbjarnason.com/2021/the-oss-bubble-and-the-blogging-bubble/" title="Lien vers le contenu original">Source originale</a>
  67. </p>
  68. </nav>
  69. <hr>
  70. <p>Disclaimer: For a while there, I was paid to work full-time on <a href="https://en.wikipedia.org/wiki/Open-source_software">Open-Source Software</a> (OSS) software in the <a href="https://en.wikipedia.org/wiki/Open_educational_resources">Open Educational Resources</a> (OER) space. There’s a distinct possibility that I’m biased in some way as a result. There’s also the possibility that working in OSS and OER for over four years might mean that my opinions are backed by experience. You get to decide.</p>
  71. <h2 id="the-symptom">The symptom</h2>
  72. <blockquote>
  73. <p><a href="https://babel.dev/blog/2021/05/10/funding-update">Babel is used by millions, so why are we running out of money?</a></p>
  74. </blockquote>
  75. <p>This doesn’t surprise me. The purpose of the web software industry is to extract value out of Open-Source Software (OSS). Everything is built under the misconception that OSS is abundant, replaceable, and free.</p>
  76. <p>People don’t appreciate just how much web dev is about extracting value from OSS, both on individual and corporate levels.</p>
  77. <p>Make a native iOS app, and the only OSS you need to use is directly integrated into the OS, and a lot of it is maintained by Apple itself. Apple may use open-source font rendering libraries or SQLite, but you rarely have to deal with it yourself, as a developer, unless you want to.</p>
  78. <p>Web development? Everything is built or run directly on OSS.</p>
  79. <p>Almost everything we do in web development exists as a thin layer over open-source software.</p>
  80. <p>Servers, build tools, databases, ORMs, auth, client-side JS, web browser: we are all building on a vast ocean of OSS labour without paying back a fraction of the value we generate. It isn’t just big, direct dependencies like Babel that are suffering. The stuff your stuff is using—the infrastructure code everything needs—is surviving on sheer inertia as well.</p>
  81. <p>That’s value extraction. Strip-mining if you want to hammer home the unsustainability. Looting if you want to emphasise the moral dimension.</p>
  82. <p>We don’t even know the extent of the problem. Has anybody looked into the sustainability of the npm ecosystem, for example? How much of it is backed by a sustainable business model or even any kind of ongoing revenue?</p>
  83. <p>I suspect that the sustainable fraction is tiny. At some point, something’s going to give. Something’s <em>already giving</em>. We keep seeing projects like Babel: used by thousands; running on fumes.</p>
  84. <p>I’m reminded of the only real tech bubble I’ve personally witnessed: the rise and fall of blogging. They’re very different phenomena, but blogging and open-source are solid examples of big corporations strategically subsidising a complement to their core business with no care being paid to collateral damage.</p>
  85. <p>(I was in university when the dot com bubble collapsed, so I missed that. And I was doing my PhD when Web 2.0 peaked. Somebody needs to write about the true history of the rise and fall of the blog as the dominant web paradigm as a lot of it seems to be forgotten or just plain misunderstood today.)</p>
  86. <p>There are a lot of misconceptions about what exactly happened. People think that Google killed weblogs in 2013 when it discontinued Google Reader. Which isn’t entirely true. Google Reader was a murder weapon, not a victim.</p>
  87. <h2 id="the-blogging-bubble-and-its-modern-parallels">The blogging bubble and its modern parallels</h2>
  88. <p>Google did kill weblogs, but that’s fair since they also created the weblog bubble.</p>
  89. <p>You might not believe this if you weren’t there, but one of Google’s main problems, once they got going, was that there just wasn’t that much to see on the web.</p>
  90. <p>Having a great search engine is kind of useless if, for example, somebody types in “how to take better landscape photographs,” and nobody online has an answer.</p>
  91. <p>Google Adwords changed all of that. That, as well as free weblog hosting, fuelled the blogging bubble. You wrote a blog using a weblog system that came with decent SEO baked in (semantic structure and cross-linking, that’s all you needed back then). Most of your traffic came from Google’s search results. All of your revenue came from Google’s Adwords. It became profitable to churn out indistinct pap that passed as informative to fill Google’s search engine results, so people did.</p>
  92. <p>The weblog ecosystem was built entirely around extracting value from Adwords. For a few, it was a springboard to launch something else. A few writing careers got off the ground. But the vast, vast majority was just Adwords. Weblogs as social media? A sideshow. Weblogs as a unique medium? Incidental.</p>
  93. <p>Even outfits with paid subscriptions, like MetaFilter, relied on Adwords and had to course-correct once Google popped that bubble.</p>
  94. <p>Which they did because they had to: most of it was fraudulent. Fake clicks. Spam blogs. Link farms. Black hat SEO. The blogging economy was filled with bad practices all around. People today don’t appreciate just how rampant these practices were. Most of us didn’t notice because we were in our tiny corner, all reading the same few popular bloggers (an early version of the modern ‘influencer’). But outside of that corner, blogs were done for Google and paid for by Google. Outside of a small number of active commenters (many of whom were toxic as hell), the traffic these blogs had existed solely because it suited Google to give blogs a high ‘PageRank’. They had no meaningful community or engagement to call their own.</p>
  95. <p>After a few <em>years</em> of buying into the hype, advertisers started to push back, forcing Google to clean up their index. That consisted of downplaying blogs and blog-like sites and purging spam-blogs and blog farms (many of which had been hosted on Google Blogger, natch).</p>
  96. <p>The blog gold rush ended. The tools surrounding it started dying, hastened by Google sucking the oxygen out of the software ecosystem by acquiring, offering for free, and then putting on life support the core tools in the ecosystem.</p>
  97. <p>FeedBurner and Google Reader were not victims of Google’s policies. They were the weapons Google used to ensure that the only player extracting value from blogging was <em>Google</em>.</p>
  98. <p>Because people misunderstand what happened, they tend to take away the wrong lessons about what worked or didn’t work about blogging. They wrote off blogs as a genre of design: content, a sidebar with blog roll and categories, comments, and a casual style of writing. They ignored the tech that blogs were built on: RSS, easy-to-use CMSes, reverse-chronological listings mixed with categories and the like to highlight posts.</p>
  99. <p>Blogs, by the technical definition, are having a resurgence. Substack is a blogging system with convenient payment and email integration(RSS, reverse-chronological listing). As Jeremy Keith enjoys pointing out, Medium is Ev’s blog and offers RSS feeds and reverse-chronological listings for each guest author. Most mailing list platforms are either technically blogs (RSS plus a pleasant CMS) or integrate with blogs using RSS.</p>
  100. <p>This time around, the audience seems, for the most part, to genuinely be invested in the blogs themselves. They aren’t being funnelled there by Google or Facebook because it’s strategically convenient for them, for the moment. Substack isn’t the only player in town, so we seem to be avoiding the monoculture pitfall. Blogging for an <em>earned</em> audience is probably bigger than it has ever been before in the history of the web.</p>
  101. <p>The blogging bubble reminds me in many ways of the current state of web development:</p>
  102. <ul>
  103. <li>We have an economy that exists solely because big tech companies are pouring money into strategic complements to their products.</li>
  104. <li>This money-hose distorts the economy in ways that kill off businesses and skew education and recruitment.</li>
  105. <li>Much like the blog farms of old, many companies get away with extractive, unsustainable, and generally awful practices because so many of their resources are in effect subsidised by Google, Facebook, or Microsoft.</li>
  106. <li>Most web software companies are built to quickly extract value from the underlying open-source layer. Ever wondered why management practices in web software are dominated by short term concerns that are self-destructive in the long term? Because managers know <em>what</em> they are supposed to do, even if they don’t exactly know why. Speed is of the essence because you aren’t doing anything unique. You aren’t creating tech of your own or building on a hard-earned understanding of the clientele. You are using your funding to race against others to see who manages to squeeze the most business out of the underlying OSS before the funding runs out.</li>
  107. </ul>
  108. <h2 id="the-willful-blindness">The willful blindness</h2>
  109. <p>Most people in the industry don’t realise that the web dev economy is primarily extractive. As with the earlier assumption that Google must be trying to keep Adwords clean and sustainable, there’s the assumption here that <em>somebody</em> in tech must be making sure the work behind OSS is paid for. Or, almost as naively, they assume that it can all subsist as donationware.</p>
  110. <p>People in web dev constantly assume that something somewhere must be paying for the OSS dependencies they use. This is why developers come in with the entitlement of a paying customer. The OSS maintainer is supposed to serve them with the enthusiasm of somebody being paid. Their worldview just doesn’t accommodate the idea that this is unpaid labour because then they’d have to start questioning the very sustainability of their own careers.</p>
  111. <h2 id="the-money-hose">The money hose</h2>
  112. <p>Many of the misconceptions about OSS stem from the fact that the core of the ecosystem <em>is funded</em>.</p>
  113. <p>Facebook is pouring money into the React sub-ecosystem, and Google keeps burning cash on the Chrome bonfire. Microsoft keeps funding developer infrastructure like Visual Studio Code, Typescript, npm, and GitHub. Those are just the most prominent examples. They all fund ton of other projects, either directly or indirectly, through a wage surplus.</p>
  114. <p>A surprising amount of OSS is made by former big tech developers. They can afford to subsist on meagre revenue—for a time—because their pay and stock options have left them free of debt and with well-stocked savings accounts.</p>
  115. <p>This is much more common than you’d think. Scratch away at the surface of pretty much any active OSS project that has no discernible revenue, and you either get a burnout waiting to happen, or you’ll find a formerly well-paid dev coasting on savings. Many of the rest have solid VC funding. Though, VC funding always runs out at some point. The business fundamentals just aren’t there for open source when you have Google, Amazon, and the rest gatekeeping all of the value in the market. This is why the ecosystem is already beginning to pull apart at the seams.</p>
  116. <p>And Microsoft… Like I wrote above, MS is just <em>carpet-bombing</em> the web developer community with open source software and OSS infrastructure. Typescript, Visual Studio Code, GitHub, npm, and so much more exist primarily because Microsoft executives believe this will lead to more business for Azure and other Microsoft offerings. In turn, most of the offerings on Azure (as with Amazon Web Services) are leveraging OSS to maximise the value of the platform.</p>
  117. <p>Most of the rest of the ecosystem—excluding the tiny fraction like SQLite who have few dependencies and sustainable revenue—exists as backsplash from those two projects. Node, Deno, Electron, most front end tooling, and so many web dev libraries only exist because of projects that Google and Facebook are funding.</p>
  118. <p>Google, Facebook, and Microsoft are probably the biggest players using OSS this way, but they are not alone. Leveraging the positive externalities of OSS has been the go-to strategy for many big tech corporations for a while now.</p>
  119. <p>It isn’t just software: web dev education, training, and recruitment exist primarily to extract value from Facebook’s React or Google’s OSS projects. Very few of them invest in figuring out what sort of training will serve their students the best. The easiest thing to sell to both recruiters and students is the big framework on the block, so that’s what they sell and very little else.</p>
  120. <p>The extraction mentality is baked into the business. Which is sort of fine when you’re dealing with projects funded by mega-corporations but disastrous when applied to the unfunded or poorly funded rest.</p>
  121. <p>The money hose, combined with free or subsidised services, is a control mechanism that lets big tech companies control the OSS ecosystem. Projects they want to promote will get the money spigot. Other projects, like MongoDB or Redis, get turned into commodities and resold as cheap services.</p>
  122. <p>Most notably, projects that try to independently leverage open source to become fast-growing tech companies are disproportionally likely to be ‘embraced and extended’ this way by AWS, Google Cloud, or Microsoft’s Azure.</p>
  123. <p>The rest of us aren’t much better. The SaaS companies that funnel a bit of their revenue back to the OSS projects they’re building on are few and far between. The companies that maintain an OSS framework or library as a positive externality to their business are few and far between. VC-funded OSS companies are moonshots that tend to crash well before they get an opportunity to blow up in orbit.</p>
  124. <p>We’re honestly bloody bad at paying for the work of making software as an industry.</p>
  125. <h2 id="the-deterioration-and-potential-collapse">The deterioration and potential collapse</h2>
  126. <p>Then as now, every stepwise deterioration in the ecosystem is explained away. Back when the primacy of blogs was sliding, every time Google changed their algorithm to downplay blogs or updated their Adwords policies, you got thousands of responses ‘explaining’ how this wasn’t the end of the world and here’s what you need to change to keep up.</p>
  127. <p>Meanwhile, legitimate blogs started dropping off the web, services began to shutter, and RSS feeds went dark.</p>
  128. <p>We’re starting to see the initial decay hit the parts of the web dev ecosystem that are the furthest away from the cheap money fountains Google and Facebook are providing. Core projects run out of money. Git commits stop. A dependency you use breaks when one of <em>its</em> dependencies stops working, leading somebody to fork it with a quick fix or replacement dependency. Bandaid fixes to decaying OSS projects start to crop up in more and more places. We start to see blog posts saying that all we need to do is get enough people to donate money or pay for support. Everything will be fine. Just look at how OpenSSL got turned around.</p>
  129. <p>All of which is bad enough but also misses the point.</p>
  130. <p>Weblogs were a strategic lever for Google. Funding them made sense at a time where they needed the web to have more content. When they didn’t need them—when they stopped being a profitable lever—they were discarded. And the ecosystem sunk fast.</p>
  131. <p>Open-source software is a strategic lever for big tech companies. They fund when it helps their core business and strip-mine projects when it doesn’t. Cloud hosting has, slowly, been ushering in an era of extraction, where tech companies specifically target serverside OSS projects that they can leverage with little investment. Broad sections of serverside software are woefully underfinanced. Many server frameworks in the node ecosystem, for example, coast along on burned-out maintainers and sheer bloody-mindedness.</p>
  132. <p>Chrome and React are strategic levers for Google and Facebook. Electron, GitHub, Visual Studio Code, TypeScript, and npm are all potential strategic levers for Microsoft. V8, npm, React, Visual Studio Code, and Github: they are the foundation of modern web development.</p>
  133. <p>How confident are you that <em>all</em> of these projects will <em>remain</em> strategic for the life of the web? Losing any one of them would knock the entire software economy to the ground. Are we so sure that nothings going to change for these companies?</p>
  134. <p>Facebook as a business is, in my view, harmful for society in general.</p>
  135. <p>Which used to mark me as a contrary weirdo but is now the political consensus in many countries.</p>
  136. <p>Apple’s pro-privacy stance is manoeuvring Chrome into direct conflict with other parts of the Google behemoth. To remain competitive as a browser, Chrome must work against the interests of its owner.</p>
  137. <p>You can argue whether there is any substance behind Apple’s privacy efforts or not. But it’s a highly effective strategy for striking at Google’s longstanding core strategy: using free products and OSS to bolster their web-based ad business.</p>
  138. <p>Microsoft is still in the progress of figuring out which of its acquired assets directly benefit its core businesses and which don’t. Their track record of embracing and extending and ruthless competition doesn’t inspire trust.</p>
  139. <p>We’re still going to see a tonne of projects burn out and die out. Diversification will mostly be a question of which flavour of V8 and what flavour of React-like front end framework you’re using. Everything else would slowly become a barren wasteland. But overall? It would survive. A bit boring but still alive. Microsoft’s OSS endeavours might suffer as npm and GitHub more and more become homes for dead and broken software, but the tools should still work, right?</p>
  140. <p>But…</p>
  141. <p>What happens if Facebook’s fortunes change? Or if its reputation becomes so bad that React ceases to be a good recruitment tool. Or, if the web dev training ecosystem shifts away from React because most of the time, it isn’t the right tool for the job unless you’re Facebook? What if Facebook’s management decides they can get most of the benefit they want from React without pouring money into React? Let the community coast on voluntary contributions for a while?</p>
  142. <p>Do we want to risk becoming a web development ecosystem that primarily exists as a subsidised complement to Microsoft’s Azure and, maybe, GitHub? (That’s assuming GitHub is a viable business in its own right.)</p>
  143. <p>Are we all okay with the collateral damage of burning out the OSS ecosystem?</p>
  144. <p>Strategy isn’t permanent. It’s always a response to needs and to the surrounding landscape. If needs change or if the landscape changes, then the strategy has to change as well. It’s a cliche to say this, but change is constant.</p>
  145. <p>If we want software development to last, then we need to work on our attitudes towards open-source and reconsider our reliance on software that, at the moment, happens to be strategically relevant to big tech.</p>
  146. <h2 id="the-price-were-paying">The price we’re paying</h2>
  147. <p>Despite everything I wrote above, this apocalyptic vision of potential collapse isn’t what worries me. The biggest problem I have with the status quo isn’t that it might be unstable.</p>
  148. <p>What we learned from blogging is that we can rebuild. If the tech giants shift their attention away and the bubble bursts, the skills and knowledge will still be there. And rebuilding is often an opportunity to fix things.</p>
  149. <p>So, instability doesn’t worry me. It’s just an inevitable part of working in an immature medium, dominated by immature mega-corporations.</p>
  150. <p>The biggest problem—and this isn’t limited to web development—is how it has baked exploitation into the core worldview of so many people. We <em>use</em> open-source software. We <em>get paid</em> to use open-source software. Our employers benefit, but the money never trickles down—money <em>never</em> trickles down. This is fine when the project in question is directly funded by a tech multinational. Less so when the project is something specialised, a little bit niche, or inventive, and therefore not financed by a gigantic corporation.</p>
  151. <p>We train each other with a mindset to treat each other poorly and consider the people—whose free work we are turning into money—to be disposable.</p>
  152. <p>We’re working in an unstable industry, surviving at the whim of callous mega-corporations, and we spend our days treating people like shit.</p>
  153. <p>I don’t feel proud when I look around at the web developer community and economy. More the other thing.</p>
  154. <p>There are a few bright spots. Interesting companies that build a lot of OSS while flying sustainably under the radar. Turns out you don’t need that many people to maintain open-source if you set strict boundaries and make sure all of the work is paid for.</p>
  155. <p>Then you have companies like WordPress who have been around forever and form the backbone of the entire web.</p>
  156. <p>Sustainable open-source looks <em>possible</em> if you manage to balance looking uninteresting to big tech but interesting enough to generate revenue. As WordPress shows, you can get pretty big while remaining mostly uninteresting to the tech behemoths.</p>
  157. <p>It’s a tricky needle to thread but seems to be entirely possible.</p>
  158. <p>The biggest threat, what kills off project after project, is scope creep (a universal problem for software development) and other developers who feel entitled to your time and work.</p>
  159. <hr>
  160. <p>Twenty years ago, when I was doing my postgraduate studies at the University of the West of England, one of my mentors was Bob Hughes. He wrote the book Dust or Magic, an idiosyncratic study of what makes great interactive media great. It’s a lovely book that’s hard to find these days, and it led him to hold a couple of <em>Dust or Magic</em> conferences in Oxford over a decade ago. Those two conferences are, to this day, the most engaging and inspiring conferences I’ve ever attended.</p>
  161. <p>He has done quite a few things since. Some activism. A bit of writing. <a href="https://newint.org/books/new-internationalist/bleeding-edge">Like an excellent book on the toxic nature of modern tech</a>. (Highly recommended.)</p>
  162. <p>One day, when I was still doing my Masters (ca. 2000), I ran into him in the courtyard at UWE’s Bower Ashton campus. I enthusiastically began to subject him to my latest enthusiasm as I’m wont to do. I spoke about this great thing called Free Software and how it would fundamentally change our relationship with technology: make tech free and fair. Free Software was going to make software a force for equality and progress!</p>
  163. <p>—While I’ve never been bright-eyed or bushy-tailed by nature, I’ve always had a strong tendency towards idealism.</p>
  164. <p>Bob patiently listened to me, gave me the time to make my case and argue my point before sighing.</p>
  165. <p>Punctuation can’t really capture the way Bob speaks. The pauses and hesitations make his arguments feel like he’s leading you down a winding path, even though, at the end of it, you look back and see that you just went down a straight, narrow, and unmissable road.</p>
  166. <p>“Capitalism will always find a way to exploit common resources. It’s just a matter of time.”</p>
  167. <p>‘Loot’ is a word that he used a lot at the time. It was the primary theme of the closing talk Bob held at the last <em>Dust or Magic</em> conference he led.</p>
  168. <p>Our world is built on looting what others have to give—what we <em>make</em> them give.</p>
  169. <p>And we’re fine with it.</p>
  170. <p>We’re all fine with looting.</p>
  171. </article>
  172. <hr>
  173. <footer>
  174. <p>
  175. <a href="/david/" title="Aller à l’accueil"><svg class="icon icon-home">
  176. <use xlink:href="/static/david/icons2/symbol-defs-2021-12.svg#icon-home"></use>
  177. </svg> Accueil</a> •
  178. <a href="/david/log/" title="Accès au flux RSS"><svg class="icon icon-rss2">
  179. <use xlink:href="/static/david/icons2/symbol-defs-2021-12.svg#icon-rss2"></use>
  180. </svg> Suivre</a> •
  181. <a href="http://larlet.com" title="Go to my English profile" data-instant><svg class="icon icon-user-tie">
  182. <use xlink:href="/static/david/icons2/symbol-defs-2021-12.svg#icon-user-tie"></use>
  183. </svg> Pro</a> •
  184. <a href="mailto:david%40larlet.fr" title="Envoyer un courriel"><svg class="icon icon-mail">
  185. <use xlink:href="/static/david/icons2/symbol-defs-2021-12.svg#icon-mail"></use>
  186. </svg> Email</a> •
  187. <abbr class="nowrap" title="Hébergeur : Alwaysdata, 62 rue Tiquetonne 75002 Paris, +33184162340"><svg class="icon icon-hammer2">
  188. <use xlink:href="/static/david/icons2/symbol-defs-2021-12.svg#icon-hammer2"></use>
  189. </svg> Légal</abbr>
  190. </p>
  191. <template id="theme-selector">
  192. <form>
  193. <fieldset>
  194. <legend><svg class="icon icon-brightness-contrast">
  195. <use xlink:href="/static/david/icons2/symbol-defs-2021-12.svg#icon-brightness-contrast"></use>
  196. </svg> Thème</legend>
  197. <label>
  198. <input type="radio" value="auto" name="chosen-color-scheme" checked> Auto
  199. </label>
  200. <label>
  201. <input type="radio" value="dark" name="chosen-color-scheme"> Foncé
  202. </label>
  203. <label>
  204. <input type="radio" value="light" name="chosen-color-scheme"> Clair
  205. </label>
  206. </fieldset>
  207. </form>
  208. </template>
  209. </footer>
  210. <script src="/static/david/js/instantpage-5.1.0.min.js" type="module"></script>
  211. <script>
  212. function loadThemeForm(templateName) {
  213. const themeSelectorTemplate = document.querySelector(templateName)
  214. const form = themeSelectorTemplate.content.firstElementChild
  215. themeSelectorTemplate.replaceWith(form)
  216. form.addEventListener('change', (e) => {
  217. const chosenColorScheme = e.target.value
  218. localStorage.setItem('theme', chosenColorScheme)
  219. toggleTheme(chosenColorScheme)
  220. })
  221. const selectedTheme = localStorage.getItem('theme')
  222. if (selectedTheme && selectedTheme !== 'undefined') {
  223. form.querySelector(`[value="${selectedTheme}"]`).checked = true
  224. }
  225. }
  226. const prefersColorSchemeDark = '(prefers-color-scheme: dark)'
  227. window.addEventListener('load', () => {
  228. let hasDarkRules = false
  229. for (const styleSheet of Array.from(document.styleSheets)) {
  230. let mediaRules = []
  231. for (const cssRule of styleSheet.cssRules) {
  232. if (cssRule.type !== CSSRule.MEDIA_RULE) {
  233. continue
  234. }
  235. // WARNING: Safari does not have/supports `conditionText`.
  236. if (cssRule.conditionText) {
  237. if (cssRule.conditionText !== prefersColorSchemeDark) {
  238. continue
  239. }
  240. } else {
  241. if (cssRule.cssText.startsWith(prefersColorSchemeDark)) {
  242. continue
  243. }
  244. }
  245. mediaRules = mediaRules.concat(Array.from(cssRule.cssRules))
  246. }
  247. // WARNING: do not try to insert a Rule to a styleSheet you are
  248. // currently iterating on, otherwise the browser will be stuck
  249. // in a infinite loop…
  250. for (const mediaRule of mediaRules) {
  251. styleSheet.insertRule(mediaRule.cssText)
  252. hasDarkRules = true
  253. }
  254. }
  255. if (hasDarkRules) {
  256. loadThemeForm('#theme-selector')
  257. }
  258. })
  259. </script>
  260. </body>
  261. </html>