A place to cache linked articles (think custom and personal wayback machine)
Du kan inte välja fler än 25 ämnen Ämnen måste starta med en bokstav eller siffra, kan innehålla bindestreck ('-') och vara max 35 tecken långa.

index.html 16KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366
  1. <!doctype html><!-- This is a valid HTML5 document. -->
  2. <!-- Screen readers, SEO, extensions and so on. -->
  3. <html lang="en">
  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>an "archives first" approach to mailing lists (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. <!-- Is that even respected? Retrospectively? What a shAItshow…
  28. https://neil-clarke.com/block-the-bots-that-feed-ai-models-by-scraping-your-website/ -->
  29. <meta name="robots" content="noai, noimageai">
  30. <!-- Documented, feel free to shoot an email. -->
  31. <link rel="stylesheet" href="/static/david/css/style_2021-01-20.css">
  32. <!-- See https://www.zachleat.com/web/comprehensive-webfonts/ for the trade-off. -->
  33. <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>
  34. <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>
  35. <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>
  36. <link rel="preload" href="/static/david/css/fonts/triplicate_t3_regular.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: dark)" crossorigin>
  37. <link rel="preload" href="/static/david/css/fonts/triplicate_t3_bold.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: dark)" crossorigin>
  38. <link rel="preload" href="/static/david/css/fonts/triplicate_t3_italic.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: dark)" crossorigin>
  39. <script>
  40. function toggleTheme(themeName) {
  41. document.documentElement.classList.toggle(
  42. 'forced-dark',
  43. themeName === 'dark'
  44. )
  45. document.documentElement.classList.toggle(
  46. 'forced-light',
  47. themeName === 'light'
  48. )
  49. }
  50. const selectedTheme = localStorage.getItem('theme')
  51. if (selectedTheme !== 'undefined') {
  52. toggleTheme(selectedTheme)
  53. }
  54. </script>
  55. <meta name="robots" content="noindex, nofollow">
  56. <meta content="origin-when-cross-origin" name="referrer">
  57. <!-- Canonical URL for SEO purposes -->
  58. <link rel="canonical" href="https://public-inbox.org/README.html">
  59. <body class="remarkdown h1-underline h2-underline h3-underline em-underscore hr-center ul-star pre-tick" data-instant-intensity="viewport-all">
  60. <article>
  61. <header>
  62. <h1>an "archives first" approach to mailing lists</h1>
  63. </header>
  64. <nav>
  65. <p class="center">
  66. <a href="/david/" title="Aller à l’accueil"><svg class="icon icon-home">
  67. <use xlink:href="/static/david/icons2/symbol-defs-2021-12.svg#icon-home"></use>
  68. </svg> Accueil</a> •
  69. <a href="https://public-inbox.org/README.html" title="Lien vers le contenu original">Source originale</a>
  70. <br>
  71. Mis en cache le 2024-01-19
  72. </p>
  73. </nav>
  74. <hr>
  75. <pre>public-inbox - an "archives first" approach to mailing lists
  76. ------------------------------------------------------------
  77. public-inbox implements the sharing of an email inbox via git to
  78. complement or replace traditional mailing lists. Readers may
  79. read via NNTP, IMAP, POP3, Atom feeds or HTML archives.
  80. public-inbox spawned around three main ideas:
  81. * Publicly accessible and archived communication is essential to
  82. Free Software development.
  83. * Contributing to Free Software projects should not require the
  84. use of non-Free services or software.
  85. * Graphical user interfaces should not be required for text-based
  86. communication. Users may have broken graphics drivers, limited
  87. eyesight, or be unable to afford modern hardware.
  88. public-inbox aims to be easy-to-deploy and manage; encouraging projects
  89. to run their own instances with minimal overhead.
  90. Implementation
  91. --------------
  92. public-inbox stores mail in git repositories as documented
  93. in <a href="https://public-inbox.org/public-inbox-v2-format.txt">https://public-inbox.org/public-inbox-v2-format.txt</a> and
  94. <a href="https://public-inbox.org/public-inbox-v1-format.txt">https://public-inbox.org/public-inbox-v1-format.txt</a>
  95. By storing (and optionally) exposing an inbox via git, it is
  96. fast and efficient to host and mirror public-inboxes.
  97. Traditional mailing lists use the "push" model. For readers,
  98. that requires commitment to subscribe and effort to unsubscribe.
  99. New readers may also have difficulty following existing
  100. discussions if archives do not expose Message-ID and References
  101. headers. List server admins are also burdened with delivery
  102. failures.
  103. public-inbox uses the "pull" model. Casual readers may
  104. follow the list via NNTP, IMAP, POP3, Atom feed or HTML archives.
  105. If a reader loses interest, they simply stop following.
  106. Since we use git, mirrors are easy-to-setup, and lists are
  107. easy-to-relocate to different mail addresses without losing
  108. or splitting archives.
  109. _Anybody_ may also setup a delivery-only mailing list server to
  110. replay a public-inbox git archive to subscribers via SMTP.
  111. Features
  112. --------
  113. * anybody may participate via plain-text email
  114. * stores email in git, readers may have a complete archive of the inbox
  115. * Atom feed, IMAP, NNTP, POP3 allows casual readers to follow via local tools
  116. * uses only well-documented and easy-to-implement data formats
  117. Try it out now, see <a href="https://try.public-inbox.org/">https://try.public-inbox.org/</a>
  118. Requirements for reading:
  119. * any software capable of IMAP, NNTP, POP3 or following Atom feeds
  120. Any basic web browser will do for the HTML archives.
  121. We primarily develop on w3m to maximize accessibility.
  122. Requirements (participant)
  123. --------------------------
  124. * any MUA which may send text-only emails ("git send-email" works!)
  125. Users are strongly encouraged to use the "reply-all" feature of
  126. their mailers to reduce the impact of a public-inbox as a
  127. single point of failure.
  128. * The HTTP web interface exposes mboxrd files, and NNTP clients often
  129. feature reply-by-email functionality
  130. * participants do not need to install public-inbox, only server admins
  131. Requirements (server)
  132. ---------------------
  133. See <a href="https://public-inbox.org/INSTALL">https://public-inbox.org/INSTALL</a>
  134. Hacking
  135. -------
  136. AGPL source code is available via git:
  137. git clone <a href="https://public-inbox.org/public-inbox.git">https://public-inbox.org/public-inbox.git</a>
  138. git clone <a href="https://repo.or.cz/public-inbox.git">https://repo.or.cz/public-inbox.git</a>
  139. torsocks git clone <a href="http://7fh6tueqddpjyxjmgtdiueylzoqt6pt7hec3pukyptlmohoowvhde4yd.onion/public-inbox.git">http://7fh6tueqddpjyxjmgtdiueylzoqt6pt7hec3pukyptlmohoowvhde4yd.onion/public-inbox.git</a>
  140. torsocks git clone <a href="http://4uok3hntl7oi7b4uf4rtfwefqeexfzil2w6kgk2jn5z2f764irre7byd.onion/public-inbox">http://4uok3hntl7oi7b4uf4rtfwefqeexfzil2w6kgk2jn5z2f764irre7byd.onion/public-inbox</a>
  141. See below for contact info.
  142. Contact
  143. -------
  144. We are happy to see feedback of all types via plain-text email.
  145. public-inbox discussion is self-hosting on public-inbox.org
  146. Please send comments, user/developer discussion, patches, bug reports,
  147. and pull requests to our public-inbox address at:
  148. meta@public-inbox.org
  149. Please Cc: all recipients when replying as we do not require
  150. subscription. This also makes it easier to rope in folks of
  151. tangentially related projects we depend on (e.g. git developers
  152. on git@vger.kernel.org).
  153. The archives are readable via IMAP, NNTP or HTTP:
  154. <a href="nntps://news.public-inbox.org/inbox.comp.mail.public-inbox.meta">nntps://news.public-inbox.org/inbox.comp.mail.public-inbox.meta</a>
  155. imaps://;AUTH=ANONYMOUS@public-inbox.org/inbox.comp.mail.public-inbox.meta.0
  156. <a href="https://public-inbox.org/meta/">https://public-inbox.org/meta/</a>
  157. AUTH=ANONYMOUS is recommended for IMAP, but any username + password works
  158. And as Tor hidden services:
  159. <a href="http://4uok3hntl7oi7b4uf4rtfwefqeexfzil2w6kgk2jn5z2f764irre7byd.onion/meta/">http://4uok3hntl7oi7b4uf4rtfwefqeexfzil2w6kgk2jn5z2f764irre7byd.onion/meta/</a>
  160. <a href="nntp://4uok3hntl7oi7b4uf4rtfwefqeexfzil2w6kgk2jn5z2f764irre7byd.onion/inbox.comp.mail.public-inbox.meta">nntp://4uok3hntl7oi7b4uf4rtfwefqeexfzil2w6kgk2jn5z2f764irre7byd.onion/inbox.comp.mail.public-inbox.meta</a>
  161. imap://;AUTH=ANONYMOUS@4uok3hntl7oi7b4uf4rtfwefqeexfzil2w6kgk2jn5z2f764irre7byd.onion/inbox.comp.mail.public-inbox.meta.0
  162. You may also clone all messages via git:
  163. git clone --mirror <a href="https://public-inbox.org/meta/">https://public-inbox.org/meta/</a>
  164. torsocks git clone --mirror <a href="http://4uok3hntl7oi7b4uf4rtfwefqeexfzil2w6kgk2jn5z2f764irre7byd.onion/meta/">http://4uok3hntl7oi7b4uf4rtfwefqeexfzil2w6kgk2jn5z2f764irre7byd.onion/meta/</a>
  165. POP3 access instructions are at:
  166. <a href="https://public-inbox.org/meta/_/text/help/#pop3">https://public-inbox.org/meta/_/text/help/#pop3</a>
  167. Anti-Spam
  168. ---------
  169. The maintainer of public-inbox has found SpamAssassin a good tool for
  170. filtering his personal mail, and it will be the default spam filtering
  171. tool in public-inbox.
  172. See <a href="https://public-inbox.org/dc-dlvr-spam-flow.html">https://public-inbox.org/dc-dlvr-spam-flow.html</a> for more info.
  173. Content Filtering
  174. -----------------
  175. To discourage phishing, trackers, exploits and other nuisances,
  176. only plain-text emails are allowed and HTML is rejected by default.
  177. This improves accessibility, and saves bandwidth and storage
  178. as mail is archived forever.
  179. As of the 2010s, successful online social networks and forums are the
  180. ones which heavily restrict users formatting options; so public-inbox
  181. aims to preserve the focus on content, and not presentation.
  182. Copyright
  183. ---------
  184. Copyright all contributors &lt;meta@public-inbox.org&gt;
  185. License: AGPL-3.0+ &lt;<a href="https://www.gnu.org/licenses/agpl-3.0.txt">https://www.gnu.org/licenses/agpl-3.0.txt</a>&gt;
  186. This program is free software: you can redistribute it and/or modify
  187. it under the terms of the GNU Affero General Public License as published by
  188. the Free Software Foundation, either version 3 of the License, or
  189. (at your option) any later version.
  190. This program is distributed in the hope that it will be useful,
  191. but WITHOUT ANY WARRANTY; without even the implied warranty of
  192. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  193. GNU Affero General Public License for more details.
  194. You should have received a copy of the GNU Affero General Public License
  195. along with this program. If not, see &lt;<a href="https://www.gnu.org/licenses/">https://www.gnu.org/licenses/</a>&gt;.
  196. Additional permission under GNU GPL version 3 section 7:
  197. If you modify this program, or any covered work, by linking or
  198. combining it with the OpenSSL project's OpenSSL library (or a
  199. modified version of that library), containing parts covered by the
  200. terms of the OpenSSL or SSLeay licenses, the copyright holder(s)
  201. grants you additional permission to convey the resulting work.
  202. Corresponding Source for a non-source form of such a combination
  203. shall include the source code for the parts of OpenSSL used as well
  204. as that of the covered work.
  205. </pre>
  206. </article>
  207. <hr>
  208. <footer>
  209. <p>
  210. <a href="/david/" title="Aller à l’accueil"><svg class="icon icon-home">
  211. <use xlink:href="/static/david/icons2/symbol-defs-2021-12.svg#icon-home"></use>
  212. </svg> Accueil</a> •
  213. <a href="/david/log/" title="Accès au flux RSS"><svg class="icon icon-rss2">
  214. <use xlink:href="/static/david/icons2/symbol-defs-2021-12.svg#icon-rss2"></use>
  215. </svg> Suivre</a> •
  216. <a href="http://larlet.com" title="Go to my English profile" data-instant><svg class="icon icon-user-tie">
  217. <use xlink:href="/static/david/icons2/symbol-defs-2021-12.svg#icon-user-tie"></use>
  218. </svg> Pro</a> •
  219. <a href="mailto:david%40larlet.fr" title="Envoyer un courriel"><svg class="icon icon-mail">
  220. <use xlink:href="/static/david/icons2/symbol-defs-2021-12.svg#icon-mail"></use>
  221. </svg> Email</a> •
  222. <abbr class="nowrap" title="Hébergeur : Alwaysdata, 62 rue Tiquetonne 75002 Paris, +33184162340"><svg class="icon icon-hammer2">
  223. <use xlink:href="/static/david/icons2/symbol-defs-2021-12.svg#icon-hammer2"></use>
  224. </svg> Légal</abbr>
  225. </p>
  226. <template id="theme-selector">
  227. <form>
  228. <fieldset>
  229. <legend><svg class="icon icon-brightness-contrast">
  230. <use xlink:href="/static/david/icons2/symbol-defs-2021-12.svg#icon-brightness-contrast"></use>
  231. </svg> Thème</legend>
  232. <label>
  233. <input type="radio" value="auto" name="chosen-color-scheme" checked> Auto
  234. </label>
  235. <label>
  236. <input type="radio" value="dark" name="chosen-color-scheme"> Foncé
  237. </label>
  238. <label>
  239. <input type="radio" value="light" name="chosen-color-scheme"> Clair
  240. </label>
  241. </fieldset>
  242. </form>
  243. </template>
  244. </footer>
  245. <script src="/static/david/js/instantpage-5.1.0.min.js" type="module"></script>
  246. <script>
  247. function loadThemeForm(templateName) {
  248. const themeSelectorTemplate = document.querySelector(templateName)
  249. const form = themeSelectorTemplate.content.firstElementChild
  250. themeSelectorTemplate.replaceWith(form)
  251. form.addEventListener('change', (e) => {
  252. const chosenColorScheme = e.target.value
  253. localStorage.setItem('theme', chosenColorScheme)
  254. toggleTheme(chosenColorScheme)
  255. })
  256. const selectedTheme = localStorage.getItem('theme')
  257. if (selectedTheme && selectedTheme !== 'undefined') {
  258. form.querySelector(`[value="${selectedTheme}"]`).checked = true
  259. }
  260. }
  261. const prefersColorSchemeDark = '(prefers-color-scheme: dark)'
  262. window.addEventListener('load', () => {
  263. let hasDarkRules = false
  264. for (const styleSheet of Array.from(document.styleSheets)) {
  265. let mediaRules = []
  266. for (const cssRule of styleSheet.cssRules) {
  267. if (cssRule.type !== CSSRule.MEDIA_RULE) {
  268. continue
  269. }
  270. // WARNING: Safari does not have/supports `conditionText`.
  271. if (cssRule.conditionText) {
  272. if (cssRule.conditionText !== prefersColorSchemeDark) {
  273. continue
  274. }
  275. } else {
  276. if (cssRule.cssText.startsWith(prefersColorSchemeDark)) {
  277. continue
  278. }
  279. }
  280. mediaRules = mediaRules.concat(Array.from(cssRule.cssRules))
  281. }
  282. // WARNING: do not try to insert a Rule to a styleSheet you are
  283. // currently iterating on, otherwise the browser will be stuck
  284. // in a infinite loop…
  285. for (const mediaRule of mediaRules) {
  286. styleSheet.insertRule(mediaRule.cssText)
  287. hasDarkRules = true
  288. }
  289. }
  290. if (hasDarkRules) {
  291. loadThemeForm('#theme-selector')
  292. }
  293. })
  294. </script>
  295. </body>
  296. </html>