<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.eco-libre.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Maltfield</id>
	<title>Eco-Libre - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.eco-libre.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Maltfield"/>
	<link rel="alternate" type="text/html" href="https://wiki.eco-libre.org/wiki/Special:Contributions/Maltfield"/>
	<updated>2026-06-10T08:54:44Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://wiki.eco-libre.org/index.php?title=Similar_Projects/Yakunina&amp;diff=119</id>
		<title>Similar Projects/Yakunina</title>
		<link rel="alternate" type="text/html" href="https://wiki.eco-libre.org/index.php?title=Similar_Projects/Yakunina&amp;diff=119"/>
		<updated>2026-06-03T21:35:10Z</updated>

		<summary type="html">&lt;p&gt;Maltfield: add sanitation to plus&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
Yakunina is a school and permaculture center in Ecuador, which might be working on appropriate technology.&lt;br /&gt;
&lt;br /&gt;
== Pros ==&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;Local&#039;&#039;&#039; - They&#039;re also in Ecuador&lt;br /&gt;
# &#039;&#039;&#039;Sanitation&#039;&#039;&#039; - Their website suggests a focus on sanitation of wastewater&lt;br /&gt;
&lt;br /&gt;
== Cons ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Poor Documentation&#039;&#039;&#039; - Couldn&#039;t easily find build instructions for their tech&lt;br /&gt;
* &#039;&#039;&#039;Poor Licensing&#039;&#039;&#039; - I could not find any licensing information of their designs.&lt;br /&gt;
&lt;br /&gt;
== TODO ==&lt;br /&gt;
&lt;br /&gt;
# Visit them. Get a list of all the tech they build, and see if they&#039;d be open to licensing any of it openly.&lt;br /&gt;
&lt;br /&gt;
== External Links ==&lt;br /&gt;
&lt;br /&gt;
# Official Website https://www.yakunina.com/&lt;/div&gt;</summary>
		<author><name>Maltfield</name></author>
	</entry>
	<entry>
		<id>https://wiki.eco-libre.org/index.php?title=Similar_Projects/Gaviotas&amp;diff=118</id>
		<title>Similar Projects/Gaviotas</title>
		<link rel="alternate" type="text/html" href="https://wiki.eco-libre.org/index.php?title=Similar_Projects/Gaviotas&amp;diff=118"/>
		<updated>2026-06-03T21:28:07Z</updated>

		<summary type="html">&lt;p&gt;Maltfield: Undo revision 116 by Maltfield (talk)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[wikipedia:Gaviotas|Gaviotas]] is a community in Colombia, which has done a lot of appropriate technology.&lt;br /&gt;
&lt;br /&gt;
== Pros ==&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;Mature&#039;&#039;&#039; - Gaviotas was founded in 1971&lt;br /&gt;
# &#039;&#039;&#039;Prolific&#039;&#039;&#039; - Gaviotas has built a &#039;&#039;lot&#039;&#039; of appropriate technology, and worked with the United Nations Development Programme (UNDP)&lt;br /&gt;
&lt;br /&gt;
== Cons ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Poor Documentation&#039;&#039;&#039; - Only a couple projects are listed on their website (https://centrolasgaviotas.org/). Sometimes this is just a photo. BOMs are missing. Technical details are missing. Build instructions are frequently missing. Maintenance guides are frequently missing. Notable exception: [https://centrolasgaviotas.org/molino-de-viento-tropical wind mill], [https://centrolasgaviotas.org/bomba-de-camisa-gaviotas hand pump], [https://centrolasgaviotas.org/bomba-de-balanc%C3%ADn-gaviota see-saw pump], [https://centrolasgaviotas.org/ariete-hidr%C3%A1ulico-gaviota hydraulic ram])&lt;br /&gt;
* &#039;&#039;&#039;Poor Communication&#039;&#039;&#039; - Unable to contact them in 2025 using official website. I did get a response from the contact on the unofficial website (http://www.friendsofgaviotas.org/), but I got a response from someone (Katherine Holt) who said she hasn&#039;t been involved with Gaviotas in over 15 years..&lt;br /&gt;
* &#039;&#039;&#039;Poor Licensing&#039;&#039;&#039; - I could not find any licensing information of their designs. &#039;&#039;If&#039;&#039; we could contact them, they &#039;&#039;might&#039;&#039; give permission to copyleft.&lt;br /&gt;
&lt;br /&gt;
== TODO ==&lt;br /&gt;
&lt;br /&gt;
# Contact Gaviotas. Ask under what license their tech is currently released, if we can license it under CC BY-SA, and publish it on our website&lt;br /&gt;
# Contact UNDP. Ask if we can license their [https://archive.org/details/technologias_en_la_erradicacion_de_la_pobreza/ TECNOLOGIAS EN LA ERRADICACION DE LA POBREZA (1996)] under CC BY-SA. Then we can prioritize, build, and document the tech listed.&lt;br /&gt;
&lt;br /&gt;
== External Links ==&lt;br /&gt;
&lt;br /&gt;
# Official Website https://centrolasgaviotas.org/&lt;br /&gt;
# Unofficial Website http://www.friendsofgaviotas.org/&lt;br /&gt;
# TECNOLOGIAS EN LA ERRADICACION DE LA POBREZA (1996, UNDP) https://archive.org/details/technologias_en_la_erradicacion_de_la_pobreza/&lt;/div&gt;</summary>
		<author><name>Maltfield</name></author>
	</entry>
	<entry>
		<id>https://wiki.eco-libre.org/index.php?title=Similar_Projects/Yakunina&amp;diff=117</id>
		<title>Similar Projects/Yakunina</title>
		<link rel="alternate" type="text/html" href="https://wiki.eco-libre.org/index.php?title=Similar_Projects/Yakunina&amp;diff=117"/>
		<updated>2026-06-03T21:27:50Z</updated>

		<summary type="html">&lt;p&gt;Maltfield: initial page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
Yakunina is a school and permaculture center in Ecuador, which might be working on appropriate technology.&lt;br /&gt;
&lt;br /&gt;
== Pros ==&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;Local&#039;&#039;&#039; - They&#039;re also in Ecuador&lt;br /&gt;
&lt;br /&gt;
== Cons ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Poor Documentation&#039;&#039;&#039; - Couldn&#039;t easily find build instructions for their tech&lt;br /&gt;
* &#039;&#039;&#039;Poor Licensing&#039;&#039;&#039; - I could not find any licensing information of their designs.&lt;br /&gt;
&lt;br /&gt;
== TODO ==&lt;br /&gt;
&lt;br /&gt;
# Visit them. Get a list of all the tech they build, and see if they&#039;d be open to licensing any of it openly.&lt;br /&gt;
&lt;br /&gt;
== External Links ==&lt;br /&gt;
&lt;br /&gt;
# Official Website https://www.yakunina.com/&lt;/div&gt;</summary>
		<author><name>Maltfield</name></author>
	</entry>
	<entry>
		<id>https://wiki.eco-libre.org/index.php?title=Similar_Projects/Gaviotas&amp;diff=116</id>
		<title>Similar Projects/Gaviotas</title>
		<link rel="alternate" type="text/html" href="https://wiki.eco-libre.org/index.php?title=Similar_Projects/Gaviotas&amp;diff=116"/>
		<updated>2026-06-03T21:26:12Z</updated>

		<summary type="html">&lt;p&gt;Maltfield: initial commit&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[wikipedia:Gaviotas|Gaviotas]] is a community in Colombia, which has done a lot of appropriate technology.&lt;br /&gt;
&lt;br /&gt;
== Pros ==&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;Local&#039;&#039;&#039; - They&#039;re also in Ecuador&lt;br /&gt;
&lt;br /&gt;
== Cons ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Poor Documentation&#039;&#039;&#039; - Couldn&#039;t easily find build instructions for their tech&lt;br /&gt;
* &#039;&#039;&#039;Poor Licensing&#039;&#039;&#039; - I could not find any licensing information of their designs.&lt;br /&gt;
&lt;br /&gt;
== TODO ==&lt;br /&gt;
&lt;br /&gt;
# Visit them. Get a list of all the tech they build, and see if they&#039;d be open to licensing any of it openly.&lt;br /&gt;
&lt;br /&gt;
== External Links ==&lt;br /&gt;
&lt;br /&gt;
# Official Website https://www.yakunina.com/&lt;/div&gt;</summary>
		<author><name>Maltfield</name></author>
	</entry>
	<entry>
		<id>https://wiki.eco-libre.org/index.php?title=Maltfield_Log/2026&amp;diff=115</id>
		<title>Maltfield Log/2026</title>
		<link rel="alternate" type="text/html" href="https://wiki.eco-libre.org/index.php?title=Maltfield_Log/2026&amp;diff=115"/>
		<updated>2026-06-03T20:06:07Z</updated>

		<summary type="html">&lt;p&gt;Maltfield: fix italic literal that made everything after it italic by mistake&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is my ([[User:Maltfield|Michael Altfield]]&#039;s) work log from 2026&lt;br /&gt;
&lt;br /&gt;
I intentionally make my log entries &#039;&#039;very&#039;&#039; verbose -- to make future volunteer&#039;s work easier. The more information that is dumped into this log, the more helpful it will be for future volunteers.&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
=See Also=&lt;br /&gt;
# [[Maltfield_Log]]&lt;br /&gt;
# [[User:Maltfield]]&lt;br /&gt;
# [[Special:Contributions/Maltfield]]&lt;br /&gt;
&lt;br /&gt;
= 2026-05-13 =&lt;br /&gt;
# I got a response from another Project Kamp person, and gave them some advice&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Hey Javier,&lt;br /&gt;
&lt;br /&gt;
Thanks for writing me back. Yeah, it seems like you&#039;re violating your own org&#039;s licensing terms by using Soundstripe :(&lt;br /&gt;
&lt;br /&gt;
I helped write the following article for how to find copyleft music on Open Source Ecology&#039;s wiki:&lt;br /&gt;
&lt;br /&gt;
 * https://wiki.opensourceecology.org/wiki/Open_Source_Soundtracks&lt;br /&gt;
&lt;br /&gt;
I recommend using The Internet Archive and CCMixter for finding music for future videos.&lt;br /&gt;
&lt;br /&gt;
For past videos: you can either&lt;br /&gt;
&lt;br /&gt;
  1. contact the copyright holder (eg the artist) and ask them to grant you permission to license your video (with their music) under CC BY-SA, &lt;br /&gt;
&lt;br /&gt;
  2. contact a lawyer about &amp;quot;Fair Use&amp;quot; law, or&lt;br /&gt;
&lt;br /&gt;
  3. re-release the video without the music (or sub it with a copyleft track)&lt;br /&gt;
&lt;br /&gt;
One problem is: I can&#039;t view any of your content. YouTube has been blocking Tor and VPN users since a couple years, so it&#039;s not a very accessible platform for at-risk folks that need to prevent Google from uniquely fingerprinting them.&lt;br /&gt;
&lt;br /&gt;
I think your content would be very useful to our work at Eco-Libre, but it&#039;s just not visible.&lt;br /&gt;
&lt;br /&gt;
Would you be open to syncing your content to another platform that&#039;s more accessible than YouTube, such as PeerTube (or Odysee, DailyMotion, or Vimeo). Of these, I recommend PeerTube the most. PeerTube mirroring is also very trivial: you can simply check a box to auto-sync your YouTube channel to your PeerTube channel. There are many instances to choose-from (or you could run your own). You might consider one of:&lt;br /&gt;
&lt;br /&gt;
 * https://makertube.net&lt;br /&gt;
 * https://tilvids.com/&lt;br /&gt;
&lt;br /&gt;
Please consider making your videos CC BY-SA and syncing their content to a PeerTube instance, so they&#039;re publicly available to the whole internet.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Thank you,&lt;br /&gt;
&lt;br /&gt;
Michael Altfield&lt;br /&gt;
https://www.michaelaltfield.net&lt;br /&gt;
PGP Fingerprint: 0465 E42F 7120 6785 E972  644C FE1B 8449 4E64 0D41&lt;br /&gt;
&lt;br /&gt;
Note: If you cannot reach me via email, please check to see if I have changed my email address by visiting my website at https://email.michaelaltfield.net&lt;br /&gt;
&lt;br /&gt;
On 5/13/26 02:21, Project Kamp wrote:&lt;br /&gt;
&amp;gt; Hey Michael,&lt;br /&gt;
&amp;gt; the issue we see with this is that we use a third party music service which&lt;br /&gt;
&amp;gt; has a more restrictive license.&lt;br /&gt;
&amp;gt; [image: Captura de pantalla 2026-05-04 a las 20.34.20.png]&lt;br /&gt;
&amp;gt; &lt;br /&gt;
&amp;gt; So if we make our content available for others to reuse under a CC license,&lt;br /&gt;
&amp;gt; probably we will have some trouble with them.&lt;br /&gt;
&amp;gt; Not an expert on these topics, so can&#039;t really value how risky might be.&lt;br /&gt;
&amp;gt; &lt;br /&gt;
&amp;gt; If you have any suggestions, we might consider them.&lt;br /&gt;
&amp;gt; &lt;br /&gt;
&amp;gt; Thanks for sharing.&lt;br /&gt;
&amp;gt; &lt;br /&gt;
&amp;gt; Best,&lt;br /&gt;
&amp;gt; Javier&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= 2026-05-12 =&lt;br /&gt;
# Project Kamp got back to me&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Hello Michael,&lt;br /&gt;
&lt;br /&gt;
I have passed the information on to my colleauges who have more knowledge&lt;br /&gt;
around this topic.&lt;br /&gt;
Thank you for reaching out!&lt;br /&gt;
&lt;br /&gt;
Julie&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# Guess I should follow-up in a month or so to see what they&#039;ve done with fixing the licensing of their YouTube videos. And maybe then I can ask about PeerTube mirroring.&lt;br /&gt;
&lt;br /&gt;
= 2026-05-11 =&lt;br /&gt;
# today I went to actually update the /donate/ page to use the &#039;icon-font-awesome&#039; blocks (to replace the &amp;quot;custom html&amp;quot; blocks)&lt;br /&gt;
# the heart one worked great! but unfortunately the &amp;quot;bitcoin&amp;quot; icon (which could be found and selected) didn&#039;t render properly. And the monero icon couldn&#039;t even be found. it was totally missing.&lt;br /&gt;
# the monero icon says it&#039;s available in 5.0.0 and 7.0.0 https://fontawesome.com/icons/brands/solid/monero&lt;br /&gt;
# looks like this plugin ships with 6.5.2&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@mail:/var/www/html/wordpress/htdocs/wp-content/plugins# find . -name fontawesome.css&lt;br /&gt;
./icon-font-awesome/fontawesome/css/fontawesome.css&lt;br /&gt;
./easy-social-icons/css/font-awesome/css/fontawesome.css&lt;br /&gt;
./extensions-leaflet-map/fonts/fontawesome-free-6.7.2-web/css/fontawesome.css&lt;br /&gt;
root@mail:/var/www/html/wordpress/htdocs/wp-content/plugins# &lt;br /&gt;
root@mail:/var/www/html/wordpress/htdocs/wp-content/plugins# head -c 64 ./easy-social-icons/css/font-awesome/css/font-awesome.css&lt;br /&gt;
/*&lt;br /&gt;
 * Font Awesome Free 6.5.2 by @fontawesome - https://fontawroot@mail:/var/www/html/wordpress/htdocs/wp-content/plugins# &lt;br /&gt;
root@mail:/var/www/html/wordpress/htdocs/wp-content/plugins# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# is it really possible that they had it in v5 and v7 but not in v6?&lt;br /&gt;
# well, we do have another plugin with v7.0.0&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@mail:/var/www/html/wordpress/htdocs/wp-content/plugins# head -c 64 ./easy-social-icons/css/font-awesome/css/fontawesome.css&lt;br /&gt;
/*!&lt;br /&gt;
 * Font Awesome Free 7.0.0 by @fontawesome - https://fontaweroot@mail:/var/www/html/wordpress/htdocs/wp-content/plugins# &lt;br /&gt;
root@mail:/var/www/html/wordpress/htdocs/wp-content/plugins# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
#  let&#039;s see if I can overwrite this one with that one&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@mail:/var/www/html/wordpress/htdocs/wp-content/plugins# mv icon-font-awesome/fontawesome icon-font-awesome/fontawesome.bak&lt;br /&gt;
root@mail:/var/www/html/wordpress/htdocs/wp-content/plugins# rsync -av --progress easy-social-icons/css/font-awesome icon-font-awesome/   sending incremental file list&lt;br /&gt;
font-awesome/&lt;br /&gt;
font-awesome/index.php&lt;br /&gt;
			  0 100%    0,00kB/s    0:00:00 (xfr#1, to-chk=38/40)&lt;br /&gt;
...&lt;br /&gt;
font-awesome/webfonts/index.php&lt;br /&gt;
			  0 100%    0,00kB/s    0:00:00 (xfr#36, to-chk=0/40)&lt;br /&gt;
&lt;br /&gt;
sent 4.704.459 bytes  received 732 bytes  9.410.382,00 bytes/sec&lt;br /&gt;
total size is 4.700.991  speedup is 1,00&lt;br /&gt;
root@mail:/var/www/html/wordpress/htdocs/wp-content/plugins#&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# shit, refresh lead to a cascade of 404 errors, which lead me to be banned on wazuh; hmm&lt;br /&gt;
## here&#039;s one example 404 https://www.eco-libre.org/wp-content/plugins/icon-font-awesome/fontawesome/webfonts/fa-brands-400.ttf&lt;br /&gt;
### yeah, looks like the dir is missing&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@mail:/var/www/html/wordpress/htdocs/wp-content/plugins# ls -lah icon-font-awesome/fontawesome/webfonts/&lt;br /&gt;
ls: cannot access &#039;icon-font-awesome/fontawesome/webfonts/&#039;: No such file or directory&lt;br /&gt;
root@mail:/var/www/html/wordpress/htdocs/wp-content/plugins# ls -lah icon-font-awesome/fontawesome.bak/webfonts/&lt;br /&gt;
total 1016K&lt;br /&gt;
d---r-x--- 2 root www-data 4,0K Apr 19  2025 .&lt;br /&gt;
d---r-x--- 4 root www-data 4,0K Apr 19  2025 ..&lt;br /&gt;
----r----- 1 root www-data 205K Apr 19  2025 fa-brands-400.ttf&lt;br /&gt;
----r----- 1 root www-data 116K Apr 19  2025 fa-brands-400.woff2&lt;br /&gt;
----r----- 1 root www-data  67K Apr 19  2025 fa-regular-400.ttf&lt;br /&gt;
----r----- 1 root www-data  25K Apr 19  2025 fa-regular-400.woff2&lt;br /&gt;
----r----- 1 root www-data 411K Apr 19  2025 fa-solid-900.ttf&lt;br /&gt;
----r----- 1 root www-data 153K Apr 19  2025 fa-solid-900.woff2&lt;br /&gt;
----r----- 1 root www-data  11K Apr 19  2025 fa-v4compatibility.ttf&lt;br /&gt;
----r----- 1 root www-data 4,7K Apr 19  2025 fa-v4compatibility.woff2&lt;br /&gt;
root@mail:/var/www/html/wordpress/htdocs/wp-content/plugins# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# oh, the issue is just that it chagned from &#039;font-awesome&#039; to &#039;fontawesome&#039;&lt;br /&gt;
# let&#039;s try this symlink&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@mail:/var/www/html/wordpress/htdocs/wp-content/plugins/icon-font-awesome# ln -s font-awesome fontawesome&lt;br /&gt;
root@mail:/var/www/html/wordpress/htdocs/wp-content/plugins/icon-font-awesome# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# now when I refresh the page, the 404s are gone – but the bitcoin icon still isn&#039;t rendering&lt;br /&gt;
# I refreshed the edit page for the donate page, deleted the font icon block, and added a new one. still the btc icons won&#039;t load. and still the monero icon wont&#039; appear in the list :(&lt;br /&gt;
# curiously, the old bitcoin icon loads fine (the one I specify with html). let&#039;s diff them&lt;br /&gt;
## here&#039;s mine in &amp;quot;custom html&amp;quot;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;strong&amp;gt;&amp;lt;i class=&amp;quot;fab fa-2x fa-fw black-icon fa-bitcoin&amp;quot;&amp;gt;&amp;lt;/i&amp;gt; Bitcoin (BTC):&amp;lt;/strong&amp;gt; &amp;lt;code style=&amp;quot;font-size:large; word-break: break-all;&amp;quot;&amp;gt;bc1q7jdyxeha67gz0wjkw6m2mrt07egp8xjhvygv24&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## here&#039;s the one with the plugin block&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;wp-block-yuky-icon-font-awesome&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;box-icon&amp;quot;&amp;gt;&amp;lt;i class=&amp;quot;fa-solid fa-btc&amp;quot; aria-label=&amp;quot;Btc&amp;quot; style=&amp;quot;font-size:45px;color:#333;--icon-font-awesome-hover-color:#333&amp;quot;&amp;gt;&amp;lt;/i&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# so it&#039;s &#039;fa-bitcoin&#039; that works and &#039;fa-btc&#039; that doesn&#039;t work. hmm.&lt;br /&gt;
# I switched from the block visual editor to the block code editor and changed&lt;br /&gt;
## this&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;!-- wp:yuky/icon-font-awesome {&amp;quot;iconName&amp;quot;:&amp;quot;Icons-iconFontAwesomeMoneyBtc&amp;quot;} --&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;wp-block-yuky-icon-font-awesome&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;box-icon&amp;quot;&amp;gt;&amp;lt;i class=&amp;quot;fa-solid fa-btc&amp;quot; aria-label=&amp;quot;Btc&amp;quot; style=&amp;quot;font-size:45px;color:#333;--icon-font-awesome-hover-color:#333&amp;quot;&amp;gt;&amp;lt;/i&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;!-- /wp:yuky/icon-font-awesome --&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## to this&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;!-- wp:yuky/icon-font-awesome {&amp;quot;iconName&amp;quot;:&amp;quot;Icons-iconFontAwesomeMoneyBitcoin&amp;quot;} --&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;wp-block-yuky-icon-font-awesome&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;box-icon&amp;quot;&amp;gt;&amp;lt;i class=&amp;quot;fab fa-2x fa-fw black-icon fa-bitcoin&amp;quot; aria-label=&amp;quot;Bitcoin&amp;quot; style=&amp;quot;font-size:45px;color:#333;--icon-font-awesome-hover-color:#333&amp;quot;&amp;gt;&amp;lt;/i&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;!-- /wp:yuky/icon-font-awesome --&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## and now the icon appears fine on refresh&lt;br /&gt;
## however, if I switch back to the visual editor, it gives an error&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Block contains unexpected or invalid content&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## if I click the &amp;quot;Attempt Recovery&amp;quot; button, then it goes back to its old broken self&lt;br /&gt;
# I also tried to update the credit card, but it was inverted in colors. Here&#039;s a diff&lt;br /&gt;
## our old one&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;wp-block-yuky-icon-font-awesome&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;box-icon&amp;quot;&amp;gt;&amp;lt;i class=&amp;quot;fa-solid fa-credit-card&amp;quot; aria-label=&amp;quot;Credit Card&amp;quot; style=&amp;quot;font-size:40px;color:#333;--icon-font-awesome-hover-color:#333&amp;quot;&amp;gt;&amp;lt;/i&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## the new one&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;wp-block-yuky-icon-font-awesome&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;box-icon&amp;quot;&amp;gt;&amp;lt;i class=&amp;quot;fa-solid fa-credit-card&amp;quot; aria-label=&amp;quot;Credit Card&amp;quot; style=&amp;quot;font-size:40px;color:#333;--icon-font-awesome-hover-color:#333&amp;quot;&amp;gt;&amp;lt;/i&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# to avoid breaking the block, I tried using the wordpress &amp;quot;Additional CSS Class(es)&amp;quot; that changed it to&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;wp-block-yuky-icon-font-awesome&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;box-icon&amp;quot;&amp;gt;&amp;lt;i class=&amp;quot;fa-solid fa-credit-card&amp;quot; aria-label=&amp;quot;Credit Card&amp;quot; style=&amp;quot;font-size:40px;color:#333;--icon-font-awesome-hover-color:#333&amp;quot;&amp;gt;&amp;lt;/i&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## crap, that&#039;s not going to work. the classes got put in the wrapper div; we need it inside the &amp;lt;pre&amp;gt;&amp;lt;i&amp;gt;&amp;lt;/pre&amp;gt; element&lt;br /&gt;
# I opened some feature requests for the upstream dev, offering some XMR bounties&lt;br /&gt;
## Request to donate in monero ($5) https://github.com/yukyhendiawan/icon-font-awesome/issues/3&lt;br /&gt;
## Add monero icon ($10) https://github.com/yukyhendiawan/icon-font-awesome/issues/4&lt;br /&gt;
## Block option: Edit Classes ($15)  https://github.com/yukyhendiawan/icon-font-awesome/issues/7&lt;br /&gt;
# I&#039;m pretty sure the second one will fix the bitcoin icon issue too. And the third one should be a robust long-term workaround for any future issues (if we can just edit the classes directly without it corrupting the block, we can manually fix any icons to look however we want)&lt;br /&gt;
# alright, well, now the pieces are in place for longer-term fixes. For now, we&#039;ll just only be using this plugin for the &amp;quot;heart&amp;quot; icon. We&#039;ll have to wait for the three issues above to be resolved to fix the xmr, btc, and credit card icons.&lt;br /&gt;
&lt;br /&gt;
= 2026-05-09 =&lt;br /&gt;
# I spent some time testing out some wordpress plugins for a wysiwyg experience with the gutenberg block editor for managing font awesome icons, which I had previously 3TOFU&#039;d&lt;br /&gt;
# this was part of my work with the raft partnership, in which I added this page eco-libre.org/donate&lt;br /&gt;
# I have a heart icon, but currently it&#039;s just done with raw html; that&#039;s not very nice for non-techie future volunteers who may want to edit the site&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;h1&amp;gt;&amp;lt;i class=&amp;quot;fa fa-2x fa-fw black-icon fa-heart&amp;quot;&amp;gt;&amp;lt;/i&amp;gt; Ways to Donate&amp;lt;/h1&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# and bitcoin and monero icons&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size: large&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;&amp;lt;i class=&amp;quot;fab fa-2x fa-fw black-icon fa-bitcoin&amp;quot;&amp;gt;&amp;lt;/i&amp;gt; Bitcoin (BTC):&amp;lt;/strong&amp;gt; &amp;lt;code style=&amp;quot;font-size:large; word-break: break-all;&amp;quot;&amp;gt;bc1q7jdyxeha67gz0wjkw6m2mrt07egp8xjhvygv24&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear:both;&amp;quot; /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;&amp;lt;i class=&amp;quot;fab fa-2x fa-fw black-icon fa-monero&amp;quot;&amp;gt;&amp;lt;/i&amp;gt; Monero (XMR):&amp;lt;/strong&amp;gt; &amp;lt;code style=&amp;quot;font-size:large; word-break: break-all;&amp;quot;&amp;gt;8Aw3ShYSs2zXBfN8rhbWayDq552nJZvdqb3uxLnFxF5HctUsYtWeEq2hscUzjhDTw23EfsWgyhzMjCJEzCVeNDRiEYhvEzq&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear:both;&amp;quot; /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# and later some credit cards&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;strong&amp;gt;&amp;lt;i class=&amp;quot;fa fa-2x fa-fw black-icon fa-credit-card&amp;quot;&amp;gt;&amp;lt;/i&amp;gt; &amp;lt;a href=&amp;quot;https://opencollective.com/eco-libre&amp;quot;&amp;gt;Credit card or PayPal via Open Collective&amp;lt;/a&amp;gt;&amp;lt;/strong&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# previously I had tested a couple plugins, iirc called &#039;font-awesome&#039; and &#039;better-font-awesome&#039; but they both just worked with shortcodes. I&#039;m not sure, but that might actually be worse than just doing a &amp;quot;custom html&amp;quot; block (because it&#039;s equally difficult syntax and, if the plugin is gone, the shortcode will be naked and broken whereas the html will keep working)&lt;br /&gt;
# here&#039;s what I tested today&lt;br /&gt;
	a. wp-font-awesome = WP Font Awesome&lt;br /&gt;
		1. another shortcode only&lt;br /&gt;
	b. block-for-font-awesome = Block for Font Awesome&lt;br /&gt;
		1. this was rejected; it required the user to manually type the class&lt;br /&gt;
	c. icon-font-awesome = Block: Icons Font Awesome&lt;br /&gt;
		1. this one is good. it let the user click-to-select, customize size and color, and then click and drag the icon next to a heading&lt;br /&gt;
		2. it also loads all fonts locally; no 3rd party requests&lt;br /&gt;
	d. perfect-font-awesome-integration = Perfect Font Awesome Integration&lt;br /&gt;
		1. this one only worked in the &amp;quot;visual editor&amp;quot; – there was no block. rejected.&lt;br /&gt;
	e. shortcode-for-font-awesome = Shortcode for Font Awesome&lt;br /&gt;
		1. no block; just a shortcode. skipped.&lt;br /&gt;
	f. surbma-font-awesome = Surbma | Font Awesome&lt;br /&gt;
		1. another shortcode only&lt;br /&gt;
# I went ahead and deleted the others&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@mail:/var/www/html/wordpress/htdocs/wp-content/plugins# rm -rf wp-font-awesome&lt;br /&gt;
rm -rf block-for-font-awesome&lt;br /&gt;
rm -rf perfect-font-awesome-integration&lt;br /&gt;
rm -rf shortcode-for-font-awesome&lt;br /&gt;
rm -rf surbma-font-awesome&lt;br /&gt;
root@mail:/var/www/html/wordpress/htdocs/wp-content/plugins# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# oh, I also deleted &amp;quot;better font awesome&amp;quot;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@mail:/var/www/html/wordpress/htdocs/wp-content/plugins# ls | grep -i font&lt;br /&gt;
better-font-awesome&lt;br /&gt;
icon-font-awesome&lt;br /&gt;
root@mail:/var/www/html/wordpress/htdocs/wp-content/plugins# rm -rf better-font-awesome/&lt;br /&gt;
root@mail:/var/www/html/wordpress/htdocs/wp-content/plugins# &lt;br /&gt;
&lt;br /&gt;
root@mail:/var/www/html/wordpress/htdocs/wp-content/plugins# ls | grep -i font&lt;br /&gt;
icon-font-awesome&lt;br /&gt;
root@mail:/var/www/html/wordpress/htdocs/wp-content/plugins# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= 2026-05-07 =&lt;br /&gt;
# I left an update to the CERN thread withthe REUSE work I did yesterday https://forums.ohwr.org/t/possible-to-triple-license-cern-ohl-s-2-0-agpl-3-0-cc-by-sa-4-0/849882/11&lt;br /&gt;
# I was just about to open a new thread asking how I should indicate the license of Available Components *inside* our FreeCAD file, but first I did a search for &amp;quot;Available Component&amp;quot; on their forums &lt;br /&gt;
## I found this thread, which terrifies me https://forums.ohwr.org/t/ohl-s-vs-ohl-w-when-cc-by-sa-components-are-included/849276&lt;br /&gt;
### It says that you cannot use CERN-OHL-S-2.0 to license a file that contains a CC BY-SA license, because the &amp;quot;SA&amp;quot; part wouldn&#039;t work with the concept of &amp;quot;Available Components&amp;quot;. My understanding was that you could just mark it as an &amp;quot;Available Component&amp;quot;, but I guess that only applies for permissive or proprietary things, and not copyleft things. Or maybe you just have to make available components absent from you cad files, so they&#039;re added later?&lt;br /&gt;
### ugh, but then he says it&#039;s ok because &amp;quot;But my understanding (maybe wrong) is that you are not using those files inside a larger design. You are just modifying those files, in which case you should honour their CC-BY-SA licence and publish the modified versions under CC-BY-SA.&amp;quot;&lt;br /&gt;
## this thread is also interesting; it confirms what I&#039;ve done by taking LGPL files and putting them under GPL. It says that&#039;s allowed, but then if the LGPL project wants to include the improvements, then it has to become GPL&#039;d https://forums.ohwr.org/t/licensing-an-ohl-w-derivative-as-ohl-s/849101/2&lt;br /&gt;
# I asked my question about how to write copyright/licensing info for Available Components in our cad files: https://forums.ohwr.org/t/how-to-indicate-licensing-for-available-components-in-cad-files/849901&lt;br /&gt;
## I specifically asked about three cases: proprietary black boxes (eg a battery-powered electric valve opener like what we&#039;ll eventually add to the spindown and cleanout valves on the life-line), non-reciprocal open-source objects (eg a pipe fitting that we import from OSE&#039;s repos, which is licensed LGPL), and strong-reciprocal open-source (eg a CC BY-SA svg file that we use for extruding some complex geometry).&lt;br /&gt;
# I tried to create some tickets for the REUSE project, but I kept getting rubbish content when trying to load their issues pages. This has happened to me for months, but it wasn&#039;t obvious what to do. I finally opened a bug report about it https://codeberg.org/Codeberg/Community/issues/2603&lt;br /&gt;
# ok, I guess cahmelion switched some fingerprints to be less offensive to codeberg&#039;s broken fingerprint detection anit-bot crap, because I can now load some pages&lt;br /&gt;
# I added my $0.02 to this ticket, asking for `reuse annotate` to update headers, matching the `REUSE.toml` file https://codeberg.org/fsfe/reuse-tool/issues/1238#issuecomment-14466437&lt;br /&gt;
## hmm looks like that&#039;s actually the opposite of what I want: they want annotate to update REUSE.toml. whereas I want annotate to read REUSE.toml to update all the other files&lt;br /&gt;
## this other issue suggests that they intentionally don&#039;t want that, due to the risks of overwriting existing headers https://codeberg.org/fsfe/reuse-tool/issues/534&lt;br /&gt;
### they instead urge users to visit some &amp;quot;helper scripts&amp;quot; documented here https://reuse.readthedocs.io/en/stable/scripts.html&lt;br /&gt;
#### oh, but that uses git metadata – not what&#039;s defined in the REUSE.toml file :(&lt;br /&gt;
## this sounds like what we want, but they renamed `annotate` to `materalize` for some reason https://codeberg.org/fsfe/reuse-tool/issues/921&lt;br /&gt;
## there&#039;s another ticket titled &amp;quot;don&#039;t ignore REUSE.toml in reuse annotate&amp;quot; but I don&#039;t really understand what they&#039;re asking https://codeberg.org/fsfe/reuse-tool/issues/1190&lt;br /&gt;
## I&#039;m also not a huge fan of the REUSE.toml file. It seems too complicated for humans to read, compated to the deb5 format that it already supports. Apparently I&#039;m not alone, and someone else asked not to deprecate this file (the reuse file deleted our deb5 file when we used said too to parse it) https://codeberg.org/fsfe/reuse-tool/issues/1337&lt;br /&gt;
## I also learned that the spdx bom can be created in json format, oddly, from the lint subcommand https://codeberg.org/fsfe/reuse-tool/issues/1338&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
(reuse) user@disp6671:~/life-line$ reuse lint -j | head -n50&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;lint_version&amp;quot;: &amp;quot;1.0&amp;quot;,&lt;br /&gt;
  &amp;quot;reuse_spec_version&amp;quot;: &amp;quot;3.3&amp;quot;,&lt;br /&gt;
  &amp;quot;reuse_tool_version&amp;quot;: &amp;quot;6.2.0&amp;quot;,&lt;br /&gt;
  &amp;quot;files&amp;quot;: [&lt;br /&gt;
	{&lt;br /&gt;
	  &amp;quot;path&amp;quot;: &amp;quot;docs/images/life-line_intake_turbulence-bar.jpg&amp;quot;,&lt;br /&gt;
	  &amp;quot;copyrights&amp;quot;: [&lt;br /&gt;
		{&lt;br /&gt;
		  &amp;quot;value&amp;quot;: &amp;quot;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&amp;quot;,&lt;br /&gt;
		  &amp;quot;source&amp;quot;: &amp;quot;REUSE.toml&amp;quot;,&lt;br /&gt;
		  &amp;quot;source_type&amp;quot;: &amp;quot;reuse-toml&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		{&lt;br /&gt;
		  &amp;quot;value&amp;quot;: &amp;quot;SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&amp;quot;,&lt;br /&gt;
		  &amp;quot;source&amp;quot;: &amp;quot;REUSE.toml&amp;quot;,&lt;br /&gt;
		  &amp;quot;source_type&amp;quot;: &amp;quot;reuse-toml&amp;quot;&lt;br /&gt;
		}&lt;br /&gt;
	  ],&lt;br /&gt;
	  &amp;quot;spdx_expressions&amp;quot;: [&lt;br /&gt;
		{&lt;br /&gt;
		  &amp;quot;value&amp;quot;: &amp;quot;CC-BY-SA-4.0&amp;quot;,&lt;br /&gt;
		  &amp;quot;is_valid&amp;quot;: true,&lt;br /&gt;
		  &amp;quot;source&amp;quot;: &amp;quot;REUSE.toml&amp;quot;,&lt;br /&gt;
		  &amp;quot;source_type&amp;quot;: &amp;quot;reuse-toml&amp;quot;&lt;br /&gt;
		}&lt;br /&gt;
	  ]&lt;br /&gt;
	},&lt;br /&gt;
	{&lt;br /&gt;
	  &amp;quot;path&amp;quot;: &amp;quot;docs/images/life-line_intake_weir.jpg&amp;quot;,&lt;br /&gt;
	  &amp;quot;copyrights&amp;quot;: [&lt;br /&gt;
		{&lt;br /&gt;
		  &amp;quot;value&amp;quot;: &amp;quot;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&amp;quot;,&lt;br /&gt;
		  &amp;quot;source&amp;quot;: &amp;quot;REUSE.toml&amp;quot;,&lt;br /&gt;
		  &amp;quot;source_type&amp;quot;: &amp;quot;reuse-toml&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		{&lt;br /&gt;
		  &amp;quot;value&amp;quot;: &amp;quot;SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&amp;quot;,&lt;br /&gt;
		  &amp;quot;source&amp;quot;: &amp;quot;REUSE.toml&amp;quot;,&lt;br /&gt;
		  &amp;quot;source_type&amp;quot;: &amp;quot;reuse-toml&amp;quot;&lt;br /&gt;
		}&lt;br /&gt;
	  ],&lt;br /&gt;
	  &amp;quot;spdx_expressions&amp;quot;: [&lt;br /&gt;
		{&lt;br /&gt;
		  &amp;quot;value&amp;quot;: &amp;quot;CC-BY-SA-4.0&amp;quot;,&lt;br /&gt;
		  &amp;quot;is_valid&amp;quot;: true,&lt;br /&gt;
		  &amp;quot;source&amp;quot;: &amp;quot;REUSE.toml&amp;quot;,&lt;br /&gt;
		  &amp;quot;source_type&amp;quot;: &amp;quot;reuse-toml&amp;quot;&lt;br /&gt;
		}&lt;br /&gt;
	  ]&lt;br /&gt;
(reuse) user@disp6671:~/life-line$ reuse lint -j | tail -n50&lt;br /&gt;
	},&lt;br /&gt;
	{&lt;br /&gt;
	  &amp;quot;path&amp;quot;: &amp;quot;docs/images/life-line_2023.12.jpg&amp;quot;,&lt;br /&gt;
	  &amp;quot;copyrights&amp;quot;: [&lt;br /&gt;
		{&lt;br /&gt;
		  &amp;quot;value&amp;quot;: &amp;quot;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&amp;quot;,&lt;br /&gt;
		  &amp;quot;source&amp;quot;: &amp;quot;REUSE.toml&amp;quot;,&lt;br /&gt;
		  &amp;quot;source_type&amp;quot;: &amp;quot;reuse-toml&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		{&lt;br /&gt;
		  &amp;quot;value&amp;quot;: &amp;quot;SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&amp;quot;,&lt;br /&gt;
		  &amp;quot;source&amp;quot;: &amp;quot;REUSE.toml&amp;quot;,&lt;br /&gt;
		  &amp;quot;source_type&amp;quot;: &amp;quot;reuse-toml&amp;quot;&lt;br /&gt;
		}&lt;br /&gt;
	  ],&lt;br /&gt;
	  &amp;quot;spdx_expressions&amp;quot;: [&lt;br /&gt;
		{&lt;br /&gt;
		  &amp;quot;value&amp;quot;: &amp;quot;CC-BY-SA-4.0&amp;quot;,&lt;br /&gt;
		  &amp;quot;is_valid&amp;quot;: true,&lt;br /&gt;
		  &amp;quot;source&amp;quot;: &amp;quot;REUSE.toml&amp;quot;,&lt;br /&gt;
		  &amp;quot;source_type&amp;quot;: &amp;quot;reuse-toml&amp;quot;&lt;br /&gt;
		}&lt;br /&gt;
	  ]&lt;br /&gt;
	}&lt;br /&gt;
  ],&lt;br /&gt;
  &amp;quot;non_compliant&amp;quot;: {&lt;br /&gt;
	&amp;quot;bad_licenses&amp;quot;: [],&lt;br /&gt;
	&amp;quot;deprecated_licenses&amp;quot;: [],&lt;br /&gt;
	&amp;quot;licenses_without_extension&amp;quot;: [],&lt;br /&gt;
	&amp;quot;missing_licenses&amp;quot;: [],&lt;br /&gt;
	&amp;quot;unused_licenses&amp;quot;: [],&lt;br /&gt;
	&amp;quot;read_errors&amp;quot;: [],&lt;br /&gt;
	&amp;quot;missing_copyright_info&amp;quot;: [],&lt;br /&gt;
	&amp;quot;missing_licensing_info&amp;quot;: []&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;summary&amp;quot;: {&lt;br /&gt;
	&amp;quot;used_licenses&amp;quot;: [&lt;br /&gt;
	  &amp;quot;AGPL-3.0-only&amp;quot;,&lt;br /&gt;
	  &amp;quot;CC-BY-SA-4.0&amp;quot;,&lt;br /&gt;
	  &amp;quot;CERN-OHL-S-2.0&amp;quot;,&lt;br /&gt;
	  &amp;quot;GPL-3.0-or-later&amp;quot;,&lt;br /&gt;
	  &amp;quot;LGPL-2.1-or-later&amp;quot;&lt;br /&gt;
	],&lt;br /&gt;
	&amp;quot;files_total&amp;quot;: 54,&lt;br /&gt;
	&amp;quot;files_with_copyright_info&amp;quot;: 54,&lt;br /&gt;
	&amp;quot;files_with_licensing_info&amp;quot;: 54,&lt;br /&gt;
	&amp;quot;compliant&amp;quot;: true&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;recommendations&amp;quot;: []&lt;br /&gt;
}(reuse) user@disp6671:~/life-line$ &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= 2026-05-06 =&lt;br /&gt;
# I created an issue with the FreeCAD_Workbench_Starter repo, asking them to clearly indicate the copyright and license https://github.com/skaiser/FreeCAD_Workbench_Starter/issues/4&lt;br /&gt;
## ah, I did see a file with some copyright info in the comments https://github.com/skaiser/FreeCAD_Workbench_Starter/blob/61dc25b7b90f37b7e0b12086f95f0dc4b0de943a/OSE_CommandButton.py&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#***************************************************************************&lt;br /&gt;
#*                                                                         *&lt;br /&gt;
#*  This file is part of the FreeCAD_Workbench_Starter project.            *&lt;br /&gt;
#*                                                                         *&lt;br /&gt;
#*                                                                         *&lt;br /&gt;
#*  Copyright (C) 2017                                                     *&lt;br /&gt;
#*  Stephen Kaiser &amp;lt;freesol29@gmail.com&amp;gt;                                   *&lt;br /&gt;
#*                                                                         *&lt;br /&gt;
#*  This library is free software; you can redistribute it and/or          *&lt;br /&gt;
#*  modify it under the terms of the GNU Lesser General Public             *&lt;br /&gt;
#*  License as published by the Free Software Foundation; either           *&lt;br /&gt;
#*  version 2 of the License, or (at your option) any later version.       *&lt;br /&gt;
#*                                                                         *            &lt;br /&gt;
#*  This library is distributed in the hope that it will be useful,        *&lt;br /&gt;
#*  but WITHOUT ANY WARRANTY; without even the implied warranty of         *&lt;br /&gt;
#*  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU      *&lt;br /&gt;
#*  Lesser General Public License for more details.                        *&lt;br /&gt;
#*                                                                         *&lt;br /&gt;
#*  You should have received a copy of the GNU Lesser General Public       *&lt;br /&gt;
#*  License along with this library; if not, If not, see                   *&lt;br /&gt;
#*  &amp;lt;http://www.gnu.org/licenses/&amp;gt;.                                        *&lt;br /&gt;
#*                                                                         *&lt;br /&gt;
#*                                                                         *&lt;br /&gt;
#***************************************************************************&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## ok, so we have the copyright and it appears to use LGPL&lt;br /&gt;
# meanwhile its fork has this copyright, without license specified https://github.com/rkrenzler/ose-piping-workbench/blob/ca1961cf8e678f55f0c01a92acd2db881a7ee2ad/OsePiping/Bushing.py&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# -*- coding: utf-8 -*-&lt;br /&gt;
# Author: Ruslan Krenzler.&lt;br /&gt;
# Date: 27 January 2018&lt;br /&gt;
# Create a bushing-fitting.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# without further clairfication, I&#039;m going to assume that it&#039;s dual licensed. That lets us choose which license we put it under. Also, I&#039;m pretty sure we can relicense LGPGL as GPL but not the other way around. So let&#039;s list it as GPL&#039;d and add the copyright of these two people&lt;br /&gt;
# I created tickets for both&lt;br /&gt;
## https://github.com/skaiser/FreeCAD_Workbench_Starter/issues/4&lt;br /&gt;
## https://github.com/rkrenzler/ose-piping-workbench/issues/12&lt;br /&gt;
### I also created a PR to fix this one, which is the one we actually used to create the bulkhead = bushing https://github.com/rkrenzler/ose-piping-workbench/pull/13&lt;br /&gt;
## unfortuantely I don&#039;t appear to have the bushing in its own cad file, so I recreated it in a dispVM&lt;br /&gt;
## the install instructions don&#039;t work anymore. I had to move the &amp;quot;Mod&amp;quot; dir from &amp;quot;~/.FreeCAD&amp;quot; to &amp;quot;~/.local/share/FreeCAD/&amp;quot;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
user@disp6671:~/.FreeCAD/Mod$ freecad&lt;br /&gt;
FreeCAD 0.20.2, Libs: 0.20.2R&lt;br /&gt;
© Juergen Riegel, Werner Mayer, Yorik van Havre and others 2001-2022&lt;br /&gt;
FreeCAD is free and open-source software licensed under the terms of LGPL2+ license.&lt;br /&gt;
FreeCAD wouldn&#039;t be possible without FreeCAD community.&lt;br /&gt;
  #####                 ####  ###   ####  &lt;br /&gt;
  #                    #      # #   #   # &lt;br /&gt;
  #     ##  #### ####  #     #   #  #   # &lt;br /&gt;
  ####  # # #  # #  #  #     #####  #   # &lt;br /&gt;
  #     #   #### ####  #    #     # #   # &lt;br /&gt;
  #     #   #    #     #    #     # #   #  ##  ##  ##&lt;br /&gt;
  #     #   #### ####   ### #     # ####   ##  ##  ##&lt;br /&gt;
&lt;br /&gt;
User path has changed to /home/user/.local/share/FreeCAD/. Please move user modules and macros&lt;br /&gt;
[1107:7:0506/164331.467752:ERROR:command_buffer_proxy_impl.cc(141)] ContextResult::kTransientFailure: Failed to send GpuChannelMsg_CreateCommandBuffer.&lt;br /&gt;
user@disp6671:~/.FreeCAD/Mod$&lt;br /&gt;
&lt;br /&gt;
user@disp6671:~/.FreeCAD/Mod$ cd ..&lt;br /&gt;
user@disp6671:~/.FreeCAD$ cd ..&lt;br /&gt;
user@disp6671:~$&lt;br /&gt;
&lt;br /&gt;
user@disp6671:~$ mv .FreeCAD/Mod .local/share/FreeCAD/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## I also updated the install instructions on the OSE wiki&lt;br /&gt;
&lt;br /&gt;
= 2026-05-05 =&lt;br /&gt;
# today I added all my log entries for April to the wiki https://wiki.eco-libre.org/wiki/Maltfield_Log/2026&lt;br /&gt;
## in the process I had to add a couple rules to the allowlist of mod_security&lt;br /&gt;
# ...&lt;br /&gt;
# I wanted to add some &amp;quot;Available Components&amp;quot; to our life-line repo&#039;s REUSE copyright/license definition, but I had some issues finding-out the copyright &amp;amp; license info&lt;br /&gt;
## we used ose&#039;s pipe workbench for some bulkheads (bushings) https://github.com/rkrenzler/ose-piping-workbench&lt;br /&gt;
## that repo&#039;s has no copyright info. and its readme says &amp;quot;GPLv3&amp;quot; while it has a LICENSE file that includes LGPL-3.0. It also has a COPYRIGHT.template file – but that&#039;s just an empty template, nobody filled it out :/&lt;br /&gt;
## this repo was also forked from this other repo, which does have a &amp;quot;contributor&amp;quot; = Stephen Kaiser https://github.com/skaiser/FreeCAD_Workbench_Starter&lt;br /&gt;
### that one also lacks copyright info, and it also has two files that contradict each other COPYING (GPL) and COPYING.LESSER (LGPL)&lt;br /&gt;
### oh wait, no. this wasn&#039;t *really* a fork. it was just forked from a &amp;quot;starter&amp;quot; repo that served as an example. well, I guess attribution and licensing still applies, but to just a subset of files?&lt;br /&gt;
## TODO: https://github.com/boltsparts/BOLTSFC/blob/main/README.md&lt;br /&gt;
## TODO: others?&lt;br /&gt;
## TODO: open tickets with all the repos and ask them to clearly list copyright and license info (maybe submit a PR for the OSE stuff)&lt;br /&gt;
&lt;br /&gt;
= 2026-05-04 =&lt;br /&gt;
# I recently learned about a non-profit here in Ecuador that does work on renewable electricity systems&lt;br /&gt;
## it&#039;s called CICE (Centro de Investigación y Capacitación Eléctrica) https://funcice.org&lt;br /&gt;
## I spoke with Luis Ordoni&lt;br /&gt;
# I was on holiday at the Los Cedros reserve.&lt;br /&gt;
## they have a micro hydro (iicr 500 watts) system, but their electrical cable got struck by lightning the week before we came.&lt;br /&gt;
## so while we were there, Luis came up from Quito to investigate the damage done to the system&lt;br /&gt;
# I talked to him a lot about apropriate technology. he wasn&#039;t familiar with the concept, but mentioned that there *are* some orgs doing such work here in Ecuador. He mentioned one org doing electric bicycles&lt;br /&gt;
# iirc he said that CICE was registered under the ministry of energy, which got merged into the ministry of environment. And, recently, the ministry of environment got merged into the ministry of Mining.&lt;br /&gt;
## before I wasn&#039;t sure under-which ministry an Eco-Libre non-profit should be registered in Ecuador (you have to pick one)&lt;br /&gt;
## so he said mining (which now includes energy and environment) or Bien Esta Social, which has been renamed to Ministerio de Dessarollo Humano https://www.desarrollohumano.gob.ec/&lt;br /&gt;
## for reference, I last got stuck on this process when I asked a lawyer to enumerate all the ministries, so I could research each one and figure out under-which we should register. They never responded, so we never proceeded. Also we need like 5 people on the board, and I haven&#039;t found anyone in Ecuador with experience doing appropraite technology yet. I think the board members should be Ecuadorian, environmentalists (vegan), and have experience with open-source appropriate technology. I haven&#039;t found one person yet.&lt;br /&gt;
## I asked if there was any appropriate technology conferences in Ecuador. He said no, but was very interested in organizing one!&lt;br /&gt;
# another org he mentioned was Groupo FUturo https://www.futuro.com.ec/&lt;br /&gt;
## apparently they also have a foundation, with a distinct website https://www.fundacionfuturo.org.ec/&lt;br /&gt;
# ...&lt;br /&gt;
# I got an email from &amp;quot;Julie&amp;quot; at Project Kamp (I emailed One Army recently asking for their email). I responded asking to confirm the license on their videos&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Hi Julie,&lt;br /&gt;
&lt;br /&gt;
I&#039;m writing you on behalf of Eco-Libre, and I have some questions about your licensing&lt;br /&gt;
&lt;br /&gt;
 * https://eco-libre.org&lt;br /&gt;
&lt;br /&gt;
I see that your website states that all of your work at Project Kamp is licensed CC BY-SA&lt;br /&gt;
&lt;br /&gt;
 * https://academy.projectkamp.com/start/intro/#open-source--license&lt;br /&gt;
&lt;br /&gt;
&amp;gt; Content: All our content is licensed under Creative&lt;br /&gt;
&amp;gt; Commons Attribution - Sharealike International 4.0.&lt;br /&gt;
&lt;br /&gt;
...but this is not reflected in your YouTube videos&#039; metadata. For example:&lt;br /&gt;
&lt;br /&gt;
 * https://www.youtube.com/watch?v=RpK5KVzJgs4&lt;br /&gt;
&lt;br /&gt;
YouTube has a specific field for you to set the license.&lt;br /&gt;
&lt;br /&gt;
 * https://support.google.com/youtube/answer/2797468?hl=en&lt;br /&gt;
&lt;br /&gt;
Unfortunately the drop-down only lets you set the video license to CC BY (not CC BY-SA -- which I think is most appropriate; both of our orgs use ShareAlike for video content).&lt;br /&gt;
&lt;br /&gt;
Can you please update your all of your channel&#039;s &amp;quot;video description&amp;quot; with some text that clearly indicates that the video content is licensed under CC BY-SA (and perhaps also change the YouTube license type to CC BY)? For example:&lt;br /&gt;
&lt;br /&gt;
  This video and all our content is licensed under the Creative&lt;br /&gt;
  Commons Attribution-ShareAlike 4.0 International license&lt;br /&gt;
  &amp;lt;https://creativecommons.org/licenses/by-sa/4.0/&amp;gt; unless&lt;br /&gt;
  otherwise noted.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Thank you,&lt;br /&gt;
&lt;br /&gt;
Michael Altfield&lt;br /&gt;
Founder, Eco-Libre&lt;br /&gt;
https://eco-libre.org&lt;br /&gt;
&lt;br /&gt;
-- &lt;br /&gt;
*Full Disclosure:* Eco-Libre works openly. All conversations in this email are intended to be transparent and subject to sharing, with due respect. We do not sign NDAs in order to promote collaboration. All of our work is libre or open source. If you are discussing potential collaboration, your work must also be open source pursuant to the Open Source Hardware Association definition &amp;lt;http://www.oshwa.org/definition/&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
On 5/1/26 03:50, Project Kamp wrote:&lt;br /&gt;
&amp;gt; Hello Michael,&lt;br /&gt;
&amp;gt;&lt;br /&gt;
&amp;gt; I have received a email from One Army that you were searching for our email&lt;br /&gt;
&amp;gt; address.&lt;br /&gt;
&amp;gt; How can I help?&lt;br /&gt;
&amp;gt;&lt;br /&gt;
&amp;gt; Julie&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= 2026-04-28 =&lt;br /&gt;
# one of the authors of the CERN OHL license got back to me! https://forums.ohwr.org/t/possible-to-triple-license-cern-ohl-s-2-0-agpl-3-0-cc-by-sa-4-0/849882/6&lt;br /&gt;
# they confirmed what I said: don&#039;t license under 3 licenses, or the person who uses our stuff can choose which license they want. that&#039;s not good.&lt;br /&gt;
# unfortuantely they didn&#039;t comment on my copyright DEP5 file, so I asked them to&lt;br /&gt;
# in the meantime, I did look into REUSE&lt;br /&gt;
## it looked like a big PIA. their demo vid shows you having to define the license of every file. that&#039;s a nightmare.&lt;br /&gt;
## the docs said that there is a &#039;convert dep5&#039;. that would be a lifesaver! https://codeberg.org/fsfe/reuse-tool&lt;br /&gt;
## I installed reuse from apt, but I discovered there is NO &#039;convert-dep5&#039; option :(&lt;br /&gt;
## I tried, instead, to install from pip (very insecure but I did it in a dispVM), and it *does* have the &#039;convert-dep5&#039; command&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
user@disp4360:~/sandbox/life-line$ pip install reuse&lt;br /&gt;
error: externally-managed-environment&lt;br /&gt;
&lt;br /&gt;
× This environment is externally managed&lt;br /&gt;
╰─&amp;gt; To install Python packages system-wide, try apt install&lt;br /&gt;
	python3-xyz, where xyz is the package you are trying to&lt;br /&gt;
	install.&lt;br /&gt;
    &lt;br /&gt;
	If you wish to install a non-Debian-packaged Python package,&lt;br /&gt;
	create a virtual environment using python3 -m venv path/to/venv.&lt;br /&gt;
	Then use path/to/venv/bin/python and path/to/venv/bin/pip. Make&lt;br /&gt;
	sure you have python3-full installed.&lt;br /&gt;
    &lt;br /&gt;
	If you wish to install a non-Debian packaged Python application,&lt;br /&gt;
	it may be easiest to use pipx install xyz, which will manage a&lt;br /&gt;
	virtual environment for you. Make sure you have pipx installed.&lt;br /&gt;
    &lt;br /&gt;
	See /usr/share/doc/python3.11/README.venv for more information.&lt;br /&gt;
&lt;br /&gt;
note: If you believe this is a mistake, please contact your Python installation or OS distribution provider. You can override this, at the risk of breaking your Python installation or OS, by passing --break-system-packages.&lt;br /&gt;
hint: See PEP 668 for the detailed specification.&lt;br /&gt;
user@disp4360:~/sandbox/life-line$&lt;br /&gt;
&lt;br /&gt;
user@disp4360:~/sandbox/life-line$ sudo apt-get install python3-virtualenv&lt;br /&gt;
Reading package lists... Done&lt;br /&gt;
Building dependency tree... Done&lt;br /&gt;
Reading state information... Done&lt;br /&gt;
The following packages were automatically installed and are no longer required:&lt;br /&gt;
  python3-binaryornot python3-boolean python3-debian python3-license-expression&lt;br /&gt;
Use &#039;sudo apt autoremove&#039; to remove them.&lt;br /&gt;
The following additional packages will be installed:&lt;br /&gt;
  python3-distlib python3-filelock python3-pip-whl python3-platformdirs&lt;br /&gt;
  python3-setuptools-whl python3-wheel-whl&lt;br /&gt;
The following NEW packages will be installed:&lt;br /&gt;
  python3-distlib python3-filelock python3-pip-whl python3-platformdirs&lt;br /&gt;
  python3-setuptools-whl python3-virtualenv python3-wheel-whl&lt;br /&gt;
0 upgraded, 7 newly installed, 0 to remove and 59 not upgraded.&lt;br /&gt;
Need to get 3,245 kB of archives.&lt;br /&gt;
After this operation, 4,914 kB of additional disk space will be used.&lt;br /&gt;
Do you want to continue? [Y/n] y&lt;br /&gt;
Get:1 https://deb.debian.org/debian bookworm/main amd64 python3-distlib all 0.3.6-1 [257 kB]&lt;br /&gt;
Get:2 https://deb.debian.org/debian bookworm/main amd64 python3-filelock all 3.9.0-1 [9,460 B]&lt;br /&gt;
Get:3 https://deb.debian.org/debian bookworm/main amd64 python3-pip-whl all 23.0.1+dfsg-1 [1,717 kB]&lt;br /&gt;
Get:4 https://deb.debian.org/debian bookworm/main amd64 python3-platformdirs all 2.6.0-1 [16.3 kB]&lt;br /&gt;
Get:5 https://deb.debian.org/debian bookworm/main amd64 python3-setuptools-whl all 66.1.1-1+deb12u2 [1,112 kB]&lt;br /&gt;
Get:6 https://deb.debian.org/debian bookworm/main amd64 python3-wheel-whl all 0.38.4-2 [38.6 kB]&lt;br /&gt;
Get:7 https://deb.debian.org/debian bookworm/main amd64 python3-virtualenv all 20.17.1+ds-1 [93.9 kB]&lt;br /&gt;
Fetched 3,245 kB in 4s (776 kB/s)        &lt;br /&gt;
Selecting previously unselected package python3-distlib.&lt;br /&gt;
(Reading database ... 450690 files and directories currently installed.)&lt;br /&gt;
Preparing to unpack .../0-python3-distlib_0.3.6-1_all.deb ...&lt;br /&gt;
Unpacking python3-distlib (0.3.6-1) ...&lt;br /&gt;
Selecting previously unselected package python3-filelock.&lt;br /&gt;
Preparing to unpack .../1-python3-filelock_3.9.0-1_all.deb ...&lt;br /&gt;
Unpacking python3-filelock (3.9.0-1) ...&lt;br /&gt;
Selecting previously unselected package python3-pip-whl.&lt;br /&gt;
Preparing to unpack .../2-python3-pip-whl_23.0.1+dfsg-1_all.deb ...&lt;br /&gt;
Unpacking python3-pip-whl (23.0.1+dfsg-1) ...&lt;br /&gt;
Selecting previously unselected package python3-platformdirs.&lt;br /&gt;
Preparing to unpack .../3-python3-platformdirs_2.6.0-1_all.deb ...&lt;br /&gt;
Unpacking python3-platformdirs (2.6.0-1) ...&lt;br /&gt;
Selecting previously unselected package python3-setuptools-whl.&lt;br /&gt;
Preparing to unpack .../4-python3-setuptools-whl_66.1.1-1+deb12u2_all.deb ...&lt;br /&gt;
Unpacking python3-setuptools-whl (66.1.1-1+deb12u2) ...&lt;br /&gt;
Selecting previously unselected package python3-wheel-whl.&lt;br /&gt;
Preparing to unpack .../5-python3-wheel-whl_0.38.4-2_all.deb ...&lt;br /&gt;
Unpacking python3-wheel-whl (0.38.4-2) ...&lt;br /&gt;
Selecting previously unselected package python3-virtualenv.&lt;br /&gt;
Preparing to unpack .../6-python3-virtualenv_20.17.1+ds-1_all.deb ...&lt;br /&gt;
Unpacking python3-virtualenv (20.17.1+ds-1) ...&lt;br /&gt;
Setting up python3-setuptools-whl (66.1.1-1+deb12u2) ...&lt;br /&gt;
Setting up python3-filelock (3.9.0-1) ...&lt;br /&gt;
Setting up python3-pip-whl (23.0.1+dfsg-1) ...&lt;br /&gt;
Setting up python3-distlib (0.3.6-1) ...&lt;br /&gt;
Setting up python3-platformdirs (2.6.0-1) ...&lt;br /&gt;
Setting up python3-wheel-whl (0.38.4-2) ...&lt;br /&gt;
Setting up python3-virtualenv (20.17.1+ds-1) ...&lt;br /&gt;
Processing triggers for man-db (2.11.2-2) ...&lt;br /&gt;
Scanning processes...                                                                    &lt;br /&gt;
Scanning linux images...                                                                 &lt;br /&gt;
&lt;br /&gt;
No services need to be restarted.&lt;br /&gt;
&lt;br /&gt;
No containers need to be restarted.&lt;br /&gt;
&lt;br /&gt;
No user sessions are running outdated binaries.&lt;br /&gt;
&lt;br /&gt;
No VM guests are running outdated hypervisor (qemu) binaries on this host.&lt;br /&gt;
user@disp4360:~/sandbox/life-line$ python3 -m virtualenv --python=python3.7 /tmp/virtualenv&lt;br /&gt;
RuntimeError: failed to find interpreter for Builtin discover of python_spec=&#039;python3.7&#039;&lt;br /&gt;
user@disp4360:~/sandbox/life-line$&lt;br /&gt;
&lt;br /&gt;
user@disp4360:~/sandbox/life-line$ python3 -m virtualenv --python=python3 /tmp/virtualenvcreated virtual environment CPython3.11.2.final.0-64 in 248ms&lt;br /&gt;
  creator CPython3Posix(dest=/tmp/virtualenv, clear=False, no_vcs_ignore=False, global=False)&lt;br /&gt;
  seeder FromAppData(download=False, pip=bundle, setuptools=bundle, wheel=bundle, via=copy, app_data_dir=/home/user/.local/share/virtualenv)&lt;br /&gt;
	added seed packages: pip==23.0.1, setuptools==66.1.1, wheel==0.38.4&lt;br /&gt;
  activators BashActivator,CShellActivator,FishActivator,NushellActivator,PowerShellActivator,PythonActivator&lt;br /&gt;
user@disp4360:~/sandbox/life-line$&lt;br /&gt;
&lt;br /&gt;
user@disp4360:~/sandbox/life-line$ source /tmp/virtualenv/bin/activate&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ pip install --user --upgrade reuse&lt;br /&gt;
ERROR: Can not perform a &#039;--user&#039; install. User site-packages are not visible in this virtualenv.&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$&lt;br /&gt;
&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ pip install  --upgrade reuse&lt;br /&gt;
Collecting reuse&lt;br /&gt;
  Downloading reuse-6.2.0.tar.gz (1.6 MB)&lt;br /&gt;
	 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 1.6/1.6 MB 696.8 kB/s eta 0:00:00&lt;br /&gt;
  Installing build dependencies ... done&lt;br /&gt;
  Getting requirements to build wheel ... done&lt;br /&gt;
  Preparing metadata (pyproject.toml) ... done&lt;br /&gt;
Collecting Jinja2&amp;gt;=3.0.0&lt;br /&gt;
  Downloading jinja2-3.1.6-py3-none-any.whl (134 kB)&lt;br /&gt;
	 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 134.9/134.9 kB 576.8 kB/s eta 0:00:00&lt;br /&gt;
Collecting attrs&amp;gt;=23.2&lt;br /&gt;
  Downloading attrs-26.1.0-py3-none-any.whl (67 kB)&lt;br /&gt;
	 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 67.5/67.5 kB 674.1 kB/s eta 0:00:00&lt;br /&gt;
Collecting click&amp;gt;=8.1&lt;br /&gt;
  Downloading click-8.3.3-py3-none-any.whl (110 kB)&lt;br /&gt;
	 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 110.5/110.5 kB 1.1 MB/s eta 0:00:00&lt;br /&gt;
Collecting license-expression&amp;gt;=21.6.14&lt;br /&gt;
  Downloading license_expression-30.4.4-py3-none-any.whl (120 kB)&lt;br /&gt;
	 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 120.6/120.6 kB 1.3 MB/s eta 0:00:00&lt;br /&gt;
Collecting python-debian&amp;gt;=0.1.48&lt;br /&gt;
  Downloading python_debian-1.1.0-py3-none-any.whl (137 kB)&lt;br /&gt;
	 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 138.0/138.0 kB 819.7 kB/s eta 0:00:00&lt;br /&gt;
Collecting python-magic&amp;gt;=0.4.12&lt;br /&gt;
  Downloading python_magic-0.4.27-py2.py3-none-any.whl (13 kB)&lt;br /&gt;
Collecting tomlkit&amp;gt;=0.8&lt;br /&gt;
  Downloading tomlkit-0.14.0-py3-none-any.whl (39 kB)&lt;br /&gt;
Collecting MarkupSafe&amp;gt;=2.0&lt;br /&gt;
  Downloading markupsafe-3.0.3-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (22 kB)&lt;br /&gt;
Collecting boolean.py&amp;gt;=4.0&lt;br /&gt;
  Downloading boolean_py-5.0-py3-none-any.whl (26 kB)&lt;br /&gt;
Collecting charset-normalizer&lt;br /&gt;
  Downloading charset_normalizer-3.4.7-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (214 kB)&lt;br /&gt;
	 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 214.1/214.1 kB 1.3 MB/s eta 0:00:00&lt;br /&gt;
Building wheels for collected packages: reuse&lt;br /&gt;
  Building wheel for reuse (pyproject.toml) ... done&lt;br /&gt;
  Created wheel for reuse: filename=reuse-6.2.0-cp311-cp311-manylinux_2_36_x86_64.whl size=158934 sha256=db5cd3e5984de36238f3ead308c250b12c1cce318d17eb802313e29b25bd28cf&lt;br /&gt;
  Stored in directory: /home/user/.cache/pip/wheels/a0/8e/93/87a9da23115993a12577ff1fc8df222b28bd91e19b9987c529&lt;br /&gt;
Successfully built reuse&lt;br /&gt;
Installing collected packages: boolean.py, tomlkit, python-magic, MarkupSafe, license-expression, click, charset-normalizer, attrs, python-debian, Jinja2, reuse&lt;br /&gt;
Successfully installed Jinja2-3.1.6 MarkupSafe-3.0.3 attrs-26.1.0 boolean.py-5.0 charset-normalizer-3.4.7 click-8.3.3 license-expression-30.4.4 python-debian-1.1.0 python-magic-0.4.27 reuse-6.2.0 tomlkit-0.14.0&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$&lt;br /&gt;
&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ reuse --version&lt;br /&gt;
reuse, version 6.2.0&lt;br /&gt;
&lt;br /&gt;
This program is free software: you can redistribute it and/or modify it under&lt;br /&gt;
the terms of the GNU General Public License as published by the Free Software&lt;br /&gt;
Foundation, either version 3 of the License, or (at your option) any later&lt;br /&gt;
version.&lt;br /&gt;
&lt;br /&gt;
This program is distributed in the hope that it will be useful, but WITHOUT&lt;br /&gt;
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS&lt;br /&gt;
FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.&lt;br /&gt;
&lt;br /&gt;
You should have received a copy of the GNU General Public License along with&lt;br /&gt;
this program. If not, see &amp;lt;https://www.gnu.org/licenses/&amp;gt;.&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ &lt;br /&gt;
&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ reuse convert-dep5&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## no output; but it looked like it worked&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ reuse lint&lt;br /&gt;
# MISSING LICENSES&lt;br /&gt;
&lt;br /&gt;
&#039;AGPL-3.0&#039; found in:&lt;br /&gt;
* docs/buildDocs.sh&lt;br /&gt;
* docs/conf.py&lt;br /&gt;
&#039;CC-BY-SA-4.0&#039; found in:&lt;br /&gt;
* .github/workflows/docs_pages_workflow.yml&lt;br /&gt;
* .gitignore&lt;br /&gt;
* CHANGELOG&lt;br /&gt;
* KEYS&lt;br /&gt;
* README.md&lt;br /&gt;
* docs/.gitignore&lt;br /&gt;
* docs/Makefile&lt;br /&gt;
* docs/_static/custom.css&lt;br /&gt;
* docs/_templates/versions.html&lt;br /&gt;
* docs/attribution.rst&lt;br /&gt;
* docs/build/index.rst&lt;br /&gt;
* docs/build/intake/bom.ods&lt;br /&gt;
* docs/build/intake/bom.rst&lt;br /&gt;
* docs/build/intake/index.rst&lt;br /&gt;
* docs/build/intake/what.rst&lt;br /&gt;
* docs/build/settling-tank/bom.rst&lt;br /&gt;
* docs/build/settling-tank/index.rst&lt;br /&gt;
* docs/build/settling-tank/what.rst&lt;br /&gt;
* docs/changelog.rst&lt;br /&gt;
* docs/conf.py.orig&lt;br /&gt;
* docs/dev/index.rst&lt;br /&gt;
* docs/faq.rst&lt;br /&gt;
* docs/images/eco-libre_logo-2025.08.svg&lt;br /&gt;
* docs/images/eco-libre_text-logo-2025.08.svg&lt;br /&gt;
* docs/images/eco-libre_text-logo-2025.08_500px.png&lt;br /&gt;
* docs/images/life-line_2023.12.jpg&lt;br /&gt;
* docs/images/life-line_2025.10.jpg&lt;br /&gt;
* docs/images/life-line_intake_cleanout-drain.jpg&lt;br /&gt;
* docs/images/life-line_intake_drum.jpg&lt;br /&gt;
* docs/images/life-line_intake_expanded-metal.jpg&lt;br /&gt;
* docs/images/life-line_intake_fine-mesh.jpg&lt;br /&gt;
* docs/images/life-line_intake_outflow.jpg&lt;br /&gt;
* docs/images/life-line_intake_parts.svg&lt;br /&gt;
* docs/images/life-line_intake_turbulence-bar.jpg&lt;br /&gt;
* docs/images/life-line_intake_weir.jpg&lt;br /&gt;
* docs/images/life-line_praxis_boris-plotkin.2024-11.jpg&lt;br /&gt;
* docs/images/life-line_praxis_vegan-beasts_screen.2025-04.jpg&lt;br /&gt;
* docs/images/life-line_praxis_vegan-beasts_weir.2025-04.jpg&lt;br /&gt;
* docs/index.rst&lt;br /&gt;
* docs/introduction/index.rst&lt;br /&gt;
* docs/license.rst&lt;br /&gt;
* docs/locales/es/LC_MESSAGES/autodoc.mo&lt;br /&gt;
* docs/locales/es/LC_MESSAGES/autodoc.po&lt;br /&gt;
* docs/locales/es/LC_MESSAGES/index.mo&lt;br /&gt;
* docs/locales/es/LC_MESSAGES/index.po&lt;br /&gt;
* docs/make.bat&lt;br /&gt;
* docs/praxis/index.rst&lt;br /&gt;
* docs/support.rst&lt;br /&gt;
* docs/theory/index.rst&lt;br /&gt;
&#039;CERN-OHL-S-2.0&#039; found in:&lt;br /&gt;
* intake.FCStd&lt;br /&gt;
&lt;br /&gt;
# SUMMARY&lt;br /&gt;
&lt;br /&gt;
* Bad licenses: 0&lt;br /&gt;
* Deprecated licenses: 0&lt;br /&gt;
* Licenses without file extension: 0&lt;br /&gt;
* Missing licenses: AGPL-3.0, CC-BY-SA-4.0, CERN-OHL-S-2.0&lt;br /&gt;
* Unused licenses: 0&lt;br /&gt;
* Used licenses: AGPL-3.0, CC-BY-SA-4.0, CERN-OHL-S-2.0&lt;br /&gt;
* Read errors: 0&lt;br /&gt;
* Invalid SPDX License Expressions: 0&lt;br /&gt;
* Files with copyright information: 52 / 52&lt;br /&gt;
* Files with license information: 52 / 52&lt;br /&gt;
&lt;br /&gt;
Unfortunately, your project is not compliant with version 3.3 of the REUSE Specification :-(&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# RECOMMENDATIONS&lt;br /&gt;
&lt;br /&gt;
* Fix missing licenses: For at least one of the license identifiers provided by&lt;br /&gt;
  the &#039;SPDX-License-Identifier&#039; tags, there is no corresponding license text&lt;br /&gt;
  file in the &#039;LICENSES&#039; directory. For SPDX license identifiers, you can simply&lt;br /&gt;
  run &#039;reuse download --all&#039; to get any missing ones. For custom licenses&lt;br /&gt;
  (starting with &#039;LicenseRef-&#039;), you need to add these files yourself.&lt;br /&gt;
&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## ok, so it&#039;s just unhappy the licenses are missing; let&#039;s add them with the tool&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ reuse download&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ &lt;br /&gt;
&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ reuse download CC-BY-SA-4.0&lt;br /&gt;
Successfully downloaded LICENSES/CC-BY-SA-4.0.txt.&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$&lt;br /&gt;
&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ ls -lah LICENSES&lt;br /&gt;
total 28K&lt;br /&gt;
drwxr-xr-x 2 user user 4.0K Apr 28 16:43 .&lt;br /&gt;
drwxr-xr-x 7 user user 4.0K Apr 28 16:43 ..&lt;br /&gt;
-rw-r--r-- 1 user user  18K Apr 28 16:43 CC-BY-SA-4.0.txt&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ &lt;br /&gt;
&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ reuse download CERN-OHL-S-2.0&lt;br /&gt;
Successfully downloaded LICENSES/CERN-OHL-S-2.0.txt.&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ &lt;br /&gt;
&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ reuse download AGPL-3.0&lt;br /&gt;
Successfully downloaded LICENSES/AGPL-3.0.txt.&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ &lt;br /&gt;
&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ ls -lah LICENSES&lt;br /&gt;
total 80K&lt;br /&gt;
drwxr-xr-x 2 user user 4.0K Apr 28 16:44 .&lt;br /&gt;
drwxr-xr-x 7 user user 4.0K Apr 28 16:43 ..&lt;br /&gt;
-rw-r--r-- 1 user user  34K Apr 28 16:44 AGPL-3.0.txt&lt;br /&gt;
-rw-r--r-- 1 user user  18K Apr 28 16:43 CC-BY-SA-4.0.txt&lt;br /&gt;
-rw-r--r-- 1 user user  14K Apr 28 16:43 CERN-OHL-S-2.0.txt&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## wut. they said we can&#039;t use AGPL-3.0?&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ reuse lint&lt;br /&gt;
# DEPRECATED LICENSES&lt;br /&gt;
&lt;br /&gt;
The following licenses are deprecated by SPDX:&lt;br /&gt;
* AGPL-3.0&lt;br /&gt;
&lt;br /&gt;
# SUMMARY&lt;br /&gt;
&lt;br /&gt;
* Bad licenses: 0&lt;br /&gt;
* Deprecated licenses: AGPL-3.0&lt;br /&gt;
* Licenses without file extension: 0&lt;br /&gt;
* Missing licenses: 0&lt;br /&gt;
* Unused licenses: 0&lt;br /&gt;
* Used licenses: AGPL-3.0, CC-BY-SA-4.0, CERN-OHL-S-2.0&lt;br /&gt;
* Read errors: 0&lt;br /&gt;
* Invalid SPDX License Expressions: 0&lt;br /&gt;
* Files with copyright information: 52 / 52&lt;br /&gt;
* Files with license information: 52 / 52&lt;br /&gt;
&lt;br /&gt;
Unfortunately, your project is not compliant with version 3.3 of the REUSE Specification :-(&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# RECOMMENDATIONS&lt;br /&gt;
&lt;br /&gt;
* Fix deprecated licenses: At least one of the licenses in the LICENSES&lt;br /&gt;
  directory and/or provided by an &#039;SPDX-License-Identifier&#039; tag or in&lt;br /&gt;
  &#039;.reuse/dep5&#039; has been deprecated by SPDX. The current list and their&lt;br /&gt;
  respective recommended  new identifiers can be found here:&lt;br /&gt;
  &amp;lt;https://spdx.org/licenses/#deprecated&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## ok, apparently they want one of these https://spdx.org/licenses/&lt;br /&gt;
###  AGPL-3.0-only&lt;br /&gt;
###  AGPL-3.0-or-later&lt;br /&gt;
## ugh, they deleted our dep5 file; appraently it puts everything in a REUSE.toml file (there&#039;s no .license files everywhere, which I do like)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ ls -lah .reuse/&lt;br /&gt;
total 8.0K&lt;br /&gt;
drwxr-xr-x 2 user user 4.0K Apr 28 16:34 .&lt;br /&gt;
drwxr-xr-x 7 user user 4.0K Apr 28 16:43 ..&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ &lt;br /&gt;
&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ ls -lah&lt;br /&gt;
total 376K&lt;br /&gt;
drwxr-xr-x  7 user user 4.0K Apr 28 16:43 .&lt;br /&gt;
drwxr-xr-x  3 user user 4.0K Apr 28 16:23 ..&lt;br /&gt;
-rw-r--r--  1 user user  531 Apr 28 16:23 CHANGELOG&lt;br /&gt;
drwxr-xr-x 11 user user 4.0K Apr 28 16:23 docs&lt;br /&gt;
drwxr-xr-x  8 user user 4.0K Apr 28 16:28 .git&lt;br /&gt;
drwxr-xr-x  3 user user 4.0K Apr 28 16:23 .github&lt;br /&gt;
-rw-r--r--  1 user user   44 Apr 28 16:23 .gitignore&lt;br /&gt;
-rw-r--r--  1 user user 221K Apr 28 16:23 intake.FCStd&lt;br /&gt;
-rw-r--r--  1 user user  71K Apr 28 16:23 KEYS&lt;br /&gt;
-rw-r--r--  1 user user  35K Apr 28 16:23 LICENSE&lt;br /&gt;
drwxr-xr-x  2 user user 4.0K Apr 28 16:44 LICENSES&lt;br /&gt;
-rw-r--r--  1 user user 1.3K Apr 28 16:23 README.md&lt;br /&gt;
drwxr-xr-x  2 user user 4.0K Apr 28 16:34 .reuse&lt;br /&gt;
-rw-r--r--  1 user user 1.7K Apr 28 16:34 REUSE.toml&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## oh, this isn&#039;t so bad. I was afriad it would literally list every single file, but instead it more-or-less just adapted what I had for the dep5 format&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ cat REUSE.toml &lt;br /&gt;
version = 1&lt;br /&gt;
SPDX-PackageName = &amp;quot;Eco-Libre Life-Line&amp;quot;&lt;br /&gt;
SPDX-PackageSupplier = &amp;quot;https://eco-libre.org/contact&amp;quot;&lt;br /&gt;
SPDX-PackageDownloadLocation = &amp;quot;https://github.com/Eco-Libre/life-line&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[annotations]]&lt;br /&gt;
path = &amp;quot;**&amp;quot;&lt;br /&gt;
precedence = &amp;quot;aggregate&amp;quot;&lt;br /&gt;
SPDX-FileCopyrightText = [&amp;quot;&amp;quot;, &amp;quot;2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&amp;quot;, &amp;quot;2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&amp;quot;]&lt;br /&gt;
SPDX-License-Identifier = &amp;quot;CC-BY-SA-4.0&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[annotations]]&lt;br /&gt;
path = [&amp;quot;**.FCStd&amp;quot;, &amp;quot;**.scad&amp;quot;, &amp;quot;**.fzz&amp;quot;, &amp;quot;**.blend&amp;quot;, &amp;quot;**.kicad_pcb&amp;quot;, &amp;quot;**.sh3d&amp;quot;, &amp;quot;**.vue&amp;quot;, &amp;quot;**.dxf&amp;quot;, &amp;quot;**.dwg&amp;quot;, &amp;quot;**.bim&amp;quot;, &amp;quot;**.skp&amp;quot;, &amp;quot;**.skb&amp;quot;, &amp;quot;**.max&amp;quot;, &amp;quot;**.3ds&amp;quot;, &amp;quot;**.gto&amp;quot;, &amp;quot;**.pod&amp;quot;, &amp;quot;**.brd&amp;quot;, &amp;quot;**.sch&amp;quot;, &amp;quot;**.3dm&amp;quot;, &amp;quot;**.dwb&amp;quot;, &amp;quot;**.slddrw&amp;quot;, &amp;quot;**.sldasm&amp;quot;]&lt;br /&gt;
precedence = &amp;quot;aggregate&amp;quot;&lt;br /&gt;
SPDX-FileCopyrightText = [&amp;quot;&amp;quot;, &amp;quot;2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&amp;quot;, &amp;quot;2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&amp;quot;]&lt;br /&gt;
SPDX-License-Identifier = &amp;quot;CERN-OHL-S-2.0&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[annotations]]&lt;br /&gt;
path = [&amp;quot;**.c&amp;quot;, &amp;quot;**.cpp&amp;quot;, &amp;quot;**.h&amp;quot;, &amp;quot;**.hpp&amp;quot;, &amp;quot;**.cc&amp;quot;, &amp;quot;**.ino&amp;quot;, &amp;quot;**.pde&amp;quot;, &amp;quot;**.make&amp;quot;, &amp;quot;**.automake&amp;quot;, &amp;quot;**.cmake&amp;quot;, &amp;quot;**.java&amp;quot;, &amp;quot;**.javacc&amp;quot;, &amp;quot;**.rust&amp;quot;, &amp;quot;**.d&amp;quot;, &amp;quot;**.j&amp;quot;, &amp;quot;**.r&amp;quot;, &amp;quot;**.sh&amp;quot;, &amp;quot;**.bash&amp;quot;, &amp;quot;**.zsh&amp;quot;, &amp;quot;**.awk&amp;quot;, &amp;quot;**.tcl&amp;quot;, &amp;quot;**.py&amp;quot;, &amp;quot;**.python&amp;quot;, &amp;quot;**.python2&amp;quot;, &amp;quot;**.python3&amp;quot;, &amp;quot;**.FCMacro&amp;quot;, &amp;quot;**.pl&amp;quot;, &amp;quot;**.perl&amp;quot;, &amp;quot;**.kivy&amp;quot;, &amp;quot;**.qix&amp;quot;, &amp;quot;**.dtd&amp;quot;, &amp;quot;**.shp&amp;quot;, &amp;quot;**.shz&amp;quot;, &amp;quot;**.dbf&amp;quot;, &amp;quot;**.shx&amp;quot;, &amp;quot;**.prj&amp;quot;, &amp;quot;**.kml&amp;quot;, &amp;quot;**.php&amp;quot;, &amp;quot;**.js&amp;quot;, &amp;quot;**.javascript&amp;quot;, &amp;quot;**.typescript&amp;quot;, &amp;quot;**.ruby&amp;quot;, &amp;quot;**.eruby&amp;quot;, &amp;quot;**.cuda&amp;quot;, &amp;quot;**.erlang&amp;quot;, &amp;quot;**.lisp&amp;quot;, &amp;quot;**.lua&amp;quot;, &amp;quot;**.haskell&amp;quot;, &amp;quot;**.go&amp;quot;, &amp;quot;**.autohotkey&amp;quot;, &amp;quot;**.basic&amp;quot;, &amp;quot;**.swift&amp;quot;, &amp;quot;**.vb&amp;quot;, &amp;quot;**.asp&amp;quot;]&lt;br /&gt;
precedence = &amp;quot;aggregate&amp;quot;&lt;br /&gt;
SPDX-FileCopyrightText = [&amp;quot;&amp;quot;, &amp;quot;2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&amp;quot;, &amp;quot;2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&amp;quot;]&lt;br /&gt;
SPDX-License-Identifier = &amp;quot;AGPL-3.0&amp;quot;&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## I edited the file, but the lint still isn&#039;t happy. I guess I have to update the LICENSES dir from AGPL-3.0 to AGPL-3.0-only :/&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ vim REUSE.toml &lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ &lt;br /&gt;
&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ reuse lint&lt;br /&gt;
# DEPRECATED LICENSES&lt;br /&gt;
&lt;br /&gt;
The following licenses are deprecated by SPDX:&lt;br /&gt;
* AGPL-3.0&lt;br /&gt;
&lt;br /&gt;
# MISSING LICENSES&lt;br /&gt;
&lt;br /&gt;
&#039;AGPL-3.0-only&#039; found in:&lt;br /&gt;
* docs/buildDocs.sh&lt;br /&gt;
* docs/conf.py&lt;br /&gt;
&lt;br /&gt;
# UNUSED LICENSES&lt;br /&gt;
&lt;br /&gt;
The following licenses are not used:&lt;br /&gt;
* AGPL-3.0&lt;br /&gt;
&lt;br /&gt;
# SUMMARY&lt;br /&gt;
&lt;br /&gt;
* Bad licenses: 0&lt;br /&gt;
* Deprecated licenses: AGPL-3.0&lt;br /&gt;
* Licenses without file extension: 0&lt;br /&gt;
* Missing licenses: AGPL-3.0-only&lt;br /&gt;
* Unused licenses: AGPL-3.0&lt;br /&gt;
* Used licenses: AGPL-3.0-only, CC-BY-SA-4.0, CERN-OHL-S-2.0&lt;br /&gt;
* Read errors: 0&lt;br /&gt;
* Invalid SPDX License Expressions: 0&lt;br /&gt;
* Files with copyright information: 52 / 52&lt;br /&gt;
* Files with license information: 52 / 52&lt;br /&gt;
&lt;br /&gt;
Unfortunately, your project is not compliant with version 3.3 of the REUSE Specification :-(&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# RECOMMENDATIONS&lt;br /&gt;
&lt;br /&gt;
* Fix deprecated licenses: At least one of the licenses in the LICENSES&lt;br /&gt;
  directory and/or provided by an &#039;SPDX-License-Identifier&#039; tag or in&lt;br /&gt;
  &#039;.reuse/dep5&#039; has been deprecated by SPDX. The current list and their&lt;br /&gt;
  respective recommended  new identifiers can be found here:&lt;br /&gt;
  &amp;lt;https://spdx.org/licenses/#deprecated&amp;gt;&lt;br /&gt;
* Fix missing licenses: For at least one of the license identifiers provided by&lt;br /&gt;
  the &#039;SPDX-License-Identifier&#039; tags, there is no corresponding license text&lt;br /&gt;
  file in the &#039;LICENSES&#039; directory. For SPDX license identifiers, you can simply&lt;br /&gt;
  run &#039;reuse download --all&#039; to get any missing ones. For custom licenses&lt;br /&gt;
  (starting with &#039;LicenseRef-&#039;), you need to add these files yourself.&lt;br /&gt;
* Fix unused licenses: At least one of the license text files in &#039;LICENSES&#039; is&lt;br /&gt;
  not referenced by any file, e.g. by an &#039;SPDX-License-Identifier&#039; tag. Please&lt;br /&gt;
  make sure that you either tag the accordingly licensed files properly, or&lt;br /&gt;
  delete the unused license text if you are sure that no file or code snippet is&lt;br /&gt;
  licensed as such.&lt;br /&gt;
&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## ok, now it&#039;s happy&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ ls -lah LICENSES&lt;br /&gt;
total 80K&lt;br /&gt;
drwxr-xr-x 2 user user 4.0K Apr 28 16:44 .&lt;br /&gt;
drwxr-xr-x 7 user user 4.0K Apr 28 16:50 ..&lt;br /&gt;
-rw-r--r-- 1 user user  34K Apr 28 16:44 AGPL-3.0.txt&lt;br /&gt;
-rw-r--r-- 1 user user  18K Apr 28 16:43 CC-BY-SA-4.0.txt&lt;br /&gt;
-rw-r--r-- 1 user user  14K Apr 28 16:43 CERN-OHL-S-2.0.txt&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ &lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ rm LICENSES/AGPL-3.0.txt &lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ &lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ reuse download AGPL-3.0-only&lt;br /&gt;
Successfully downloaded LICENSES/AGPL-3.0-only.txt.&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ &lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ reuse lint&lt;br /&gt;
# SUMMARY&lt;br /&gt;
&lt;br /&gt;
* Bad licenses: 0&lt;br /&gt;
* Deprecated licenses: 0&lt;br /&gt;
* Licenses without file extension: 0&lt;br /&gt;
* Missing licenses: 0&lt;br /&gt;
* Unused licenses: 0&lt;br /&gt;
* Used licenses: AGPL-3.0-only, CC-BY-SA-4.0, CERN-OHL-S-2.0&lt;br /&gt;
* Read errors: 0&lt;br /&gt;
* Invalid SPDX License Expressions: 0&lt;br /&gt;
* Files with copyright information: 52 / 52&lt;br /&gt;
* Files with license information: 52 / 52&lt;br /&gt;
&lt;br /&gt;
Congratulations! Your project is compliant with version 3.3 of the REUSE Specification :-)&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## anyway, here&#039;s our final file&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ cat REUSE.toml &lt;br /&gt;
version = 1&lt;br /&gt;
SPDX-PackageName = &amp;quot;Eco-Libre Life-Line&amp;quot;&lt;br /&gt;
SPDX-PackageSupplier = &amp;quot;https://eco-libre.org/contact&amp;quot;&lt;br /&gt;
SPDX-PackageDownloadLocation = &amp;quot;https://github.com/Eco-Libre/life-line&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[annotations]]&lt;br /&gt;
path = &amp;quot;**&amp;quot;&lt;br /&gt;
precedence = &amp;quot;aggregate&amp;quot;&lt;br /&gt;
SPDX-FileCopyrightText = [&amp;quot;&amp;quot;, &amp;quot;2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&amp;quot;, &amp;quot;2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&amp;quot;]&lt;br /&gt;
SPDX-License-Identifier = &amp;quot;CC-BY-SA-4.0&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[annotations]]&lt;br /&gt;
path = [&amp;quot;**.FCStd&amp;quot;, &amp;quot;**.scad&amp;quot;, &amp;quot;**.fzz&amp;quot;, &amp;quot;**.blend&amp;quot;, &amp;quot;**.kicad_pcb&amp;quot;, &amp;quot;**.sh3d&amp;quot;, &amp;quot;**.vue&amp;quot;, &amp;quot;**.dxf&amp;quot;, &amp;quot;**.dwg&amp;quot;, &amp;quot;**.bim&amp;quot;, &amp;quot;**.skp&amp;quot;, &amp;quot;**.skb&amp;quot;, &amp;quot;**.max&amp;quot;, &amp;quot;**.3ds&amp;quot;, &amp;quot;**.gto&amp;quot;, &amp;quot;**.pod&amp;quot;, &amp;quot;**.brd&amp;quot;, &amp;quot;**.sch&amp;quot;, &amp;quot;**.3dm&amp;quot;, &amp;quot;**.dwb&amp;quot;, &amp;quot;**.slddrw&amp;quot;, &amp;quot;**.sldasm&amp;quot;]&lt;br /&gt;
precedence = &amp;quot;aggregate&amp;quot;&lt;br /&gt;
SPDX-FileCopyrightText = [&amp;quot;&amp;quot;, &amp;quot;2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&amp;quot;, &amp;quot;2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&amp;quot;]&lt;br /&gt;
SPDX-License-Identifier = &amp;quot;CERN-OHL-S-2.0&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[annotations]]&lt;br /&gt;
path = [&amp;quot;**.c&amp;quot;, &amp;quot;**.cpp&amp;quot;, &amp;quot;**.h&amp;quot;, &amp;quot;**.hpp&amp;quot;, &amp;quot;**.cc&amp;quot;, &amp;quot;**.ino&amp;quot;, &amp;quot;**.pde&amp;quot;, &amp;quot;**.make&amp;quot;, &amp;quot;**.automake&amp;quot;, &amp;quot;**.cmake&amp;quot;, &amp;quot;**.java&amp;quot;, &amp;quot;**.javacc&amp;quot;, &amp;quot;**.rust&amp;quot;, &amp;quot;**.d&amp;quot;, &amp;quot;**.j&amp;quot;, &amp;quot;**.r&amp;quot;, &amp;quot;**.sh&amp;quot;, &amp;quot;**.bash&amp;quot;, &amp;quot;**.zsh&amp;quot;, &amp;quot;**.awk&amp;quot;, &amp;quot;**.tcl&amp;quot;, &amp;quot;**.py&amp;quot;, &amp;quot;**.python&amp;quot;, &amp;quot;**.python2&amp;quot;, &amp;quot;**.python3&amp;quot;, &amp;quot;**.FCMacro&amp;quot;, &amp;quot;**.pl&amp;quot;, &amp;quot;**.perl&amp;quot;, &amp;quot;**.kivy&amp;quot;, &amp;quot;**.qix&amp;quot;, &amp;quot;**.dtd&amp;quot;, &amp;quot;**.shp&amp;quot;, &amp;quot;**.shz&amp;quot;, &amp;quot;**.dbf&amp;quot;, &amp;quot;**.shx&amp;quot;, &amp;quot;**.prj&amp;quot;, &amp;quot;**.kml&amp;quot;, &amp;quot;**.php&amp;quot;, &amp;quot;**.js&amp;quot;, &amp;quot;**.javascript&amp;quot;, &amp;quot;**.typescript&amp;quot;, &amp;quot;**.ruby&amp;quot;, &amp;quot;**.eruby&amp;quot;, &amp;quot;**.cuda&amp;quot;, &amp;quot;**.erlang&amp;quot;, &amp;quot;**.lisp&amp;quot;, &amp;quot;**.lua&amp;quot;, &amp;quot;**.haskell&amp;quot;, &amp;quot;**.go&amp;quot;, &amp;quot;**.autohotkey&amp;quot;, &amp;quot;**.basic&amp;quot;, &amp;quot;**.swift&amp;quot;, &amp;quot;**.vb&amp;quot;, &amp;quot;**.asp&amp;quot;]&lt;br /&gt;
precedence = &amp;quot;aggregate&amp;quot;&lt;br /&gt;
SPDX-FileCopyrightText = [&amp;quot;&amp;quot;, &amp;quot;2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&amp;quot;, &amp;quot;2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&amp;quot;]&lt;br /&gt;
SPDX-License-Identifier = &amp;quot;AGPL-3.0-only&amp;quot;&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## looks like that only created the toml file. None of the files are actually annoated; we do that with `reuse annotate`&lt;br /&gt;
### apparently that command only works for individual files, so I did some find magic&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ find . -type f -exec reuse annotate --copyright --license &#039;{}&#039; \;&lt;br /&gt;
Successfully changed header of docs/license.rst&lt;br /&gt;
Successfully changed header of docs/build/intake/bom.rst&lt;br /&gt;
Successfully changed header of docs/build/intake/index.rst&lt;br /&gt;
Successfully changed header of docs/build/intake/bom.ods.license&lt;br /&gt;
Successfully changed header of docs/build/intake/what.rst&lt;br /&gt;
Successfully changed header of docs/build/index.rst&lt;br /&gt;
Successfully changed header of docs/build/settling-tank/bom.rst&lt;br /&gt;
Successfully changed header of docs/build/settling-tank/index.rst&lt;br /&gt;
Successfully changed header of docs/build/settling-tank/what.rst&lt;br /&gt;
Successfully changed header of docs/support.rst&lt;br /&gt;
Successfully changed header of docs/theory/index.rst&lt;br /&gt;
Successfully changed header of docs/make.bat&lt;br /&gt;
Successfully changed header of docs/buildDocs.sh&lt;br /&gt;
Successfully changed header of docs/images/life-line_intake_cleanout-drain.jpg.license&lt;br /&gt;
Successfully changed header of docs/images/life-line_intake_outflow.jpg.license&lt;br /&gt;
Successfully changed header of docs/images/life-line_2025.10.jpg.license&lt;br /&gt;
Successfully changed header of docs/images/life-line_2023.12.jpg.license&lt;br /&gt;
Successfully changed header of docs/images/life-line_intake_drum.jpg.license&lt;br /&gt;
Successfully changed header of docs/images/life-line_praxis_vegan-beasts_weir.2025-04.jpg.license&lt;br /&gt;
Successfully changed header of docs/images/life-line_praxis_vegan-beasts_screen.2025-04.jpg.license&lt;br /&gt;
Successfully changed header of docs/images/life-line_intake_turbulence-bar.jpg.license&lt;br /&gt;
Successfully changed header of docs/images/life-line_praxis_boris-plotkin.2024-11.jpg.license&lt;br /&gt;
Successfully changed header of docs/images/life-line_intake_fine-mesh.jpg.license&lt;br /&gt;
Successfully changed header of docs/images/eco-libre_logo-2025.08.svg.license&lt;br /&gt;
Successfully changed header of docs/images/eco-libre_text-logo-2025.08.svg.license&lt;br /&gt;
Successfully changed header of docs/images/life-line_intake_weir.jpg.license&lt;br /&gt;
Successfully changed header of docs/images/life-line_intake_parts.svg.license&lt;br /&gt;
Successfully changed header of docs/images/eco-libre_text-logo-2025.08_500px.png.license&lt;br /&gt;
Successfully changed header of docs/images/life-line_intake_expanded-metal.jpg.license&lt;br /&gt;
Successfully changed header of docs/praxis/index.rst&lt;br /&gt;
Successfully changed header of docs/introduction/index.rst&lt;br /&gt;
Successfully changed header of docs/_static/custom.css&lt;br /&gt;
Successfully changed header of docs/index.rst&lt;br /&gt;
Successfully changed header of docs/Makefile&lt;br /&gt;
Usage: reuse annotate [OPTIONS] PATH&lt;br /&gt;
Try &#039;reuse annotate --help&#039; for help.&lt;br /&gt;
&lt;br /&gt;
Error: The following files do not have a recognised file extension. Please use &#039;--style&#039;, &#039;--force-dot-license&#039;, &#039;--fallback-dot-license&#039;, or &#039;--skip-unrecognised&#039;:&lt;br /&gt;
&lt;br /&gt;
docs/conf.py.orig&lt;br /&gt;
Successfully changed header of docs/conf.py&lt;br /&gt;
Successfully changed header of docs/faq.rst&lt;br /&gt;
Successfully changed header of docs/.gitignore&lt;br /&gt;
Successfully changed header of docs/attribution.rst&lt;br /&gt;
Successfully changed header of docs/changelog.rst&lt;br /&gt;
Successfully changed header of docs/_templates/versions.html&lt;br /&gt;
Usage: reuse annotate [OPTIONS] PATH&lt;br /&gt;
Try &#039;reuse annotate --help&#039; for help.&lt;br /&gt;
&lt;br /&gt;
Error: The following files do not have a recognised file extension. Please use &#039;--style&#039;, &#039;--force-dot-license&#039;, &#039;--fallback-dot-license&#039;, or &#039;--skip-unrecognised&#039;:&lt;br /&gt;
&lt;br /&gt;
docs/locales/es/LC_MESSAGES/autodoc.mo&lt;br /&gt;
Successfully changed header of docs/locales/es/LC_MESSAGES/index.po&lt;br /&gt;
Successfully changed header of docs/locales/es/LC_MESSAGES/autodoc.po&lt;br /&gt;
Usage: reuse annotate [OPTIONS] PATH&lt;br /&gt;
Try &#039;reuse annotate --help&#039; for help.&lt;br /&gt;
&lt;br /&gt;
Error: The following files do not have a recognised file extension. Please use &#039;--style&#039;, &#039;--force-dot-license&#039;, &#039;--fallback-dot-license&#039;, or &#039;--skip-unrecognised&#039;:&lt;br /&gt;
&lt;br /&gt;
docs/locales/es/LC_MESSAGES/index.mo&lt;br /&gt;
Successfully changed header of docs/dev/index.rst&lt;br /&gt;
Usage: reuse annotate [OPTIONS] PATH&lt;br /&gt;
Try &#039;reuse annotate --help&#039; for help.&lt;br /&gt;
&lt;br /&gt;
Error: The following files do not have a recognised file extension. Please use &#039;--style&#039;, &#039;--force-dot-license&#039;, &#039;--fallback-dot-license&#039;, or &#039;--skip-unrecognised&#039;:&lt;br /&gt;
&lt;br /&gt;
CHANGELOG&lt;br /&gt;
Usage: reuse annotate [OPTIONS] PATH&lt;br /&gt;
Try &#039;reuse annotate --help&#039; for help.&lt;br /&gt;
&lt;br /&gt;
Error: The following files do not have a recognised file extension. Please use &#039;--style&#039;, &#039;--force-dot-license&#039;, &#039;--fallback-dot-license&#039;, or &#039;--skip-unrecognised&#039;:&lt;br /&gt;
&lt;br /&gt;
LICENSES/CC-BY-SA-4.0.txt&lt;br /&gt;
Usage: reuse annotate [OPTIONS] PATH&lt;br /&gt;
Try &#039;reuse annotate --help&#039; for help.&lt;br /&gt;
&lt;br /&gt;
Error: The following files do not have a recognised file extension. Please use &#039;--style&#039;, &#039;--force-dot-license&#039;, &#039;--fallback-dot-license&#039;, or &#039;--skip-unrecognised&#039;:&lt;br /&gt;
&lt;br /&gt;
LICENSES/CERN-OHL-S-2.0.txt&lt;br /&gt;
Usage: reuse annotate [OPTIONS] PATH&lt;br /&gt;
Try &#039;reuse annotate --help&#039; for help.&lt;br /&gt;
&lt;br /&gt;
Error: The following files do not have a recognised file extension. Please use &#039;--style&#039;, &#039;--force-dot-license&#039;, &#039;--fallback-dot-license&#039;, or &#039;--skip-unrecognised&#039;:&lt;br /&gt;
&lt;br /&gt;
LICENSES/AGPL-3.0-only.txt&lt;br /&gt;
Usage: reuse annotate [OPTIONS] PATH&lt;br /&gt;
Try &#039;reuse annotate --help&#039; for help.&lt;br /&gt;
&lt;br /&gt;
Error: Invalid value for &#039;PATH&#039;: Path &#039;./.git/objects/pack/pack-38957d03ba60a2a9101b19234fac447289823e43.idx&#039; is not writable.&lt;br /&gt;
Usage: reuse annotate [OPTIONS] PATH&lt;br /&gt;
Try &#039;reuse annotate --help&#039; for help.&lt;br /&gt;
&lt;br /&gt;
Error: Invalid value for &#039;PATH&#039;: Path &#039;./.git/objects/pack/pack-38957d03ba60a2a9101b19234fac447289823e43.pack&#039; is not writable.&lt;br /&gt;
Usage: reuse annotate [OPTIONS] PATH&lt;br /&gt;
Try &#039;reuse annotate --help&#039; for help.&lt;br /&gt;
&lt;br /&gt;
Error: The following files do not have a recognised file extension. Please use &#039;--style&#039;, &#039;--force-dot-license&#039;, &#039;--fallback-dot-license&#039;, or &#039;--skip-unrecognised&#039;:&lt;br /&gt;
&lt;br /&gt;
.git/logs/HEAD&lt;br /&gt;
Usage: reuse annotate [OPTIONS] PATH&lt;br /&gt;
Try &#039;reuse annotate --help&#039; for help.&lt;br /&gt;
&lt;br /&gt;
Error: The following files do not have a recognised file extension. Please use &#039;--style&#039;, &#039;--force-dot-license&#039;, &#039;--fallback-dot-license&#039;, or &#039;--skip-unrecognised&#039;:&lt;br /&gt;
&lt;br /&gt;
.git/logs/refs/remotes/origin/HEAD&lt;br /&gt;
Usage: reuse annotate [OPTIONS] PATH&lt;br /&gt;
Try &#039;reuse annotate --help&#039; for help.&lt;br /&gt;
&lt;br /&gt;
Error: The following files do not have a recognised file extension. Please use &#039;--style&#039;, &#039;--force-dot-license&#039;, &#039;--fallback-dot-license&#039;, or &#039;--skip-unrecognised&#039;:&lt;br /&gt;
&lt;br /&gt;
.git/logs/refs/heads/main&lt;br /&gt;
Usage: reuse annotate [OPTIONS] PATH&lt;br /&gt;
Try &#039;reuse annotate --help&#039; for help.&lt;br /&gt;
&lt;br /&gt;
Error: The following files do not have a recognised file extension. Please use &#039;--style&#039;, &#039;--force-dot-license&#039;, &#039;--fallback-dot-license&#039;, or &#039;--skip-unrecognised&#039;:&lt;br /&gt;
&lt;br /&gt;
.git/hooks/pre-push.sample&lt;br /&gt;
Usage: reuse annotate [OPTIONS] PATH&lt;br /&gt;
Try &#039;reuse annotate --help&#039; for help.&lt;br /&gt;
&lt;br /&gt;
Error: The following files do not have a recognised file extension. Please use &#039;--style&#039;, &#039;--force-dot-license&#039;, &#039;--fallback-dot-license&#039;, or &#039;--skip-unrecognised&#039;:&lt;br /&gt;
&lt;br /&gt;
.git/hooks/post-update.sample&lt;br /&gt;
Usage: reuse annotate [OPTIONS] PATH&lt;br /&gt;
Try &#039;reuse annotate --help&#039; for help.&lt;br /&gt;
&lt;br /&gt;
Error: The following files do not have a recognised file extension. Please use &#039;--style&#039;, &#039;--force-dot-license&#039;, &#039;--fallback-dot-license&#039;, or &#039;--skip-unrecognised&#039;:&lt;br /&gt;
&lt;br /&gt;
.git/hooks/pre-rebase.sample&lt;br /&gt;
Usage: reuse annotate [OPTIONS] PATH&lt;br /&gt;
Try &#039;reuse annotate --help&#039; for help.&lt;br /&gt;
&lt;br /&gt;
Error: The following files do not have a recognised file extension. Please use &#039;--style&#039;, &#039;--force-dot-license&#039;, &#039;--fallback-dot-license&#039;, or &#039;--skip-unrecognised&#039;:&lt;br /&gt;
&lt;br /&gt;
.git/hooks/update.sample&lt;br /&gt;
Usage: reuse annotate [OPTIONS] PATH&lt;br /&gt;
Try &#039;reuse annotate --help&#039; for help.&lt;br /&gt;
&lt;br /&gt;
Error: The following files do not have a recognised file extension. Please use &#039;--style&#039;, &#039;--force-dot-license&#039;, &#039;--fallback-dot-license&#039;, or &#039;--skip-unrecognised&#039;:&lt;br /&gt;
&lt;br /&gt;
.git/hooks/push-to-checkout.sample&lt;br /&gt;
Usage: reuse annotate [OPTIONS] PATH&lt;br /&gt;
Try &#039;reuse annotate --help&#039; for help.&lt;br /&gt;
&lt;br /&gt;
Error: The following files do not have a recognised file extension. Please use &#039;--style&#039;, &#039;--force-dot-license&#039;, &#039;--fallback-dot-license&#039;, or &#039;--skip-unrecognised&#039;:&lt;br /&gt;
&lt;br /&gt;
.git/hooks/pre-receive.sample&lt;br /&gt;
Usage: reuse annotate [OPTIONS] PATH&lt;br /&gt;
Try &#039;reuse annotate --help&#039; for help.&lt;br /&gt;
&lt;br /&gt;
Error: The following files do not have a recognised file extension. Please use &#039;--style&#039;, &#039;--force-dot-license&#039;, &#039;--fallback-dot-license&#039;, or &#039;--skip-unrecognised&#039;:&lt;br /&gt;
&lt;br /&gt;
.git/hooks/prepare-commit-msg.sample&lt;br /&gt;
Usage: reuse annotate [OPTIONS] PATH&lt;br /&gt;
Try &#039;reuse annotate --help&#039; for help.&lt;br /&gt;
&lt;br /&gt;
Error: The following files do not have a recognised file extension. Please use &#039;--style&#039;, &#039;--force-dot-license&#039;, &#039;--fallback-dot-license&#039;, or &#039;--skip-unrecognised&#039;:&lt;br /&gt;
&lt;br /&gt;
.git/hooks/applypatch-msg.sample&lt;br /&gt;
Usage: reuse annotate [OPTIONS] PATH&lt;br /&gt;
Try &#039;reuse annotate --help&#039; for help.&lt;br /&gt;
&lt;br /&gt;
Error: The following files do not have a recognised file extension. Please use &#039;--style&#039;, &#039;--force-dot-license&#039;, &#039;--fallback-dot-license&#039;, or &#039;--skip-unrecognised&#039;:&lt;br /&gt;
&lt;br /&gt;
.git/hooks/pre-merge-commit.sample&lt;br /&gt;
Usage: reuse annotate [OPTIONS] PATH&lt;br /&gt;
Try &#039;reuse annotate --help&#039; for help.&lt;br /&gt;
&lt;br /&gt;
Error: The following files do not have a recognised file extension. Please use &#039;--style&#039;, &#039;--force-dot-license&#039;, &#039;--fallback-dot-license&#039;, or &#039;--skip-unrecognised&#039;:&lt;br /&gt;
&lt;br /&gt;
.git/hooks/pre-applypatch.sample&lt;br /&gt;
Usage: reuse annotate [OPTIONS] PATH&lt;br /&gt;
Try &#039;reuse annotate --help&#039; for help.&lt;br /&gt;
&lt;br /&gt;
Error: The following files do not have a recognised file extension. Please use &#039;--style&#039;, &#039;--force-dot-license&#039;, &#039;--fallback-dot-license&#039;, or &#039;--skip-unrecognised&#039;:&lt;br /&gt;
&lt;br /&gt;
.git/hooks/pre-commit.sample&lt;br /&gt;
Usage: reuse annotate [OPTIONS] PATH&lt;br /&gt;
Try &#039;reuse annotate --help&#039; for help.&lt;br /&gt;
&lt;br /&gt;
Error: The following files do not have a recognised file extension. Please use &#039;--style&#039;, &#039;--force-dot-license&#039;, &#039;--fallback-dot-license&#039;, or &#039;--skip-unrecognised&#039;:&lt;br /&gt;
&lt;br /&gt;
.git/hooks/fsmonitor-watchman.sample&lt;br /&gt;
Usage: reuse annotate [OPTIONS] PATH&lt;br /&gt;
Try &#039;reuse annotate --help&#039; for help.&lt;br /&gt;
&lt;br /&gt;
Error: The following files do not have a recognised file extension. Please use &#039;--style&#039;, &#039;--force-dot-license&#039;, &#039;--fallback-dot-license&#039;, or &#039;--skip-unrecognised&#039;:&lt;br /&gt;
&lt;br /&gt;
.git/hooks/commit-msg.sample&lt;br /&gt;
Usage: reuse annotate [OPTIONS] PATH&lt;br /&gt;
Try &#039;reuse annotate --help&#039; for help.&lt;br /&gt;
&lt;br /&gt;
Error: The following files do not have a recognised file extension. Please use &#039;--style&#039;, &#039;--force-dot-license&#039;, &#039;--fallback-dot-license&#039;, or &#039;--skip-unrecognised&#039;:&lt;br /&gt;
&lt;br /&gt;
.git/config&lt;br /&gt;
Usage: reuse annotate [OPTIONS] PATH&lt;br /&gt;
Try &#039;reuse annotate --help&#039; for help.&lt;br /&gt;
&lt;br /&gt;
Error: The following files do not have a recognised file extension. Please use &#039;--style&#039;, &#039;--force-dot-license&#039;, &#039;--fallback-dot-license&#039;, or &#039;--skip-unrecognised&#039;:&lt;br /&gt;
&lt;br /&gt;
.git/HEAD&lt;br /&gt;
Usage: reuse annotate [OPTIONS] PATH&lt;br /&gt;
Try &#039;reuse annotate --help&#039; for help.&lt;br /&gt;
&lt;br /&gt;
Error: The following files do not have a recognised file extension. Please use &#039;--style&#039;, &#039;--force-dot-license&#039;, &#039;--fallback-dot-license&#039;, or &#039;--skip-unrecognised&#039;:&lt;br /&gt;
&lt;br /&gt;
.git/description&lt;br /&gt;
Usage: reuse annotate [OPTIONS] PATH&lt;br /&gt;
Try &#039;reuse annotate --help&#039; for help.&lt;br /&gt;
&lt;br /&gt;
Error: The following files do not have a recognised file extension. Please use &#039;--style&#039;, &#039;--force-dot-license&#039;, &#039;--fallback-dot-license&#039;, or &#039;--skip-unrecognised&#039;:&lt;br /&gt;
&lt;br /&gt;
.git/info/exclude&lt;br /&gt;
Usage: reuse annotate [OPTIONS] PATH&lt;br /&gt;
Try &#039;reuse annotate --help&#039; for help.&lt;br /&gt;
&lt;br /&gt;
Error: The following files do not have a recognised file extension. Please use &#039;--style&#039;, &#039;--force-dot-license&#039;, &#039;--fallback-dot-license&#039;, or &#039;--skip-unrecognised&#039;:&lt;br /&gt;
&lt;br /&gt;
.git/index&lt;br /&gt;
Usage: reuse annotate [OPTIONS] PATH&lt;br /&gt;
Try &#039;reuse annotate --help&#039; for help.&lt;br /&gt;
&lt;br /&gt;
Error: The following files do not have a recognised file extension. Please use &#039;--style&#039;, &#039;--force-dot-license&#039;, &#039;--fallback-dot-license&#039;, or &#039;--skip-unrecognised&#039;:&lt;br /&gt;
&lt;br /&gt;
.git/refs/remotes/origin/HEAD&lt;br /&gt;
Usage: reuse annotate [OPTIONS] PATH&lt;br /&gt;
Try &#039;reuse annotate --help&#039; for help.&lt;br /&gt;
&lt;br /&gt;
Error: The following files do not have a recognised file extension. Please use &#039;--style&#039;, &#039;--force-dot-license&#039;, &#039;--fallback-dot-license&#039;, or &#039;--skip-unrecognised&#039;:&lt;br /&gt;
&lt;br /&gt;
.git/refs/heads/main&lt;br /&gt;
Usage: reuse annotate [OPTIONS] PATH&lt;br /&gt;
Try &#039;reuse annotate --help&#039; for help.&lt;br /&gt;
&lt;br /&gt;
Error: The following files do not have a recognised file extension. Please use &#039;--style&#039;, &#039;--force-dot-license&#039;, &#039;--fallback-dot-license&#039;, or &#039;--skip-unrecognised&#039;:&lt;br /&gt;
&lt;br /&gt;
.git/packed-refs&lt;br /&gt;
Usage: reuse annotate [OPTIONS] PATH&lt;br /&gt;
Try &#039;reuse annotate --help&#039; for help.&lt;br /&gt;
&lt;br /&gt;
Error: The following files do not have a recognised file extension. Please use &#039;--style&#039;, &#039;--force-dot-license&#039;, &#039;--fallback-dot-license&#039;, or &#039;--skip-unrecognised&#039;:&lt;br /&gt;
&lt;br /&gt;
KEYS&lt;br /&gt;
Usage: reuse annotate [OPTIONS] PATH&lt;br /&gt;
Try &#039;reuse annotate --help&#039; for help.&lt;br /&gt;
&lt;br /&gt;
Error: The following files do not have a recognised file extension. Please use &#039;--style&#039;, &#039;--force-dot-license&#039;, &#039;--fallback-dot-license&#039;, or &#039;--skip-unrecognised&#039;:&lt;br /&gt;
&lt;br /&gt;
intake.FCStd&lt;br /&gt;
Successfully changed header of REUSE.toml&lt;br /&gt;
Successfully changed header of .gitignore&lt;br /&gt;
Successfully changed header of README.md&lt;br /&gt;
Successfully changed header of .github/workflows/docs_pages_workflow.yml&lt;br /&gt;
Usage: reuse annotate [OPTIONS] PATH&lt;br /&gt;
Try &#039;reuse annotate --help&#039; for help.&lt;br /&gt;
&lt;br /&gt;
Error: The following files do not have a recognised file extension. Please use &#039;--style&#039;, &#039;--force-dot-license&#039;, &#039;--fallback-dot-license&#039;, or &#039;--skip-unrecognised&#039;:&lt;br /&gt;
&lt;br /&gt;
LICENSE&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## ah fuk, that didn&#039;t do what we wanted at all. I expected it would have pulled the copyright info from the REUSE.toml file. Instead it just took the contents &#039;--license&#039; as the value of the copyright attribute :(&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ head docs/faq.rst &lt;br /&gt;
.. SPDX-FileCopyrightText: 2026 --license&lt;br /&gt;
&lt;br /&gt;
.. _faq:&lt;br /&gt;
&lt;br /&gt;
Frequently Asked Questions&lt;br /&gt;
==========================&lt;br /&gt;
&lt;br /&gt;
.. _faq_follow:&lt;br /&gt;
&lt;br /&gt;
Q: How can I get updates about Eco-Libre?&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## the faq says that we *should* update headers to every file, but it&#039;s not necessary if we use `REUSE.toml` file – as was also indicated with the `reuse lint` output above https://reuse.software/faq/&lt;br /&gt;
## we can, at any time, get a list of every file&#039;s copyright and license using the `reuse spdx` command&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ reuse spdx&lt;br /&gt;
SPDXVersion: SPDX-2.1&lt;br /&gt;
DataLicense: CC0-1.0&lt;br /&gt;
SPDXID: SPDXRef-DOCUMENT&lt;br /&gt;
DocumentName: life-line&lt;br /&gt;
DocumentNamespace: http://spdx.org/spdxdocs/spdx-v2.1-16677618-7d18-4c76-8411-c508a053c01d&lt;br /&gt;
Creator: Person: Anonymous ()&lt;br /&gt;
Creator: Organization: Anonymous ()&lt;br /&gt;
Creator: Tool: reuse-6.2.0&lt;br /&gt;
Created: 2026-04-28T22:19:51Z&lt;br /&gt;
CreatorComment: &amp;lt;text&amp;gt;This document was created automatically using available reuse information consistent with REUSE.&amp;lt;/text&amp;gt;&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-97ed0fdad1415bc2a07967691fb8b548&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-5a39e4fd6c4d6fe353cacabc360bd279&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-25ab5821b678be2b2b12d29b956be405&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-3a1f36e95ccd2fd666e9798d3ac7eb47&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-21b8c0e80d2658f4b88b5a3938551f27&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-1a8de53ae2a6abc46eb8ed1144b7a1f9&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-f9fec76b2bf698c8fb90b872cd0318c1&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-10a5417ebf693664c167892a336585dc&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-3baf92437e62e7b84893396f6d6d2c31&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-120ec97787268d2d531b284f8f238388&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-96f0aa3db80b8611b0cad4fd7f43d887&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-55954c104527c72b6f63da5076e914f7&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-87ca5b46937380db7a2e234fe72b2988&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-ce4d5cb6868565afb76744142953776c&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-7df4243f95862b10bf244e1a932a1305&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-009fc4d41e5673f7da41e8b27bd3ebd6&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-87008e367a587fb44b1e9b7aaa52f6b6&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-c531371aac660823102048108ce60921&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-732742039a9682c0d5bfa8d8845abb5f&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-1228cd07cdef9163c78a4847c409b29e&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-f039812ae7f967b8f08d9147e2fd4153&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-35b1d5815fbbdd7c4356fb3b3cba3b1e&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-c1aae1897500b74ec3aaca84335f882f&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-3598f5057a1cdb741af433a6096d913d&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-c17ac5ff4f166b672e4510ff2c577dbc&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-7b9171fdbbab79cca77d36069477c84a&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-7a9621b85efc539284dde0394be036d8&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-4658cb22cc4a9761f1206a7297889577&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-49300cf0d117ccc668836b524d21d3f9&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-d6b38587054ac699a38698e0eefb93c8&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-49b84e58657e7ccc299f61b0cf539e20&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-39d79d9e7219bdbab89178b7dc21d0da&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-ed584b122f50739f0fda5917ea3f7f59&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-1e2b0fda7ea1435b44332b7c8900d12a&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-2595e40eb2dc20ee8fc015548806efdc&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-fdc6a9c01b345699ecf781d28fa90f5a&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-9cd72e674f0f994995a06528ee25ce2f&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-9cc2a1a37bc4829e8725d74912f56b16&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-e2350358bd19a26c28ac28cc5e18c5a1&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-b33bfd4d5eec5e96e039ec43915bfbf8&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-7015c357dbfa9a8c1900250df442c421&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-4dedfba4994163f7e688743fc42a33d6&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-89b9ed2df6780dc61cffdf6dab799cff&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-eb10117cc0b1fcd44808cc34f4cb1083&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-f1dc0b0fba5c4ce78e065efb774669a8&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-01067d41eee220cdd87bfbf80ea71e87&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-111708d19b33da1a42118224ef69665e&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-472c7aaf2054b6662a0f02656ff453e0&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-f373dac39205edb0975081cc2411a334&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-3d7c4e6cccb3294880a3d23a9edc019c&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-fe7b87a77ea58c18a39d99c8cc4fd9b8&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-8979307823bc12e1df0c4754fb92b50a&lt;br /&gt;
&lt;br /&gt;
FileName: ./.github/workflows/docs_pages_workflow.yml&lt;br /&gt;
SPDXID: SPDXRef-97ed0fdad1415bc2a07967691fb8b548&lt;br /&gt;
FileChecksum: SHA1: 9d6615d72965d4a93b8f7b9eb83b6484b44dee95&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./.gitignore&lt;br /&gt;
SPDXID: SPDXRef-5a39e4fd6c4d6fe353cacabc360bd279&lt;br /&gt;
FileChecksum: SHA1: ac7e0839e77460fca604674fb11218c9fca3a62b&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./CHANGELOG&lt;br /&gt;
SPDXID: SPDXRef-25ab5821b678be2b2b12d29b956be405&lt;br /&gt;
FileChecksum: SHA1: 0d0ca350f7daa0808bebebd0a65784358dfc45c3&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./KEYS&lt;br /&gt;
SPDXID: SPDXRef-3a1f36e95ccd2fd666e9798d3ac7eb47&lt;br /&gt;
FileChecksum: SHA1: f97678ccd0eed19288e1962a838be2f4aa8b7c43&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./README.md&lt;br /&gt;
SPDXID: SPDXRef-21b8c0e80d2658f4b88b5a3938551f27&lt;br /&gt;
FileChecksum: SHA1: 954a6f4347c29a012ef72704606756c843b6a522&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
Copyright (C) 2023 Michael Altfield and the Eco-Libre Team&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./docs/.gitignore&lt;br /&gt;
SPDXID: SPDXRef-1a8de53ae2a6abc46eb8ed1144b7a1f9&lt;br /&gt;
FileChecksum: SHA1: 71683d32ff456772212653e2e836b217c3b7fb73&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./docs/Makefile&lt;br /&gt;
SPDXID: SPDXRef-f9fec76b2bf698c8fb90b872cd0318c1&lt;br /&gt;
FileChecksum: SHA1: 77b7d944eb62d73c1f46a1cfcba1e70e31e4297a&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./docs/_static/custom.css&lt;br /&gt;
SPDXID: SPDXRef-10a5417ebf693664c167892a336585dc&lt;br /&gt;
FileChecksum: SHA1: 6cd536f874aadf0ccc0a0e17ad33f948b4fba44c&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./docs/_templates/versions.html&lt;br /&gt;
SPDXID: SPDXRef-3baf92437e62e7b84893396f6d6d2c31&lt;br /&gt;
FileChecksum: SHA1: 8443bd4bfd306f5b6cf6485e6a6cff5599def6f7&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./docs/attribution.rst&lt;br /&gt;
SPDXID: SPDXRef-120ec97787268d2d531b284f8f238388&lt;br /&gt;
FileChecksum: SHA1: e4b0c037aac62dc9b64293fe57a188f6bf4c5615&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./docs/build/index.rst&lt;br /&gt;
SPDXID: SPDXRef-96f0aa3db80b8611b0cad4fd7f43d887&lt;br /&gt;
FileChecksum: SHA1: 464d9b8ffa36876d3eb0c95a093f4c212d80ff1b&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./docs/build/intake/bom.ods&lt;br /&gt;
SPDXID: SPDXRef-55954c104527c72b6f63da5076e914f7&lt;br /&gt;
FileChecksum: SHA1: 916d43e423eea34a6b63c4cc36190b998b426d85&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2026 --license&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./docs/build/intake/bom.rst&lt;br /&gt;
SPDXID: SPDXRef-87ca5b46937380db7a2e234fe72b2988&lt;br /&gt;
FileChecksum: SHA1: b72018fd716c9cd1f44b96e84a97d7891a9659c2&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./docs/build/intake/index.rst&lt;br /&gt;
SPDXID: SPDXRef-ce4d5cb6868565afb76744142953776c&lt;br /&gt;
FileChecksum: SHA1: 73e83f3d88739f3a711cdc22d05a17e5e46135a0&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./docs/build/intake/what.rst&lt;br /&gt;
SPDXID: SPDXRef-7df4243f95862b10bf244e1a932a1305&lt;br /&gt;
FileChecksum: SHA1: e444a37cc9615febee656e969dac625b9c2014ba&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./docs/build/settling-tank/bom.rst&lt;br /&gt;
SPDXID: SPDXRef-009fc4d41e5673f7da41e8b27bd3ebd6&lt;br /&gt;
FileChecksum: SHA1: e03a27e7d09a23245baa962f0f4ea12fac7ea6d2&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./docs/build/settling-tank/index.rst&lt;br /&gt;
SPDXID: SPDXRef-87008e367a587fb44b1e9b7aaa52f6b6&lt;br /&gt;
FileChecksum: SHA1: f8ff63ef2190341ea2bd810c300d54b83d5d3674&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./docs/build/settling-tank/what.rst&lt;br /&gt;
SPDXID: SPDXRef-c531371aac660823102048108ce60921&lt;br /&gt;
FileChecksum: SHA1: 57a0fa949c5e6e46eca53d0889f152c2962bfa61&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./docs/buildDocs.sh&lt;br /&gt;
SPDXID: SPDXRef-732742039a9682c0d5bfa8d8845abb5f&lt;br /&gt;
FileChecksum: SHA1: befd1b0246b958791ad57f4e18bbba43d8872cd7&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: AGPL-3.0-only&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./docs/changelog.rst&lt;br /&gt;
SPDXID: SPDXRef-1228cd07cdef9163c78a4847c409b29e&lt;br /&gt;
FileChecksum: SHA1: 26793d0a9acc383ba3ccfa7d622b7071db91418e&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./docs/conf.py&lt;br /&gt;
SPDXID: SPDXRef-f039812ae7f967b8f08d9147e2fd4153&lt;br /&gt;
FileChecksum: SHA1: 96026b86d9255c306df4b1fc8b2f5e94cc66c529&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: AGPL-3.0-only&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: &lt;br /&gt;
© &#039; +copyright,&amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./docs/conf.py.orig&lt;br /&gt;
SPDXID: SPDXRef-35b1d5815fbbdd7c4356fb3b3cba3b1e&lt;br /&gt;
FileChecksum: SHA1: 71f3dc660a741b97542c68e32eaa33c80dc42630&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./docs/dev/index.rst&lt;br /&gt;
SPDXID: SPDXRef-c1aae1897500b74ec3aaca84335f882f&lt;br /&gt;
FileChecksum: SHA1: 8075e5fb62dcb27431df32d5928e7561d66a2c46&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./docs/faq.rst&lt;br /&gt;
SPDXID: SPDXRef-3598f5057a1cdb741af433a6096d913d&lt;br /&gt;
FileChecksum: SHA1: f3b1399a843bcd73a4eb67e1fc62a4e090b2377a&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./docs/images/eco-libre_logo-2025.08.svg&lt;br /&gt;
SPDXID: SPDXRef-c17ac5ff4f166b672e4510ff2c577dbc&lt;br /&gt;
FileChecksum: SHA1: d582ec414c54cea2834891d35349c09ae069cbbd&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2026 --license&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./docs/images/eco-libre_text-logo-2025.08.svg&lt;br /&gt;
SPDXID: SPDXRef-7b9171fdbbab79cca77d36069477c84a&lt;br /&gt;
FileChecksum: SHA1: 513c03e164c26e0b35644bee03625b8d343fc49b&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2026 --license&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./docs/images/eco-libre_text-logo-2025.08_500px.png&lt;br /&gt;
SPDXID: SPDXRef-7a9621b85efc539284dde0394be036d8&lt;br /&gt;
FileChecksum: SHA1: de27a5411a683f090c1b543c1e93f8164c4d44cc&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2026 --license&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./docs/images/life-line_2023.12.jpg&lt;br /&gt;
SPDXID: SPDXRef-4658cb22cc4a9761f1206a7297889577&lt;br /&gt;
FileChecksum: SHA1: 8bff1f109f6f7ebc2accd5996d13fb94f7e8939a&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2026 --license&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./docs/images/life-line_2025.10.jpg&lt;br /&gt;
SPDXID: SPDXRef-49300cf0d117ccc668836b524d21d3f9&lt;br /&gt;
FileChecksum: SHA1: af42083713949fb9aac751421fc9a5fc3e794e4d&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2026 --license&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./docs/images/life-line_intake_cleanout-drain.jpg&lt;br /&gt;
SPDXID: SPDXRef-d6b38587054ac699a38698e0eefb93c8&lt;br /&gt;
FileChecksum: SHA1: 2652eedb0face5fececa50537198fc0f3aaf6092&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2026 --license&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./docs/images/life-line_intake_drum.jpg&lt;br /&gt;
SPDXID: SPDXRef-49b84e58657e7ccc299f61b0cf539e20&lt;br /&gt;
FileChecksum: SHA1: e26715adcf558fe12f4eded7308bc1be3e12761c&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2026 --license&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./docs/images/life-line_intake_expanded-metal.jpg&lt;br /&gt;
SPDXID: SPDXRef-39d79d9e7219bdbab89178b7dc21d0da&lt;br /&gt;
FileChecksum: SHA1: 0d0c3398256d96884fcd11daaebc4507b23d7750&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2026 --license&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./docs/images/life-line_intake_fine-mesh.jpg&lt;br /&gt;
SPDXID: SPDXRef-ed584b122f50739f0fda5917ea3f7f59&lt;br /&gt;
FileChecksum: SHA1: 4b3786e5f403c70f9598350c04cf12abb4a790aa&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2026 --license&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./docs/images/life-line_intake_outflow.jpg&lt;br /&gt;
SPDXID: SPDXRef-1e2b0fda7ea1435b44332b7c8900d12a&lt;br /&gt;
FileChecksum: SHA1: 0b7db555483b713324756799e657d2324bdab4f7&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2026 --license&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./docs/images/life-line_intake_parts.svg&lt;br /&gt;
SPDXID: SPDXRef-2595e40eb2dc20ee8fc015548806efdc&lt;br /&gt;
FileChecksum: SHA1: d98da9d0de766b61df6fb0c25f61521a3d26344a&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2026 --license&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./docs/images/life-line_intake_turbulence-bar.jpg&lt;br /&gt;
SPDXID: SPDXRef-fdc6a9c01b345699ecf781d28fa90f5a&lt;br /&gt;
FileChecksum: SHA1: 0f9c8372c9737ad1bac27204292c6aa7e5098813&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2026 --license&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./docs/images/life-line_intake_weir.jpg&lt;br /&gt;
SPDXID: SPDXRef-9cd72e674f0f994995a06528ee25ce2f&lt;br /&gt;
FileChecksum: SHA1: 7f64e42c9fe3b1d2c7d1ae1ece0b55bf544c781a&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2026 --license&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./docs/images/life-line_praxis_boris-plotkin.2024-11.jpg&lt;br /&gt;
SPDXID: SPDXRef-9cc2a1a37bc4829e8725d74912f56b16&lt;br /&gt;
FileChecksum: SHA1: baef65c6984d5b04e1cf44d435f471be0727bfd1&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2026 --license&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./docs/images/life-line_praxis_vegan-beasts_screen.2025-04.jpg&lt;br /&gt;
SPDXID: SPDXRef-e2350358bd19a26c28ac28cc5e18c5a1&lt;br /&gt;
FileChecksum: SHA1: d21be6517081f4f294ed88dca32a920e6bfeaadf&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2026 --license&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./docs/images/life-line_praxis_vegan-beasts_weir.2025-04.jpg&lt;br /&gt;
SPDXID: SPDXRef-b33bfd4d5eec5e96e039ec43915bfbf8&lt;br /&gt;
FileChecksum: SHA1: ba75a617970d7819263e2f21f0d52dcaa61c961c&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2026 --license&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./docs/index.rst&lt;br /&gt;
SPDXID: SPDXRef-7015c357dbfa9a8c1900250df442c421&lt;br /&gt;
FileChecksum: SHA1: e2618dda841766cbd533441dbd21fcfa55e2f119&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./docs/introduction/index.rst&lt;br /&gt;
SPDXID: SPDXRef-4dedfba4994163f7e688743fc42a33d6&lt;br /&gt;
FileChecksum: SHA1: 636e89b3596a43b9ca869502795fdc1956101d1c&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./docs/license.rst&lt;br /&gt;
SPDXID: SPDXRef-89b9ed2df6780dc61cffdf6dab799cff&lt;br /&gt;
FileChecksum: SHA1: c858a38846985c5a96c11c170468688b2860f529&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./docs/locales/es/LC_MESSAGES/autodoc.mo&lt;br /&gt;
SPDXID: SPDXRef-eb10117cc0b1fcd44808cc34f4cb1083&lt;br /&gt;
FileChecksum: SHA1: 3b2fa212f0265c96b1cde5a8cc061cc49385ed96&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./docs/locales/es/LC_MESSAGES/autodoc.po&lt;br /&gt;
SPDXID: SPDXRef-f1dc0b0fba5c4ce78e065efb774669a8&lt;br /&gt;
FileChecksum: SHA1: 58fca147c574cbda23a9c7a5ce420f6385d80ca1&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;Copyright (C) 2020 Michael Altfield&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./docs/locales/es/LC_MESSAGES/index.mo&lt;br /&gt;
SPDXID: SPDXRef-01067d41eee220cdd87bfbf80ea71e87&lt;br /&gt;
FileChecksum: SHA1: f6dda249389c9eb42684431b13c68bbb98530c35&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./docs/locales/es/LC_MESSAGES/index.po&lt;br /&gt;
SPDXID: SPDXRef-111708d19b33da1a42118224ef69665e&lt;br /&gt;
FileChecksum: SHA1: 21c57fcf054a05fcf4e0ef8660a6a38f98239e80&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;Copyright (C) 2020 Michael Altfield&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./docs/make.bat&lt;br /&gt;
SPDXID: SPDXRef-472c7aaf2054b6662a0f02656ff453e0&lt;br /&gt;
FileChecksum: SHA1: 3c504feedb2e1f1e85ed443a4d5aba20bafe0b28&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./docs/praxis/index.rst&lt;br /&gt;
SPDXID: SPDXRef-f373dac39205edb0975081cc2411a334&lt;br /&gt;
FileChecksum: SHA1: 03c98408278e3ebd2cdb61ecae75bd1c52cf4c02&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./docs/support.rst&lt;br /&gt;
SPDXID: SPDXRef-3d7c4e6cccb3294880a3d23a9edc019c&lt;br /&gt;
FileChecksum: SHA1: 3aabd6b0faf44abd22ae7d802d5e2baa988d4eaa&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./docs/theory/index.rst&lt;br /&gt;
SPDXID: SPDXRef-fe7b87a77ea58c18a39d99c8cc4fd9b8&lt;br /&gt;
FileChecksum: SHA1: 7b1906423a6b89ef1e047613a4a7bcee33ebbb7b&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./intake.FCStd&lt;br /&gt;
SPDXID: SPDXRef-8979307823bc12e1df0c4754fb92b50a&lt;br /&gt;
FileChecksum: SHA1: e0df68c56c2984184fccd26890583c8f82406525&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CERN-OHL-S-2.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## I guess we could even have a CI job that automatically generated this file on-push&lt;br /&gt;
# Javier Serrano (Deputy Group Leader of the accelerator Controls Electronics and Mechatronics and co-author of the CERN OHL license) said that he would be open to updating the &amp;quot;how to use the CERN OHL license&amp;quot; guide to include our REUSE.toml example, but that he&#039;d want us to provide an example repo\&lt;br /&gt;
# ok, on my eco-libre vm I did some real changes and pushed them up to github&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
user@eco-libre:~/sandbox/life-line$ ls -lah&lt;br /&gt;
total 116K&lt;br /&gt;
drwxr-xr-x  7 user user 4.0K Apr 28 18:32 .&lt;br /&gt;
drwxr-xr-x 18 user user 4.0K Apr 28 17:59 ..&lt;br /&gt;
drwxr-xr-x  2 user user 4.0K Apr 28 18:00 cad&lt;br /&gt;
-rw-r--r--  1 user user  531 Apr 28 17:59 CHANGELOG&lt;br /&gt;
drwxr-xr-x 11 user user 4.0K Apr 28 17:59 docs&lt;br /&gt;
drwxr-xr-x  8 user user 4.0K Apr 28 18:59 .git&lt;br /&gt;
drwxr-xr-x  3 user user 4.0K Apr 28 17:59 .github&lt;br /&gt;
-rw-r--r--  1 user user   44 Apr 28 17:59 .gitignore&lt;br /&gt;
-rw-r--r--  1 user user  71K Apr 28 17:59 KEYS&lt;br /&gt;
drwxr-xr-x  2 user user 4.0K Apr 28 18:20 LICENSES&lt;br /&gt;
-rw-r--r--  1 user user 1.3K Apr 28 18:32 README.md&lt;br /&gt;
-rw-r--r--  1 user user 1.7K Apr 28 18:10 REUSE.toml&lt;br /&gt;
user@eco-libre:~/sandbox/life-line$ &lt;br /&gt;
user@eco-libre:~/sandbox/life-line$ ls -lah LICENSES/&lt;br /&gt;
total 80K&lt;br /&gt;
drwxr-xr-x 2 user user 4.0K Apr 28 18:20 .&lt;br /&gt;
drwxr-xr-x 7 user user 4.0K Apr 28 18:32 ..&lt;br /&gt;
-rw-r--r-- 1 user user  34K Apr 28 18:08 AGPL-3.0-only.txt&lt;br /&gt;
-rw-r--r-- 1 user user  18K Apr 28 18:08 CC-BY-SA-4.0.txt&lt;br /&gt;
-rw-r--r-- 1 user user  14K Apr 28 18:08 CERN-OHL-S-2.0.txt&lt;br /&gt;
user@eco-libre:~/sandbox/life-line$ &lt;br /&gt;
user@eco-libre:~/sandbox/life-line$ cat REUSE.toml &lt;br /&gt;
version = 1&lt;br /&gt;
SPDX-PackageName = &amp;quot;Eco-Libre Life-Line&amp;quot;&lt;br /&gt;
SPDX-PackageSupplier = &amp;quot;https://eco-libre.org/contact&amp;quot;&lt;br /&gt;
SPDX-PackageDownloadLocation = &amp;quot;https://github.com/Eco-Libre/life-line&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[annotations]]&lt;br /&gt;
path = &amp;quot;**&amp;quot;&lt;br /&gt;
precedence = &amp;quot;aggregate&amp;quot;&lt;br /&gt;
SPDX-FileCopyrightText = [&amp;quot;&amp;quot;, &amp;quot;2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&amp;quot;, &amp;quot;2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&amp;quot;]&lt;br /&gt;
SPDX-License-Identifier = &amp;quot;CC-BY-SA-4.0&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[annotations]]&lt;br /&gt;
path = [&amp;quot;**.FCStd&amp;quot;, &amp;quot;**.scad&amp;quot;, &amp;quot;**.fzz&amp;quot;, &amp;quot;**.blend&amp;quot;, &amp;quot;**.kicad_pcb&amp;quot;, &amp;quot;**.sh3d&amp;quot;, &amp;quot;**.vue&amp;quot;, &amp;quot;**.dxf&amp;quot;, &amp;quot;**.dwg&amp;quot;, &amp;quot;**.bim&amp;quot;, &amp;quot;**.skp&amp;quot;, &amp;quot;**.skb&amp;quot;, &amp;quot;**.max&amp;quot;, &amp;quot;**.3ds&amp;quot;, &amp;quot;**.gto&amp;quot;, &amp;quot;**.pod&amp;quot;, &amp;quot;**.brd&amp;quot;, &amp;quot;**.sch&amp;quot;, &amp;quot;**.3dm&amp;quot;, &amp;quot;**.dwb&amp;quot;, &amp;quot;**.slddrw&amp;quot;, &amp;quot;**.sldasm&amp;quot;]&lt;br /&gt;
precedence = &amp;quot;aggregate&amp;quot;&lt;br /&gt;
SPDX-FileCopyrightText = [&amp;quot;&amp;quot;, &amp;quot;2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&amp;quot;, &amp;quot;2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&amp;quot;]&lt;br /&gt;
SPDX-License-Identifier = &amp;quot;CERN-OHL-S-2.0&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[annotations]]&lt;br /&gt;
path = [&amp;quot;**.c&amp;quot;, &amp;quot;**.cpp&amp;quot;, &amp;quot;**.h&amp;quot;, &amp;quot;**.hpp&amp;quot;, &amp;quot;**.cc&amp;quot;, &amp;quot;**.ino&amp;quot;, &amp;quot;**.pde&amp;quot;, &amp;quot;**.make&amp;quot;, &amp;quot;**.automake&amp;quot;, &amp;quot;**.cmake&amp;quot;, &amp;quot;**.java&amp;quot;, &amp;quot;**.javacc&amp;quot;, &amp;quot;**.rust&amp;quot;, &amp;quot;**.d&amp;quot;, &amp;quot;**.j&amp;quot;, &amp;quot;**.r&amp;quot;, &amp;quot;**.sh&amp;quot;, &amp;quot;**.bash&amp;quot;, &amp;quot;**.zsh&amp;quot;, &amp;quot;**.awk&amp;quot;, &amp;quot;**.tcl&amp;quot;, &amp;quot;**.py&amp;quot;, &amp;quot;**.python&amp;quot;, &amp;quot;**.python2&amp;quot;, &amp;quot;**.python3&amp;quot;, &amp;quot;**.FCMacro&amp;quot;, &amp;quot;**.pl&amp;quot;, &amp;quot;**.perl&amp;quot;, &amp;quot;**.kivy&amp;quot;, &amp;quot;**.qix&amp;quot;, &amp;quot;**.dtd&amp;quot;, &amp;quot;**.shp&amp;quot;, &amp;quot;**.shz&amp;quot;, &amp;quot;**.dbf&amp;quot;, &amp;quot;**.shx&amp;quot;, &amp;quot;**.prj&amp;quot;, &amp;quot;**.kml&amp;quot;, &amp;quot;**.php&amp;quot;, &amp;quot;**.js&amp;quot;, &amp;quot;**.javascript&amp;quot;, &amp;quot;**.typescript&amp;quot;, &amp;quot;**.ruby&amp;quot;, &amp;quot;**.eruby&amp;quot;, &amp;quot;**.cuda&amp;quot;, &amp;quot;**.erlang&amp;quot;, &amp;quot;**.lisp&amp;quot;, &amp;quot;**.lua&amp;quot;, &amp;quot;**.haskell&amp;quot;, &amp;quot;**.go&amp;quot;, &amp;quot;**.autohotkey&amp;quot;, &amp;quot;**.basic&amp;quot;, &amp;quot;**.swift&amp;quot;, &amp;quot;**.vb&amp;quot;, &amp;quot;**.asp&amp;quot;]&lt;br /&gt;
precedence = &amp;quot;aggregate&amp;quot;&lt;br /&gt;
SPDX-FileCopyrightText = [&amp;quot;&amp;quot;, &amp;quot;2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&amp;quot;, &amp;quot;2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&amp;quot;]&lt;br /&gt;
SPDX-License-Identifier = &amp;quot;AGPL-3.0-only&amp;quot;&lt;br /&gt;
user@eco-libre:~/sandbox/life-line$ &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# I don&#039;t trust pip, so I did this with the `reuse` from `apt`. Unfortuantly, this old version of reuse says we&#039;re not in compliance with REUSE specification 3.0&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
user@eco-libre:~/sandbox/life-line$ git log | head&lt;br /&gt;
commit fd844016efa29f34b97ea59aa6dc575bf21f8916&lt;br /&gt;
Author: Michael Altfield &amp;lt;michael@michaelaltfield.net&amp;gt;&lt;br /&gt;
Date:   Tue Apr 28 18:32:21 2026 -0500&lt;br /&gt;
&lt;br /&gt;
	updated the README with new license info&lt;br /&gt;
    &lt;br /&gt;
	TODO: see if I can get a CI process to automatically generate a SPDX BOM&lt;br /&gt;
&lt;br /&gt;
commit e4ece950b29294681a435e3239777390e417b274&lt;br /&gt;
Author: Michael Altfield &amp;lt;michael@michaelaltfield.net&amp;gt;&lt;br /&gt;
user@eco-libre:~/sandbox/life-line$ &lt;br /&gt;
user@eco-libre:~/sandbox/life-line$ reuse --version&lt;br /&gt;
reuse 1.1.2&lt;br /&gt;
user@eco-libre:~/sandbox/life-line$ &lt;br /&gt;
user@eco-libre:~/sandbox/life-line$ reuse lint&lt;br /&gt;
# UNUSED LICENSES&lt;br /&gt;
&lt;br /&gt;
The following licenses are not used:&lt;br /&gt;
* AGPL-3.0-only&lt;br /&gt;
* CC-BY-SA-4.0&lt;br /&gt;
* CERN-OHL-S-2.0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# MISSING COPYRIGHT AND LICENSING INFORMATION&lt;br /&gt;
&lt;br /&gt;
The following files have no copyright and licensing information:&lt;br /&gt;
* .github/workflows/docs_pages_workflow.yml&lt;br /&gt;
* .gitignore&lt;br /&gt;
* CHANGELOG&lt;br /&gt;
* KEYS&lt;br /&gt;
* REUSE.toml&lt;br /&gt;
* cad/intake.FCStd&lt;br /&gt;
* docs/.gitignore&lt;br /&gt;
* docs/Makefile&lt;br /&gt;
* docs/_static/custom.css&lt;br /&gt;
* docs/_templates/versions.html&lt;br /&gt;
* docs/attribution.rst&lt;br /&gt;
* docs/build/index.rst&lt;br /&gt;
* docs/build/intake/bom.ods&lt;br /&gt;
* docs/build/intake/bom.rst&lt;br /&gt;
* docs/build/intake/index.rst&lt;br /&gt;
* docs/build/intake/what.rst&lt;br /&gt;
* docs/build/settling-tank/bom.rst&lt;br /&gt;
* docs/build/settling-tank/index.rst&lt;br /&gt;
* docs/build/settling-tank/what.rst&lt;br /&gt;
* docs/buildDocs.sh&lt;br /&gt;
* docs/changelog.rst&lt;br /&gt;
* docs/conf.py&lt;br /&gt;
* docs/conf.py.orig&lt;br /&gt;
* docs/dev/index.rst&lt;br /&gt;
* docs/faq.rst&lt;br /&gt;
* docs/images/eco-libre_logo-2025.08.svg&lt;br /&gt;
* docs/images/eco-libre_text-logo-2025.08.svg&lt;br /&gt;
* docs/images/eco-libre_text-logo-2025.08_500px.png&lt;br /&gt;
* docs/images/life-line_2023.12.jpg&lt;br /&gt;
* docs/images/life-line_2025.10.jpg&lt;br /&gt;
* docs/images/life-line_intake_cleanout-drain.jpg&lt;br /&gt;
* docs/images/life-line_intake_drum.jpg&lt;br /&gt;
* docs/images/life-line_intake_expanded-metal.jpg&lt;br /&gt;
* docs/images/life-line_intake_fine-mesh.jpg&lt;br /&gt;
* docs/images/life-line_intake_outflow.jpg&lt;br /&gt;
* docs/images/life-line_intake_parts.svg&lt;br /&gt;
* docs/images/life-line_intake_turbulence-bar.jpg&lt;br /&gt;
* docs/images/life-line_intake_weir.jpg&lt;br /&gt;
* docs/images/life-line_praxis_boris-plotkin.2024-11.jpg&lt;br /&gt;
* docs/images/life-line_praxis_vegan-beasts_screen.2025-04.jpg&lt;br /&gt;
* docs/images/life-line_praxis_vegan-beasts_weir.2025-04.jpg&lt;br /&gt;
* docs/index.rst&lt;br /&gt;
* docs/introduction/index.rst&lt;br /&gt;
* docs/license.rst&lt;br /&gt;
* docs/locales/es/LC_MESSAGES/autodoc.mo&lt;br /&gt;
* docs/locales/es/LC_MESSAGES/index.mo&lt;br /&gt;
* docs/make.bat&lt;br /&gt;
* docs/praxis/index.rst&lt;br /&gt;
* docs/support.rst&lt;br /&gt;
* docs/theory/index.rst&lt;br /&gt;
&lt;br /&gt;
The following files have no licensing information:&lt;br /&gt;
* README.md&lt;br /&gt;
* docs/locales/es/LC_MESSAGES/autodoc.po&lt;br /&gt;
* docs/locales/es/LC_MESSAGES/index.po&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# SUMMARY&lt;br /&gt;
&lt;br /&gt;
* Bad licenses:&lt;br /&gt;
* Deprecated licenses:&lt;br /&gt;
* Licenses without file extension:&lt;br /&gt;
* Missing licenses:&lt;br /&gt;
* Unused licenses: AGPL-3.0-only, CC-BY-SA-4.0, CERN-OHL-S-2.0&lt;br /&gt;
* Used licenses:&lt;br /&gt;
* Read errors: 0&lt;br /&gt;
* Files with copyright information: 3 / 53&lt;br /&gt;
* Files with license information: 0 / 53&lt;br /&gt;
&lt;br /&gt;
Unfortunately, your project is not compliant with version 3.0 of the REUSE Specification :-(&lt;br /&gt;
user@eco-libre:~/sandbox/life-line$ &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# however, if I checkout the repo to the *exact same* commit on my dispvm (where we&#039;ve installed reuse insecurely from pip), it says that we *are* in compliance with REUSE Specification 3.3&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ git log | head&lt;br /&gt;
commit fd844016efa29f34b97ea59aa6dc575bf21f8916&lt;br /&gt;
Author: Michael Altfield &amp;lt;michael@michaelaltfield.net&amp;gt;&lt;br /&gt;
Date:   Tue Apr 28 18:32:21 2026 -0500&lt;br /&gt;
&lt;br /&gt;
	updated the README with new license info&lt;br /&gt;
    &lt;br /&gt;
	TODO: see if I can get a CI process to automatically generate a SPDX BOM&lt;br /&gt;
&lt;br /&gt;
commit e4ece950b29294681a435e3239777390e417b274&lt;br /&gt;
Author: Michael Altfield &amp;lt;michael@michaelaltfield.net&amp;gt;&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ &lt;br /&gt;
&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ reuse --version&lt;br /&gt;
reuse, version 6.2.0&lt;br /&gt;
&lt;br /&gt;
This program is free software: you can redistribute it and/or modify it under&lt;br /&gt;
the terms of the GNU General Public License as published by the Free Software&lt;br /&gt;
Foundation, either version 3 of the License, or (at your option) any later&lt;br /&gt;
version.&lt;br /&gt;
&lt;br /&gt;
This program is distributed in the hope that it will be useful, but WITHOUT&lt;br /&gt;
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS&lt;br /&gt;
FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.&lt;br /&gt;
&lt;br /&gt;
You should have received a copy of the GNU General Public License along with&lt;br /&gt;
this program. If not, see &amp;lt;https://www.gnu.org/licenses/&amp;gt;.&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ &lt;br /&gt;
&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ reuse lint&lt;br /&gt;
# SUMMARY&lt;br /&gt;
&lt;br /&gt;
* Bad licenses: 0&lt;br /&gt;
* Deprecated licenses: 0&lt;br /&gt;
* Licenses without file extension: 0&lt;br /&gt;
* Missing licenses: 0&lt;br /&gt;
* Unused licenses: 0&lt;br /&gt;
* Used licenses: AGPL-3.0-only, CC-BY-SA-4.0, CERN-OHL-S-2.0&lt;br /&gt;
* Read errors: 0&lt;br /&gt;
* Invalid SPDX License Expressions: 0&lt;br /&gt;
* Files with copyright information: 52 / 52&lt;br /&gt;
* Files with license information: 52 / 52&lt;br /&gt;
&lt;br /&gt;
Congratulations! Your project is compliant with version 3.3 of the REUSE Specification :-)&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# so that means that, if I wanted to build a spdx bom (one file that lists every copyright &amp;amp; license of every file in the repo, by following the REUSE.toml file&#039;s spec) using a CI job on-push, I would have to download some sketch code and then give it permission to modify the repo&#039;s contents. That&#039;s a problem&lt;br /&gt;
## Eco-Libre isn&#039;t a huge security risk, but the first thing that comes to mind is our &amp;quot;donate to us&amp;quot; info in the docs. If someone did a Remote Code Execution (the vuln opened by the fact that pip is vulnerable to a MITM attack when it downloads software because it isn&#039;t cryptographically signed – like with gpg as apt has done for decades), then an attacker could swap any of our docs as they please on-build – including changing our bitcoin address. Or URL to the &amp;quot;donate&amp;quot; page&lt;br /&gt;
## It&#039;s also concieveable that it would tell someone to build something that&#039;s obviously very unsafe. And, for heavy machinerary, that could be very bad.&lt;br /&gt;
## threfore, I guess we&#039;ll just skip this nice-to-have. It should be enough to just link them to the spec and the toml file&lt;br /&gt;
# TODO: apply these license changes to some repo (probably life-line) and then update this thead https://forums.ohwr.org/t/possible-to-triple-license-cern-ohl-s-2-0-agpl-3-0-cc-by-sa-4-0/849882/9&lt;br /&gt;
# TODO: write an article about this on our website, explaining our rationale, how to add it to a repo, and an example (eg life-line but probably create an article-specific repo with some eco-libre internal &amp;amp; also external hardware files plus some content in other licenses)&lt;br /&gt;
&lt;br /&gt;
= 2026-04-26 =&lt;br /&gt;
# I started working on writing a privacy policy for wiki.eco-lbre.org&lt;br /&gt;
# I wrote one years ago for OSE. editing history suggests I finished that in Nov 2018 https://wiki.opensourceecology.org/index.php?title=Media-wiki:Privacy_policy&amp;amp;action=history&lt;br /&gt;
# I largely copied it from the Creative Commons Privacy Policy, and I know Marcin made some (very non-gdpr-compliant) changes to it since then (in 2024)&lt;br /&gt;
# so I did diff of the current privacy policy on CC&#039;s website and OSE&#039;s; they had very little in common! https://creativecommons.org/privacy/&lt;br /&gt;
# it looks like CC updated their Privacy Policy in Dec 2019, so unfortuantly about a year after I did my work with it, they changed it almost completely&lt;br /&gt;
# so I&#039;m just going to start fresh with this, and make changes I think necessary&lt;br /&gt;
# I struggled to find the ToS page. It didn&#039;t appear on the special list of  long pages, and nothign returend for a search of &amp;quot;terms of service&amp;quot; – I guess because it&#039;s in the Eco-Libre namespace? I had to search my logs to find it https://wiki.eco-libre.org/wiki/Eco-Libre:Terms_of_Service&lt;br /&gt;
# I think I should change the link in the bottom-left footer from &amp;quot;Privacy Policy&amp;quot; to &amp;quot;Terms of Service&amp;quot; – since the PP is one of the ToS (and not the other way around)&lt;br /&gt;
## here&#039;s the docs on how to change the links in the footer https://www.mediawiki.org/wiki/Manual:Footer&lt;br /&gt;
## I was able to do this by updating the following two pages (one is the hyperlink text and one is the hyperlink article destination)&lt;br /&gt;
### https://wiki.eco-libre.org/wiki/MediaWiki:Privacypage&lt;br /&gt;
### https://wiki.eco-libre.org/wiki/MediaWiki:Privacy&lt;br /&gt;
# I created the Privacy Policy from the CC one, cleaned up the syntax and did my best to replace all the relevant CC stuff to EL https://wiki.eco-libre.org/wiki/Eco-Libre:Privacy_policy&lt;br /&gt;
# the privacy policy references a CoC (Code of Conduct). Ugh, I guess we need one of those too..&lt;br /&gt;
## I wonder if we can say &amp;quot;you must wash your hands with soap and water&amp;quot; and &amp;quot;you must take b12 if you&#039;re vegan&amp;quot; in the CoC. Or is that *another* agreement?&lt;br /&gt;
## probably we should make some CoC that applies to in-person and remote users *and* a separate agreement with that sort of thing, only for live-in guests (maybe call it a &amp;quot;Housing Agreeemnt&amp;quot; or something)&lt;br /&gt;
## here&#039;s the rules from veganism.social&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
	Rule #1No speciesism, animal abuse, carnists, omnivores, vegetarians, or other non-vegans&lt;br /&gt;
	Rule #2Sexually explicit or violent media must be marked as sensitive when posting&lt;br /&gt;
	Rule #3No racism, sexism, homophobia, transphobia, xenophobia, fatphobia, or casteism&lt;br /&gt;
	Rule #4No incitement of violence or promotion of violent ideologies&lt;br /&gt;
	Rule #5No harassment or doxxing of other users&lt;br /&gt;
	Rule #6Do not share intentionally false or misleading information&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## here&#039;s mastodon.energy&#039;s&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
1. Be Nice&lt;br /&gt;
2. Tell the Truth&lt;br /&gt;
3. Be Ethical&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## here&#039;s chaos.social, which is where we have our mastodon now&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Rules&lt;br /&gt;
&lt;br /&gt;
We expect users on chaos.social to adhere to the following rules:&lt;br /&gt;
&lt;br /&gt;
	No content condoning or advocating for the oppression of members of marginalised groups, or general discrimination of groups based on characteristics like gender, race, disabilities, nationality, education, religion etc.&lt;br /&gt;
	No harassment, stalking, mobbing, deadnaming, misgendering, contacting users who have made it clear they do not wish to be contacted.&lt;br /&gt;
	Obviously: no content that is illegal in Germany, no actions intended to damage this instance (performance, reputation, security).&lt;br /&gt;
	No right or alt-right bullshit, Nazi content, conspiracy narratives.&lt;br /&gt;
	No automated accounts (unless approved by the moderators). This includes bots, crossposters, feedposters etc.&lt;br /&gt;
	When posting to the local timeline, provide Content Warnings for violence, sexually explicit content, death/disease, and politics, particularly when negative or controversial (those are the larger categories, a CW might be something like “uspol, elections”).&lt;br /&gt;
	When posting to the local timeline, provide image descriptions.&lt;br /&gt;
	Provide credit for creative works that are not your own. That includes marking AI generated content clearly as such.&lt;br /&gt;
&lt;br /&gt;
Clarification: You post to the local timeline when you give your post “public” visibility. If you don’t want to follow local timeline rules, you can post with visibility “quiet public” (which used to be called “unlisted”) – posts will still be visible to everybody (your followers and everybody else), they just won’t get shown on the local and federated timelines. Boosts also do not appear on the local timeline.&lt;br /&gt;
&lt;br /&gt;
Note that the instance is also subject to our terms and privacy policy.&lt;br /&gt;
Best practices&lt;br /&gt;
&lt;br /&gt;
We ask users on chaos.social to keep the following guidelines in mind, in order to foster a considerate and accessible atmosphere. Forgetting about them is not as serious as breaking the instance rules, but repeated malicious unwillingness to follow the best practices will be considered just like breaking a rule.&lt;br /&gt;
&lt;br /&gt;
	Use content warnings liberally, especially for topics that are potentially disturbing or controversial, or that make life harder for people struggling with addiction or trauma.&lt;br /&gt;
	Don’t be a reply guy – uninvited comments about another user’s personal choices, lifestyle or family are strongly discouraged and may be considered harassment.&lt;br /&gt;
	In discussions, please remain civil, do not insult the people you’re talking to. Don’t escalate.&lt;br /&gt;
&lt;br /&gt;
Enforcement&lt;br /&gt;
&lt;br /&gt;
Rules are only worth as much as their enforcement, so here is what you can expect from the chaos.social moderators (we will publish our moderation guidelines in the future, but here’s the short version):&lt;br /&gt;
&lt;br /&gt;
Breaking these rules can get you kicked off the instance, though unless you’re behaving in bad faith, we will give you several warnings first. Going against the Best Practices can also get you kicked off the instance, but you have to really persistently act against them (and at that point, why are you on chaos.social?).&lt;br /&gt;
&lt;br /&gt;
Please report behaviour that bothers you. We will keep your report confidential.&lt;br /&gt;
&lt;br /&gt;
We run this instance in our spare time, so we can’t respond instantly. We try to react to all reports within a day, but please allow for delays. You can always contact us us in private if you have concerns about moderation. We will not comment in public about individual moderation cases.&lt;br /&gt;
Ultimately,&lt;br /&gt;
&lt;br /&gt;
we (@leah and @rixx) are maintaining this instance on our spare time, hardware and nerves. Don’t push either of those.&lt;br /&gt;
&lt;br /&gt;
The rules are licensed under CC-BY-SA by chaos.social e.V.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
### and this one explicilty says it&#039;s CC-BY-SA, so that&#039;s cool.&lt;br /&gt;
## I guess we&#039;ll copy chaos.socials&#039; since it&#039;s already copyleft&lt;br /&gt;
## ok, here&#039;s what I came-up with&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
By using this website, you agree to the following Code of Conduct:&lt;br /&gt;
&lt;br /&gt;
# Only submit content for which you have the right to submit it under the terms of our copyleft licensing (it must either be created in whole or in part by you or already licensed under a comparable copyleft)&lt;br /&gt;
# No AI content! This is a violation of rule #1.&lt;br /&gt;
# No content condoning or advocating for the oppression of members of marginalised groups, or general discrimination of groups based on characteristics like species, gender, race, disabilities, nationality, education, religion etc.&lt;br /&gt;
# No harassment, stalking, mobbing, deadnaming, misgendering, contacting users who have made it clear they do not wish to be contacted.&lt;br /&gt;
# No content that is illegal in Germany or Ecuador, no actions intended to damage this instance (performance, reputation, security).&lt;br /&gt;
# No pro-fascist or pro-Nazi content&lt;br /&gt;
# Post Content Warnings for violence, sexually explicit content, death and/or disease&lt;br /&gt;
# Whenever possible, provide image descriptions for visually impaired readers&lt;br /&gt;
# No misinformation or disinformaton&lt;br /&gt;
# Provide attribution (credit) for works that are not your own. This should include a name of the original copyright holder and a link to the source.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# now we have a CLA (Community License Agreement), ToS (Terms of Service), PP (Privacy Policy), and CoC (Code of Conduct)&lt;br /&gt;
## so I think we still have just 2 agreeements missing&lt;br /&gt;
### Public Data Agreement&lt;br /&gt;
### In-House Volunteer Agreement&lt;br /&gt;
# I had previously drafted the Public Data Agreeement as followes&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
1. I understand that Eco-Libre will publish all of my work publicly on their website&lt;br /&gt;
2. I understand that, because my work is licensed openly, I cannot request it to be taken down from the Internet&lt;br /&gt;
3. I understand that I have the right to use an alias, so that all of my work can be attributed to an anonymous profile with no PII (publicly identifiable information).&lt;br /&gt;
4. I understand that, if I wish to use an anonymous identity for my public contributions, then I should not use my real name in this application&lt;br /&gt;
5. I understand that currently my name is set to XXXX, and this is the name that will be publicly listed on Eco-Libre&#039;s website associated with all of my contributions&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## I&#039;m actually not fully sure that&#039;s necessary. The PP from CC had a clause&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Eco-Libre Volunteers.&lt;br /&gt;
&lt;br /&gt;
o In connection with you Eco-Libre Volunteer application, we may provide your information to the individuals you’ve selected to vouch for you, and with those reviewing your application, including the Membership Council whose members include people not employed by Eco-Libre and who are located in various countries around the world.&lt;br /&gt;
&lt;br /&gt;
o If you vouch for someone’s application to the Eco-Libre Volunteer program, your information will be shared with those reviewing the application, including the Membership Council, and if you provide a positive vouching statement, that statement will be shared with the applicant if and when they are admitted for membership.&lt;br /&gt;
&lt;br /&gt;
o Once you are an Eco-Libre Volunteer, we may provide you with a public profile page, pre-populated with certain information you provided in your application such as your name, areas of interest, images or other content you upload, which will be publicly displayed to anyone who visits the site. &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## I added a paragraph&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
o   As an Eco-Libre Volunteer, all of your Contributions will be licensed under a copyleft license, and published publicly.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## well, I guess this satisfies the legal requirements, but I do want to make the pseudonym stuff more clear. But I apparently wrote that to go on the application itself. Currently our application process is non-existant: the user just sends and email, we have a call, and we figure it out. I did just add some docs to sign to that process, but we need a more streamlined process: a form&lt;br /&gt;
## it&#039;s on our TODO list to review some wordpress plugins that we can use for building an application process. eventually *that&#039;s* where this text should be copied, and it should reference things like our official Privacy Policy&lt;br /&gt;
# the other thing was our &amp;quot; In-House Volunteer Agreement&amp;quot; which is *really* premature, as we don&#039;t even have housing yet. Nonetheless, I drafted this&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
1. I am at least 15 years old&lt;br /&gt;
2. I sincerely want live a sustainable lifestyle and work on developing tools to help others live sustainably. I understand that volunteering at Eco-Libre is an active experience, not a cheap vacation. &lt;br /&gt;
3. I am ready to participate in the community and share in the daily routine of my hosts, while respecting their living conditions and boundaries.&lt;br /&gt;
4. I will contribute my time to the community the agreed-upon number of hours per week.&lt;br /&gt;
5. I am willing to adapt to a lifestyle that may be different from mine. I will make known to the community any pertinent health conditions (disabilities, addictions...) beforehand.&lt;br /&gt;
6. I have insurance that will cover me for accidents, illness, and liability during my stay. I am aware that Eco-Libre cannot be held responsible for damages and / or losses linked to my stay.&lt;br /&gt;
7. I will prevent the spread of disease by washing my hands with soap and water after using the toilet and before preparing meals&lt;br /&gt;
8. I will only purchase vegan goods (derived from non-animal sources) during my time at Eco-Libre in accordance with the community values of ecological sustainability.&lt;br /&gt;
9. I will supplement my diet by taking vitamin B12&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# I also think that should be included in the online volunteer application form. And probably physically signed by folks who are going to actually come to Ecudaor. But we&#039;re not there yet...&lt;br /&gt;
# anyway, I think we&#039;ve finally satisifed the requrements of (and finished the configuration of) ConfirmAccount!&lt;br /&gt;
# TODO: finish enabling &amp;amp; configuring wiki extensions: DeleteBatch, SmiteSpam, UserMerge, Widgets&lt;br /&gt;
&lt;br /&gt;
= 2026-04-24 =&lt;br /&gt;
# someone answered my &amp;quot;how do I license kdnelive files&amp;quot; here https://opensource.stackexchange.com/a/15747/30915&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
It sounds like your desired outcome is that copies of your mp4 can only be distributed while also sharing the kdenlive source files. You&#039;re correct that CC ShareAlike terms won&#039;t do this. ShareAlike requires that all downstream works that reuse the work be shareable under the same kind of ShareAlike license, but it doesn&#039;t require redistributors to share the underlying source code.&lt;br /&gt;
&lt;br /&gt;
If you do want to require source to accompany your work, this requirement differs from the desires of many artists who choose a CC license: they want their song or image to be shared around without having to be followed by the underlying sound-editor archive or photo-editor layer file. If that actually is what you want, then the GPL is a sensible choice for such a strong requirement, and it is perfectly applicable to non-software works.&lt;br /&gt;
&lt;br /&gt;
 * https://www.gnu.org/licenses/gpl-faq.html#GPLOtherThanSoftware&lt;br /&gt;
&lt;br /&gt;
If you don&#039;t want to impose this requirement, then I think CC BY-SA is still a reasonable choice for the underlying &amp;quot;source code&amp;quot; of your video. The output mp4 is legally derivative of your kdenlive files, so CC BY-SA will ensure that all mp4 files made from (derivatives of) your kdenlive source must also be freely shareable under CC BY-SA, but will not impose source disclosure. Future derivatives of the source kdenlive files will, similarly, have to remain under CC BY-SA even as others change them (but they can be kept secret even when built into a CC BY-SA mp4).&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# I half-decided we should then license all artwork (images made in gimp or inkscape, videos made in kdenlive) under GPL, so the sources would need to be public&lt;br /&gt;
# then I started thinking, hey, maybe our documentation should also be GPL, since sphinx and reST are like sources for PDFs they produce&lt;br /&gt;
# then I realized what that would actually mean. Say we make a video showing the construction of a launch-nest. Say the sources for that video include a camera that was mounted to a post and recording for 8 hours every day over the period of 3 months. Maybe five of them, for differet angles. Once we finally finish producing the video, I&#039;m going to be super relieved when we can delete that enormous source footage. The kdenlive file itself would be fine to release; it&#039;s small. But would we then be forced to indefinitely save and distribute the source video footage, even if it&#039;s a combined 3 TB of 1,000 video files, for a 1 GB finally-rendered mp4?&lt;br /&gt;
# inkscape is easy; the svg literally *is* the source file&lt;br /&gt;
# gimp is somewhere in-between. I typically hang-onto the source images used to make a feature image (sometimes brands, or screenshots or stock copyleft images of forests or whatever) for some number of months. eventually they get deleted. I would love to upload the gimp files, but those might be broken without the source images. Or they just would be too enormous and break git over time.&lt;br /&gt;
# also, if we can&#039;t do it, we can&#039;t expect downstream to do it. imagine we work with some youtuber and demand that the must forever store and publish the sources in order to do a video with us? I think 99% would turn us down, because they know they can&#039;t do that. It&#039;s too expensive and unrealistic.&lt;br /&gt;
# due to this very real logistical problem, I think we should just keep CC BY-SA on media files. We can go above-and-beyond that license and provide kdenlive and gimp files *sometimes*, but we shouldn&#039;t mandate it by using GPL.&lt;br /&gt;
# and, honestly, if downstream just licenses CC BY-SA, that lets us cut that up and use it in future videos. That&#039;s good enough. And appropriate for the (expensive-to-store) medium.&lt;br /&gt;
# ...&lt;br /&gt;
# revisting the DEB5 system, I found an example on another project that I maintain: buskill https://salsa.debian.org/debian/buskill/-/blob/master/debian/copyright?ref_type=heads&lt;br /&gt;
## so our debian maintainer built this. he put a file &#039;copyright&#039; in the root with this contents&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/&lt;br /&gt;
Source: https://github.com/BusKill/buskill-app&lt;br /&gt;
Upstream-Name: buskill&lt;br /&gt;
Upstream-Contact: Michael Altfield &amp;lt;michael@michaelaltfield.net&amp;gt;&lt;br /&gt;
Files:&lt;br /&gt;
 *&lt;br /&gt;
Copyright:&lt;br /&gt;
 2020-2022 Michael Altfield &amp;lt;michael@michaelaltfield.net&amp;gt;&lt;br /&gt;
 2020-2021 Steven Johnson &amp;lt;steven.j2019@protonmail.com&amp;gt;&lt;br /&gt;
License: GPL-3+&lt;br /&gt;
Files:&lt;br /&gt;
 src/fonts/*&lt;br /&gt;
Copyright:&lt;br /&gt;
 2015 Google&lt;br /&gt;
License: Apache-2.0&lt;br /&gt;
 Licensed under the Apache License, Version 2.0 (the &amp;quot;License&amp;quot;);&lt;br /&gt;
 you may not use this file except in compliance with the License.&lt;br /&gt;
 You may obtain a copy of the License at&lt;br /&gt;
 ․&lt;br /&gt;
	https://www.apache.org/licenses/LICENSE-2.0&lt;br /&gt;
 ․&lt;br /&gt;
 Unless required by applicable law or agreed to in writing, software&lt;br /&gt;
 distributed under the License is distributed on an &amp;quot;AS IS&amp;quot; BASIS,&lt;br /&gt;
 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.&lt;br /&gt;
 See the License for the specific language governing permissions and&lt;br /&gt;
 limitations under the License.&lt;br /&gt;
Comment:&lt;br /&gt;
 On Debian systems, the complete text of the Apache License&lt;br /&gt;
 version 2 can be found in &amp;quot;/usr/share/common-licenses/Apache-2.0&amp;quot;.&lt;br /&gt;
Files:&lt;br /&gt;
 src/packages/garden/navigationdrawer/*&lt;br /&gt;
Copyright:&lt;br /&gt;
 2013 Alexander Taylor&lt;br /&gt;
License: MIT&lt;br /&gt;
Files:&lt;br /&gt;
 src/packages/garden/progressspinner/*&lt;br /&gt;
Copyright:&lt;br /&gt;
 2015 Ryan Pessa &amp;lt;dkived@gmail.com&amp;gt;&lt;br /&gt;
License: MIT&lt;br /&gt;
Files:&lt;br /&gt;
 debian/*&lt;br /&gt;
Copyright:&lt;br /&gt;
 2022-2026 Francois Marier &amp;lt;francois@debian.org&amp;gt;&lt;br /&gt;
License: GPL-3+&lt;br /&gt;
License: GPL-3+&lt;br /&gt;
 This package is free software; you can redistribute it and/or modify&lt;br /&gt;
 it under the terms of the GNU General Public License as published by&lt;br /&gt;
 the Free Software Foundation; either version 3 of the License, or&lt;br /&gt;
 (at your option) any later version.&lt;br /&gt;
 .&lt;br /&gt;
 This package is distributed in the hope that it will be useful,&lt;br /&gt;
 but WITHOUT ANY WARRANTY; without even the implied warranty of&lt;br /&gt;
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the&lt;br /&gt;
 GNU General Public License for more details.&lt;br /&gt;
 .&lt;br /&gt;
 You should have received a copy of the GNU General Public License&lt;br /&gt;
 along with this program. If not, see &amp;lt;https://www.gnu.org/licenses/&amp;gt;&lt;br /&gt;
Comment:&lt;br /&gt;
 On Debian systems, the complete text of the GNU General&lt;br /&gt;
 Public License version 3 can be found in &amp;quot;/usr/share/common-licenses/GPL-3&amp;quot;.&lt;br /&gt;
License: MIT&lt;br /&gt;
 Permission is hereby granted, free of charge, to any person obtaining a copy&lt;br /&gt;
 of this software and associated documentation files (the &amp;quot;Software&amp;quot;), to deal&lt;br /&gt;
&lt;br /&gt;
 in the Software without restriction, including without limitation the rights&lt;br /&gt;
 to use, copy, modify, merge, publish, distribute, sublicense, and/or sell&lt;br /&gt;
 copies of the Software, and to permit persons to whom the Software is&lt;br /&gt;
 furnished to do so, subject to the following conditions:&lt;br /&gt;
 .&lt;br /&gt;
 The above copyright notice and this permission notice shall be included in&lt;br /&gt;
 all copies or substantial portions of the Software.&lt;br /&gt;
 .&lt;br /&gt;
 THE SOFTWARE IS PROVIDED &amp;quot;AS IS&amp;quot;, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR&lt;br /&gt;
 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,&lt;br /&gt;
 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE&lt;br /&gt;
 AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER&lt;br /&gt;
 LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,&lt;br /&gt;
 OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN&lt;br /&gt;
 THE SOFTWARE.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# I spent some time trying to craft a &#039;copyright&#039; file that we could use for Eco-Libre&lt;br /&gt;
## one thing that bothers me is that I have so many &#039;Files&#039; stanzas – one for each programming language. I wish I could do something like&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Files:&lt;br /&gt;
 *.py|*.php|*.c&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## there are no examples where a single file stanza has many file paths, but the text of the standard does say they are whitespace-delimited (not pipe-delimited, like I naturally think)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
4. File syntax&lt;br /&gt;
...&lt;br /&gt;
4.2. Whitespace-separated lists&lt;br /&gt;
&lt;br /&gt;
Field values defined as whitespace-separated lists may be on one line or many. Values in the list are separated by one or more whitespace characters (space, tab, or newline). For example, the Files field contains a whitespace-separated list of filename patterns.&lt;br /&gt;
...&lt;br /&gt;
6.9. Files&lt;br /&gt;
&lt;br /&gt;
Whitespace-separated list: list of patterns indicating files covered by the license and copyright specified in this stanza.&lt;br /&gt;
&lt;br /&gt;
Filename patterns in the Files field are specified using a simplified shell glob syntax. Patterns are separated by whitespace. &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## let&#039;s see if I can find any example package that use this whitespace, so I don&#039;t fuck it up&lt;br /&gt;
## looks like debian has a *ton* of these already available on my system&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
user@disp4360:~$ ls /usr/share/doc/*/copyright | head&lt;br /&gt;
/usr/share/doc/acl/copyright&lt;br /&gt;
/usr/share/doc/adduser/copyright&lt;br /&gt;
/usr/share/doc/adwaita-icon-theme/copyright&lt;br /&gt;
/usr/share/doc/alsa-topology-conf/copyright&lt;br /&gt;
/usr/share/doc/alsa-ucm-conf/copyright&lt;br /&gt;
/usr/share/doc/alsa-utils/copyright&lt;br /&gt;
/usr/share/doc/amd64-microcode/copyright&lt;br /&gt;
/usr/share/doc/anacron/copyright&lt;br /&gt;
/usr/share/doc/ansible/copyright&lt;br /&gt;
/usr/share/doc/ansible-core/copyright&lt;br /&gt;
user@disp4360:~$ &lt;br /&gt;
&lt;br /&gt;
user@disp4360:~$ ls /usr/share/doc/*/copyright | wc -l&lt;br /&gt;
2798&lt;br /&gt;
user@disp4360:~$ &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## the very first one has a great example&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
user@disp4360:~$ cat /usr/share/doc/acl/copyright&lt;br /&gt;
Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/&lt;br /&gt;
&lt;br /&gt;
Files:&lt;br /&gt;
 *&lt;br /&gt;
Copyright:&lt;br /&gt;
 Copyright © 2000-2008 Silicon Graphics, Inc.&lt;br /&gt;
 Copyright © 1999-2001,2007-2009 Andreas Gruenbacher&lt;br /&gt;
License: GPL-2+&lt;br /&gt;
 This program is free software: you can redistribute it and/or modify it&lt;br /&gt;
 under the terms of the GNU General Public License as published by&lt;br /&gt;
 the Free Software Foundation, either version 2 of the License, or&lt;br /&gt;
 (at your option) any later version.&lt;br /&gt;
 .&lt;br /&gt;
 This program is distributed in the hope that it will be useful,&lt;br /&gt;
 but WITHOUT ANY WARRANTY; without even the implied warranty of&lt;br /&gt;
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the&lt;br /&gt;
 GNU General Public License for more details.&lt;br /&gt;
 .&lt;br /&gt;
 You should have received a copy of the GNU General Public License&lt;br /&gt;
 along with this program.  If not, see &amp;lt;https://www.gnu.org/licenses/&amp;gt;.&lt;br /&gt;
Comment:&lt;br /&gt;
 On Debian systems, the full text of the GNU General Public License&lt;br /&gt;
 can be found in &#039;/usr/share/common-licenses/GPL-2&#039;.&lt;br /&gt;
&lt;br /&gt;
Files:&lt;br /&gt;
 exports&lt;br /&gt;
 include/*.h&lt;br /&gt;
 libacl/*.c&lt;br /&gt;
 libacl/*.h&lt;br /&gt;
 libmisc/*.c&lt;br /&gt;
 tools/do_set.*&lt;br /&gt;
 tools/parse.*&lt;br /&gt;
 tools/sequence.c&lt;br /&gt;
 tools/setfacl.c&lt;br /&gt;
 tools/user_group.h&lt;br /&gt;
Copyright:&lt;br /&gt;
 Copyright © 2001-2002 Silicon Graphics, Inc.&lt;br /&gt;
 Copyright © 1999-2003,2007,2009,2011 Andreas Gruenbacher&lt;br /&gt;
License: LGPL-2+&lt;br /&gt;
 This program is free software: you can redistribute it and/or modify it&lt;br /&gt;
 under the terms of the GNU Lesser General Public License as published by&lt;br /&gt;
 the Free Software Foundation, either version 2.1 of the License, or&lt;br /&gt;
 (at your option) any later version.&lt;br /&gt;
 .&lt;br /&gt;
 This program is distributed in the hope that it will be useful,&lt;br /&gt;
 but WITHOUT ANY WARRANTY; without even the implied warranty of&lt;br /&gt;
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the&lt;br /&gt;
 GNU Lesser General Public License for more details.&lt;br /&gt;
 .&lt;br /&gt;
 You should have received a copy of the GNU Lesser General Public License&lt;br /&gt;
 along with this program.  If not, see &amp;lt;https://www.gnu.org/licenses/&amp;gt;.&lt;br /&gt;
Comment:&lt;br /&gt;
 On Debian systems, the full text of the GNU Lesser General Public License&lt;br /&gt;
 can be found in &#039;/usr/share/common-licenses/LGPL-2.1&#039;.&lt;br /&gt;
user@disp4360:~$ &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# I also found an example where the whitespace was a space, not a newline + space&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
user@disp4360:~$ cat /usr/share/doc/apparmor/copyright &lt;br /&gt;
Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/&lt;br /&gt;
Upstream-Name: AppArmor&lt;br /&gt;
Upstream-Contact: apparmor@lists.ubuntu.com&lt;br /&gt;
Source: https://launchpad.net/apparmor&lt;br /&gt;
&lt;br /&gt;
Files: *&lt;br /&gt;
Copyright: 1998-2010 Novell/SuSE/Immunix&lt;br /&gt;
		   2008-2014 Canonical Ltd.&lt;br /&gt;
License: GPL-2+&lt;br /&gt;
&lt;br /&gt;
Files: changehat/pam_apparmor/*&lt;br /&gt;
Copyright: 2006 SUSE Linux Products GmbH, Nuernberg, Germany&lt;br /&gt;
		   2002, 2003, 2004 SuSE GmbH Nuernberg, Germany&lt;br /&gt;
		   2002-2006 Novell/SuSE&lt;br /&gt;
		   2010 Canonical Ltd.&lt;br /&gt;
License: BSD-3-clause or GPL-2+&lt;br /&gt;
&lt;br /&gt;
Files: changehat/mod_apparmor/*&lt;br /&gt;
Copyright: 2004-2006 Novell&lt;br /&gt;
		   2014 Canonical Ltd.&lt;br /&gt;
License: LGPL-2.1+&lt;br /&gt;
&lt;br /&gt;
Files: libraries/libapparmor/* parser/libapparmor_re/*&lt;br /&gt;
Copyright: 1999-2008 Novell&lt;br /&gt;
		   2009-2013 Canonical Ltd.&lt;br /&gt;
License: LGPL-2.1+&lt;br /&gt;
&lt;br /&gt;
Files: profiles/apparmor.d/abstractions/mysql&lt;br /&gt;
Copyright: 2002-2006 Novell/SUSE&lt;br /&gt;
		   2013 Christian Boltz&lt;br /&gt;
License: GPL-2&lt;br /&gt;
&lt;br /&gt;
Files: profiles/apparmor.d/usr.sbin.dnsmasq&lt;br /&gt;
Copyright: 2009 John Dong &amp;lt;jdong@ubuntu.com&amp;gt;&lt;br /&gt;
		   2010 Canonical Ltd.&lt;br /&gt;
License: GPL-2&lt;br /&gt;
&lt;br /&gt;
Files: profiles/apparmor.d/sbin.syslog-ng&lt;br /&gt;
Copyright: 2006-2009 Novell/SUSE&lt;br /&gt;
		   2006 Christian Boltz&lt;br /&gt;
		   2010 Canonical Ltd.&lt;br /&gt;
License: GPL-2&lt;br /&gt;
&lt;br /&gt;
Files: profiles/apparmor.d/usr.lib.dovecot.*&lt;br /&gt;
Copyright: 2013 Christian Boltz&lt;br /&gt;
License: GPL-2&lt;br /&gt;
&lt;br /&gt;
Files: profiles/apparmor.d/usr.lib.dovecot.auth&lt;br /&gt;
Copyright: 2013 Christian Boltz&lt;br /&gt;
		   2014 Christian Wittmer&lt;br /&gt;
License: GPL-2&lt;br /&gt;
&lt;br /&gt;
Files: profiles/apparmor.d/usr.lib.dovecot.deliver&lt;br /&gt;
Copyright: 2009 Dulmandakh Sukhbaatar &amp;lt;dulmandakh@gmail.com&amp;gt;&lt;br /&gt;
		   2009-2014 Canonical Ltd.&lt;br /&gt;
		   2011-2013 Christian Boltz&lt;br /&gt;
License: GPL-2&lt;br /&gt;
&lt;br /&gt;
Files: profiles/apparmor.d/usr.lib.dovecot.dovecot-auth&lt;br /&gt;
Copyright: 2009-2013 Canonical Ltd.&lt;br /&gt;
		   2013 Christian Boltz&lt;br /&gt;
License: GPL-2&lt;br /&gt;
&lt;br /&gt;
Files: profiles/apparmor.d/usr.lib.dovecot.imap profiles/apparmor.d/usr.lib.dovecot.pop3&lt;br /&gt;
Copyright: 2009-2010 Canonical Ltd.&lt;br /&gt;
		   2011-2013 Christian Boltz&lt;br /&gt;
License: GPL-2&lt;br /&gt;
&lt;br /&gt;
Files: profiles/apparmor.d/usr.lib.dovecot.imap-login profiles/apparmor.d/usr.lib.dovecot.pop3-login&lt;br /&gt;
Copyright: 2009-2011 Canonical Ltd.&lt;br /&gt;
		   2013 Christian Boltz&lt;br /&gt;
License: GPL-2&lt;br /&gt;
&lt;br /&gt;
Files: profiles/apparmor.d/usr.lib.dovecot.managesieve&lt;br /&gt;
Copyright: 2013 Christian Boltz&lt;br /&gt;
		   2014 Christian Wittmer&lt;br /&gt;
License: GPL-2&lt;br /&gt;
&lt;br /&gt;
Files: profiles/apparmor.d/usr.lib.dovecot.managesieve-login&lt;br /&gt;
Copyright: 2009 Dulmandakh Sukhbaatar &amp;lt;dulmandakh@gmail.com&amp;gt;&lt;br /&gt;
		   2009-2011 Canonical Ltd.&lt;br /&gt;
		   2013 Christian Boltz&lt;br /&gt;
		   2014 Christian Wittmer&lt;br /&gt;
License: GPL-2&lt;br /&gt;
&lt;br /&gt;
Files: profiles/apparmor/profiles/extras/usr.bin.mlmmj-make-ml.sh&lt;br /&gt;
Copyright: 2002-2005 Novell/SUSE&lt;br /&gt;
License: GPL-2&lt;br /&gt;
&lt;br /&gt;
Files: profiles/apparmor/profiles/extras/usr.bin.passwd&lt;br /&gt;
Copyright: 2006 Volker Kuhlmann&lt;br /&gt;
License: GPL-2&lt;br /&gt;
&lt;br /&gt;
Files: debian/*&lt;br /&gt;
Copyright: 2007-2011 Canonical Ltd.&lt;br /&gt;
		   2014-2022 intrigeri&lt;br /&gt;
License: GPL-2&lt;br /&gt;
&lt;br /&gt;
License: BSD-3-clause&lt;br /&gt;
 Redistribution and use in source and binary forms, with or without&lt;br /&gt;
 modification, are permitted provided that the following conditions&lt;br /&gt;
 are met:&lt;br /&gt;
 .&lt;br /&gt;
 1. Redistributions of source code must retain any existing copyright&lt;br /&gt;
	notice, and this entire permission notice in its entirety,&lt;br /&gt;
	including the disclaimer of warranties.&lt;br /&gt;
 .&lt;br /&gt;
 2. Redistributions in binary form must reproduce all prior and current&lt;br /&gt;
	copyright notices, this list of conditions, and the following&lt;br /&gt;
	disclaimer in the documentation and/or other materials provided&lt;br /&gt;
	with the distribution.&lt;br /&gt;
 .&lt;br /&gt;
 3. The name of any author may not be used to endorse or promote&lt;br /&gt;
	products derived from this software without their specific prior&lt;br /&gt;
	written permission.&lt;br /&gt;
&lt;br /&gt;
License: GPL-2&lt;br /&gt;
 This program is free software; you can redistribute it and/or modify&lt;br /&gt;
 it under the terms of the GNU General Public License as published by&lt;br /&gt;
 the Free Software Foundation; version 2 of the License.&lt;br /&gt;
 .&lt;br /&gt;
 This program is distributed in the hope that it will be useful,&lt;br /&gt;
 but WITHOUT ANY WARRANTY; without even the implied warranty of&lt;br /&gt;
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the&lt;br /&gt;
 GNU General Public License for more details.&lt;br /&gt;
 .&lt;br /&gt;
 You should have received a copy of the GNU General Public License along&lt;br /&gt;
 with this program; if not, write to the Free Software Foundation, Inc.,&lt;br /&gt;
 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.&lt;br /&gt;
 .&lt;br /&gt;
 On Debian systems, the complete text of the GNU General&lt;br /&gt;
 Public License can be found in `/usr/share/common-licenses/GPL-2&#039;.&lt;br /&gt;
&lt;br /&gt;
License: GPL-2+&lt;br /&gt;
 This program is free software; you can redistribute it and/or modify&lt;br /&gt;
 it under the terms of the GNU General Public License as published by&lt;br /&gt;
 the Free Software Foundation; either version 2 of the License, or&lt;br /&gt;
 (at your option) any later version.&lt;br /&gt;
 .&lt;br /&gt;
 This program is distributed in the hope that it will be useful,&lt;br /&gt;
 but WITHOUT ANY WARRANTY; without even the implied warranty of&lt;br /&gt;
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the&lt;br /&gt;
 GNU General Public License for more details.&lt;br /&gt;
 .&lt;br /&gt;
 You should have received a copy of the GNU General Public License along&lt;br /&gt;
 with this program; if not, write to the Free Software Foundation, Inc.,&lt;br /&gt;
 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.&lt;br /&gt;
 .&lt;br /&gt;
 On Debian systems, the complete text of the GNU General&lt;br /&gt;
 Public License can be found in `/usr/share/common-licenses/GPL-2&#039;.&lt;br /&gt;
&lt;br /&gt;
License: LGPL-2.1+&lt;br /&gt;
 This library is free software; you can redistribute it and/or&lt;br /&gt;
 modify it under the terms of the GNU Lesser General Public&lt;br /&gt;
 License as published by the Free Software Foundation; either&lt;br /&gt;
 version 2.1 of the License, or (at your option) any later version.&lt;br /&gt;
 .&lt;br /&gt;
 This library is distributed in the hope that it will be useful,&lt;br /&gt;
 but WITHOUT ANY WARRANTY; without even the implied warranty of&lt;br /&gt;
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU&lt;br /&gt;
 Lesser General Public License for more details.&lt;br /&gt;
 .&lt;br /&gt;
 You should have received a copy of the GNU Lesser General Public&lt;br /&gt;
 License along with this library; if not, write to the Free Software&lt;br /&gt;
 Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA&lt;br /&gt;
 .&lt;br /&gt;
 On Debian systems, the complete text of the GNU General&lt;br /&gt;
 Public License can be found in `/usr/share/common-licenses/LGPL-2.1&#039;.&lt;br /&gt;
user@disp4360:~$ &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
## so we already have a &amp;quot;short version&amp;quot; of the license for GPL and CERN. For example&lt;br /&gt;
### GPL&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 This package is free software; you can redistribute it and/or modify&lt;br /&gt;
 it under the terms of the GNU General Public License as published by&lt;br /&gt;
 the Free Software Foundation; either version 3 of the License, or&lt;br /&gt;
 (at your option) any later version.&lt;br /&gt;
 .&lt;br /&gt;
 This package is distributed in the hope that it will be useful,&lt;br /&gt;
 but WITHOUT ANY WARRANTY; without even the implied warranty of&lt;br /&gt;
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the&lt;br /&gt;
 GNU General Public License for more details.&lt;br /&gt;
 .&lt;br /&gt;
 You should have received a copy of the GNU General Public License&lt;br /&gt;
 along with this program. If not, see &amp;lt;https://www.gnu.org/licenses/&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
### CERN&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
You may redistribute and modify this source and make products using it under the terms of the CERN-OHL-S v2 (https://ohwr.org/cern_ohl_s_v2.txt).&lt;br /&gt;
&lt;br /&gt;
This source is distributed WITHOUT ANY EXPRESS OR IMPLIED WARRANTY, INCLUDING OF MERCHANTABILITY, SATISFACTORY QUALITY AND FITNESS FOR A PARTICULAR PURPOSE. Please see the CERN-OHL-S v2 for applicable conditions.&lt;br /&gt;
&lt;br /&gt;
Source location: foundationdevices.com/passport-electronics&lt;br /&gt;
&lt;br /&gt;
As per CERN-OHL-S v2 section 4, should You produce hardware based on this source, You must where practicable and applicable maintain the Source Location visible (1) on the packaging of the hardware, (2) on the circuit board(s) via silkscreen or copper, (3) in any documentation, and (4) on other products you make using this source.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## I was hoping for some sort of equivalent in CC-BY-SA-4.0, but all of these (which were the only ones I found with BY-SA-4.0) had the full text of the license&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
user@disp4360:/usr/share/doc$ grep -irl BY-SA-4.0 /usr/share/doc/*/copyright&lt;br /&gt;
/usr/share/doc/adwaita-icon-theme/copyright&lt;br /&gt;
/usr/share/doc/containerd/copyright&lt;br /&gt;
/usr/share/doc/gimp/copyright&lt;br /&gt;
/usr/share/doc/gimp-data/copyright&lt;br /&gt;
/usr/share/doc/gir1.2-gtk-3.0/copyright&lt;br /&gt;
/usr/share/doc/gtk-update-icon-cache/copyright&lt;br /&gt;
/usr/share/doc/libadwaita-1-0/copyright&lt;br /&gt;
/usr/share/doc/libgimp2.0/copyright&lt;br /&gt;
/usr/share/doc/libgtk-3-0/copyright&lt;br /&gt;
/usr/share/doc/libgtk-3-bin/copyright&lt;br /&gt;
/usr/share/doc/libgtk-3-common/copyright&lt;br /&gt;
/usr/share/doc/libmd4c0/copyright&lt;br /&gt;
/usr/share/doc/libnftables1/copyright&lt;br /&gt;
/usr/share/doc/libwildmidi2/copyright&lt;br /&gt;
/usr/share/doc/mythes-en-us/copyright&lt;br /&gt;
/usr/share/doc/nftables/copyright&lt;br /&gt;
/usr/share/doc/syncthing/copyright&lt;br /&gt;
user@disp4360:/usr/share/doc$ &lt;br /&gt;
user@disp4360:/usr/share/doc$ cat /usr/share/doc/libadwaita-1-0/copyright&lt;br /&gt;
Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/&lt;br /&gt;
Upstream-Name: libadwaita&lt;br /&gt;
Source: https://gitlab.gnome.org/GNOME/libadwaita&lt;br /&gt;
Files-Excluded: doc/libadwaita-1&lt;br /&gt;
Comment: Let&#039;s build the docs from source&lt;br /&gt;
&lt;br /&gt;
Files: *&lt;br /&gt;
Copyright: 2019, Alexander Mikhaylenko &amp;lt;exalm7659@gmail.com&amp;gt;&lt;br /&gt;
  2018, 2019, Zander Brown &amp;lt;zbrown@gnome.org&amp;gt;&lt;br /&gt;
  2017-2021, Purism SPC&lt;br /&gt;
  2016, Endless Mobile Inc.&lt;br /&gt;
  2013, 2019, Red Hat, Inc.&lt;br /&gt;
  1995-1997, Peter Mattis, Spencer Kimball and Josh MacDonald&lt;br /&gt;
  2021, GNOME Foundation&lt;br /&gt;
  2021, Manuel Genovés&lt;br /&gt;
  2021, Nahuel Gomez Castro&lt;br /&gt;
  2021, Maximiliano Sandoval&lt;br /&gt;
  2011, Intel Corporation&lt;br /&gt;
License: LGPL-2.1+&lt;br /&gt;
&lt;br /&gt;
Files: debian/*&lt;br /&gt;
Copyright: 2021, Guido Günther &amp;lt;agx@sigxcpu.org&amp;gt;&lt;br /&gt;
License: GPL-3+&lt;br /&gt;
&lt;br /&gt;
Files:&lt;br /&gt;
 doc/libadwaita-1/*.html&lt;br /&gt;
 doc/libadwaita-1/main.js&lt;br /&gt;
Copyright:&lt;br /&gt;
 2021, GNOME Foundation&lt;br /&gt;
License: Apache-2.0 or GPL-3+&lt;br /&gt;
&lt;br /&gt;
Files:&lt;br /&gt;
 demo/data/org.gnome.Adwaita1.Demo.metainfo.xml.in.in&lt;br /&gt;
Copyright: none&lt;br /&gt;
License: CC0-1.0&lt;br /&gt;
&lt;br /&gt;
Files:&lt;br /&gt;
 demo/data/org.gnome.Adwaita1.Demo.Source.svg&lt;br /&gt;
Copyright:&lt;br /&gt;
 GNOME Design Team&lt;br /&gt;
License: CC-BY-SA-4.0&lt;br /&gt;
&lt;br /&gt;
License: Apache-2.0&lt;br /&gt;
 SPDX license identifier Apache-2.0.&lt;br /&gt;
 .&lt;br /&gt;
 Licensed under the Apache License, Version 2.0 (the &amp;quot;License&amp;quot;);&lt;br /&gt;
 you may not use this file except in compliance with the License.&lt;br /&gt;
 You may obtain a copy of the License at&lt;br /&gt;
 .&lt;br /&gt;
	  http://www.apache.org/licenses/LICENSE-2.0&lt;br /&gt;
 .&lt;br /&gt;
 Unless required by applicable law or agreed to in writing, software&lt;br /&gt;
 distributed under the License is distributed on an &amp;quot;AS IS&amp;quot; BASIS,&lt;br /&gt;
 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.&lt;br /&gt;
 See the License for the specific language governing permissions and&lt;br /&gt;
 limitations under the License.&lt;br /&gt;
 .&lt;br /&gt;
 On Debian systems, a copy of the Apache License version 2.0&lt;br /&gt;
 can be found in /usr/share/common-licenses/Apache-2.0.&lt;br /&gt;
&lt;br /&gt;
License: CC0-1.0&lt;br /&gt;
 SPDX license identifier CC0-1.0.&lt;br /&gt;
 .&lt;br /&gt;
 On Debian systems, a copy of the Creative Commons Zero license, version 1.0&lt;br /&gt;
 can be found in /usr/share/common-licenses/CC0-1.0.&lt;br /&gt;
&lt;br /&gt;
License: CC-BY-SA-4.0&lt;br /&gt;
 http://creativecommons.org/licenses/by-sa/4.0/&lt;br /&gt;
 .&lt;br /&gt;
 Attribution-ShareAlike 4.0 International&lt;br /&gt;
 .&lt;br /&gt;
 =======================================================================&lt;br /&gt;
 .&lt;br /&gt;
 Creative Commons Corporation (&amp;quot;Creative Commons&amp;quot;) is not a law firm and&lt;br /&gt;
 does not provide legal services or legal advice. Distribution of&lt;br /&gt;
 Creative Commons public licenses does not create a lawyer-client or&lt;br /&gt;
 other relationship. Creative Commons makes its licenses and related&lt;br /&gt;
 information available on an &amp;quot;as-is&amp;quot; basis. Creative Commons gives no&lt;br /&gt;
 warranties regarding its licenses, any material licensed under their&lt;br /&gt;
 terms and conditions, or any related information. Creative Commons&lt;br /&gt;
 disclaims all liability for damages resulting from their use to the&lt;br /&gt;
 fullest extent possible.&lt;br /&gt;
 .&lt;br /&gt;
 Using Creative Commons Public Licenses&lt;br /&gt;
 .&lt;br /&gt;
 Creative Commons public licenses provide a standard set of terms and&lt;br /&gt;
 conditions that creators and other rights holders may use to share&lt;br /&gt;
 original works of authorship and other material subject to copyright&lt;br /&gt;
 and certain other rights specified in the public license below. The&lt;br /&gt;
 following considerations are for informational purposes only, are not&lt;br /&gt;
 exhaustive, and do not form part of our licenses.&lt;br /&gt;
 .&lt;br /&gt;
	  Considerations for licensors: Our public licenses are&lt;br /&gt;
	  intended for use by those authorized to give the public&lt;br /&gt;
	  permission to use material in ways otherwise restricted by&lt;br /&gt;
	  copyright and certain other rights. Our licenses are&lt;br /&gt;
	  irrevocable. Licensors should read and understand the terms&lt;br /&gt;
	  and conditions of the license they choose before applying it.&lt;br /&gt;
	  Licensors should also secure all rights necessary before&lt;br /&gt;
	  applying our licenses so that the public can reuse the&lt;br /&gt;
	  material as expected. Licensors should clearly mark any&lt;br /&gt;
	  material not subject to the license. This includes other CC-&lt;br /&gt;
	  licensed material, or material used under an exception or&lt;br /&gt;
	  limitation to copyright. More considerations for licensors:&lt;br /&gt;
	  wiki.creativecommons.org/Considerations_for_licensors&lt;br /&gt;
 .&lt;br /&gt;
	  Considerations for the public: By using one of our public&lt;br /&gt;
	  licenses, a licensor grants the public permission to use the&lt;br /&gt;
	  licensed material under specified terms and conditions. If&lt;br /&gt;
	  the licensor&#039;s permission is not necessary for any reason--for&lt;br /&gt;
	  example, because of any applicable exception or limitation to&lt;br /&gt;
	  copyright--then that use is not regulated by the license. Our&lt;br /&gt;
	  licenses grant only permissions under copyright and certain&lt;br /&gt;
	  other rights that a licensor has authority to grant. Use of&lt;br /&gt;
	  the licensed material may still be restricted for other&lt;br /&gt;
	  reasons, including because others have copyright or other&lt;br /&gt;
	  rights in the material. A licensor may make special requests,&lt;br /&gt;
	  such as asking that all changes be marked or described.&lt;br /&gt;
	  Although not required by our licenses, you are encouraged to&lt;br /&gt;
	  respect those requests where reasonable. More_considerations&lt;br /&gt;
	  for the public:&lt;br /&gt;
	  wiki.creativecommons.org/Considerations_for_licensees&lt;br /&gt;
 .&lt;br /&gt;
 =======================================================================&lt;br /&gt;
 .&lt;br /&gt;
 Creative Commons Attribution-ShareAlike 4.0 International Public&lt;br /&gt;
 License&lt;br /&gt;
 .&lt;br /&gt;
 By exercising the Licensed Rights (defined below), You accept and agree&lt;br /&gt;
 to be bound by the terms and conditions of this Creative Commons&lt;br /&gt;
 Attribution-ShareAlike 4.0 International Public License (&amp;quot;Public&lt;br /&gt;
 License&amp;quot;). To the extent this Public License may be interpreted as a&lt;br /&gt;
 contract, You are granted the Licensed Rights in consideration of Your&lt;br /&gt;
 acceptance of these terms and conditions, and the Licensor grants You&lt;br /&gt;
 such rights in consideration of benefits the Licensor receives from&lt;br /&gt;
 making the Licensed Material available under these terms and&lt;br /&gt;
 conditions.&lt;br /&gt;
 .&lt;br /&gt;
 .&lt;br /&gt;
 Section 1 -- Definitions.&lt;br /&gt;
 .&lt;br /&gt;
   a. Adapted Material means material subject to Copyright and Similar&lt;br /&gt;
	  Rights that is derived from or based upon the Licensed Material&lt;br /&gt;
	  and in which the Licensed Material is translated, altered,&lt;br /&gt;
	  arranged, transformed, or otherwise modified in a manner requiring&lt;br /&gt;
	  permission under the Copyright and Similar Rights held by the&lt;br /&gt;
	  Licensor. For purposes of this Public License, where the Licensed&lt;br /&gt;
	  Material is a musical work, performance, or sound recording,&lt;br /&gt;
	  Adapted Material is always produced where the Licensed Material is&lt;br /&gt;
	  synched in timed relation with a moving image.&lt;br /&gt;
 .&lt;br /&gt;
   b. Adapter&#039;s License means the license You apply to Your Copyright&lt;br /&gt;
	  and Similar Rights in Your contributions to Adapted Material in&lt;br /&gt;
	  accordance with the terms and conditions of this Public License.&lt;br /&gt;
 .&lt;br /&gt;
   c. BY-SA Compatible License means a license listed at&lt;br /&gt;
	  creativecommons.org/compatiblelicenses, approved by Creative&lt;br /&gt;
	  Commons as essentially the equivalent of this Public License.&lt;br /&gt;
 .&lt;br /&gt;
   d. Copyright and Similar Rights means copyright and/or similar rights&lt;br /&gt;
	  closely related to copyright including, without limitation,&lt;br /&gt;
	  performance, broadcast, sound recording, and Sui Generis Database&lt;br /&gt;
	  Rights, without regard to how the rights are labeled or&lt;br /&gt;
	  categorized. For purposes of this Public License, the rights&lt;br /&gt;
	  specified in Section 2(b)(1)-(2) are not Copyright and Similar&lt;br /&gt;
	  Rights.&lt;br /&gt;
 .&lt;br /&gt;
   e. Effective Technological Measures means those measures that, in the&lt;br /&gt;
	  absence of proper authority, may not be circumvented under laws&lt;br /&gt;
	  fulfilling obligations under Article 11 of the WIPO Copyright&lt;br /&gt;
	  Treaty adopted on December 20, 1996, and/or similar international&lt;br /&gt;
	  agreements.&lt;br /&gt;
 .&lt;br /&gt;
   f. Exceptions and Limitations means fair use, fair dealing, and/or&lt;br /&gt;
	  any other exception or limitation to Copyright and Similar Rights&lt;br /&gt;
	  that applies to Your use of the Licensed Material.&lt;br /&gt;
 .&lt;br /&gt;
   g. License Elements means the license attributes listed in the name&lt;br /&gt;
	  of a Creative Commons Public License. The License Elements of this&lt;br /&gt;
	  Public License are Attribution and ShareAlike.&lt;br /&gt;
 .&lt;br /&gt;
   h. Licensed Material means the artistic or literary work, database,&lt;br /&gt;
	  or other material to which the Licensor applied this Public&lt;br /&gt;
	  License.&lt;br /&gt;
 .&lt;br /&gt;
   i. Licensed Rights means the rights granted to You subject to the&lt;br /&gt;
	  terms and conditions of this Public License, which are limited to&lt;br /&gt;
	  all Copyright and Similar Rights that apply to Your use of the&lt;br /&gt;
	  Licensed Material and that the Licensor has authority to license.&lt;br /&gt;
 .&lt;br /&gt;
   j. Licensor means the individual(s) or entity(ies) granting rights&lt;br /&gt;
	  under this Public License.&lt;br /&gt;
 .&lt;br /&gt;
   k. Share means to provide material to the public by any means or&lt;br /&gt;
	  process that requires permission under the Licensed Rights, such&lt;br /&gt;
	  as reproduction, public display, public performance, distribution,&lt;br /&gt;
	  dissemination, communication, or importation, and to make material&lt;br /&gt;
	  available to the public including in ways that members of the&lt;br /&gt;
	  public may access the material from a place and at a time&lt;br /&gt;
	  individually chosen by them.&lt;br /&gt;
 .&lt;br /&gt;
   l. Sui Generis Database Rights means rights other than copyright&lt;br /&gt;
	  resulting from Directive 96/9/EC of the European Parliament and of&lt;br /&gt;
	  the Council of 11 March 1996 on the legal protection of databases,&lt;br /&gt;
	  as amended and/or succeeded, as well as other essentially&lt;br /&gt;
	  equivalent rights anywhere in the world.&lt;br /&gt;
 .&lt;br /&gt;
   m. You means the individual or entity exercising the Licensed Rights&lt;br /&gt;
	  under this Public License. Your has a corresponding meaning.&lt;br /&gt;
 .&lt;br /&gt;
 .&lt;br /&gt;
 Section 2 -- Scope.&lt;br /&gt;
 .&lt;br /&gt;
   a. License grant.&lt;br /&gt;
 .&lt;br /&gt;
		1. Subject to the terms and conditions of this Public License,&lt;br /&gt;
		   the Licensor hereby grants You a worldwide, royalty-free,&lt;br /&gt;
		   non-sublicensable, non-exclusive, irrevocable license to&lt;br /&gt;
		   exercise the Licensed Rights in the Licensed Material to:&lt;br /&gt;
 .&lt;br /&gt;
			 a. reproduce and Share the Licensed Material, in whole or&lt;br /&gt;
				in part; and&lt;br /&gt;
 .&lt;br /&gt;
			 b. produce, reproduce, and Share Adapted Material.&lt;br /&gt;
 .&lt;br /&gt;
		2. Exceptions and Limitations. For the avoidance of doubt, where&lt;br /&gt;
		   Exceptions and Limitations apply to Your use, this Public&lt;br /&gt;
		   License does not apply, and You do not need to comply with&lt;br /&gt;
		   its terms and conditions.&lt;br /&gt;
 .&lt;br /&gt;
		3. Term. The term of this Public License is specified in Section&lt;br /&gt;
		   6(a).&lt;br /&gt;
 .&lt;br /&gt;
		4. Media and formats; technical modifications allowed. The&lt;br /&gt;
		   Licensor authorizes You to exercise the Licensed Rights in&lt;br /&gt;
		   all media and formats whether now known or hereafter created,&lt;br /&gt;
		   and to make technical modifications necessary to do so. The&lt;br /&gt;
		   Licensor waives and/or agrees not to assert any right or&lt;br /&gt;
		   authority to forbid You from making technical modifications&lt;br /&gt;
		   necessary to exercise the Licensed Rights, including&lt;br /&gt;
		   technical modifications necessary to circumvent Effective&lt;br /&gt;
		   Technological Measures. For purposes of this Public License,&lt;br /&gt;
		   simply making modifications authorized by this Section 2(a)&lt;br /&gt;
		   (4) never produces Adapted Material.&lt;br /&gt;
 .&lt;br /&gt;
		5. Downstream recipients.&lt;br /&gt;
 .&lt;br /&gt;
			 a. Offer from the Licensor -- Licensed Material. Every&lt;br /&gt;
				recipient of the Licensed Material automatically&lt;br /&gt;
				receives an offer from the Licensor to exercise the&lt;br /&gt;
				Licensed Rights under the terms and conditions of this&lt;br /&gt;
				Public License.&lt;br /&gt;
 .&lt;br /&gt;
			 b. Additional offer from the Licensor -- Adapted Material.&lt;br /&gt;
				Every recipient of Adapted Material from You&lt;br /&gt;
				automatically receives an offer from the Licensor to&lt;br /&gt;
				exercise the Licensed Rights in the Adapted Material&lt;br /&gt;
				under the conditions of the Adapter&#039;s License You apply.&lt;br /&gt;
 .&lt;br /&gt;
			 c. No downstream restrictions. You may not offer or impose&lt;br /&gt;
				any additional or different terms or conditions on, or&lt;br /&gt;
				apply any Effective Technological Measures to, the&lt;br /&gt;
				Licensed Material if doing so restricts exercise of the&lt;br /&gt;
				Licensed Rights by any recipient of the Licensed&lt;br /&gt;
				Material.&lt;br /&gt;
 .&lt;br /&gt;
		6. No endorsement. Nothing in this Public License constitutes or&lt;br /&gt;
		   may be construed as permission to assert or imply that You&lt;br /&gt;
		   are, or that Your use of the Licensed Material is, connected&lt;br /&gt;
		   with, or sponsored, endorsed, or granted official status by,&lt;br /&gt;
		   the Licensor or others designated to receive attribution as&lt;br /&gt;
		   provided in Section 3(a)(1)(A)(i).&lt;br /&gt;
 .&lt;br /&gt;
   b. Other rights.&lt;br /&gt;
 .&lt;br /&gt;
		1. Moral rights, such as the right of integrity, are not&lt;br /&gt;
		   licensed under this Public License, nor are publicity,&lt;br /&gt;
		   privacy, and/or other similar personality rights; however, to&lt;br /&gt;
		   the extent possible, the Licensor waives and/or agrees not to&lt;br /&gt;
		   assert any such rights held by the Licensor to the limited&lt;br /&gt;
		   extent necessary to allow You to exercise the Licensed&lt;br /&gt;
		   Rights, but not otherwise.&lt;br /&gt;
 .&lt;br /&gt;
		2. Patent and trademark rights are not licensed under this&lt;br /&gt;
		   Public License.&lt;br /&gt;
 .&lt;br /&gt;
		3. To the extent possible, the Licensor waives any right to&lt;br /&gt;
		   collect royalties from You for the exercise of the Licensed&lt;br /&gt;
		   Rights, whether directly or through a collecting society&lt;br /&gt;
		   under any voluntary or waivable statutory or compulsory&lt;br /&gt;
		   licensing scheme. In all other cases the Licensor expressly&lt;br /&gt;
		   reserves any right to collect such royalties.&lt;br /&gt;
 .&lt;br /&gt;
 .&lt;br /&gt;
 Section 3 -- License Conditions.&lt;br /&gt;
 .&lt;br /&gt;
 Your exercise of the Licensed Rights is expressly made subject to the&lt;br /&gt;
 following conditions.&lt;br /&gt;
 .&lt;br /&gt;
   a. Attribution.&lt;br /&gt;
 .&lt;br /&gt;
		1. If You Share the Licensed Material (including in modified&lt;br /&gt;
		   form), You must:&lt;br /&gt;
 .&lt;br /&gt;
			 a. retain the following if it is supplied by the Licensor&lt;br /&gt;
				with the Licensed Material:&lt;br /&gt;
 .&lt;br /&gt;
				  i. identification of the creator(s) of the Licensed&lt;br /&gt;
					 Material and any others designated to receive&lt;br /&gt;
					 attribution, in any reasonable manner requested by&lt;br /&gt;
					 the Licensor (including by pseudonym if&lt;br /&gt;
					 designated);&lt;br /&gt;
 .&lt;br /&gt;
				 ii. a copyright notice;&lt;br /&gt;
 .&lt;br /&gt;
				iii. a notice that refers to this Public License;&lt;br /&gt;
 .&lt;br /&gt;
				 iv. a notice that refers to the disclaimer of&lt;br /&gt;
					 warranties;&lt;br /&gt;
 .&lt;br /&gt;
				  v. a URI or hyperlink to the Licensed Material to the&lt;br /&gt;
					 extent reasonably practicable;&lt;br /&gt;
 .&lt;br /&gt;
			 b. indicate if You modified the Licensed Material and&lt;br /&gt;
				retain an indication of any previous modifications; and&lt;br /&gt;
 .&lt;br /&gt;
			 c. indicate the Licensed Material is licensed under this&lt;br /&gt;
				Public License, and include the text of, or the URI or&lt;br /&gt;
				hyperlink to, this Public License.&lt;br /&gt;
 .&lt;br /&gt;
		2. You may satisfy the conditions in Section 3(a)(1) in any&lt;br /&gt;
		   reasonable manner based on the medium, means, and context in&lt;br /&gt;
		   which You Share the Licensed Material. For example, it may be&lt;br /&gt;
		   reasonable to satisfy the conditions by providing a URI or&lt;br /&gt;
		   hyperlink to a resource that includes the required&lt;br /&gt;
		   information.&lt;br /&gt;
 .&lt;br /&gt;
		3. If requested by the Licensor, You must remove any of the&lt;br /&gt;
		   information required by Section 3(a)(1)(A) to the extent&lt;br /&gt;
		   reasonably practicable.&lt;br /&gt;
 .&lt;br /&gt;
   b. ShareAlike.&lt;br /&gt;
 .&lt;br /&gt;
	  In addition to the conditions in Section 3(a), if You Share&lt;br /&gt;
	  Adapted Material You produce, the following conditions also apply.&lt;br /&gt;
 .&lt;br /&gt;
		1. The Adapter&#039;s License You apply must be a Creative Commons&lt;br /&gt;
		   license with the same License Elements, this version or&lt;br /&gt;
		   later, or a BY-SA Compatible License.&lt;br /&gt;
 .&lt;br /&gt;
		2. You must include the text of, or the URI or hyperlink to, the&lt;br /&gt;
		   Adapter&#039;s License You apply. You may satisfy this condition&lt;br /&gt;
		   in any reasonable manner based on the medium, means, and&lt;br /&gt;
		   context in which You Share Adapted Material.&lt;br /&gt;
 .&lt;br /&gt;
		3. You may not offer or impose any additional or different terms&lt;br /&gt;
		   or conditions on, or apply any Effective Technological&lt;br /&gt;
		   Measures to, Adapted Material that restrict exercise of the&lt;br /&gt;
		   rights granted under the Adapter&#039;s License You apply.&lt;br /&gt;
 .&lt;br /&gt;
 .&lt;br /&gt;
 Section 4 -- Sui Generis Database Rights.&lt;br /&gt;
 .&lt;br /&gt;
 Where the Licensed Rights include Sui Generis Database Rights that&lt;br /&gt;
 apply to Your use of the Licensed Material:&lt;br /&gt;
 .&lt;br /&gt;
   a. for the avoidance of doubt, Section 2(a)(1) grants You the right&lt;br /&gt;
	  to extract, reuse, reproduce, and Share all or a substantial&lt;br /&gt;
	  portion of the contents of the database;&lt;br /&gt;
 .&lt;br /&gt;
   b. if You include all or a substantial portion of the database&lt;br /&gt;
	  contents in a database in which You have Sui Generis Database&lt;br /&gt;
	  Rights, then the database in which You have Sui Generis Database&lt;br /&gt;
	  Rights (but not its individual contents) is Adapted Material,&lt;br /&gt;
 .&lt;br /&gt;
	  including for purposes of Section 3(b); and&lt;br /&gt;
   c. You must comply with the conditions in Section 3(a) if You Share&lt;br /&gt;
	  all or a substantial portion of the contents of the database.&lt;br /&gt;
 .&lt;br /&gt;
 For the avoidance of doubt, this Section 4 supplements and does not&lt;br /&gt;
 replace Your obligations under this Public License where the Licensed&lt;br /&gt;
 Rights include other Copyright and Similar Rights.&lt;br /&gt;
 .&lt;br /&gt;
 .&lt;br /&gt;
 Section 5 -- Disclaimer of Warranties and Limitation of Liability.&lt;br /&gt;
 .&lt;br /&gt;
   a. UNLESS OTHERWISE SEPARATELY UNDERTAKEN BY THE LICENSOR, TO THE&lt;br /&gt;
	  EXTENT POSSIBLE, THE LICENSOR OFFERS THE LICENSED MATERIAL AS-IS&lt;br /&gt;
	  AND AS-AVAILABLE, AND MAKES NO REPRESENTATIONS OR WARRANTIES OF&lt;br /&gt;
	  ANY KIND CONCERNING THE LICENSED MATERIAL, WHETHER EXPRESS,&lt;br /&gt;
	  IMPLIED, STATUTORY, OR OTHER. THIS INCLUDES, WITHOUT LIMITATION,&lt;br /&gt;
	  WARRANTIES OF TITLE, MERCHANTABILITY, FITNESS FOR A PARTICULAR&lt;br /&gt;
	  PURPOSE, NON-INFRINGEMENT, ABSENCE OF LATENT OR OTHER DEFECTS,&lt;br /&gt;
	  ACCURACY, OR THE PRESENCE OR ABSENCE OF ERRORS, WHETHER OR NOT&lt;br /&gt;
	  KNOWN OR DISCOVERABLE. WHERE DISCLAIMERS OF WARRANTIES ARE NOT&lt;br /&gt;
	  ALLOWED IN FULL OR IN PART, THIS DISCLAIMER MAY NOT APPLY TO YOU.&lt;br /&gt;
 .&lt;br /&gt;
   b. TO THE EXTENT POSSIBLE, IN NO EVENT WILL THE LICENSOR BE LIABLE&lt;br /&gt;
	  TO YOU ON ANY LEGAL THEORY (INCLUDING, WITHOUT LIMITATION,&lt;br /&gt;
	  NEGLIGENCE) OR OTHERWISE FOR ANY DIRECT, SPECIAL, INDIRECT,&lt;br /&gt;
	  INCIDENTAL, CONSEQUENTIAL, PUNITIVE, EXEMPLARY, OR OTHER LOSSES,&lt;br /&gt;
	  COSTS, EXPENSES, OR DAMAGES ARISING OUT OF THIS PUBLIC LICENSE OR&lt;br /&gt;
	  USE OF THE LICENSED MATERIAL, EVEN IF THE LICENSOR HAS BEEN&lt;br /&gt;
	  ADVISED OF THE POSSIBILITY OF SUCH LOSSES, COSTS, EXPENSES, OR&lt;br /&gt;
	  DAMAGES. WHERE A LIMITATION OF LIABILITY IS NOT ALLOWED IN FULL OR&lt;br /&gt;
	  IN PART, THIS LIMITATION MAY NOT APPLY TO YOU.&lt;br /&gt;
 .&lt;br /&gt;
   c. The disclaimer of warranties and limitation of liability provided&lt;br /&gt;
	  above shall be interpreted in a manner that, to the extent&lt;br /&gt;
	  possible, most closely approximates an absolute disclaimer and&lt;br /&gt;
	  waiver of all liability.&lt;br /&gt;
 .&lt;br /&gt;
 .&lt;br /&gt;
 Section 6 -- Term and Termination.&lt;br /&gt;
 .&lt;br /&gt;
   a. This Public License applies for the term of the Copyright and&lt;br /&gt;
	  Similar Rights licensed here. However, if You fail to comply with&lt;br /&gt;
	  this Public License, then Your rights under this Public License&lt;br /&gt;
	  terminate automatically.&lt;br /&gt;
 .&lt;br /&gt;
   b. Where Your right to use the Licensed Material has terminated under&lt;br /&gt;
	  Section 6(a), it reinstates:&lt;br /&gt;
 .&lt;br /&gt;
		1. automatically as of the date the violation is cured, provided&lt;br /&gt;
		   it is cured within 30 days of Your discovery of the&lt;br /&gt;
		   violation; or&lt;br /&gt;
 .&lt;br /&gt;
		2. upon express reinstatement by the Licensor.&lt;br /&gt;
 .&lt;br /&gt;
	  For the avoidance of doubt, this Section 6(b) does not affect any&lt;br /&gt;
	  right the Licensor may have to seek remedies for Your violations&lt;br /&gt;
	  of this Public License.&lt;br /&gt;
 .&lt;br /&gt;
   c. For the avoidance of doubt, the Licensor may also offer the&lt;br /&gt;
	  Licensed Material under separate terms or conditions or stop&lt;br /&gt;
	  distributing the Licensed Material at any time; however, doing so&lt;br /&gt;
	  will not terminate this Public License.&lt;br /&gt;
 .&lt;br /&gt;
   d. Sections 1, 5, 6, 7, and 8 survive termination of this Public&lt;br /&gt;
	  License.&lt;br /&gt;
 .&lt;br /&gt;
 .&lt;br /&gt;
 Section 7 -- Other Terms and Conditions.&lt;br /&gt;
 .&lt;br /&gt;
   a. The Licensor shall not be bound by any additional or different&lt;br /&gt;
	  terms or conditions communicated by You unless expressly agreed.&lt;br /&gt;
 .&lt;br /&gt;
   b. Any arrangements, understandings, or agreements regarding the&lt;br /&gt;
	  Licensed Material not stated herein are separate from and&lt;br /&gt;
	  independent of the terms and conditions of this Public License.&lt;br /&gt;
 .&lt;br /&gt;
 .&lt;br /&gt;
 Section 8 -- Interpretation.&lt;br /&gt;
 .&lt;br /&gt;
   a. For the avoidance of doubt, this Public License does not, and&lt;br /&gt;
	  shall not be interpreted to, reduce, limit, restrict, or impose&lt;br /&gt;
	  conditions on any use of the Licensed Material that could lawfully&lt;br /&gt;
	  be made without permission under this Public License.&lt;br /&gt;
 .&lt;br /&gt;
   b. To the extent possible, if any provision of this Public License is&lt;br /&gt;
	  deemed unenforceable, it shall be automatically reformed to the&lt;br /&gt;
	  minimum extent necessary to make it enforceable. If the provision&lt;br /&gt;
	  cannot be reformed, it shall be severed from this Public License&lt;br /&gt;
	  without affecting the enforceability of the remaining terms and&lt;br /&gt;
	  conditions.&lt;br /&gt;
 .&lt;br /&gt;
   c. No term or condition of this Public License will be waived and no&lt;br /&gt;
	  failure to comply consented to unless expressly agreed to by the&lt;br /&gt;
	  Licensor.&lt;br /&gt;
 .&lt;br /&gt;
   d. Nothing in this Public License constitutes or may be interpreted&lt;br /&gt;
	  as a limitation upon, or waiver of, any privileges and immunities&lt;br /&gt;
	  that apply to the Licensor or You, including from the legal&lt;br /&gt;
	  processes of any jurisdiction or authority.&lt;br /&gt;
 .&lt;br /&gt;
 .&lt;br /&gt;
 =======================================================================&lt;br /&gt;
 .&lt;br /&gt;
 Creative Commons is not a party to its public&lt;br /&gt;
 licenses. Notwithstanding, Creative Commons may elect to apply one of&lt;br /&gt;
 its public licenses to material it publishes and in those instances&lt;br /&gt;
 will be considered the “Licensor.” The text of the Creative Commons&lt;br /&gt;
 public licenses is dedicated to the public domain under the CC0 Public&lt;br /&gt;
 Domain Dedication. Except for the limited purpose of indicating that&lt;br /&gt;
 material is shared under a Creative Commons public license or as&lt;br /&gt;
 otherwise permitted by the Creative Commons policies published at&lt;br /&gt;
 creativecommons.org/policies, Creative Commons does not authorize the&lt;br /&gt;
 use of the trademark &amp;quot;Creative Commons&amp;quot; or any other trademark or logo&lt;br /&gt;
 of Creative Commons without its prior written consent including,&lt;br /&gt;
 without limitation, in connection with any unauthorized modifications&lt;br /&gt;
 to any of its public licenses or any other arrangements,&lt;br /&gt;
 understandings, or agreements concerning use of licensed material. For&lt;br /&gt;
 the avoidance of doubt, this paragraph does not form part of the&lt;br /&gt;
 public licenses.&lt;br /&gt;
 .&lt;br /&gt;
 Creative Commons may be contacted at creativecommons.org.&lt;br /&gt;
&lt;br /&gt;
License: GPL-3+&lt;br /&gt;
 This package is free software; you can redistribute it and/or modify&lt;br /&gt;
 it under the terms of the GNU General Public License as published by&lt;br /&gt;
 the Free Software Foundation; either version 3 of the License, or&lt;br /&gt;
 (at your option) any later version.&lt;br /&gt;
 .&lt;br /&gt;
 This package is distributed in the hope that it will be useful,&lt;br /&gt;
 but WITHOUT ANY WARRANTY; without even the implied warranty of&lt;br /&gt;
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the&lt;br /&gt;
 GNU General Public License for more details.&lt;br /&gt;
 .&lt;br /&gt;
 You should have received a copy of the GNU General Public License&lt;br /&gt;
 along with this program. If not, see &amp;lt;https://www.gnu.org/licenses/&amp;gt;&lt;br /&gt;
 .&lt;br /&gt;
 On Debian systems, the complete text of the GNU General&lt;br /&gt;
 Public License version 3 can be found in &amp;quot;/usr/share/common-licenses/GPL-3&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
License: LGPL-2.1+&lt;br /&gt;
 This library is free software; you can redistribute it and/or&lt;br /&gt;
 modify it under the terms of the GNU Lesser General Public&lt;br /&gt;
 License as published by the Free Software Foundation; either&lt;br /&gt;
 version 2.1 of the License, or (at your option) any later version.&lt;br /&gt;
 .&lt;br /&gt;
 This library is distributed in the hope that it will be useful,&lt;br /&gt;
 but WITHOUT ANY WARRANTY; without even the implied warranty of&lt;br /&gt;
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU&lt;br /&gt;
 Lesser General Public License for more details.&lt;br /&gt;
 .&lt;br /&gt;
 You should have received a copy of the GNU Lesser General Public License&lt;br /&gt;
 along with this library. If not, see &amp;lt;https://www.gnu.org/licenses/&amp;gt;&lt;br /&gt;
 .&lt;br /&gt;
 On Debian systems, the complete text of the GNU Lesser General&lt;br /&gt;
 Public License version 3 can be found in &amp;quot;/usr/share/common-licenses/LGPL-2.1&amp;quot;.&lt;br /&gt;
user@disp4360:/usr/share/doc$ &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## that&#039;s a big annoying, but I guess we can live with it&lt;br /&gt;
## they also apparently put a dot (.) on every double-newline in a single indented stanza. I guess that&#039;s to not break the syntax of &amp;quot;two newlines becomes a new stanaza&amp;quot;. So I&#039;ll adopt that for the CERN License snippet.&lt;br /&gt;
## I grepd all the &amp;quot;Files&amp;quot; lines in all the systems, and generated a reasonably complete list of all programming language source files&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Files:&lt;br /&gt;
 *.c *.cpp *.h *.hpp&lt;br /&gt;
 *.py *.pl *.go&lt;br /&gt;
 *.dtd&lt;br /&gt;
 *.html *.css *.js *.xml&lt;br /&gt;
Copyright:&lt;br /&gt;
 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
License: AGPL-3.0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## .dtd came up a few times. something related to gis, I think. I added a few more gis formats&lt;br /&gt;
## per https://docs.qgis.org/3.44/en/docs/user_manual/managing_data_source/supported_data.html&lt;br /&gt;
## and https://gis.stackexchange.com/questions/392708/list-of-data-file-formats-supported-in-qgis-including-read-write-support&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Files:&lt;br /&gt;
 *.c *.cpp *.h *.hpp&lt;br /&gt;
 *.py *.pl *.go&lt;br /&gt;
 *.qix *.dtd *.shp *.shz *.dbf *.shx *.prj *.kml&lt;br /&gt;
 *.html *.css *.js *.xml&lt;br /&gt;
Copyright:&lt;br /&gt;
 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
License: AGPL-3.0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## Another thing I can do is to check some syntax highlighers, which have some logic to auto-detect code syntax based on filename. That would be a great list of code-specific filenames&lt;br /&gt;
### here&#039;s the one we use as a wordpress plugin for eco-libre.org https://wordpress.org/plugins/syntaxhighlighter/&lt;br /&gt;
### code is here https://github.com/Automattic/syntaxhighlighter&lt;br /&gt;
### here&#039;s the block where they map languages to file extensions https://github.com/Automattic/syntaxhighlighter/blob/61fd26c64d019641db143e90e05b0eb9a4a57d62/syntaxhighlighter.php#L181-L246&lt;br /&gt;
### oh crap, those are aliases, not file extensions. maybe I should check something like notepad++ or vim&lt;br /&gt;
### we can get 694 file types from vim with this crazy command https://vi.stackexchange.com/a/14980&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
user@disp4360:/usr/share/vim/vim90$ find syntax ftplugin -iname &#039;*.vim&#039; -exec basename -s .vim {} + | sort -u | wc -l&lt;br /&gt;
694&lt;br /&gt;
user@disp4360:/usr/share/vim/vim90$ &lt;br /&gt;
&lt;br /&gt;
user@disp4360:/usr/share/vim/vim90$ find syntax ftplugin -iname &#039;*.vim&#039; -exec basename -s .vim {} + | sort -u | xargs&lt;br /&gt;
2html 8th a2ps a65 aap abap abaqus abc abel acedb ada aflex ahdl aidl alsaconf amiga aml ampl ant antlr apache apachestyle aptconf arch arduino art asciidoc asm asm68k asmh8300 asn aspperl aspvbs asterisk asteriskvm atlas autodoc autohotkey autoit automake ave avra awk ayacc b baan bash basic bc bdf bib bindzone bitbake blank bsdl bst btm bzl bzr c cabal cabalconfig cabalproject calendar catalog cdl cdrdaoconf cdrtoc cf cfg ch chaiscript change changelog chaskell chatito cheetah chicken chill chordpro cl clean clipper clojure cmake cmod cmusrc cobol coco colortest conaryrecipe conf config confini context context-data-context context-data-interfaces context-data-metafun context-data-tex cpp crm crontab cs csc csdl csh csp css cterm ctrlh cucumber cuda cupl cuplsim cvs cvsrc cweb cynlib cynpp d dart datascript dcd dcl debchangelog debcontrol debcopyright debsources def denyhosts dep3patch desc desktop dictconf dictdconf diff dircolors dirpager diva django dns dnsmasq docbk docbksgml docbkxml dockerfile dosbatch dosini dot doxygen dracula dsl dtd dtml dtrace dts dune dylan dylanintr dylanlid ecd edif editorconfig eiffel elf elinks elixir elm elmfilt erlang eruby esmtprc esqlc esterel eterm euphoria3 euphoria4 eviews exim expect exports falcon fan fasm fdcc fennel fetchmail fgl fish flexwiki focexec form forth fortran foxpro fpcmake framescript freebasic fstab fvwm fvwm2m4 gdb gdmo gdresource gdscript gdshader gedcom gemtext gift git gitattributes gitcommit gitconfig gitignore gitolite gitrebase gitsendemail gkrellmrc gnash gnuplot go godoc gp gpg gprof grads gretl groff groovy group grub gsp gtkrc gvpr gyp haml hamster hare haskell haste hastepreproc hb heex help help_ru hercules hex hgcommit hgcommitDiff hitest hlsplaylist hog hollywood hostconf hostsaccess html htmlcheetah htmldjango htmlm4 htmlos i3config ia64 ibasic icemenu icon idl idlang indent inform initex initng inittab ipfilter ishd iss ist j jal jam jargon java javacc javascript javascriptreact jess jgraph jovial jproperties json jsonc jsonnet jsp julia kconfig kivy kix krl kscript kwt lace latte lc ld ldapconf ldif less lex lftp lhaskell libao lifelines lilo limits liquid lisp lite litestep logcheck loginaccess logindefs logtalk lotos lout lpc lprolog lscript lsl lss lua lynx lyrics m3build m3quake m4 mail mailaliases mailcap make mallard man manconf manual maple markdown masm mason master matlab maxima mel mermaid meson messages mf mgl mgp mib mix mma mmix mmp modconf model modsim3 modula2 modula3 monk moo mp mplayerconf mrxvtrc msidl msmessages msql mupad murphi mush muttrc mysql n1ql named nanorc nasm nastran natural ncf neomuttrc netrc netrw nginx ninja nix nosyntax nqc nroff nsis obj objc objcpp obse ocaml occam octave omnimark opam openroad openscad openvpn opl ora pamconf pamenv papp pascal passwd pbtxt pcap pccts pdf perl pf pfmain php phtml pic pike pilrc pine pinfo plaintex pli plm plp plsql po pod poefilter poke postscr pov povini ppd ppwiz prescribe privoxy procmail progress prolog promela proto protocols ps1 ps1xml psf psl ptcap purifylog pyrex python python2 qb64 qf quake quarto r racc racket radiance raku raml ratpoison rc rcs rcslog readline rebol redif registry rego remind resolv reva rexx rhelp rib rmd rnc rng rnoweb robots routeros rpcgen rpl rrst rst rtf ruby rust samba sas sass sather sbt scala scdoc scheme scilab screen scss sd sdc sdl sed sendpr sensors services setserial sexplib sgml sgmldecl sgmllnx sh sicad sieve sil simula sinda sindacmp sindaout sisu skill sl slang slice slpconf slpreg slpspi slrnrc slrnsc sm smarty smcl smil smith sml snnsnet snnspat snnsres snobol4 solidity solution spec specman spice splint spup spyce sql sqlanywhere sqlforms sqlhana sqlinformix sqlj sqloracle sqr squid squirrel srec srt ssa sshconfig sshdconfig st stata stp strace structurizr sudoers svg svn swayconfig swift swiftgyb syncolor synload syntax sysctl systemd systemverilog tads tags tak takcmp takout tap tar taskdata taskedit tasm tcl tcsh template teraterm terminfo tex texinfo texmf text tf tidy tilde tli tmux toml tpp trasys treetop trustees tsalt tsscl tssgm tssop tt2 tt2html tt2js typescript typescriptcommon typescriptreact uc udevconf udevperm udevrules uil updatedb upstart upstreamdat upstreaminstalllog upstreamlog upstreamrpt usserverlog usw2kagtlog valgrind vb vdf vera verilog verilogams vgrindefs vhdl vim viminfo virata vmasm voscm vrml vroom vsejcl vue wast wdiff wdl web webmacro wget wget2 whitespace winbatch wml wsh wsml wvdial xbl xdefaults xf86conf xhtml xinetd xkb xmath xml xmodmap xpm xpm2 xquery xs xsd xslt xxd yacc yaml z8a zig zimbu zir zsh&lt;br /&gt;
user@disp4360:/usr/share/vim/vim90$ &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
### so I definitely don&#039;t want all of those. for example, .po files are not code.&lt;br /&gt;
## I decided to remove html and css from the list, as those are markup and not code. but js should remain.&lt;br /&gt;
## I reduced the vim list to the following&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
user@disp4360:~$ cat filetypes1.txt &lt;br /&gt;
autohotkey&lt;br /&gt;
automake&lt;br /&gt;
awk&lt;br /&gt;
bash&lt;br /&gt;
basic&lt;br /&gt;
cmake&lt;br /&gt;
cuda&lt;br /&gt;
d&lt;br /&gt;
erlang&lt;br /&gt;
eruby&lt;br /&gt;
haskell&lt;br /&gt;
j&lt;br /&gt;
java&lt;br /&gt;
javacc&lt;br /&gt;
javascript&lt;br /&gt;
javascriptreact&lt;br /&gt;
kivy&lt;br /&gt;
lisp&lt;br /&gt;
lua&lt;br /&gt;
make&lt;br /&gt;
perl&lt;br /&gt;
r&lt;br /&gt;
ruby&lt;br /&gt;
rust&lt;br /&gt;
sh&lt;br /&gt;
swift&lt;br /&gt;
tcl&lt;br /&gt;
typescript&lt;br /&gt;
vb&lt;br /&gt;
zsh&lt;br /&gt;
user@disp4360:~$ &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## fun fact, autohotkey was the first &amp;quot;language&amp;quot; I learned – which I used to script my windows computer to feed my fish and collect their pooped-out gold in some video game, wayy back when I was  kid &amp;amp; before I used Linux. It&#039;s a cool way to automate GUI macros on Windows (which is otherwise a PIA to automate, by (terrible) design.&lt;br /&gt;
## I merged this into our copyright file.  I also added asp.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Files:&lt;br /&gt;
 *.c *.cpp *.h *.hpp *.make *.automake *.cmake&lt;br /&gt;
 *.java *.javacc *.rust&lt;br /&gt;
 *.d *.j *.r&lt;br /&gt;
 *.sh *.bash *.zsh *.awk *.tcl&lt;br /&gt;
 *.py *.python *.python2 *.python3 *.pl *.perl *.kivy&lt;br /&gt;
 *.qix *.dtd *.shp *.shz *.dbf *.shx *.prj *.kml&lt;br /&gt;
 *.php *.js *.javascript *.typescript&lt;br /&gt;
 *.ruby *.eruby *.cuda *.erlang *.lisp *.lua *.haskell *.go&lt;br /&gt;
 *.autohotkey *.basic *.swift *.vb *.asp&lt;br /&gt;
Copyright:&lt;br /&gt;
 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
License: AGPL-3.0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## let&#039;s also add exceptions for the CERN-licensed files&lt;br /&gt;
## I hope we never use tools like AutoCAD, but it&#039;s likely that someone will design something in AutoCAD and copyleft it. Then we&#039;ll be able to use that in one of our projects, but where we redesign it in FreeCAD. In that case, we still might want to include the source AutoCAD DXF file in our repo, and license it properly (though, if that happens, we&#039;d probably need to update the copyright file to whatever license they use; unless they happen to use the same CERN strong license as us)&lt;br /&gt;
## I added scad. And .vue was one from vim.&lt;br /&gt;
## bibliocad lists wg, bim, skp, max, and 3ds https://www.bibliocad.com/&lt;br /&gt;
## I logged into the OSE wiki and checked all of the files that have been uploaded, and I added a few more: 3dm, fcmacro, ino, fzz, gto, blend, kicad_pcb, sh3d, pod, brd, sch, abp, dwb, cc, skb, sldrw, sldasm, pde&lt;br /&gt;
## note that I&#039;ve *not* put stp, gcode, stl, igs, wrl, wrz, etc files as CERN licensed (so they&#039;d be CC). I&#039;m not sure if that&#039;s the right thing or not.&lt;br /&gt;
### also dia, gan, mpp, mm, svg, jpg, png, jpeg, tiff, bmp, ai, idml, psd, mp4, mp3, webm, wav, kdenlive, xcf, doc, docx, ppt, pptx, xls, odt, ods, odg, numbers, tex, zip, rar, 7z, tar.gz, torrent, etc..&lt;br /&gt;
### there was also some ini config files. I read you can&#039;t license config files. so those will be CC.&lt;br /&gt;
# ok, here&#039;s what I got&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/&lt;br /&gt;
Source: https://github.com/Eco-Libre/life-line&lt;br /&gt;
Upstream-Name: Eco-Libre Life-Line&lt;br /&gt;
Upstream-Contact: https://eco-libre.org/contact&lt;br /&gt;
&lt;br /&gt;
Files:&lt;br /&gt;
 *&lt;br /&gt;
Copyright:&lt;br /&gt;
 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
License: CC-BY-SA-4.0&lt;br /&gt;
&lt;br /&gt;
Files:&lt;br /&gt;
 *.FCStd *.scad *.fzz *.blend *.kicad_pcb *.sh3d&lt;br /&gt;
 *.vue *.dxf *.dwg *.bim *.skp *.skb *.max *.3ds *.gto *.pod *.brd&lt;br /&gt;
 *.sch *.3dm *.dwb *.slddrw *.sldasm&lt;br /&gt;
Copyright:&lt;br /&gt;
 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
License: CERN-OHL-S-2.0&lt;br /&gt;
&lt;br /&gt;
Files:&lt;br /&gt;
 *.c *.cpp *.h *.hpp *.cc *.ino *.pde *.make *.automake *.cmake&lt;br /&gt;
 *.java *.javacc *.rust&lt;br /&gt;
 *.d *.j *.r&lt;br /&gt;
 *.sh *.bash *.zsh *.awk *.tcl&lt;br /&gt;
 *.py *.python *.python2 *.python3 *.FCMacro *.pl *.perl *.kivy&lt;br /&gt;
 *.qix *.dtd *.shp *.shz *.dbf *.shx *.prj *.kml&lt;br /&gt;
 *.php *.js *.javascript *.typescript&lt;br /&gt;
 *.ruby *.eruby *.cuda *.erlang *.lisp *.lua *.haskell *.go&lt;br /&gt;
 *.autohotkey *.basic *.swift *.vb *.asp&lt;br /&gt;
Copyright:&lt;br /&gt;
 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
License: AGPL-3.0&lt;br /&gt;
&lt;br /&gt;
License: AGPL-3.0&lt;br /&gt;
 https://www.gnu.org/licenses/agpl-3.0.html&lt;br /&gt;
 .&lt;br /&gt;
 This program is free software: you can redistribute it and/or modify&lt;br /&gt;
 it under the terms of the GNU Affero General Public License as&lt;br /&gt;
 published by the Free Software Foundation, version 3&lt;br /&gt;
 .&lt;br /&gt;
 This program is distributed in the hope that it will be useful,&lt;br /&gt;
 but WITHOUT ANY WARRANTY; without even the implied warranty of&lt;br /&gt;
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the&lt;br /&gt;
 GNU Affero General Public License for more details.&lt;br /&gt;
 .&lt;br /&gt;
 You should have received a copy of the GNU Affero General Public License&lt;br /&gt;
 along with this program.  If not, see &amp;lt;https://www.gnu.org/licenses/&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
License: CERN-OHL-S-2.0&lt;br /&gt;
 https://ohwr.org/cern_ohl_s_v2.txt&lt;br /&gt;
 .&lt;br /&gt;
 You may redistribute and modify this source and make products using &lt;br /&gt;
 it under the terms of the CERN-OHL-S v2 &lt;br /&gt;
 (https://ohwr.org/cern_ohl_s_v2.txt).&lt;br /&gt;
 .&lt;br /&gt;
 This source is distributed WITHOUT ANY EXPRESS OR IMPLIED WARRANTY, &lt;br /&gt;
 INCLUDING OF MERCHANTABILITY, SATISFACTORY QUALITY AND FITNESS FOR A &lt;br /&gt;
 PARTICULAR PURPOSE. Please see the CERN-OHL-S v2 for applicable &lt;br /&gt;
 conditions.&lt;br /&gt;
 .&lt;br /&gt;
 Source location: eco-libre.org/p/&lt;br /&gt;
 .&lt;br /&gt;
 As per CERN-OHL-S v2 section 4, should You produce hardware based on &lt;br /&gt;
 this source, You must where practicable and applicable maintain the &lt;br /&gt;
 Source Location visible (1) on the packaging of the hardware, (2) on &lt;br /&gt;
 the circuit board(s) via silkscreen or copper, (3) in any &lt;br /&gt;
 documentation, and (4) on other products you make using this source.&lt;br /&gt;
&lt;br /&gt;
License: CC-BY-SA-4.0&lt;br /&gt;
 http://creativecommons.org/licenses/by-sa/4.0/&lt;br /&gt;
 .&lt;br /&gt;
 Attribution-ShareAlike 4.0 International&lt;br /&gt;
 .&lt;br /&gt;
 =======================================================================&lt;br /&gt;
 .&lt;br /&gt;
 Creative Commons Corporation (&amp;quot;Creative Commons&amp;quot;) is not a law firm and&lt;br /&gt;
 does not provide legal services or legal advice. Distribution of&lt;br /&gt;
 Creative Commons public licenses does not create a lawyer-client or&lt;br /&gt;
 other relationship. Creative Commons makes its licenses and related&lt;br /&gt;
 information available on an &amp;quot;as-is&amp;quot; basis. Creative Commons gives no&lt;br /&gt;
 warranties regarding its licenses, any material licensed under their&lt;br /&gt;
 terms and conditions, or any related information. Creative Commons&lt;br /&gt;
 disclaims all liability for damages resulting from their use to the&lt;br /&gt;
 fullest extent possible.&lt;br /&gt;
 .&lt;br /&gt;
 Using Creative Commons Public Licenses&lt;br /&gt;
 .&lt;br /&gt;
 Creative Commons public licenses provide a standard set of terms and&lt;br /&gt;
 conditions that creators and other rights holders may use to share&lt;br /&gt;
 original works of authorship and other material subject to copyright&lt;br /&gt;
 and certain other rights specified in the public license below. The&lt;br /&gt;
 following considerations are for informational purposes only, are not&lt;br /&gt;
 exhaustive, and do not form part of our licenses.&lt;br /&gt;
 .&lt;br /&gt;
	  Considerations for licensors: Our public licenses are&lt;br /&gt;
	  intended for use by those authorized to give the public&lt;br /&gt;
	  permission to use material in ways otherwise restricted by&lt;br /&gt;
	  copyright and certain other rights. Our licenses are&lt;br /&gt;
	  irrevocable. Licensors should read and understand the terms&lt;br /&gt;
	  and conditions of the license they choose before applying it.&lt;br /&gt;
	  Licensors should also secure all rights necessary before&lt;br /&gt;
	  applying our licenses so that the public can reuse the&lt;br /&gt;
	  material as expected. Licensors should clearly mark any&lt;br /&gt;
	  material not subject to the license. This includes other CC-&lt;br /&gt;
	  licensed material, or material used under an exception or&lt;br /&gt;
	  limitation to copyright. More considerations for licensors:&lt;br /&gt;
	  wiki.creativecommons.org/Considerations_for_licensors&lt;br /&gt;
 .&lt;br /&gt;
	  Considerations for the public: By using one of our public&lt;br /&gt;
	  licenses, a licensor grants the public permission to use the&lt;br /&gt;
	  licensed material under specified terms and conditions. If&lt;br /&gt;
	  the licensor&#039;s permission is not necessary for any reason--for&lt;br /&gt;
	  example, because of any applicable exception or limitation to&lt;br /&gt;
	  copyright--then that use is not regulated by the license. Our&lt;br /&gt;
	  licenses grant only permissions under copyright and certain&lt;br /&gt;
	  other rights that a licensor has authority to grant. Use of&lt;br /&gt;
	  the licensed material may still be restricted for other&lt;br /&gt;
	  reasons, including because others have copyright or other&lt;br /&gt;
	  rights in the material. A licensor may make special requests,&lt;br /&gt;
	  such as asking that all changes be marked or described.&lt;br /&gt;
	  Although not required by our licenses, you are encouraged to&lt;br /&gt;
	  respect those requests where reasonable. More_considerations&lt;br /&gt;
	  for the public:&lt;br /&gt;
	  wiki.creativecommons.org/Considerations_for_licensees&lt;br /&gt;
 .&lt;br /&gt;
 =======================================================================&lt;br /&gt;
 .&lt;br /&gt;
 Creative Commons Attribution-ShareAlike 4.0 International Public&lt;br /&gt;
 License&lt;br /&gt;
 .&lt;br /&gt;
 By exercising the Licensed Rights (defined below), You accept and agree&lt;br /&gt;
 to be bound by the terms and conditions of this Creative Commons&lt;br /&gt;
 Attribution-ShareAlike 4.0 International Public License (&amp;quot;Public&lt;br /&gt;
 License&amp;quot;). To the extent this Public License may be interpreted as a&lt;br /&gt;
 contract, You are granted the Licensed Rights in consideration of Your&lt;br /&gt;
 acceptance of these terms and conditions, and the Licensor grants You&lt;br /&gt;
 such rights in consideration of benefits the Licensor receives from&lt;br /&gt;
 making the Licensed Material available under these terms and&lt;br /&gt;
 conditions.&lt;br /&gt;
 .&lt;br /&gt;
 .&lt;br /&gt;
 Section 1 -- Definitions.&lt;br /&gt;
 .&lt;br /&gt;
   a. Adapted Material means material subject to Copyright and Similar&lt;br /&gt;
	  Rights that is derived from or based upon the Licensed Material&lt;br /&gt;
	  and in which the Licensed Material is translated, altered,&lt;br /&gt;
	  arranged, transformed, or otherwise modified in a manner requiring&lt;br /&gt;
	  permission under the Copyright and Similar Rights held by the&lt;br /&gt;
	  Licensor. For purposes of this Public License, where the Licensed&lt;br /&gt;
	  Material is a musical work, performance, or sound recording,&lt;br /&gt;
	  Adapted Material is always produced where the Licensed Material is&lt;br /&gt;
	  synched in timed relation with a moving image.&lt;br /&gt;
 .&lt;br /&gt;
   b. Adapter&#039;s License means the license You apply to Your Copyright&lt;br /&gt;
	  and Similar Rights in Your contributions to Adapted Material in&lt;br /&gt;
	  accordance with the terms and conditions of this Public License.&lt;br /&gt;
 .&lt;br /&gt;
   c. BY-SA Compatible License means a license listed at&lt;br /&gt;
	  creativecommons.org/compatiblelicenses, approved by Creative&lt;br /&gt;
	  Commons as essentially the equivalent of this Public License.&lt;br /&gt;
 .&lt;br /&gt;
   d. Copyright and Similar Rights means copyright and/or similar rights&lt;br /&gt;
	  closely related to copyright including, without limitation,&lt;br /&gt;
	  performance, broadcast, sound recording, and Sui Generis Database&lt;br /&gt;
	  Rights, without regard to how the rights are labeled or&lt;br /&gt;
	  categorized. For purposes of this Public License, the rights&lt;br /&gt;
	  specified in Section 2(b)(1)-(2) are not Copyright and Similar&lt;br /&gt;
	  Rights.&lt;br /&gt;
 .&lt;br /&gt;
   e. Effective Technological Measures means those measures that, in the&lt;br /&gt;
	  absence of proper authority, may not be circumvented under laws&lt;br /&gt;
	  fulfilling obligations under Article 11 of the WIPO Copyright&lt;br /&gt;
	  Treaty adopted on December 20, 1996, and/or similar international&lt;br /&gt;
	  agreements.&lt;br /&gt;
 .&lt;br /&gt;
   f. Exceptions and Limitations means fair use, fair dealing, and/or&lt;br /&gt;
	  any other exception or limitation to Copyright and Similar Rights&lt;br /&gt;
	  that applies to Your use of the Licensed Material.&lt;br /&gt;
 .&lt;br /&gt;
   g. License Elements means the license attributes listed in the name&lt;br /&gt;
	  of a Creative Commons Public License. The License Elements of this&lt;br /&gt;
	  Public License are Attribution and ShareAlike.&lt;br /&gt;
 .&lt;br /&gt;
   h. Licensed Material means the artistic or literary work, database,&lt;br /&gt;
	  or other material to which the Licensor applied this Public&lt;br /&gt;
	  License.&lt;br /&gt;
 .&lt;br /&gt;
   i. Licensed Rights means the rights granted to You subject to the&lt;br /&gt;
	  terms and conditions of this Public License, which are limited to&lt;br /&gt;
	  all Copyright and Similar Rights that apply to Your use of the&lt;br /&gt;
	  Licensed Material and that the Licensor has authority to license.&lt;br /&gt;
 .&lt;br /&gt;
   j. Licensor means the individual(s) or entity(ies) granting rights&lt;br /&gt;
	  under this Public License.&lt;br /&gt;
 .&lt;br /&gt;
   k. Share means to provide material to the public by any means or&lt;br /&gt;
	  process that requires permission under the Licensed Rights, such&lt;br /&gt;
	  as reproduction, public display, public performance, distribution,&lt;br /&gt;
	  dissemination, communication, or importation, and to make material&lt;br /&gt;
	  available to the public including in ways that members of the&lt;br /&gt;
	  public may access the material from a place and at a time&lt;br /&gt;
	  individually chosen by them.&lt;br /&gt;
 .&lt;br /&gt;
   l. Sui Generis Database Rights means rights other than copyright&lt;br /&gt;
	  resulting from Directive 96/9/EC of the European Parliament and of&lt;br /&gt;
	  the Council of 11 March 1996 on the legal protection of databases,&lt;br /&gt;
	  as amended and/or succeeded, as well as other essentially&lt;br /&gt;
	  equivalent rights anywhere in the world.&lt;br /&gt;
 .&lt;br /&gt;
   m. You means the individual or entity exercising the Licensed Rights&lt;br /&gt;
	  under this Public License. Your has a corresponding meaning.&lt;br /&gt;
 .&lt;br /&gt;
 .&lt;br /&gt;
 Section 2 -- Scope.&lt;br /&gt;
 .&lt;br /&gt;
   a. License grant.&lt;br /&gt;
 .&lt;br /&gt;
		1. Subject to the terms and conditions of this Public License,&lt;br /&gt;
		   the Licensor hereby grants You a worldwide, royalty-free,&lt;br /&gt;
		   non-sublicensable, non-exclusive, irrevocable license to&lt;br /&gt;
		   exercise the Licensed Rights in the Licensed Material to:&lt;br /&gt;
 .&lt;br /&gt;
			 a. reproduce and Share the Licensed Material, in whole or&lt;br /&gt;
				in part; and&lt;br /&gt;
 .&lt;br /&gt;
			 b. produce, reproduce, and Share Adapted Material.&lt;br /&gt;
 .&lt;br /&gt;
		2. Exceptions and Limitations. For the avoidance of doubt, where&lt;br /&gt;
		   Exceptions and Limitations apply to Your use, this Public&lt;br /&gt;
		   License does not apply, and You do not need to comply with&lt;br /&gt;
		   its terms and conditions.&lt;br /&gt;
 .&lt;br /&gt;
		3. Term. The term of this Public License is specified in Section&lt;br /&gt;
		   6(a).&lt;br /&gt;
 .&lt;br /&gt;
		4. Media and formats; technical modifications allowed. The&lt;br /&gt;
		   Licensor authorizes You to exercise the Licensed Rights in&lt;br /&gt;
		   all media and formats whether now known or hereafter created,&lt;br /&gt;
		   and to make technical modifications necessary to do so. The&lt;br /&gt;
		   Licensor waives and/or agrees not to assert any right or&lt;br /&gt;
		   authority to forbid You from making technical modifications&lt;br /&gt;
		   necessary to exercise the Licensed Rights, including&lt;br /&gt;
		   technical modifications necessary to circumvent Effective&lt;br /&gt;
		   Technological Measures. For purposes of this Public License,&lt;br /&gt;
		   simply making modifications authorized by this Section 2(a)&lt;br /&gt;
		   (4) never produces Adapted Material.&lt;br /&gt;
 .&lt;br /&gt;
		5. Downstream recipients.&lt;br /&gt;
 .&lt;br /&gt;
			 a. Offer from the Licensor -- Licensed Material. Every&lt;br /&gt;
				recipient of the Licensed Material automatically&lt;br /&gt;
				receives an offer from the Licensor to exercise the&lt;br /&gt;
				Licensed Rights under the terms and conditions of this&lt;br /&gt;
				Public License.&lt;br /&gt;
 .&lt;br /&gt;
			 b. Additional offer from the Licensor -- Adapted Material.&lt;br /&gt;
				Every recipient of Adapted Material from You&lt;br /&gt;
				automatically receives an offer from the Licensor to&lt;br /&gt;
				exercise the Licensed Rights in the Adapted Material&lt;br /&gt;
				under the conditions of the Adapter&#039;s License You apply.&lt;br /&gt;
 .&lt;br /&gt;
			 c. No downstream restrictions. You may not offer or impose&lt;br /&gt;
				any additional or different terms or conditions on, or&lt;br /&gt;
				apply any Effective Technological Measures to, the&lt;br /&gt;
				Licensed Material if doing so restricts exercise of the&lt;br /&gt;
				Licensed Rights by any recipient of the Licensed&lt;br /&gt;
				Material.&lt;br /&gt;
 .&lt;br /&gt;
		6. No endorsement. Nothing in this Public License constitutes or&lt;br /&gt;
		   may be construed as permission to assert or imply that You&lt;br /&gt;
		   are, or that Your use of the Licensed Material is, connected&lt;br /&gt;
		   with, or sponsored, endorsed, or granted official status by,&lt;br /&gt;
		   the Licensor or others designated to receiv&lt;br /&gt;
&lt;br /&gt;
= 2026-04-23 =&lt;br /&gt;
# I&#039;ve been thinking about chaning our licensing, to something like this&lt;br /&gt;
## All hardware designs are licened under CERN-OHL-S-2.0 &lt;br /&gt;
## All code is licened under AGPL-3.0&lt;br /&gt;
## Everything else (art, documentation, etc) are CC BY-SA&lt;br /&gt;
# here&#039;s the design rational for the cern license (the s means strongly reciprocal, which is what we want) https://gitlab.com/ohwr/project/cernohl/-/wikis/uploads/0be6f561d2b4a686c5765c74be32daf9/CERN_OHL_rationale.pdf&lt;br /&gt;
# apparently creative commons license aren&#039;t OSI approved — only because they don&#039;t work for sourcecode https://opensource.stackexchange.com/questions/5021/osi-approved-license-similar-to-cc-by-sa-4-0&lt;br /&gt;
## by CC BY-SA (without NC or ND) are recommended by OSHWA for things like art and docs https://oshwa.org/resources/sharing-best-practices/&lt;br /&gt;
## hah, the footer of the OSI website (opensource.org) says that the contents of the website are licened CC BY – even though it&#039;s not OSI approved. That&#039;s a good enough endorsement for me&lt;br /&gt;
# oh, I found a CERN Discourse forum https://forums.ohwr.org/c/cernohl/53&lt;br /&gt;
## I never did get a response from OSHWA from my toot about their recommended CLAs https://chaos.social/@ecolibre/116444933464052302&lt;br /&gt;
## da fuk. the &amp;quot;register&amp;quot; button redirects to gitlab?&lt;br /&gt;
### ugh, it&#039;s some SSO OAuth (OpenID Connect). I don&#039;t trust that&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
OHWR Forum is requesting access to your account on GitLab.com.&lt;br /&gt;
 Make sure you trust OHWR Forum before authorizing.&lt;br /&gt;
&lt;br /&gt;
Vasco Guita added this OAuth application over 1 year ago. You will be redirected to forums.ohwr.org after authorizing.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
### I decllined it, and chose to create a new github account that&#039;s specific to these oshwa forums, and nothing else&lt;br /&gt;
## ok I asked about the triple-licensing here https://forums.ohwr.org/t/possible-to-triple-license-cern-ohl-s-2-0-agpl-3-0-cc-by-sa/849882&lt;br /&gt;
## ugh, the license of the licnese itself is CC BY-ND 4.0 :( https://gitlab.com/ohwr/project/cernohl/-/wikis/faq#q-i-am-using-one-of-variants-of-cern-ohl-v2-what-is-the-licence-of-the-licence-text-itself&lt;br /&gt;
### I have no intention to change it, but it would be nice if we had the abilty to add, idk, footnotes or page numbers or any trivial change if we needed&lt;br /&gt;
# hmm...the faq on the cern license say that it&#039;s *not* compatible with GPL https://gitlab.com/ohwr/project/cernohl/-/wikis/faq#q-is-cern-ohl-s-compatible-with-gpl&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Q: Is CERN-OHL-S compatible with GPL?&lt;br /&gt;
A: No...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## so we can&#039;t just license everything under both, I guess. But we might be able to specify that the hardware designs are CERN and any software is GPL, still&lt;br /&gt;
# here&#039;s a good example usage; they have the full license in LICENSE file, but they also have a &amp;quot;License Notice&amp;quot; section of their README.mde with the following https://github.com/Foundation-Devices/passport-electronics&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
You may redistribute and modify this source and make products using it under the terms of the CERN-OHL-S v2 (https://ohwr.org/cern_ohl_s_v2.txt).&lt;br /&gt;
&lt;br /&gt;
This source is distributed WITHOUT ANY EXPRESS OR IMPLIED WARRANTY, INCLUDING OF MERCHANTABILITY, SATISFACTORY QUALITY AND FITNESS FOR A PARTICULAR PURPOSE. Please see the CERN-OHL-S v2 for applicable conditions.&lt;br /&gt;
&lt;br /&gt;
Source location: foundationdevices.com/passport-electronics&lt;br /&gt;
&lt;br /&gt;
As per CERN-OHL-S v2 section 4, should You produce hardware based on this source, You must where practicable and applicable maintain the Source Location visible (1) on the packaging of the hardware, (2) on the circuit board(s) via silkscreen or copper, (3) in any documentation, and (4) on other products you make using this source.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## I especially like the &amp;quot;Source location&amp;quot; part. We can use https://eco-libre.org/p (which is our &amp;quot;projects&amp;quot; page, indended to have one page per project – each with a *very* short summary, link to the *real* docs (currently on github, but that may change to codeberg – which is why we have this simple project page on our own infra), and a list of articles that are tagged with the project&#039;s name.&lt;br /&gt;
### currently we only have one example for life-line https://www.eco-libre.org/p/life-line/ – but, again, we&#039;d want to just link to eco-libre.org/p/ so we can have a boilerplate copy-pasta for all repo&#039;s README.md files&lt;br /&gt;
# there&#039;s a 6-page guide on how to use the CERN license here https://gitlab.com/ohwr/project/cernohl/-/wikis/uploads/cf37727497ca2b5295a7ab83a40fcf5a/cern_ohl_s_v2_user_guide.pdf&lt;br /&gt;
## cool, they do recommend using git. something I advocated-for (and never really got traction-on) at OSE&lt;br /&gt;
## interesting, they recommend we create a CHANGES file, because the license requires downstream modifications to be clearly documented. And by creating a blank file, it&#039;s where they should write their downstream changes.&lt;br /&gt;
## oh wow, they specifically mention FCStd files. So the writers of this license had FreeCAD in mind. Cool!&lt;br /&gt;
## they reference SPDX standard by resue.software https://reuse.software/tutorial/&lt;br /&gt;
### apparently this is a standardized way to indicate licenses of files that are machine-readable. Because, of course there is a standard for that.&lt;br /&gt;
### interesting, they advocate for a folder LICENSES instead of a file LICENSE. that would be better for us, if we&#039;re using three.&lt;br /&gt;
### ok, apparently SPDX is a distinct product from the Linux Foundation https://spdx.org/&lt;br /&gt;
### they say all of these are valid ways to declare copyright; I like it&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2019 Jane Doe &amp;lt;jane@example.com&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: © 2019 John Doe &amp;lt;john@example.com&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: Contributors to Example Project &amp;lt;https://project.example.com&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Alice Hack and (other) contributors to Project X &amp;lt;https://git.example.com/alicehack/projectx/CONTRIBUTORS.md&amp;gt;&lt;br /&gt;
SPDX-SnippetCopyrightText: (C) Example Cooperative &amp;lt;info@coop.example.com&amp;gt;&lt;br /&gt;
© Example Corporation &amp;lt;https://corp.example.com&amp;gt;&lt;br /&gt;
Copyright 2016, 2018-2019 Joe Anybody&lt;br /&gt;
Copyright (c) Alice, some rights reserved&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
#### I especially like line 4. I think I&#039;d use that. So it would be my name, all contributors, and a link to the Attribution section of the docs&lt;br /&gt;
### they also clarify that the copyright line can omit the year or include a range, the current year, or the original year. I always thought the first year that we did a single commit was best, and they had a link to an article that argues this too. I like that. https://matija.suklje.name/how-and-why-to-properly-write-copyright-statements-in-your-code&lt;br /&gt;
### they have a section on license compatiblity https://reuse.software/faq/#license-compatibility&lt;br /&gt;
#### apparently GPL isn&#039;t compatible with lots of license, because it says you can&#039;t add restrictions to it. that would make it incompatible with CC NC licenses, for example.&lt;br /&gt;
### god, both CERN and reuse.software want us to add comments or a cooresponding &#039;&amp;lt;file&amp;gt;.license&#039; file to *every* file to indicate its license. I was hoping instead that we could just put text that says &amp;quot;hardware files are CERN and software is GPL&amp;quot; but idk if that&#039;ll work :/&lt;br /&gt;
#### they have an &amp;quot;eaiser&amp;quot; method of defining a REUSE.toml file – but that&#039;s per-dir. So I&#039;d have to put all software in one dir and all CAD files in another dir. I guess that would work, but eventually someone will probably break it due to human error and volunteer chaos https://reuse.software/faq/#license-compatibility&lt;br /&gt;
## the faq had said they were going to apply to the FSF, but fsf.org has no mention of the CERN OHL&lt;br /&gt;
### this thread goes into some detail on why they &amp;quot;gave up&amp;quot; on GPL compatibility https://forums.ohwr.org/t/concerns-on-the-impact-of-ohl-on-gpl-community/848400&lt;br /&gt;
#### also some good history on the OHL from Javier Serrano at CERN. He said he gave a presentation on why using GPL was good for hardware, but after the Q&amp;amp;A he realized it wasn&#039;t. That was in 2015 at ORConf.&lt;br /&gt;
#### that thread linked to another cool open hardware forum. GOSH! https://forum.openhardware.science/&lt;br /&gt;
### here&#039;s the thread where CERN applied for OHL to be covered by OSI (which it got) https://lists.opensource.org/pipermail/license-review_lists.opensource.org/2020-June/004892.html&lt;br /&gt;
## back to the usage guide on CERN OHL, they also mention Debian&#039;s DEP5. DEP5 used to be supported by reuse.software, but it was deprecated&lt;br /&gt;
### DEP-5 is another machine-readable copyright/license standard, currently documented here https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/&lt;br /&gt;
#### man, I don&#039;t know which I like better: human-readable legaleze (well, readable only to a subset of superhumans) or machine-readable complexity&lt;br /&gt;
#### they use machine-readable license shortcodes, which are defined by spdx here https://spdx.org/licenses/&lt;br /&gt;
#### so we want&lt;br /&gt;
##### CERN-OHL-S-2.0&lt;br /&gt;
##### AGPL-3.0-or-later&lt;br /&gt;
##### CC-BY-SA-4.0&lt;br /&gt;
#### curiously, only two of the CC licenses are marked as &amp;quot;FSF libre&amp;quot; = CC-BY-4.0 and CC-BY-SA-4.0. None are &amp;quot;OSI Approved&amp;quot; (but see above because OSI uses them for docs!)&lt;br /&gt;
#### hah, cern is the opposite. their 2.0 OHLs are &amp;quot;OSI approved&amp;quot; but not &amp;quot;FSF libre&amp;quot;&lt;br /&gt;
#### the AGPL-3.0-or-later (or -only) is both &amp;quot;OSI approved&amp;quot; *and* &amp;quot;FSF libre&amp;quot; huh&lt;br /&gt;
### anyway, the DEP5 has a similar system to define regex-like globs of files under different licenses&lt;br /&gt;
### the end of the spec includes a &amp;quot;complex&amp;quot; example&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/&lt;br /&gt;
Source: https://www.example.com/code/venus&lt;br /&gt;
Upstream-Name: Planet Venus&lt;br /&gt;
Upstream-Contact: John Doe &amp;lt;jdoe@example.com&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Files:&lt;br /&gt;
 *&lt;br /&gt;
Copyright: 2008, John Doe &amp;lt;jdoe@example.com&amp;gt;&lt;br /&gt;
		   2007, Jane Smith &amp;lt;jsmith@example.org&amp;gt;&lt;br /&gt;
		   2007, Joe Average &amp;lt;joe@example.org&amp;gt;&lt;br /&gt;
		   2007, J. Random User &amp;lt;jr@users.example.com&amp;gt;&lt;br /&gt;
License: PSF-2&lt;br /&gt;
&lt;br /&gt;
Files:&lt;br /&gt;
 debian/*&lt;br /&gt;
Copyright: 2008, Dan Developer &amp;lt;dan@debian.example.com&amp;gt;&lt;br /&gt;
License: permissive&lt;br /&gt;
 Copying and distribution of this package, with or without modification,&lt;br /&gt;
 are permitted in any medium without royalty provided the copyright notice&lt;br /&gt;
 and this notice are preserved.&lt;br /&gt;
&lt;br /&gt;
Files:&lt;br /&gt;
 debian/patches/theme-diveintomark.patch&lt;br /&gt;
Copyright: 2008, Joe Hacker &amp;lt;hack@example.org&amp;gt;&lt;br /&gt;
License: GPL-2+&lt;br /&gt;
&lt;br /&gt;
Files:&lt;br /&gt;
 planet/vendor/compat_logging/*&lt;br /&gt;
Copyright: 2002, Mark Smith &amp;lt;msmith@example.org&amp;gt;&lt;br /&gt;
License: MIT&lt;br /&gt;
 [LICENSE TEXT]&lt;br /&gt;
&lt;br /&gt;
Files:&lt;br /&gt;
 planet/vendor/httplib2/*&lt;br /&gt;
Copyright: 2006, John Brown &amp;lt;brown@example.org&amp;gt;&lt;br /&gt;
License: MIT2&lt;br /&gt;
 Unspecified MIT style license.&lt;br /&gt;
&lt;br /&gt;
Files:&lt;br /&gt;
 planet/vendor/feedparser.py&lt;br /&gt;
Copyright: 2007, Mike Smith &amp;lt;mike@example.org&amp;gt;&lt;br /&gt;
License: PSF-2&lt;br /&gt;
&lt;br /&gt;
Files:&lt;br /&gt;
 planet/vendor/htmltmpl.py&lt;br /&gt;
Copyright: 2004, Thomas Brown &amp;lt;coder@example.org&amp;gt;&lt;br /&gt;
License: GPL-2+&lt;br /&gt;
&lt;br /&gt;
License: PSF-2&lt;br /&gt;
 [LICENSE TEXT]&lt;br /&gt;
&lt;br /&gt;
License: GPL-2+&lt;br /&gt;
 This program is free software; you can redistribute it and/or modify&lt;br /&gt;
 it under the terms of the GNU General Public License as published by&lt;br /&gt;
 the Free Software Foundation; either version 2 of the License, or&lt;br /&gt;
 (at your option) any later version.&lt;br /&gt;
 .&lt;br /&gt;
 This program is distributed in the hope that it will be useful,&lt;br /&gt;
 but WITHOUT ANY WARRANTY; without even the implied warranty of&lt;br /&gt;
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the&lt;br /&gt;
 GNU General Public License for more details.&lt;br /&gt;
 .&lt;br /&gt;
 You should have received a copy of the GNU General Public License&lt;br /&gt;
 along with this package; if not, see &amp;amp;lt;https://www.gnu.org/licenses/&amp;amp;gt;.&lt;br /&gt;
Comment:&lt;br /&gt;
 On Debian systems, the full text of the GNU General Public License&lt;br /&gt;
 version 2 can be found in the file &#039;/usr/share/common-licenses/GPL-2&#039;.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
### I was wondering if I could match all files of a given type at any depth, and it looks like this is accounted-for&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Patterns match pathnames that start at the root of the source tree. Thus, “Makefile.in” matches only the file at the root of the tree, but “*/Makefile.in” matches at any depth.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
### oh, it also says globs include slashes&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Only the wildcards * and ? apply; the former matches any number of characters (including none), the latter a single character. Both match slashes (/) and leading dots, unlike shell globs. The pattern *.in therefore matches any file whose name ends in .in anywhere in the source tree, not just at the top level.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
### so I could do something like&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Files:&lt;br /&gt;
 *&lt;br /&gt;
Copyright: 2023 Michael Altfield and Eco-Libre&lt;br /&gt;
License: CC-BY-SA-4.0&lt;br /&gt;
&lt;br /&gt;
Files:&lt;br /&gt;
 *.FCStd&lt;br /&gt;
Copyright: 2023 Michael Altfield and Eco-Libre&lt;br /&gt;
License: CERN-OHL-S-2.0&lt;br /&gt;
&lt;br /&gt;
Files:&lt;br /&gt;
 *.py&lt;br /&gt;
Copyright: 2023 Michael Altfield and Eco-Libre&lt;br /&gt;
License: AGPL-3.0-or-later&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
### but then it&#039;s not clear which overrrides the others&lt;br /&gt;
### oh, it says the last one that matches applies. So I did that perfect&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Multiple Files stanzas are allowed. The last stanza that matches a particular file applies to it. More general stanzas should therefore be given first, followed by more specific overrides.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
### honestly, that seems like the perfect happy-medium. It&#039;s less to maintain (or for maintainers to screw-up) than .license files everywhere (per REUSE). so it&#039;s more long-term durable. I just need to think of all possible file extensions for code that we&#039;ll use (it&#039;ll be more than just .py files, I&#039;m sure) and hardware files (stl would be CC, so that&#039;s caught by the first one but OpenSCAD could foreseably be one)&lt;br /&gt;
### hmm...I wonder how kdenlive files should be licensed. It&#039;s used to make media, but not the media itself.&lt;br /&gt;
### I asked my question on Stack Exchange too https://opensource.stackexchange.com/questions/15745/possible-to-triple-license-cern-ohl-s-2-0-agpl-3-0-cc-by-sa&lt;br /&gt;
### I also asked about kdenlive files here https://opensource.stackexchange.com/questions/15746/best-libre-license-for-kdenlive-files&lt;br /&gt;
## back to the usage guide of the CERN OHL. they do say you should use the SPDX headers, but that&#039;s REUSE – not DEP5&lt;br /&gt;
## they also recommend adding a &amp;quot;+&amp;quot; for &amp;quot;-or-later&amp;quot;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
CERN-OHL-S-2.0+&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## but I guess I have to place trust in FSF and/or CERN that they won&#039;t become evil and fuck-up future licenses to be not-libre. hmm. imagine if they got bought-out by John Deere.. Yeah, it&#039;s probably better to pin to the current version, and just do the copyright transfer in the CLA. Then we can control the license, and change it if we ever discover some new tech that necessitates changes to a new license&lt;br /&gt;
## for the copyright, they suggest &amp;quot;and others&amp;quot; – that might be better than just &amp;quot;and contributors to Eco-Libre&amp;quot;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Suggestion: You can optionally include a copyright notice to be printed&lt;br /&gt;
on the Product (remember you must keep intact any Notices in the source,&lt;br /&gt;
though). If you do, and your design includes part of other designs, you&lt;br /&gt;
should at least acknowledge the work is not all your own by using e.g.&lt;br /&gt;
Copyright c 2020 Sam Smith and others. In any case, do not include the&lt;br /&gt;
CERN logo.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# well we&#039;ll see if I got any answers on the forums&lt;br /&gt;
# in the meantime, I want to finish my CLA agreements&lt;br /&gt;
# yesterday I made a very slick looking libreoffice document with the individual CLA, but I realized today that it would be better if I could store it in reST and generate the PDF using sphinx or pandoc&lt;br /&gt;
## so, yeah, it would absolutely be better, but I really think I&#039;m letting perfect be the enemy of the good here. I&#039;m already spending weeks just to finish the ConfirmAccount extension on the wiki – just because I didn&#039;t have a Terms of Service, which sent me down this rabbit hole.&lt;br /&gt;
## I&#039;m going to make the reST -&amp;gt; PDF part a TODO. The libreoffice file is currently 64 KB and the PDF is 95 KB. I&#039;ll probably have maybe 4-10x that, as I add a corporate CLA and also some other less-important agreements for volunteers (I agree not to use AI. I agree to follow the CoC. Etc)&lt;br /&gt;
## oh wtf. I finished making the libreoffice for the corporate version of the contract (it&#039;s called &amp;quot;entity&amp;quot;) but the only difference in the file&#039;s contents is literally the subtitle&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Individual Contributor Exclusive License Agreement&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Entity Contributor Exclusive License Agreement&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## I also diff&#039;d the html version, just in-case it was a bug. same thing&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;h2 id=&amp;quot;tmp-subtitle&amp;quot;&amp;gt;&amp;lt;span id=&amp;quot;tmp-contributor-type&amp;quot;&amp;gt;Individual&amp;lt;/span&amp;gt; Contributor &amp;lt;span id=&amp;quot;tmp-contributor-exclusivity-1&amp;quot; class=&amp;quot;tmp-contributor-exclusivity-1&amp;quot;&amp;gt;Exclusive&amp;lt;/span&amp;gt; License Agreement&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;h2 id=&amp;quot;tmp-subtitle&amp;quot;&amp;gt;&amp;lt;span id=&amp;quot;tmp-contributor-type&amp;quot;&amp;gt;Entity&amp;lt;/span&amp;gt; Contributor &amp;lt;span id=&amp;quot;tmp-contributor-exclusivity-1&amp;quot; class=&amp;quot;tmp-contributor-exclusivity-1&amp;quot;&amp;gt;Exclusive&amp;lt;/span&amp;gt; License Agreement&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## maybe there would be differences if I chose a different patent option?&lt;br /&gt;
# idk, but I guess I only need one doc...&lt;br /&gt;
# TODO: finish the CLA docs in LibreOffice, put them on github somewhere, then do the other volunteer agreements, and then sign them myself&lt;br /&gt;
&lt;br /&gt;
= 2026-04-22 =&lt;br /&gt;
# picking up where we left-off yesterday, we&#039;re looking at examples of open-source CLAs&lt;br /&gt;
# Ideally we want a simple one for the wiki an a strong legal one for future volunteers to sign&lt;br /&gt;
# OpenJS has these https://openjsf.org/cla&lt;br /&gt;
## indivdual https://images.prismic.io/openjsf/4c740999-4bd7-4f69-8c4a-b80db0919690_OpenJS-Foundation-ICLA-2020-09-23.pdf&lt;br /&gt;
## corporate https://images.prismic.io/openjsf/7f4dc103-c6cf-41ab-a2e8-42248e8a45f2_OpenJS-Foundation-CCLA-2020-09-23.pdf&lt;br /&gt;
## they say they were made by the Linux Foundation&#039;s EasyCLA tool https://easycla.lfx.linuxfoundation.org/#/&lt;br /&gt;
### oh, we saw that one yesterday; it&#039;s authalled :/&lt;br /&gt;
# CNCF (kubernetes) also uses EasyCLA, which is apparently integrated into GitHub https://github.com/kubernetes/community/blob/main/CLA.md&lt;br /&gt;
# OpenBMC has these two; no idea what the doc&#039;s license is &lt;br /&gt;
## individual https://github.com/kubernetes/community/blob/main/CLA.md&lt;br /&gt;
## corporate https://drive.google.com/file/d/1d-2M8ng_Dl2j1odsvZ8o1QHAdHB-pNSH/edit&lt;br /&gt;
# here&#039;s python&#039;s; the license is unsaid https://www.python.org/psf/contrib/&lt;br /&gt;
# Apollo&#039;s derived its from Apache&#039;s https://contribute.apollographql.com/&lt;br /&gt;
# here&#039;s microsoft&#039;s https://opensource.microsoft.com/cla/&lt;br /&gt;
## actual doc is here; it&#039;s CC0 https://opensource.microsoft.com/pdf/microsoft-contribution-license-agreement.pdf&lt;br /&gt;
## it&#039;s pretty software focused, but I like that it&#039;s licensed openly&lt;br /&gt;
## it&#039;s also only good for individual contributions&lt;br /&gt;
# here&#039;s a short &amp;amp; sweet one by musescore, but it&#039;s not clear how it&#039;s licensed https://musescore.org/en/cla&lt;br /&gt;
# here&#039;s openmediavault&#039;s https://www.openmediavault.org/contributoragreement.html&lt;br /&gt;
## doc is actually here; it&#039;s derived from apache&#039;s CLA https://www.openmediavault.org/wp-content/uploads/2013/12/oca.pdf&lt;br /&gt;
# the link to openstack (openinfra) was bad; looks like they replaced their CLA with the Linux Foundation&#039;s DOC https://www.openmediavault.org/wp-content/uploads/2013/12/oca.pdf&lt;br /&gt;
# puppet uses this CLA Assistant one, based on Apache&#039;s https://cla-assistant.io/puppetlabs/&lt;br /&gt;
# sangoma uses this one, also using CLA Assistant, but it doesn&#039;t mention apache https://web.archive.org/web/20230429235353/https://oss-cla.sangoma.com/asterisk/asterisk&lt;br /&gt;
# the W3C&#039;s looks pretty good, and specifc to them https://www.w3.org/community/about/process/cla/&lt;br /&gt;
## the license isn&#039;t explicilty stated, but the footer says it&#039;s website contents is licensed by, uh, their own &amp;quot;document license - 2023 version&amp;quot; https://www.w3.org/copyright/document-license-2023/&lt;br /&gt;
# here&#039;s one by zed; it&#039;s not clear how the text is licensed https://zed.dev/cla&lt;br /&gt;
# KDE announced theirs here https://ev.kde.org/2008/08/22/2008-08-22-fsfe-welcomes-kde-s-fiduciary-license-agreement/&lt;br /&gt;
## actual doc about the FLA is here https://ev.kde.org/rules/fla/&lt;br /&gt;
## actual doc is here&lt;br /&gt;
### individuals https://ev.kde.org/resources/FLA-2.0-individual.pdf&lt;br /&gt;
### companies https://ev.kde.org/resources/FLA-2.0-entity.pdf&lt;br /&gt;
## they seem pretty good, albeit they&#039;re very focused on software (not hardware)&lt;br /&gt;
## it says it&#039;s based on this https://contributoragreements.org/&lt;br /&gt;
### and that site&#039;s footer says its contents is CC BY-SA 4.0. Perfect.&lt;br /&gt;
## I went through their CLA Chooser generator/wizard https://contributoragreements.org/ca-cla-chooser/#&lt;br /&gt;
# that spat-out two, one for individual and one for corporate&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
	Fiduciary License Agreement 2.0&lt;br /&gt;
	based on the&lt;br /&gt;
	Individual Contributor Exclusive License Agreement&lt;br /&gt;
	(including the Traditional Patent License OPTION)&lt;br /&gt;
&lt;br /&gt;
	Thank you for your interest in contributing to Eco-Libre&#039;s ____________________ (&amp;quot;We&amp;quot; or &amp;quot;Us&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
	The purpose of this contributor agreement (&amp;quot;Agreement&amp;quot;) is to clarify and document the rights granted by contributors to Us. To make this document effective, please follow the instructions at ____________________.&lt;br /&gt;
	Preamble&lt;br /&gt;
&lt;br /&gt;
	Software is deeply embedded in all aspects of our lives and it is important that it empower, rather than restrict us. Free Software gives everybody the rights to use, understand, adapt and share software. These rights help support other fundamental freedoms like freedom of speech, press and privacy.&lt;br /&gt;
&lt;br /&gt;
	Development of Free Software can follow many patterns. In some cases whole development is handled by a sole programmer or a small group of people. But usually, the creation and maintenance of software is a complex process that requires the contribution of many individuals. This also affects who owns the rights to the software. In the latter case, rights in software are owned jointly by a great number of individuals.&lt;br /&gt;
&lt;br /&gt;
	To tackle this issue some projects require a full copyright assignment to be signed by all contributors. The problem with such assignments is that they often lack checks and balances that would protect the contributors from potential abuse of power from the new copyright holder.&lt;br /&gt;
&lt;br /&gt;
	FSFE’s Fiduciary License Agreement (FLA) was created by the Free Software Foundation Europe e.V. with just that in mind – to concentrate all deciding power within one entity and prevent fragmentation of rights on one hand, while on the other preventing that single entity from abusing its power. The main aim is to ensure that the software covered under the FLA will forever remain Free Software.&lt;br /&gt;
&lt;br /&gt;
	This process only serves for the transfer of economic rights. So-called moral rights (e.g. authors right to be identified as author) remain with the original author(s) and are inalienable.&lt;br /&gt;
	How to use this FLA&lt;br /&gt;
&lt;br /&gt;
	If You are an employee and have created the Contribution as part of your employment, You need to have Your employer approve this Agreement. If You do not own the Copyright in Your Contribution, any other author of the Contribution should also sign this. In any event, please contact Us at https://www.eco-libre.org/contact.&lt;br /&gt;
	Definitions&lt;br /&gt;
&lt;br /&gt;
	&amp;quot;You&amp;quot; means the individual Copyright owner who Submits a Contribution to Us; or&lt;br /&gt;
&lt;br /&gt;
	if the Copyright in the Contribution is held by a Legal Entity and the Contribution is being Submitted to Us on behalf of such Legal Entity, &amp;quot;You&amp;quot; means such Legal Entity.&lt;br /&gt;
&lt;br /&gt;
	&amp;quot;Contribution&amp;quot; means any original work of authorship, including any original modifications or additions to an existing work of authorship, Submitted for inclusion into Material by You to Us, in which you own the Copyright.&lt;br /&gt;
&lt;br /&gt;
	&amp;quot;Copyright&amp;quot; means all rights protecting works of authorship, including copyright, moral and neighboring rights, as appropriate, for the full term of their existence.&lt;br /&gt;
&lt;br /&gt;
	&amp;quot;Material&amp;quot; means the software and/or documentation of ____________________ that we make available to third parties.&lt;br /&gt;
&lt;br /&gt;
	&amp;quot;Submit&amp;quot; means any act by which a Contribution is transferred to Us by You by means of tangible or intangible media, including but not limited to electronic mailing lists, source code control systems, and issue tracking systems, but excluding any transfer that is conspicuously marked or otherwise designated in writing by You as &amp;quot;Not a Contribution.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
	&amp;quot;Documentation&amp;quot; means any non-software portion of a Contribution.&lt;br /&gt;
	License grant&lt;br /&gt;
	Copyright license to Us&lt;br /&gt;
&lt;br /&gt;
	Subject to the terms and conditions of this Agreement, You hereby grant to Us a worldwide, royalty-free, exclusive, perpetual and irrevocable (except as stated in Section &amp;quot;Term&amp;quot;) license, with the right to transfer an unlimited number of non-exclusive licenses or to grant sublicenses to third parties, under the Copyright covering the Contribution to use the Contribution by all means, including, but not limited to:&lt;br /&gt;
		publish the Contribution,&lt;br /&gt;
		modify the Contribution,&lt;br /&gt;
		prepare derivative works based upon or containing the Contribution and/or to combine the Contribution with other Materials,&lt;br /&gt;
		reproduce the Contribution in original or modified form,&lt;br /&gt;
		distribute, to make the Contribution available to the public, display and publicly perform the Contribution in original or modified form.&lt;br /&gt;
	Moral rights&lt;br /&gt;
&lt;br /&gt;
	Moral Rights remain unaffected to the extent they are recognized and not waivable by applicable law. Notwithstanding, You may add your name to the attribution mechanism customary used in the Materials you Contribute to, such as the header of the source code files of Your Contribution, and We will respect this attribution when using Your Contribution.&lt;br /&gt;
	Copyright license back to You&lt;br /&gt;
&lt;br /&gt;
	Upon such grant of rights to Us, We immediately grant to You a worldwide, royalty-free, non-exclusive, perpetual and irrevocable license, with the right to transfer an unlimited number of non-exclusive licenses or to grant sublicenses to third parties, under the Copyright covering the Contribution to use the Contribution by all means, including, but not limited to:&lt;br /&gt;
		publish the Contribution,&lt;br /&gt;
		modify the Contribution,&lt;br /&gt;
		prepare derivative works based upon or containing the Contribution and/or to combine the Contribution with other Materials,&lt;br /&gt;
		reproduce the Contribution in original or modified form,&lt;br /&gt;
		distribute, to make the Contribution available to the public, display and publicly perform the Contribution in original or modified form.&lt;br /&gt;
&lt;br /&gt;
	This license back is limited to the Contribution and does not provide any rights to the Material.&lt;br /&gt;
	Patents&lt;br /&gt;
	Patent license&lt;br /&gt;
&lt;br /&gt;
	Subject to the terms and conditions of this Agreement You hereby grant to Us and to recipients of Materials distributed by Us a worldwide, royalty-free, non-exclusive, perpetual and irrevocable (except as stated in Subsection &amp;quot;Revocation of patent license&amp;quot;) patent license, with the right to transfer an unlimited number of non-exclusive licenses or to grant sublicenses to third parties, to make, have made, use, sell, offer for sale, import and otherwise transfer the Contribution and the Contribution in combination with any Material (and portions of such combination). This license applies to all patents owned or controlled by You, whether already acquired or hereafter acquired, that would be infringed by making, having made, using, selling, offering for sale, importing or otherwise transferring of Your Contribution(s) alone or by combination of Your Contribution(s) with any Material.&lt;br /&gt;
	Revocation of patent license&lt;br /&gt;
&lt;br /&gt;
	You reserve the right to revoke the patent license stated in Subsection &amp;quot;Patent license&amp;quot; if We make any infringement claim that is targeted at your Contribution and not asserted for a Defensive Purpose. An assertion of claims of the Patents shall be considered for a &amp;quot;Defensive Purpose&amp;quot; if the claims are asserted against an entity that has filed, maintained, threatened, or voluntarily participated in a patent infringement lawsuit against Us or any of Our licensees.&lt;br /&gt;
	License obligations by Us&lt;br /&gt;
&lt;br /&gt;
	We may, but are under no obligation to, include the Contribution You Submitted to Us into the Material.&lt;br /&gt;
&lt;br /&gt;
	We agree to (sub)license the Contribution or any Materials containing, based on or derived from your Contribution under the terms of any licenses that qualify as [Free Software](https://www.gnu.org/philosophy/free-sw.html) as defined by the Free Software Foundation and at the same time qualify as [Open Source](https://opensource.org/osd) as defined by the Open Source Initiative. For clarification, should we make available any Material under a non-free or non-open license, we must make a version of such Material available under a free and open license too.&lt;br /&gt;
&lt;br /&gt;
	More specifically and in strict accordance with the above paragraph, we agree to (sub)license the Contribution or any Materials containing, based on or derived from the Contribution only under the terms of the following license(s) GPL-3.0, MIT (including any right to adopt any future version of a license if permitted), whereby any non-free or non-open licenses need to be listed as well.&lt;br /&gt;
&lt;br /&gt;
	We agree to license patents owned or controlled by You only to the extent necessary to (sub)license Your Contribution(s) and the combination of Your Contribution(s) with the Material under the terms of any licenses the Free Software Foundation classifies as Free Software licenses and which are approved by the Open Source Initiative as Open Source licenses..&lt;br /&gt;
	Disclaimer&lt;br /&gt;
	**We acknowledge that you provide the Contribution &amp;quot;as is&amp;quot;.** **More particularly, You disclaim all express or implied warranties including, without limitation, any implied warranty of satisfactory quality, fitness for a particular purpose and non-infringement. To the extent that any such warranties cannot be disclaimed, such warranty is limited in duration and extent to the minimum period and extent permitted by law.**&lt;br /&gt;
	Consequential damage waiver&lt;br /&gt;
&lt;br /&gt;
	**To the maximum extent permitted by applicable law, in no event will You or We be liable for any loss of profits, loss of anticipated savings, loss of data, indirect, special, incidental, consequential and exemplary damages arising out of this Agreement regardless of the legal or equitable theory (contract, tort or otherwise) upon which the claim is based.**&lt;br /&gt;
	Approximation of disclaimer and damage waiver&lt;br /&gt;
&lt;br /&gt;
	**If the disclaimer and damage waiver mentioned in Subsection &amp;quot;Disclaimer of warranty&amp;quot; and Section &amp;quot;Consequential damage waiver&amp;quot; cannot be given legal effect under applicable local law, reviewing courts shall apply local law that most closely approximates an absolute waiver of all civil or contractual liability in connection with the Contribution.**&lt;br /&gt;
	Term&lt;br /&gt;
&lt;br /&gt;
	This Agreement shall come into effect upon Your acceptance of the terms and conditions.&lt;br /&gt;
&lt;br /&gt;
	This Agreement shall apply for the term of the copyright and patents licensed here. However, You shall have the right to terminate the Agreement if We do not fulfill the obligations as set forth in Section &amp;quot;License obligations by Us&amp;quot;. Such termination must be made in writing.&lt;br /&gt;
&lt;br /&gt;
	In the event of a termination of this Agreement Sections &amp;quot;Disclaimer&amp;quot;, &amp;quot;Term&amp;quot; and &amp;quot;Miscellaneous&amp;quot; shall survive such termination and shall remain in full force thereafter. For the avoidance of doubt, Free and Open Source Software (sub)licenses that have already been granted for Contributions at the date of the termination shall remain in full force after the termination of this Agreement.&lt;br /&gt;
	Miscellaneous&lt;br /&gt;
&lt;br /&gt;
	This Agreement and all disputes, claims, actions, suits or other proceedings arising out of this agreement or relating in any way to it shall be governed by the laws of Ecuador excluding its private international law provisions.&lt;br /&gt;
&lt;br /&gt;
	This Agreement sets out the entire agreement between You and Us for Your Contributions to Us and overrides all other agreements or understandings.&lt;br /&gt;
&lt;br /&gt;
	In case of Your death, this agreement shall continue with Your heirs. In case of more than one heir, all heirs must exercise their rights through a commonly authorized person.&lt;br /&gt;
&lt;br /&gt;
	If any provision of this Agreement is found void and unenforceable, such provision will be replaced to the extent possible with a provision that comes closest to the meaning of the original provision and that is enforceable. The terms and conditions set forth in this Agreement shall apply notwithstanding any failure of essential purpose of this Agreement or any limited remedy to the maximum extent possible under law.&lt;br /&gt;
&lt;br /&gt;
	You agree to notify Us of any facts or circumstances of which you become aware that would make Your representations under this Agreement inaccurate in any respect.&lt;br /&gt;
	You&lt;br /&gt;
	Date:	&lt;br /&gt;
	Name:	&lt;br /&gt;
	Title:	&lt;br /&gt;
	Address:	&lt;br /&gt;
	Us&lt;br /&gt;
	Date:	&lt;br /&gt;
	Name:	&lt;br /&gt;
	Title:	&lt;br /&gt;
	Address:	&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
	Fiduciary License Agreement 2.0&lt;br /&gt;
	based on the&lt;br /&gt;
	Entity Contributor Exclusive License Agreement&lt;br /&gt;
	(including the Traditional Patent License OPTION)&lt;br /&gt;
&lt;br /&gt;
	Thank you for your interest in contributing to Eco-Libre&#039;s ____________________ (&amp;quot;We&amp;quot; or &amp;quot;Us&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
	The purpose of this contributor agreement (&amp;quot;Agreement&amp;quot;) is to clarify and document the rights granted by contributors to Us. To make this document effective, please follow the instructions at ____________________.&lt;br /&gt;
	Preamble&lt;br /&gt;
&lt;br /&gt;
	Software is deeply embedded in all aspects of our lives and it is important that it empower, rather than restrict us. Free Software gives everybody the rights to use, understand, adapt and share software. These rights help support other fundamental freedoms like freedom of speech, press and privacy.&lt;br /&gt;
&lt;br /&gt;
	Development of Free Software can follow many patterns. In some cases whole development is handled by a sole programmer or a small group of people. But usually, the creation and maintenance of software is a complex process that requires the contribution of many individuals. This also affects who owns the rights to the software. In the latter case, rights in software are owned jointly by a great number of individuals.&lt;br /&gt;
&lt;br /&gt;
	To tackle this issue some projects require a full copyright assignment to be signed by all contributors. The problem with such assignments is that they often lack checks and balances that would protect the contributors from potential abuse of power from the new copyright holder.&lt;br /&gt;
&lt;br /&gt;
	FSFE’s Fiduciary License Agreement (FLA) was created by the Free Software Foundation Europe e.V. with just that in mind – to concentrate all deciding power within one entity and prevent fragmentation of rights on one hand, while on the other preventing that single entity from abusing its power. The main aim is to ensure that the software covered under the FLA will forever remain Free Software.&lt;br /&gt;
&lt;br /&gt;
	This process only serves for the transfer of economic rights. So-called moral rights (e.g. authors right to be identified as author) remain with the original author(s) and are inalienable.&lt;br /&gt;
	How to use this FLA&lt;br /&gt;
&lt;br /&gt;
	If You are an employee and have created the Contribution as part of your employment, You need to have Your employer approve this Agreement. If You do not own the Copyright in Your Contribution, any other author of the Contribution should also sign this. In any event, please contact Us at https://www.eco-libre.org/contact.&lt;br /&gt;
	Definitions&lt;br /&gt;
&lt;br /&gt;
	&amp;quot;You&amp;quot; means the individual Copyright owner who Submits a Contribution to Us; or&lt;br /&gt;
&lt;br /&gt;
	if the Copyright in the Contribution is held by a Legal Entity and the Contribution is being Submitted to Us on behalf of such Legal Entity, &amp;quot;You&amp;quot; means such Legal Entity.&lt;br /&gt;
&lt;br /&gt;
	&amp;quot;Contribution&amp;quot; means any original work of authorship, including any original modifications or additions to an existing work of authorship, Submitted for inclusion into Material by You to Us, in which you own the Copyright.&lt;br /&gt;
&lt;br /&gt;
	&amp;quot;Copyright&amp;quot; means all rights protecting works of authorship, including copyright, moral and neighboring rights, as appropriate, for the full term of their existence.&lt;br /&gt;
&lt;br /&gt;
	&amp;quot;Material&amp;quot; means the software and/or documentation of ____________________ that we make available to third parties.&lt;br /&gt;
&lt;br /&gt;
	&amp;quot;Submit&amp;quot; means any act by which a Contribution is transferred to Us by You by means of tangible or intangible media, including but not limited to electronic mailing lists, source code control systems, and issue tracking systems, but excluding any transfer that is conspicuously marked or otherwise designated in writing by You as &amp;quot;Not a Contribution.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
	&amp;quot;Documentation&amp;quot; means any non-software portion of a Contribution.&lt;br /&gt;
	License grant&lt;br /&gt;
	Copyright license to Us&lt;br /&gt;
&lt;br /&gt;
	Subject to the terms and conditions of this Agreement, You hereby grant to Us a worldwide, royalty-free, exclusive, perpetual and irrevocable (except as stated in Section &amp;quot;Term&amp;quot;) license, with the right to transfer an unlimited number of non-exclusive licenses or to grant sublicenses to third parties, under the Copyright covering the Contribution to use the Contribution by all means, including, but not limited to:&lt;br /&gt;
		publish the Contribution,&lt;br /&gt;
		modify the Contribution,&lt;br /&gt;
		prepare derivative works based upon or containing the Contribution and/or to combine the Contribution with other Materials,&lt;br /&gt;
		reproduce the Contribution in original or modified form,&lt;br /&gt;
		distribute, to make the Contribution available to the public, display and publicly perform the Contribution in original or modified form.&lt;br /&gt;
	Moral rights&lt;br /&gt;
&lt;br /&gt;
	Moral Rights remain unaffected to the extent they are recognized and not waivable by applicable law. Notwithstanding, You may add your name to the attribution mechanism customary used in the Materials you Contribute to, such as the header of the source code files of Your Contribution, and We will respect this attribution when using Your Contribution.&lt;br /&gt;
	Copyright license back to You&lt;br /&gt;
&lt;br /&gt;
	Upon such grant of rights to Us, We immediately grant to You a worldwide, royalty-free, non-exclusive, perpetual and irrevocable license, with the right to transfer an unlimited number of non-exclusive licenses or to grant sublicenses to third parties, under the Copyright covering the Contribution to use the Contribution by all means, including, but not limited to:&lt;br /&gt;
		publish the Contribution,&lt;br /&gt;
		modify the Contribution,&lt;br /&gt;
		prepare derivative works based upon or containing the Contribution and/or to combine the Contribution with other Materials,&lt;br /&gt;
		reproduce the Contribution in original or modified form,&lt;br /&gt;
		distribute, to make the Contribution available to the public, display and publicly perform the Contribution in original or modified form.&lt;br /&gt;
&lt;br /&gt;
	This license back is limited to the Contribution and does not provide any rights to the Material.&lt;br /&gt;
	Patents&lt;br /&gt;
	Patent license&lt;br /&gt;
&lt;br /&gt;
	Subject to the terms and conditions of this Agreement You hereby grant to Us and to recipients of Materials distributed by Us a worldwide, royalty-free, non-exclusive, perpetual and irrevocable (except as stated in Subsection &amp;quot;Revocation of patent license&amp;quot;) patent license, with the right to transfer an unlimited number of non-exclusive licenses or to grant sublicenses to third parties, to make, have made, use, sell, offer for sale, import and otherwise transfer the Contribution and the Contribution in combination with any Material (and portions of such combination). This license applies to all patents owned or controlled by You, whether already acquired or hereafter acquired, that would be infringed by making, having made, using, selling, offering for sale, importing or otherwise transferring of Your Contribution(s) alone or by combination of Your Contribution(s) with any Material.&lt;br /&gt;
	Revocation of patent license&lt;br /&gt;
&lt;br /&gt;
	You reserve the right to revoke the patent license stated in Subsection &amp;quot;Patent license&amp;quot; if We make any infringement claim that is targeted at your Contribution and not asserted for a Defensive Purpose. An assertion of claims of the Patents shall be considered for a &amp;quot;Defensive Purpose&amp;quot; if the claims are asserted against an entity that has filed, maintained, threatened, or voluntarily participated in a patent infringement lawsuit against Us or any of Our licensees.&lt;br /&gt;
	License obligations by Us&lt;br /&gt;
&lt;br /&gt;
	We may, but are under no obligation to, include the Contribution You Submitted to Us into the Material.&lt;br /&gt;
&lt;br /&gt;
	We agree to (sub)license the Contribution or any Materials containing, based on or derived from your Contribution under the terms of any licenses that qualify as [Free Software](https://www.gnu.org/philosophy/free-sw.html) as defined by the Free Software Foundation and at the same time qualify as [Open Source](https://opensource.org/osd) as defined by the Open Source Initiative. For clarification, should we make available any Material under a non-free or non-open license, we must make a version of such Material available under a free and open license too.&lt;br /&gt;
&lt;br /&gt;
	More specifically and in strict accordance with the above paragraph, we agree to (sub)license the Contribution or any Materials containing, based on or derived from the Contribution only under the terms of the following license(s) GPL-3.0, MIT (including any right to adopt any future version of a license if permitted), whereby any non-free or non-open licenses need to be listed as well.&lt;br /&gt;
&lt;br /&gt;
	We agree to license patents owned or controlled by You only to the extent necessary to (sub)license Your Contribution(s) and the combination of Your Contribution(s) with the Material under the terms of any licenses the Free Software Foundation classifies as Free Software licenses and which are approved by the Open Source Initiative as Open Source licenses..&lt;br /&gt;
	Disclaimer&lt;br /&gt;
	**We acknowledge that you provide the Contribution &amp;quot;as is&amp;quot;.** **More particularly, You disclaim all express or implied warranties including, without limitation, any implied warranty of satisfactory quality, fitness for a particular purpose and non-infringement. To the extent that any such warranties cannot be disclaimed, such warranty is limited in duration and extent to the minimum period and extent permitted by law.**&lt;br /&gt;
	Consequential damage waiver&lt;br /&gt;
&lt;br /&gt;
	**To the maximum extent permitted by applicable law, in no event will You or We be liable for any loss of profits, loss of anticipated savings, loss of data, indirect, special, incidental, consequential and exemplary damages arising out of this Agreement regardless of the legal or equitable theory (contract, tort or otherwise) upon which the claim is based.**&lt;br /&gt;
	Approximation of disclaimer and damage waiver&lt;br /&gt;
&lt;br /&gt;
	**If the disclaimer and damage waiver mentioned in Subsection &amp;quot;Disclaimer of warranty&amp;quot; and Section &amp;quot;Consequential damage waiver&amp;quot; cannot be given legal effect under applicable local law, reviewing courts shall apply local law that most closely approximates an absolute waiver of all civil or contractual liability in connection with the Contribution.**&lt;br /&gt;
	Term&lt;br /&gt;
&lt;br /&gt;
	This Agreement shall come into effect upon Your acceptance of the terms and conditions.&lt;br /&gt;
&lt;br /&gt;
	This Agreement shall apply for the term of the copyright and patents licensed here. However, You shall have the right to terminate the Agreement if We do not fulfill the obligations as set forth in Section &amp;quot;License obligations by Us&amp;quot;. Such termination must be made in writing.&lt;br /&gt;
&lt;br /&gt;
	In the event of a termination of this Agreement Sections &amp;quot;Disclaimer&amp;quot;, &amp;quot;Term&amp;quot; and &amp;quot;Miscellaneous&amp;quot; shall survive such termination and shall remain in full force thereafter. For the avoidance of doubt, Free and Open Source Software (sub)licenses that have already been granted for Contributions at the date of the termination shall remain in full force after the termination of this Agreement.&lt;br /&gt;
	Miscellaneous&lt;br /&gt;
&lt;br /&gt;
	This Agreement and all disputes, claims, actions, suits or other proceedings arising out of this agreement or relating in any way to it shall be governed by the laws of Ecuador excluding its private international law provisions.&lt;br /&gt;
&lt;br /&gt;
	This Agreement sets out the entire agreement between You and Us for Your Contributions to Us and overrides all other agreements or understandings.&lt;br /&gt;
&lt;br /&gt;
	In case of Your death, this agreement shall continue with Your heirs. In case of more than one heir, all heirs must exercise their rights through a commonly authorized person.&lt;br /&gt;
&lt;br /&gt;
	If any provision of this Agreement is found void and unenforceable, such provision will be replaced to the extent possible with a provision that comes closest to the meaning of the original provision and that is enforceable. The terms and conditions set forth in this Agreement shall apply notwithstanding any failure of essential purpose of this Agreement or any limited remedy to the maximum extent possible under law.&lt;br /&gt;
&lt;br /&gt;
	You agree to notify Us of any facts or circumstances of which you become aware that would make Your representations under this Agreement inaccurate in any respect.&lt;br /&gt;
	You&lt;br /&gt;
	Date:	&lt;br /&gt;
	Name:	&lt;br /&gt;
	Title:	&lt;br /&gt;
	Address:	&lt;br /&gt;
	Us&lt;br /&gt;
	Date:	&lt;br /&gt;
	Name:	&lt;br /&gt;
	Title:	&lt;br /&gt;
	Address:	&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## the generator didn&#039;t let me choose &amp;quot;CC BY-SA&amp;quot; as one of the licnese, so I chose &amp;quot;MIT&amp;quot; so we could find/replace it later&lt;br /&gt;
# oh, if I change the first page&#039;s option to &amp;quot;let me do what I want&amp;quot; then the second page has an option to include CC BY-SA. that changed it to:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	Contributor Agreement&lt;br /&gt;
	Individual Contributor Exclusive License Agreement&lt;br /&gt;
	(including the Traditional Patent License OPTION)&lt;br /&gt;
&lt;br /&gt;
	Thank you for your interest in contributing to Eco-Libre&#039;s ____________________ (&amp;quot;We&amp;quot; or &amp;quot;Us&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
	The purpose of this contributor agreement (&amp;quot;Agreement&amp;quot;) is to clarify and document the rights granted by contributors to Us. To make this document effective, please follow the instructions at ____________________.&lt;br /&gt;
	How to use this Contributor Agreement&lt;br /&gt;
&lt;br /&gt;
	If You are an employee and have created the Contribution as part of your employment, You need to have Your employer approve this Agreement. If You do not own the Copyright in Your Contribution, any other author of the Contribution should also sign this. In any event, please contact Us at https://www.eco-libre.org/contact.&lt;br /&gt;
	Definitions&lt;br /&gt;
&lt;br /&gt;
	&amp;quot;You&amp;quot; means the individual Copyright owner who Submits a Contribution to Us; or&lt;br /&gt;
&lt;br /&gt;
	if the Copyright in the Contribution is held by a Legal Entity and the Contribution is being Submitted to Us on behalf of such Legal Entity, &amp;quot;You&amp;quot; means such Legal Entity.&lt;br /&gt;
&lt;br /&gt;
	&amp;quot;Contribution&amp;quot; means any original work of authorship, including any original modifications or additions to an existing work of authorship, Submitted for inclusion into Material by You to Us, in which you own the Copyright.&lt;br /&gt;
&lt;br /&gt;
	&amp;quot;Copyright&amp;quot; means all rights protecting works of authorship, including copyright, moral and neighboring rights, as appropriate, for the full term of their existence.&lt;br /&gt;
&lt;br /&gt;
	&amp;quot;Material&amp;quot; means the software and/or documentation of ____________________ that we make available to third parties.&lt;br /&gt;
&lt;br /&gt;
	&amp;quot;Submit&amp;quot; means any act by which a Contribution is transferred to Us by You by means of tangible or intangible media, including but not limited to electronic mailing lists, source code control systems, and issue tracking systems, but excluding any transfer that is conspicuously marked or otherwise designated in writing by You as &amp;quot;Not a Contribution.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
	&amp;quot;Documentation&amp;quot; means any non-software portion of a Contribution.&lt;br /&gt;
	License grant&lt;br /&gt;
	Copyright license to Us&lt;br /&gt;
&lt;br /&gt;
	Subject to the terms and conditions of this Agreement, You hereby grant to Us a worldwide, royalty-free, exclusive, perpetual and irrevocable (except as stated in Section &amp;quot;Term&amp;quot;) license, with the right to transfer an unlimited number of non-exclusive licenses or to grant sublicenses to third parties, under the Copyright covering the Contribution to use the Contribution by all means, including, but not limited to:&lt;br /&gt;
		publish the Contribution,&lt;br /&gt;
		modify the Contribution,&lt;br /&gt;
		prepare derivative works based upon or containing the Contribution and/or to combine the Contribution with other Materials,&lt;br /&gt;
		reproduce the Contribution in original or modified form,&lt;br /&gt;
		distribute, to make the Contribution available to the public, display and publicly perform the Contribution in original or modified form.&lt;br /&gt;
	Moral rights&lt;br /&gt;
&lt;br /&gt;
	Moral Rights remain unaffected to the extent they are recognized and not waivable by applicable law. Notwithstanding, You may add your name to the attribution mechanism customary used in the Materials you Contribute to, such as the header of the source code files of Your Contribution, and We will respect this attribution when using Your Contribution.&lt;br /&gt;
	Copyright license back to You&lt;br /&gt;
&lt;br /&gt;
	Upon such grant of rights to Us, We immediately grant to You a worldwide, royalty-free, non-exclusive, perpetual and irrevocable license, with the right to transfer an unlimited number of non-exclusive licenses or to grant sublicenses to third parties, under the Copyright covering the Contribution to use the Contribution by all means, including, but not limited to:&lt;br /&gt;
		publish the Contribution,&lt;br /&gt;
		modify the Contribution,&lt;br /&gt;
		prepare derivative works based upon or containing the Contribution and/or to combine the Contribution with other Materials,&lt;br /&gt;
		reproduce the Contribution in original or modified form,&lt;br /&gt;
		distribute, to make the Contribution available to the public, display and publicly perform the Contribution in original or modified form.&lt;br /&gt;
&lt;br /&gt;
	This license back is limited to the Contribution and does not provide any rights to the Material.&lt;br /&gt;
	Patents&lt;br /&gt;
	Patent license&lt;br /&gt;
&lt;br /&gt;
	Subject to the terms and conditions of this Agreement You hereby grant to Us and to recipients of Materials distributed by Us a worldwide, royalty-free, non-exclusive, perpetual and irrevocable (except as stated in Subsection &amp;quot;Revocation of patent license&amp;quot;) patent license, with the right to transfer an unlimited number of non-exclusive licenses or to grant sublicenses to third parties, to make, have made, use, sell, offer for sale, import and otherwise transfer the Contribution and the Contribution in combination with any Material (and portions of such combination). This license applies to all patents owned or controlled by You, whether already acquired or hereafter acquired, that would be infringed by making, having made, using, selling, offering for sale, importing or otherwise transferring of Your Contribution(s) alone or by combination of Your Contribution(s) with any Material.&lt;br /&gt;
	Revocation of patent license&lt;br /&gt;
&lt;br /&gt;
	You reserve the right to revoke the patent license stated in Subsection &amp;quot;Patent license&amp;quot; if We make any infringement claim that is targeted at your Contribution and not asserted for a Defensive Purpose. An assertion of claims of the Patents shall be considered for a &amp;quot;Defensive Purpose&amp;quot; if the claims are asserted against an entity that has filed, maintained, threatened, or voluntarily participated in a patent infringement lawsuit against Us or any of Our licensees.&lt;br /&gt;
	License obligations by Us&lt;br /&gt;
&lt;br /&gt;
	We may, but are under no obligation to, include the Contribution You Submitted to Us into the Material.&lt;br /&gt;
&lt;br /&gt;
	We agree to license the Contribution only under the terms of the following license(s) GPL-3.0 (including any right to adopt any future version of a license if permitted), whereby any non-free or non-open licenses need to be listed as well.&lt;br /&gt;
&lt;br /&gt;
	In addition, We may use the following licenses for Documentation in the Contribution: CC-BY-SA-4.0 (including any right to adopt any future version of a license).&lt;br /&gt;
&lt;br /&gt;
	We agree to license patents owned or controlled by You only to the extent necessary to (sub)license Your Contribution(s) and the combination of Your Contribution(s) with the Material under the terms of the following GPL-3.0 license(s).&lt;br /&gt;
	Disclaimer&lt;br /&gt;
	**We acknowledge that you provide the Contribution &amp;quot;as is&amp;quot;.** **More particularly, You disclaim all express or implied warranties including, without limitation, any implied warranty of satisfactory quality, fitness for a particular purpose and non-infringement. To the extent that any such warranties cannot be disclaimed, such warranty is limited in duration and extent to the minimum period and extent permitted by law.**&lt;br /&gt;
	Consequential damage waiver&lt;br /&gt;
&lt;br /&gt;
	**To the maximum extent permitted by applicable law, in no event will You or We be liable for any loss of profits, loss of anticipated savings, loss of data, indirect, special, incidental, consequential and exemplary damages arising out of this Agreement regardless of the legal or equitable theory (contract, tort or otherwise) upon which the claim is based.**&lt;br /&gt;
	Approximation of disclaimer and damage waiver&lt;br /&gt;
&lt;br /&gt;
	**If the disclaimer and damage waiver mentioned in Subsection &amp;quot;Disclaimer of warranty&amp;quot; and Section &amp;quot;Consequential damage waiver&amp;quot; cannot be given legal effect under applicable local law, reviewing courts shall apply local law that most closely approximates an absolute waiver of all civil or contractual liability in connection with the Contribution.**&lt;br /&gt;
	Term&lt;br /&gt;
&lt;br /&gt;
	This Agreement shall come into effect upon Your acceptance of the terms and conditions.&lt;br /&gt;
&lt;br /&gt;
	This Agreement shall apply for the term of the copyright and patents licensed here. However, You shall have the right to terminate the Agreement if We do not fulfill the obligations as set forth in Section &amp;quot;License obligations by Us&amp;quot;. Such termination must be made in writing.&lt;br /&gt;
&lt;br /&gt;
	In the event of a termination of this Agreement Sections &amp;quot;Disclaimer&amp;quot;, &amp;quot;Term&amp;quot; and &amp;quot;Miscellaneous&amp;quot; shall survive such termination and shall remain in full force thereafter. For the avoidance of doubt, Free and Open Source Software (sub)licenses that have already been granted for Contributions at the date of the termination shall remain in full force after the termination of this Agreement.&lt;br /&gt;
	Miscellaneous&lt;br /&gt;
&lt;br /&gt;
	This Agreement and all disputes, claims, actions, suits or other proceedings arising out of this agreement or relating in any way to it shall be governed by the laws of Ecuador excluding its private international law provisions.&lt;br /&gt;
&lt;br /&gt;
	This Agreement sets out the entire agreement between You and Us for Your Contributions to Us and overrides all other agreements or understandings.&lt;br /&gt;
&lt;br /&gt;
	In case of Your death, this agreement shall continue with Your heirs. In case of more than one heir, all heirs must exercise their rights through a commonly authorized person.&lt;br /&gt;
&lt;br /&gt;
	If any provision of this Agreement is found void and unenforceable, such provision will be replaced to the extent possible with a provision that comes closest to the meaning of the original provision and that is enforceable. The terms and conditions set forth in this Agreement shall apply notwithstanding any failure of essential purpose of this Agreement or any limited remedy to the maximum extent possible under law.&lt;br /&gt;
&lt;br /&gt;
	You agree to notify Us of any facts or circumstances of which you become aware that would make Your representations under this Agreement inaccurate in any respect.&lt;br /&gt;
	You&lt;br /&gt;
	Date:	&lt;br /&gt;
	Name:	&lt;br /&gt;
	Title:	&lt;br /&gt;
	Address:	&lt;br /&gt;
	Us&lt;br /&gt;
	Date:	&lt;br /&gt;
	Name:	&lt;br /&gt;
	Title:	&lt;br /&gt;
	Address:	&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
	Contributor Agreement&lt;br /&gt;
	Entity Contributor Exclusive License Agreement&lt;br /&gt;
	(including the Traditional Patent License OPTION)&lt;br /&gt;
&lt;br /&gt;
	Thank you for your interest in contributing to Eco-Libre&#039;s ____________________ (&amp;quot;We&amp;quot; or &amp;quot;Us&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
	The purpose of this contributor agreement (&amp;quot;Agreement&amp;quot;) is to clarify and document the rights granted by contributors to Us. To make this document effective, please follow the instructions at ____________________.&lt;br /&gt;
	How to use this Contributor Agreement&lt;br /&gt;
&lt;br /&gt;
	If You are an employee and have created the Contribution as part of your employment, You need to have Your employer approve this Agreement. If You do not own the Copyright in Your Contribution, any other author of the Contribution should also sign this. In any event, please contact Us at https://www.eco-libre.org/contact.&lt;br /&gt;
	Definitions&lt;br /&gt;
&lt;br /&gt;
	&amp;quot;You&amp;quot; means the individual Copyright owner who Submits a Contribution to Us; or&lt;br /&gt;
&lt;br /&gt;
	if the Copyright in the Contribution is held by a Legal Entity and the Contribution is being Submitted to Us on behalf of such Legal Entity, &amp;quot;You&amp;quot; means such Legal Entity.&lt;br /&gt;
&lt;br /&gt;
	&amp;quot;Contribution&amp;quot; means any original work of authorship, including any original modifications or additions to an existing work of authorship, Submitted for inclusion into Material by You to Us, in which you own the Copyright.&lt;br /&gt;
&lt;br /&gt;
	&amp;quot;Copyright&amp;quot; means all rights protecting works of authorship, including copyright, moral and neighboring rights, as appropriate, for the full term of their existence.&lt;br /&gt;
&lt;br /&gt;
	&amp;quot;Material&amp;quot; means the software and/or documentation of ____________________ that we make available to third parties.&lt;br /&gt;
&lt;br /&gt;
	&amp;quot;Submit&amp;quot; means any act by which a Contribution is transferred to Us by You by means of tangible or intangible media, including but not limited to electronic mailing lists, source code control systems, and issue tracking systems, but excluding any transfer that is conspicuously marked or otherwise designated in writing by You as &amp;quot;Not a Contribution.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
	&amp;quot;Documentation&amp;quot; means any non-software portion of a Contribution.&lt;br /&gt;
	License grant&lt;br /&gt;
	Copyright license to Us&lt;br /&gt;
&lt;br /&gt;
	Subject to the terms and conditions of this Agreement, You hereby grant to Us a worldwide, royalty-free, exclusive, perpetual and irrevocable (except as stated in Section &amp;quot;Term&amp;quot;) license, with the right to transfer an unlimited number of non-exclusive licenses or to grant sublicenses to third parties, under the Copyright covering the Contribution to use the Contribution by all means, including, but not limited to:&lt;br /&gt;
		publish the Contribution,&lt;br /&gt;
		modify the Contribution,&lt;br /&gt;
		prepare derivative works based upon or containing the Contribution and/or to combine the Contribution with other Materials,&lt;br /&gt;
		reproduce the Contribution in original or modified form,&lt;br /&gt;
		distribute, to make the Contribution available to the public, display and publicly perform the Contribution in original or modified form.&lt;br /&gt;
	Moral rights&lt;br /&gt;
&lt;br /&gt;
	Moral Rights remain unaffected to the extent they are recognized and not waivable by applicable law. Notwithstanding, You may add your name to the attribution mechanism customary used in the Materials you Contribute to, such as the header of the source code files of Your Contribution, and We will respect this attribution when using Your Contribution.&lt;br /&gt;
	Copyright license back to You&lt;br /&gt;
&lt;br /&gt;
	Upon such grant of rights to Us, We immediately grant to You a worldwide, royalty-free, non-exclusive, perpetual and irrevocable license, with the right to transfer an unlimited number of non-exclusive licenses or to grant sublicenses to third parties, under the Copyright covering the Contribution to use the Contribution by all means, including, but not limited to:&lt;br /&gt;
		publish the Contribution,&lt;br /&gt;
		modify the Contribution,&lt;br /&gt;
		prepare derivative works based upon or containing the Contribution and/or to combine the Contribution with other Materials,&lt;br /&gt;
		reproduce the Contribution in original or modified form,&lt;br /&gt;
		distribute, to make the Contribution available to the public, display and publicly perform the Contribution in original or modified form.&lt;br /&gt;
&lt;br /&gt;
	This license back is limited to the Contribution and does not provide any rights to the Material.&lt;br /&gt;
	Patents&lt;br /&gt;
	Patent license&lt;br /&gt;
&lt;br /&gt;
	Subject to the terms and conditions of this Agreement You hereby grant to Us and to recipients of Materials distributed by Us a worldwide, royalty-free, non-exclusive, perpetual and irrevocable (except as stated in Subsection &amp;quot;Revocation of patent license&amp;quot;) patent license, with the right to transfer an unlimited number of non-exclusive licenses or to grant sublicenses to third parties, to make, have made, use, sell, offer for sale, import and otherwise transfer the Contribution and the Contribution in combination with any Material (and portions of such combination). This license applies to all patents owned or controlled by You, whether already acquired or hereafter acquired, that would be infringed by making, having made, using, selling, offering for sale, importing or otherwise transferring of Your Contribution(s) alone or by combination of Your Contribution(s) with any Material.&lt;br /&gt;
	Revocation of patent license&lt;br /&gt;
&lt;br /&gt;
	You reserve the right to revoke the patent license stated in Subsection &amp;quot;Patent license&amp;quot; if We make any infringement claim that is targeted at your Contribution and not asserted for a Defensive Purpose. An assertion of claims of the Patents shall be considered for a &amp;quot;Defensive Purpose&amp;quot; if the claims are asserted against an entity that has filed, maintained, threatened, or voluntarily participated in a patent infringement lawsuit against Us or any of Our licensees.&lt;br /&gt;
	License obligations by Us&lt;br /&gt;
&lt;br /&gt;
	We may, but are under no obligation to, include the Contribution You Submitted to Us into the Material.&lt;br /&gt;
&lt;br /&gt;
	We agree to license the Contribution only under the terms of the following license(s) GPL-3.0 (including any right to adopt any future version of a license if permitted), whereby any non-free or non-open licenses need to be listed as well.&lt;br /&gt;
&lt;br /&gt;
	In addition, We may use the following licenses for Documentation in the Contribution: CC-BY-SA-4.0 (including any right to adopt any future version of a license).&lt;br /&gt;
&lt;br /&gt;
	We agree to license patents owned or controlled by You only to the extent necessary to (sub)license Your Contribution(s) and the combination of Your Contribution(s) with the Material under the terms of the following GPL-3.0 license(s).&lt;br /&gt;
	Disclaimer&lt;br /&gt;
	**We acknowledge that you provide the Contribution &amp;quot;as is&amp;quot;.** **More particularly, You disclaim all express or implied warranties including, without limitation, any implied warranty of satisfactory quality, fitness for a particular purpose and non-infringement. To the extent that any such warranties cannot be disclaimed, such warranty is limited in duration and extent to the minimum period and extent permitted by law.**&lt;br /&gt;
	Consequential damage waiver&lt;br /&gt;
&lt;br /&gt;
	**To the maximum extent permitted by applicable law, in no event will You or We be liable for any loss of profits, loss of anticipated savings, loss of data, indirect, special, incidental, consequential and exemplary damages arising out of this Agreement regardless of the legal or equitable theory (contract, tort or otherwise) upon which the claim is based.**&lt;br /&gt;
	Approximation of disclaimer and damage waiver&lt;br /&gt;
&lt;br /&gt;
	**If the disclaimer and damage waiver mentioned in Subsection &amp;quot;Disclaimer of warranty&amp;quot; and Section &amp;quot;Consequential damage waiver&amp;quot; cannot be given legal effect under applicable local law, reviewing courts shall apply local law that most closely approximates an absolute waiver of all civil or contractual liability in connection with the Contribution.**&lt;br /&gt;
	Term&lt;br /&gt;
&lt;br /&gt;
	This Agreement shall come into effect upon Your acceptance of the terms and conditions.&lt;br /&gt;
&lt;br /&gt;
	This Agreement shall apply for the term of the copyright and patents licensed here. However, You shall have the right to terminate the Agreement if We do not fulfill the obligations as set forth in Section &amp;quot;License obligations by Us&amp;quot;. Such termination must be made in writing.&lt;br /&gt;
&lt;br /&gt;
	In the event of a termination of this Agreement Sections &amp;quot;Disclaimer&amp;quot;, &amp;quot;Term&amp;quot; and &amp;quot;Miscellaneous&amp;quot; shall survive such termination and shall remain in full force thereafter. For the avoidance of doubt, Free and Open Source Software (sub)licenses that have already been granted for Contributions at the date of the termination shall remain in full force after the termination of this Agreement.&lt;br /&gt;
	Miscellaneous&lt;br /&gt;
&lt;br /&gt;
	This Agreement and all disputes, claims, actions, suits or other proceedings arising out of this agreement or relating in any way to it shall be governed by the laws of Ecuador excluding its private international law provisions.&lt;br /&gt;
&lt;br /&gt;
	This Agreement sets out the entire agreement between You and Us for Your Contributions to Us and overrides all other agreements or understandings.&lt;br /&gt;
&lt;br /&gt;
	In case of Your death, this agreement shall continue with Your heirs. In case of more than one heir, all heirs must exercise their rights through a commonly authorized person.&lt;br /&gt;
&lt;br /&gt;
	If any provision of this Agreement is found void and unenforceable, such provision will be replaced to the extent possible with a provision that comes closest to the meaning of the original provision and that is enforceable. The terms and conditions set forth in this Agreement shall apply notwithstanding any failure of essential purpose of this Agreement or any limited remedy to the maximum extent possible under law.&lt;br /&gt;
&lt;br /&gt;
	You agree to notify Us of any facts or circumstances of which you become aware that would make Your representations under this Agreement inaccurate in any respect.&lt;br /&gt;
	You&lt;br /&gt;
	Date:	&lt;br /&gt;
	Name:	&lt;br /&gt;
	Title:	&lt;br /&gt;
	Address:	&lt;br /&gt;
	Us&lt;br /&gt;
	Date:	&lt;br /&gt;
	Name:	&lt;br /&gt;
	Title:	&lt;br /&gt;
	Address:	&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# well, I&#039;m still not sure what to use. In the meantime, I went ahead and updated the wiki ToS to include an unaltered version of the Linux Foundation&#039;s DCO https://wiki.eco-libre.org/wiki/Eco-Libre:Terms_of_Service&lt;br /&gt;
## I also added a section on the license, because the DCO (which I can&#039;t edit) referes to &amp;quot;the open source license indicated in the file&amp;quot;&lt;br /&gt;
## alright, that&#039;s a placeholder. I&#039;ll wait to see if we get a response from the home automation folks and/or the OSHWA.&lt;br /&gt;
# oh, TIL that OSE *does* use CERN OHL-S-2.0 for hardware files https://wiki.opensourceecology.org/wiki/OSE_License_for_Distributive_Economics&lt;br /&gt;
## but their wiki is a mess. it says dual-licensed under the GNU Free Documentation License and CC BY-SA on this page https://wiki.opensourceecology.org/wiki/Media-wiki:Copyright&lt;br /&gt;
## while this page says just CC BY-SA for wiki and design files, CERN OHL-S-2.0 for hardware files, and GPL v3 for code https://wiki.opensourceecology.org/wiki/OSE_License_for_Distributive_Economics&lt;br /&gt;
## there&#039;s a section on CAs, which just says that we need a paper with NAME OF PERSON and SPECIFIED DATE https://wiki.opensourceecology.org/wiki/OSE_License_for_Distributive_Economics&lt;br /&gt;
## looks like they started working on a &amp;quot;distributed enterprise license&amp;quot; – but I can&#039;t find anything but a sketch outline&lt;br /&gt;
### https://wiki.opensourceecology.org/wiki/OSE_License_for_Distributive_Enterprise&lt;br /&gt;
### https://wiki.opensourceecology.org/wiki/OSE_License_for_Distributive_Economics_-_Requirements&lt;br /&gt;
## ah ha! apparently Marcin&#039;s legal advisor volunteer person suggested https://contributoragreements.org per https://wiki.opensourceecology.org/wiki/Contributor_Agreement&lt;br /&gt;
# alright, I think I&#039;ll do one of the contributoragreements.org developed above. I&#039;ll draft it into a nice-looking odt -&amp;gt; pdf and upload it to opensign. then we&#039;ll be ready to accept volunteer contributions to our repos &amp;amp; wiki, like, very legally sound &lt;br /&gt;
&lt;br /&gt;
= 2026-04-21 =&lt;br /&gt;
# I published and did the social media marketing for our announcement that we&#039;re accepting tax-deductable donations via raft today https://www.eco-libre.org/raft-2026/&lt;br /&gt;
# I, again, was unable to post to our X account.&lt;br /&gt;
## even though I enter the correct password, they demand an OTP sent to the email address used when the account was registered&lt;br /&gt;
## I guess they fired all the ex-twitter engineers with a brain, because they can&#039;t see that their emails are bouncing?&lt;br /&gt;
## I, maybe the 3rd or 4th time, told them that tutanota deleted our email address. And asked them to update the email address to one @eco-libre.org, which is pretty easy for a junior engineer to authenticate, since it&#039;s literally the domain assoaciated with our account. Auth done. QED. Here&#039;s their response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Reply above this line.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Hello,&lt;br /&gt;
&lt;br /&gt;
We=E2=80=99re writing to let you know that we=E2=80=99re unable to verify y=&lt;br /&gt;
ou as the account owner. We know this is disappointing to hear, but we can=&lt;br /&gt;
=E2=80=99t assist you further with accessing your account.&lt;br /&gt;
&lt;br /&gt;
If you know which email address or phone number is associated with the acco=&lt;br /&gt;
unt, and you no longer have access to that email or connected phone number,=&lt;br /&gt;
 please contact your service provider for assistance.&lt;br /&gt;
&lt;br /&gt;
For privacy reasons, we can=E2=80=99t provide any information about this ac=&lt;br /&gt;
count=E2=80=99s registered email address or phone number&lt;br /&gt;
&lt;br /&gt;
We understand it=E2=80=99s frustrating to get locked out of an account, but=&lt;br /&gt;
 we have these policies to protect accounts and private data. We appreciate=&lt;br /&gt;
 your understanding.&lt;br /&gt;
&lt;br /&gt;
You=E2=80=99re more than welcome to create a new account to get back onto X=&lt;br /&gt;
.&lt;br /&gt;
&lt;br /&gt;
Please do not respond to this email as replies to this account are not moni=&lt;br /&gt;
tored.&lt;br /&gt;
&lt;br /&gt;
Thanks,&lt;br /&gt;
X Support&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## So, fuck X. This is why we shouldn&#039;t use corporate, non-federated social media.&lt;br /&gt;
## oh, and I was also unable to log into reddit. Similar issue. I get this, just for a GET on /login – before they even asked me for creds!&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
You&#039;ve been blocked by network security.&lt;br /&gt;
If you think you&#039;ve been blocked by mistake, file a ticket below and we&#039;ll look into it.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# again, this is why we use better non-corportate social media. Now on lemmy!&lt;br /&gt;
## https://chaos.social/@ecolibre/116443354810130299&lt;br /&gt;
## https://slrpnk.net/post/36851013&lt;br /&gt;
# woah, mastodon has a new link under the post that says &amp;quot;More from Eco-Libre Team&amp;quot; which links here https://mastodon.social/@eco-libre@www.eco-libre.org&lt;br /&gt;
## that&#039;s, uhh, our wordpress site&#039;s ActivityPub plugins&#039; actor! The one that I couldn&#039;t finish setting-up due to the 5xx error (see previous log entries)&lt;br /&gt;
## so i guess it&#039;s working under defaults&lt;br /&gt;
## as I found before, it doesn&#039;t show previous content until after you subscribe, so the page on mastodon doesn&#039;t even show today&#039;s post :(&lt;br /&gt;
## I&#039;m thinking the best way to use this is to not really advertise wordpress as an endpoint. But, rather, to just setup our other federated-service-x-native account to subscribe and auto-boost our wordpress posts. That way we don&#039;t even have to login to mastodon or lemmy or whatever else. We can just automate the distribution from wordpress via ActivityPub to all our other federated social media accounts.&lt;br /&gt;
## anyway, I subscribed to @eco-libre@www.eco-libre.org from my personal mastodon account and our eco-libre mastodon account. let&#039;s see what that looks like over time.&lt;br /&gt;
# I logged-into our raft (private) discourse to ask if they have a mastodon account https://raft.talk/t/following-raft-on-the-fediverse/45/1&lt;br /&gt;
## I also followd-up with a thread in which I asked about a vector logo. Nathan (founder) said they don&#039;t have one, so I spent about an hour generating a few different decent-looking vectors from the png using inkscape&#039;s Trace Bitmap tool, and shared it – so others can have it in the future https://raft.talk/t/raft-logo-vector-svg/31/3&lt;br /&gt;
## I also realized that I had started (but not finished) asking the community for advice on how to get volunteers from &amp;quot;volutneer social year&amp;quot; programs like the Freiwilliges Soziales Jahr in Germany or the European Solidarity Corps or the US Peace Corps. So I finished that https://raft.talk/t/getting-state-sponsored-volunteers-voluntary-social-year/46&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Does anyone have experience here in getting volunteers via State-sponsored programs, like the US Peace Core, Germany&#039;s Voluntary Social Year (Freiwilliges Soziales Jahr), or the EU Solidarity Corps?&lt;br /&gt;
&lt;br /&gt;
 * https://en.wikipedia.org/wiki/Voluntary_social_year&lt;br /&gt;
 * https://en.wikipedia.org/wiki/European_Solidarity_Corps&lt;br /&gt;
&lt;br /&gt;
I&#039;ve met a *lot* of Germans (and one person from Liechtenstein!) who took their [gap year](https://en.wikipedia.org/wiki/Gap_year) off to go abroad and help some cool non-profit.&lt;br /&gt;
&lt;br /&gt;
Our project&#039;s mission is to develop and document [open-source appropriate technology](https://en.wikipedia.org/wiki/Open-source_appropriate_technology) to enfranchise sustainable communities&#039; human rights. And we need volunteers!&lt;br /&gt;
&lt;br /&gt;
I&#039;m wondering if anyone else here has experience satisfying the requirements of such orgs, so that we can get listed in their &amp;quot;directory of cool nonprofits abroad&amp;quot; that their want-to-be-volunteers will see (and can apply-to).&lt;br /&gt;
&lt;br /&gt;
I imagine that one key requirement is met by us being able to provide Raft&#039;s IRS Determination Letter. What else do we need to do? Where do we apply?&lt;br /&gt;
&lt;br /&gt;
Can anyone with experience provide tips (or a link to a guide?) on how to get volunteers abroad doing a &amp;quot;voluntary social year&amp;quot;?&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# ...&lt;br /&gt;
# back to Terms of Use, which is where we left-off on the wiki&#039;s config of ConfirmAccount extension&lt;br /&gt;
## honestly, we probably should write a ToS for all volunteers, which extends beyond just the wiki&lt;br /&gt;
## I have already drafted (not yet published) some agreements for volunteers, but we haven&#039;t had any in-person volunteers that required us to use it&lt;br /&gt;
## so, I guess, we need distinct agreements for people who volunteer remotely vs volunteer in-person&lt;br /&gt;
## in any case, even in-person volunteers are going to start remotely &amp;gt;99% of the time, so we should probably figure out some system for them to &amp;quot;sign a document&amp;quot; such that a copy gets sent to them and stored with us&lt;br /&gt;
## the first thing that comes to the top of my head is copyleft. We need folks to agree that all of their contributions to Eco-Libre will be copyleft under dual license of CC BY-SA and GNU GPL.&lt;br /&gt;
## can I find some libre service that&#039;s like docusign for this? https://alternativeto.net/software/docusign/&lt;br /&gt;
### DocuSeal https://www.docuseal.com&lt;br /&gt;
#### + free cloud account (limited to 10 field types and 10 requests emails per month)&lt;br /&gt;
#### + self-hostable https://github.com/docusealco/docuseal&lt;br /&gt;
#### - docker https://www.docuseal.com/install&lt;br /&gt;
#### - even self -hosted solution has usage limits without buying a license https://www.docuseal.com/pricing&lt;br /&gt;
### OpenSign https://www.opensignlabs.com&lt;br /&gt;
#### + free cloud account (limited to 14 field types)&lt;br /&gt;
#### + self hostable https://www.docuseal.com&lt;br /&gt;
#### - docker https://docs.opensignlabs.com/docs/category/docker&lt;br /&gt;
#### + self-hosted doesn&#039;t appear to have any restrictions&lt;br /&gt;
### Documenso https://docs.opensignlabs.com/docs/category/docker&lt;br /&gt;
#### + free cloud account (limited to 5 documents per month) https://documenso.com/pricing&lt;br /&gt;
#### + self-hostable https://github.com/documenso/documenso&lt;br /&gt;
#### - docker https://docs.documenso.com/docs/self-hosting/deployment&lt;br /&gt;
#### + baremetal (non-docker) installation is documented https://github.com/documenso/documenso&lt;br /&gt;
#### - it&#039;s nodejs w/ npm&lt;br /&gt;
### LibreSign https://libresign.coop/&lt;br /&gt;
#### - no free cloud plan https://libresign.coop/pricing/&lt;br /&gt;
#### + self-hostable https://github.com/LibreSign/libresign&lt;br /&gt;
#### - no docs for self-hosting? installtion guide?&lt;br /&gt;
#### + github says it&#039;s a nextcloud app&lt;br /&gt;
## well, of thse, I think OpenSign or DDocumenso are the best options. my biggest concern is: can we export everything from the site, if they ever eliminate their free plan (or we outgrow them)?&lt;br /&gt;
## let&#039;s create accounts with both and get a feel for it&lt;br /&gt;
### well, shit, the signup page for documenso included their &amp;quot;sign here&amp;quot; digital field. It was so shitty, it nearly crashed my browser. so let&#039;s try open sign instead.&lt;br /&gt;
## ugh, OpenSign requires a phone number on sign-up&lt;br /&gt;
### ugh, password policy is dumb. it rejected a &amp;gt;50 char password because it requires a special symbol. makes me question their security. fortunately, these documents would need to be public, anyway.&lt;br /&gt;
### it accepted a bullshit phone number. good&lt;br /&gt;
### I immediately went to settings&lt;br /&gt;
#### I changed the document download filename format to include the date. It always bothers me when documents aren&#039;t dated in the filename..&lt;br /&gt;
#### I changed the date format to YYYY-MM-DD – iso format, sortable, and no ambiguity&lt;br /&gt;
#### In the setting&#039;s &amp;quot;widgets&amp;quot; tab, I also set the date to YYYY-MM-DD&lt;br /&gt;
#### In the settings&#039; &amp;quot;security&amp;quot; tab, I setup TOTP 2FA&lt;br /&gt;
### I went to my &amp;quot;profile&amp;quot;&lt;br /&gt;
#### It said my email wasn&#039;t verified. I never got an email *to* verify. I clicked the &amp;quot;Verify&amp;quot; button&lt;br /&gt;
##### gross. it sent an email with an OTP. the email had text/plain, but the only contents was &amp;quot;otp email&amp;quot;. I had to dig through some html to find the code.&lt;br /&gt;
# I clicked around in OpenSign. I expected there would be some place where I could type a document, but it only allows me to upload a pdf, jpg, png, jpeg, or docx. whey not OpenOffice (LibreOffice)? Hmm.&lt;br /&gt;
# not sure how this translates into being able to add input fields.&lt;br /&gt;
# using libreoffice, I created a test document with the contents&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
I agree not to act like an evil corporation.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# I exported it as a pdf, and uploaded it as a new &amp;quot;template&amp;quot; to opensign&lt;br /&gt;
## there&#039;s a lot of settings you can make&lt;br /&gt;
### you can change it so that everyone can sign at once, or (the default) has the intended party sign, then I sign. But I&#039;m not sure if I will *want* Eco-Libre to sign these documents at all?&lt;br /&gt;
### you can set the number of days that the person has to sign. it defaults to 15.&lt;br /&gt;
### you can add a bcc&lt;br /&gt;
### you can make the &amp;quot;certification pdf&amp;quot; merged into the signed document. well, apparently only if you pay for an upgrade. whatever.&lt;br /&gt;
### ah man, there&#039;s a cool feature that requries an OTP from the email address, but it requires upgrade&lt;br /&gt;
### you can specify a &amp;quot;redirect url&amp;quot; which is blank by default. I guess that&#039;s where they get sent after signing. That&#039;s cool. I could have it redirect to a &amp;quot;thank you; here&#039;s the next steps&amp;quot; doc. I set it to &#039;https://eco-libre.github.io/volunteer-test/&#039;&lt;br /&gt;
#### I&#039;m beginning to wonder if I shouldn&#039;t have made a repo named &#039;volunteer-test&#039; but instead made one named &#039;volunteer-onboarding&#039; in-which the volunteer test was only one section. hmm.&lt;br /&gt;
### the only other thing I could change was the pen ink colors. here in Ecuador, everything should be blue. so I disabled black and red.&lt;br /&gt;
## ok, after I click &amp;quot;next&amp;quot; I can decorate the page with a bunch of widgets. note that I cannot edit the text&lt;br /&gt;
### you can add a &amp;quot;role&amp;quot; for someone to sign. I just want one = the volunteer. So I added one named &amp;quot;Volunteer&amp;quot;&lt;br /&gt;
### I clicked the &amp;quot;Signature&amp;quot; widget, and a blue box popped-up on the bottom of the page&lt;br /&gt;
#### I hovered over it with my mouse, and a &amp;quot;gear&amp;quot; &amp;quot;person&amp;quot; &amp;quot;copy&amp;quot; and &amp;quot;trash&amp;quot; icons appeared.&lt;br /&gt;
#### I clicked the gear, and it let me choose the type of signatures accepted (draw, typed, upload, or default), and a &amp;quot;hint&amp;quot;&lt;br /&gt;
#### I clicked the &amp;quot;person&amp;quot; and it let me choose someone from contacts. I&#039;m creating a template, so that doesn&#039;t make sense (unless we had, like, *me* signing every document – which I don&#039;t think we&#039;ll do). So I left that empty&lt;br /&gt;
### there&#039;s a &amp;quot;text input widget&amp;quot;, which I guess is how I would let someone enter their name. I can make it optional, required, or read-only (relavant for the other &amp;quot;default value&amp;quot; option). I can change the font size and font color. So, I guess, the idea is that I would have left a blank space in the pdf, and later decorated it with this widget. I&#039;ll do that for the next test.&lt;br /&gt;
### there&#039;s a &amp;quot;image&amp;quot; widget – as in, the user can upload an image (I guess useful for profile photos)&lt;br /&gt;
### there&#039;s also widgets for stamp, initials, number, name, job title, company, email, date, cells, checkbox, dropdown, and radio button&lt;br /&gt;
### I dropped the &amp;quot;name&amp;quot; widget randomly near the top. So now I have two: name &amp;amp; signature.&lt;br /&gt;
### I saved the template&lt;br /&gt;
### I went back and edited it. I realized there&#039;s an option &amp;quot;prefiil by owner&amp;quot; vs &amp;quot;volunteer&amp;quot;. apparently I can add the name and stuff before I send it out. I left it at &amp;quot;volunteer&amp;quot;&lt;br /&gt;
## there was an option to make the template public, but I don&#039;t have a public profile. I went to edit my profile, but the box for entering my username for the public profile is grey-out. Unlike other places, it doesn&#039;t say &amp;quot;upgrade now&amp;quot; so idk wtf is going on&lt;br /&gt;
### after making it public, it gave me some js to embed the document. oh, so this is so that I can embed the docs on my own site. well, that&#039;s kinda cool. but I really don&#039;t want to embed a third party javascript.&lt;br /&gt;
## anyway, back to &amp;quot;manage templates&amp;quot;&lt;br /&gt;
### I tried to edit the template again, but it gave me an error&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
You cannot edit a public template directly. To make changes, the template will be set to private, and you&#039;ll need to make it public again afterward. Do you want to continue?&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
### so I unchecked &amp;quot;public&amp;quot; and edited it&lt;br /&gt;
### I added a &amp;quot;date&amp;quot; widget. I set it to &amp;quot;signing date&amp;quot; and &amp;quot;read only&amp;quot; and &amp;quot;required&amp;quot; and placed it just above the signature&lt;br /&gt;
## I went back to &amp;quot;manage templates&amp;quot; and clicked the &amp;quot;+ use&amp;quot; button.&lt;br /&gt;
### it gave me a drop down menu of our contacts, but it&#039;s empty. so I pressed the red &amp;quot;+&amp;quot; button to add a new contact&lt;br /&gt;
### I added a contact named &amp;quot;Michael Altfield&amp;quot; and my email address. then I selected this contact and clicked &amp;quot;next&amp;quot;&lt;br /&gt;
### It asked &amp;quot; Are you sure you want to send out this document for signatures?&amp;quot; and I clicked &amp;quot;Send&amp;quot;&lt;br /&gt;
### I immediately got an email. Again, the shitty email plaintext contetns was just &amp;quot;mail&amp;quot; and I had to read-through the html to find a encoding-broken link :/&lt;br /&gt;
#### I created a bug report for them to fix the `text/plain` content type of emails here https://github.com/OpenSignLabs/OpenSign/issues/2156&lt;br /&gt;
### using some mutt scripting fuckery, I&#039;m able to extract the URLs. But I can&#039;t figure out which one is to go to the document. Two of the four are both to &amp;quot;click.opensignlabs.com. the first one appears to go to a login page, and the second one doesn&#039;t. I tried the second one&lt;br /&gt;
#### wtf, that link brought me to a single dark page with a single dead pixel in the center of the screen.&lt;br /&gt;
### ok, looks like the first link (with the login that I was trying to avoid) is a button that says &amp;quot;sign here&amp;quot;&lt;br /&gt;
### ohhh, and the other one is an image. I guess it&#039;s a tracking pixel. that explains it.&lt;br /&gt;
### back in my admin dashboard, under Documents -&amp;gt; In-Progress, I can see Michael Altfield has &amp;quot;Yet to sign&amp;quot;&lt;br /&gt;
### If I click on &amp;quot;sent&amp;quot; then there&#039;s a section &amp;quot;viewed on&amp;quot; and &amp;quot;signed on&amp;quot; that are both &amp;quot;-&amp;quot; – so I guess that tracking pixel didn&#039;t really work, huh..&lt;br /&gt;
### fine, I went to the first link&lt;br /&gt;
#### oh, awesome, it didn&#039;t make me login! It redirected me to the document. perfect! It popped-up a modal that said&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
I confirm that I have read and understood the Electronic Record and Signature Disclosure and consent to use electronic records and signatures.&lt;br /&gt;
Note: Agreeing to this does not mean you are signing the document immediately. This only allows you to review the document electronically. You will have the opportunity to read it in full and decide whether to sign it afterward.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
### I clicked &amp;quot;I confirm &amp;amp; agree to continue&amp;quot;&lt;br /&gt;
### it did the whole modal popup &amp;quot;guide&amp;quot; thing, which was an option I could have disabled. basically it said to type my name (which was, cool, auto-completed to &amp;quot;Michael Altfield&amp;quot;), listed the signers (just me), and then highlighted the widgets at the bottom (date and sig), then told me how to zoom-in, then highlighted the &amp;quot;you&#039;re done&amp;quot; buttons = &amp;quot;decline&amp;quot; &amp;quot;download&amp;quot; or &amp;quot;finish&amp;quot;&lt;br /&gt;
### it let me change my name, but I should probably make that read-only now that I know it auto-completes with the name from the contacts&lt;br /&gt;
### it wouldn&#039;t let me change the date, which it autocompletd to today&lt;br /&gt;
### it did let me click on the signature widget, which opened a modal with a box where I could draw my nanme. I did that. It was fast, wayy better than Documenso – no issues here with the browser crashing&lt;br /&gt;
### alternatively, I could click &amp;quot;type&amp;quot; and it displayed my name in some cursive fonts, which I could choose-from. and there was an option to upload image.&lt;br /&gt;
### I chose draw and did my signature and clicked next. very fast.&lt;br /&gt;
### it asked if I&#039;m sure I want to finish the doc. I clicked &amp;quot;Review&amp;quot;&lt;br /&gt;
### then I clicked the &amp;quot;finish&amp;quot; button at the top&lt;br /&gt;
### it said this&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Document signed&lt;br /&gt;
Congratulations! 🎉 This document has been successfully signed by all participants!&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
### and there was a countdown to redirect. in 3 seconds, the browser redirected to here. perfect! https://eco-libre.github.io/volunteer-test/en/main/&lt;br /&gt;
### back in the opensign admin dashboard, the row is absent from &amp;quot;Documents -&amp;gt; in progress&amp;quot;. I found it in &amp;quot;documents -&amp;gt; completed&amp;quot;&lt;br /&gt;
### I clicked the &amp;quot;eye&amp;quot; next to the document, and it showed me the document, including the signature that I left in the other browser. I can also click &amp;quot;print&amp;quot; or &amp;quot;certifiacte&amp;quot; or &amp;quot;download&amp;quot;&lt;br /&gt;
#### &amp;quot;print&amp;quot; does what you&#039;d expect. I can print or use the browser&#039;s &amp;quot;save to pdf&amp;quot; of the document, which includes the signature&lt;br /&gt;
#### &amp;quot;certifiacte&amp;quot; opens some legal-looking pdf (something similar to docusign) with a some metadata, including a sah256 hash, ip address of both document issuer (me) and the signer (also me, but different IP because Tor). And it includes an image of the drawn signature.&lt;br /&gt;
#### &amp;quot;download&amp;quot; then lets me choose if i want the download pdf or downlaod pdf + certifiate. I chose both.&lt;br /&gt;
##### lol that failed. the browser didn&#039;t let me download both&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Something went wrong, refreshing this page may solve this issue&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
#### I tried just &amp;quot;downlaod pdf&amp;quot;&lt;br /&gt;
##### that gave me the document, plus the signature and other &amp;quot;widgets&amp;quot; filled-out, plus the following in the top-left&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
OpenSign™ DocumentId: pS5lEdCyIp&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
##### I guess that&#039;s something like their observatory. they said I can turn it off only if I have a paid plan. But it&#039;s probably necessary for them as a thrid party to confirm the signature.&lt;br /&gt;
#### anyway, I tested the hash on the file that I downloaded&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[user@disp6411 Downloads]$ sha256sum Test\ Agreement\ -\ REDACTED@eco-libre.org\ -\ 21-Apr-2026\ 04_01\ PM.pdf &lt;br /&gt;
569152424a49024297f4bb550291036896de3189e70efb1fee6a9e39333bbe77  Test Agreement - REDACTED@eco-libre.org - 21-Apr-2026 04_01 PM.pdf&lt;br /&gt;
[user@disp6411 Downloads]$ &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
#### I wanted to confirm that matches the certificate, but when I clicked &amp;quot;certificate&amp;quot; again, I got a permissions issue!&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;Error&amp;gt;&lt;br /&gt;
&amp;lt;Code&amp;gt;AccessDenied&amp;lt;/Code&amp;gt;&lt;br /&gt;
&amp;lt;Message&amp;gt;Request has expired.&amp;lt;/Message&amp;gt;&lt;br /&gt;
&amp;lt;Resource&amp;gt;&lt;br /&gt;
legadratw3d/460246e423800b30c50c967ef6157248_certificate.pdf&lt;br /&gt;
&amp;lt;/Resource&amp;gt;&lt;br /&gt;
&amp;lt;RequestId&amp;gt;not available&amp;lt;/RequestId&amp;gt;&lt;br /&gt;
&amp;lt;/Error&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
### fortunately I still had it open in another tab, and I copied this from it&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Generated On 2026-04-21, 15:56:29 GMT -05:00&lt;br /&gt;
Certificate of Completion&lt;br /&gt;
Summary&lt;br /&gt;
Document Id : pS5lEdCyIp&lt;br /&gt;
Document Name : Test Agreement&lt;br /&gt;
Document hash (sha256) : 569152424a49024297f4bb550291036896de3189e70efb1fee6a9e39333bbe77&lt;br /&gt;
Organization : Eco-Libre&lt;br /&gt;
Created on : 2026-04-21, 15:25:55 GMT -05:00&lt;br /&gt;
Completed on : 2026-04-21, 15:56:29 GMT -05:00&lt;br /&gt;
Signers : 1&lt;br /&gt;
Document originator&lt;br /&gt;
Name : Eco-Libre&lt;br /&gt;
Email : REDACTED@eco-libre.org&lt;br /&gt;
IP address : 94.185.80.231&lt;br /&gt;
Signer 1&lt;br /&gt;
Name : Michael Altfield&lt;br /&gt;
Email : REDACTED@eco-libre.org&lt;br /&gt;
Viewed on : 2026-04-21, 15:50:32 GMT -05:00&lt;br /&gt;
Signed on : 2026-04-21, 15:56:29 GMT -05:00&lt;br /&gt;
IP address : 2001:67c:e60:c0c:192:42:116:52&lt;br /&gt;
Signature :&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
### so the hashes do match; that&#039;s cool&lt;br /&gt;
### but will I be able to view the certificates in the future?!?&lt;br /&gt;
### I went back to the admin dashboard -&amp;gt; documents -&amp;gt; completed -&amp;gt; (eye icon) -&amp;gt; certificate&lt;br /&gt;
#### ok, that worked. I can pull it up again.&lt;br /&gt;
### curiously it still says I&#039;ve sent 0/15 emails this month&lt;br /&gt;
#### oh, I refrehed the page. now it says 1/15.&lt;br /&gt;
### I also see that my admin email got an email with an attachment titled &amp;quot;Test Agreement -&lt;br /&gt;
 REDACTED@eco-libre.org - 22-Apr-2026 02:26 AM.pdf&amp;quot; – so I guess it did email it to me&lt;br /&gt;
#### oh, awesome, there&#039;s also an attachment named &amp;quot;certificate.pdf&amp;quot;&lt;br /&gt;
#### the email is 83 KB + 139 KB for the two attachments, so that&#039;s reasonable. and that eliminates a lot of fear around exports. we&#039;ll have this data forever if we keep this email account&#039;s forever (or setup an automated backup process)&lt;br /&gt;
### there&#039;s also this &amp;quot;open sign drive&amp;quot; thing. I wasn&#039;t sure if this was an opt-in or pro feature&lt;br /&gt;
#### looks like the signed document is there too. it&#039;s just called &amp;quot;Test Agreement&amp;quot; – which isn&#039;t very nice, but I can see the &amp;quot;Created date&amp;quot; – which should be good enough.&lt;br /&gt;
## ok, I think we have a solution! this definitely meets our needs – unless/until we get &amp;gt;=6 volunteers per month (if we have them sign two documents each)&lt;br /&gt;
# I spent some time designing a letterhead in LibreOffice&lt;br /&gt;
# looks like what we want is a Contributor License Agreement https://en.wikipedia.org/wiki/Contributor_license_agreement&lt;br /&gt;
# looks like a lot of projects just use the CLA assistant tool on gthub https://cla-assistant.io/&lt;br /&gt;
## that&#039;s kinda cool, but I honestly don&#039;t know how long we&#039;ll be on github. If it&#039;s tied to an issue (and not something actually in git), it&#039;ll be hard to move to codeberg in the future&lt;br /&gt;
## still, I like the tl;dr CLA; short &amp;amp; sweet (maybe too much so) https://gist.github.com/waldyrious/e50feec13683e565769fbd58ce503d4e&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
## tldr-pages contributor agreement&lt;br /&gt;
&lt;br /&gt;
(1) I assert that any past, present and future contributions I make to the tldr-pages project are my own work, and that I have the right to license them.&lt;br /&gt;
&lt;br /&gt;
(2) I agree to license all my contributions to the tldr-pages project under the terms of the license included in the tldr-pages repository I’m contributing to.&lt;br /&gt;
&lt;br /&gt;
(3) I grant the tldr-pages organization a license to distribute my contributions under any open content license compliant with the Open Definition [a], or any open source software license approved by the Open Source Initiative [b], as applicable.&lt;br /&gt;
&lt;br /&gt;
a. http://opendefinition.org/licenses&lt;br /&gt;
&lt;br /&gt;
b. https://opensource.org/licenses/alphabetical&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# apparently Connonical created a project called Harmony for the purpose of making contributor agreements https://www.harmonyagreements.org/&lt;br /&gt;
## apparently these things are more complicated between individuals vs other entities. it&#039;s possible we&#039;ll work with for-profit companies in the future, and for that it&#039;d be good if we were setup to accept both&lt;br /&gt;
## ugh, there&#039;s also a distinction between a &amp;quot;license&amp;quot; and a &amp;quot;assignment&amp;quot;&lt;br /&gt;
### I skimmed their guide, but I couldn&#039;t understand the difference between these two https://www.harmonyagreements.org/guide&lt;br /&gt;
# fedora project also has one, with an emphasis on *not* taking the copyright away from the user (some controversy about copyright transfer in different CLAs – such as from for-profit companies that later fork &amp;amp; lock-up their user-contributed content under a different, less-permisive license (though I really don&#039;t understand how that&#039;s possible if we use a CC SA license) https://docs.fedoraproject.org/en-US/legal/fpca/&lt;br /&gt;
## oh, fedora uses MIT license --which is probably why they need to add all that&lt;br /&gt;
# apahce has one https://www.apache.org/licenses/contributor-agreements.html#clas&lt;br /&gt;
## cool, they accept signing with gpg :D&lt;br /&gt;
# Element (the matrix client) which uses AGPL has a pretty good document, which is 3 pages long https://static.element.io/legal/contributor-license-agreement.pdf&lt;br /&gt;
# a lot of these are kinda software heavy. I wonder if there&#039;s any good OSHW orgs that we can try?&lt;br /&gt;
## I checked OSHWA, but didn&#039;t see a boilerplate CLA that we could copy https://oshwa.org/&lt;br /&gt;
### they did have a CoC. Jesus, how many policies do we need to make? https://oshwa.org/resources/how-to-write-a-code-of-conduct/&lt;br /&gt;
### I publicy tooted @oshwassociation@mastodon.social if they had something to recommend https://chaos.social/@ecolibre/116444933464052302&lt;br /&gt;
### hmm...here they recommend CERN OHL v2 instead of CC BY-SA, if we&#039;re using something like STL files that are generated from CAD design https://oshwa.org/resources/sharing-best-practices/&lt;br /&gt;
## CERN does have some does on CLAs https://ospo.docs.cern.ch/howtos/signing-CLA-DCO/&lt;br /&gt;
## CERN links to this short one, from the Linux Foundation https://developercertificate.org/&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Developer Certificate of Origin&lt;br /&gt;
Version 1.1&lt;br /&gt;
&lt;br /&gt;
Copyright (C) 2004, 2006 The Linux Foundation and its contributors.&lt;br /&gt;
&lt;br /&gt;
Everyone is permitted to copy and distribute verbatim copies of this&lt;br /&gt;
license document, but changing it is not allowed.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Developer&#039;s Certificate of Origin 1.1&lt;br /&gt;
&lt;br /&gt;
By making a contribution to this project, I certify that:&lt;br /&gt;
&lt;br /&gt;
(a) The contribution was created in whole or in part by me and I&lt;br /&gt;
	have the right to submit it under the open source license&lt;br /&gt;
	indicated in the file; or&lt;br /&gt;
&lt;br /&gt;
(b) The contribution is based upon previous work that, to the best&lt;br /&gt;
	of my knowledge, is covered under an appropriate open source&lt;br /&gt;
	license and I have the right under that license to submit that&lt;br /&gt;
	work with modifications, whether created in whole or in part&lt;br /&gt;
	by me, under the same open source license (unless I am&lt;br /&gt;
	permitted to submit under a different license), as indicated&lt;br /&gt;
	in the file; or&lt;br /&gt;
&lt;br /&gt;
(c) The contribution was provided directly to me by some other&lt;br /&gt;
	person who certified (a), (b) or (c) and I have not modified&lt;br /&gt;
	it.&lt;br /&gt;
&lt;br /&gt;
(d) I understand and agree that this project and the contribution&lt;br /&gt;
	are public and that a record of the contribution (including all&lt;br /&gt;
	personal information I submit with it, including my sign-off) is&lt;br /&gt;
	maintained indefinitely and may be redistributed consistent with&lt;br /&gt;
	this project or the open source license(s) involved.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# ok, I think I&#039;m muddling two things here&lt;br /&gt;
## I think the wiki&#039;s TOS should be simpler. If I require all wiki users to become volunteers first, and the volunteer onboarding requires the signing of documents, then the real legal stuff should be in the documents.&lt;br /&gt;
## for now, let&#039;s just do the bullet point thing on the wiki ToS. And I&#039;ll wait to hear back from OSHWA about the CLA for a *proper* leagl document later – maybe TODO when we actually get another volunteer application..&lt;br /&gt;
# I set the ToS to the DCO from the linux foundation https://wiki.eco-libre.org/wiki/Eco-Libre:Terms_of_Service&lt;br /&gt;
## ah crap, I just realized that it says &amp;quot;changing it is not allowed&amp;quot;. I already changed it by removing the Linux Foundation from the name (I moved it to the bottom in an &amp;quot;attribution&amp;quot; section, which is another change! damn ND licenses! I&#039;ll have to find something else)&lt;br /&gt;
# I want to use the tl;dr gist, but it&#039;s not licensed! https://gist.github.com/waldyrious/e50feec13683e565769fbd58ce503d4e#file-tldr-pages-cla-md&lt;br /&gt;
## the profile of the author says they&#039;re a wikipedian and anarchist, so they&#039;ll probably be down to license it openly&lt;br /&gt;
## I asked here https://gist.github.com/waldyrious/e50feec13683e565769fbd58ce503d4e?permalink_comment_id=6112400#gistcomment-6112400&lt;br /&gt;
# another issue with a lot of these CLAs is that they&#039;re pretty old, and don&#039;t touch on AI.&lt;br /&gt;
## I&#039;m thinking we should have a policy that forbids contributions from Eco-Libre volunteers that do any research or design work with AI, since it presents serious legal issues around copyrights. I really do want 100% of our work to be very CC BY-SA. With nothing to muddle the waters. We&#039;re doing this designs ourselves to build an open-source commons, built only individual human contributions and only other openly-licensed works&lt;br /&gt;
## clojure already addressed this in their CLA (they just call it CA = Contributor Agreement) https://clojure.org/dev/contributor_agreement&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
No Generated Code&lt;br /&gt;
&lt;br /&gt;
Clojure’s code is written and reviewed by humans. Code generated by a large language model or similar technology, such as Anthropic’s Claude, GitHub/Microsoft’s Copilot, OpenAI’s ChatGPT, Facebook/Meta’s Code Llama et al, is not compliant with the covenants and representations of Clojure’s Contributor’s Agreement, and is thus not acceptable as code for Clojure.&lt;br /&gt;
&lt;br /&gt;
An exception may be made for human written generators whose source code is contributed along with the patch&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## I don&#039;t like that exception. The source code doesn&#039;t just need to be submitted along with the patch. the whole training set data needs to be submitted along with the patch, which is practically impossible.&lt;br /&gt;
## weird, they call it the &amp;quot;Rich Hickey Contributor Agreement&amp;quot; https://na1.documents.adobe.com/public/esignWidget?wid=CBFCIBAA3AAABLblqZhCSXRbJ7T5RGvmMvmpg3CzvkF_RcpWXMnGWW_W9340ztJ3-ChQ0m18hA-d06ufD8Yk*&lt;br /&gt;
### oh good, the document itself is CC BY-SA&lt;br /&gt;
## the source for it was oracle&#039;s OCA https://www.oracle.com/technetwork/oca-faq-405384.pdf&lt;br /&gt;
### yeah, the second-to-last FAQ question says that the OCA is CC BY-SA &lt;br /&gt;
### looks like neither of them mention AI in the document itself :/&lt;br /&gt;
### maybe I don&#039;t like the RHCA contents, but I do really like the header and footer and how clearly it&#039;s licened itself as CC BY-SA&lt;br /&gt;
# the linux foundation has a CLA generator, but it&#039;s authwalled :( https://easycla.lfx.linuxfoundation.org/#/&lt;br /&gt;
# cyanogenmod&#039;s is pretty nice; not too long. unfortunately the license isn&#039;t clear https://web.archive.org/web/20160308140334/http://review.cyanogenmod.org/static/cla_individual.html&lt;br /&gt;
# same for Discourse; it&#039;s about 7 paragraph bullet points long. unfortuantely the license isn&#039;t clear https://cla-assistant.io/discourse/discourse&lt;br /&gt;
## apparently it&#039;s an apache license https://github.com/cla-assistant/cla-assistant/blob/main/LICENSE&lt;br /&gt;
# django has two: indivdual and corproate. apparently adapted from apache&#039;s (so likely licensed under apache, but I should confirm&lt;br /&gt;
## https://media.djangoproject.com/foundation/icla.pdf&lt;br /&gt;
## https://media.djangoproject.com/foundation/icla.pdf&lt;br /&gt;
# evil corps like meta and google have CLAs, but I doubt they&#039;re licensed openly&lt;br /&gt;
## https://code.facebook.com/cla/individual&lt;br /&gt;
## https://cla.developers.google.com/about/google-individual?csw=1&lt;br /&gt;
# here&#039;s hashicorp&#039;s. I don&#039;t think it&#039;s licensed openly https://www.hashicorp.com/en/cla&lt;br /&gt;
# Here&#039;s Hoe Assistant https://www.home-assistant.io/blog/2017/01/21/home-assistant-governance/&lt;br /&gt;
## apparently Matthew Garret convinced them to change their CLA from GitHub&#039;s to this one https://www.home-assistant.io/blog/2017/01/21/home-assistant-governance/&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
By making a contribution to this project, I certify that:&lt;br /&gt;
&lt;br /&gt;
(a) The contribution was created in whole or in part by me and I&lt;br /&gt;
	have the right to submit it under the Apache 2.0 license; or&lt;br /&gt;
&lt;br /&gt;
(b) The contribution is based upon previous work that, to the best&lt;br /&gt;
	of my knowledge, is covered under an appropriate open source&lt;br /&gt;
	license and I have the right under that license to submit that&lt;br /&gt;
	work with modifications, whether created in whole or in part&lt;br /&gt;
	by me, under the Apache 2.0 license; or&lt;br /&gt;
&lt;br /&gt;
(c) The contribution was provided directly to me by some other&lt;br /&gt;
	person who certified (a), (b) or (c) and I have not modified&lt;br /&gt;
	it.&lt;br /&gt;
&lt;br /&gt;
(d) I understand and agree that this project and the contribution&lt;br /&gt;
	are public and that a record of the contribution (including all&lt;br /&gt;
	personal information I submit with it) is maintained indefinitely&lt;br /&gt;
	and may be redistributed consistent with this project or the open&lt;br /&gt;
	source license(s) involved.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## is it just me, or does that look like the one from the Linux Foundation, except it was modified to have the section saying &amp;quot;you can&#039;t modify this&amp;quot; removed. Hmm./.&lt;br /&gt;
## yeah, they say that in attribtuion&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
The text of this license is available under the Creative Commons Attribution-ShareAlike 3.0 Unported License. It is based on the Linux Developer Certificate Of Origin, but is modified to explicitly use the Apache 2.0 license and not mention sign-off.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## idk, maybe they got explicit permission from the Linux Foundation to modify it and re-license it CC BY-SA?&lt;br /&gt;
## I asked them if they got permission and to publish proof, so we could do the same https://github.com/home-assistant/home-assistant.io/issues/44892&lt;br /&gt;
&lt;br /&gt;
= 2026-04-20 =&lt;br /&gt;
# I got a link from a friend from a pretty cool sounding similar project https://projectkamp.com/&lt;br /&gt;
## sounds like they have similar ideas as Eco-Libre, except they already bought land already&lt;br /&gt;
## They claim to use CC BY-SA to license all their works, but their videos are not marked as-such on YouTube. And, because YouTube is trash, I can&#039;t view their videos  https://academy.projectkamp.com/start/intro/#open-source--license&lt;br /&gt;
## I wanted to email them to update the license on their YouTube videos (so, at least, they could be archived on archive.org and uploaded to PeerTube, etc), but I couldn&#039;t find their email https://projectkamp.com/faq.html&lt;br /&gt;
## Their footer says they&#039;re part of One Army (along with, eg Precious Plastic), so I emailed One Army asking for the email address of Project Kamp https://www.onearmy.earth/&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Hello,&lt;br /&gt;
&lt;br /&gt;
Can you please tell me the email address of Project Kamp?&lt;br /&gt;
&lt;br /&gt;
I&#039;m looking to get in contact with Project Kamp over email, but I couldn&#039;t find a way to email them from their website:&lt;br /&gt;
&lt;br /&gt;
 * https://projectkamp.com/faq.html&lt;br /&gt;
&lt;br /&gt;
Please send me the email address for Project Kamp.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Thank you,&lt;br /&gt;
&lt;br /&gt;
Michael Altfield&lt;br /&gt;
https://www.michaelaltfield.net&lt;br /&gt;
PGP Fingerprint: 0465 E42F 7120 6785 E972  644C FE1B 8449 4E64 0D41&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## TODO: add Project Kamp to our &#039;common-files&#039; repo&#039;s docs as a &amp;quot;Similar Project&amp;quot;&lt;br /&gt;
# ...&lt;br /&gt;
# Tomorrow we&#039;re publishing our partnership with Raft Foundation, so we can accept tax-deductable donations https://www.eco-libre.org/raft-2026/&lt;br /&gt;
# Some weeks ago I did updates of wordpress, including adding new plugins. One of them was ActivityPub&lt;br /&gt;
# I enabled ActivityPub, but the Settings page gives me a &amp;quot;504 Gateway Time-out&amp;quot; error from nginx https://www.eco-libre.org/wp-admin/options-general.php?page=activitypub&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;head&amp;gt;&amp;lt;title&amp;gt;504 Gateway Time-out&amp;lt;/title&amp;gt;&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;h1&amp;gt;504 Gateway Time-out&amp;lt;/h1&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&amp;lt;center&amp;gt;nginx&amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## here&#039;s the error.log entry for nginx&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
2026/04/20 17:37:36 [error] 1992101#1992101: *2507383 upstream timed out (110: Connection timed out) while reading response header from upstream, client: 64.42.180.66, server: www.eco-libre.org, request: &amp;quot;GET /wp-admin/options-general.php?page=activitypub HTTP/1.1&amp;quot;, upstream: &amp;quot;http://127.0.0.1:6081/wp-admin/options-general.php?page=activitypub&amp;quot;, host: &amp;quot;www.eco-libre.org&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## and here&#039;s the apache logs&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
==&amp;gt; www.eco-libre.org/access.log &amp;lt;==&lt;br /&gt;
64.42.180.66 - - [20/Apr/2026:17:54:54 +0000] &amp;quot;POST /wp-admin/admin-ajax.php HTTP/1.1&amp;quot; 200 792 &amp;quot;https://www.eco-libre.org/wp-admin/plugins.php?plugin_status=all&amp;amp;paged=1&amp;amp;s&amp;quot; &amp;quot;Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.0.0 Safari/537.36&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==&amp;gt; www.eco-libre.org/error.log &amp;lt;==&lt;br /&gt;
[Mon Apr 20 17:55:23.176842 2026] [proxy_fcgi:error] [pid 526343:tid 526374] (70007)The timeout specified has expired: [client 64.42.180.66:0] AH01075: Error dispatching request to : (polling)&lt;br /&gt;
&lt;br /&gt;
==&amp;gt; www.eco-libre.org/access.log &amp;lt;==&lt;br /&gt;
64.42.180.66 - - [20/Apr/2026:17:54:23 +0000] &amp;quot;GET /wp-admin/options-general.php?page=activitypub HTTP/1.1&amp;quot; 504 467 &amp;quot;-&amp;quot; &amp;quot;Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.0.0 Safari/537.36&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## I don&#039;t know what&#039;s wrong, and that&#039;s not enough to debug it. I tested ActivityPub on another site, and the config page had no issues. But I ended-up not finishing its setup because I wanted the actor URL to use the naked domain, and I&#039;m still waiting to hear back on that https://github.com/Automattic/wordpress-activitypub/issues/3164&lt;br /&gt;
# anyway, I wrote a newsletter, scheduled it to go out for tomorrow at 15:00 UTC&lt;br /&gt;
# I also wrote the update for Open Collective&lt;br /&gt;
# I put the &amp;quot;Donate&amp;quot; page in the menu bar&lt;br /&gt;
## on mobile, this made the top navbar spill over into a second row, so I moved &amp;quot;Contact&amp;quot; under &amp;quot;Join Us&amp;quot;&lt;br /&gt;
### to make up for this, I started creating footer areas&lt;br /&gt;
### the theme supports three footers. one on the left, center, and right&lt;br /&gt;
### I put copyright &amp;amp; copyleft info on the right footer&lt;br /&gt;
### I put social media icons in the middle footer&lt;br /&gt;
### I put a &amp;quot;Contact&amp;quot; link on the left footer&lt;br /&gt;
## As I was styling the left footer, I stopped being able to update it suddenly. I kept getting error&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
There was an error. Could not get a valid response from the server.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## closer inspection of the networking tab of the browsers debugger showed an error when doing an OPTIONS request&lt;br /&gt;
## well, that&#039;s probably because (for security) we block all but GET POST and HEAD&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
if ($request_method !~ ^(GET|HEAD|POST)$ ) {&lt;br /&gt;
   # note: 444 is a meta code; it doesn&#039;t return anything, actually&lt;br /&gt;
   #       it just logs, drops, &amp;amp; closes the connection (useful&lt;br /&gt;
   #       against malware)&lt;br /&gt;
   return 444;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## well, fuck, our widgets are bricked&lt;br /&gt;
## I asked about this here https://wordpress.org/support/topic/configure-wordpress-to-never-use-options-requests/&lt;br /&gt;
## as a workaround, I found that I *can* edit these footer widgets from the theme -&amp;gt; customize -&amp;gt; widgets section of the site – which sends POST as expected https://www.eco-libre.org/wp-admin/customize.php?return=%2Fwp-admin%2Fwidgets.php&lt;br /&gt;
# I realized that I can&#039;t post to lemmy anymore, because our sdf instance has been down since 2026-04-07&lt;br /&gt;
# I went ahead and created an accout request on the solar punk instance https://slrpnk.net/&lt;br /&gt;
## if we&#039;re accepted, I&#039;d also like to create a community specific to Eco-Libre &lt;br /&gt;
# I also created one on lemmy.vg&lt;br /&gt;
&lt;br /&gt;
= 2026-04-19 =&lt;br /&gt;
# I failed to login to the wiki today. I got error&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[REDACTED] 2026-04-19 20:34:48: Fatal exception of type &amp;quot;DomainException&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# exception.log seems to suggest that I set a bad config for the password policy yesterday&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
==&amp;gt; exception.log &amp;lt;==&lt;br /&gt;
2026-04-19 20:36:27 mail wiki_el_db-rHb3: [REDACTED] /index.php?title=Special:UserLogin&amp;amp;returnto=MediaWiki&lt;br /&gt;
%3ARequestaccount-agree   DomainException: Invalid password policy config. No check defined for &#039;PasswordCannotMatchUsername&#039;&lt;br /&gt;
.&lt;br /&gt;
#0 /usr/share/mediawiki/includes/password/UserPasswordPolicy.php(88): MediaWiki\Password\UserPasswordPolicy-&amp;gt;checkPolicies()&lt;br /&gt;
#1 /usr/share/mediawiki/includes/user/User.php(995): MediaWiki\Password\UserPasswordPolicy-&amp;gt;checkUserPassword()&lt;br /&gt;
#2 /usr/share/mediawiki/includes/auth/AbstractPasswordPrimaryAuthenticationProvider.php(114): MediaWiki\User\User-&amp;gt;checkPassw&lt;br /&gt;
ordValidity()&lt;br /&gt;
#3 /usr/share/mediawiki/includes/auth/AbstractTemporaryPasswordPrimaryAuthenticationProvider.php(155): MediaWiki\Auth\Abstrac&lt;br /&gt;
tPasswordPrimaryAuthenticationProvider-&amp;gt;checkPasswordValidity()&lt;br /&gt;
#4 /usr/share/mediawiki/includes/auth/AuthManager.php(625): MediaWiki\Auth\AbstractTemporaryPasswordPrimaryAuthenticationProv&lt;br /&gt;
ider-&amp;gt;beginPrimaryAuthentication()&lt;br /&gt;
#5 /usr/share/mediawiki/includes/auth/AuthManager.php(535): MediaWiki\Auth\AuthManager-&amp;gt;continueAuthentication()&lt;br /&gt;
#6 /usr/share/mediawiki/includes/specialpage/AuthManagerSpecialPage.php(390): MediaWiki\Auth\AuthManager-&amp;gt;beginAuthentication&lt;br /&gt;
()&lt;br /&gt;
#7 /usr/share/mediawiki/includes/specialpage/AuthManagerSpecialPage.php(524): MediaWiki\SpecialPage\AuthManagerSpecialPage-&amp;gt;performAuthenticationStep()&lt;br /&gt;
#8 [internal function]: MediaWiki\SpecialPage\AuthManagerSpecialPage-&amp;gt;handleFormSubmit()&lt;br /&gt;
#9 /usr/share/mediawiki/includes/htmlform/HTMLForm.php(822): call_user_func()&lt;br /&gt;
#10 /usr/share/mediawiki/includes/specialpage/AuthManagerSpecialPage.php(455): MediaWiki\HTMLForm\HTMLForm-&amp;gt;trySubmit()&lt;br /&gt;
#11 /usr/share/mediawiki/includes/specialpage/LoginSignupSpecialPage.php(403): MediaWiki\SpecialPage\AuthManagerSpecialPage-&amp;gt;trySubmit()&lt;br /&gt;
#12 /usr/share/mediawiki/includes/specialpage/SpecialPage.php(728): MediaWiki\SpecialPage\LoginSignupSpecialPage-&amp;gt;execute()&lt;br /&gt;
#13 /usr/share/mediawiki/includes/specialpage/SpecialPageFactory.php(1717): MediaWiki\SpecialPage\SpecialPage-&amp;gt;run()&lt;br /&gt;
#14 /usr/share/mediawiki/includes/actions/ActionEntryPoint.php(505): MediaWiki\SpecialPage\SpecialPageFactory-&amp;gt;executePath()&lt;br /&gt;
#15 /usr/share/mediawiki/includes/actions/ActionEntryPoint.php(147): MediaWiki\Actions\ActionEntryPoint-&amp;gt;performRequest()&lt;br /&gt;
#16 /usr/share/mediawiki/includes/MediaWikiEntryPoint.php(200): MediaWiki\Actions\ActionEntryPoint-&amp;gt;execute()&lt;br /&gt;
#17 /usr/share/mediawiki/index.php(58): MediaWiki\MediaWikiEntryPoint-&amp;gt;run()&lt;br /&gt;
#18 {main}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# here&#039;s what we have&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$wgPasswordPolicy[&#039;policies&#039;][&#039;default&#039;][&#039;PasswordCannotMatchUsername&#039;] = true;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# but the docs suggest there&#039;s an additioanl array needed for &amp;quot;value&amp;quot;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$wgPasswordPolicy[&#039;policies&#039;][&#039;default&#039;][&#039;PasswordCannotMatchUsername&#039;][&#039;value&#039;] = false;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# if I expand &amp;quot;Older Versions&amp;quot; then the &#039;PasswordCannotMatchUsername&#039; disappears from mediawiki &amp;gt;1.37. The docs still say it&#039;s an option, but I didn&#039;t find it in our files https://www.mediawiki.org/wiki/Manual:$wgPasswordPolicy#Default&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@mail:/var/www/html/wiki.eco-libre.org# grep -irl PasswordCannotMatchUsername *&lt;br /&gt;
LocalSettings.20260419.php&lt;br /&gt;
LocalSettings.php&lt;br /&gt;
root@mail:/var/www/html/wiki.eco-libre.org# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# it does appear that &#039;PasswordCannotBeSubstringInUsername&#039; is available. let&#039;s use that instead.&lt;br /&gt;
# ugh, next attempt gives another failure&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
==&amp;gt; exception.log &amp;lt;==&lt;br /&gt;
2026-04-19 21:04:26 mail wiki_el_db-rHb3: [REDACTED] /index.php?title=Special:UserLogin&amp;amp;returnto=MediaWiki&lt;br /&gt;
%3ARequestaccount-agree   DomainException: Invalid password policy config. No check defined for &#039;PasswordCannotBePopular&#039;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# I removed this; I guess we&#039;re supposed to use &#039;PasswordNotInCommonList&#039;, which we already use.&lt;br /&gt;
# ok, that worked. I&#039;m able to login-in. here&#039;s the final&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# PASSWORD POLICIES&lt;br /&gt;
&lt;br /&gt;
$wgPasswordPolicy[&#039;policies&#039;][&#039;default&#039;][&#039;MinimalPasswordLength&#039;] = 10;&lt;br /&gt;
$wgPasswordPolicy[&#039;policies&#039;][&#039;default&#039;][&#039;PasswordCannotBeSubstringInUsername&#039;][&#039;value&#039;] = true;&lt;br /&gt;
$wgPasswordPolicy[&#039;policies&#039;][&#039;default&#039;][&#039;PasswordNotInCommonList&#039;] = true;&lt;br /&gt;
&lt;br /&gt;
$wgPasswordPolicy[&#039;policies&#039;][&#039;sysop&#039;][&#039;MinimalPasswordLength&#039;] = 20;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# now that I can login, I was going to change the text that appears on the Request Account page https://wiki.eco-libre.org/wiki/MediaWiki:Requestaccount-text&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Complete and submit the following form to request a user account.&lt;br /&gt;
&lt;br /&gt;
Make sure that you first read the Terms of Service before requesting an account.&lt;br /&gt;
&lt;br /&gt;
Once the account is approved, you will be emailed a notification message and the account will be usable at login. &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## my intention was to add a notebox to highlight that the user would need to first complete the Eco-Libre Volunteer Test (https://eco-libre.github.io/volunteer-test/) before their new wiki account would be approve, and tell them to contact us (https://eco-libre.org/contact/)&lt;br /&gt;
## unforutnately, the notebox template doesn&#039;t exist!&lt;br /&gt;
## I found the docs on templates, and it says there&#039;s no way to import a bunch of standard templates https://www.mediawiki.org/wiki/Help:Templates&lt;br /&gt;
## this third-party guide says we can make the export/import (eg from Wikipedia) of a mass of templates easier with the Scribunto extension https://www.ryadel.com/en/how-to-add-wikipedia-mbox-templates-to-your-own-mediawiki/&lt;br /&gt;
## this extension ships with core mediawiki, it seems&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@mail:/var/www/html/wiki.eco-libre.org# ls htdocs/extensions/&lt;br /&gt;
AbuseFilter     ConfirmEdit      InputBox          Nuke             ReplaceText            TemplateData    Widgets&lt;br /&gt;
CategoryTree    DeleteBatch      Interwiki         OATHAuth         Scribunto              TextExtracts    WikiEditor&lt;br /&gt;
Cite            DiscussionTools  Linter            PageImages       SecureLinkFixer        Thanks&lt;br /&gt;
CiteThisPage    Echo             LoginNotify       ParserFunctions  SmiteSpam              TitleBlacklist&lt;br /&gt;
CodeEditor      Gadgets          Math              PdfHandler       SpamBlacklist          UserMerge&lt;br /&gt;
ConfirmAccount  ImageMap         MultimediaViewer  Poem             SyntaxHighlight_GeSHi  VisualEditor&lt;br /&gt;
root@mail:/var/www/html/wiki.eco-libre.org# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# TODO: finish installing Scribunto, then do a mass-export &amp;amp; mass-import of common templates from Wikipedia. Then finish configuring [[&#039;&#039;MediaWiki:Requestaccount-text&#039;&#039;]]&lt;br /&gt;
# I thought that, maybe, a lower hanging fruit would be to implement the Privacy Policy, but I realized that page actually requires the user to accept the Terms of Service, not the Privacy Policy&lt;br /&gt;
## OSE appears to have never set a ToS (And I created the Privacy Policy, largely based on the creative commons&#039; privacy policy https://wiki.opensourceecology.org/wiki/Terms_of_Service&lt;br /&gt;
## The wikipedia Terms of Service is actually named Terms of Use, and it&#039;s pretty specific to Wikipedia (including their mission, etc). In it, it references the Privacy Policy https://foundation.wikimedia.org/wiki/Policy:Terms_of_Use/en&lt;br /&gt;
## Appropedia doesn&#039;t appear to have a page dedicated to ToS (or ToU) or Privacy Policy. Instead, it&#039;s just on one page named Policies https://www.appropedia.org/Appropedia:Policies&lt;br /&gt;
&lt;br /&gt;
= 2026-04-18 =&lt;br /&gt;
# continuing where I left off yes terday to fix mediawiki after the unattended-upgrade deleted our LocalSettings.php file&lt;br /&gt;
# I need to push-out a new php.ini config (with ansible) to include /etc/mediawiki/ in the open_basedir setting&lt;br /&gt;
# ansible is broken suddenly; it says it can&#039;t find python&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
fatal: [michaelaltfield.net]: UNREACHABLE! =&amp;gt; {&amp;quot;changed&amp;quot;: false, &amp;quot;msg&amp;quot;: &amp;quot;EOF on stream; last 100 lines received:\nbash: line 1: /usr/bin/python: No such file or directory&amp;quot;, &amp;quot;unreachable&amp;quot;: true}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# well, idk, did debian remove a symlink from python to python3?&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@mail:/var/lib/mediawiki# ls -lah /usr/bin/python&lt;br /&gt;
ls: cannot access &#039;/usr/bin/python&#039;: No such file or directory&lt;br /&gt;
root@mail:/var/lib/mediawiki# ls -lah /usr/bin/python3&lt;br /&gt;
lrwxrwxrwx 1 root root 10 Jun 30  2025 /usr/bin/python3 -&amp;gt; python3.13&lt;br /&gt;
root@mail:/var/lib/mediawiki# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# looks like there&#039;s a var I can set for this named ansible_python_interpreter, but it&#039;s only available in python &amp;gt;= 2.2.0 https://stackoverflow.com/a/41431540&lt;br /&gt;
# and we only have ansible v2.14.18, installed in apt on debian 12 on my client machine&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ dpkg -l | grep -i ansible&lt;br /&gt;
ii  ansible                                       7.7.0+dfsg-3+deb12u1                     all          Configuration management, deployment, and task execution system&lt;br /&gt;
ii  ansible-core                                  2.14.18-0+deb12u2                        all          Configuration management, deployment, and task execution system&lt;br /&gt;
ii  ansible-mitogen                               0.3.3-9+deb12u1                          all          Fast connection strategy for Ansible&lt;br /&gt;
$&lt;br /&gt;
&lt;br /&gt;
$ cat /etc/issue&lt;br /&gt;
Debian GNU/Linux 12 \n \l&lt;br /&gt;
&lt;br /&gt;
$ &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# looks like debian 13 only has ansible core v2.18, so that won&#039;t help https://packages.debian.org/trixie/ansible&lt;br /&gt;
# fuck it, I just created a symlink. maybe it&#039;ll get deleted a and I&#039;ll have to recreate it again. maybe not&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@mail:/var/lib/mediawiki# ln -s /usr/bin/python3 /usr/bin/python&lt;br /&gt;
root@mail:/var/lib/mediawiki# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# ok, that fixed ansible, and I was able to push-out the udpdated php.ini file&lt;br /&gt;
# restarted php&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@mail:/var/lib/mediawiki# systemctl restart php8.4-fpm&lt;br /&gt;
root@mail:/var/lib/mediawiki# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# ...aaaand the wiki is fixed&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[user@disp3459 ~]$ curl -IL https://wiki.eco-libre.org/&lt;br /&gt;
HTTP/1.1 301 Moved Permanently&lt;br /&gt;
Server: nginx&lt;br /&gt;
Date: Sat, 18 Apr 2026 17:38:39 GMT&lt;br /&gt;
Content-Type: text/html; charset=UTF-8&lt;br /&gt;
Content-Length: 0&lt;br /&gt;
Connection: keep-alive&lt;br /&gt;
X-Content-Type-Options: nosniff&lt;br /&gt;
Vary: Accept-Encoding,Cookie&lt;br /&gt;
Expires: Thu, 01 Jan 1970 00:00:00 GMT&lt;br /&gt;
Cache-Control: private, must-revalidate, max-age=0&lt;br /&gt;
X-Request-Id: REDACTED&lt;br /&gt;
X-Frame-Options: SAMEORIGIN&lt;br /&gt;
Last-Modified: Sat, 18 Apr 2026 17:38:06 GMT&lt;br /&gt;
Location: https://wiki.eco-libre.org/wiki/Main_Page&lt;br /&gt;
X-Content-Type-Options: nosniff&lt;br /&gt;
X-XSS-Protection: 1; mode=block&lt;br /&gt;
X-Frame-Options: deny&lt;br /&gt;
Referrer-Policy: strict-origin&lt;br /&gt;
X-Varnish: 6288299 13705059&lt;br /&gt;
Age: 33&lt;br /&gt;
Via: 1.1 mail (Varnish/7.7)&lt;br /&gt;
Strict-Transport-Security: max-age=86400;includeSubDomains&lt;br /&gt;
&lt;br /&gt;
HTTP/1.1 200 OK&lt;br /&gt;
Server: nginx&lt;br /&gt;
Date: Sat, 18 Apr 2026 17:38:40 GMT&lt;br /&gt;
Content-Type: text/html; charset=UTF-8&lt;br /&gt;
Content-Length: 15926&lt;br /&gt;
Connection: keep-alive&lt;br /&gt;
X-Content-Type-Options: nosniff&lt;br /&gt;
Content-language: en&lt;br /&gt;
Vary: Accept-Encoding,Cookie&lt;br /&gt;
Expires: Thu, 01 Jan 1970 00:00:00 GMT&lt;br /&gt;
Cache-Control: private, must-revalidate, max-age=0&lt;br /&gt;
X-Request-Id: REDACTED&lt;br /&gt;
X-Frame-Options: SAMEORIGIN&lt;br /&gt;
Last-Modified: Sat, 18 Apr 2026 01:16:13 GMT&lt;br /&gt;
X-Mod-Pagespeed: Powered By mod_pagespeed&lt;br /&gt;
X-Content-Type-Options: nosniff&lt;br /&gt;
X-XSS-Protection: 1; mode=block&lt;br /&gt;
X-Frame-Options: deny&lt;br /&gt;
Referrer-Policy: strict-origin&lt;br /&gt;
X-Varnish: 18702490 13705062&lt;br /&gt;
Age: 31&lt;br /&gt;
Via: 1.1 mail (Varnish/7.7)&lt;br /&gt;
Accept-Ranges: bytes&lt;br /&gt;
Strict-Transport-Security: max-age=86400;includeSubDomains&lt;br /&gt;
&lt;br /&gt;
[user@disp3459 ~]$ &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# ...&lt;br /&gt;
# alright, now let&#039;s try to install &amp;amp; configure all the 3TOFU&#039;d extensions&lt;br /&gt;
# we have 6 new extensions to install&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@mail:/var/tmp/mediawiki/extensions.2026-03-29# ls&lt;br /&gt;
ConfirmAccount-REL1_43-38c4602.tar.gz  extensions.txt  OATHAuth-REL1_43-015a49e.tar.gz   UserMerge-REL1_43-27425da.tar.gz&lt;br /&gt;
DeleteBatch-REL1_43-b3b052b.tar.gz     info.txt        SmiteSpam-REL1_43-483b81b.tar.gz  Widgets-REL1_43-60a09f0.tar.gz&lt;br /&gt;
root@mail:/var/tmp/mediawiki/extensions.2026-03-29# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# I extracted them&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@mail:/var/tmp/mediawiki/extensions.2026-03-29# for file in $(ls *.tar.gz); do tar -xvf $file; done.&lt;br /&gt;
...&lt;br /&gt;
Widgets/vendor/smarty/smarty/CHANGELOG.md&lt;br /&gt;
Widgets/COPYING&lt;br /&gt;
root@mail:/var/tmp/mediawiki/extensions.2026-03-29#&lt;br /&gt;
&lt;br /&gt;
root@mail:/var/tmp/mediawiki/extensions.2026-03-29# ls&lt;br /&gt;
ConfirmAccount                         info.txt                          UserMerge&lt;br /&gt;
ConfirmAccount-REL1_43-38c4602.tar.gz  OATHAuth                          UserMerge-REL1_43-27425da.tar.gz&lt;br /&gt;
DeleteBatch                            OATHAuth-REL1_43-015a49e.tar.gz   Widgets&lt;br /&gt;
DeleteBatch-REL1_43-b3b052b.tar.gz     SmiteSpam                         Widgets-REL1_43-60a09f0.tar.gz&lt;br /&gt;
extensions.txt                         SmiteSpam-REL1_43-483b81b.tar.gz&lt;br /&gt;
root@mail:/var/tmp/mediawiki/extensions.2026-03-29# &lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# let&#039;s start with OATHAuth, which is probably the most important (for security)&lt;br /&gt;
# oh wait, we already have OATHAuth??&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@mail:/var/tmp/mediawiki/extensions.2026-03-29# ls /var/www/html/wiki.eco-libre.org/htdocs/extensions/&lt;br /&gt;
AbuseFilter   ConfirmEdit      InputBox     MultimediaViewer  PdfHandler       SpamBlacklist          TitleBlacklist&lt;br /&gt;
CategoryTree  DiscussionTools  Interwiki    Nuke              Poem             SyntaxHighlight_GeSHi  VisualEditor&lt;br /&gt;
Cite          Echo             Linter       OATHAuth          ReplaceText      TemplateData           WikiEditor&lt;br /&gt;
CiteThisPage  Gadgets          LoginNotify  PageImages        Scribunto        TextExtracts&lt;br /&gt;
CodeEditor    ImageMap         Math         ParserFunctions   SecureLinkFixer  Thanks&lt;br /&gt;
root@mail:/var/tmp/mediawiki/extensions.2026-03-29# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# ugh, yeah, this syas it has been inclued in MediaWiki core since v1.31 https://www.mediawiki.org/wiki/Extension:OATHAuth&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
This extension comes with MediaWiki 1.31 and later, so you do not need to download it. The remaining configuration instructions must still be followed.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# well, maybe that&#039;s why it got updated so much. anyway, that&#039;s better; we get it directly from apt&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@mail:/var/tmp/mediawiki/extensions.2026-03-29# dpkg -l | grep -i mediawiki&lt;br /&gt;
ii  mediawiki                         1:1.43.8+dfsg-1~deb13u1                 all          website engine for collaborative work&lt;br /&gt;
ii  mediawiki-classes                 1:1.43.8+dfsg-1~deb13u1                 all          website engine for collaborative work - standalone classes&lt;br /&gt;
root@mail:/var/tmp/mediawiki/extensions.2026-03-29# &lt;br /&gt;
&lt;br /&gt;
root@mail:/var/tmp/mediawiki/extensions.2026-03-29# dpkg-query -L mediawiki | grep -i oathauth | head&lt;br /&gt;
/usr/share/mediawiki/extensions-core/OATHAuth&lt;br /&gt;
/usr/share/mediawiki/extensions-core/OATHAuth/COPYING&lt;br /&gt;
/usr/share/mediawiki/extensions-core/OATHAuth/OATHAuth.alias.php&lt;br /&gt;
/usr/share/mediawiki/extensions-core/OATHAuth/ServiceWiring.php&lt;br /&gt;
/usr/share/mediawiki/extensions-core/OATHAuth/composer.json&lt;br /&gt;
/usr/share/mediawiki/extensions-core/OATHAuth/extension.json&lt;br /&gt;
/usr/share/mediawiki/extensions-core/OATHAuth/i18n&lt;br /&gt;
/usr/share/mediawiki/extensions-core/OATHAuth/i18n/ang.json&lt;br /&gt;
/usr/share/mediawiki/extensions-core/OATHAuth/i18n/api&lt;br /&gt;
/usr/share/mediawiki/extensions-core/OATHAuth/i18n/api/ar.json&lt;br /&gt;
root@mail:/var/tmp/mediawiki/extensions.2026-03-29# &lt;br /&gt;
&lt;br /&gt;
root@mail:/var/tmp/mediawiki/extensions.2026-03-29# dpkg-query -L mediawiki | grep -i oathauth | tail&lt;br /&gt;
/usr/share/mediawiki/extensions-core/OATHAuth/src/OATHAuth.php&lt;br /&gt;
/usr/share/mediawiki/extensions-core/OATHAuth/src/OATHAuthModuleRegistry.php&lt;br /&gt;
/usr/share/mediawiki/extensions-core/OATHAuth/src/OATHAuthServices.php&lt;br /&gt;
/usr/share/mediawiki/extensions-core/OATHAuth/src/OATHUser.php&lt;br /&gt;
/usr/share/mediawiki/extensions-core/OATHAuth/src/OATHUserRepository.php&lt;br /&gt;
/usr/share/mediawiki/extensions-core/OATHAuth/src/Special&lt;br /&gt;
/usr/share/mediawiki/extensions-core/OATHAuth/src/Special/DisableOATHForUser.php&lt;br /&gt;
/usr/share/mediawiki/extensions-core/OATHAuth/src/Special/OATHManage.php&lt;br /&gt;
/usr/share/mediawiki/extensions-core/OATHAuth/src/Special/VerifyOATHForUser.php&lt;br /&gt;
/var/lib/mediawiki/extensions/OATHAuth&lt;br /&gt;
root@mail:/var/tmp/mediawiki/extensions.2026-03-29# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# I wonder if there&#039;s any others we get? looks like it&#039;s only this one&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@mail:/var/tmp/mediawiki/extensions.2026-03-29# ls /usr/share/mediawiki/extensions-core | grep -iE &#039;ConfirmAccount|SmiteSpam|DeleteBatch|UserMerge|Widgets|OATHAuth&#039;&lt;br /&gt;
OATHAuth&lt;br /&gt;
root@mail:/var/tmp/mediawiki/extensions.2026-03-29# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# just another quick check – none of these are in apt either&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@mail:/var/tmp/mediawiki/extensions.2026-03-29# apt-cache search mediawiki | grep -i extension&lt;br /&gt;
libreoffice-wiki-publisher - LibreOffice extension for working with MediaWiki articles&lt;br /&gt;
mediawiki-extension-codemirror - Syntax highlighting in MediaWiki&#039;s wikitext editor&lt;br /&gt;
mediawiki-extension-youtube - Embed YouTube and other videos into MediaWiki pages&lt;br /&gt;
php-luasandbox - PHP extension that provides a sandboxed Lua environment&lt;br /&gt;
php-wmerrors - PHP extension that enhances and customizes handling of PHP errors&lt;br /&gt;
root@mail:/var/tmp/mediawiki/extensions.2026-03-29# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# anyway, back to OATHAuth&lt;br /&gt;
## it says to enable caching&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
It is strongly recommended to setup caching when using OATHAuth.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# I confirmed that we already have cachign setup with APC&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@mail:/var/www/html/wiki.eco-libre.org# grep -ir cache LocalSettings.php &lt;br /&gt;
$wgMainCacheType = CACHE_ACCEL;&lt;br /&gt;
$wgMemCachedServers = [];&lt;br /&gt;
## Set $wgCacheDirectory to a writable directory on the web server&lt;br /&gt;
#$wgCacheDirectory = &amp;quot;$IP/cache&amp;quot;;&lt;br /&gt;
$wgCacheDirectory = &amp;quot;/var/www/html/wiki.eco-libre.org/cache&amp;quot;;&lt;br /&gt;
root@mail:/var/www/html/wiki.eco-libre.org# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
### CACHE_ACCEL means APC, which is the recommended option for single-server wikis, per the official mediawiki docs on performance tuning https://www.mediawiki.org/wiki/Manual:Performance_tuning#Single_web_server&lt;br /&gt;
### it also says to ue varnish. check&lt;br /&gt;
### it also says to use php-fpm w/ event MPM (instead of mod_php with prefork MPM), which we changed-to last month. check.&lt;br /&gt;
## our notes from OSE had the following options https://wiki.opensourceecology.org/wiki/CHG-2025-XX-XX_migrate_wiki_to_hetzner3&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
wfLoadExtension( &#039;OATHAuth&#039; );&lt;br /&gt;
&lt;br /&gt;
# Relaxed mode with +/- 4 minutes time drift tolerance. This is important or users will complain and/or disable 2FA entirely&lt;br /&gt;
# The security consequences are small. The usability benefits are huge.&lt;br /&gt;
$wgOATHAuthWindowRadius = 8;&lt;br /&gt;
&lt;br /&gt;
# make admins require 2FA&lt;br /&gt;
$wgOATHRequiredForGroups = [&#039;sysop&#039;, &#039;interface-admin&#039;, &#039;bureaucrat&#039;, &#039;suppress&#039;, &#039;widgeteditor&#039; ];&lt;br /&gt;
&lt;br /&gt;
# make &#039;powerful&#039; rights require 2FA&lt;br /&gt;
$wgOATHExclusiveRights =  [ &#039;apihighlimits&#039;, &#039;applychangetags&#039;, &#039;autoconfirmed&#039;, &#039;autopatrol&#039;, &#039;bigdelete&#039;, &#039;block&#039;, &#039;blockemail&#039;, &#039;bot&#039;, &#039;changetags&#039;, &#039;createaccount&#039;, &#039;createtalk&#039;, &#039;delete&#039;, &#039;deletechangetags&#039;, &#039;deletedhistory&#039;, &#039;deletedtext&#039;, &#039;deletelogentry&#039;, &#039;deleterevision&#039;, &#039;editcontentmodel&#039;, &#039;editinterface&#039;, &#039;editprotected&#039;, &#039;editsemiprotected&#039;, &#039;editsitecss&#039;, &#039;editsitejs&#039;, &#039;editsitejson&#039;, &#039;editusercss&#039;, &#039;edituserjs&#039;, &#039;edituserjson&#039;, &#039;hideuser&#039;, &#039;import&#039;, &#039;importupload&#039;, &#039;ipblock-exempt&#039;, &#039;managechangetags&#039;, &#039;markbotedits&#039;, &#039;mergehistory&#039;, &#039;move-categorypages&#039;, &#039;move-rootuserpages&#039;, &#039;move-subpages&#039;, &#039;nominornewtalk&#039;, &#039;noratelimit&#039;, &#039;patrol&#039;, &#039;protect&#039;, &#039;renameuser&#039;, &#039;reupload-shared&#039;, &#039;sendemail&#039;, &#039;suppressionlog&#039;, &#039;suppressredirect&#039;, &#039;suppressrevision&#039;, &#039;unblockself&#039;, &#039;unwatchedpages&#039;, &#039;userrights&#039;, ];&lt;br /&gt;
&lt;br /&gt;
# full list for reference (taken from htdocs/includes/MainConfigSchema.php) https://www.mediawiki.org/wiki/Extension:OATHAuth#Configuration&lt;br /&gt;
#$wgOATHExclusiveRights =  [ &#039;apihighlimits&#039;, &#039;applychangetags&#039;, &#039;autoconfirmed&#039;, &#039;autopatrol&#039;, &#039;bigdelete&#039;, &#039;block&#039;, &#039;blockemail&#039;, &#039;bot&#039;, &#039;browsearchive&#039;, &#039;changetags&#039;, &#039;createaccount&#039;, &#039;createpage&#039;, &#039;createtalk&#039;, &#039;delete&#039;, &#039;deletechangetags&#039;, &#039;deletedhistory&#039;, &#039;deletedtext&#039;, &#039;deletelogentry&#039;, &#039;deleterevision&#039;, &#039;edit&#039;, &#039;editcontentmodel&#039;, &#039;editinterface&#039;, &#039;editmyoptions&#039;, &#039;editmyprivateinfo&#039;, &#039;editmyusercss&#039;, &#039;editmyuserjs&#039;, &#039;editmyuserjson&#039;, &#039;editmyuserjsredirect&#039;, &#039;editmywatchlist&#039;, &#039;editprotected&#039;, &#039;editsemiprotected&#039;, &#039;editsitecss&#039;, &#039;editsitejs&#039;, &#039;editsitejson&#039;, &#039;editusercss&#039;, &#039;edituserjs&#039;, &#039;edituserjson&#039;, &#039;hideuser&#039;, &#039;import&#039;, &#039;importupload&#039;, &#039;ipblock-exempt&#039;, &#039;managechangetags&#039;, &#039;markbotedits&#039;, &#039;mergehistory&#039;, &#039;minoredit&#039;, &#039;move&#039;, &#039;move-categorypages&#039;, &#039;movefile&#039;, &#039;move-rootuserpages&#039;, &#039;move-subpages&#039;, &#039;nominornewtalk&#039;, &#039;noratelimit&#039;, &#039;patrol&#039;, &#039;protect&#039;, &#039;read&#039;, &#039;renameuser&#039;, &#039;reupload&#039;, &#039;reupload-shared&#039;, &#039;rollback&#039;, &#039;sendemail&#039;, &#039;suppressionlog&#039;, &#039;suppressredirect&#039;, &#039;suppressrevision&#039;, &#039;unblockself&#039;, &#039;undelete&#039;, &#039;unwatchedpages&#039;, &#039;upload&#039;, &#039;userrights&#039;, &#039;viewmyprivateinfo&#039;, &#039;viewmywatchlist&#039;, &#039;viewsuppressed&#039; ];&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
### I strongly agree with the relaxed window of codes&lt;br /&gt;
### I guess that list of requirements is good&lt;br /&gt;
### the other two are no longer listed on the wiki, but I guess they&#039;re good ?&lt;br /&gt;
## the docs show an additional option = $wgOATHSecretKey, used for encrypting the secret keys in the db. it suggests this command to generate it https://www.mediawiki.org/wiki/Extension:OATHAuth&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
hexdump -vn32 -e&#039;8/8 &amp;quot;%08X&amp;quot; &amp;quot;\n&amp;quot;&#039; /dev/urandom&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
### says it&#039;s only available since 1.45. I&#039;m not sure if that&#039;s the mediawiki version or the extension version.&lt;br /&gt;
### oh, I guess it&#039;s mediawiki, since they ship together. We&#039;re running 1.43.8, so I guess we can&#039;t use it yet https://wiki.eco-libre.org/wiki/Special:Version&lt;br /&gt;
### well, I guess let&#039;s define it. then it&#039;ll automatically start to use it when we upgrade to the next LTS. I think.&lt;br /&gt;
## ok, here&#039;s what I added&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@mail:/var/www/html/wiki.eco-libre.org# diff LocalSettings.20260418.php LocalSettings.php &lt;br /&gt;
220a221,240&lt;br /&gt;
&amp;gt; &lt;br /&gt;
&amp;gt; # configure OATHAuth for MFA (2FA). See also:&lt;br /&gt;
&amp;gt; # * https://www.mediawiki.org/wiki/Extension:OATHAuth&lt;br /&gt;
&amp;gt; # * https://wiki.eco-libre.org/wiki/Maltfield_Log/2026&lt;br /&gt;
&amp;gt; wfLoadExtension( &#039;OATHAuth&#039; );&lt;br /&gt;
&amp;gt; &lt;br /&gt;
&amp;gt; # Relaxed mode with +/- 4 minutes time drift tolerance. This is important or users will complain and/or disable 2FA entirely&lt;br /&gt;
&amp;gt; # The security consequences are small. The usability benefits are huge.&lt;br /&gt;
&amp;gt; $wgOATHAuthWindowRadius = 8;&lt;br /&gt;
&amp;gt; &lt;br /&gt;
&amp;gt; # make admins require 2FA&lt;br /&gt;
&amp;gt; $wgOATHRequiredForGroups = [&#039;sysop&#039;, &#039;interface-admin&#039;, &#039;bureaucrat&#039;, &#039;suppress&#039;, &#039;widgeteditor&#039; ];&lt;br /&gt;
&amp;gt; &lt;br /&gt;
&amp;gt; # make &#039;powerful&#039; rights require 2FA&lt;br /&gt;
&amp;gt; $wgOATHExclusiveRights =  [ &#039;apihighlimits&#039;, &#039;applychangetags&#039;, &#039;autoconfirmed&#039;, &#039;autopatrol&#039;, &#039;bigdelete&#039;, &#039;block&#039;, &#039;blockemail&#039;, &#039;bot&#039;, &#039;changetags&#039;, &#039;createaccount&#039;, &#039;createtalk&#039;, &#039;delete&#039;, &#039;deletechangetags&#039;, &#039;deletedhistory&#039;, &#039;deletedtext&#039;, &#039;deletelogentry&#039;, &#039;deleterevision&#039;, &#039;editcontentmodel&#039;, &#039;editinterface&#039;, &#039;editprotected&#039;, &#039;editsemiprotected&#039;, &#039;editsitecss&#039;, &#039;editsitejs&#039;, &#039;editsitejson&#039;, &#039;editusercss&#039;, &#039;edituserjs&#039;, &#039;edituserjson&#039;, &#039;hideuser&#039;, &#039;import&#039;, &#039;importupload&#039;, &#039;ipblock-exempt&#039;, &#039;managechangetags&#039;, &#039;markbotedits&#039;, &#039;mergehistory&#039;, &#039;move-categorypages&#039;, &#039;move-rootuserpages&#039;, &#039;move-subpages&#039;, &#039;nominornewtalk&#039;, &#039;noratelimit&#039;, &#039;patrol&#039;, &#039;protect&#039;, &#039;renameuser&#039;, &#039;reupload-shared&#039;, &#039;sendemail&#039;, &#039;suppressionlog&#039;, &#039;suppressredirect&#039;, &#039;suppressrevision&#039;, &#039;unblockself&#039;, &#039;unwatchedpages&#039;, &#039;userrights&#039;, ];&lt;br /&gt;
&amp;gt; &lt;br /&gt;
&amp;gt; # full list for reference (taken from htdocs/includes/MainConfigSchema.php) https://www.mediawiki.org/wiki/Extension:OATHAuth#Configuration&lt;br /&gt;
&amp;gt; #$wgOATHExclusiveRights =  [ &#039;apihighlimits&#039;, &#039;applychangetags&#039;, &#039;autoconfirmed&#039;, &#039;autopatrol&#039;, &#039;bigdelete&#039;, &#039;block&#039;, &#039;blockemail&#039;, &#039;bot&#039;, &#039;browsearchive&#039;, &#039;changetags&#039;, &#039;createaccount&#039;, &#039;createpage&#039;, &#039;createtalk&#039;, &#039;delete&#039;, &#039;deletechangetags&#039;, &#039;deletedhistory&#039;, &#039;deletedtext&#039;, &#039;deletelogentry&#039;, &#039;deleterevision&#039;, &#039;edit&#039;, &#039;editcontentmodel&#039;, &#039;editinterface&#039;, &#039;editmyoptions&#039;, &#039;editmyprivateinfo&#039;, &#039;editmyusercss&#039;, &#039;editmyuserjs&#039;, &#039;editmyuserjson&#039;, &#039;editmyuserjsredirect&#039;, &#039;editmywatchlist&#039;, &#039;editprotected&#039;, &#039;editsemiprotected&#039;, &#039;editsitecss&#039;, &#039;editsitejs&#039;, &#039;editsitejson&#039;, &#039;editusercss&#039;, &#039;edituserjs&#039;, &#039;edituserjson&#039;, &#039;hideuser&#039;, &#039;import&#039;, &#039;importupload&#039;, &#039;ipblock-exempt&#039;, &#039;managechangetags&#039;, &#039;markbotedits&#039;, &#039;mergehistory&#039;, &#039;minoredit&#039;, &#039;move&#039;, &#039;move-categorypages&#039;, &#039;movefile&#039;, &#039;move-rootuserpages&#039;, &#039;move-subpages&#039;, &#039;nominornewtalk&#039;, &#039;noratelimit&#039;, &#039;patrol&#039;, &#039;protect&#039;, &#039;read&#039;, &#039;renameuser&#039;, &#039;reupload&#039;, &#039;reupload-shared&#039;, &#039;rollback&#039;, &#039;sendemail&#039;, &#039;suppressionlog&#039;, &#039;suppressredirect&#039;, &#039;suppressrevision&#039;, &#039;unblockself&#039;, &#039;undelete&#039;, &#039;unwatchedpages&#039;, &#039;upload&#039;, &#039;userrights&#039;, &#039;viewmyprivateinfo&#039;, &#039;viewmywatchlist&#039;, &#039;viewsuppressed&#039; ];&lt;br /&gt;
&amp;gt; &lt;br /&gt;
&amp;gt; $wgOATHSecretKey=&#039;REDACTED&#039;;&lt;br /&gt;
root@mail:/var/www/html/wiki.eco-libre.org# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## ok, now let&#039;s update the db&lt;br /&gt;
### oh, this failed. we need to use the special privliged db user, since we hardened the normal db user&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@mail:/var/www/html/wiki.eco-libre.org# sudo -u www-data php /usr/share/mediawiki/maintenance/run.php update&lt;br /&gt;
MediaWiki 1.43.8 Updater&lt;br /&gt;
&lt;br /&gt;
Your composer.lock file is up to date with current dependencies!&lt;br /&gt;
Going to run database updates for wiki_el_db-rHb3&lt;br /&gt;
Depending on the size of your database this may take a while!&lt;br /&gt;
Abort with control-c in the next five seconds (skip this countdown with --quick) ...0&lt;br /&gt;
Updating category collations...&lt;br /&gt;
Selecting next 100 pages from cl_from = 0... processing... 0 done.&lt;br /&gt;
0 rows processed&lt;br /&gt;
...done.&lt;br /&gt;
Modifying rd_title field of table redirect...Wikimedia\Rdbms\DBQueryError from line 1198 of /usr/share/mediawiki/includes/libs/rdbms/database/Database.php: Error 1142: ALTER command denied to user &#039;wiki_el_user&#039;@&#039;localhost&#039; for table `wiki_el_db`.`rHb3redirect`&lt;br /&gt;
Function: Wikimedia\Rdbms\Database::sourceFile( /usr/share/mediawiki/maintenance/archives/patch-redirect-rd_title-varbinary.sql )&lt;br /&gt;
Query: ALTER TABLE `rHb3redirect` MODIFY rd_title VARBINARY(255) NOT NULL default &#039;&#039;,&lt;br /&gt;
 MODIFY rd_fragment VARBINARY(255) default NULL&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#0 /usr/share/mediawiki/includes/libs/rdbms/database/Database.php(1182): Wikimedia\Rdbms\Database-&amp;gt;getQueryException()&lt;br /&gt;
#1 /usr/share/mediawiki/includes/libs/rdbms/database/Database.php(1156): Wikimedia\Rdbms\Database-&amp;gt;getQueryExceptionAndLog()&lt;br /&gt;
#2 /usr/share/mediawiki/includes/libs/rdbms/database/Database.php(647): Wikimedia\Rdbms\Database-&amp;gt;reportQueryError()&lt;br /&gt;
#3 /usr/share/mediawiki/includes/libs/rdbms/database/Database.php(2791): Wikimedia\Rdbms\Database-&amp;gt;query()&lt;br /&gt;
#4 /usr/share/mediawiki/includes/libs/rdbms/database/Database.php(2729): Wikimedia\Rdbms\Database-&amp;gt;sourceStream()&lt;br /&gt;
#5 /usr/share/mediawiki/includes/libs/rdbms/database/DBConnRef.php(127): Wikimedia\Rdbms\Database-&amp;gt;sourceFile()&lt;br /&gt;
#6 /usr/share/mediawiki/includes/libs/rdbms/database/DBConnRef.php(799): Wikimedia\Rdbms\DBConnRef-&amp;gt;__call()&lt;br /&gt;
#7 /usr/share/mediawiki/includes/installer/DatabaseUpdater.php(797): Wikimedia\Rdbms\DBConnRef-&amp;gt;sourceFile()&lt;br /&gt;
#8 /usr/share/mediawiki/includes/installer/DatabaseUpdater.php(1074): MediaWiki\Installer\DatabaseUpdater-&amp;gt;applyPatch()&lt;br /&gt;
#9 /usr/share/mediawiki/includes/installer/DatabaseUpdater.php(595): MediaWiki\Installer\DatabaseUpdater-&amp;gt;modifyField()&lt;br /&gt;
#10 /usr/share/mediawiki/includes/installer/DatabaseUpdater.php(548): MediaWiki\Installer\DatabaseUpdater-&amp;gt;runUpdates()&lt;br /&gt;
#11 /usr/share/mediawiki/maintenance/update.php(195): MediaWiki\Installer\DatabaseUpdater-&amp;gt;doUpdates()&lt;br /&gt;
#12 /usr/share/mediawiki/maintenance/includes/MaintenanceRunner.php(703): UpdateMediaWiki-&amp;gt;execute()&lt;br /&gt;
#13 /usr/share/mediawiki/maintenance/run.php(51): MediaWiki\Maintenance\MaintenanceRunner-&amp;gt;run()&lt;br /&gt;
#14 {main}&lt;br /&gt;
root@mail:/var/www/html/wiki.eco-libre.org# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# alright, this worked&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@mail:/var/www/html/wiki.eco-libre.org# sudo -u www-data php /usr/share/mediawiki/maintenance/run.php update --dbuser wiki_el_superuser --dbpass REDACTED&lt;br /&gt;
...&lt;br /&gt;
done.&lt;br /&gt;
Purging caches...done.&lt;br /&gt;
&lt;br /&gt;
Done in 8.3 s.&lt;br /&gt;
root@mail:/var/www/html/wiki.eco-libre.org# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## after that, I tried to login. it worked&lt;br /&gt;
## I expected to be sent to some 2fa registration page, but that didn&#039;t happen. it was just like any normal login&lt;br /&gt;
## I went to special pages to see if I could get it to yell at me to enable 2fa, but that didn&#039;t happen&lt;br /&gt;
### I only see the following bold options on /wiki/Special:SpecialPages (usually admin page). I wonder if this is a subset because the others are just hidden since I don&#039;t have 2FA setup? https://wiki.eco-libre.org/wiki/Special:SpecialPages&lt;br /&gt;
#### Manage Two-Factor Authentication, Watchlist, Upload file, Change content model of a page&lt;br /&gt;
## anyway, I went to &amp;quot;Manage Two-factor authentication&amp;quot; https://wiki.eco-libre.org/wiki/Special:AccountSecurity&lt;br /&gt;
## I clicked the &amp;quot;Enable&amp;quot; button under TOTP&lt;br /&gt;
## I scanned the code. It entered it in my TOTP app as &amp;quot;Eco-Libre&amp;quot; – that&#039;s not ideal. It should say &amp;quot;Eco-Libre Wiki&amp;quot;&lt;br /&gt;
## So I updated the LocalSettings.php config with&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# This is the name that the entry will have in the user&#039;s TOTP app&lt;br /&gt;
$wgOATHAuthAccountPrefix=&#039;Eco-Libre Wiki&#039;;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## anyway, I was able to finish the 2FA enrollment process&lt;br /&gt;
## I went back to SpecialPages, and already I see a *ton* more SpecialPages in bold. So it looks like that restriction worked. Currently I have access to&lt;br /&gt;
### Unwateched pages, Block user, Create account, Delete user contributions, Disable user&#039;s two-factor authentication, Rename user, Unblock user, Verify two-factor authentication status, Watchlist, Upload file, Replace text, Change content model of a page, Import pages, Mass delete, Merge page histories, and View deleted pages.&lt;br /&gt;
## I also have a notifcation &amp;quot;Two-factor authenication has been enabeld on your account. If you did not do this, your account may have been comprimised.&amp;quot;&lt;br /&gt;
## I logged-out&lt;br /&gt;
## I logged-in.&lt;br /&gt;
### First I teted it with 6 zeros (bullshit code), and it rejected it&lt;br /&gt;
### next I entered the real OTP from my app; it worked&lt;br /&gt;
## ok, this extension is done.&lt;br /&gt;
# ...&lt;br /&gt;
# probably the next-most important one is ConfirmAccount.&lt;br /&gt;
## Honestly I don&#039;t know if I&#039;ll use this, as I decided it&#039;s better to raise the barrier of entry on the wiki to users that have passed the Eco-Libre test (which is itself very accessible, but it does allow for a onboarding &amp;amp; alignment process that should eliminate spam issues that most wikis have)&lt;br /&gt;
## perhaps if I can set it up to email the applicant a link to the &amp;quot;volunteer test&amp;quot; docs, that would be helpful to funnel wiki users into the proper volunteer join workflow..&lt;br /&gt;
# first let me copy the extensions; I ran these commands to put them in-place (yet still deactivated)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
rsync -av --progress ./ConfirmAccount /var/www/html/wiki.eco-libre.org/htdocs/extensions/&lt;br /&gt;
rsync -av --progress ./SmiteSpam /var/www/html/wiki.eco-libre.org/htdocs/extensions/&lt;br /&gt;
rsync -av --progress ./DeleteBatch /var/www/html/wiki.eco-libre.org/htdocs/extensions/&lt;br /&gt;
rsync -av --progress ./UserMerge /var/www/html/wiki.eco-libre.org/htdocs/extensions/&lt;br /&gt;
rsync -av --progress ./Widgets /var/www/html/wiki.eco-libre.org/htdocs/extensions/&lt;br /&gt;
rsync -av --progress ./OATHAuth /var/www/html/wiki.eco-libre.org/htdocs/extensions/&lt;br /&gt;
fix_web_permissions.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## that finished&lt;br /&gt;
# ok, here&#039;s the ConfirmAccount https://www.mediawiki.org/wiki/Extension:ConfirmAccount&lt;br /&gt;
## hmmm...it says we should use cache type CACHE_DB https://www.mediawiki.org/wiki/Extension:ConfirmAccount#Installation&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
wfLoadExtension( &#039;ConfirmAccount&#039; );&lt;br /&gt;
$wgSessionCacheType = CACHE_DB; // Avoids stale session state across requests.&lt;br /&gt;
$wgGroupPermissions[&#039;*&#039;][&#039;createaccount&#039;] = false; // REQUIRED to enforce account requests&lt;br /&gt;
$wgGroupPermissions[&#039;bureaucrat&#039;][&#039;createaccount&#039;] = true; // Optional to allow account creation by this trusted user group&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
#### I can&#039;t find elsewhere that says this specific cache type is requried. We&#039;re using APC, which I think is supposed to be more preformant than &lt;br /&gt;
### I checked the OSE LocalSettings.php config, and it also uses ConfirmAccount *and* CACHE_ACCEL (APC), so surely it&#039;s fine&lt;br /&gt;
### but it also used a bunch of other optimiazations, some of which are necessary for varnish caching&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#################&lt;br /&gt;
# VARNISH CACHE #&lt;br /&gt;
#################&lt;br /&gt;
&lt;br /&gt;
# note that these are named &amp;quot;squid&amp;quot; for historical reasons: wikipedia used to&lt;br /&gt;
# use squid, now they use varnish. They say &amp;quot;squid,&amp;quot; but also apply to varnish&lt;br /&gt;
# * https://www.mediawiki.org/wiki/Manual:Configuration_settings#Squid&lt;br /&gt;
&lt;br /&gt;
# See this guide for more info:&lt;br /&gt;
#  * https://www.mediawiki.org/wiki/Manual:Varnish_caching&lt;br /&gt;
&lt;br /&gt;
#$wgUseSquid = true;&lt;br /&gt;
#$wgSquidServers = array(&#039;opensourceecology.org&#039;);&lt;br /&gt;
#$wgSquidServersNoPurge = array(&#039;127.0.0.1&#039;);&lt;br /&gt;
&lt;br /&gt;
$wgUseSquid = true;&lt;br /&gt;
$wgSquidServers = array( &#039;127.0.0.1:6081&#039; );&lt;br /&gt;
$wgUsePrivateIPs = true;&lt;br /&gt;
&lt;br /&gt;
#################&lt;br /&gt;
# OPTIMIZATIONS #&lt;br /&gt;
#################&lt;br /&gt;
&lt;br /&gt;
# See these links for more info:&lt;br /&gt;
#  * https://www.mediawiki.org/wiki/Manual:Performance_tuning&lt;br /&gt;
#  * https://www.mediawiki.org/wiki/Manual:Caching&lt;br /&gt;
#  * https://www.mediawiki.org/wiki/User:Aaron_Schulz/How_to_make_MediaWiki_fast&lt;br /&gt;
&lt;br /&gt;
# INTERNAL MEDIAWIKI CACHE OPTIONS (DISTINCT FROM VARNISH)&lt;br /&gt;
&lt;br /&gt;
# MainCache and MessageCache should use APCU per Aaron Schulz&lt;br /&gt;
$wgMainCacheType = CACHE_ACCEL;&lt;br /&gt;
&lt;br /&gt;
# note that if message cache uses the db (per defaults), then it may make every&lt;br /&gt;
# page load include a db change, which causes mediawiki to emmit a set-cookie&lt;br /&gt;
# for cpPosTime. The cookie&#039;s presence coming from the backend causes varnish&lt;br /&gt;
# not to cache the page (rightfully so), and the result is that varnish (which&lt;br /&gt;
# is our most important cache) is rendered useless. For more info, see:&lt;br /&gt;
#  * https://www.mediawiki.org/wiki/Topic:U9fys4phj04a85vu&lt;br /&gt;
#  * https://wiki.opensourceecology.org/wiki/Maltfield_log_2018#Thr_Mar_15.2C_2018&lt;br /&gt;
$wgMessageCacheType = CACHE_ACCEL;&lt;br /&gt;
$wgUseLocalMessageCache = true;&lt;br /&gt;
&lt;br /&gt;
# Parser Cache should still use the DB per Aaron Schulz&lt;br /&gt;
$wgParserCacheType = CACHE_DB;&lt;br /&gt;
&lt;br /&gt;
# enable caching navigation sidebar per Aaron Schulz&lt;br /&gt;
$wgEnableSidebarCache = true;&lt;br /&gt;
&lt;br /&gt;
# cache interface messages to files in this directory per Aaron Schulz&lt;br /&gt;
# note that this should be outside the docroot!&lt;br /&gt;
$wgCacheDirectory = &amp;quot;$IP/../cache&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
# OTHER OPTIMIZATIONS&lt;br /&gt;
&lt;br /&gt;
# decrease db-heavy features per Aaron Schulz&lt;br /&gt;
$wgMiserMode = true;&lt;br /&gt;
&lt;br /&gt;
# Causes serious encoding problems&lt;br /&gt;
$wgUseGzip = false;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## I added this to our LocalSettings.php, except I hard-coded the wgCacheDirectory to &#039;/var/www/html/wiki.eco-libre.org/cache&#039;&lt;br /&gt;
## here&#039;s the ConfirmAccounts-related (and ConfirmEdit-related) config from OSE&#039;s LocalSettings.php&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# ConfirmAccount&lt;br /&gt;
# This extension and directory requires an admin to confirm a user before their &lt;br /&gt;
account is created&lt;br /&gt;
&lt;br /&gt;
require_once &amp;quot;$IP/extensions/ConfirmAccount/ConfirmAccount.php&amp;quot;;&lt;br /&gt;
$wgFileStore[&#039;accountreqs&#039;] = &amp;quot;$IP/images/ConfirmAccount&amp;quot;;&lt;br /&gt;
$wgFileStore[&#039;accountcreds&#039;] = &amp;quot;$IP/images/ConfirmAccount&amp;quot;;&lt;br /&gt;
$wgConfirmAccountContact = &#039;REDACTED@opensourceecology.org&#039;;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# ConfirmEdit&lt;br /&gt;
# reCaptcha settings and keys&lt;br /&gt;
&lt;br /&gt;
wfLoadExtensions([ &#039;ConfirmEdit&#039;, &#039;ConfirmEdit/ReCaptcha&#039; ]);&lt;br /&gt;
#$wgCaptchaClass = &#039;ReCaptcha&#039;;&lt;br /&gt;
$wgCaptchaClass = &#039;SimpleCaptcha&#039;;&lt;br /&gt;
#$wgCaptchaClass = &#039;QuestyCaptcha&#039;;&lt;br /&gt;
&lt;br /&gt;
#$wgReCaptchaPublicKey = &#039;REDACTED&#039;;&lt;br /&gt;
#$wgReCaptchaPrivateKey = &#039;REDACTED&#039;;&lt;br /&gt;
$wgReCaptchaPublicKey = &#039;REDACTED&#039;;&lt;br /&gt;
$wgReCaptchaPrivateKey = &#039;REDACTED&#039;;&lt;br /&gt;
&lt;br /&gt;
# https://www.google.com/recaptcha/admin/site?siteid=REDACTED - old style&lt;br /&gt;
#$recaptcha_public_key = &#039;REDACTED&#039;;&lt;br /&gt;
#$recaptcha_private_key = &#039;REDACTED&#039;;&lt;br /&gt;
&lt;br /&gt;
$wgGroupPermissions[&#039;*&#039;            ][&#039;skipcaptcha&#039;] = false;&lt;br /&gt;
$wgGroupPermissions[&#039;user&#039;         ][&#039;skipcaptcha&#039;] = true;&lt;br /&gt;
$wgGroupPermissions[&#039;autoconfirmed&#039;][&#039;skipcaptcha&#039;] = true;&lt;br /&gt;
$wgGroupPermissions[&#039;bot&#039;          ][&#039;skipcaptcha&#039;] = true; // registered bots&lt;br /&gt;
$wgGroupPermissions[&#039;sysop&#039;        ][&#039;skipcaptcha&#039;] = true;&lt;br /&gt;
&lt;br /&gt;
# Allow admins to approve (and unapprove) users via Special:UserRights&lt;br /&gt;
$wgAddGroups[&#039;sysop&#039;][&#039;approved&#039;] = true;&lt;br /&gt;
$wgRemoveGroups[&#039;sysop&#039;][&#039;approved&#039;] = true;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## of note is that I was planning on moving OSE from recaptcha to FancyCaptcha https://wiki.opensourceecology.org/wiki/CHG-2025-XX-XX_migrate_wiki_to_hetzner3&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# re-enable ConfirmEdit and switch to FancyCaption&lt;br /&gt;
grep &#039;FancyCaptcha&#039; ${vhostDir}/LocalSettings.php || perl -0777 -pi -e &amp;quot;s%\\\$wgCaptchaClass = &#039;SimpleCaptcha&#039;;%\#\\\$wgCaptchaClass = &#039;SimpleCaptcha&#039;;\n\nwfLoadExtensions([ &#039;ConfirmEdit&#039;, &#039;ConfirmEdit/FancyCaptcha&#039; ]);\n\\\$wgCaptchaDirectory = &#039;/var/www/html/wiki.opensourceecology.org/htdocs/images/captcha/&#039;;\n\\\$wgCaptchaSecret = &#039;$wgCaptchaSecret&#039;;\n%igs&amp;quot; ${vhostDir}/LocalSettings.php&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## oh shit, there&#039;s a known issue with ConfirmAccounts that it doesn&#039;t work at all on mediawiki v1.43. it was opened a year ago X_x https://www.mediawiki.org/wiki/Extension:ConfirmAccount#Known_issues&lt;br /&gt;
### well, hopefully that gets fixed before we upgrade to the latest LTS?&lt;br /&gt;
## ok, I&#039;m just going to add this to LocalSettings.php&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# configure ConfirmAccount. See also:&lt;br /&gt;
# * https://www.mediawiki.org/wiki/Extension:ConfirmAccount&lt;br /&gt;
# * https://wiki.eco-libre.org/wiki/Maltfield_Log/2026&lt;br /&gt;
wfLoadExtension( &#039;ConfirmAccount&#039; );&lt;br /&gt;
&lt;br /&gt;
# REQUIRED to enforce account requests&lt;br /&gt;
$wgGroupPermissions[&#039;*&#039;][&#039;createaccount&#039;] = false;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## and, per the wiki extensions&#039; page, I ran the update script&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@mail:/var/www/html/wiki.eco-libre.org# sudo -u www-data php /usr/share/mediawiki/maintenance/run.php update --dbuser wiki_el_superuser --dbpass REDACTED&lt;br /&gt;
...&lt;br /&gt;
...Update &#039;MediaWiki\Maintenance\FixAutoblockLogTitles&#039; already logged as completed. Use --force to run it again.&lt;br /&gt;
Purging caches...done.&lt;br /&gt;
&lt;br /&gt;
Done in 2.2 s.&lt;br /&gt;
root@mail:/var/www/html/wiki.eco-libre.org# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## I went to the SpecialPages, I now see &amp;quot;ConfirmAccounts Requests&amp;quot; https://wiki.eco-libre.org/wiki/Special:ConfirmAccounts&lt;br /&gt;
## Now, in a tor browser where I&#039;m *not* logged-in, I can click on &amp;quot;Anonymous&amp;quot; in the top-right and click on &amp;quot;Request account&amp;quot; https://wiki.eco-libre.org/wiki/Special:RequestAccount&lt;br /&gt;
## there&#039;s this weird thing that people have to agree to the ToS *and* that their real name is real.&lt;br /&gt;
### that first one is reasonable (though we haven&#039;t written a ToS yet)&lt;br /&gt;
### that second one is dumb. why wouldn&#039;t we let users contribute anonymously?&lt;br /&gt;
#### so I edited the LocalSettings.php with this&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# we let folks contribute under pseudonyms &lt;br /&gt;
$wgConfirmAccountRequestFormItems = [&lt;br /&gt;
   &#039;UserName&#039;        =&amp;gt; [ &#039;enabled&#039; =&amp;gt; true ],&lt;br /&gt;
   &#039;RealName&#039;        =&amp;gt; [ &#039;enabled&#039; =&amp;gt; false ],&lt;br /&gt;
   &#039;Biography&#039;       =&amp;gt; [ &#039;enabled&#039; =&amp;gt; false, &#039;minWords&#039; =&amp;gt; 50 ],&lt;br /&gt;
   &#039;AreasOfInterest&#039; =&amp;gt; [ &#039;enabled&#039; =&amp;gt; true ],&lt;br /&gt;
   &#039;CV&#039;              =&amp;gt; [ &#039;enabled&#039; =&amp;gt; true ],&lt;br /&gt;
   &#039;Notes&#039;           =&amp;gt; [ &#039;enabled&#039; =&amp;gt; true ],&lt;br /&gt;
   &#039;Links&#039;           =&amp;gt; [ &#039;enabled&#039; =&amp;gt; true ],&lt;br /&gt;
   &#039;TermsOfService&#039;  =&amp;gt; [ &#039;enabled&#039; =&amp;gt; true ],&lt;br /&gt;
 ];&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## ugh, it still has the same text about the &amp;quot;Real Name&amp;quot; – even after we disabled it&lt;br /&gt;
## looks like I need to create a wiki arrticle with the text that I want here https://wiki.eco-libre.org/wiki/MediaWiki:Requestaccount-text&lt;br /&gt;
### so the default text for this article is&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&#039;Complete and submit the following form to request a user account&#039;.&lt;br /&gt;
&lt;br /&gt;
Make sure that you first read the Terms of Service before requesting an account.&lt;br /&gt;
&lt;br /&gt;
Once the account is approved, you will be emailed a notification message and the account will be usable at login.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
### what I want is the &amp;quot;accept&amp;quot; text, which replaces this&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
I have read and agree to abide by the Terms of Service of Eco-Libre. The name I have specified under &amp;quot;Real name&amp;quot; is in fact my own real name.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
### here&#039;s a list of all the system messages, according to the extensions wiki page https://www.mediawiki.org/wiki/Extension:ConfirmAccount#Minimal&lt;br /&gt;
#### requestaccount-text, requestaccount-notes, requestaccount-ext-text, requestaccount-acc-text&lt;br /&gt;
##### this is not it https://wiki.eco-libre.org/wiki/MediaWiki:Requestaccount-acc-text&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
A confirmation message will be sent to your email address once you submit this request. The address will not be published. Please respond by clicking on the confirmation link provided by the email. Finally, your password will be emailed to you when your account is created. &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
#### nor this https://wiki.eco-libre.org/wiki/MediaWiki:Requestaccount-ext-text&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
The following information is kept private and will only be used for this request. You may want to list contacts such a phone number to aid in identify confirmation. &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
### I just searched the string, and found this&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@mail:/var/www/html/wiki.eco-libre.org# grep -irl &#039;is in fact my own real name&#039; *&lt;br /&gt;
cache/l10n_cache-en.cdb&lt;br /&gt;
htdocs/extensions/ConfirmAccount/i18n/requestaccount/en.json&lt;br /&gt;
root@mail:/var/www/html/wiki.eco-libre.org# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
#### so it looks like we need to edit one of these&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@mail:/var/www/html/wiki.eco-libre.org# grep -i &#039;real name&#039; htdocs/extensions/ConfirmAccount/i18n/requestaccount/en.json&lt;br /&gt;
		&amp;quot;requestaccount-real&amp;quot;: &amp;quot;Real name (optional):&amp;quot;,&lt;br /&gt;
		&amp;quot;requestaccount-real-i&amp;quot;: &amp;quot;Real name is optional. If you choose to provide it, this will be used for giving the user attribution for their work.&amp;quot;,&lt;br /&gt;
		&amp;quot;requestaccount-same&amp;quot;: &amp;quot;(same as real name below)&amp;quot;,&lt;br /&gt;
		&amp;quot;requestaccount-agree&amp;quot;: &amp;quot;You must certify that your real name is correct and that you agree to our Terms of Service.&amp;quot;,&lt;br /&gt;
		&amp;quot;requestaccount-tos&amp;quot;: &amp;quot;I have read and agree to abide by the [[{{MediaWiki:Requestaccount-page}}|Terms of Service]] of {{SITENAME}}.\nThe name I have specified under \&amp;quot;Real name\&amp;quot; is in fact my own real name.&amp;quot;,&lt;br /&gt;
root@mail:/var/www/html/wiki.eco-libre.org# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
#### I edited these two pages&lt;br /&gt;
##### https://wiki.eco-libre.org/wiki/MediaWiki:Requestaccount-tos&lt;br /&gt;
##### https://wiki.eco-libre.org/wiki/MediaWiki:Requestaccount-agree&lt;br /&gt;
### that worked; the agree text changed when I refresh the RequsetAccount form in tor browser&lt;br /&gt;
### I entered the min inforamtion, and got this response&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Your account request has been sent and is now pending review. A confirmation email has been sent to your email address.&lt;br /&gt;
&lt;br /&gt;
Return to Main Page.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
#### curiously, that means it didn&#039;t force me to enter a CV, bio, or the list of websites&lt;br /&gt;
#### I also got an email from noreply@eco-libre.org. It just basically asked me to click an email. Good GDPR compliance.&lt;br /&gt;
##### wait, I refreshed the special page as admin. it shows-up for review. so I guess not GDPR compliant :(&lt;br /&gt;
##### also the ip address listed is 127.0.0.1. Perhaps I need to configure MediaWiki to process X-Forwarded-For headers&lt;br /&gt;
### I changed &#039;false&#039; to &#039;true&#039; for the biography; now it appears again&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$wgConfirmAccountRequestFormItems = [&lt;br /&gt;
   &#039;UserName&#039;        =&amp;gt; [ &#039;enabled&#039; =&amp;gt; true ],&lt;br /&gt;
   &#039;RealName&#039;        =&amp;gt; [ &#039;enabled&#039; =&amp;gt; false ],&lt;br /&gt;
   &#039;Biography&#039;       =&amp;gt; [ &#039;enabled&#039; =&amp;gt; true, &#039;minWords&#039; =&amp;gt; 50 ],&lt;br /&gt;
   &#039;AreasOfInterest&#039; =&amp;gt; [ &#039;enabled&#039; =&amp;gt; true ],&lt;br /&gt;
   &#039;CV&#039;              =&amp;gt; [ &#039;enabled&#039; =&amp;gt; true ],&lt;br /&gt;
   &#039;Notes&#039;           =&amp;gt; [ &#039;enabled&#039; =&amp;gt; true ],&lt;br /&gt;
   &#039;Links&#039;           =&amp;gt; [ &#039;enabled&#039; =&amp;gt; true ],&lt;br /&gt;
   &#039;TermsOfService&#039;  =&amp;gt; [ &#039;enabled&#039; =&amp;gt; true ],&lt;br /&gt;
 ];&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## the workflow is for, after being approved, the system emails the passowrd. that&#039;s not very secure. we should, at least, make sure to require the user to change their password on first login&lt;br /&gt;
### I was looking for a way to force users to change their password on first login, but I first found this in the OSE config&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#############&lt;br /&gt;
# HARDENING #&lt;br /&gt;
#############&lt;br /&gt;
&lt;br /&gt;
$wgSecureLogin = true;&lt;br /&gt;
$wgSecretKey = &#039;REDACTED&#039;;&lt;br /&gt;
&lt;br /&gt;
# PASSWORD POLICIES&lt;br /&gt;
&lt;br /&gt;
$wgPasswordPolicy[&#039;policies&#039;][&#039;default&#039;][&#039;MinimalPasswordLength&#039;] = 10;&lt;br /&gt;
$wgPasswordPolicy[&#039;policies&#039;][&#039;default&#039;][&#039;PasswordCannotBePopular&#039;] = PHP_INT_MAX;&lt;br /&gt;
$wgPasswordPolicy[&#039;policies&#039;][&#039;default&#039;][&#039;PasswordCannotMatchUsername&#039;] = true;&lt;br /&gt;
&lt;br /&gt;
$wgPasswordPolicy[&#039;policies&#039;][&#039;sysop&#039;][&#039;MinimalPasswordLength&#039;] = 20&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
### I added this to stack exchange https://webapps.stackexchange.com/questions/182290/how-to-force-new-users-to-reset-their-password-mediawiki&lt;br /&gt;
# TODO: figure-out how to force new users to change their password, if it was auto-generated by mediawiki&lt;br /&gt;
# TODO: create ToS page https://wiki.eco-libre.org/wiki/Eco-Libre:Terms_of_Service&lt;br /&gt;
# TODO: figure-out how to make mediawiki see the IP as X-Forwarded-For (to play nice with nginx-&amp;gt;varnish-&amp;gt;apache)&lt;br /&gt;
# TODO: finish activating &amp;amp; configuring the remaining &amp;quot;new&amp;quot; extensions&lt;br /&gt;
&lt;br /&gt;
= 2026-04-17 =&lt;br /&gt;
# shit, we&#039;re getting a 500 error on the wiki today&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[user@disp3459 ~]$ curl -iL https://wiki.eco-libre.org&lt;br /&gt;
HTTP/1.1 500 Internal Server Error&lt;br /&gt;
Server: nginx&lt;br /&gt;
Date: Sat, 18 Apr 2026 00:57:02 GMT&lt;br /&gt;
Content-Type: text/html; charset=UTF-8&lt;br /&gt;
Content-Length: 0&lt;br /&gt;
Connection: keep-alive&lt;br /&gt;
X-Content-Type-Options: nosniff&lt;br /&gt;
Expires: Thu, 19 Nov 1981 08:52:00 GMT&lt;br /&gt;
Cache-Control: no-store, no-cache, must-revalidate&lt;br /&gt;
Pragma: no-cache&lt;br /&gt;
X-Request-Id: REDACTED&lt;br /&gt;
X-Frame-Options: SAMEORIGIN&lt;br /&gt;
Set-Cookie: mw_installer_session=REDACTED; path=/; secure; HttpOnly; SameSite=Strict;HttpOnly;Secure&lt;br /&gt;
X-Content-Type-Options: nosniff&lt;br /&gt;
X-XSS-Protection: 1; mode=block&lt;br /&gt;
X-Frame-Options: deny&lt;br /&gt;
Referrer-Policy: strict-origin&lt;br /&gt;
X-Varnish: 18804052&lt;br /&gt;
Age: 0&lt;br /&gt;
Via: 1.1 mail (Varnish/7.7)&lt;br /&gt;
&lt;br /&gt;
[user@disp3459 ~]$ &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# looks like open_basedir?&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Sat Apr 18 00:59:28.202275 2026] [proxy_fcgi:error] [pid 3214280:tid 3214323] [client 127.0.0.1:0] AH01071: Got error &#039;PHP message: PHP Warning:  is_readable(): open_basedir restriction in effect. File(/usr/share/mediawiki/LocalSettings.php) is not within the allowed path(s): (...) in /usr/share/mediawiki/includes/Output/NoLocalSettings.php on line 59; PHP message: PHP Fatal error:  Uncaught Error: Call to undefined function Wikimedia\\ObjectCache\\ini_set() in /usr/share/mediawiki/includes/libs/objectcache/APCUBagOStuff.php:55\nStack trace:\n#0 /usr/share/mediawiki/includes/utils/FileContentsHasher.php(37): Wikimedia\\ObjectCache\\APCUBagOStuff-&amp;gt;construct()\n#1 /usr/share/mediawiki/includes/utils/FileContentsHasher.php(47): FileContentsHasher-&amp;gt;construct()\n#2 /usr/share/mediawiki/includes/utils/FileContentsHasher.php(93): FileContentsHasher::singleton()\n#3 /usr/share/mediawiki/includes/Html/TemplateParser.php(271): FileContentsHasher::getFileContentsHash()\n#4 /usr/share/mediawiki/includes/Html/TemplateParser.php(173): MediaWiki\\Html\\TemplateParser-&amp;gt;compile()\n#5 /usr/share/mediawiki/includes/Html/TemplateParser.php(296): MediaWiki\\Html\\TemplateParser-&amp;gt;getTemplate()\n#6 /usr/share/mediawiki/includes/Output/NoLocalSettings.php(54): MediaWiki\\Html\\TemplateParser-&amp;gt;processTemplate()\n#7 /usr/share/mediawiki/includes/WebStart.php(51): require_once(&#039;...&#039;)\n#8...&#039;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# it&#039;s just a symlink to a symlink to a non-existant file. is that the issue?&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@mail:/usr/share/mediawiki/includes/libs/rdbms/database# ls -lah /usr/share/mediawiki/LocalSettings.php&lt;br /&gt;
lrwxrwxrwx 1 root root 36 Apr 10 22:17 /usr/share/mediawiki/LocalSettings.php -&amp;gt; /var/lib/mediawiki/LocalSettings.php&lt;br /&gt;
root@mail:/usr/share/mediawiki/includes/libs/rdbms/database# ls -lah /var/lib/mediawiki/LocalSettings.php&lt;br /&gt;
lrwxrwxrwx 1 root root 32 Apr 10 22:17 /var/lib/mediawiki/LocalSettings.php -&amp;gt; /etc/mediawiki/LocalSettings.php&lt;br /&gt;
root@mail:/usr/share/mediawiki/includes/libs/rdbms/database# ls -lah /etc/mediawiki/LocalSettings.php&lt;br /&gt;
ls: cannot access &#039;/etc/mediawiki/LocalSettings.php&#039;: No such file or directory&lt;br /&gt;
root@mail:/usr/share/mediawiki/includes/libs/rdbms/database# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# wtf. the file is here, but it&#039;s not here?&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@mail:/var/lib/mediawiki# ls LocalSettings.php &lt;br /&gt;
LocalSettings.php&lt;br /&gt;
root@mail:/var/lib/mediawiki# cat LocalSettings.php &lt;br /&gt;
cat: LocalSettings.php: No such file or directory&lt;br /&gt;
root@mail:/var/lib/mediawiki# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# oh, it&#039;s because it&#039;s a symlink&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@mail:/var/lib/mediawiki# ls -lah /var/www/html/wiki.eco-libre.org/htdocs/LocalSettings.php &lt;br /&gt;
lrwxrwxrwx 1 root root 32 Apr 10 22:17 /var/www/html/wiki.eco-libre.org/htdocs/LocalSettings.php -&amp;gt; /etc/mediawiki/LocalSettings.php&lt;br /&gt;
root@mail:/var/lib/mediawiki# cat /var/www/html/wiki.eco-libre.org/htdocs/LocalSettings.php &lt;br /&gt;
cat: /var/www/html/wiki.eco-libre.org/htdocs/LocalSettings.php: No such file or directory&lt;br /&gt;
root@mail:/var/lib/mediawiki# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# that definitely was a file before. I set it to just require() the real file from one dir up (outside the docroot). but why is it gone now? could it have been deleted by a security upgrade in apt? unattended-upgrades perhaps?&lt;br /&gt;
## well, that&#039;s a match&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@mail:/var/log/unattended-upgrades# grep -irl mediawiki *&lt;br /&gt;
unattended-upgrades-dpkg.log&lt;br /&gt;
unattended-upgrades.log&lt;br /&gt;
root@mail:/var/log/unattended-upgrades# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# yeah, it looks like we upgraded on 2026-04-13. That was Monday. Today is Friday.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@mail:/var/log/unattended-upgrades# grep -ir mediawiki *&lt;br /&gt;
unattended-upgrades-dpkg.log:Preparing to unpack .../mediawiki_1%3a1.43.8+dfsg-1~deb13u1_all.deb ...&lt;br /&gt;
unattended-upgrades-dpkg.log:Unpacking mediawiki (1:1.43.8+dfsg-1~deb13u1) over (1:1.43.6+dfsg-1~deb13u1) ...&lt;br /&gt;
unattended-upgrades-dpkg.log:Preparing to unpack .../mediawiki-classes_1%3a1.43.8+dfsg-1~deb13u1_all.deb ...&lt;br /&gt;
unattended-upgrades-dpkg.log:Unpacking mediawiki-classes (1:1.43.8+dfsg-1~deb13u1) over (1:1.43.6+dfsg-1~deb13u1) ...&lt;br /&gt;
unattended-upgrades-dpkg.log:Setting up mediawiki-classes (1:1.43.8+dfsg-1~deb13u1) ...&lt;br /&gt;
unattended-upgrades-dpkg.log:Setting up mediawiki (1:1.43.8+dfsg-1~deb13u1) ...&lt;br /&gt;
unattended-upgrades-dpkg.log:apache2_invoke mediawiki: already enabled&lt;br /&gt;
unattended-upgrades-dpkg.log:mediawiki-jobrunner.service is a disabled or a static unit not running, not starting it.&lt;br /&gt;
unattended-upgrades.log:2026-04-13 06:07:02,546 INFO Packages that will be upgraded: mediawiki mediawiki-classes&lt;br /&gt;
root@mail:/var/log/unattended-upgrades# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# mediawiki announced two releases on 2026-04-01. One was a normal maintenance release (1.43.8). One was a security release (1.43.7)&lt;br /&gt;
## https://lists.wikimedia.org/hyperkitty/list/mediawiki-announce@lists.wikimedia.org/thread/DIBLSBHISKX6NFRUFNOGZRVW42E7R2QP/&lt;br /&gt;
## https://lists.wikimedia.org/hyperkitty/list/mediawiki-announce@lists.wikimedia.org/thread/6VW6OGVSC7LO3QUMBEZOPQFYYOFDJ452/&lt;br /&gt;
# well, it&#039;s good that we confirmed that securty updates are getting automatically installed.&lt;br /&gt;
# ok, well, obviously we need to follow the debian-way and put the LocalSettings.php file in /etc/.\&lt;br /&gt;
## I did that&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@mail:/var/lib/mediawiki# cat /etc/mediawiki/LocalSettings.php&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
# including separate file that contains the database password so that it is not stored within the document root.&lt;br /&gt;
# For more info see:&lt;br /&gt;
#  * https://tech.michaelaltfield.net/2020/02/14/phplist-hardening-security/&lt;br /&gt;
#  * https://www.mediawiki.org/wiki/Manual:Security&lt;br /&gt;
#  * https://wiki.r00tedvw.com/index.php/Mediawiki/Hardening&lt;br /&gt;
 &lt;br /&gt;
#$docRoot = dirname( $_SERVER[&#039;DOCUMENT_ROOT&#039;] );&lt;br /&gt;
#require_once &amp;quot;$docRoot/LocalSettings.php&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
# docRoot didn&#039;t work for all of:&lt;br /&gt;
#  1. php-fpm (the normal website)&lt;br /&gt;
#  2. cli&lt;br /&gt;
#  3. the fact that we&#039;re in /var/lib/mediawiki due to debian&#039;s install symlink&lt;br /&gt;
#&lt;br /&gt;
# ...so I&#039;m just hardcoding the path to LocalSettings.php, so it always works!&lt;br /&gt;
&lt;br /&gt;
require_once( &amp;quot;/var/www/html/wiki.eco-libre.org/LocalSettings.php&amp;quot; );&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
root@mail:/var/lib/mediawiki# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# I tried the site; it&#039;s still broken&lt;br /&gt;
# I cleared varnish cache; it&#039;s still broken&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@mail:/var/lib/mediawiki# varnishadm &#039;ban req.url ~ &amp;quot;.&amp;quot;&#039;&lt;br /&gt;
&lt;br /&gt;
root@mail:/var/lib/mediawiki# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# yeah, I think the problem is that I never added /etc/mediawiki into the basedir, because I wasn&#039;t using it there. Ugh.&lt;br /&gt;
# I don&#039;t like doing this, but there&#039;s nothing else there. should be fine&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@mail:/var/lib/mediawiki# ls -lah /etc/mediawiki/&lt;br /&gt;
total 20K&lt;br /&gt;
drwxr-xr-x   2 root root 4,0K Apr 18 01:16 .&lt;br /&gt;
drwxr-xr-x 120 root root  12K Apr 17 20:30 ..&lt;br /&gt;
-rw-r--r--   1 root root  741 Apr 18 01:16 LocalSettings.php&lt;br /&gt;
root@mail:/var/lib/mediawiki# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= 2026-04-14 =&lt;br /&gt;
# Appropedia responded to me, indicating that they use Vector 2022 skin, with these config options https://wordpress.org/support/topic/support-for-automatic-exchange-rates-wp_http_block_external-2/#&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
:wfLoadSkin( &#039;Vector&#039; );&lt;br /&gt;
:$wgDefaultSkin = &#039;vector-2022&#039;;&lt;br /&gt;
:$wgSkipSkins[] = &#039;vector&#039;; // Disable old Vector&lt;br /&gt;
:$wgVectorResponsive = true;&lt;br /&gt;
:$wgVectorMaxWidthOptions[&#039;exclude&#039;][&#039;mainpage&#039;] = false;&lt;br /&gt;
:$wgVectorNightMode[&#039;logged_out&#039;] = true;&lt;br /&gt;
:$wgDefaultUserOptions[&#039;vector-main-menu-pinned&#039;] = 0;&lt;br /&gt;
:$wgDefaultUserOptions[&#039;vector-page-tools-pinned&#039;] = 0;&lt;br /&gt;
:$wgDefaultUserOptions[&#039;vector-appearance-pinned&#039;] = 0;&lt;br /&gt;
:$wgDefaultUserOptions[&#039;vector-toc-pinned&#039;] = 0;&lt;br /&gt;
:$wgDefaultUserOptions[&#039;vector-font-size&#039;] = 1;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# they said they use this extension for &amp;quot;read mode&amp;quot; which they developed themselves https://www.mediawiki.org/wiki/Extension:ReadMode&lt;br /&gt;
&lt;br /&gt;
= 2026-04-13 =&lt;br /&gt;
# Here&#039;s TOFU 3/3 (Tor, exit in The Netherlands)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
The Netherlands&lt;br /&gt;
	  Congratulations. This browser is configured to use Tor.&lt;br /&gt;
2026-04-13&lt;br /&gt;
######################################################################### 100.0%&lt;br /&gt;
2026-04-13&lt;br /&gt;
14M	OATHAuth-REL1_43-015a49e.tar.gz&lt;br /&gt;
9ee56e843931edd87b631b264d680e9f8d77f18b5ffdbc18b9a4f5b15330878e  OATHAuth-REL1_43-015a49e.tar.gz&lt;br /&gt;
user@host:/tmp/user/1000/tmp.eIvrMPff3B$ &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= 2026-04-10 =&lt;br /&gt;
# Here&#039;s TOFU 2/3 (VPN, exit in US)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
United States&lt;br /&gt;
2026-04-10&lt;br /&gt;
######################################################################### 100.0%&lt;br /&gt;
2026-04-10&lt;br /&gt;
14M	OATHAuth-REL1_43-015a49e.tar.gz&lt;br /&gt;
9ee56e843931edd87b631b264d680e9f8d77f18b5ffdbc18b9a4f5b15330878e  OATHAuth-REL1_43-015a49e.tar.gz&lt;br /&gt;
user@disp5712:/tmp/tmp.oTeGPpTCzP$ &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# finally, they all match! great, that&#039;s our last extension&lt;br /&gt;
&lt;br /&gt;
= 2026-04-09 =&lt;br /&gt;
# Here&#039;s TOFU 3/3 (ISP, exit in Ecuador)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Ecuador&lt;br /&gt;
2026-04-09&lt;br /&gt;
######################################################################### 100.0%&lt;br /&gt;
2026-04-09&lt;br /&gt;
4.0K	OATHAuth-REL1_43-967ccd4.tar.gz&lt;br /&gt;
8351c0267c2cd7866ff04c04261f06cd75af9a7130aac848ca43fd047404e229  OATHAuth-REL1_43-967ccd4.tar.gz&lt;br /&gt;
user@disp7124:/tmp/tmp.wlx3U02c6r$ &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# fuck, it&#039;s already unavailable; says &#039;libraryupgrader&#039; from 3 hours ago &amp;gt;:0&lt;br /&gt;
# let&#039;s try again&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
REMOTE_FILES=&amp;quot;https://extdist.wmflabs.org/dist/extensions/OATHAuth-REL1_43-015a49e.tar.gz&amp;quot;&lt;br /&gt;
&lt;br /&gt;
CURL=&amp;quot;/usr/bin/curl --retry 5 --retry-all-errors&amp;quot;&lt;br /&gt;
PYTHON=&amp;quot;/usr/bin/python3&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# in tails, we must torify&lt;br /&gt;
if [[ &amp;quot;`whoami`&amp;quot; == &amp;quot;amnesia&amp;quot; ]] ; then&lt;br /&gt;
	CURL=&amp;quot;/usr/bin/torify ${CURL}&amp;quot;&lt;br /&gt;
	PYTHON=&amp;quot;/usr/bin/torify ${PYTHON}&amp;quot;&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
tmpDir=`mktemp -d`&lt;br /&gt;
pushd &amp;quot;${tmpDir}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# first get some info about our internet connection&lt;br /&gt;
${CURL} -s https://ifconfig.co/country | head -n1&lt;br /&gt;
${CURL} -s https://check.torproject.org | grep Congratulations | head -n1&lt;br /&gt;
&lt;br /&gt;
# and today&#039;s date&lt;br /&gt;
date -u +&amp;quot;%Y-%m-%d&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# get the file&lt;br /&gt;
for file in ${REMOTE_FILES}; do&lt;br /&gt;
	${CURL} --progress-bar -O ${file}&lt;br /&gt;
done&lt;br /&gt;
&lt;br /&gt;
# checksum&lt;br /&gt;
date -u +&amp;quot;%Y-%m-%d&amp;quot;&lt;br /&gt;
du -sh *&lt;br /&gt;
sha256sum *&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# Here&#039;s TOFU 1/3 (ISP, exit in Ecuador)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Ecuador&lt;br /&gt;
2026-04-09&lt;br /&gt;
######################################################################### 100.0%&lt;br /&gt;
2026-04-09&lt;br /&gt;
14M	OATHAuth-REL1_43-015a49e.tar.gz&lt;br /&gt;
9ee56e843931edd87b631b264d680e9f8d77f18b5ffdbc18b9a4f5b15330878e  OATHAuth-REL1_43-015a49e.tar.gz&lt;br /&gt;
user@disp7124:/tmp/tmp.rGKb4qtHLX$ &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= 2026-04-08 =&lt;br /&gt;
# Here&#039;s TOFU 2/3 (VPN, exit in UK)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
United Kingdom&lt;br /&gt;
2026-04-08&lt;br /&gt;
############################################################################## 100.0%&lt;br /&gt;
2026-04-08&lt;br /&gt;
14M	OATHAuth-REL1_43-967ccd4.tar.gz&lt;br /&gt;
5992bf6044ba5bd6404d51ec5bef936e6eb724576a2003fc176648c7fcf9c6b7  OATHAuth-REL1_43-967ccd4.tar.gz&lt;br /&gt;
user@disp6902:/tmp/tmp.KDMVCsn1cU$ &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= 2026-04-07 =&lt;br /&gt;
# here&#039;s TOFU 3/3 (Tor, exit in The Netherlands)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
The Netherlands&lt;br /&gt;
	  Congratulations. This browser is configured to use Tor.&lt;br /&gt;
2026-04-07&lt;br /&gt;
####################################################################### 100.0%&lt;br /&gt;
####################################################################### 100.0%&lt;br /&gt;
####################################################################### 100.0%&lt;br /&gt;
2026-04-07&lt;br /&gt;
448K	ConfirmAccount-REL1_43-38c4602.tar.gz&lt;br /&gt;
124K	DeleteBatch-REL1_43-b3b052b.tar.gz&lt;br /&gt;
4.0K	OATHAuth-REL1_43-2cdbefb.tar.gz&lt;br /&gt;
95b2bc67977c22d069867a7225aa1a9720b7593ed5ab49aa27cc293f01b2e2bb  ConfirmAccount-REL1_43-38c4602.tar.gz&lt;br /&gt;
d1e7c01cf709f2b57137bb3d76f73b4e8fd36ce57c12b750b04fe20ffce9be61  DeleteBatch-REL1_43-b3b052b.tar.gz&lt;br /&gt;
8351c0267c2cd7866ff04c04261f06cd75af9a7130aac848ca43fd047404e229  OATHAuth-REL1_43-2cdbefb.tar.gz&lt;br /&gt;
user@host:/tmp/user/1000/tmp.qw9hrOvh3l$ &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# ok, well, we&#039;re 2/3 for that one. ConfirmAccount and DeleteBatch both have the same on all 3 TOFUs.&lt;br /&gt;
## But OATHAuth must have had a new release, because it&#039;s now 404&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
user@host:/tmp/user/1000/tmp.qw9hrOvh3l$ cat OATHAuth-REL1_43-2cdbefb.tar.gz &lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;head&amp;gt;&amp;lt;title&amp;gt;404 Not Found&amp;lt;/title&amp;gt;&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;h1&amp;gt;404 Not Found&amp;lt;/h1&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&amp;lt;center&amp;gt;nginx/1.18.0&amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
user@host:/tmp/user/1000/tmp.qw9hrOvh3l$ &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# I checked the changelog. looks like this extension is getting updated almost every 1-2 days from &amp;quot;Translation updater bot&amp;quot; – that&#039;s terrible. We need three consecutive days of no changes for 3TOFU https://www.mediawiki.org/wiki/Extension:OATHAuth&lt;br /&gt;
## hmm, well, if I look back further, there was a gap of 2 months before the update 6 days ago. So there certainly is *some* stability.&lt;br /&gt;
## also, that was *all* commits. This one limits to just the 1.43 branch, which is what we want https://gerrit.wikimedia.org/r/plugins/gitiles/mediawiki/extensions/OATHAuth/+log/refs/heads/REL1_43&lt;br /&gt;
### hmm, that one shows the last update was 10 hours ago, and the one before that was 2 months ago (Jan 22). That would be fine, but didn&#039;t we have two consecutive 3TOFUs fail on us?&lt;br /&gt;
### oh, wait, woah. the commits are out of order! First it shows &amp;quot;10 hours ago&amp;quot; and then &amp;quot;2 months ago&amp;quot; and then &amp;quot;7 days ago&amp;quot; wtf!&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
gerrit.wikimedia.org / mediawiki / extensions / OATHAuth / refs/heads/REL1_43&lt;br /&gt;
&lt;br /&gt;
	967ccd4 Localisation updates from https://translatewiki.net. by Translation updater bot · 10 hours ago REL1_43&lt;br /&gt;
	2cdbefb SECURITY: Don&#039;t leak user&#039;s lack of 2FA to other users by Roan Kattouw · 2 months ago&lt;br /&gt;
	bfcd5cf Localisation updates from https://translatewiki.net. by Translation updater bot · 7 days ago&lt;br /&gt;
	d8e7578 build: Updating npm dependencies by libraryupgrader · 12 days ago&lt;br /&gt;
	be14e83 Localisation updates from https://translatewiki.net. by Translation updater bot · 2 weeks ago&lt;br /&gt;
	77c70f5 build: Updating flatted to 3.4.2 by libraryupgrader · 3 weeks ago&lt;br /&gt;
	87d04d4 Localisation updates from https://translatewiki.net. by Translation updater bot · 3 weeks ago&lt;br /&gt;
	8e176b2 Localisation updates from https://translatewiki.net. by Translation updater bot · 4 weeks ago&lt;br /&gt;
	14596de Localisation updates from https://translatewiki.net. by Translation updater bot · 5 weeks ago&lt;br /&gt;
	8c7891a build: Updating ajv to 6.14.0, 8.18.0 by libraryupgrader · 6 weeks ago&lt;br /&gt;
	0406194 Localisation updates from https://translatewiki.net. by Translation updater bot · 6 weeks ago&lt;br /&gt;
	4c94235 Localisation updates from https://translatewiki.net. by Translation updater bot · 7 weeks ago&lt;br /&gt;
	7d0b2d7 Localisation updates from https://translatewiki.net. by Translation updater bot · 8 weeks ago&lt;br /&gt;
	a896cff Localisation updates from https://translatewiki.net. by Translation updater bot · 9 weeks ago&lt;br /&gt;
	b8e8afa Localisation updates from https://translatewiki.net. by Translation updater bot · 2 months ago&lt;br /&gt;
	4b3cb73 build: Updating lodash to 4.17.23 by libraryupgrader · 2 months ago&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# well, it looks like the translator bot runs once per week. so we should have 6 days before that one changes again..&lt;br /&gt;
# anyway, here&#039;s our (hopefully last) 3TOFU script, just for OATHAuth&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
REMOTE_FILES=&amp;quot;https://extdist.wmflabs.org/dist/extensions/OATHAuth-REL1_43-967ccd4.tar.gz&amp;quot;&lt;br /&gt;
&lt;br /&gt;
CURL=&amp;quot;/usr/bin/curl --retry 5 --retry-all-errors&amp;quot;&lt;br /&gt;
PYTHON=&amp;quot;/usr/bin/python3&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# in tails, we must torify&lt;br /&gt;
if [[ &amp;quot;`whoami`&amp;quot; == &amp;quot;amnesia&amp;quot; ]] ; then&lt;br /&gt;
	CURL=&amp;quot;/usr/bin/torify ${CURL}&amp;quot;&lt;br /&gt;
	PYTHON=&amp;quot;/usr/bin/torify ${PYTHON}&amp;quot;&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
tmpDir=`mktemp -d`&lt;br /&gt;
pushd &amp;quot;${tmpDir}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# first get some info about our internet connection&lt;br /&gt;
${CURL} -s https://ifconfig.co/country | head -n1&lt;br /&gt;
${CURL} -s https://check.torproject.org | grep Congratulations | head -n1&lt;br /&gt;
&lt;br /&gt;
# and today&#039;s date&lt;br /&gt;
date -u +&amp;quot;%Y-%m-%d&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# get the file&lt;br /&gt;
for file in ${REMOTE_FILES}; do&lt;br /&gt;
	${CURL} --progress-bar -O ${file}&lt;br /&gt;
done&lt;br /&gt;
&lt;br /&gt;
# checksum&lt;br /&gt;
date -u +&amp;quot;%Y-%m-%d&amp;quot;&lt;br /&gt;
du -sh *&lt;br /&gt;
sha256sum *&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# and TOFU 1/3 (Tor, exit in The Netherlands)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
The Netherlands&lt;br /&gt;
	  Congratulations. This browser is configured to use Tor.&lt;br /&gt;
2026-04-07&lt;br /&gt;
####################################################################### 100.0%&lt;br /&gt;
2026-04-07&lt;br /&gt;
14M	OATHAuth-REL1_43-967ccd4.tar.gz&lt;br /&gt;
5992bf6044ba5bd6404d51ec5bef936e6eb724576a2003fc176648c7fcf9c6b7  OATHAuth-REL1_43-967ccd4.tar.gz&lt;br /&gt;
user@host:/tmp/user/1000/tmp.RBxv6XdjXd$ &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= 2026-04-06 =&lt;br /&gt;
# here&#039;s TOFU 2/3 (VPN, exit in Germany)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Germany&lt;br /&gt;
2026-04-06&lt;br /&gt;
#################################################################################### 100.0%&lt;br /&gt;
#################################################################################### 100.0%&lt;br /&gt;
#################################################################################### 100.0%&lt;br /&gt;
2026-04-06&lt;br /&gt;
448K	ConfirmAccount-REL1_43-38c4602.tar.gz&lt;br /&gt;
124K	DeleteBatch-REL1_43-b3b052b.tar.gz&lt;br /&gt;
14M	OATHAuth-REL1_43-2cdbefb.tar.gz&lt;br /&gt;
95b2bc67977c22d069867a7225aa1a9720b7593ed5ab49aa27cc293f01b2e2bb  ConfirmAccount-REL1_43-38c4602.tar.gz&lt;br /&gt;
d1e7c01cf709f2b57137bb3d76f73b4e8fd36ce57c12b750b04fe20ffce9be61  DeleteBatch-REL1_43-b3b052b.tar.gz&lt;br /&gt;
f71115af96a1ed5297d8d56f56683635b7c9e0b8b32151b184feea1fbec3350a  OATHAuth-REL1_43-2cdbefb.tar.gz&lt;br /&gt;
user@disp8963:/tmp/tmp.JNwdKPbQIW$ &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= 2026-04-01 =&lt;br /&gt;
# continuing with the wiki setup today&lt;br /&gt;
# I saw our db partition reached 90%. It&#039;s been growing slowly, but adding mediawiki to the server didn&#039;t help, so I spent some time expanding the disks. Now we&#039;re down to 48% usage on the db partition, and everything else is hovering around 60% used, +/- 5%&lt;br /&gt;
# here&#039;s our last TOFU on the mediawiki extensions&lt;br /&gt;
## TOFU 3/3 (ISP, exit in Ecuador)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Ecuador&lt;br /&gt;
2026-04-01&lt;br /&gt;
######################################################################### 100.0%&lt;br /&gt;
######################################################################### 100.0%&lt;br /&gt;
######################################################################### 100.0%&lt;br /&gt;
######################################################################### 100.0%&lt;br /&gt;
######################################################################### 100.0%&lt;br /&gt;
######################################################################### 100.0%&lt;br /&gt;
2026-04-01&lt;br /&gt;
4.0K	ConfirmAccount-REL1_43-9cc1a82.tar.gz&lt;br /&gt;
4.0K	DeleteBatch-REL1_43-24a81e4.tar.gz&lt;br /&gt;
4.0K	OATHAuth-REL1_43-d8e7578.tar.gz&lt;br /&gt;
108K	SmiteSpam-REL1_43-483b81b.tar.gz&lt;br /&gt;
140K	UserMerge-REL1_43-27425da.tar.gz&lt;br /&gt;
492K	Widgets-REL1_43-60a09f0.tar.gz&lt;br /&gt;
8351c0267c2cd7866ff04c04261f06cd75af9a7130aac848ca43fd047404e229  ConfirmAccount-REL1_43-9cc1a82.tar.gz&lt;br /&gt;
8351c0267c2cd7866ff04c04261f06cd75af9a7130aac848ca43fd047404e229  DeleteBatch-REL1_43-24a81e4.tar.gz&lt;br /&gt;
8351c0267c2cd7866ff04c04261f06cd75af9a7130aac848ca43fd047404e229  OATHAuth-REL1_43-d8e7578.tar.gz&lt;br /&gt;
997c9edfe7ab78d6e1f1268d48ec19f13d036f584ad54c4281e210940a59f7c9  SmiteSpam-REL1_43-483b81b.tar.gz&lt;br /&gt;
5f28fdf7c0b727d699d42f14073359e13c8db1b2d389d78219845b5912cc0ccc  UserMerge-REL1_43-27425da.tar.gz&lt;br /&gt;
bed64d3c98842f7ec3675e17a24c21fb4720862084857e6834fb7813d14ab865  Widgets-REL1_43-60a09f0.tar.gz&lt;br /&gt;
user@disp7799:/tmp/tmp.YkN2s6MgT6$ &lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# huh, 3TOFU failed for 3/5 of the extensions&lt;br /&gt;
## SmiteSpam, UserMerge, and Widgets matched on all three&lt;br /&gt;
## but ConfirmAccount, DeleteBatch, and OATHAuthOATHAuth diff&#039;d&lt;br /&gt;
# I see that the file size of the three that failed is &amp;quot;4.0K&amp;quot;. that suggests that it didn&#039;t actually download&lt;br /&gt;
# sure enough, they&#039;re 404&#039;d&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
user@disp7799:/tmp/tmp.YkN2s6MgT6$ cat ConfirmAccount-REL1_43-9cc1a82.tar.gz&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;head&amp;gt;&amp;lt;title&amp;gt;404 Not Found&amp;lt;/title&amp;gt;&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;h1&amp;gt;404 Not Found&amp;lt;/h1&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&amp;lt;center&amp;gt;nginx/1.18.0&amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
user@disp7799:/tmp/tmp.YkN2s6MgT6$ &lt;br /&gt;
user@disp7799:/tmp/tmp.YkN2s6MgT6$ cat DeleteBatch-REL1_43-24a81e4.tar.gz&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;head&amp;gt;&amp;lt;title&amp;gt;404 Not Found&amp;lt;/title&amp;gt;&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;h1&amp;gt;404 Not Found&amp;lt;/h1&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&amp;lt;center&amp;gt;nginx/1.18.0&amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
user@disp7799:/tmp/tmp.YkN2s6MgT6$ &lt;br /&gt;
user@disp7799:/tmp/tmp.YkN2s6MgT6$ cat OATHAuth-REL1_43-d8e7578.tar.gz&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;head&amp;gt;&amp;lt;title&amp;gt;404 Not Found&amp;lt;/title&amp;gt;&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;h1&amp;gt;404 Not Found&amp;lt;/h1&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&amp;lt;center&amp;gt;nginx/1.18.0&amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
user@disp7799:/tmp/tmp.YkN2s6MgT6$ &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# if I go to download these plugins again, here&#039;s the URLs I get&lt;br /&gt;
## ConfirmAccount https://www.mediawiki.org/wiki/Extension:ConfirmAccount&lt;br /&gt;
### https://extdist.wmflabs.org/dist/extensions/ConfirmAccount-REL1_43-38c4602.tar.gz&lt;br /&gt;
## DeleteBatch https://www.mediawiki.org/wiki/Extension:ConfirmAccount&lt;br /&gt;
### https://extdist.wmflabs.org/dist/extensions/DeleteBatch-REL1_43-b3b052b.tar.gz&lt;br /&gt;
## OATHAuth https://www.mediawiki.org/wiki/Extension:OATHAuth&lt;br /&gt;
### https://extdist.wmflabs.org/dist/extensions/OATHAuth-REL1_43-2cdbefb.tar.gz&lt;br /&gt;
# here&#039;s our old 3TOFU script, for comparison&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
REMOTE_FILES=&amp;quot;https://extdist.wmflabs.org/dist/extensions/ConfirmAccount-REL1_43-9cc1a82.tar.gz https://extdist.wmflabs.org/dist/extensions/DeleteBatch-REL1_43-24a81e4.tar.gz https://extdist.wmflabs.org/dist/extensions/OATHAuth-REL1_43-d8e7578.tar.gz https://extdist.wmflabs.org/dist/extensions/SmiteSpam-REL1_43-483b81b.tar.gz https://extdist.wmflabs.org/dist/extensions/UserMerge-REL1_43-27425da.tar.gz https://extdist.wmflabs.org/dist/extensions/Widgets-REL1_43-60a09f0.tar.gz&amp;quot;&lt;br /&gt;
&lt;br /&gt;
CURL=&amp;quot;/usr/bin/curl --retry 5 --retry-all-errors&amp;quot;&lt;br /&gt;
PYTHON=&amp;quot;/usr/bin/python3&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# in tails, we must torify&lt;br /&gt;
if [[ &amp;quot;`whoami`&amp;quot; == &amp;quot;amnesia&amp;quot; ]] ; then&lt;br /&gt;
	CURL=&amp;quot;/usr/bin/torify ${CURL}&amp;quot;&lt;br /&gt;
	PYTHON=&amp;quot;/usr/bin/torify ${PYTHON}&amp;quot;&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
tmpDir=`mktemp -d`&lt;br /&gt;
pushd &amp;quot;${tmpDir}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# first get some info about our internet connection&lt;br /&gt;
${CURL} -s https://ifconfig.co/country | head -n1&lt;br /&gt;
${CURL} -s https://check.torproject.org | grep Congratulations | head -n1&lt;br /&gt;
&lt;br /&gt;
# and today&#039;s date&lt;br /&gt;
date -u +&amp;quot;%Y-%m-%d&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# get the file&lt;br /&gt;
for file in ${REMOTE_FILES}; do&lt;br /&gt;
	${CURL} --progress-bar -O ${file}&lt;br /&gt;
done&lt;br /&gt;
&lt;br /&gt;
# checksum&lt;br /&gt;
date -u +&amp;quot;%Y-%m-%d&amp;quot;&lt;br /&gt;
du -sh *&lt;br /&gt;
sha256sum *&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# so, yeah, I guess they delete the old releases when the push a new one? that&#039;s pretty annoying&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
https://extdist.wmflabs.org/dist/extensions/ConfirmAccount-REL1_43-9cc1a82.tar.gz&lt;br /&gt;
https://extdist.wmflabs.org/dist/extensions/ConfirmAccount-REL1_43-38c4602.tar.gz&lt;br /&gt;
&lt;br /&gt;
https://extdist.wmflabs.org/dist/extensions/DeleteBatch-REL1_43-24a81e4.tar.gz&lt;br /&gt;
https://extdist.wmflabs.org/dist/extensions/DeleteBatch-REL1_43-b3b052b.tar.gz&lt;br /&gt;
&lt;br /&gt;
https://extdist.wmflabs.org/dist/extensions/OATHAuth-REL1_43-d8e7578.tar.gz&lt;br /&gt;
https://extdist.wmflabs.org/dist/extensions/OATHAuth-REL1_43-2cdbefb.tar.gz&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# anyway, let&#039;s try it again, and hope we get all three before they push another release in the next ~1 week&lt;br /&gt;
# here&#039;s a new 3TOFU script&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
REMOTE_FILES=&amp;quot;https://extdist.wmflabs.org/dist/extensions/ConfirmAccount-REL1_43-38c4602.tar.gz https://extdist.wmflabs.org/dist/extensions/DeleteBatch-REL1_43-b3b052b.tar.gz https://extdist.wmflabs.org/dist/extensions/OATHAuth-REL1_43-2cdbefb.tar.gz&amp;quot;&lt;br /&gt;
&lt;br /&gt;
CURL=&amp;quot;/usr/bin/curl --retry 5 --retry-all-errors&amp;quot;&lt;br /&gt;
PYTHON=&amp;quot;/usr/bin/python3&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# in tails, we must torify&lt;br /&gt;
if [[ &amp;quot;`whoami`&amp;quot; == &amp;quot;amnesia&amp;quot; ]] ; then&lt;br /&gt;
	CURL=&amp;quot;/usr/bin/torify ${CURL}&amp;quot;&lt;br /&gt;
	PYTHON=&amp;quot;/usr/bin/torify ${PYTHON}&amp;quot;&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
tmpDir=`mktemp -d`&lt;br /&gt;
pushd &amp;quot;${tmpDir}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# first get some info about our internet connection&lt;br /&gt;
${CURL} -s https://ifconfig.co/country | head -n1&lt;br /&gt;
${CURL} -s https://check.torproject.org | grep Congratulations | head -n1&lt;br /&gt;
&lt;br /&gt;
# and today&#039;s date&lt;br /&gt;
date -u +&amp;quot;%Y-%m-%d&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# get the file&lt;br /&gt;
for file in ${REMOTE_FILES}; do&lt;br /&gt;
	${CURL} --progress-bar -O ${file}&lt;br /&gt;
done&lt;br /&gt;
&lt;br /&gt;
# checksum&lt;br /&gt;
date -u +&amp;quot;%Y-%m-%d&amp;quot;&lt;br /&gt;
du -sh *&lt;br /&gt;
sha256sum *&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# And TOFU 1/3 (ISP, exit in Ecuador)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Ecuador&lt;br /&gt;
2026-04-01&lt;br /&gt;
######################################################################### 100.0%&lt;br /&gt;
######################################################################### 100.0%&lt;br /&gt;
######################################################################### 100.0%&lt;br /&gt;
2026-04-01&lt;br /&gt;
448K	ConfirmAccount-REL1_43-38c4602.tar.gz&lt;br /&gt;
124K	DeleteBatch-REL1_43-b3b052b.tar.gz&lt;br /&gt;
14M	OATHAuth-REL1_43-2cdbefb.tar.gz&lt;br /&gt;
95b2bc67977c22d069867a7225aa1a9720b7593ed5ab49aa27cc293f01b2e2bb  ConfirmAccount-REL1_43-38c4602.tar.gz&lt;br /&gt;
d1e7c01cf709f2b57137bb3d76f73b4e8fd36ce57c12b750b04fe20ffce9be61  DeleteBatch-REL1_43-b3b052b.tar.gz&lt;br /&gt;
f71115af96a1ed5297d8d56f56683635b7c9e0b8b32151b184feea1fbec3350a  OATHAuth-REL1_43-2cdbefb.tar.gz&lt;br /&gt;
user@disp7799:/tmp/tmp.oWTEqi2mpP$ &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# and all the files are &amp;gt;4K, so that&#039;s promising.&lt;br /&gt;
# TODO: finish 3TOFU, install &amp;amp; configure extensions&lt;br /&gt;
# ...&lt;br /&gt;
# I also edited some wiki articles, namely&lt;br /&gt;
## this Maltfield_Log and Maltfield_Log/2026&lt;br /&gt;
## the Main_Page&lt;br /&gt;
## the Eco-Libre:About page (from the footer)&lt;br /&gt;
## a Documentation page, which describes what the wiki is for and what it&#039;s not for&lt;br /&gt;
# TOOO: write Eco-Libre:Privacy_policy&lt;br /&gt;
&lt;br /&gt;
= 2026-03-31 =&lt;br /&gt;
Hello World!&lt;br /&gt;
&lt;br /&gt;
# I installed this wiki last week on 2026-03-27&lt;br /&gt;
# since then, I did some hardening and basic setup (skin, logos)&lt;br /&gt;
# today I continued through the process of configuring its built-in plugins&lt;br /&gt;
# I&#039;m still in the process of a 3TOFU on the desired extensions.&lt;br /&gt;
# now I&#039;m finally editing some pages&lt;br /&gt;
# &#039;&#039;&#039;TODO: download, activate, and configure additional extensions&#039;&#039;&#039;&lt;/div&gt;</summary>
		<author><name>Maltfield</name></author>
	</entry>
	<entry>
		<id>https://wiki.eco-libre.org/index.php?title=Maltfield_Log/2026&amp;diff=114</id>
		<title>Maltfield Log/2026</title>
		<link rel="alternate" type="text/html" href="https://wiki.eco-libre.org/index.php?title=Maltfield_Log/2026&amp;diff=114"/>
		<updated>2026-06-03T20:04:35Z</updated>

		<summary type="html">&lt;p&gt;Maltfield: added logs for 2026-05&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is my ([[User:Maltfield|Michael Altfield]]&#039;s) work log from 2026&lt;br /&gt;
&lt;br /&gt;
I intentionally make my log entries &#039;&#039;very&#039;&#039; verbose -- to make future volunteer&#039;s work easier. The more information that is dumped into this log, the more helpful it will be for future volunteers.&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
=See Also=&lt;br /&gt;
# [[Maltfield_Log]]&lt;br /&gt;
# [[User:Maltfield]]&lt;br /&gt;
# [[Special:Contributions/Maltfield]]&lt;br /&gt;
&lt;br /&gt;
= 2026-05-13 =&lt;br /&gt;
# I got a response from another Project Kamp person, and gave them some advice&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Hey Javier,&lt;br /&gt;
&lt;br /&gt;
Thanks for writing me back. Yeah, it seems like you&#039;re violating your own org&#039;s licensing terms by using Soundstripe :(&lt;br /&gt;
&lt;br /&gt;
I helped write the following article for how to find copyleft music on Open Source Ecology&#039;s wiki:&lt;br /&gt;
&lt;br /&gt;
 * https://wiki.opensourceecology.org/wiki/Open_Source_Soundtracks&lt;br /&gt;
&lt;br /&gt;
I recommend using The Internet Archive and CCMixter for finding music for future videos.&lt;br /&gt;
&lt;br /&gt;
For past videos: you can either&lt;br /&gt;
&lt;br /&gt;
  1. contact the copyright holder (eg the artist) and ask them to grant you permission to license your video (with their music) under CC BY-SA, &lt;br /&gt;
&lt;br /&gt;
  2. contact a lawyer about &amp;quot;Fair Use&amp;quot; law, or&lt;br /&gt;
&lt;br /&gt;
  3. re-release the video without the music (or sub it with a copyleft track)&lt;br /&gt;
&lt;br /&gt;
One problem is: I can&#039;t view any of your content. YouTube has been blocking Tor and VPN users since a couple years, so it&#039;s not a very accessible platform for at-risk folks that need to prevent Google from uniquely fingerprinting them.&lt;br /&gt;
&lt;br /&gt;
I think your content would be very useful to our work at Eco-Libre, but it&#039;s just not visible.&lt;br /&gt;
&lt;br /&gt;
Would you be open to syncing your content to another platform that&#039;s more accessible than YouTube, such as PeerTube (or Odysee, DailyMotion, or Vimeo). Of these, I recommend PeerTube the most. PeerTube mirroring is also very trivial: you can simply check a box to auto-sync your YouTube channel to your PeerTube channel. There are many instances to choose-from (or you could run your own). You might consider one of:&lt;br /&gt;
&lt;br /&gt;
 * https://makertube.net&lt;br /&gt;
 * https://tilvids.com/&lt;br /&gt;
&lt;br /&gt;
Please consider making your videos CC BY-SA and syncing their content to a PeerTube instance, so they&#039;re publicly available to the whole internet.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Thank you,&lt;br /&gt;
&lt;br /&gt;
Michael Altfield&lt;br /&gt;
https://www.michaelaltfield.net&lt;br /&gt;
PGP Fingerprint: 0465 E42F 7120 6785 E972  644C FE1B 8449 4E64 0D41&lt;br /&gt;
&lt;br /&gt;
Note: If you cannot reach me via email, please check to see if I have changed my email address by visiting my website at https://email.michaelaltfield.net&lt;br /&gt;
&lt;br /&gt;
On 5/13/26 02:21, Project Kamp wrote:&lt;br /&gt;
&amp;gt; Hey Michael,&lt;br /&gt;
&amp;gt; the issue we see with this is that we use a third party music service which&lt;br /&gt;
&amp;gt; has a more restrictive license.&lt;br /&gt;
&amp;gt; [image: Captura de pantalla 2026-05-04 a las 20.34.20.png]&lt;br /&gt;
&amp;gt; &lt;br /&gt;
&amp;gt; So if we make our content available for others to reuse under a CC license,&lt;br /&gt;
&amp;gt; probably we will have some trouble with them.&lt;br /&gt;
&amp;gt; Not an expert on these topics, so can&#039;t really value how risky might be.&lt;br /&gt;
&amp;gt; &lt;br /&gt;
&amp;gt; If you have any suggestions, we might consider them.&lt;br /&gt;
&amp;gt; &lt;br /&gt;
&amp;gt; Thanks for sharing.&lt;br /&gt;
&amp;gt; &lt;br /&gt;
&amp;gt; Best,&lt;br /&gt;
&amp;gt; Javier&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= 2026-05-12 =&lt;br /&gt;
# Project Kamp got back to me&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Hello Michael,&lt;br /&gt;
&lt;br /&gt;
I have passed the information on to my colleauges who have more knowledge&lt;br /&gt;
around this topic.&lt;br /&gt;
Thank you for reaching out!&lt;br /&gt;
&lt;br /&gt;
Julie&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# Guess I should follow-up in a month or so to see what they&#039;ve done with fixing the licensing of their YouTube videos. And maybe then I can ask about PeerTube mirroring.&lt;br /&gt;
&lt;br /&gt;
= 2026-05-11 =&lt;br /&gt;
# today I went to actually update the /donate/ page to use the &#039;icon-font-awesome&#039; blocks (to replace the &amp;quot;custom html&amp;quot; blocks)&lt;br /&gt;
# the heart one worked great! but unfortunately the &amp;quot;bitcoin&amp;quot; icon (which could be found and selected) didn&#039;t render properly. And the monero icon couldn&#039;t even be found. it was totally missing.&lt;br /&gt;
# the monero icon says it&#039;s available in 5.0.0 and 7.0.0 https://fontawesome.com/icons/brands/solid/monero&lt;br /&gt;
# looks like this plugin ships with 6.5.2&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@mail:/var/www/html/wordpress/htdocs/wp-content/plugins# find . -name fontawesome.css&lt;br /&gt;
./icon-font-awesome/fontawesome/css/fontawesome.css&lt;br /&gt;
./easy-social-icons/css/font-awesome/css/fontawesome.css&lt;br /&gt;
./extensions-leaflet-map/fonts/fontawesome-free-6.7.2-web/css/fontawesome.css&lt;br /&gt;
root@mail:/var/www/html/wordpress/htdocs/wp-content/plugins# &lt;br /&gt;
root@mail:/var/www/html/wordpress/htdocs/wp-content/plugins# head -c 64 ./easy-social-icons/css/font-awesome/css/font-awesome.css&lt;br /&gt;
/*&lt;br /&gt;
 * Font Awesome Free 6.5.2 by @fontawesome - https://fontawroot@mail:/var/www/html/wordpress/htdocs/wp-content/plugins# &lt;br /&gt;
root@mail:/var/www/html/wordpress/htdocs/wp-content/plugins# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# is it really possible that they had it in v5 and v7 but not in v6?&lt;br /&gt;
# well, we do have another plugin with v7.0.0&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@mail:/var/www/html/wordpress/htdocs/wp-content/plugins# head -c 64 ./easy-social-icons/css/font-awesome/css/fontawesome.css&lt;br /&gt;
/*!&lt;br /&gt;
 * Font Awesome Free 7.0.0 by @fontawesome - https://fontaweroot@mail:/var/www/html/wordpress/htdocs/wp-content/plugins# &lt;br /&gt;
root@mail:/var/www/html/wordpress/htdocs/wp-content/plugins# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
#  let&#039;s see if I can overwrite this one with that one&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@mail:/var/www/html/wordpress/htdocs/wp-content/plugins# mv icon-font-awesome/fontawesome icon-font-awesome/fontawesome.bak&lt;br /&gt;
root@mail:/var/www/html/wordpress/htdocs/wp-content/plugins# rsync -av --progress easy-social-icons/css/font-awesome icon-font-awesome/   sending incremental file list&lt;br /&gt;
font-awesome/&lt;br /&gt;
font-awesome/index.php&lt;br /&gt;
			  0 100%    0,00kB/s    0:00:00 (xfr#1, to-chk=38/40)&lt;br /&gt;
...&lt;br /&gt;
font-awesome/webfonts/index.php&lt;br /&gt;
			  0 100%    0,00kB/s    0:00:00 (xfr#36, to-chk=0/40)&lt;br /&gt;
&lt;br /&gt;
sent 4.704.459 bytes  received 732 bytes  9.410.382,00 bytes/sec&lt;br /&gt;
total size is 4.700.991  speedup is 1,00&lt;br /&gt;
root@mail:/var/www/html/wordpress/htdocs/wp-content/plugins#&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# shit, refresh lead to a cascade of 404 errors, which lead me to be banned on wazuh; hmm&lt;br /&gt;
## here&#039;s one example 404 https://www.eco-libre.org/wp-content/plugins/icon-font-awesome/fontawesome/webfonts/fa-brands-400.ttf&lt;br /&gt;
### yeah, looks like the dir is missing&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@mail:/var/www/html/wordpress/htdocs/wp-content/plugins# ls -lah icon-font-awesome/fontawesome/webfonts/&lt;br /&gt;
ls: cannot access &#039;icon-font-awesome/fontawesome/webfonts/&#039;: No such file or directory&lt;br /&gt;
root@mail:/var/www/html/wordpress/htdocs/wp-content/plugins# ls -lah icon-font-awesome/fontawesome.bak/webfonts/&lt;br /&gt;
total 1016K&lt;br /&gt;
d---r-x--- 2 root www-data 4,0K Apr 19  2025 .&lt;br /&gt;
d---r-x--- 4 root www-data 4,0K Apr 19  2025 ..&lt;br /&gt;
----r----- 1 root www-data 205K Apr 19  2025 fa-brands-400.ttf&lt;br /&gt;
----r----- 1 root www-data 116K Apr 19  2025 fa-brands-400.woff2&lt;br /&gt;
----r----- 1 root www-data  67K Apr 19  2025 fa-regular-400.ttf&lt;br /&gt;
----r----- 1 root www-data  25K Apr 19  2025 fa-regular-400.woff2&lt;br /&gt;
----r----- 1 root www-data 411K Apr 19  2025 fa-solid-900.ttf&lt;br /&gt;
----r----- 1 root www-data 153K Apr 19  2025 fa-solid-900.woff2&lt;br /&gt;
----r----- 1 root www-data  11K Apr 19  2025 fa-v4compatibility.ttf&lt;br /&gt;
----r----- 1 root www-data 4,7K Apr 19  2025 fa-v4compatibility.woff2&lt;br /&gt;
root@mail:/var/www/html/wordpress/htdocs/wp-content/plugins# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# oh, the issue is just that it chagned from &#039;font-awesome&#039; to &#039;fontawesome&#039;&lt;br /&gt;
# let&#039;s try this symlink&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@mail:/var/www/html/wordpress/htdocs/wp-content/plugins/icon-font-awesome# ln -s font-awesome fontawesome&lt;br /&gt;
root@mail:/var/www/html/wordpress/htdocs/wp-content/plugins/icon-font-awesome# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# now when I refresh the page, the 404s are gone – but the bitcoin icon still isn&#039;t rendering&lt;br /&gt;
# I refreshed the edit page for the donate page, deleted the font icon block, and added a new one. still the btc icons won&#039;t load. and still the monero icon wont&#039; appear in the list :(&lt;br /&gt;
# curiously, the old bitcoin icon loads fine (the one I specify with html). let&#039;s diff them&lt;br /&gt;
## here&#039;s mine in &amp;quot;custom html&amp;quot;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;strong&amp;gt;&amp;lt;i class=&amp;quot;fab fa-2x fa-fw black-icon fa-bitcoin&amp;quot;&amp;gt;&amp;lt;/i&amp;gt; Bitcoin (BTC):&amp;lt;/strong&amp;gt; &amp;lt;code style=&amp;quot;font-size:large; word-break: break-all;&amp;quot;&amp;gt;bc1q7jdyxeha67gz0wjkw6m2mrt07egp8xjhvygv24&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## here&#039;s the one with the plugin block&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;wp-block-yuky-icon-font-awesome&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;box-icon&amp;quot;&amp;gt;&amp;lt;i class=&amp;quot;fa-solid fa-btc&amp;quot; aria-label=&amp;quot;Btc&amp;quot; style=&amp;quot;font-size:45px;color:#333;--icon-font-awesome-hover-color:#333&amp;quot;&amp;gt;&amp;lt;/i&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# so it&#039;s &#039;fa-bitcoin&#039; that works and &#039;fa-btc&#039; that doesn&#039;t work. hmm.&lt;br /&gt;
# I switched from the block visual editor to the block code editor and changed&lt;br /&gt;
## this&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;!-- wp:yuky/icon-font-awesome {&amp;quot;iconName&amp;quot;:&amp;quot;Icons-iconFontAwesomeMoneyBtc&amp;quot;} --&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;wp-block-yuky-icon-font-awesome&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;box-icon&amp;quot;&amp;gt;&amp;lt;i class=&amp;quot;fa-solid fa-btc&amp;quot; aria-label=&amp;quot;Btc&amp;quot; style=&amp;quot;font-size:45px;color:#333;--icon-font-awesome-hover-color:#333&amp;quot;&amp;gt;&amp;lt;/i&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;!-- /wp:yuky/icon-font-awesome --&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## to this&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;!-- wp:yuky/icon-font-awesome {&amp;quot;iconName&amp;quot;:&amp;quot;Icons-iconFontAwesomeMoneyBitcoin&amp;quot;} --&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;wp-block-yuky-icon-font-awesome&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;box-icon&amp;quot;&amp;gt;&amp;lt;i class=&amp;quot;fab fa-2x fa-fw black-icon fa-bitcoin&amp;quot; aria-label=&amp;quot;Bitcoin&amp;quot; style=&amp;quot;font-size:45px;color:#333;--icon-font-awesome-hover-color:#333&amp;quot;&amp;gt;&amp;lt;/i&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;!-- /wp:yuky/icon-font-awesome --&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## and now the icon appears fine on refresh&lt;br /&gt;
## however, if I switch back to the visual editor, it gives an error&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Block contains unexpected or invalid content&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## if I click the &amp;quot;Attempt Recovery&amp;quot; button, then it goes back to its old broken self&lt;br /&gt;
# I also tried to update the credit card, but it was inverted in colors. Here&#039;s a diff&lt;br /&gt;
## our old one&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;wp-block-yuky-icon-font-awesome&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;box-icon&amp;quot;&amp;gt;&amp;lt;i class=&amp;quot;fa-solid fa-credit-card&amp;quot; aria-label=&amp;quot;Credit Card&amp;quot; style=&amp;quot;font-size:40px;color:#333;--icon-font-awesome-hover-color:#333&amp;quot;&amp;gt;&amp;lt;/i&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## the new one&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;wp-block-yuky-icon-font-awesome&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;box-icon&amp;quot;&amp;gt;&amp;lt;i class=&amp;quot;fa-solid fa-credit-card&amp;quot; aria-label=&amp;quot;Credit Card&amp;quot; style=&amp;quot;font-size:40px;color:#333;--icon-font-awesome-hover-color:#333&amp;quot;&amp;gt;&amp;lt;/i&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# to avoid breaking the block, I tried using the wordpress &amp;quot;Additional CSS Class(es)&amp;quot; that changed it to&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;wp-block-yuky-icon-font-awesome&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;box-icon&amp;quot;&amp;gt;&amp;lt;i class=&amp;quot;fa-solid fa-credit-card&amp;quot; aria-label=&amp;quot;Credit Card&amp;quot; style=&amp;quot;font-size:40px;color:#333;--icon-font-awesome-hover-color:#333&amp;quot;&amp;gt;&amp;lt;/i&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## crap, that&#039;s not going to work. the classes got put in the wrapper div; we need it inside the &amp;quot;&amp;lt;i&amp;gt;&amp;quot; element&lt;br /&gt;
# I opened some feature requests for the upstream dev, offering some XMR bounties&lt;br /&gt;
## Request to donate in monero ($5) https://github.com/yukyhendiawan/icon-font-awesome/issues/3&lt;br /&gt;
## Add monero icon ($10) https://github.com/yukyhendiawan/icon-font-awesome/issues/4&lt;br /&gt;
## Block option: Edit Classes ($15)  https://github.com/yukyhendiawan/icon-font-awesome/issues/7&lt;br /&gt;
# I&#039;m pretty sure the second one will fix the bitcoin icon issue too. And the third one should be a robust long-term workaround for any future issues (if we can just edit the classes directly without it corrupting the block, we can manually fix any icons to look however we want)&lt;br /&gt;
# alright, well, now the pieces are in place for longer-term fixes. For now, we&#039;ll just only be using this plugin for the &amp;quot;heart&amp;quot; icon. We&#039;ll have to wait for the three issues above to be resolved to fix the xmr, btc, and credit card icons.&lt;br /&gt;
&lt;br /&gt;
= 2026-05-09 =&lt;br /&gt;
# I spent some time testing out some wordpress plugins for a wysiwyg experience with the gutenberg block editor for managing font awesome icons, which I had previously 3TOFU&#039;d&lt;br /&gt;
# this was part of my work with the raft partnership, in which I added this page eco-libre.org/donate&lt;br /&gt;
# I have a heart icon, but currently it&#039;s just done with raw html; that&#039;s not very nice for non-techie future volunteers who may want to edit the site&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;h1&amp;gt;&amp;lt;i class=&amp;quot;fa fa-2x fa-fw black-icon fa-heart&amp;quot;&amp;gt;&amp;lt;/i&amp;gt; Ways to Donate&amp;lt;/h1&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# and bitcoin and monero icons&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size: large&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;&amp;lt;i class=&amp;quot;fab fa-2x fa-fw black-icon fa-bitcoin&amp;quot;&amp;gt;&amp;lt;/i&amp;gt; Bitcoin (BTC):&amp;lt;/strong&amp;gt; &amp;lt;code style=&amp;quot;font-size:large; word-break: break-all;&amp;quot;&amp;gt;bc1q7jdyxeha67gz0wjkw6m2mrt07egp8xjhvygv24&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear:both;&amp;quot; /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;&amp;lt;i class=&amp;quot;fab fa-2x fa-fw black-icon fa-monero&amp;quot;&amp;gt;&amp;lt;/i&amp;gt; Monero (XMR):&amp;lt;/strong&amp;gt; &amp;lt;code style=&amp;quot;font-size:large; word-break: break-all;&amp;quot;&amp;gt;8Aw3ShYSs2zXBfN8rhbWayDq552nJZvdqb3uxLnFxF5HctUsYtWeEq2hscUzjhDTw23EfsWgyhzMjCJEzCVeNDRiEYhvEzq&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear:both;&amp;quot; /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# and later some credit cards&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;strong&amp;gt;&amp;lt;i class=&amp;quot;fa fa-2x fa-fw black-icon fa-credit-card&amp;quot;&amp;gt;&amp;lt;/i&amp;gt; &amp;lt;a href=&amp;quot;https://opencollective.com/eco-libre&amp;quot;&amp;gt;Credit card or PayPal via Open Collective&amp;lt;/a&amp;gt;&amp;lt;/strong&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# previously I had tested a couple plugins, iirc called &#039;font-awesome&#039; and &#039;better-font-awesome&#039; but they both just worked with shortcodes. I&#039;m not sure, but that might actually be worse than just doing a &amp;quot;custom html&amp;quot; block (because it&#039;s equally difficult syntax and, if the plugin is gone, the shortcode will be naked and broken whereas the html will keep working)&lt;br /&gt;
# here&#039;s what I tested today&lt;br /&gt;
	a. wp-font-awesome = WP Font Awesome&lt;br /&gt;
		1. another shortcode only&lt;br /&gt;
	b. block-for-font-awesome = Block for Font Awesome&lt;br /&gt;
		1. this was rejected; it required the user to manually type the class&lt;br /&gt;
	c. icon-font-awesome = Block: Icons Font Awesome&lt;br /&gt;
		1. this one is good. it let the user click-to-select, customize size and color, and then click and drag the icon next to a heading&lt;br /&gt;
		2. it also loads all fonts locally; no 3rd party requests&lt;br /&gt;
	d. perfect-font-awesome-integration = Perfect Font Awesome Integration&lt;br /&gt;
		1. this one only worked in the &amp;quot;visual editor&amp;quot; – there was no block. rejected.&lt;br /&gt;
	e. shortcode-for-font-awesome = Shortcode for Font Awesome&lt;br /&gt;
		1. no block; just a shortcode. skipped.&lt;br /&gt;
	f. surbma-font-awesome = Surbma | Font Awesome&lt;br /&gt;
		1. another shortcode only&lt;br /&gt;
# I went ahead and deleted the others&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@mail:/var/www/html/wordpress/htdocs/wp-content/plugins# rm -rf wp-font-awesome&lt;br /&gt;
rm -rf block-for-font-awesome&lt;br /&gt;
rm -rf perfect-font-awesome-integration&lt;br /&gt;
rm -rf shortcode-for-font-awesome&lt;br /&gt;
rm -rf surbma-font-awesome&lt;br /&gt;
root@mail:/var/www/html/wordpress/htdocs/wp-content/plugins# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# oh, I also deleted &amp;quot;better font awesome&amp;quot;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@mail:/var/www/html/wordpress/htdocs/wp-content/plugins# ls | grep -i font&lt;br /&gt;
better-font-awesome&lt;br /&gt;
icon-font-awesome&lt;br /&gt;
root@mail:/var/www/html/wordpress/htdocs/wp-content/plugins# rm -rf better-font-awesome/&lt;br /&gt;
root@mail:/var/www/html/wordpress/htdocs/wp-content/plugins# &lt;br /&gt;
&lt;br /&gt;
root@mail:/var/www/html/wordpress/htdocs/wp-content/plugins# ls | grep -i font&lt;br /&gt;
icon-font-awesome&lt;br /&gt;
root@mail:/var/www/html/wordpress/htdocs/wp-content/plugins# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= 2026-05-07 =&lt;br /&gt;
# I left an update to the CERN thread withthe REUSE work I did yesterday https://forums.ohwr.org/t/possible-to-triple-license-cern-ohl-s-2-0-agpl-3-0-cc-by-sa-4-0/849882/11&lt;br /&gt;
# I was just about to open a new thread asking how I should indicate the license of Available Components *inside* our FreeCAD file, but first I did a search for &amp;quot;Available Component&amp;quot; on their forums &lt;br /&gt;
## I found this thread, which terrifies me https://forums.ohwr.org/t/ohl-s-vs-ohl-w-when-cc-by-sa-components-are-included/849276&lt;br /&gt;
### It says that you cannot use CERN-OHL-S-2.0 to license a file that contains a CC BY-SA license, because the &amp;quot;SA&amp;quot; part wouldn&#039;t work with the concept of &amp;quot;Available Components&amp;quot;. My understanding was that you could just mark it as an &amp;quot;Available Component&amp;quot;, but I guess that only applies for permissive or proprietary things, and not copyleft things. Or maybe you just have to make available components absent from you cad files, so they&#039;re added later?&lt;br /&gt;
### ugh, but then he says it&#039;s ok because &amp;quot;But my understanding (maybe wrong) is that you are not using those files inside a larger design. You are just modifying those files, in which case you should honour their CC-BY-SA licence and publish the modified versions under CC-BY-SA.&amp;quot;&lt;br /&gt;
## this thread is also interesting; it confirms what I&#039;ve done by taking LGPL files and putting them under GPL. It says that&#039;s allowed, but then if the LGPL project wants to include the improvements, then it has to become GPL&#039;d https://forums.ohwr.org/t/licensing-an-ohl-w-derivative-as-ohl-s/849101/2&lt;br /&gt;
# I asked my question about how to write copyright/licensing info for Available Components in our cad files: https://forums.ohwr.org/t/how-to-indicate-licensing-for-available-components-in-cad-files/849901&lt;br /&gt;
## I specifically asked about three cases: proprietary black boxes (eg a battery-powered electric valve opener like what we&#039;ll eventually add to the spindown and cleanout valves on the life-line), non-reciprocal open-source objects (eg a pipe fitting that we import from OSE&#039;s repos, which is licensed LGPL), and strong-reciprocal open-source (eg a CC BY-SA svg file that we use for extruding some complex geometry).&lt;br /&gt;
# I tried to create some tickets for the REUSE project, but I kept getting rubbish content when trying to load their issues pages. This has happened to me for months, but it wasn&#039;t obvious what to do. I finally opened a bug report about it https://codeberg.org/Codeberg/Community/issues/2603&lt;br /&gt;
# ok, I guess cahmelion switched some fingerprints to be less offensive to codeberg&#039;s broken fingerprint detection anit-bot crap, because I can now load some pages&lt;br /&gt;
# I added my $0.02 to this ticket, asking for `reuse annotate` to update headers, matching the `REUSE.toml` file https://codeberg.org/fsfe/reuse-tool/issues/1238#issuecomment-14466437&lt;br /&gt;
## hmm looks like that&#039;s actually the opposite of what I want: they want annotate to update REUSE.toml. whereas I want annotate to read REUSE.toml to update all the other files&lt;br /&gt;
## this other issue suggests that they intentionally don&#039;t want that, due to the risks of overwriting existing headers https://codeberg.org/fsfe/reuse-tool/issues/534&lt;br /&gt;
### they instead urge users to visit some &amp;quot;helper scripts&amp;quot; documented here https://reuse.readthedocs.io/en/stable/scripts.html&lt;br /&gt;
#### oh, but that uses git metadata – not what&#039;s defined in the REUSE.toml file :(&lt;br /&gt;
## this sounds like what we want, but they renamed `annotate` to `materalize` for some reason https://codeberg.org/fsfe/reuse-tool/issues/921&lt;br /&gt;
## there&#039;s another ticket titled &amp;quot;don&#039;t ignore REUSE.toml in reuse annotate&amp;quot; but I don&#039;t really understand what they&#039;re asking https://codeberg.org/fsfe/reuse-tool/issues/1190&lt;br /&gt;
## I&#039;m also not a huge fan of the REUSE.toml file. It seems too complicated for humans to read, compated to the deb5 format that it already supports. Apparently I&#039;m not alone, and someone else asked not to deprecate this file (the reuse file deleted our deb5 file when we used said too to parse it) https://codeberg.org/fsfe/reuse-tool/issues/1337&lt;br /&gt;
## I also learned that the spdx bom can be created in json format, oddly, from the lint subcommand https://codeberg.org/fsfe/reuse-tool/issues/1338&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
(reuse) user@disp6671:~/life-line$ reuse lint -j | head -n50&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;lint_version&amp;quot;: &amp;quot;1.0&amp;quot;,&lt;br /&gt;
  &amp;quot;reuse_spec_version&amp;quot;: &amp;quot;3.3&amp;quot;,&lt;br /&gt;
  &amp;quot;reuse_tool_version&amp;quot;: &amp;quot;6.2.0&amp;quot;,&lt;br /&gt;
  &amp;quot;files&amp;quot;: [&lt;br /&gt;
	{&lt;br /&gt;
	  &amp;quot;path&amp;quot;: &amp;quot;docs/images/life-line_intake_turbulence-bar.jpg&amp;quot;,&lt;br /&gt;
	  &amp;quot;copyrights&amp;quot;: [&lt;br /&gt;
		{&lt;br /&gt;
		  &amp;quot;value&amp;quot;: &amp;quot;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&amp;quot;,&lt;br /&gt;
		  &amp;quot;source&amp;quot;: &amp;quot;REUSE.toml&amp;quot;,&lt;br /&gt;
		  &amp;quot;source_type&amp;quot;: &amp;quot;reuse-toml&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		{&lt;br /&gt;
		  &amp;quot;value&amp;quot;: &amp;quot;SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&amp;quot;,&lt;br /&gt;
		  &amp;quot;source&amp;quot;: &amp;quot;REUSE.toml&amp;quot;,&lt;br /&gt;
		  &amp;quot;source_type&amp;quot;: &amp;quot;reuse-toml&amp;quot;&lt;br /&gt;
		}&lt;br /&gt;
	  ],&lt;br /&gt;
	  &amp;quot;spdx_expressions&amp;quot;: [&lt;br /&gt;
		{&lt;br /&gt;
		  &amp;quot;value&amp;quot;: &amp;quot;CC-BY-SA-4.0&amp;quot;,&lt;br /&gt;
		  &amp;quot;is_valid&amp;quot;: true,&lt;br /&gt;
		  &amp;quot;source&amp;quot;: &amp;quot;REUSE.toml&amp;quot;,&lt;br /&gt;
		  &amp;quot;source_type&amp;quot;: &amp;quot;reuse-toml&amp;quot;&lt;br /&gt;
		}&lt;br /&gt;
	  ]&lt;br /&gt;
	},&lt;br /&gt;
	{&lt;br /&gt;
	  &amp;quot;path&amp;quot;: &amp;quot;docs/images/life-line_intake_weir.jpg&amp;quot;,&lt;br /&gt;
	  &amp;quot;copyrights&amp;quot;: [&lt;br /&gt;
		{&lt;br /&gt;
		  &amp;quot;value&amp;quot;: &amp;quot;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&amp;quot;,&lt;br /&gt;
		  &amp;quot;source&amp;quot;: &amp;quot;REUSE.toml&amp;quot;,&lt;br /&gt;
		  &amp;quot;source_type&amp;quot;: &amp;quot;reuse-toml&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		{&lt;br /&gt;
		  &amp;quot;value&amp;quot;: &amp;quot;SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&amp;quot;,&lt;br /&gt;
		  &amp;quot;source&amp;quot;: &amp;quot;REUSE.toml&amp;quot;,&lt;br /&gt;
		  &amp;quot;source_type&amp;quot;: &amp;quot;reuse-toml&amp;quot;&lt;br /&gt;
		}&lt;br /&gt;
	  ],&lt;br /&gt;
	  &amp;quot;spdx_expressions&amp;quot;: [&lt;br /&gt;
		{&lt;br /&gt;
		  &amp;quot;value&amp;quot;: &amp;quot;CC-BY-SA-4.0&amp;quot;,&lt;br /&gt;
		  &amp;quot;is_valid&amp;quot;: true,&lt;br /&gt;
		  &amp;quot;source&amp;quot;: &amp;quot;REUSE.toml&amp;quot;,&lt;br /&gt;
		  &amp;quot;source_type&amp;quot;: &amp;quot;reuse-toml&amp;quot;&lt;br /&gt;
		}&lt;br /&gt;
	  ]&lt;br /&gt;
(reuse) user@disp6671:~/life-line$ reuse lint -j | tail -n50&lt;br /&gt;
	},&lt;br /&gt;
	{&lt;br /&gt;
	  &amp;quot;path&amp;quot;: &amp;quot;docs/images/life-line_2023.12.jpg&amp;quot;,&lt;br /&gt;
	  &amp;quot;copyrights&amp;quot;: [&lt;br /&gt;
		{&lt;br /&gt;
		  &amp;quot;value&amp;quot;: &amp;quot;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&amp;quot;,&lt;br /&gt;
		  &amp;quot;source&amp;quot;: &amp;quot;REUSE.toml&amp;quot;,&lt;br /&gt;
		  &amp;quot;source_type&amp;quot;: &amp;quot;reuse-toml&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		{&lt;br /&gt;
		  &amp;quot;value&amp;quot;: &amp;quot;SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&amp;quot;,&lt;br /&gt;
		  &amp;quot;source&amp;quot;: &amp;quot;REUSE.toml&amp;quot;,&lt;br /&gt;
		  &amp;quot;source_type&amp;quot;: &amp;quot;reuse-toml&amp;quot;&lt;br /&gt;
		}&lt;br /&gt;
	  ],&lt;br /&gt;
	  &amp;quot;spdx_expressions&amp;quot;: [&lt;br /&gt;
		{&lt;br /&gt;
		  &amp;quot;value&amp;quot;: &amp;quot;CC-BY-SA-4.0&amp;quot;,&lt;br /&gt;
		  &amp;quot;is_valid&amp;quot;: true,&lt;br /&gt;
		  &amp;quot;source&amp;quot;: &amp;quot;REUSE.toml&amp;quot;,&lt;br /&gt;
		  &amp;quot;source_type&amp;quot;: &amp;quot;reuse-toml&amp;quot;&lt;br /&gt;
		}&lt;br /&gt;
	  ]&lt;br /&gt;
	}&lt;br /&gt;
  ],&lt;br /&gt;
  &amp;quot;non_compliant&amp;quot;: {&lt;br /&gt;
	&amp;quot;bad_licenses&amp;quot;: [],&lt;br /&gt;
	&amp;quot;deprecated_licenses&amp;quot;: [],&lt;br /&gt;
	&amp;quot;licenses_without_extension&amp;quot;: [],&lt;br /&gt;
	&amp;quot;missing_licenses&amp;quot;: [],&lt;br /&gt;
	&amp;quot;unused_licenses&amp;quot;: [],&lt;br /&gt;
	&amp;quot;read_errors&amp;quot;: [],&lt;br /&gt;
	&amp;quot;missing_copyright_info&amp;quot;: [],&lt;br /&gt;
	&amp;quot;missing_licensing_info&amp;quot;: []&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;summary&amp;quot;: {&lt;br /&gt;
	&amp;quot;used_licenses&amp;quot;: [&lt;br /&gt;
	  &amp;quot;AGPL-3.0-only&amp;quot;,&lt;br /&gt;
	  &amp;quot;CC-BY-SA-4.0&amp;quot;,&lt;br /&gt;
	  &amp;quot;CERN-OHL-S-2.0&amp;quot;,&lt;br /&gt;
	  &amp;quot;GPL-3.0-or-later&amp;quot;,&lt;br /&gt;
	  &amp;quot;LGPL-2.1-or-later&amp;quot;&lt;br /&gt;
	],&lt;br /&gt;
	&amp;quot;files_total&amp;quot;: 54,&lt;br /&gt;
	&amp;quot;files_with_copyright_info&amp;quot;: 54,&lt;br /&gt;
	&amp;quot;files_with_licensing_info&amp;quot;: 54,&lt;br /&gt;
	&amp;quot;compliant&amp;quot;: true&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;recommendations&amp;quot;: []&lt;br /&gt;
}(reuse) user@disp6671:~/life-line$ &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= 2026-05-06 =&lt;br /&gt;
# I created an issue with the FreeCAD_Workbench_Starter repo, asking them to clearly indicate the copyright and license https://github.com/skaiser/FreeCAD_Workbench_Starter/issues/4&lt;br /&gt;
## ah, I did see a file with some copyright info in the comments https://github.com/skaiser/FreeCAD_Workbench_Starter/blob/61dc25b7b90f37b7e0b12086f95f0dc4b0de943a/OSE_CommandButton.py&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#***************************************************************************&lt;br /&gt;
#*                                                                         *&lt;br /&gt;
#*  This file is part of the FreeCAD_Workbench_Starter project.            *&lt;br /&gt;
#*                                                                         *&lt;br /&gt;
#*                                                                         *&lt;br /&gt;
#*  Copyright (C) 2017                                                     *&lt;br /&gt;
#*  Stephen Kaiser &amp;lt;freesol29@gmail.com&amp;gt;                                   *&lt;br /&gt;
#*                                                                         *&lt;br /&gt;
#*  This library is free software; you can redistribute it and/or          *&lt;br /&gt;
#*  modify it under the terms of the GNU Lesser General Public             *&lt;br /&gt;
#*  License as published by the Free Software Foundation; either           *&lt;br /&gt;
#*  version 2 of the License, or (at your option) any later version.       *&lt;br /&gt;
#*                                                                         *            &lt;br /&gt;
#*  This library is distributed in the hope that it will be useful,        *&lt;br /&gt;
#*  but WITHOUT ANY WARRANTY; without even the implied warranty of         *&lt;br /&gt;
#*  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU      *&lt;br /&gt;
#*  Lesser General Public License for more details.                        *&lt;br /&gt;
#*                                                                         *&lt;br /&gt;
#*  You should have received a copy of the GNU Lesser General Public       *&lt;br /&gt;
#*  License along with this library; if not, If not, see                   *&lt;br /&gt;
#*  &amp;lt;http://www.gnu.org/licenses/&amp;gt;.                                        *&lt;br /&gt;
#*                                                                         *&lt;br /&gt;
#*                                                                         *&lt;br /&gt;
#***************************************************************************&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## ok, so we have the copyright and it appears to use LGPL&lt;br /&gt;
# meanwhile its fork has this copyright, without license specified https://github.com/rkrenzler/ose-piping-workbench/blob/ca1961cf8e678f55f0c01a92acd2db881a7ee2ad/OsePiping/Bushing.py&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# -*- coding: utf-8 -*-&lt;br /&gt;
# Author: Ruslan Krenzler.&lt;br /&gt;
# Date: 27 January 2018&lt;br /&gt;
# Create a bushing-fitting.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# without further clairfication, I&#039;m going to assume that it&#039;s dual licensed. That lets us choose which license we put it under. Also, I&#039;m pretty sure we can relicense LGPGL as GPL but not the other way around. So let&#039;s list it as GPL&#039;d and add the copyright of these two people&lt;br /&gt;
# I created tickets for both&lt;br /&gt;
## https://github.com/skaiser/FreeCAD_Workbench_Starter/issues/4&lt;br /&gt;
## https://github.com/rkrenzler/ose-piping-workbench/issues/12&lt;br /&gt;
### I also created a PR to fix this one, which is the one we actually used to create the bulkhead = bushing https://github.com/rkrenzler/ose-piping-workbench/pull/13&lt;br /&gt;
## unfortuantely I don&#039;t appear to have the bushing in its own cad file, so I recreated it in a dispVM&lt;br /&gt;
## the install instructions don&#039;t work anymore. I had to move the &amp;quot;Mod&amp;quot; dir from &amp;quot;~/.FreeCAD&amp;quot; to &amp;quot;~/.local/share/FreeCAD/&amp;quot;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
user@disp6671:~/.FreeCAD/Mod$ freecad&lt;br /&gt;
FreeCAD 0.20.2, Libs: 0.20.2R&lt;br /&gt;
© Juergen Riegel, Werner Mayer, Yorik van Havre and others 2001-2022&lt;br /&gt;
FreeCAD is free and open-source software licensed under the terms of LGPL2+ license.&lt;br /&gt;
FreeCAD wouldn&#039;t be possible without FreeCAD community.&lt;br /&gt;
  #####                 ####  ###   ####  &lt;br /&gt;
  #                    #      # #   #   # &lt;br /&gt;
  #     ##  #### ####  #     #   #  #   # &lt;br /&gt;
  ####  # # #  # #  #  #     #####  #   # &lt;br /&gt;
  #     #   #### ####  #    #     # #   # &lt;br /&gt;
  #     #   #    #     #    #     # #   #  ##  ##  ##&lt;br /&gt;
  #     #   #### ####   ### #     # ####   ##  ##  ##&lt;br /&gt;
&lt;br /&gt;
User path has changed to /home/user/.local/share/FreeCAD/. Please move user modules and macros&lt;br /&gt;
[1107:7:0506/164331.467752:ERROR:command_buffer_proxy_impl.cc(141)] ContextResult::kTransientFailure: Failed to send GpuChannelMsg_CreateCommandBuffer.&lt;br /&gt;
user@disp6671:~/.FreeCAD/Mod$&lt;br /&gt;
&lt;br /&gt;
user@disp6671:~/.FreeCAD/Mod$ cd ..&lt;br /&gt;
user@disp6671:~/.FreeCAD$ cd ..&lt;br /&gt;
user@disp6671:~$&lt;br /&gt;
&lt;br /&gt;
user@disp6671:~$ mv .FreeCAD/Mod .local/share/FreeCAD/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## I also updated the install instructions on the OSE wiki&lt;br /&gt;
&lt;br /&gt;
= 2026-05-05 =&lt;br /&gt;
# today I added all my log entries for April to the wiki https://wiki.eco-libre.org/wiki/Maltfield_Log/2026&lt;br /&gt;
## in the process I had to add a couple rules to the allowlist of mod_security&lt;br /&gt;
# ...&lt;br /&gt;
# I wanted to add some &amp;quot;Available Components&amp;quot; to our life-line repo&#039;s REUSE copyright/license definition, but I had some issues finding-out the copyright &amp;amp; license info&lt;br /&gt;
## we used ose&#039;s pipe workbench for some bulkheads (bushings) https://github.com/rkrenzler/ose-piping-workbench&lt;br /&gt;
## that repo&#039;s has no copyright info. and its readme says &amp;quot;GPLv3&amp;quot; while it has a LICENSE file that includes LGPL-3.0. It also has a COPYRIGHT.template file – but that&#039;s just an empty template, nobody filled it out :/&lt;br /&gt;
## this repo was also forked from this other repo, which does have a &amp;quot;contributor&amp;quot; = Stephen Kaiser https://github.com/skaiser/FreeCAD_Workbench_Starter&lt;br /&gt;
### that one also lacks copyright info, and it also has two files that contradict each other COPYING (GPL) and COPYING.LESSER (LGPL)&lt;br /&gt;
### oh wait, no. this wasn&#039;t *really* a fork. it was just forked from a &amp;quot;starter&amp;quot; repo that served as an example. well, I guess attribution and licensing still applies, but to just a subset of files?&lt;br /&gt;
## TODO: https://github.com/boltsparts/BOLTSFC/blob/main/README.md&lt;br /&gt;
## TODO: others?&lt;br /&gt;
## TODO: open tickets with all the repos and ask them to clearly list copyright and license info (maybe submit a PR for the OSE stuff)&lt;br /&gt;
&lt;br /&gt;
= 2026-05-04 =&lt;br /&gt;
# I recently learned about a non-profit here in Ecuador that does work on renewable electricity systems&lt;br /&gt;
## it&#039;s called CICE (Centro de Investigación y Capacitación Eléctrica) https://funcice.org&lt;br /&gt;
## I spoke with Luis Ordoni&lt;br /&gt;
# I was on holiday at the Los Cedros reserve.&lt;br /&gt;
## they have a micro hydro (iicr 500 watts) system, but their electrical cable got struck by lightning the week before we came.&lt;br /&gt;
## so while we were there, Luis came up from Quito to investigate the damage done to the system&lt;br /&gt;
# I talked to him a lot about apropriate technology. he wasn&#039;t familiar with the concept, but mentioned that there *are* some orgs doing such work here in Ecuador. He mentioned one org doing electric bicycles&lt;br /&gt;
# iirc he said that CICE was registered under the ministry of energy, which got merged into the ministry of environment. And, recently, the ministry of environment got merged into the ministry of Mining.&lt;br /&gt;
## before I wasn&#039;t sure under-which ministry an Eco-Libre non-profit should be registered in Ecuador (you have to pick one)&lt;br /&gt;
## so he said mining (which now includes energy and environment) or Bien Esta Social, which has been renamed to Ministerio de Dessarollo Humano https://www.desarrollohumano.gob.ec/&lt;br /&gt;
## for reference, I last got stuck on this process when I asked a lawyer to enumerate all the ministries, so I could research each one and figure out under-which we should register. They never responded, so we never proceeded. Also we need like 5 people on the board, and I haven&#039;t found anyone in Ecuador with experience doing appropraite technology yet. I think the board members should be Ecuadorian, environmentalists (vegan), and have experience with open-source appropriate technology. I haven&#039;t found one person yet.&lt;br /&gt;
## I asked if there was any appropriate technology conferences in Ecuador. He said no, but was very interested in organizing one!&lt;br /&gt;
# another org he mentioned was Groupo FUturo https://www.futuro.com.ec/&lt;br /&gt;
## apparently they also have a foundation, with a distinct website https://www.fundacionfuturo.org.ec/&lt;br /&gt;
# ...&lt;br /&gt;
# I got an email from &amp;quot;Julie&amp;quot; at Project Kamp (I emailed One Army recently asking for their email). I responded asking to confirm the license on their videos&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Hi Julie,&lt;br /&gt;
&lt;br /&gt;
I&#039;m writing you on behalf of Eco-Libre, and I have some questions about your licensing&lt;br /&gt;
&lt;br /&gt;
 * https://eco-libre.org&lt;br /&gt;
&lt;br /&gt;
I see that your website states that all of your work at Project Kamp is licensed CC BY-SA&lt;br /&gt;
&lt;br /&gt;
 * https://academy.projectkamp.com/start/intro/#open-source--license&lt;br /&gt;
&lt;br /&gt;
&amp;gt; Content: All our content is licensed under Creative&lt;br /&gt;
&amp;gt; Commons Attribution - Sharealike International 4.0.&lt;br /&gt;
&lt;br /&gt;
...but this is not reflected in your YouTube videos&#039; metadata. For example:&lt;br /&gt;
&lt;br /&gt;
 * https://www.youtube.com/watch?v=RpK5KVzJgs4&lt;br /&gt;
&lt;br /&gt;
YouTube has a specific field for you to set the license.&lt;br /&gt;
&lt;br /&gt;
 * https://support.google.com/youtube/answer/2797468?hl=en&lt;br /&gt;
&lt;br /&gt;
Unfortunately the drop-down only lets you set the video license to CC BY (not CC BY-SA -- which I think is most appropriate; both of our orgs use ShareAlike for video content).&lt;br /&gt;
&lt;br /&gt;
Can you please update your all of your channel&#039;s &amp;quot;video description&amp;quot; with some text that clearly indicates that the video content is licensed under CC BY-SA (and perhaps also change the YouTube license type to CC BY)? For example:&lt;br /&gt;
&lt;br /&gt;
  This video and all our content is licensed under the Creative&lt;br /&gt;
  Commons Attribution-ShareAlike 4.0 International license&lt;br /&gt;
  &amp;lt;https://creativecommons.org/licenses/by-sa/4.0/&amp;gt; unless&lt;br /&gt;
  otherwise noted.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Thank you,&lt;br /&gt;
&lt;br /&gt;
Michael Altfield&lt;br /&gt;
Founder, Eco-Libre&lt;br /&gt;
https://eco-libre.org&lt;br /&gt;
&lt;br /&gt;
-- &lt;br /&gt;
*Full Disclosure:* Eco-Libre works openly. All conversations in this email are intended to be transparent and subject to sharing, with due respect. We do not sign NDAs in order to promote collaboration. All of our work is libre or open source. If you are discussing potential collaboration, your work must also be open source pursuant to the Open Source Hardware Association definition &amp;lt;http://www.oshwa.org/definition/&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
On 5/1/26 03:50, Project Kamp wrote:&lt;br /&gt;
&amp;gt; Hello Michael,&lt;br /&gt;
&amp;gt;&lt;br /&gt;
&amp;gt; I have received a email from One Army that you were searching for our email&lt;br /&gt;
&amp;gt; address.&lt;br /&gt;
&amp;gt; How can I help?&lt;br /&gt;
&amp;gt;&lt;br /&gt;
&amp;gt; Julie&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= 2026-04-28 =&lt;br /&gt;
# one of the authors of the CERN OHL license got back to me! https://forums.ohwr.org/t/possible-to-triple-license-cern-ohl-s-2-0-agpl-3-0-cc-by-sa-4-0/849882/6&lt;br /&gt;
# they confirmed what I said: don&#039;t license under 3 licenses, or the person who uses our stuff can choose which license they want. that&#039;s not good.&lt;br /&gt;
# unfortuantely they didn&#039;t comment on my copyright DEP5 file, so I asked them to&lt;br /&gt;
# in the meantime, I did look into REUSE&lt;br /&gt;
## it looked like a big PIA. their demo vid shows you having to define the license of every file. that&#039;s a nightmare.&lt;br /&gt;
## the docs said that there is a &#039;convert dep5&#039;. that would be a lifesaver! https://codeberg.org/fsfe/reuse-tool&lt;br /&gt;
## I installed reuse from apt, but I discovered there is NO &#039;convert-dep5&#039; option :(&lt;br /&gt;
## I tried, instead, to install from pip (very insecure but I did it in a dispVM), and it *does* have the &#039;convert-dep5&#039; command&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
user@disp4360:~/sandbox/life-line$ pip install reuse&lt;br /&gt;
error: externally-managed-environment&lt;br /&gt;
&lt;br /&gt;
× This environment is externally managed&lt;br /&gt;
╰─&amp;gt; To install Python packages system-wide, try apt install&lt;br /&gt;
	python3-xyz, where xyz is the package you are trying to&lt;br /&gt;
	install.&lt;br /&gt;
    &lt;br /&gt;
	If you wish to install a non-Debian-packaged Python package,&lt;br /&gt;
	create a virtual environment using python3 -m venv path/to/venv.&lt;br /&gt;
	Then use path/to/venv/bin/python and path/to/venv/bin/pip. Make&lt;br /&gt;
	sure you have python3-full installed.&lt;br /&gt;
    &lt;br /&gt;
	If you wish to install a non-Debian packaged Python application,&lt;br /&gt;
	it may be easiest to use pipx install xyz, which will manage a&lt;br /&gt;
	virtual environment for you. Make sure you have pipx installed.&lt;br /&gt;
    &lt;br /&gt;
	See /usr/share/doc/python3.11/README.venv for more information.&lt;br /&gt;
&lt;br /&gt;
note: If you believe this is a mistake, please contact your Python installation or OS distribution provider. You can override this, at the risk of breaking your Python installation or OS, by passing --break-system-packages.&lt;br /&gt;
hint: See PEP 668 for the detailed specification.&lt;br /&gt;
user@disp4360:~/sandbox/life-line$&lt;br /&gt;
&lt;br /&gt;
user@disp4360:~/sandbox/life-line$ sudo apt-get install python3-virtualenv&lt;br /&gt;
Reading package lists... Done&lt;br /&gt;
Building dependency tree... Done&lt;br /&gt;
Reading state information... Done&lt;br /&gt;
The following packages were automatically installed and are no longer required:&lt;br /&gt;
  python3-binaryornot python3-boolean python3-debian python3-license-expression&lt;br /&gt;
Use &#039;sudo apt autoremove&#039; to remove them.&lt;br /&gt;
The following additional packages will be installed:&lt;br /&gt;
  python3-distlib python3-filelock python3-pip-whl python3-platformdirs&lt;br /&gt;
  python3-setuptools-whl python3-wheel-whl&lt;br /&gt;
The following NEW packages will be installed:&lt;br /&gt;
  python3-distlib python3-filelock python3-pip-whl python3-platformdirs&lt;br /&gt;
  python3-setuptools-whl python3-virtualenv python3-wheel-whl&lt;br /&gt;
0 upgraded, 7 newly installed, 0 to remove and 59 not upgraded.&lt;br /&gt;
Need to get 3,245 kB of archives.&lt;br /&gt;
After this operation, 4,914 kB of additional disk space will be used.&lt;br /&gt;
Do you want to continue? [Y/n] y&lt;br /&gt;
Get:1 https://deb.debian.org/debian bookworm/main amd64 python3-distlib all 0.3.6-1 [257 kB]&lt;br /&gt;
Get:2 https://deb.debian.org/debian bookworm/main amd64 python3-filelock all 3.9.0-1 [9,460 B]&lt;br /&gt;
Get:3 https://deb.debian.org/debian bookworm/main amd64 python3-pip-whl all 23.0.1+dfsg-1 [1,717 kB]&lt;br /&gt;
Get:4 https://deb.debian.org/debian bookworm/main amd64 python3-platformdirs all 2.6.0-1 [16.3 kB]&lt;br /&gt;
Get:5 https://deb.debian.org/debian bookworm/main amd64 python3-setuptools-whl all 66.1.1-1+deb12u2 [1,112 kB]&lt;br /&gt;
Get:6 https://deb.debian.org/debian bookworm/main amd64 python3-wheel-whl all 0.38.4-2 [38.6 kB]&lt;br /&gt;
Get:7 https://deb.debian.org/debian bookworm/main amd64 python3-virtualenv all 20.17.1+ds-1 [93.9 kB]&lt;br /&gt;
Fetched 3,245 kB in 4s (776 kB/s)        &lt;br /&gt;
Selecting previously unselected package python3-distlib.&lt;br /&gt;
(Reading database ... 450690 files and directories currently installed.)&lt;br /&gt;
Preparing to unpack .../0-python3-distlib_0.3.6-1_all.deb ...&lt;br /&gt;
Unpacking python3-distlib (0.3.6-1) ...&lt;br /&gt;
Selecting previously unselected package python3-filelock.&lt;br /&gt;
Preparing to unpack .../1-python3-filelock_3.9.0-1_all.deb ...&lt;br /&gt;
Unpacking python3-filelock (3.9.0-1) ...&lt;br /&gt;
Selecting previously unselected package python3-pip-whl.&lt;br /&gt;
Preparing to unpack .../2-python3-pip-whl_23.0.1+dfsg-1_all.deb ...&lt;br /&gt;
Unpacking python3-pip-whl (23.0.1+dfsg-1) ...&lt;br /&gt;
Selecting previously unselected package python3-platformdirs.&lt;br /&gt;
Preparing to unpack .../3-python3-platformdirs_2.6.0-1_all.deb ...&lt;br /&gt;
Unpacking python3-platformdirs (2.6.0-1) ...&lt;br /&gt;
Selecting previously unselected package python3-setuptools-whl.&lt;br /&gt;
Preparing to unpack .../4-python3-setuptools-whl_66.1.1-1+deb12u2_all.deb ...&lt;br /&gt;
Unpacking python3-setuptools-whl (66.1.1-1+deb12u2) ...&lt;br /&gt;
Selecting previously unselected package python3-wheel-whl.&lt;br /&gt;
Preparing to unpack .../5-python3-wheel-whl_0.38.4-2_all.deb ...&lt;br /&gt;
Unpacking python3-wheel-whl (0.38.4-2) ...&lt;br /&gt;
Selecting previously unselected package python3-virtualenv.&lt;br /&gt;
Preparing to unpack .../6-python3-virtualenv_20.17.1+ds-1_all.deb ...&lt;br /&gt;
Unpacking python3-virtualenv (20.17.1+ds-1) ...&lt;br /&gt;
Setting up python3-setuptools-whl (66.1.1-1+deb12u2) ...&lt;br /&gt;
Setting up python3-filelock (3.9.0-1) ...&lt;br /&gt;
Setting up python3-pip-whl (23.0.1+dfsg-1) ...&lt;br /&gt;
Setting up python3-distlib (0.3.6-1) ...&lt;br /&gt;
Setting up python3-platformdirs (2.6.0-1) ...&lt;br /&gt;
Setting up python3-wheel-whl (0.38.4-2) ...&lt;br /&gt;
Setting up python3-virtualenv (20.17.1+ds-1) ...&lt;br /&gt;
Processing triggers for man-db (2.11.2-2) ...&lt;br /&gt;
Scanning processes...                                                                    &lt;br /&gt;
Scanning linux images...                                                                 &lt;br /&gt;
&lt;br /&gt;
No services need to be restarted.&lt;br /&gt;
&lt;br /&gt;
No containers need to be restarted.&lt;br /&gt;
&lt;br /&gt;
No user sessions are running outdated binaries.&lt;br /&gt;
&lt;br /&gt;
No VM guests are running outdated hypervisor (qemu) binaries on this host.&lt;br /&gt;
user@disp4360:~/sandbox/life-line$ python3 -m virtualenv --python=python3.7 /tmp/virtualenv&lt;br /&gt;
RuntimeError: failed to find interpreter for Builtin discover of python_spec=&#039;python3.7&#039;&lt;br /&gt;
user@disp4360:~/sandbox/life-line$&lt;br /&gt;
&lt;br /&gt;
user@disp4360:~/sandbox/life-line$ python3 -m virtualenv --python=python3 /tmp/virtualenvcreated virtual environment CPython3.11.2.final.0-64 in 248ms&lt;br /&gt;
  creator CPython3Posix(dest=/tmp/virtualenv, clear=False, no_vcs_ignore=False, global=False)&lt;br /&gt;
  seeder FromAppData(download=False, pip=bundle, setuptools=bundle, wheel=bundle, via=copy, app_data_dir=/home/user/.local/share/virtualenv)&lt;br /&gt;
	added seed packages: pip==23.0.1, setuptools==66.1.1, wheel==0.38.4&lt;br /&gt;
  activators BashActivator,CShellActivator,FishActivator,NushellActivator,PowerShellActivator,PythonActivator&lt;br /&gt;
user@disp4360:~/sandbox/life-line$&lt;br /&gt;
&lt;br /&gt;
user@disp4360:~/sandbox/life-line$ source /tmp/virtualenv/bin/activate&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ pip install --user --upgrade reuse&lt;br /&gt;
ERROR: Can not perform a &#039;--user&#039; install. User site-packages are not visible in this virtualenv.&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$&lt;br /&gt;
&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ pip install  --upgrade reuse&lt;br /&gt;
Collecting reuse&lt;br /&gt;
  Downloading reuse-6.2.0.tar.gz (1.6 MB)&lt;br /&gt;
	 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 1.6/1.6 MB 696.8 kB/s eta 0:00:00&lt;br /&gt;
  Installing build dependencies ... done&lt;br /&gt;
  Getting requirements to build wheel ... done&lt;br /&gt;
  Preparing metadata (pyproject.toml) ... done&lt;br /&gt;
Collecting Jinja2&amp;gt;=3.0.0&lt;br /&gt;
  Downloading jinja2-3.1.6-py3-none-any.whl (134 kB)&lt;br /&gt;
	 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 134.9/134.9 kB 576.8 kB/s eta 0:00:00&lt;br /&gt;
Collecting attrs&amp;gt;=23.2&lt;br /&gt;
  Downloading attrs-26.1.0-py3-none-any.whl (67 kB)&lt;br /&gt;
	 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 67.5/67.5 kB 674.1 kB/s eta 0:00:00&lt;br /&gt;
Collecting click&amp;gt;=8.1&lt;br /&gt;
  Downloading click-8.3.3-py3-none-any.whl (110 kB)&lt;br /&gt;
	 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 110.5/110.5 kB 1.1 MB/s eta 0:00:00&lt;br /&gt;
Collecting license-expression&amp;gt;=21.6.14&lt;br /&gt;
  Downloading license_expression-30.4.4-py3-none-any.whl (120 kB)&lt;br /&gt;
	 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 120.6/120.6 kB 1.3 MB/s eta 0:00:00&lt;br /&gt;
Collecting python-debian&amp;gt;=0.1.48&lt;br /&gt;
  Downloading python_debian-1.1.0-py3-none-any.whl (137 kB)&lt;br /&gt;
	 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 138.0/138.0 kB 819.7 kB/s eta 0:00:00&lt;br /&gt;
Collecting python-magic&amp;gt;=0.4.12&lt;br /&gt;
  Downloading python_magic-0.4.27-py2.py3-none-any.whl (13 kB)&lt;br /&gt;
Collecting tomlkit&amp;gt;=0.8&lt;br /&gt;
  Downloading tomlkit-0.14.0-py3-none-any.whl (39 kB)&lt;br /&gt;
Collecting MarkupSafe&amp;gt;=2.0&lt;br /&gt;
  Downloading markupsafe-3.0.3-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (22 kB)&lt;br /&gt;
Collecting boolean.py&amp;gt;=4.0&lt;br /&gt;
  Downloading boolean_py-5.0-py3-none-any.whl (26 kB)&lt;br /&gt;
Collecting charset-normalizer&lt;br /&gt;
  Downloading charset_normalizer-3.4.7-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (214 kB)&lt;br /&gt;
	 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 214.1/214.1 kB 1.3 MB/s eta 0:00:00&lt;br /&gt;
Building wheels for collected packages: reuse&lt;br /&gt;
  Building wheel for reuse (pyproject.toml) ... done&lt;br /&gt;
  Created wheel for reuse: filename=reuse-6.2.0-cp311-cp311-manylinux_2_36_x86_64.whl size=158934 sha256=db5cd3e5984de36238f3ead308c250b12c1cce318d17eb802313e29b25bd28cf&lt;br /&gt;
  Stored in directory: /home/user/.cache/pip/wheels/a0/8e/93/87a9da23115993a12577ff1fc8df222b28bd91e19b9987c529&lt;br /&gt;
Successfully built reuse&lt;br /&gt;
Installing collected packages: boolean.py, tomlkit, python-magic, MarkupSafe, license-expression, click, charset-normalizer, attrs, python-debian, Jinja2, reuse&lt;br /&gt;
Successfully installed Jinja2-3.1.6 MarkupSafe-3.0.3 attrs-26.1.0 boolean.py-5.0 charset-normalizer-3.4.7 click-8.3.3 license-expression-30.4.4 python-debian-1.1.0 python-magic-0.4.27 reuse-6.2.0 tomlkit-0.14.0&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$&lt;br /&gt;
&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ reuse --version&lt;br /&gt;
reuse, version 6.2.0&lt;br /&gt;
&lt;br /&gt;
This program is free software: you can redistribute it and/or modify it under&lt;br /&gt;
the terms of the GNU General Public License as published by the Free Software&lt;br /&gt;
Foundation, either version 3 of the License, or (at your option) any later&lt;br /&gt;
version.&lt;br /&gt;
&lt;br /&gt;
This program is distributed in the hope that it will be useful, but WITHOUT&lt;br /&gt;
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS&lt;br /&gt;
FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.&lt;br /&gt;
&lt;br /&gt;
You should have received a copy of the GNU General Public License along with&lt;br /&gt;
this program. If not, see &amp;lt;https://www.gnu.org/licenses/&amp;gt;.&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ &lt;br /&gt;
&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ reuse convert-dep5&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## no output; but it looked like it worked&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ reuse lint&lt;br /&gt;
# MISSING LICENSES&lt;br /&gt;
&lt;br /&gt;
&#039;AGPL-3.0&#039; found in:&lt;br /&gt;
* docs/buildDocs.sh&lt;br /&gt;
* docs/conf.py&lt;br /&gt;
&#039;CC-BY-SA-4.0&#039; found in:&lt;br /&gt;
* .github/workflows/docs_pages_workflow.yml&lt;br /&gt;
* .gitignore&lt;br /&gt;
* CHANGELOG&lt;br /&gt;
* KEYS&lt;br /&gt;
* README.md&lt;br /&gt;
* docs/.gitignore&lt;br /&gt;
* docs/Makefile&lt;br /&gt;
* docs/_static/custom.css&lt;br /&gt;
* docs/_templates/versions.html&lt;br /&gt;
* docs/attribution.rst&lt;br /&gt;
* docs/build/index.rst&lt;br /&gt;
* docs/build/intake/bom.ods&lt;br /&gt;
* docs/build/intake/bom.rst&lt;br /&gt;
* docs/build/intake/index.rst&lt;br /&gt;
* docs/build/intake/what.rst&lt;br /&gt;
* docs/build/settling-tank/bom.rst&lt;br /&gt;
* docs/build/settling-tank/index.rst&lt;br /&gt;
* docs/build/settling-tank/what.rst&lt;br /&gt;
* docs/changelog.rst&lt;br /&gt;
* docs/conf.py.orig&lt;br /&gt;
* docs/dev/index.rst&lt;br /&gt;
* docs/faq.rst&lt;br /&gt;
* docs/images/eco-libre_logo-2025.08.svg&lt;br /&gt;
* docs/images/eco-libre_text-logo-2025.08.svg&lt;br /&gt;
* docs/images/eco-libre_text-logo-2025.08_500px.png&lt;br /&gt;
* docs/images/life-line_2023.12.jpg&lt;br /&gt;
* docs/images/life-line_2025.10.jpg&lt;br /&gt;
* docs/images/life-line_intake_cleanout-drain.jpg&lt;br /&gt;
* docs/images/life-line_intake_drum.jpg&lt;br /&gt;
* docs/images/life-line_intake_expanded-metal.jpg&lt;br /&gt;
* docs/images/life-line_intake_fine-mesh.jpg&lt;br /&gt;
* docs/images/life-line_intake_outflow.jpg&lt;br /&gt;
* docs/images/life-line_intake_parts.svg&lt;br /&gt;
* docs/images/life-line_intake_turbulence-bar.jpg&lt;br /&gt;
* docs/images/life-line_intake_weir.jpg&lt;br /&gt;
* docs/images/life-line_praxis_boris-plotkin.2024-11.jpg&lt;br /&gt;
* docs/images/life-line_praxis_vegan-beasts_screen.2025-04.jpg&lt;br /&gt;
* docs/images/life-line_praxis_vegan-beasts_weir.2025-04.jpg&lt;br /&gt;
* docs/index.rst&lt;br /&gt;
* docs/introduction/index.rst&lt;br /&gt;
* docs/license.rst&lt;br /&gt;
* docs/locales/es/LC_MESSAGES/autodoc.mo&lt;br /&gt;
* docs/locales/es/LC_MESSAGES/autodoc.po&lt;br /&gt;
* docs/locales/es/LC_MESSAGES/index.mo&lt;br /&gt;
* docs/locales/es/LC_MESSAGES/index.po&lt;br /&gt;
* docs/make.bat&lt;br /&gt;
* docs/praxis/index.rst&lt;br /&gt;
* docs/support.rst&lt;br /&gt;
* docs/theory/index.rst&lt;br /&gt;
&#039;CERN-OHL-S-2.0&#039; found in:&lt;br /&gt;
* intake.FCStd&lt;br /&gt;
&lt;br /&gt;
# SUMMARY&lt;br /&gt;
&lt;br /&gt;
* Bad licenses: 0&lt;br /&gt;
* Deprecated licenses: 0&lt;br /&gt;
* Licenses without file extension: 0&lt;br /&gt;
* Missing licenses: AGPL-3.0, CC-BY-SA-4.0, CERN-OHL-S-2.0&lt;br /&gt;
* Unused licenses: 0&lt;br /&gt;
* Used licenses: AGPL-3.0, CC-BY-SA-4.0, CERN-OHL-S-2.0&lt;br /&gt;
* Read errors: 0&lt;br /&gt;
* Invalid SPDX License Expressions: 0&lt;br /&gt;
* Files with copyright information: 52 / 52&lt;br /&gt;
* Files with license information: 52 / 52&lt;br /&gt;
&lt;br /&gt;
Unfortunately, your project is not compliant with version 3.3 of the REUSE Specification :-(&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# RECOMMENDATIONS&lt;br /&gt;
&lt;br /&gt;
* Fix missing licenses: For at least one of the license identifiers provided by&lt;br /&gt;
  the &#039;SPDX-License-Identifier&#039; tags, there is no corresponding license text&lt;br /&gt;
  file in the &#039;LICENSES&#039; directory. For SPDX license identifiers, you can simply&lt;br /&gt;
  run &#039;reuse download --all&#039; to get any missing ones. For custom licenses&lt;br /&gt;
  (starting with &#039;LicenseRef-&#039;), you need to add these files yourself.&lt;br /&gt;
&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## ok, so it&#039;s just unhappy the licenses are missing; let&#039;s add them with the tool&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ reuse download&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ &lt;br /&gt;
&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ reuse download CC-BY-SA-4.0&lt;br /&gt;
Successfully downloaded LICENSES/CC-BY-SA-4.0.txt.&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$&lt;br /&gt;
&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ ls -lah LICENSES&lt;br /&gt;
total 28K&lt;br /&gt;
drwxr-xr-x 2 user user 4.0K Apr 28 16:43 .&lt;br /&gt;
drwxr-xr-x 7 user user 4.0K Apr 28 16:43 ..&lt;br /&gt;
-rw-r--r-- 1 user user  18K Apr 28 16:43 CC-BY-SA-4.0.txt&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ &lt;br /&gt;
&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ reuse download CERN-OHL-S-2.0&lt;br /&gt;
Successfully downloaded LICENSES/CERN-OHL-S-2.0.txt.&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ &lt;br /&gt;
&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ reuse download AGPL-3.0&lt;br /&gt;
Successfully downloaded LICENSES/AGPL-3.0.txt.&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ &lt;br /&gt;
&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ ls -lah LICENSES&lt;br /&gt;
total 80K&lt;br /&gt;
drwxr-xr-x 2 user user 4.0K Apr 28 16:44 .&lt;br /&gt;
drwxr-xr-x 7 user user 4.0K Apr 28 16:43 ..&lt;br /&gt;
-rw-r--r-- 1 user user  34K Apr 28 16:44 AGPL-3.0.txt&lt;br /&gt;
-rw-r--r-- 1 user user  18K Apr 28 16:43 CC-BY-SA-4.0.txt&lt;br /&gt;
-rw-r--r-- 1 user user  14K Apr 28 16:43 CERN-OHL-S-2.0.txt&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## wut. they said we can&#039;t use AGPL-3.0?&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ reuse lint&lt;br /&gt;
# DEPRECATED LICENSES&lt;br /&gt;
&lt;br /&gt;
The following licenses are deprecated by SPDX:&lt;br /&gt;
* AGPL-3.0&lt;br /&gt;
&lt;br /&gt;
# SUMMARY&lt;br /&gt;
&lt;br /&gt;
* Bad licenses: 0&lt;br /&gt;
* Deprecated licenses: AGPL-3.0&lt;br /&gt;
* Licenses without file extension: 0&lt;br /&gt;
* Missing licenses: 0&lt;br /&gt;
* Unused licenses: 0&lt;br /&gt;
* Used licenses: AGPL-3.0, CC-BY-SA-4.0, CERN-OHL-S-2.0&lt;br /&gt;
* Read errors: 0&lt;br /&gt;
* Invalid SPDX License Expressions: 0&lt;br /&gt;
* Files with copyright information: 52 / 52&lt;br /&gt;
* Files with license information: 52 / 52&lt;br /&gt;
&lt;br /&gt;
Unfortunately, your project is not compliant with version 3.3 of the REUSE Specification :-(&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# RECOMMENDATIONS&lt;br /&gt;
&lt;br /&gt;
* Fix deprecated licenses: At least one of the licenses in the LICENSES&lt;br /&gt;
  directory and/or provided by an &#039;SPDX-License-Identifier&#039; tag or in&lt;br /&gt;
  &#039;.reuse/dep5&#039; has been deprecated by SPDX. The current list and their&lt;br /&gt;
  respective recommended  new identifiers can be found here:&lt;br /&gt;
  &amp;lt;https://spdx.org/licenses/#deprecated&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## ok, apparently they want one of these https://spdx.org/licenses/&lt;br /&gt;
###  AGPL-3.0-only&lt;br /&gt;
###  AGPL-3.0-or-later&lt;br /&gt;
## ugh, they deleted our dep5 file; appraently it puts everything in a REUSE.toml file (there&#039;s no .license files everywhere, which I do like)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ ls -lah .reuse/&lt;br /&gt;
total 8.0K&lt;br /&gt;
drwxr-xr-x 2 user user 4.0K Apr 28 16:34 .&lt;br /&gt;
drwxr-xr-x 7 user user 4.0K Apr 28 16:43 ..&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ &lt;br /&gt;
&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ ls -lah&lt;br /&gt;
total 376K&lt;br /&gt;
drwxr-xr-x  7 user user 4.0K Apr 28 16:43 .&lt;br /&gt;
drwxr-xr-x  3 user user 4.0K Apr 28 16:23 ..&lt;br /&gt;
-rw-r--r--  1 user user  531 Apr 28 16:23 CHANGELOG&lt;br /&gt;
drwxr-xr-x 11 user user 4.0K Apr 28 16:23 docs&lt;br /&gt;
drwxr-xr-x  8 user user 4.0K Apr 28 16:28 .git&lt;br /&gt;
drwxr-xr-x  3 user user 4.0K Apr 28 16:23 .github&lt;br /&gt;
-rw-r--r--  1 user user   44 Apr 28 16:23 .gitignore&lt;br /&gt;
-rw-r--r--  1 user user 221K Apr 28 16:23 intake.FCStd&lt;br /&gt;
-rw-r--r--  1 user user  71K Apr 28 16:23 KEYS&lt;br /&gt;
-rw-r--r--  1 user user  35K Apr 28 16:23 LICENSE&lt;br /&gt;
drwxr-xr-x  2 user user 4.0K Apr 28 16:44 LICENSES&lt;br /&gt;
-rw-r--r--  1 user user 1.3K Apr 28 16:23 README.md&lt;br /&gt;
drwxr-xr-x  2 user user 4.0K Apr 28 16:34 .reuse&lt;br /&gt;
-rw-r--r--  1 user user 1.7K Apr 28 16:34 REUSE.toml&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## oh, this isn&#039;t so bad. I was afriad it would literally list every single file, but instead it more-or-less just adapted what I had for the dep5 format&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ cat REUSE.toml &lt;br /&gt;
version = 1&lt;br /&gt;
SPDX-PackageName = &amp;quot;Eco-Libre Life-Line&amp;quot;&lt;br /&gt;
SPDX-PackageSupplier = &amp;quot;https://eco-libre.org/contact&amp;quot;&lt;br /&gt;
SPDX-PackageDownloadLocation = &amp;quot;https://github.com/Eco-Libre/life-line&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[annotations]]&lt;br /&gt;
path = &amp;quot;**&amp;quot;&lt;br /&gt;
precedence = &amp;quot;aggregate&amp;quot;&lt;br /&gt;
SPDX-FileCopyrightText = [&amp;quot;&amp;quot;, &amp;quot;2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&amp;quot;, &amp;quot;2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&amp;quot;]&lt;br /&gt;
SPDX-License-Identifier = &amp;quot;CC-BY-SA-4.0&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[annotations]]&lt;br /&gt;
path = [&amp;quot;**.FCStd&amp;quot;, &amp;quot;**.scad&amp;quot;, &amp;quot;**.fzz&amp;quot;, &amp;quot;**.blend&amp;quot;, &amp;quot;**.kicad_pcb&amp;quot;, &amp;quot;**.sh3d&amp;quot;, &amp;quot;**.vue&amp;quot;, &amp;quot;**.dxf&amp;quot;, &amp;quot;**.dwg&amp;quot;, &amp;quot;**.bim&amp;quot;, &amp;quot;**.skp&amp;quot;, &amp;quot;**.skb&amp;quot;, &amp;quot;**.max&amp;quot;, &amp;quot;**.3ds&amp;quot;, &amp;quot;**.gto&amp;quot;, &amp;quot;**.pod&amp;quot;, &amp;quot;**.brd&amp;quot;, &amp;quot;**.sch&amp;quot;, &amp;quot;**.3dm&amp;quot;, &amp;quot;**.dwb&amp;quot;, &amp;quot;**.slddrw&amp;quot;, &amp;quot;**.sldasm&amp;quot;]&lt;br /&gt;
precedence = &amp;quot;aggregate&amp;quot;&lt;br /&gt;
SPDX-FileCopyrightText = [&amp;quot;&amp;quot;, &amp;quot;2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&amp;quot;, &amp;quot;2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&amp;quot;]&lt;br /&gt;
SPDX-License-Identifier = &amp;quot;CERN-OHL-S-2.0&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[annotations]]&lt;br /&gt;
path = [&amp;quot;**.c&amp;quot;, &amp;quot;**.cpp&amp;quot;, &amp;quot;**.h&amp;quot;, &amp;quot;**.hpp&amp;quot;, &amp;quot;**.cc&amp;quot;, &amp;quot;**.ino&amp;quot;, &amp;quot;**.pde&amp;quot;, &amp;quot;**.make&amp;quot;, &amp;quot;**.automake&amp;quot;, &amp;quot;**.cmake&amp;quot;, &amp;quot;**.java&amp;quot;, &amp;quot;**.javacc&amp;quot;, &amp;quot;**.rust&amp;quot;, &amp;quot;**.d&amp;quot;, &amp;quot;**.j&amp;quot;, &amp;quot;**.r&amp;quot;, &amp;quot;**.sh&amp;quot;, &amp;quot;**.bash&amp;quot;, &amp;quot;**.zsh&amp;quot;, &amp;quot;**.awk&amp;quot;, &amp;quot;**.tcl&amp;quot;, &amp;quot;**.py&amp;quot;, &amp;quot;**.python&amp;quot;, &amp;quot;**.python2&amp;quot;, &amp;quot;**.python3&amp;quot;, &amp;quot;**.FCMacro&amp;quot;, &amp;quot;**.pl&amp;quot;, &amp;quot;**.perl&amp;quot;, &amp;quot;**.kivy&amp;quot;, &amp;quot;**.qix&amp;quot;, &amp;quot;**.dtd&amp;quot;, &amp;quot;**.shp&amp;quot;, &amp;quot;**.shz&amp;quot;, &amp;quot;**.dbf&amp;quot;, &amp;quot;**.shx&amp;quot;, &amp;quot;**.prj&amp;quot;, &amp;quot;**.kml&amp;quot;, &amp;quot;**.php&amp;quot;, &amp;quot;**.js&amp;quot;, &amp;quot;**.javascript&amp;quot;, &amp;quot;**.typescript&amp;quot;, &amp;quot;**.ruby&amp;quot;, &amp;quot;**.eruby&amp;quot;, &amp;quot;**.cuda&amp;quot;, &amp;quot;**.erlang&amp;quot;, &amp;quot;**.lisp&amp;quot;, &amp;quot;**.lua&amp;quot;, &amp;quot;**.haskell&amp;quot;, &amp;quot;**.go&amp;quot;, &amp;quot;**.autohotkey&amp;quot;, &amp;quot;**.basic&amp;quot;, &amp;quot;**.swift&amp;quot;, &amp;quot;**.vb&amp;quot;, &amp;quot;**.asp&amp;quot;]&lt;br /&gt;
precedence = &amp;quot;aggregate&amp;quot;&lt;br /&gt;
SPDX-FileCopyrightText = [&amp;quot;&amp;quot;, &amp;quot;2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&amp;quot;, &amp;quot;2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&amp;quot;]&lt;br /&gt;
SPDX-License-Identifier = &amp;quot;AGPL-3.0&amp;quot;&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## I edited the file, but the lint still isn&#039;t happy. I guess I have to update the LICENSES dir from AGPL-3.0 to AGPL-3.0-only :/&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ vim REUSE.toml &lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ &lt;br /&gt;
&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ reuse lint&lt;br /&gt;
# DEPRECATED LICENSES&lt;br /&gt;
&lt;br /&gt;
The following licenses are deprecated by SPDX:&lt;br /&gt;
* AGPL-3.0&lt;br /&gt;
&lt;br /&gt;
# MISSING LICENSES&lt;br /&gt;
&lt;br /&gt;
&#039;AGPL-3.0-only&#039; found in:&lt;br /&gt;
* docs/buildDocs.sh&lt;br /&gt;
* docs/conf.py&lt;br /&gt;
&lt;br /&gt;
# UNUSED LICENSES&lt;br /&gt;
&lt;br /&gt;
The following licenses are not used:&lt;br /&gt;
* AGPL-3.0&lt;br /&gt;
&lt;br /&gt;
# SUMMARY&lt;br /&gt;
&lt;br /&gt;
* Bad licenses: 0&lt;br /&gt;
* Deprecated licenses: AGPL-3.0&lt;br /&gt;
* Licenses without file extension: 0&lt;br /&gt;
* Missing licenses: AGPL-3.0-only&lt;br /&gt;
* Unused licenses: AGPL-3.0&lt;br /&gt;
* Used licenses: AGPL-3.0-only, CC-BY-SA-4.0, CERN-OHL-S-2.0&lt;br /&gt;
* Read errors: 0&lt;br /&gt;
* Invalid SPDX License Expressions: 0&lt;br /&gt;
* Files with copyright information: 52 / 52&lt;br /&gt;
* Files with license information: 52 / 52&lt;br /&gt;
&lt;br /&gt;
Unfortunately, your project is not compliant with version 3.3 of the REUSE Specification :-(&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# RECOMMENDATIONS&lt;br /&gt;
&lt;br /&gt;
* Fix deprecated licenses: At least one of the licenses in the LICENSES&lt;br /&gt;
  directory and/or provided by an &#039;SPDX-License-Identifier&#039; tag or in&lt;br /&gt;
  &#039;.reuse/dep5&#039; has been deprecated by SPDX. The current list and their&lt;br /&gt;
  respective recommended  new identifiers can be found here:&lt;br /&gt;
  &amp;lt;https://spdx.org/licenses/#deprecated&amp;gt;&lt;br /&gt;
* Fix missing licenses: For at least one of the license identifiers provided by&lt;br /&gt;
  the &#039;SPDX-License-Identifier&#039; tags, there is no corresponding license text&lt;br /&gt;
  file in the &#039;LICENSES&#039; directory. For SPDX license identifiers, you can simply&lt;br /&gt;
  run &#039;reuse download --all&#039; to get any missing ones. For custom licenses&lt;br /&gt;
  (starting with &#039;LicenseRef-&#039;), you need to add these files yourself.&lt;br /&gt;
* Fix unused licenses: At least one of the license text files in &#039;LICENSES&#039; is&lt;br /&gt;
  not referenced by any file, e.g. by an &#039;SPDX-License-Identifier&#039; tag. Please&lt;br /&gt;
  make sure that you either tag the accordingly licensed files properly, or&lt;br /&gt;
  delete the unused license text if you are sure that no file or code snippet is&lt;br /&gt;
  licensed as such.&lt;br /&gt;
&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## ok, now it&#039;s happy&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ ls -lah LICENSES&lt;br /&gt;
total 80K&lt;br /&gt;
drwxr-xr-x 2 user user 4.0K Apr 28 16:44 .&lt;br /&gt;
drwxr-xr-x 7 user user 4.0K Apr 28 16:50 ..&lt;br /&gt;
-rw-r--r-- 1 user user  34K Apr 28 16:44 AGPL-3.0.txt&lt;br /&gt;
-rw-r--r-- 1 user user  18K Apr 28 16:43 CC-BY-SA-4.0.txt&lt;br /&gt;
-rw-r--r-- 1 user user  14K Apr 28 16:43 CERN-OHL-S-2.0.txt&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ &lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ rm LICENSES/AGPL-3.0.txt &lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ &lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ reuse download AGPL-3.0-only&lt;br /&gt;
Successfully downloaded LICENSES/AGPL-3.0-only.txt.&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ &lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ reuse lint&lt;br /&gt;
# SUMMARY&lt;br /&gt;
&lt;br /&gt;
* Bad licenses: 0&lt;br /&gt;
* Deprecated licenses: 0&lt;br /&gt;
* Licenses without file extension: 0&lt;br /&gt;
* Missing licenses: 0&lt;br /&gt;
* Unused licenses: 0&lt;br /&gt;
* Used licenses: AGPL-3.0-only, CC-BY-SA-4.0, CERN-OHL-S-2.0&lt;br /&gt;
* Read errors: 0&lt;br /&gt;
* Invalid SPDX License Expressions: 0&lt;br /&gt;
* Files with copyright information: 52 / 52&lt;br /&gt;
* Files with license information: 52 / 52&lt;br /&gt;
&lt;br /&gt;
Congratulations! Your project is compliant with version 3.3 of the REUSE Specification :-)&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## anyway, here&#039;s our final file&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ cat REUSE.toml &lt;br /&gt;
version = 1&lt;br /&gt;
SPDX-PackageName = &amp;quot;Eco-Libre Life-Line&amp;quot;&lt;br /&gt;
SPDX-PackageSupplier = &amp;quot;https://eco-libre.org/contact&amp;quot;&lt;br /&gt;
SPDX-PackageDownloadLocation = &amp;quot;https://github.com/Eco-Libre/life-line&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[annotations]]&lt;br /&gt;
path = &amp;quot;**&amp;quot;&lt;br /&gt;
precedence = &amp;quot;aggregate&amp;quot;&lt;br /&gt;
SPDX-FileCopyrightText = [&amp;quot;&amp;quot;, &amp;quot;2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&amp;quot;, &amp;quot;2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&amp;quot;]&lt;br /&gt;
SPDX-License-Identifier = &amp;quot;CC-BY-SA-4.0&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[annotations]]&lt;br /&gt;
path = [&amp;quot;**.FCStd&amp;quot;, &amp;quot;**.scad&amp;quot;, &amp;quot;**.fzz&amp;quot;, &amp;quot;**.blend&amp;quot;, &amp;quot;**.kicad_pcb&amp;quot;, &amp;quot;**.sh3d&amp;quot;, &amp;quot;**.vue&amp;quot;, &amp;quot;**.dxf&amp;quot;, &amp;quot;**.dwg&amp;quot;, &amp;quot;**.bim&amp;quot;, &amp;quot;**.skp&amp;quot;, &amp;quot;**.skb&amp;quot;, &amp;quot;**.max&amp;quot;, &amp;quot;**.3ds&amp;quot;, &amp;quot;**.gto&amp;quot;, &amp;quot;**.pod&amp;quot;, &amp;quot;**.brd&amp;quot;, &amp;quot;**.sch&amp;quot;, &amp;quot;**.3dm&amp;quot;, &amp;quot;**.dwb&amp;quot;, &amp;quot;**.slddrw&amp;quot;, &amp;quot;**.sldasm&amp;quot;]&lt;br /&gt;
precedence = &amp;quot;aggregate&amp;quot;&lt;br /&gt;
SPDX-FileCopyrightText = [&amp;quot;&amp;quot;, &amp;quot;2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&amp;quot;, &amp;quot;2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&amp;quot;]&lt;br /&gt;
SPDX-License-Identifier = &amp;quot;CERN-OHL-S-2.0&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[annotations]]&lt;br /&gt;
path = [&amp;quot;**.c&amp;quot;, &amp;quot;**.cpp&amp;quot;, &amp;quot;**.h&amp;quot;, &amp;quot;**.hpp&amp;quot;, &amp;quot;**.cc&amp;quot;, &amp;quot;**.ino&amp;quot;, &amp;quot;**.pde&amp;quot;, &amp;quot;**.make&amp;quot;, &amp;quot;**.automake&amp;quot;, &amp;quot;**.cmake&amp;quot;, &amp;quot;**.java&amp;quot;, &amp;quot;**.javacc&amp;quot;, &amp;quot;**.rust&amp;quot;, &amp;quot;**.d&amp;quot;, &amp;quot;**.j&amp;quot;, &amp;quot;**.r&amp;quot;, &amp;quot;**.sh&amp;quot;, &amp;quot;**.bash&amp;quot;, &amp;quot;**.zsh&amp;quot;, &amp;quot;**.awk&amp;quot;, &amp;quot;**.tcl&amp;quot;, &amp;quot;**.py&amp;quot;, &amp;quot;**.python&amp;quot;, &amp;quot;**.python2&amp;quot;, &amp;quot;**.python3&amp;quot;, &amp;quot;**.FCMacro&amp;quot;, &amp;quot;**.pl&amp;quot;, &amp;quot;**.perl&amp;quot;, &amp;quot;**.kivy&amp;quot;, &amp;quot;**.qix&amp;quot;, &amp;quot;**.dtd&amp;quot;, &amp;quot;**.shp&amp;quot;, &amp;quot;**.shz&amp;quot;, &amp;quot;**.dbf&amp;quot;, &amp;quot;**.shx&amp;quot;, &amp;quot;**.prj&amp;quot;, &amp;quot;**.kml&amp;quot;, &amp;quot;**.php&amp;quot;, &amp;quot;**.js&amp;quot;, &amp;quot;**.javascript&amp;quot;, &amp;quot;**.typescript&amp;quot;, &amp;quot;**.ruby&amp;quot;, &amp;quot;**.eruby&amp;quot;, &amp;quot;**.cuda&amp;quot;, &amp;quot;**.erlang&amp;quot;, &amp;quot;**.lisp&amp;quot;, &amp;quot;**.lua&amp;quot;, &amp;quot;**.haskell&amp;quot;, &amp;quot;**.go&amp;quot;, &amp;quot;**.autohotkey&amp;quot;, &amp;quot;**.basic&amp;quot;, &amp;quot;**.swift&amp;quot;, &amp;quot;**.vb&amp;quot;, &amp;quot;**.asp&amp;quot;]&lt;br /&gt;
precedence = &amp;quot;aggregate&amp;quot;&lt;br /&gt;
SPDX-FileCopyrightText = [&amp;quot;&amp;quot;, &amp;quot;2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&amp;quot;, &amp;quot;2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&amp;quot;]&lt;br /&gt;
SPDX-License-Identifier = &amp;quot;AGPL-3.0-only&amp;quot;&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## looks like that only created the toml file. None of the files are actually annoated; we do that with `reuse annotate`&lt;br /&gt;
### apparently that command only works for individual files, so I did some find magic&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ find . -type f -exec reuse annotate --copyright --license &#039;{}&#039; \;&lt;br /&gt;
Successfully changed header of docs/license.rst&lt;br /&gt;
Successfully changed header of docs/build/intake/bom.rst&lt;br /&gt;
Successfully changed header of docs/build/intake/index.rst&lt;br /&gt;
Successfully changed header of docs/build/intake/bom.ods.license&lt;br /&gt;
Successfully changed header of docs/build/intake/what.rst&lt;br /&gt;
Successfully changed header of docs/build/index.rst&lt;br /&gt;
Successfully changed header of docs/build/settling-tank/bom.rst&lt;br /&gt;
Successfully changed header of docs/build/settling-tank/index.rst&lt;br /&gt;
Successfully changed header of docs/build/settling-tank/what.rst&lt;br /&gt;
Successfully changed header of docs/support.rst&lt;br /&gt;
Successfully changed header of docs/theory/index.rst&lt;br /&gt;
Successfully changed header of docs/make.bat&lt;br /&gt;
Successfully changed header of docs/buildDocs.sh&lt;br /&gt;
Successfully changed header of docs/images/life-line_intake_cleanout-drain.jpg.license&lt;br /&gt;
Successfully changed header of docs/images/life-line_intake_outflow.jpg.license&lt;br /&gt;
Successfully changed header of docs/images/life-line_2025.10.jpg.license&lt;br /&gt;
Successfully changed header of docs/images/life-line_2023.12.jpg.license&lt;br /&gt;
Successfully changed header of docs/images/life-line_intake_drum.jpg.license&lt;br /&gt;
Successfully changed header of docs/images/life-line_praxis_vegan-beasts_weir.2025-04.jpg.license&lt;br /&gt;
Successfully changed header of docs/images/life-line_praxis_vegan-beasts_screen.2025-04.jpg.license&lt;br /&gt;
Successfully changed header of docs/images/life-line_intake_turbulence-bar.jpg.license&lt;br /&gt;
Successfully changed header of docs/images/life-line_praxis_boris-plotkin.2024-11.jpg.license&lt;br /&gt;
Successfully changed header of docs/images/life-line_intake_fine-mesh.jpg.license&lt;br /&gt;
Successfully changed header of docs/images/eco-libre_logo-2025.08.svg.license&lt;br /&gt;
Successfully changed header of docs/images/eco-libre_text-logo-2025.08.svg.license&lt;br /&gt;
Successfully changed header of docs/images/life-line_intake_weir.jpg.license&lt;br /&gt;
Successfully changed header of docs/images/life-line_intake_parts.svg.license&lt;br /&gt;
Successfully changed header of docs/images/eco-libre_text-logo-2025.08_500px.png.license&lt;br /&gt;
Successfully changed header of docs/images/life-line_intake_expanded-metal.jpg.license&lt;br /&gt;
Successfully changed header of docs/praxis/index.rst&lt;br /&gt;
Successfully changed header of docs/introduction/index.rst&lt;br /&gt;
Successfully changed header of docs/_static/custom.css&lt;br /&gt;
Successfully changed header of docs/index.rst&lt;br /&gt;
Successfully changed header of docs/Makefile&lt;br /&gt;
Usage: reuse annotate [OPTIONS] PATH&lt;br /&gt;
Try &#039;reuse annotate --help&#039; for help.&lt;br /&gt;
&lt;br /&gt;
Error: The following files do not have a recognised file extension. Please use &#039;--style&#039;, &#039;--force-dot-license&#039;, &#039;--fallback-dot-license&#039;, or &#039;--skip-unrecognised&#039;:&lt;br /&gt;
&lt;br /&gt;
docs/conf.py.orig&lt;br /&gt;
Successfully changed header of docs/conf.py&lt;br /&gt;
Successfully changed header of docs/faq.rst&lt;br /&gt;
Successfully changed header of docs/.gitignore&lt;br /&gt;
Successfully changed header of docs/attribution.rst&lt;br /&gt;
Successfully changed header of docs/changelog.rst&lt;br /&gt;
Successfully changed header of docs/_templates/versions.html&lt;br /&gt;
Usage: reuse annotate [OPTIONS] PATH&lt;br /&gt;
Try &#039;reuse annotate --help&#039; for help.&lt;br /&gt;
&lt;br /&gt;
Error: The following files do not have a recognised file extension. Please use &#039;--style&#039;, &#039;--force-dot-license&#039;, &#039;--fallback-dot-license&#039;, or &#039;--skip-unrecognised&#039;:&lt;br /&gt;
&lt;br /&gt;
docs/locales/es/LC_MESSAGES/autodoc.mo&lt;br /&gt;
Successfully changed header of docs/locales/es/LC_MESSAGES/index.po&lt;br /&gt;
Successfully changed header of docs/locales/es/LC_MESSAGES/autodoc.po&lt;br /&gt;
Usage: reuse annotate [OPTIONS] PATH&lt;br /&gt;
Try &#039;reuse annotate --help&#039; for help.&lt;br /&gt;
&lt;br /&gt;
Error: The following files do not have a recognised file extension. Please use &#039;--style&#039;, &#039;--force-dot-license&#039;, &#039;--fallback-dot-license&#039;, or &#039;--skip-unrecognised&#039;:&lt;br /&gt;
&lt;br /&gt;
docs/locales/es/LC_MESSAGES/index.mo&lt;br /&gt;
Successfully changed header of docs/dev/index.rst&lt;br /&gt;
Usage: reuse annotate [OPTIONS] PATH&lt;br /&gt;
Try &#039;reuse annotate --help&#039; for help.&lt;br /&gt;
&lt;br /&gt;
Error: The following files do not have a recognised file extension. Please use &#039;--style&#039;, &#039;--force-dot-license&#039;, &#039;--fallback-dot-license&#039;, or &#039;--skip-unrecognised&#039;:&lt;br /&gt;
&lt;br /&gt;
CHANGELOG&lt;br /&gt;
Usage: reuse annotate [OPTIONS] PATH&lt;br /&gt;
Try &#039;reuse annotate --help&#039; for help.&lt;br /&gt;
&lt;br /&gt;
Error: The following files do not have a recognised file extension. Please use &#039;--style&#039;, &#039;--force-dot-license&#039;, &#039;--fallback-dot-license&#039;, or &#039;--skip-unrecognised&#039;:&lt;br /&gt;
&lt;br /&gt;
LICENSES/CC-BY-SA-4.0.txt&lt;br /&gt;
Usage: reuse annotate [OPTIONS] PATH&lt;br /&gt;
Try &#039;reuse annotate --help&#039; for help.&lt;br /&gt;
&lt;br /&gt;
Error: The following files do not have a recognised file extension. Please use &#039;--style&#039;, &#039;--force-dot-license&#039;, &#039;--fallback-dot-license&#039;, or &#039;--skip-unrecognised&#039;:&lt;br /&gt;
&lt;br /&gt;
LICENSES/CERN-OHL-S-2.0.txt&lt;br /&gt;
Usage: reuse annotate [OPTIONS] PATH&lt;br /&gt;
Try &#039;reuse annotate --help&#039; for help.&lt;br /&gt;
&lt;br /&gt;
Error: The following files do not have a recognised file extension. Please use &#039;--style&#039;, &#039;--force-dot-license&#039;, &#039;--fallback-dot-license&#039;, or &#039;--skip-unrecognised&#039;:&lt;br /&gt;
&lt;br /&gt;
LICENSES/AGPL-3.0-only.txt&lt;br /&gt;
Usage: reuse annotate [OPTIONS] PATH&lt;br /&gt;
Try &#039;reuse annotate --help&#039; for help.&lt;br /&gt;
&lt;br /&gt;
Error: Invalid value for &#039;PATH&#039;: Path &#039;./.git/objects/pack/pack-38957d03ba60a2a9101b19234fac447289823e43.idx&#039; is not writable.&lt;br /&gt;
Usage: reuse annotate [OPTIONS] PATH&lt;br /&gt;
Try &#039;reuse annotate --help&#039; for help.&lt;br /&gt;
&lt;br /&gt;
Error: Invalid value for &#039;PATH&#039;: Path &#039;./.git/objects/pack/pack-38957d03ba60a2a9101b19234fac447289823e43.pack&#039; is not writable.&lt;br /&gt;
Usage: reuse annotate [OPTIONS] PATH&lt;br /&gt;
Try &#039;reuse annotate --help&#039; for help.&lt;br /&gt;
&lt;br /&gt;
Error: The following files do not have a recognised file extension. Please use &#039;--style&#039;, &#039;--force-dot-license&#039;, &#039;--fallback-dot-license&#039;, or &#039;--skip-unrecognised&#039;:&lt;br /&gt;
&lt;br /&gt;
.git/logs/HEAD&lt;br /&gt;
Usage: reuse annotate [OPTIONS] PATH&lt;br /&gt;
Try &#039;reuse annotate --help&#039; for help.&lt;br /&gt;
&lt;br /&gt;
Error: The following files do not have a recognised file extension. Please use &#039;--style&#039;, &#039;--force-dot-license&#039;, &#039;--fallback-dot-license&#039;, or &#039;--skip-unrecognised&#039;:&lt;br /&gt;
&lt;br /&gt;
.git/logs/refs/remotes/origin/HEAD&lt;br /&gt;
Usage: reuse annotate [OPTIONS] PATH&lt;br /&gt;
Try &#039;reuse annotate --help&#039; for help.&lt;br /&gt;
&lt;br /&gt;
Error: The following files do not have a recognised file extension. Please use &#039;--style&#039;, &#039;--force-dot-license&#039;, &#039;--fallback-dot-license&#039;, or &#039;--skip-unrecognised&#039;:&lt;br /&gt;
&lt;br /&gt;
.git/logs/refs/heads/main&lt;br /&gt;
Usage: reuse annotate [OPTIONS] PATH&lt;br /&gt;
Try &#039;reuse annotate --help&#039; for help.&lt;br /&gt;
&lt;br /&gt;
Error: The following files do not have a recognised file extension. Please use &#039;--style&#039;, &#039;--force-dot-license&#039;, &#039;--fallback-dot-license&#039;, or &#039;--skip-unrecognised&#039;:&lt;br /&gt;
&lt;br /&gt;
.git/hooks/pre-push.sample&lt;br /&gt;
Usage: reuse annotate [OPTIONS] PATH&lt;br /&gt;
Try &#039;reuse annotate --help&#039; for help.&lt;br /&gt;
&lt;br /&gt;
Error: The following files do not have a recognised file extension. Please use &#039;--style&#039;, &#039;--force-dot-license&#039;, &#039;--fallback-dot-license&#039;, or &#039;--skip-unrecognised&#039;:&lt;br /&gt;
&lt;br /&gt;
.git/hooks/post-update.sample&lt;br /&gt;
Usage: reuse annotate [OPTIONS] PATH&lt;br /&gt;
Try &#039;reuse annotate --help&#039; for help.&lt;br /&gt;
&lt;br /&gt;
Error: The following files do not have a recognised file extension. Please use &#039;--style&#039;, &#039;--force-dot-license&#039;, &#039;--fallback-dot-license&#039;, or &#039;--skip-unrecognised&#039;:&lt;br /&gt;
&lt;br /&gt;
.git/hooks/pre-rebase.sample&lt;br /&gt;
Usage: reuse annotate [OPTIONS] PATH&lt;br /&gt;
Try &#039;reuse annotate --help&#039; for help.&lt;br /&gt;
&lt;br /&gt;
Error: The following files do not have a recognised file extension. Please use &#039;--style&#039;, &#039;--force-dot-license&#039;, &#039;--fallback-dot-license&#039;, or &#039;--skip-unrecognised&#039;:&lt;br /&gt;
&lt;br /&gt;
.git/hooks/update.sample&lt;br /&gt;
Usage: reuse annotate [OPTIONS] PATH&lt;br /&gt;
Try &#039;reuse annotate --help&#039; for help.&lt;br /&gt;
&lt;br /&gt;
Error: The following files do not have a recognised file extension. Please use &#039;--style&#039;, &#039;--force-dot-license&#039;, &#039;--fallback-dot-license&#039;, or &#039;--skip-unrecognised&#039;:&lt;br /&gt;
&lt;br /&gt;
.git/hooks/push-to-checkout.sample&lt;br /&gt;
Usage: reuse annotate [OPTIONS] PATH&lt;br /&gt;
Try &#039;reuse annotate --help&#039; for help.&lt;br /&gt;
&lt;br /&gt;
Error: The following files do not have a recognised file extension. Please use &#039;--style&#039;, &#039;--force-dot-license&#039;, &#039;--fallback-dot-license&#039;, or &#039;--skip-unrecognised&#039;:&lt;br /&gt;
&lt;br /&gt;
.git/hooks/pre-receive.sample&lt;br /&gt;
Usage: reuse annotate [OPTIONS] PATH&lt;br /&gt;
Try &#039;reuse annotate --help&#039; for help.&lt;br /&gt;
&lt;br /&gt;
Error: The following files do not have a recognised file extension. Please use &#039;--style&#039;, &#039;--force-dot-license&#039;, &#039;--fallback-dot-license&#039;, or &#039;--skip-unrecognised&#039;:&lt;br /&gt;
&lt;br /&gt;
.git/hooks/prepare-commit-msg.sample&lt;br /&gt;
Usage: reuse annotate [OPTIONS] PATH&lt;br /&gt;
Try &#039;reuse annotate --help&#039; for help.&lt;br /&gt;
&lt;br /&gt;
Error: The following files do not have a recognised file extension. Please use &#039;--style&#039;, &#039;--force-dot-license&#039;, &#039;--fallback-dot-license&#039;, or &#039;--skip-unrecognised&#039;:&lt;br /&gt;
&lt;br /&gt;
.git/hooks/applypatch-msg.sample&lt;br /&gt;
Usage: reuse annotate [OPTIONS] PATH&lt;br /&gt;
Try &#039;reuse annotate --help&#039; for help.&lt;br /&gt;
&lt;br /&gt;
Error: The following files do not have a recognised file extension. Please use &#039;--style&#039;, &#039;--force-dot-license&#039;, &#039;--fallback-dot-license&#039;, or &#039;--skip-unrecognised&#039;:&lt;br /&gt;
&lt;br /&gt;
.git/hooks/pre-merge-commit.sample&lt;br /&gt;
Usage: reuse annotate [OPTIONS] PATH&lt;br /&gt;
Try &#039;reuse annotate --help&#039; for help.&lt;br /&gt;
&lt;br /&gt;
Error: The following files do not have a recognised file extension. Please use &#039;--style&#039;, &#039;--force-dot-license&#039;, &#039;--fallback-dot-license&#039;, or &#039;--skip-unrecognised&#039;:&lt;br /&gt;
&lt;br /&gt;
.git/hooks/pre-applypatch.sample&lt;br /&gt;
Usage: reuse annotate [OPTIONS] PATH&lt;br /&gt;
Try &#039;reuse annotate --help&#039; for help.&lt;br /&gt;
&lt;br /&gt;
Error: The following files do not have a recognised file extension. Please use &#039;--style&#039;, &#039;--force-dot-license&#039;, &#039;--fallback-dot-license&#039;, or &#039;--skip-unrecognised&#039;:&lt;br /&gt;
&lt;br /&gt;
.git/hooks/pre-commit.sample&lt;br /&gt;
Usage: reuse annotate [OPTIONS] PATH&lt;br /&gt;
Try &#039;reuse annotate --help&#039; for help.&lt;br /&gt;
&lt;br /&gt;
Error: The following files do not have a recognised file extension. Please use &#039;--style&#039;, &#039;--force-dot-license&#039;, &#039;--fallback-dot-license&#039;, or &#039;--skip-unrecognised&#039;:&lt;br /&gt;
&lt;br /&gt;
.git/hooks/fsmonitor-watchman.sample&lt;br /&gt;
Usage: reuse annotate [OPTIONS] PATH&lt;br /&gt;
Try &#039;reuse annotate --help&#039; for help.&lt;br /&gt;
&lt;br /&gt;
Error: The following files do not have a recognised file extension. Please use &#039;--style&#039;, &#039;--force-dot-license&#039;, &#039;--fallback-dot-license&#039;, or &#039;--skip-unrecognised&#039;:&lt;br /&gt;
&lt;br /&gt;
.git/hooks/commit-msg.sample&lt;br /&gt;
Usage: reuse annotate [OPTIONS] PATH&lt;br /&gt;
Try &#039;reuse annotate --help&#039; for help.&lt;br /&gt;
&lt;br /&gt;
Error: The following files do not have a recognised file extension. Please use &#039;--style&#039;, &#039;--force-dot-license&#039;, &#039;--fallback-dot-license&#039;, or &#039;--skip-unrecognised&#039;:&lt;br /&gt;
&lt;br /&gt;
.git/config&lt;br /&gt;
Usage: reuse annotate [OPTIONS] PATH&lt;br /&gt;
Try &#039;reuse annotate --help&#039; for help.&lt;br /&gt;
&lt;br /&gt;
Error: The following files do not have a recognised file extension. Please use &#039;--style&#039;, &#039;--force-dot-license&#039;, &#039;--fallback-dot-license&#039;, or &#039;--skip-unrecognised&#039;:&lt;br /&gt;
&lt;br /&gt;
.git/HEAD&lt;br /&gt;
Usage: reuse annotate [OPTIONS] PATH&lt;br /&gt;
Try &#039;reuse annotate --help&#039; for help.&lt;br /&gt;
&lt;br /&gt;
Error: The following files do not have a recognised file extension. Please use &#039;--style&#039;, &#039;--force-dot-license&#039;, &#039;--fallback-dot-license&#039;, or &#039;--skip-unrecognised&#039;:&lt;br /&gt;
&lt;br /&gt;
.git/description&lt;br /&gt;
Usage: reuse annotate [OPTIONS] PATH&lt;br /&gt;
Try &#039;reuse annotate --help&#039; for help.&lt;br /&gt;
&lt;br /&gt;
Error: The following files do not have a recognised file extension. Please use &#039;--style&#039;, &#039;--force-dot-license&#039;, &#039;--fallback-dot-license&#039;, or &#039;--skip-unrecognised&#039;:&lt;br /&gt;
&lt;br /&gt;
.git/info/exclude&lt;br /&gt;
Usage: reuse annotate [OPTIONS] PATH&lt;br /&gt;
Try &#039;reuse annotate --help&#039; for help.&lt;br /&gt;
&lt;br /&gt;
Error: The following files do not have a recognised file extension. Please use &#039;--style&#039;, &#039;--force-dot-license&#039;, &#039;--fallback-dot-license&#039;, or &#039;--skip-unrecognised&#039;:&lt;br /&gt;
&lt;br /&gt;
.git/index&lt;br /&gt;
Usage: reuse annotate [OPTIONS] PATH&lt;br /&gt;
Try &#039;reuse annotate --help&#039; for help.&lt;br /&gt;
&lt;br /&gt;
Error: The following files do not have a recognised file extension. Please use &#039;--style&#039;, &#039;--force-dot-license&#039;, &#039;--fallback-dot-license&#039;, or &#039;--skip-unrecognised&#039;:&lt;br /&gt;
&lt;br /&gt;
.git/refs/remotes/origin/HEAD&lt;br /&gt;
Usage: reuse annotate [OPTIONS] PATH&lt;br /&gt;
Try &#039;reuse annotate --help&#039; for help.&lt;br /&gt;
&lt;br /&gt;
Error: The following files do not have a recognised file extension. Please use &#039;--style&#039;, &#039;--force-dot-license&#039;, &#039;--fallback-dot-license&#039;, or &#039;--skip-unrecognised&#039;:&lt;br /&gt;
&lt;br /&gt;
.git/refs/heads/main&lt;br /&gt;
Usage: reuse annotate [OPTIONS] PATH&lt;br /&gt;
Try &#039;reuse annotate --help&#039; for help.&lt;br /&gt;
&lt;br /&gt;
Error: The following files do not have a recognised file extension. Please use &#039;--style&#039;, &#039;--force-dot-license&#039;, &#039;--fallback-dot-license&#039;, or &#039;--skip-unrecognised&#039;:&lt;br /&gt;
&lt;br /&gt;
.git/packed-refs&lt;br /&gt;
Usage: reuse annotate [OPTIONS] PATH&lt;br /&gt;
Try &#039;reuse annotate --help&#039; for help.&lt;br /&gt;
&lt;br /&gt;
Error: The following files do not have a recognised file extension. Please use &#039;--style&#039;, &#039;--force-dot-license&#039;, &#039;--fallback-dot-license&#039;, or &#039;--skip-unrecognised&#039;:&lt;br /&gt;
&lt;br /&gt;
KEYS&lt;br /&gt;
Usage: reuse annotate [OPTIONS] PATH&lt;br /&gt;
Try &#039;reuse annotate --help&#039; for help.&lt;br /&gt;
&lt;br /&gt;
Error: The following files do not have a recognised file extension. Please use &#039;--style&#039;, &#039;--force-dot-license&#039;, &#039;--fallback-dot-license&#039;, or &#039;--skip-unrecognised&#039;:&lt;br /&gt;
&lt;br /&gt;
intake.FCStd&lt;br /&gt;
Successfully changed header of REUSE.toml&lt;br /&gt;
Successfully changed header of .gitignore&lt;br /&gt;
Successfully changed header of README.md&lt;br /&gt;
Successfully changed header of .github/workflows/docs_pages_workflow.yml&lt;br /&gt;
Usage: reuse annotate [OPTIONS] PATH&lt;br /&gt;
Try &#039;reuse annotate --help&#039; for help.&lt;br /&gt;
&lt;br /&gt;
Error: The following files do not have a recognised file extension. Please use &#039;--style&#039;, &#039;--force-dot-license&#039;, &#039;--fallback-dot-license&#039;, or &#039;--skip-unrecognised&#039;:&lt;br /&gt;
&lt;br /&gt;
LICENSE&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## ah fuk, that didn&#039;t do what we wanted at all. I expected it would have pulled the copyright info from the REUSE.toml file. Instead it just took the contents &#039;--license&#039; as the value of the copyright attribute :(&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ head docs/faq.rst &lt;br /&gt;
.. SPDX-FileCopyrightText: 2026 --license&lt;br /&gt;
&lt;br /&gt;
.. _faq:&lt;br /&gt;
&lt;br /&gt;
Frequently Asked Questions&lt;br /&gt;
==========================&lt;br /&gt;
&lt;br /&gt;
.. _faq_follow:&lt;br /&gt;
&lt;br /&gt;
Q: How can I get updates about Eco-Libre?&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## the faq says that we *should* update headers to every file, but it&#039;s not necessary if we use `REUSE.toml` file – as was also indicated with the `reuse lint` output above https://reuse.software/faq/&lt;br /&gt;
## we can, at any time, get a list of every file&#039;s copyright and license using the `reuse spdx` command&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ reuse spdx&lt;br /&gt;
SPDXVersion: SPDX-2.1&lt;br /&gt;
DataLicense: CC0-1.0&lt;br /&gt;
SPDXID: SPDXRef-DOCUMENT&lt;br /&gt;
DocumentName: life-line&lt;br /&gt;
DocumentNamespace: http://spdx.org/spdxdocs/spdx-v2.1-16677618-7d18-4c76-8411-c508a053c01d&lt;br /&gt;
Creator: Person: Anonymous ()&lt;br /&gt;
Creator: Organization: Anonymous ()&lt;br /&gt;
Creator: Tool: reuse-6.2.0&lt;br /&gt;
Created: 2026-04-28T22:19:51Z&lt;br /&gt;
CreatorComment: &amp;lt;text&amp;gt;This document was created automatically using available reuse information consistent with REUSE.&amp;lt;/text&amp;gt;&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-97ed0fdad1415bc2a07967691fb8b548&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-5a39e4fd6c4d6fe353cacabc360bd279&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-25ab5821b678be2b2b12d29b956be405&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-3a1f36e95ccd2fd666e9798d3ac7eb47&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-21b8c0e80d2658f4b88b5a3938551f27&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-1a8de53ae2a6abc46eb8ed1144b7a1f9&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-f9fec76b2bf698c8fb90b872cd0318c1&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-10a5417ebf693664c167892a336585dc&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-3baf92437e62e7b84893396f6d6d2c31&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-120ec97787268d2d531b284f8f238388&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-96f0aa3db80b8611b0cad4fd7f43d887&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-55954c104527c72b6f63da5076e914f7&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-87ca5b46937380db7a2e234fe72b2988&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-ce4d5cb6868565afb76744142953776c&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-7df4243f95862b10bf244e1a932a1305&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-009fc4d41e5673f7da41e8b27bd3ebd6&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-87008e367a587fb44b1e9b7aaa52f6b6&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-c531371aac660823102048108ce60921&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-732742039a9682c0d5bfa8d8845abb5f&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-1228cd07cdef9163c78a4847c409b29e&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-f039812ae7f967b8f08d9147e2fd4153&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-35b1d5815fbbdd7c4356fb3b3cba3b1e&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-c1aae1897500b74ec3aaca84335f882f&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-3598f5057a1cdb741af433a6096d913d&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-c17ac5ff4f166b672e4510ff2c577dbc&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-7b9171fdbbab79cca77d36069477c84a&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-7a9621b85efc539284dde0394be036d8&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-4658cb22cc4a9761f1206a7297889577&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-49300cf0d117ccc668836b524d21d3f9&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-d6b38587054ac699a38698e0eefb93c8&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-49b84e58657e7ccc299f61b0cf539e20&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-39d79d9e7219bdbab89178b7dc21d0da&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-ed584b122f50739f0fda5917ea3f7f59&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-1e2b0fda7ea1435b44332b7c8900d12a&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-2595e40eb2dc20ee8fc015548806efdc&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-fdc6a9c01b345699ecf781d28fa90f5a&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-9cd72e674f0f994995a06528ee25ce2f&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-9cc2a1a37bc4829e8725d74912f56b16&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-e2350358bd19a26c28ac28cc5e18c5a1&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-b33bfd4d5eec5e96e039ec43915bfbf8&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-7015c357dbfa9a8c1900250df442c421&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-4dedfba4994163f7e688743fc42a33d6&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-89b9ed2df6780dc61cffdf6dab799cff&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-eb10117cc0b1fcd44808cc34f4cb1083&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-f1dc0b0fba5c4ce78e065efb774669a8&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-01067d41eee220cdd87bfbf80ea71e87&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-111708d19b33da1a42118224ef69665e&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-472c7aaf2054b6662a0f02656ff453e0&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-f373dac39205edb0975081cc2411a334&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-3d7c4e6cccb3294880a3d23a9edc019c&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-fe7b87a77ea58c18a39d99c8cc4fd9b8&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-8979307823bc12e1df0c4754fb92b50a&lt;br /&gt;
&lt;br /&gt;
FileName: ./.github/workflows/docs_pages_workflow.yml&lt;br /&gt;
SPDXID: SPDXRef-97ed0fdad1415bc2a07967691fb8b548&lt;br /&gt;
FileChecksum: SHA1: 9d6615d72965d4a93b8f7b9eb83b6484b44dee95&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./.gitignore&lt;br /&gt;
SPDXID: SPDXRef-5a39e4fd6c4d6fe353cacabc360bd279&lt;br /&gt;
FileChecksum: SHA1: ac7e0839e77460fca604674fb11218c9fca3a62b&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./CHANGELOG&lt;br /&gt;
SPDXID: SPDXRef-25ab5821b678be2b2b12d29b956be405&lt;br /&gt;
FileChecksum: SHA1: 0d0ca350f7daa0808bebebd0a65784358dfc45c3&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./KEYS&lt;br /&gt;
SPDXID: SPDXRef-3a1f36e95ccd2fd666e9798d3ac7eb47&lt;br /&gt;
FileChecksum: SHA1: f97678ccd0eed19288e1962a838be2f4aa8b7c43&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./README.md&lt;br /&gt;
SPDXID: SPDXRef-21b8c0e80d2658f4b88b5a3938551f27&lt;br /&gt;
FileChecksum: SHA1: 954a6f4347c29a012ef72704606756c843b6a522&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
Copyright (C) 2023 Michael Altfield and the Eco-Libre Team&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./docs/.gitignore&lt;br /&gt;
SPDXID: SPDXRef-1a8de53ae2a6abc46eb8ed1144b7a1f9&lt;br /&gt;
FileChecksum: SHA1: 71683d32ff456772212653e2e836b217c3b7fb73&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./docs/Makefile&lt;br /&gt;
SPDXID: SPDXRef-f9fec76b2bf698c8fb90b872cd0318c1&lt;br /&gt;
FileChecksum: SHA1: 77b7d944eb62d73c1f46a1cfcba1e70e31e4297a&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./docs/_static/custom.css&lt;br /&gt;
SPDXID: SPDXRef-10a5417ebf693664c167892a336585dc&lt;br /&gt;
FileChecksum: SHA1: 6cd536f874aadf0ccc0a0e17ad33f948b4fba44c&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./docs/_templates/versions.html&lt;br /&gt;
SPDXID: SPDXRef-3baf92437e62e7b84893396f6d6d2c31&lt;br /&gt;
FileChecksum: SHA1: 8443bd4bfd306f5b6cf6485e6a6cff5599def6f7&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./docs/attribution.rst&lt;br /&gt;
SPDXID: SPDXRef-120ec97787268d2d531b284f8f238388&lt;br /&gt;
FileChecksum: SHA1: e4b0c037aac62dc9b64293fe57a188f6bf4c5615&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./docs/build/index.rst&lt;br /&gt;
SPDXID: SPDXRef-96f0aa3db80b8611b0cad4fd7f43d887&lt;br /&gt;
FileChecksum: SHA1: 464d9b8ffa36876d3eb0c95a093f4c212d80ff1b&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./docs/build/intake/bom.ods&lt;br /&gt;
SPDXID: SPDXRef-55954c104527c72b6f63da5076e914f7&lt;br /&gt;
FileChecksum: SHA1: 916d43e423eea34a6b63c4cc36190b998b426d85&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2026 --license&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./docs/build/intake/bom.rst&lt;br /&gt;
SPDXID: SPDXRef-87ca5b46937380db7a2e234fe72b2988&lt;br /&gt;
FileChecksum: SHA1: b72018fd716c9cd1f44b96e84a97d7891a9659c2&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./docs/build/intake/index.rst&lt;br /&gt;
SPDXID: SPDXRef-ce4d5cb6868565afb76744142953776c&lt;br /&gt;
FileChecksum: SHA1: 73e83f3d88739f3a711cdc22d05a17e5e46135a0&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./docs/build/intake/what.rst&lt;br /&gt;
SPDXID: SPDXRef-7df4243f95862b10bf244e1a932a1305&lt;br /&gt;
FileChecksum: SHA1: e444a37cc9615febee656e969dac625b9c2014ba&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./docs/build/settling-tank/bom.rst&lt;br /&gt;
SPDXID: SPDXRef-009fc4d41e5673f7da41e8b27bd3ebd6&lt;br /&gt;
FileChecksum: SHA1: e03a27e7d09a23245baa962f0f4ea12fac7ea6d2&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./docs/build/settling-tank/index.rst&lt;br /&gt;
SPDXID: SPDXRef-87008e367a587fb44b1e9b7aaa52f6b6&lt;br /&gt;
FileChecksum: SHA1: f8ff63ef2190341ea2bd810c300d54b83d5d3674&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./docs/build/settling-tank/what.rst&lt;br /&gt;
SPDXID: SPDXRef-c531371aac660823102048108ce60921&lt;br /&gt;
FileChecksum: SHA1: 57a0fa949c5e6e46eca53d0889f152c2962bfa61&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./docs/buildDocs.sh&lt;br /&gt;
SPDXID: SPDXRef-732742039a9682c0d5bfa8d8845abb5f&lt;br /&gt;
FileChecksum: SHA1: befd1b0246b958791ad57f4e18bbba43d8872cd7&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: AGPL-3.0-only&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./docs/changelog.rst&lt;br /&gt;
SPDXID: SPDXRef-1228cd07cdef9163c78a4847c409b29e&lt;br /&gt;
FileChecksum: SHA1: 26793d0a9acc383ba3ccfa7d622b7071db91418e&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./docs/conf.py&lt;br /&gt;
SPDXID: SPDXRef-f039812ae7f967b8f08d9147e2fd4153&lt;br /&gt;
FileChecksum: SHA1: 96026b86d9255c306df4b1fc8b2f5e94cc66c529&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: AGPL-3.0-only&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: &lt;br /&gt;
© &#039; +copyright,&amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./docs/conf.py.orig&lt;br /&gt;
SPDXID: SPDXRef-35b1d5815fbbdd7c4356fb3b3cba3b1e&lt;br /&gt;
FileChecksum: SHA1: 71f3dc660a741b97542c68e32eaa33c80dc42630&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./docs/dev/index.rst&lt;br /&gt;
SPDXID: SPDXRef-c1aae1897500b74ec3aaca84335f882f&lt;br /&gt;
FileChecksum: SHA1: 8075e5fb62dcb27431df32d5928e7561d66a2c46&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./docs/faq.rst&lt;br /&gt;
SPDXID: SPDXRef-3598f5057a1cdb741af433a6096d913d&lt;br /&gt;
FileChecksum: SHA1: f3b1399a843bcd73a4eb67e1fc62a4e090b2377a&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./docs/images/eco-libre_logo-2025.08.svg&lt;br /&gt;
SPDXID: SPDXRef-c17ac5ff4f166b672e4510ff2c577dbc&lt;br /&gt;
FileChecksum: SHA1: d582ec414c54cea2834891d35349c09ae069cbbd&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2026 --license&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./docs/images/eco-libre_text-logo-2025.08.svg&lt;br /&gt;
SPDXID: SPDXRef-7b9171fdbbab79cca77d36069477c84a&lt;br /&gt;
FileChecksum: SHA1: 513c03e164c26e0b35644bee03625b8d343fc49b&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2026 --license&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./docs/images/eco-libre_text-logo-2025.08_500px.png&lt;br /&gt;
SPDXID: SPDXRef-7a9621b85efc539284dde0394be036d8&lt;br /&gt;
FileChecksum: SHA1: de27a5411a683f090c1b543c1e93f8164c4d44cc&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2026 --license&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./docs/images/life-line_2023.12.jpg&lt;br /&gt;
SPDXID: SPDXRef-4658cb22cc4a9761f1206a7297889577&lt;br /&gt;
FileChecksum: SHA1: 8bff1f109f6f7ebc2accd5996d13fb94f7e8939a&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2026 --license&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./docs/images/life-line_2025.10.jpg&lt;br /&gt;
SPDXID: SPDXRef-49300cf0d117ccc668836b524d21d3f9&lt;br /&gt;
FileChecksum: SHA1: af42083713949fb9aac751421fc9a5fc3e794e4d&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2026 --license&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./docs/images/life-line_intake_cleanout-drain.jpg&lt;br /&gt;
SPDXID: SPDXRef-d6b38587054ac699a38698e0eefb93c8&lt;br /&gt;
FileChecksum: SHA1: 2652eedb0face5fececa50537198fc0f3aaf6092&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2026 --license&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./docs/images/life-line_intake_drum.jpg&lt;br /&gt;
SPDXID: SPDXRef-49b84e58657e7ccc299f61b0cf539e20&lt;br /&gt;
FileChecksum: SHA1: e26715adcf558fe12f4eded7308bc1be3e12761c&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2026 --license&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./docs/images/life-line_intake_expanded-metal.jpg&lt;br /&gt;
SPDXID: SPDXRef-39d79d9e7219bdbab89178b7dc21d0da&lt;br /&gt;
FileChecksum: SHA1: 0d0c3398256d96884fcd11daaebc4507b23d7750&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2026 --license&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./docs/images/life-line_intake_fine-mesh.jpg&lt;br /&gt;
SPDXID: SPDXRef-ed584b122f50739f0fda5917ea3f7f59&lt;br /&gt;
FileChecksum: SHA1: 4b3786e5f403c70f9598350c04cf12abb4a790aa&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2026 --license&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./docs/images/life-line_intake_outflow.jpg&lt;br /&gt;
SPDXID: SPDXRef-1e2b0fda7ea1435b44332b7c8900d12a&lt;br /&gt;
FileChecksum: SHA1: 0b7db555483b713324756799e657d2324bdab4f7&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2026 --license&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./docs/images/life-line_intake_parts.svg&lt;br /&gt;
SPDXID: SPDXRef-2595e40eb2dc20ee8fc015548806efdc&lt;br /&gt;
FileChecksum: SHA1: d98da9d0de766b61df6fb0c25f61521a3d26344a&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2026 --license&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./docs/images/life-line_intake_turbulence-bar.jpg&lt;br /&gt;
SPDXID: SPDXRef-fdc6a9c01b345699ecf781d28fa90f5a&lt;br /&gt;
FileChecksum: SHA1: 0f9c8372c9737ad1bac27204292c6aa7e5098813&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2026 --license&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./docs/images/life-line_intake_weir.jpg&lt;br /&gt;
SPDXID: SPDXRef-9cd72e674f0f994995a06528ee25ce2f&lt;br /&gt;
FileChecksum: SHA1: 7f64e42c9fe3b1d2c7d1ae1ece0b55bf544c781a&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2026 --license&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./docs/images/life-line_praxis_boris-plotkin.2024-11.jpg&lt;br /&gt;
SPDXID: SPDXRef-9cc2a1a37bc4829e8725d74912f56b16&lt;br /&gt;
FileChecksum: SHA1: baef65c6984d5b04e1cf44d435f471be0727bfd1&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2026 --license&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./docs/images/life-line_praxis_vegan-beasts_screen.2025-04.jpg&lt;br /&gt;
SPDXID: SPDXRef-e2350358bd19a26c28ac28cc5e18c5a1&lt;br /&gt;
FileChecksum: SHA1: d21be6517081f4f294ed88dca32a920e6bfeaadf&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2026 --license&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./docs/images/life-line_praxis_vegan-beasts_weir.2025-04.jpg&lt;br /&gt;
SPDXID: SPDXRef-b33bfd4d5eec5e96e039ec43915bfbf8&lt;br /&gt;
FileChecksum: SHA1: ba75a617970d7819263e2f21f0d52dcaa61c961c&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2026 --license&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./docs/index.rst&lt;br /&gt;
SPDXID: SPDXRef-7015c357dbfa9a8c1900250df442c421&lt;br /&gt;
FileChecksum: SHA1: e2618dda841766cbd533441dbd21fcfa55e2f119&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./docs/introduction/index.rst&lt;br /&gt;
SPDXID: SPDXRef-4dedfba4994163f7e688743fc42a33d6&lt;br /&gt;
FileChecksum: SHA1: 636e89b3596a43b9ca869502795fdc1956101d1c&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./docs/license.rst&lt;br /&gt;
SPDXID: SPDXRef-89b9ed2df6780dc61cffdf6dab799cff&lt;br /&gt;
FileChecksum: SHA1: c858a38846985c5a96c11c170468688b2860f529&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./docs/locales/es/LC_MESSAGES/autodoc.mo&lt;br /&gt;
SPDXID: SPDXRef-eb10117cc0b1fcd44808cc34f4cb1083&lt;br /&gt;
FileChecksum: SHA1: 3b2fa212f0265c96b1cde5a8cc061cc49385ed96&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./docs/locales/es/LC_MESSAGES/autodoc.po&lt;br /&gt;
SPDXID: SPDXRef-f1dc0b0fba5c4ce78e065efb774669a8&lt;br /&gt;
FileChecksum: SHA1: 58fca147c574cbda23a9c7a5ce420f6385d80ca1&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;Copyright (C) 2020 Michael Altfield&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./docs/locales/es/LC_MESSAGES/index.mo&lt;br /&gt;
SPDXID: SPDXRef-01067d41eee220cdd87bfbf80ea71e87&lt;br /&gt;
FileChecksum: SHA1: f6dda249389c9eb42684431b13c68bbb98530c35&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./docs/locales/es/LC_MESSAGES/index.po&lt;br /&gt;
SPDXID: SPDXRef-111708d19b33da1a42118224ef69665e&lt;br /&gt;
FileChecksum: SHA1: 21c57fcf054a05fcf4e0ef8660a6a38f98239e80&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;Copyright (C) 2020 Michael Altfield&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./docs/make.bat&lt;br /&gt;
SPDXID: SPDXRef-472c7aaf2054b6662a0f02656ff453e0&lt;br /&gt;
FileChecksum: SHA1: 3c504feedb2e1f1e85ed443a4d5aba20bafe0b28&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./docs/praxis/index.rst&lt;br /&gt;
SPDXID: SPDXRef-f373dac39205edb0975081cc2411a334&lt;br /&gt;
FileChecksum: SHA1: 03c98408278e3ebd2cdb61ecae75bd1c52cf4c02&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./docs/support.rst&lt;br /&gt;
SPDXID: SPDXRef-3d7c4e6cccb3294880a3d23a9edc019c&lt;br /&gt;
FileChecksum: SHA1: 3aabd6b0faf44abd22ae7d802d5e2baa988d4eaa&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./docs/theory/index.rst&lt;br /&gt;
SPDXID: SPDXRef-fe7b87a77ea58c18a39d99c8cc4fd9b8&lt;br /&gt;
FileChecksum: SHA1: 7b1906423a6b89ef1e047613a4a7bcee33ebbb7b&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./intake.FCStd&lt;br /&gt;
SPDXID: SPDXRef-8979307823bc12e1df0c4754fb92b50a&lt;br /&gt;
FileChecksum: SHA1: e0df68c56c2984184fccd26890583c8f82406525&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CERN-OHL-S-2.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## I guess we could even have a CI job that automatically generated this file on-push&lt;br /&gt;
# Javier Serrano (Deputy Group Leader of the accelerator Controls Electronics and Mechatronics and co-author of the CERN OHL license) said that he would be open to updating the &amp;quot;how to use the CERN OHL license&amp;quot; guide to include our REUSE.toml example, but that he&#039;d want us to provide an example repo\&lt;br /&gt;
# ok, on my eco-libre vm I did some real changes and pushed them up to github&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
user@eco-libre:~/sandbox/life-line$ ls -lah&lt;br /&gt;
total 116K&lt;br /&gt;
drwxr-xr-x  7 user user 4.0K Apr 28 18:32 .&lt;br /&gt;
drwxr-xr-x 18 user user 4.0K Apr 28 17:59 ..&lt;br /&gt;
drwxr-xr-x  2 user user 4.0K Apr 28 18:00 cad&lt;br /&gt;
-rw-r--r--  1 user user  531 Apr 28 17:59 CHANGELOG&lt;br /&gt;
drwxr-xr-x 11 user user 4.0K Apr 28 17:59 docs&lt;br /&gt;
drwxr-xr-x  8 user user 4.0K Apr 28 18:59 .git&lt;br /&gt;
drwxr-xr-x  3 user user 4.0K Apr 28 17:59 .github&lt;br /&gt;
-rw-r--r--  1 user user   44 Apr 28 17:59 .gitignore&lt;br /&gt;
-rw-r--r--  1 user user  71K Apr 28 17:59 KEYS&lt;br /&gt;
drwxr-xr-x  2 user user 4.0K Apr 28 18:20 LICENSES&lt;br /&gt;
-rw-r--r--  1 user user 1.3K Apr 28 18:32 README.md&lt;br /&gt;
-rw-r--r--  1 user user 1.7K Apr 28 18:10 REUSE.toml&lt;br /&gt;
user@eco-libre:~/sandbox/life-line$ &lt;br /&gt;
user@eco-libre:~/sandbox/life-line$ ls -lah LICENSES/&lt;br /&gt;
total 80K&lt;br /&gt;
drwxr-xr-x 2 user user 4.0K Apr 28 18:20 .&lt;br /&gt;
drwxr-xr-x 7 user user 4.0K Apr 28 18:32 ..&lt;br /&gt;
-rw-r--r-- 1 user user  34K Apr 28 18:08 AGPL-3.0-only.txt&lt;br /&gt;
-rw-r--r-- 1 user user  18K Apr 28 18:08 CC-BY-SA-4.0.txt&lt;br /&gt;
-rw-r--r-- 1 user user  14K Apr 28 18:08 CERN-OHL-S-2.0.txt&lt;br /&gt;
user@eco-libre:~/sandbox/life-line$ &lt;br /&gt;
user@eco-libre:~/sandbox/life-line$ cat REUSE.toml &lt;br /&gt;
version = 1&lt;br /&gt;
SPDX-PackageName = &amp;quot;Eco-Libre Life-Line&amp;quot;&lt;br /&gt;
SPDX-PackageSupplier = &amp;quot;https://eco-libre.org/contact&amp;quot;&lt;br /&gt;
SPDX-PackageDownloadLocation = &amp;quot;https://github.com/Eco-Libre/life-line&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[annotations]]&lt;br /&gt;
path = &amp;quot;**&amp;quot;&lt;br /&gt;
precedence = &amp;quot;aggregate&amp;quot;&lt;br /&gt;
SPDX-FileCopyrightText = [&amp;quot;&amp;quot;, &amp;quot;2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&amp;quot;, &amp;quot;2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&amp;quot;]&lt;br /&gt;
SPDX-License-Identifier = &amp;quot;CC-BY-SA-4.0&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[annotations]]&lt;br /&gt;
path = [&amp;quot;**.FCStd&amp;quot;, &amp;quot;**.scad&amp;quot;, &amp;quot;**.fzz&amp;quot;, &amp;quot;**.blend&amp;quot;, &amp;quot;**.kicad_pcb&amp;quot;, &amp;quot;**.sh3d&amp;quot;, &amp;quot;**.vue&amp;quot;, &amp;quot;**.dxf&amp;quot;, &amp;quot;**.dwg&amp;quot;, &amp;quot;**.bim&amp;quot;, &amp;quot;**.skp&amp;quot;, &amp;quot;**.skb&amp;quot;, &amp;quot;**.max&amp;quot;, &amp;quot;**.3ds&amp;quot;, &amp;quot;**.gto&amp;quot;, &amp;quot;**.pod&amp;quot;, &amp;quot;**.brd&amp;quot;, &amp;quot;**.sch&amp;quot;, &amp;quot;**.3dm&amp;quot;, &amp;quot;**.dwb&amp;quot;, &amp;quot;**.slddrw&amp;quot;, &amp;quot;**.sldasm&amp;quot;]&lt;br /&gt;
precedence = &amp;quot;aggregate&amp;quot;&lt;br /&gt;
SPDX-FileCopyrightText = [&amp;quot;&amp;quot;, &amp;quot;2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&amp;quot;, &amp;quot;2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&amp;quot;]&lt;br /&gt;
SPDX-License-Identifier = &amp;quot;CERN-OHL-S-2.0&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[annotations]]&lt;br /&gt;
path = [&amp;quot;**.c&amp;quot;, &amp;quot;**.cpp&amp;quot;, &amp;quot;**.h&amp;quot;, &amp;quot;**.hpp&amp;quot;, &amp;quot;**.cc&amp;quot;, &amp;quot;**.ino&amp;quot;, &amp;quot;**.pde&amp;quot;, &amp;quot;**.make&amp;quot;, &amp;quot;**.automake&amp;quot;, &amp;quot;**.cmake&amp;quot;, &amp;quot;**.java&amp;quot;, &amp;quot;**.javacc&amp;quot;, &amp;quot;**.rust&amp;quot;, &amp;quot;**.d&amp;quot;, &amp;quot;**.j&amp;quot;, &amp;quot;**.r&amp;quot;, &amp;quot;**.sh&amp;quot;, &amp;quot;**.bash&amp;quot;, &amp;quot;**.zsh&amp;quot;, &amp;quot;**.awk&amp;quot;, &amp;quot;**.tcl&amp;quot;, &amp;quot;**.py&amp;quot;, &amp;quot;**.python&amp;quot;, &amp;quot;**.python2&amp;quot;, &amp;quot;**.python3&amp;quot;, &amp;quot;**.FCMacro&amp;quot;, &amp;quot;**.pl&amp;quot;, &amp;quot;**.perl&amp;quot;, &amp;quot;**.kivy&amp;quot;, &amp;quot;**.qix&amp;quot;, &amp;quot;**.dtd&amp;quot;, &amp;quot;**.shp&amp;quot;, &amp;quot;**.shz&amp;quot;, &amp;quot;**.dbf&amp;quot;, &amp;quot;**.shx&amp;quot;, &amp;quot;**.prj&amp;quot;, &amp;quot;**.kml&amp;quot;, &amp;quot;**.php&amp;quot;, &amp;quot;**.js&amp;quot;, &amp;quot;**.javascript&amp;quot;, &amp;quot;**.typescript&amp;quot;, &amp;quot;**.ruby&amp;quot;, &amp;quot;**.eruby&amp;quot;, &amp;quot;**.cuda&amp;quot;, &amp;quot;**.erlang&amp;quot;, &amp;quot;**.lisp&amp;quot;, &amp;quot;**.lua&amp;quot;, &amp;quot;**.haskell&amp;quot;, &amp;quot;**.go&amp;quot;, &amp;quot;**.autohotkey&amp;quot;, &amp;quot;**.basic&amp;quot;, &amp;quot;**.swift&amp;quot;, &amp;quot;**.vb&amp;quot;, &amp;quot;**.asp&amp;quot;]&lt;br /&gt;
precedence = &amp;quot;aggregate&amp;quot;&lt;br /&gt;
SPDX-FileCopyrightText = [&amp;quot;&amp;quot;, &amp;quot;2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&amp;quot;, &amp;quot;2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&amp;quot;]&lt;br /&gt;
SPDX-License-Identifier = &amp;quot;AGPL-3.0-only&amp;quot;&lt;br /&gt;
user@eco-libre:~/sandbox/life-line$ &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# I don&#039;t trust pip, so I did this with the `reuse` from `apt`. Unfortuantly, this old version of reuse says we&#039;re not in compliance with REUSE specification 3.0&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
user@eco-libre:~/sandbox/life-line$ git log | head&lt;br /&gt;
commit fd844016efa29f34b97ea59aa6dc575bf21f8916&lt;br /&gt;
Author: Michael Altfield &amp;lt;michael@michaelaltfield.net&amp;gt;&lt;br /&gt;
Date:   Tue Apr 28 18:32:21 2026 -0500&lt;br /&gt;
&lt;br /&gt;
	updated the README with new license info&lt;br /&gt;
    &lt;br /&gt;
	TODO: see if I can get a CI process to automatically generate a SPDX BOM&lt;br /&gt;
&lt;br /&gt;
commit e4ece950b29294681a435e3239777390e417b274&lt;br /&gt;
Author: Michael Altfield &amp;lt;michael@michaelaltfield.net&amp;gt;&lt;br /&gt;
user@eco-libre:~/sandbox/life-line$ &lt;br /&gt;
user@eco-libre:~/sandbox/life-line$ reuse --version&lt;br /&gt;
reuse 1.1.2&lt;br /&gt;
user@eco-libre:~/sandbox/life-line$ &lt;br /&gt;
user@eco-libre:~/sandbox/life-line$ reuse lint&lt;br /&gt;
# UNUSED LICENSES&lt;br /&gt;
&lt;br /&gt;
The following licenses are not used:&lt;br /&gt;
* AGPL-3.0-only&lt;br /&gt;
* CC-BY-SA-4.0&lt;br /&gt;
* CERN-OHL-S-2.0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# MISSING COPYRIGHT AND LICENSING INFORMATION&lt;br /&gt;
&lt;br /&gt;
The following files have no copyright and licensing information:&lt;br /&gt;
* .github/workflows/docs_pages_workflow.yml&lt;br /&gt;
* .gitignore&lt;br /&gt;
* CHANGELOG&lt;br /&gt;
* KEYS&lt;br /&gt;
* REUSE.toml&lt;br /&gt;
* cad/intake.FCStd&lt;br /&gt;
* docs/.gitignore&lt;br /&gt;
* docs/Makefile&lt;br /&gt;
* docs/_static/custom.css&lt;br /&gt;
* docs/_templates/versions.html&lt;br /&gt;
* docs/attribution.rst&lt;br /&gt;
* docs/build/index.rst&lt;br /&gt;
* docs/build/intake/bom.ods&lt;br /&gt;
* docs/build/intake/bom.rst&lt;br /&gt;
* docs/build/intake/index.rst&lt;br /&gt;
* docs/build/intake/what.rst&lt;br /&gt;
* docs/build/settling-tank/bom.rst&lt;br /&gt;
* docs/build/settling-tank/index.rst&lt;br /&gt;
* docs/build/settling-tank/what.rst&lt;br /&gt;
* docs/buildDocs.sh&lt;br /&gt;
* docs/changelog.rst&lt;br /&gt;
* docs/conf.py&lt;br /&gt;
* docs/conf.py.orig&lt;br /&gt;
* docs/dev/index.rst&lt;br /&gt;
* docs/faq.rst&lt;br /&gt;
* docs/images/eco-libre_logo-2025.08.svg&lt;br /&gt;
* docs/images/eco-libre_text-logo-2025.08.svg&lt;br /&gt;
* docs/images/eco-libre_text-logo-2025.08_500px.png&lt;br /&gt;
* docs/images/life-line_2023.12.jpg&lt;br /&gt;
* docs/images/life-line_2025.10.jpg&lt;br /&gt;
* docs/images/life-line_intake_cleanout-drain.jpg&lt;br /&gt;
* docs/images/life-line_intake_drum.jpg&lt;br /&gt;
* docs/images/life-line_intake_expanded-metal.jpg&lt;br /&gt;
* docs/images/life-line_intake_fine-mesh.jpg&lt;br /&gt;
* docs/images/life-line_intake_outflow.jpg&lt;br /&gt;
* docs/images/life-line_intake_parts.svg&lt;br /&gt;
* docs/images/life-line_intake_turbulence-bar.jpg&lt;br /&gt;
* docs/images/life-line_intake_weir.jpg&lt;br /&gt;
* docs/images/life-line_praxis_boris-plotkin.2024-11.jpg&lt;br /&gt;
* docs/images/life-line_praxis_vegan-beasts_screen.2025-04.jpg&lt;br /&gt;
* docs/images/life-line_praxis_vegan-beasts_weir.2025-04.jpg&lt;br /&gt;
* docs/index.rst&lt;br /&gt;
* docs/introduction/index.rst&lt;br /&gt;
* docs/license.rst&lt;br /&gt;
* docs/locales/es/LC_MESSAGES/autodoc.mo&lt;br /&gt;
* docs/locales/es/LC_MESSAGES/index.mo&lt;br /&gt;
* docs/make.bat&lt;br /&gt;
* docs/praxis/index.rst&lt;br /&gt;
* docs/support.rst&lt;br /&gt;
* docs/theory/index.rst&lt;br /&gt;
&lt;br /&gt;
The following files have no licensing information:&lt;br /&gt;
* README.md&lt;br /&gt;
* docs/locales/es/LC_MESSAGES/autodoc.po&lt;br /&gt;
* docs/locales/es/LC_MESSAGES/index.po&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# SUMMARY&lt;br /&gt;
&lt;br /&gt;
* Bad licenses:&lt;br /&gt;
* Deprecated licenses:&lt;br /&gt;
* Licenses without file extension:&lt;br /&gt;
* Missing licenses:&lt;br /&gt;
* Unused licenses: AGPL-3.0-only, CC-BY-SA-4.0, CERN-OHL-S-2.0&lt;br /&gt;
* Used licenses:&lt;br /&gt;
* Read errors: 0&lt;br /&gt;
* Files with copyright information: 3 / 53&lt;br /&gt;
* Files with license information: 0 / 53&lt;br /&gt;
&lt;br /&gt;
Unfortunately, your project is not compliant with version 3.0 of the REUSE Specification :-(&lt;br /&gt;
user@eco-libre:~/sandbox/life-line$ &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# however, if I checkout the repo to the *exact same* commit on my dispvm (where we&#039;ve installed reuse insecurely from pip), it says that we *are* in compliance with REUSE Specification 3.3&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ git log | head&lt;br /&gt;
commit fd844016efa29f34b97ea59aa6dc575bf21f8916&lt;br /&gt;
Author: Michael Altfield &amp;lt;michael@michaelaltfield.net&amp;gt;&lt;br /&gt;
Date:   Tue Apr 28 18:32:21 2026 -0500&lt;br /&gt;
&lt;br /&gt;
	updated the README with new license info&lt;br /&gt;
    &lt;br /&gt;
	TODO: see if I can get a CI process to automatically generate a SPDX BOM&lt;br /&gt;
&lt;br /&gt;
commit e4ece950b29294681a435e3239777390e417b274&lt;br /&gt;
Author: Michael Altfield &amp;lt;michael@michaelaltfield.net&amp;gt;&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ &lt;br /&gt;
&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ reuse --version&lt;br /&gt;
reuse, version 6.2.0&lt;br /&gt;
&lt;br /&gt;
This program is free software: you can redistribute it and/or modify it under&lt;br /&gt;
the terms of the GNU General Public License as published by the Free Software&lt;br /&gt;
Foundation, either version 3 of the License, or (at your option) any later&lt;br /&gt;
version.&lt;br /&gt;
&lt;br /&gt;
This program is distributed in the hope that it will be useful, but WITHOUT&lt;br /&gt;
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS&lt;br /&gt;
FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.&lt;br /&gt;
&lt;br /&gt;
You should have received a copy of the GNU General Public License along with&lt;br /&gt;
this program. If not, see &amp;lt;https://www.gnu.org/licenses/&amp;gt;.&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ &lt;br /&gt;
&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ reuse lint&lt;br /&gt;
# SUMMARY&lt;br /&gt;
&lt;br /&gt;
* Bad licenses: 0&lt;br /&gt;
* Deprecated licenses: 0&lt;br /&gt;
* Licenses without file extension: 0&lt;br /&gt;
* Missing licenses: 0&lt;br /&gt;
* Unused licenses: 0&lt;br /&gt;
* Used licenses: AGPL-3.0-only, CC-BY-SA-4.0, CERN-OHL-S-2.0&lt;br /&gt;
* Read errors: 0&lt;br /&gt;
* Invalid SPDX License Expressions: 0&lt;br /&gt;
* Files with copyright information: 52 / 52&lt;br /&gt;
* Files with license information: 52 / 52&lt;br /&gt;
&lt;br /&gt;
Congratulations! Your project is compliant with version 3.3 of the REUSE Specification :-)&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# so that means that, if I wanted to build a spdx bom (one file that lists every copyright &amp;amp; license of every file in the repo, by following the REUSE.toml file&#039;s spec) using a CI job on-push, I would have to download some sketch code and then give it permission to modify the repo&#039;s contents. That&#039;s a problem&lt;br /&gt;
## Eco-Libre isn&#039;t a huge security risk, but the first thing that comes to mind is our &amp;quot;donate to us&amp;quot; info in the docs. If someone did a Remote Code Execution (the vuln opened by the fact that pip is vulnerable to a MITM attack when it downloads software because it isn&#039;t cryptographically signed – like with gpg as apt has done for decades), then an attacker could swap any of our docs as they please on-build – including changing our bitcoin address. Or URL to the &amp;quot;donate&amp;quot; page&lt;br /&gt;
## It&#039;s also concieveable that it would tell someone to build something that&#039;s obviously very unsafe. And, for heavy machinerary, that could be very bad.&lt;br /&gt;
## threfore, I guess we&#039;ll just skip this nice-to-have. It should be enough to just link them to the spec and the toml file&lt;br /&gt;
# TODO: apply these license changes to some repo (probably life-line) and then update this thead https://forums.ohwr.org/t/possible-to-triple-license-cern-ohl-s-2-0-agpl-3-0-cc-by-sa-4-0/849882/9&lt;br /&gt;
# TODO: write an article about this on our website, explaining our rationale, how to add it to a repo, and an example (eg life-line but probably create an article-specific repo with some eco-libre internal &amp;amp; also external hardware files plus some content in other licenses)&lt;br /&gt;
&lt;br /&gt;
= 2026-04-26 =&lt;br /&gt;
# I started working on writing a privacy policy for wiki.eco-lbre.org&lt;br /&gt;
# I wrote one years ago for OSE. editing history suggests I finished that in Nov 2018 https://wiki.opensourceecology.org/index.php?title=Media-wiki:Privacy_policy&amp;amp;action=history&lt;br /&gt;
# I largely copied it from the Creative Commons Privacy Policy, and I know Marcin made some (very non-gdpr-compliant) changes to it since then (in 2024)&lt;br /&gt;
# so I did diff of the current privacy policy on CC&#039;s website and OSE&#039;s; they had very little in common! https://creativecommons.org/privacy/&lt;br /&gt;
# it looks like CC updated their Privacy Policy in Dec 2019, so unfortuantly about a year after I did my work with it, they changed it almost completely&lt;br /&gt;
# so I&#039;m just going to start fresh with this, and make changes I think necessary&lt;br /&gt;
# I struggled to find the ToS page. It didn&#039;t appear on the special list of  long pages, and nothign returend for a search of &amp;quot;terms of service&amp;quot; – I guess because it&#039;s in the Eco-Libre namespace? I had to search my logs to find it https://wiki.eco-libre.org/wiki/Eco-Libre:Terms_of_Service&lt;br /&gt;
# I think I should change the link in the bottom-left footer from &amp;quot;Privacy Policy&amp;quot; to &amp;quot;Terms of Service&amp;quot; – since the PP is one of the ToS (and not the other way around)&lt;br /&gt;
## here&#039;s the docs on how to change the links in the footer https://www.mediawiki.org/wiki/Manual:Footer&lt;br /&gt;
## I was able to do this by updating the following two pages (one is the hyperlink text and one is the hyperlink article destination)&lt;br /&gt;
### https://wiki.eco-libre.org/wiki/MediaWiki:Privacypage&lt;br /&gt;
### https://wiki.eco-libre.org/wiki/MediaWiki:Privacy&lt;br /&gt;
# I created the Privacy Policy from the CC one, cleaned up the syntax and did my best to replace all the relevant CC stuff to EL https://wiki.eco-libre.org/wiki/Eco-Libre:Privacy_policy&lt;br /&gt;
# the privacy policy references a CoC (Code of Conduct). Ugh, I guess we need one of those too..&lt;br /&gt;
## I wonder if we can say &amp;quot;you must wash your hands with soap and water&amp;quot; and &amp;quot;you must take b12 if you&#039;re vegan&amp;quot; in the CoC. Or is that *another* agreement?&lt;br /&gt;
## probably we should make some CoC that applies to in-person and remote users *and* a separate agreement with that sort of thing, only for live-in guests (maybe call it a &amp;quot;Housing Agreeemnt&amp;quot; or something)&lt;br /&gt;
## here&#039;s the rules from veganism.social&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
	Rule #1No speciesism, animal abuse, carnists, omnivores, vegetarians, or other non-vegans&lt;br /&gt;
	Rule #2Sexually explicit or violent media must be marked as sensitive when posting&lt;br /&gt;
	Rule #3No racism, sexism, homophobia, transphobia, xenophobia, fatphobia, or casteism&lt;br /&gt;
	Rule #4No incitement of violence or promotion of violent ideologies&lt;br /&gt;
	Rule #5No harassment or doxxing of other users&lt;br /&gt;
	Rule #6Do not share intentionally false or misleading information&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## here&#039;s mastodon.energy&#039;s&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
1. Be Nice&lt;br /&gt;
2. Tell the Truth&lt;br /&gt;
3. Be Ethical&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## here&#039;s chaos.social, which is where we have our mastodon now&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Rules&lt;br /&gt;
&lt;br /&gt;
We expect users on chaos.social to adhere to the following rules:&lt;br /&gt;
&lt;br /&gt;
	No content condoning or advocating for the oppression of members of marginalised groups, or general discrimination of groups based on characteristics like gender, race, disabilities, nationality, education, religion etc.&lt;br /&gt;
	No harassment, stalking, mobbing, deadnaming, misgendering, contacting users who have made it clear they do not wish to be contacted.&lt;br /&gt;
	Obviously: no content that is illegal in Germany, no actions intended to damage this instance (performance, reputation, security).&lt;br /&gt;
	No right or alt-right bullshit, Nazi content, conspiracy narratives.&lt;br /&gt;
	No automated accounts (unless approved by the moderators). This includes bots, crossposters, feedposters etc.&lt;br /&gt;
	When posting to the local timeline, provide Content Warnings for violence, sexually explicit content, death/disease, and politics, particularly when negative or controversial (those are the larger categories, a CW might be something like “uspol, elections”).&lt;br /&gt;
	When posting to the local timeline, provide image descriptions.&lt;br /&gt;
	Provide credit for creative works that are not your own. That includes marking AI generated content clearly as such.&lt;br /&gt;
&lt;br /&gt;
Clarification: You post to the local timeline when you give your post “public” visibility. If you don’t want to follow local timeline rules, you can post with visibility “quiet public” (which used to be called “unlisted”) – posts will still be visible to everybody (your followers and everybody else), they just won’t get shown on the local and federated timelines. Boosts also do not appear on the local timeline.&lt;br /&gt;
&lt;br /&gt;
Note that the instance is also subject to our terms and privacy policy.&lt;br /&gt;
Best practices&lt;br /&gt;
&lt;br /&gt;
We ask users on chaos.social to keep the following guidelines in mind, in order to foster a considerate and accessible atmosphere. Forgetting about them is not as serious as breaking the instance rules, but repeated malicious unwillingness to follow the best practices will be considered just like breaking a rule.&lt;br /&gt;
&lt;br /&gt;
	Use content warnings liberally, especially for topics that are potentially disturbing or controversial, or that make life harder for people struggling with addiction or trauma.&lt;br /&gt;
	Don’t be a reply guy – uninvited comments about another user’s personal choices, lifestyle or family are strongly discouraged and may be considered harassment.&lt;br /&gt;
	In discussions, please remain civil, do not insult the people you’re talking to. Don’t escalate.&lt;br /&gt;
&lt;br /&gt;
Enforcement&lt;br /&gt;
&lt;br /&gt;
Rules are only worth as much as their enforcement, so here is what you can expect from the chaos.social moderators (we will publish our moderation guidelines in the future, but here’s the short version):&lt;br /&gt;
&lt;br /&gt;
Breaking these rules can get you kicked off the instance, though unless you’re behaving in bad faith, we will give you several warnings first. Going against the Best Practices can also get you kicked off the instance, but you have to really persistently act against them (and at that point, why are you on chaos.social?).&lt;br /&gt;
&lt;br /&gt;
Please report behaviour that bothers you. We will keep your report confidential.&lt;br /&gt;
&lt;br /&gt;
We run this instance in our spare time, so we can’t respond instantly. We try to react to all reports within a day, but please allow for delays. You can always contact us us in private if you have concerns about moderation. We will not comment in public about individual moderation cases.&lt;br /&gt;
Ultimately,&lt;br /&gt;
&lt;br /&gt;
we (@leah and @rixx) are maintaining this instance on our spare time, hardware and nerves. Don’t push either of those.&lt;br /&gt;
&lt;br /&gt;
The rules are licensed under CC-BY-SA by chaos.social e.V.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
### and this one explicilty says it&#039;s CC-BY-SA, so that&#039;s cool.&lt;br /&gt;
## I guess we&#039;ll copy chaos.socials&#039; since it&#039;s already copyleft&lt;br /&gt;
## ok, here&#039;s what I came-up with&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
By using this website, you agree to the following Code of Conduct:&lt;br /&gt;
&lt;br /&gt;
# Only submit content for which you have the right to submit it under the terms of our copyleft licensing (it must either be created in whole or in part by you or already licensed under a comparable copyleft)&lt;br /&gt;
# No AI content! This is a violation of rule #1.&lt;br /&gt;
# No content condoning or advocating for the oppression of members of marginalised groups, or general discrimination of groups based on characteristics like species, gender, race, disabilities, nationality, education, religion etc.&lt;br /&gt;
# No harassment, stalking, mobbing, deadnaming, misgendering, contacting users who have made it clear they do not wish to be contacted.&lt;br /&gt;
# No content that is illegal in Germany or Ecuador, no actions intended to damage this instance (performance, reputation, security).&lt;br /&gt;
# No pro-fascist or pro-Nazi content&lt;br /&gt;
# Post Content Warnings for violence, sexually explicit content, death and/or disease&lt;br /&gt;
# Whenever possible, provide image descriptions for visually impaired readers&lt;br /&gt;
# No misinformation or disinformaton&lt;br /&gt;
# Provide attribution (credit) for works that are not your own. This should include a name of the original copyright holder and a link to the source.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# now we have a CLA (Community License Agreement), ToS (Terms of Service), PP (Privacy Policy), and CoC (Code of Conduct)&lt;br /&gt;
## so I think we still have just 2 agreeements missing&lt;br /&gt;
### Public Data Agreement&lt;br /&gt;
### In-House Volunteer Agreement&lt;br /&gt;
# I had previously drafted the Public Data Agreeement as followes&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
1. I understand that Eco-Libre will publish all of my work publicly on their website&lt;br /&gt;
2. I understand that, because my work is licensed openly, I cannot request it to be taken down from the Internet&lt;br /&gt;
3. I understand that I have the right to use an alias, so that all of my work can be attributed to an anonymous profile with no PII (publicly identifiable information).&lt;br /&gt;
4. I understand that, if I wish to use an anonymous identity for my public contributions, then I should not use my real name in this application&lt;br /&gt;
5. I understand that currently my name is set to XXXX, and this is the name that will be publicly listed on Eco-Libre&#039;s website associated with all of my contributions&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## I&#039;m actually not fully sure that&#039;s necessary. The PP from CC had a clause&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Eco-Libre Volunteers.&lt;br /&gt;
&lt;br /&gt;
o In connection with you Eco-Libre Volunteer application, we may provide your information to the individuals you’ve selected to vouch for you, and with those reviewing your application, including the Membership Council whose members include people not employed by Eco-Libre and who are located in various countries around the world.&lt;br /&gt;
&lt;br /&gt;
o If you vouch for someone’s application to the Eco-Libre Volunteer program, your information will be shared with those reviewing the application, including the Membership Council, and if you provide a positive vouching statement, that statement will be shared with the applicant if and when they are admitted for membership.&lt;br /&gt;
&lt;br /&gt;
o Once you are an Eco-Libre Volunteer, we may provide you with a public profile page, pre-populated with certain information you provided in your application such as your name, areas of interest, images or other content you upload, which will be publicly displayed to anyone who visits the site. &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## I added a paragraph&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
o   As an Eco-Libre Volunteer, all of your Contributions will be licensed under a copyleft license, and published publicly.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## well, I guess this satisfies the legal requirements, but I do want to make the pseudonym stuff more clear. But I apparently wrote that to go on the application itself. Currently our application process is non-existant: the user just sends and email, we have a call, and we figure it out. I did just add some docs to sign to that process, but we need a more streamlined process: a form&lt;br /&gt;
## it&#039;s on our TODO list to review some wordpress plugins that we can use for building an application process. eventually *that&#039;s* where this text should be copied, and it should reference things like our official Privacy Policy&lt;br /&gt;
# the other thing was our &amp;quot; In-House Volunteer Agreement&amp;quot; which is *really* premature, as we don&#039;t even have housing yet. Nonetheless, I drafted this&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
1. I am at least 15 years old&lt;br /&gt;
2. I sincerely want live a sustainable lifestyle and work on developing tools to help others live sustainably. I understand that volunteering at Eco-Libre is an active experience, not a cheap vacation. &lt;br /&gt;
3. I am ready to participate in the community and share in the daily routine of my hosts, while respecting their living conditions and boundaries.&lt;br /&gt;
4. I will contribute my time to the community the agreed-upon number of hours per week.&lt;br /&gt;
5. I am willing to adapt to a lifestyle that may be different from mine. I will make known to the community any pertinent health conditions (disabilities, addictions...) beforehand.&lt;br /&gt;
6. I have insurance that will cover me for accidents, illness, and liability during my stay. I am aware that Eco-Libre cannot be held responsible for damages and / or losses linked to my stay.&lt;br /&gt;
7. I will prevent the spread of disease by washing my hands with soap and water after using the toilet and before preparing meals&lt;br /&gt;
8. I will only purchase vegan goods (derived from non-animal sources) during my time at Eco-Libre in accordance with the community values of ecological sustainability.&lt;br /&gt;
9. I will supplement my diet by taking vitamin B12&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# I also think that should be included in the online volunteer application form. And probably physically signed by folks who are going to actually come to Ecudaor. But we&#039;re not there yet...&lt;br /&gt;
# anyway, I think we&#039;ve finally satisifed the requrements of (and finished the configuration of) ConfirmAccount!&lt;br /&gt;
# TODO: finish enabling &amp;amp; configuring wiki extensions: DeleteBatch, SmiteSpam, UserMerge, Widgets&lt;br /&gt;
&lt;br /&gt;
= 2026-04-24 =&lt;br /&gt;
# someone answered my &amp;quot;how do I license kdnelive files&amp;quot; here https://opensource.stackexchange.com/a/15747/30915&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
It sounds like your desired outcome is that copies of your mp4 can only be distributed while also sharing the kdenlive source files. You&#039;re correct that CC ShareAlike terms won&#039;t do this. ShareAlike requires that all downstream works that reuse the work be shareable under the same kind of ShareAlike license, but it doesn&#039;t require redistributors to share the underlying source code.&lt;br /&gt;
&lt;br /&gt;
If you do want to require source to accompany your work, this requirement differs from the desires of many artists who choose a CC license: they want their song or image to be shared around without having to be followed by the underlying sound-editor archive or photo-editor layer file. If that actually is what you want, then the GPL is a sensible choice for such a strong requirement, and it is perfectly applicable to non-software works.&lt;br /&gt;
&lt;br /&gt;
 * https://www.gnu.org/licenses/gpl-faq.html#GPLOtherThanSoftware&lt;br /&gt;
&lt;br /&gt;
If you don&#039;t want to impose this requirement, then I think CC BY-SA is still a reasonable choice for the underlying &amp;quot;source code&amp;quot; of your video. The output mp4 is legally derivative of your kdenlive files, so CC BY-SA will ensure that all mp4 files made from (derivatives of) your kdenlive source must also be freely shareable under CC BY-SA, but will not impose source disclosure. Future derivatives of the source kdenlive files will, similarly, have to remain under CC BY-SA even as others change them (but they can be kept secret even when built into a CC BY-SA mp4).&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# I half-decided we should then license all artwork (images made in gimp or inkscape, videos made in kdenlive) under GPL, so the sources would need to be public&lt;br /&gt;
# then I started thinking, hey, maybe our documentation should also be GPL, since sphinx and reST are like sources for PDFs they produce&lt;br /&gt;
# then I realized what that would actually mean. Say we make a video showing the construction of a launch-nest. Say the sources for that video include a camera that was mounted to a post and recording for 8 hours every day over the period of 3 months. Maybe five of them, for differet angles. Once we finally finish producing the video, I&#039;m going to be super relieved when we can delete that enormous source footage. The kdenlive file itself would be fine to release; it&#039;s small. But would we then be forced to indefinitely save and distribute the source video footage, even if it&#039;s a combined 3 TB of 1,000 video files, for a 1 GB finally-rendered mp4?&lt;br /&gt;
# inkscape is easy; the svg literally *is* the source file&lt;br /&gt;
# gimp is somewhere in-between. I typically hang-onto the source images used to make a feature image (sometimes brands, or screenshots or stock copyleft images of forests or whatever) for some number of months. eventually they get deleted. I would love to upload the gimp files, but those might be broken without the source images. Or they just would be too enormous and break git over time.&lt;br /&gt;
# also, if we can&#039;t do it, we can&#039;t expect downstream to do it. imagine we work with some youtuber and demand that the must forever store and publish the sources in order to do a video with us? I think 99% would turn us down, because they know they can&#039;t do that. It&#039;s too expensive and unrealistic.&lt;br /&gt;
# due to this very real logistical problem, I think we should just keep CC BY-SA on media files. We can go above-and-beyond that license and provide kdenlive and gimp files *sometimes*, but we shouldn&#039;t mandate it by using GPL.&lt;br /&gt;
# and, honestly, if downstream just licenses CC BY-SA, that lets us cut that up and use it in future videos. That&#039;s good enough. And appropriate for the (expensive-to-store) medium.&lt;br /&gt;
# ...&lt;br /&gt;
# revisting the DEB5 system, I found an example on another project that I maintain: buskill https://salsa.debian.org/debian/buskill/-/blob/master/debian/copyright?ref_type=heads&lt;br /&gt;
## so our debian maintainer built this. he put a file &#039;copyright&#039; in the root with this contents&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/&lt;br /&gt;
Source: https://github.com/BusKill/buskill-app&lt;br /&gt;
Upstream-Name: buskill&lt;br /&gt;
Upstream-Contact: Michael Altfield &amp;lt;michael@michaelaltfield.net&amp;gt;&lt;br /&gt;
Files:&lt;br /&gt;
 *&lt;br /&gt;
Copyright:&lt;br /&gt;
 2020-2022 Michael Altfield &amp;lt;michael@michaelaltfield.net&amp;gt;&lt;br /&gt;
 2020-2021 Steven Johnson &amp;lt;steven.j2019@protonmail.com&amp;gt;&lt;br /&gt;
License: GPL-3+&lt;br /&gt;
Files:&lt;br /&gt;
 src/fonts/*&lt;br /&gt;
Copyright:&lt;br /&gt;
 2015 Google&lt;br /&gt;
License: Apache-2.0&lt;br /&gt;
 Licensed under the Apache License, Version 2.0 (the &amp;quot;License&amp;quot;);&lt;br /&gt;
 you may not use this file except in compliance with the License.&lt;br /&gt;
 You may obtain a copy of the License at&lt;br /&gt;
 ․&lt;br /&gt;
	https://www.apache.org/licenses/LICENSE-2.0&lt;br /&gt;
 ․&lt;br /&gt;
 Unless required by applicable law or agreed to in writing, software&lt;br /&gt;
 distributed under the License is distributed on an &amp;quot;AS IS&amp;quot; BASIS,&lt;br /&gt;
 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.&lt;br /&gt;
 See the License for the specific language governing permissions and&lt;br /&gt;
 limitations under the License.&lt;br /&gt;
Comment:&lt;br /&gt;
 On Debian systems, the complete text of the Apache License&lt;br /&gt;
 version 2 can be found in &amp;quot;/usr/share/common-licenses/Apache-2.0&amp;quot;.&lt;br /&gt;
Files:&lt;br /&gt;
 src/packages/garden/navigationdrawer/*&lt;br /&gt;
Copyright:&lt;br /&gt;
 2013 Alexander Taylor&lt;br /&gt;
License: MIT&lt;br /&gt;
Files:&lt;br /&gt;
 src/packages/garden/progressspinner/*&lt;br /&gt;
Copyright:&lt;br /&gt;
 2015 Ryan Pessa &amp;lt;dkived@gmail.com&amp;gt;&lt;br /&gt;
License: MIT&lt;br /&gt;
Files:&lt;br /&gt;
 debian/*&lt;br /&gt;
Copyright:&lt;br /&gt;
 2022-2026 Francois Marier &amp;lt;francois@debian.org&amp;gt;&lt;br /&gt;
License: GPL-3+&lt;br /&gt;
License: GPL-3+&lt;br /&gt;
 This package is free software; you can redistribute it and/or modify&lt;br /&gt;
 it under the terms of the GNU General Public License as published by&lt;br /&gt;
 the Free Software Foundation; either version 3 of the License, or&lt;br /&gt;
 (at your option) any later version.&lt;br /&gt;
 .&lt;br /&gt;
 This package is distributed in the hope that it will be useful,&lt;br /&gt;
 but WITHOUT ANY WARRANTY; without even the implied warranty of&lt;br /&gt;
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the&lt;br /&gt;
 GNU General Public License for more details.&lt;br /&gt;
 .&lt;br /&gt;
 You should have received a copy of the GNU General Public License&lt;br /&gt;
 along with this program. If not, see &amp;lt;https://www.gnu.org/licenses/&amp;gt;&lt;br /&gt;
Comment:&lt;br /&gt;
 On Debian systems, the complete text of the GNU General&lt;br /&gt;
 Public License version 3 can be found in &amp;quot;/usr/share/common-licenses/GPL-3&amp;quot;.&lt;br /&gt;
License: MIT&lt;br /&gt;
 Permission is hereby granted, free of charge, to any person obtaining a copy&lt;br /&gt;
 of this software and associated documentation files (the &amp;quot;Software&amp;quot;), to deal&lt;br /&gt;
&lt;br /&gt;
 in the Software without restriction, including without limitation the rights&lt;br /&gt;
 to use, copy, modify, merge, publish, distribute, sublicense, and/or sell&lt;br /&gt;
 copies of the Software, and to permit persons to whom the Software is&lt;br /&gt;
 furnished to do so, subject to the following conditions:&lt;br /&gt;
 .&lt;br /&gt;
 The above copyright notice and this permission notice shall be included in&lt;br /&gt;
 all copies or substantial portions of the Software.&lt;br /&gt;
 .&lt;br /&gt;
 THE SOFTWARE IS PROVIDED &amp;quot;AS IS&amp;quot;, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR&lt;br /&gt;
 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,&lt;br /&gt;
 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE&lt;br /&gt;
 AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER&lt;br /&gt;
 LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,&lt;br /&gt;
 OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN&lt;br /&gt;
 THE SOFTWARE.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# I spent some time trying to craft a &#039;copyright&#039; file that we could use for Eco-Libre&lt;br /&gt;
## one thing that bothers me is that I have so many &#039;Files&#039; stanzas – one for each programming language. I wish I could do something like&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Files:&lt;br /&gt;
 *.py|*.php|*.c&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## there are no examples where a single file stanza has many file paths, but the text of the standard does say they are whitespace-delimited (not pipe-delimited, like I naturally think)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
4. File syntax&lt;br /&gt;
...&lt;br /&gt;
4.2. Whitespace-separated lists&lt;br /&gt;
&lt;br /&gt;
Field values defined as whitespace-separated lists may be on one line or many. Values in the list are separated by one or more whitespace characters (space, tab, or newline). For example, the Files field contains a whitespace-separated list of filename patterns.&lt;br /&gt;
...&lt;br /&gt;
6.9. Files&lt;br /&gt;
&lt;br /&gt;
Whitespace-separated list: list of patterns indicating files covered by the license and copyright specified in this stanza.&lt;br /&gt;
&lt;br /&gt;
Filename patterns in the Files field are specified using a simplified shell glob syntax. Patterns are separated by whitespace. &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## let&#039;s see if I can find any example package that use this whitespace, so I don&#039;t fuck it up&lt;br /&gt;
## looks like debian has a *ton* of these already available on my system&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
user@disp4360:~$ ls /usr/share/doc/*/copyright | head&lt;br /&gt;
/usr/share/doc/acl/copyright&lt;br /&gt;
/usr/share/doc/adduser/copyright&lt;br /&gt;
/usr/share/doc/adwaita-icon-theme/copyright&lt;br /&gt;
/usr/share/doc/alsa-topology-conf/copyright&lt;br /&gt;
/usr/share/doc/alsa-ucm-conf/copyright&lt;br /&gt;
/usr/share/doc/alsa-utils/copyright&lt;br /&gt;
/usr/share/doc/amd64-microcode/copyright&lt;br /&gt;
/usr/share/doc/anacron/copyright&lt;br /&gt;
/usr/share/doc/ansible/copyright&lt;br /&gt;
/usr/share/doc/ansible-core/copyright&lt;br /&gt;
user@disp4360:~$ &lt;br /&gt;
&lt;br /&gt;
user@disp4360:~$ ls /usr/share/doc/*/copyright | wc -l&lt;br /&gt;
2798&lt;br /&gt;
user@disp4360:~$ &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## the very first one has a great example&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
user@disp4360:~$ cat /usr/share/doc/acl/copyright&lt;br /&gt;
Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/&lt;br /&gt;
&lt;br /&gt;
Files:&lt;br /&gt;
 *&lt;br /&gt;
Copyright:&lt;br /&gt;
 Copyright © 2000-2008 Silicon Graphics, Inc.&lt;br /&gt;
 Copyright © 1999-2001,2007-2009 Andreas Gruenbacher&lt;br /&gt;
License: GPL-2+&lt;br /&gt;
 This program is free software: you can redistribute it and/or modify it&lt;br /&gt;
 under the terms of the GNU General Public License as published by&lt;br /&gt;
 the Free Software Foundation, either version 2 of the License, or&lt;br /&gt;
 (at your option) any later version.&lt;br /&gt;
 .&lt;br /&gt;
 This program is distributed in the hope that it will be useful,&lt;br /&gt;
 but WITHOUT ANY WARRANTY; without even the implied warranty of&lt;br /&gt;
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the&lt;br /&gt;
 GNU General Public License for more details.&lt;br /&gt;
 .&lt;br /&gt;
 You should have received a copy of the GNU General Public License&lt;br /&gt;
 along with this program.  If not, see &amp;lt;https://www.gnu.org/licenses/&amp;gt;.&lt;br /&gt;
Comment:&lt;br /&gt;
 On Debian systems, the full text of the GNU General Public License&lt;br /&gt;
 can be found in &#039;/usr/share/common-licenses/GPL-2&#039;.&lt;br /&gt;
&lt;br /&gt;
Files:&lt;br /&gt;
 exports&lt;br /&gt;
 include/*.h&lt;br /&gt;
 libacl/*.c&lt;br /&gt;
 libacl/*.h&lt;br /&gt;
 libmisc/*.c&lt;br /&gt;
 tools/do_set.*&lt;br /&gt;
 tools/parse.*&lt;br /&gt;
 tools/sequence.c&lt;br /&gt;
 tools/setfacl.c&lt;br /&gt;
 tools/user_group.h&lt;br /&gt;
Copyright:&lt;br /&gt;
 Copyright © 2001-2002 Silicon Graphics, Inc.&lt;br /&gt;
 Copyright © 1999-2003,2007,2009,2011 Andreas Gruenbacher&lt;br /&gt;
License: LGPL-2+&lt;br /&gt;
 This program is free software: you can redistribute it and/or modify it&lt;br /&gt;
 under the terms of the GNU Lesser General Public License as published by&lt;br /&gt;
 the Free Software Foundation, either version 2.1 of the License, or&lt;br /&gt;
 (at your option) any later version.&lt;br /&gt;
 .&lt;br /&gt;
 This program is distributed in the hope that it will be useful,&lt;br /&gt;
 but WITHOUT ANY WARRANTY; without even the implied warranty of&lt;br /&gt;
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the&lt;br /&gt;
 GNU Lesser General Public License for more details.&lt;br /&gt;
 .&lt;br /&gt;
 You should have received a copy of the GNU Lesser General Public License&lt;br /&gt;
 along with this program.  If not, see &amp;lt;https://www.gnu.org/licenses/&amp;gt;.&lt;br /&gt;
Comment:&lt;br /&gt;
 On Debian systems, the full text of the GNU Lesser General Public License&lt;br /&gt;
 can be found in &#039;/usr/share/common-licenses/LGPL-2.1&#039;.&lt;br /&gt;
user@disp4360:~$ &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# I also found an example where the whitespace was a space, not a newline + space&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
user@disp4360:~$ cat /usr/share/doc/apparmor/copyright &lt;br /&gt;
Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/&lt;br /&gt;
Upstream-Name: AppArmor&lt;br /&gt;
Upstream-Contact: apparmor@lists.ubuntu.com&lt;br /&gt;
Source: https://launchpad.net/apparmor&lt;br /&gt;
&lt;br /&gt;
Files: *&lt;br /&gt;
Copyright: 1998-2010 Novell/SuSE/Immunix&lt;br /&gt;
		   2008-2014 Canonical Ltd.&lt;br /&gt;
License: GPL-2+&lt;br /&gt;
&lt;br /&gt;
Files: changehat/pam_apparmor/*&lt;br /&gt;
Copyright: 2006 SUSE Linux Products GmbH, Nuernberg, Germany&lt;br /&gt;
		   2002, 2003, 2004 SuSE GmbH Nuernberg, Germany&lt;br /&gt;
		   2002-2006 Novell/SuSE&lt;br /&gt;
		   2010 Canonical Ltd.&lt;br /&gt;
License: BSD-3-clause or GPL-2+&lt;br /&gt;
&lt;br /&gt;
Files: changehat/mod_apparmor/*&lt;br /&gt;
Copyright: 2004-2006 Novell&lt;br /&gt;
		   2014 Canonical Ltd.&lt;br /&gt;
License: LGPL-2.1+&lt;br /&gt;
&lt;br /&gt;
Files: libraries/libapparmor/* parser/libapparmor_re/*&lt;br /&gt;
Copyright: 1999-2008 Novell&lt;br /&gt;
		   2009-2013 Canonical Ltd.&lt;br /&gt;
License: LGPL-2.1+&lt;br /&gt;
&lt;br /&gt;
Files: profiles/apparmor.d/abstractions/mysql&lt;br /&gt;
Copyright: 2002-2006 Novell/SUSE&lt;br /&gt;
		   2013 Christian Boltz&lt;br /&gt;
License: GPL-2&lt;br /&gt;
&lt;br /&gt;
Files: profiles/apparmor.d/usr.sbin.dnsmasq&lt;br /&gt;
Copyright: 2009 John Dong &amp;lt;jdong@ubuntu.com&amp;gt;&lt;br /&gt;
		   2010 Canonical Ltd.&lt;br /&gt;
License: GPL-2&lt;br /&gt;
&lt;br /&gt;
Files: profiles/apparmor.d/sbin.syslog-ng&lt;br /&gt;
Copyright: 2006-2009 Novell/SUSE&lt;br /&gt;
		   2006 Christian Boltz&lt;br /&gt;
		   2010 Canonical Ltd.&lt;br /&gt;
License: GPL-2&lt;br /&gt;
&lt;br /&gt;
Files: profiles/apparmor.d/usr.lib.dovecot.*&lt;br /&gt;
Copyright: 2013 Christian Boltz&lt;br /&gt;
License: GPL-2&lt;br /&gt;
&lt;br /&gt;
Files: profiles/apparmor.d/usr.lib.dovecot.auth&lt;br /&gt;
Copyright: 2013 Christian Boltz&lt;br /&gt;
		   2014 Christian Wittmer&lt;br /&gt;
License: GPL-2&lt;br /&gt;
&lt;br /&gt;
Files: profiles/apparmor.d/usr.lib.dovecot.deliver&lt;br /&gt;
Copyright: 2009 Dulmandakh Sukhbaatar &amp;lt;dulmandakh@gmail.com&amp;gt;&lt;br /&gt;
		   2009-2014 Canonical Ltd.&lt;br /&gt;
		   2011-2013 Christian Boltz&lt;br /&gt;
License: GPL-2&lt;br /&gt;
&lt;br /&gt;
Files: profiles/apparmor.d/usr.lib.dovecot.dovecot-auth&lt;br /&gt;
Copyright: 2009-2013 Canonical Ltd.&lt;br /&gt;
		   2013 Christian Boltz&lt;br /&gt;
License: GPL-2&lt;br /&gt;
&lt;br /&gt;
Files: profiles/apparmor.d/usr.lib.dovecot.imap profiles/apparmor.d/usr.lib.dovecot.pop3&lt;br /&gt;
Copyright: 2009-2010 Canonical Ltd.&lt;br /&gt;
		   2011-2013 Christian Boltz&lt;br /&gt;
License: GPL-2&lt;br /&gt;
&lt;br /&gt;
Files: profiles/apparmor.d/usr.lib.dovecot.imap-login profiles/apparmor.d/usr.lib.dovecot.pop3-login&lt;br /&gt;
Copyright: 2009-2011 Canonical Ltd.&lt;br /&gt;
		   2013 Christian Boltz&lt;br /&gt;
License: GPL-2&lt;br /&gt;
&lt;br /&gt;
Files: profiles/apparmor.d/usr.lib.dovecot.managesieve&lt;br /&gt;
Copyright: 2013 Christian Boltz&lt;br /&gt;
		   2014 Christian Wittmer&lt;br /&gt;
License: GPL-2&lt;br /&gt;
&lt;br /&gt;
Files: profiles/apparmor.d/usr.lib.dovecot.managesieve-login&lt;br /&gt;
Copyright: 2009 Dulmandakh Sukhbaatar &amp;lt;dulmandakh@gmail.com&amp;gt;&lt;br /&gt;
		   2009-2011 Canonical Ltd.&lt;br /&gt;
		   2013 Christian Boltz&lt;br /&gt;
		   2014 Christian Wittmer&lt;br /&gt;
License: GPL-2&lt;br /&gt;
&lt;br /&gt;
Files: profiles/apparmor/profiles/extras/usr.bin.mlmmj-make-ml.sh&lt;br /&gt;
Copyright: 2002-2005 Novell/SUSE&lt;br /&gt;
License: GPL-2&lt;br /&gt;
&lt;br /&gt;
Files: profiles/apparmor/profiles/extras/usr.bin.passwd&lt;br /&gt;
Copyright: 2006 Volker Kuhlmann&lt;br /&gt;
License: GPL-2&lt;br /&gt;
&lt;br /&gt;
Files: debian/*&lt;br /&gt;
Copyright: 2007-2011 Canonical Ltd.&lt;br /&gt;
		   2014-2022 intrigeri&lt;br /&gt;
License: GPL-2&lt;br /&gt;
&lt;br /&gt;
License: BSD-3-clause&lt;br /&gt;
 Redistribution and use in source and binary forms, with or without&lt;br /&gt;
 modification, are permitted provided that the following conditions&lt;br /&gt;
 are met:&lt;br /&gt;
 .&lt;br /&gt;
 1. Redistributions of source code must retain any existing copyright&lt;br /&gt;
	notice, and this entire permission notice in its entirety,&lt;br /&gt;
	including the disclaimer of warranties.&lt;br /&gt;
 .&lt;br /&gt;
 2. Redistributions in binary form must reproduce all prior and current&lt;br /&gt;
	copyright notices, this list of conditions, and the following&lt;br /&gt;
	disclaimer in the documentation and/or other materials provided&lt;br /&gt;
	with the distribution.&lt;br /&gt;
 .&lt;br /&gt;
 3. The name of any author may not be used to endorse or promote&lt;br /&gt;
	products derived from this software without their specific prior&lt;br /&gt;
	written permission.&lt;br /&gt;
&lt;br /&gt;
License: GPL-2&lt;br /&gt;
 This program is free software; you can redistribute it and/or modify&lt;br /&gt;
 it under the terms of the GNU General Public License as published by&lt;br /&gt;
 the Free Software Foundation; version 2 of the License.&lt;br /&gt;
 .&lt;br /&gt;
 This program is distributed in the hope that it will be useful,&lt;br /&gt;
 but WITHOUT ANY WARRANTY; without even the implied warranty of&lt;br /&gt;
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the&lt;br /&gt;
 GNU General Public License for more details.&lt;br /&gt;
 .&lt;br /&gt;
 You should have received a copy of the GNU General Public License along&lt;br /&gt;
 with this program; if not, write to the Free Software Foundation, Inc.,&lt;br /&gt;
 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.&lt;br /&gt;
 .&lt;br /&gt;
 On Debian systems, the complete text of the GNU General&lt;br /&gt;
 Public License can be found in `/usr/share/common-licenses/GPL-2&#039;.&lt;br /&gt;
&lt;br /&gt;
License: GPL-2+&lt;br /&gt;
 This program is free software; you can redistribute it and/or modify&lt;br /&gt;
 it under the terms of the GNU General Public License as published by&lt;br /&gt;
 the Free Software Foundation; either version 2 of the License, or&lt;br /&gt;
 (at your option) any later version.&lt;br /&gt;
 .&lt;br /&gt;
 This program is distributed in the hope that it will be useful,&lt;br /&gt;
 but WITHOUT ANY WARRANTY; without even the implied warranty of&lt;br /&gt;
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the&lt;br /&gt;
 GNU General Public License for more details.&lt;br /&gt;
 .&lt;br /&gt;
 You should have received a copy of the GNU General Public License along&lt;br /&gt;
 with this program; if not, write to the Free Software Foundation, Inc.,&lt;br /&gt;
 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.&lt;br /&gt;
 .&lt;br /&gt;
 On Debian systems, the complete text of the GNU General&lt;br /&gt;
 Public License can be found in `/usr/share/common-licenses/GPL-2&#039;.&lt;br /&gt;
&lt;br /&gt;
License: LGPL-2.1+&lt;br /&gt;
 This library is free software; you can redistribute it and/or&lt;br /&gt;
 modify it under the terms of the GNU Lesser General Public&lt;br /&gt;
 License as published by the Free Software Foundation; either&lt;br /&gt;
 version 2.1 of the License, or (at your option) any later version.&lt;br /&gt;
 .&lt;br /&gt;
 This library is distributed in the hope that it will be useful,&lt;br /&gt;
 but WITHOUT ANY WARRANTY; without even the implied warranty of&lt;br /&gt;
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU&lt;br /&gt;
 Lesser General Public License for more details.&lt;br /&gt;
 .&lt;br /&gt;
 You should have received a copy of the GNU Lesser General Public&lt;br /&gt;
 License along with this library; if not, write to the Free Software&lt;br /&gt;
 Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA&lt;br /&gt;
 .&lt;br /&gt;
 On Debian systems, the complete text of the GNU General&lt;br /&gt;
 Public License can be found in `/usr/share/common-licenses/LGPL-2.1&#039;.&lt;br /&gt;
user@disp4360:~$ &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
## so we already have a &amp;quot;short version&amp;quot; of the license for GPL and CERN. For example&lt;br /&gt;
### GPL&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 This package is free software; you can redistribute it and/or modify&lt;br /&gt;
 it under the terms of the GNU General Public License as published by&lt;br /&gt;
 the Free Software Foundation; either version 3 of the License, or&lt;br /&gt;
 (at your option) any later version.&lt;br /&gt;
 .&lt;br /&gt;
 This package is distributed in the hope that it will be useful,&lt;br /&gt;
 but WITHOUT ANY WARRANTY; without even the implied warranty of&lt;br /&gt;
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the&lt;br /&gt;
 GNU General Public License for more details.&lt;br /&gt;
 .&lt;br /&gt;
 You should have received a copy of the GNU General Public License&lt;br /&gt;
 along with this program. If not, see &amp;lt;https://www.gnu.org/licenses/&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
### CERN&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
You may redistribute and modify this source and make products using it under the terms of the CERN-OHL-S v2 (https://ohwr.org/cern_ohl_s_v2.txt).&lt;br /&gt;
&lt;br /&gt;
This source is distributed WITHOUT ANY EXPRESS OR IMPLIED WARRANTY, INCLUDING OF MERCHANTABILITY, SATISFACTORY QUALITY AND FITNESS FOR A PARTICULAR PURPOSE. Please see the CERN-OHL-S v2 for applicable conditions.&lt;br /&gt;
&lt;br /&gt;
Source location: foundationdevices.com/passport-electronics&lt;br /&gt;
&lt;br /&gt;
As per CERN-OHL-S v2 section 4, should You produce hardware based on this source, You must where practicable and applicable maintain the Source Location visible (1) on the packaging of the hardware, (2) on the circuit board(s) via silkscreen or copper, (3) in any documentation, and (4) on other products you make using this source.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## I was hoping for some sort of equivalent in CC-BY-SA-4.0, but all of these (which were the only ones I found with BY-SA-4.0) had the full text of the license&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
user@disp4360:/usr/share/doc$ grep -irl BY-SA-4.0 /usr/share/doc/*/copyright&lt;br /&gt;
/usr/share/doc/adwaita-icon-theme/copyright&lt;br /&gt;
/usr/share/doc/containerd/copyright&lt;br /&gt;
/usr/share/doc/gimp/copyright&lt;br /&gt;
/usr/share/doc/gimp-data/copyright&lt;br /&gt;
/usr/share/doc/gir1.2-gtk-3.0/copyright&lt;br /&gt;
/usr/share/doc/gtk-update-icon-cache/copyright&lt;br /&gt;
/usr/share/doc/libadwaita-1-0/copyright&lt;br /&gt;
/usr/share/doc/libgimp2.0/copyright&lt;br /&gt;
/usr/share/doc/libgtk-3-0/copyright&lt;br /&gt;
/usr/share/doc/libgtk-3-bin/copyright&lt;br /&gt;
/usr/share/doc/libgtk-3-common/copyright&lt;br /&gt;
/usr/share/doc/libmd4c0/copyright&lt;br /&gt;
/usr/share/doc/libnftables1/copyright&lt;br /&gt;
/usr/share/doc/libwildmidi2/copyright&lt;br /&gt;
/usr/share/doc/mythes-en-us/copyright&lt;br /&gt;
/usr/share/doc/nftables/copyright&lt;br /&gt;
/usr/share/doc/syncthing/copyright&lt;br /&gt;
user@disp4360:/usr/share/doc$ &lt;br /&gt;
user@disp4360:/usr/share/doc$ cat /usr/share/doc/libadwaita-1-0/copyright&lt;br /&gt;
Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/&lt;br /&gt;
Upstream-Name: libadwaita&lt;br /&gt;
Source: https://gitlab.gnome.org/GNOME/libadwaita&lt;br /&gt;
Files-Excluded: doc/libadwaita-1&lt;br /&gt;
Comment: Let&#039;s build the docs from source&lt;br /&gt;
&lt;br /&gt;
Files: *&lt;br /&gt;
Copyright: 2019, Alexander Mikhaylenko &amp;lt;exalm7659@gmail.com&amp;gt;&lt;br /&gt;
  2018, 2019, Zander Brown &amp;lt;zbrown@gnome.org&amp;gt;&lt;br /&gt;
  2017-2021, Purism SPC&lt;br /&gt;
  2016, Endless Mobile Inc.&lt;br /&gt;
  2013, 2019, Red Hat, Inc.&lt;br /&gt;
  1995-1997, Peter Mattis, Spencer Kimball and Josh MacDonald&lt;br /&gt;
  2021, GNOME Foundation&lt;br /&gt;
  2021, Manuel Genovés&lt;br /&gt;
  2021, Nahuel Gomez Castro&lt;br /&gt;
  2021, Maximiliano Sandoval&lt;br /&gt;
  2011, Intel Corporation&lt;br /&gt;
License: LGPL-2.1+&lt;br /&gt;
&lt;br /&gt;
Files: debian/*&lt;br /&gt;
Copyright: 2021, Guido Günther &amp;lt;agx@sigxcpu.org&amp;gt;&lt;br /&gt;
License: GPL-3+&lt;br /&gt;
&lt;br /&gt;
Files:&lt;br /&gt;
 doc/libadwaita-1/*.html&lt;br /&gt;
 doc/libadwaita-1/main.js&lt;br /&gt;
Copyright:&lt;br /&gt;
 2021, GNOME Foundation&lt;br /&gt;
License: Apache-2.0 or GPL-3+&lt;br /&gt;
&lt;br /&gt;
Files:&lt;br /&gt;
 demo/data/org.gnome.Adwaita1.Demo.metainfo.xml.in.in&lt;br /&gt;
Copyright: none&lt;br /&gt;
License: CC0-1.0&lt;br /&gt;
&lt;br /&gt;
Files:&lt;br /&gt;
 demo/data/org.gnome.Adwaita1.Demo.Source.svg&lt;br /&gt;
Copyright:&lt;br /&gt;
 GNOME Design Team&lt;br /&gt;
License: CC-BY-SA-4.0&lt;br /&gt;
&lt;br /&gt;
License: Apache-2.0&lt;br /&gt;
 SPDX license identifier Apache-2.0.&lt;br /&gt;
 .&lt;br /&gt;
 Licensed under the Apache License, Version 2.0 (the &amp;quot;License&amp;quot;);&lt;br /&gt;
 you may not use this file except in compliance with the License.&lt;br /&gt;
 You may obtain a copy of the License at&lt;br /&gt;
 .&lt;br /&gt;
	  http://www.apache.org/licenses/LICENSE-2.0&lt;br /&gt;
 .&lt;br /&gt;
 Unless required by applicable law or agreed to in writing, software&lt;br /&gt;
 distributed under the License is distributed on an &amp;quot;AS IS&amp;quot; BASIS,&lt;br /&gt;
 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.&lt;br /&gt;
 See the License for the specific language governing permissions and&lt;br /&gt;
 limitations under the License.&lt;br /&gt;
 .&lt;br /&gt;
 On Debian systems, a copy of the Apache License version 2.0&lt;br /&gt;
 can be found in /usr/share/common-licenses/Apache-2.0.&lt;br /&gt;
&lt;br /&gt;
License: CC0-1.0&lt;br /&gt;
 SPDX license identifier CC0-1.0.&lt;br /&gt;
 .&lt;br /&gt;
 On Debian systems, a copy of the Creative Commons Zero license, version 1.0&lt;br /&gt;
 can be found in /usr/share/common-licenses/CC0-1.0.&lt;br /&gt;
&lt;br /&gt;
License: CC-BY-SA-4.0&lt;br /&gt;
 http://creativecommons.org/licenses/by-sa/4.0/&lt;br /&gt;
 .&lt;br /&gt;
 Attribution-ShareAlike 4.0 International&lt;br /&gt;
 .&lt;br /&gt;
 =======================================================================&lt;br /&gt;
 .&lt;br /&gt;
 Creative Commons Corporation (&amp;quot;Creative Commons&amp;quot;) is not a law firm and&lt;br /&gt;
 does not provide legal services or legal advice. Distribution of&lt;br /&gt;
 Creative Commons public licenses does not create a lawyer-client or&lt;br /&gt;
 other relationship. Creative Commons makes its licenses and related&lt;br /&gt;
 information available on an &amp;quot;as-is&amp;quot; basis. Creative Commons gives no&lt;br /&gt;
 warranties regarding its licenses, any material licensed under their&lt;br /&gt;
 terms and conditions, or any related information. Creative Commons&lt;br /&gt;
 disclaims all liability for damages resulting from their use to the&lt;br /&gt;
 fullest extent possible.&lt;br /&gt;
 .&lt;br /&gt;
 Using Creative Commons Public Licenses&lt;br /&gt;
 .&lt;br /&gt;
 Creative Commons public licenses provide a standard set of terms and&lt;br /&gt;
 conditions that creators and other rights holders may use to share&lt;br /&gt;
 original works of authorship and other material subject to copyright&lt;br /&gt;
 and certain other rights specified in the public license below. The&lt;br /&gt;
 following considerations are for informational purposes only, are not&lt;br /&gt;
 exhaustive, and do not form part of our licenses.&lt;br /&gt;
 .&lt;br /&gt;
	  Considerations for licensors: Our public licenses are&lt;br /&gt;
	  intended for use by those authorized to give the public&lt;br /&gt;
	  permission to use material in ways otherwise restricted by&lt;br /&gt;
	  copyright and certain other rights. Our licenses are&lt;br /&gt;
	  irrevocable. Licensors should read and understand the terms&lt;br /&gt;
	  and conditions of the license they choose before applying it.&lt;br /&gt;
	  Licensors should also secure all rights necessary before&lt;br /&gt;
	  applying our licenses so that the public can reuse the&lt;br /&gt;
	  material as expected. Licensors should clearly mark any&lt;br /&gt;
	  material not subject to the license. This includes other CC-&lt;br /&gt;
	  licensed material, or material used under an exception or&lt;br /&gt;
	  limitation to copyright. More considerations for licensors:&lt;br /&gt;
	  wiki.creativecommons.org/Considerations_for_licensors&lt;br /&gt;
 .&lt;br /&gt;
	  Considerations for the public: By using one of our public&lt;br /&gt;
	  licenses, a licensor grants the public permission to use the&lt;br /&gt;
	  licensed material under specified terms and conditions. If&lt;br /&gt;
	  the licensor&#039;s permission is not necessary for any reason--for&lt;br /&gt;
	  example, because of any applicable exception or limitation to&lt;br /&gt;
	  copyright--then that use is not regulated by the license. Our&lt;br /&gt;
	  licenses grant only permissions under copyright and certain&lt;br /&gt;
	  other rights that a licensor has authority to grant. Use of&lt;br /&gt;
	  the licensed material may still be restricted for other&lt;br /&gt;
	  reasons, including because others have copyright or other&lt;br /&gt;
	  rights in the material. A licensor may make special requests,&lt;br /&gt;
	  such as asking that all changes be marked or described.&lt;br /&gt;
	  Although not required by our licenses, you are encouraged to&lt;br /&gt;
	  respect those requests where reasonable. More_considerations&lt;br /&gt;
	  for the public:&lt;br /&gt;
	  wiki.creativecommons.org/Considerations_for_licensees&lt;br /&gt;
 .&lt;br /&gt;
 =======================================================================&lt;br /&gt;
 .&lt;br /&gt;
 Creative Commons Attribution-ShareAlike 4.0 International Public&lt;br /&gt;
 License&lt;br /&gt;
 .&lt;br /&gt;
 By exercising the Licensed Rights (defined below), You accept and agree&lt;br /&gt;
 to be bound by the terms and conditions of this Creative Commons&lt;br /&gt;
 Attribution-ShareAlike 4.0 International Public License (&amp;quot;Public&lt;br /&gt;
 License&amp;quot;). To the extent this Public License may be interpreted as a&lt;br /&gt;
 contract, You are granted the Licensed Rights in consideration of Your&lt;br /&gt;
 acceptance of these terms and conditions, and the Licensor grants You&lt;br /&gt;
 such rights in consideration of benefits the Licensor receives from&lt;br /&gt;
 making the Licensed Material available under these terms and&lt;br /&gt;
 conditions.&lt;br /&gt;
 .&lt;br /&gt;
 .&lt;br /&gt;
 Section 1 -- Definitions.&lt;br /&gt;
 .&lt;br /&gt;
   a. Adapted Material means material subject to Copyright and Similar&lt;br /&gt;
	  Rights that is derived from or based upon the Licensed Material&lt;br /&gt;
	  and in which the Licensed Material is translated, altered,&lt;br /&gt;
	  arranged, transformed, or otherwise modified in a manner requiring&lt;br /&gt;
	  permission under the Copyright and Similar Rights held by the&lt;br /&gt;
	  Licensor. For purposes of this Public License, where the Licensed&lt;br /&gt;
	  Material is a musical work, performance, or sound recording,&lt;br /&gt;
	  Adapted Material is always produced where the Licensed Material is&lt;br /&gt;
	  synched in timed relation with a moving image.&lt;br /&gt;
 .&lt;br /&gt;
   b. Adapter&#039;s License means the license You apply to Your Copyright&lt;br /&gt;
	  and Similar Rights in Your contributions to Adapted Material in&lt;br /&gt;
	  accordance with the terms and conditions of this Public License.&lt;br /&gt;
 .&lt;br /&gt;
   c. BY-SA Compatible License means a license listed at&lt;br /&gt;
	  creativecommons.org/compatiblelicenses, approved by Creative&lt;br /&gt;
	  Commons as essentially the equivalent of this Public License.&lt;br /&gt;
 .&lt;br /&gt;
   d. Copyright and Similar Rights means copyright and/or similar rights&lt;br /&gt;
	  closely related to copyright including, without limitation,&lt;br /&gt;
	  performance, broadcast, sound recording, and Sui Generis Database&lt;br /&gt;
	  Rights, without regard to how the rights are labeled or&lt;br /&gt;
	  categorized. For purposes of this Public License, the rights&lt;br /&gt;
	  specified in Section 2(b)(1)-(2) are not Copyright and Similar&lt;br /&gt;
	  Rights.&lt;br /&gt;
 .&lt;br /&gt;
   e. Effective Technological Measures means those measures that, in the&lt;br /&gt;
	  absence of proper authority, may not be circumvented under laws&lt;br /&gt;
	  fulfilling obligations under Article 11 of the WIPO Copyright&lt;br /&gt;
	  Treaty adopted on December 20, 1996, and/or similar international&lt;br /&gt;
	  agreements.&lt;br /&gt;
 .&lt;br /&gt;
   f. Exceptions and Limitations means fair use, fair dealing, and/or&lt;br /&gt;
	  any other exception or limitation to Copyright and Similar Rights&lt;br /&gt;
	  that applies to Your use of the Licensed Material.&lt;br /&gt;
 .&lt;br /&gt;
   g. License Elements means the license attributes listed in the name&lt;br /&gt;
	  of a Creative Commons Public License. The License Elements of this&lt;br /&gt;
	  Public License are Attribution and ShareAlike.&lt;br /&gt;
 .&lt;br /&gt;
   h. Licensed Material means the artistic or literary work, database,&lt;br /&gt;
	  or other material to which the Licensor applied this Public&lt;br /&gt;
	  License.&lt;br /&gt;
 .&lt;br /&gt;
   i. Licensed Rights means the rights granted to You subject to the&lt;br /&gt;
	  terms and conditions of this Public License, which are limited to&lt;br /&gt;
	  all Copyright and Similar Rights that apply to Your use of the&lt;br /&gt;
	  Licensed Material and that the Licensor has authority to license.&lt;br /&gt;
 .&lt;br /&gt;
   j. Licensor means the individual(s) or entity(ies) granting rights&lt;br /&gt;
	  under this Public License.&lt;br /&gt;
 .&lt;br /&gt;
   k. Share means to provide material to the public by any means or&lt;br /&gt;
	  process that requires permission under the Licensed Rights, such&lt;br /&gt;
	  as reproduction, public display, public performance, distribution,&lt;br /&gt;
	  dissemination, communication, or importation, and to make material&lt;br /&gt;
	  available to the public including in ways that members of the&lt;br /&gt;
	  public may access the material from a place and at a time&lt;br /&gt;
	  individually chosen by them.&lt;br /&gt;
 .&lt;br /&gt;
   l. Sui Generis Database Rights means rights other than copyright&lt;br /&gt;
	  resulting from Directive 96/9/EC of the European Parliament and of&lt;br /&gt;
	  the Council of 11 March 1996 on the legal protection of databases,&lt;br /&gt;
	  as amended and/or succeeded, as well as other essentially&lt;br /&gt;
	  equivalent rights anywhere in the world.&lt;br /&gt;
 .&lt;br /&gt;
   m. You means the individual or entity exercising the Licensed Rights&lt;br /&gt;
	  under this Public License. Your has a corresponding meaning.&lt;br /&gt;
 .&lt;br /&gt;
 .&lt;br /&gt;
 Section 2 -- Scope.&lt;br /&gt;
 .&lt;br /&gt;
   a. License grant.&lt;br /&gt;
 .&lt;br /&gt;
		1. Subject to the terms and conditions of this Public License,&lt;br /&gt;
		   the Licensor hereby grants You a worldwide, royalty-free,&lt;br /&gt;
		   non-sublicensable, non-exclusive, irrevocable license to&lt;br /&gt;
		   exercise the Licensed Rights in the Licensed Material to:&lt;br /&gt;
 .&lt;br /&gt;
			 a. reproduce and Share the Licensed Material, in whole or&lt;br /&gt;
				in part; and&lt;br /&gt;
 .&lt;br /&gt;
			 b. produce, reproduce, and Share Adapted Material.&lt;br /&gt;
 .&lt;br /&gt;
		2. Exceptions and Limitations. For the avoidance of doubt, where&lt;br /&gt;
		   Exceptions and Limitations apply to Your use, this Public&lt;br /&gt;
		   License does not apply, and You do not need to comply with&lt;br /&gt;
		   its terms and conditions.&lt;br /&gt;
 .&lt;br /&gt;
		3. Term. The term of this Public License is specified in Section&lt;br /&gt;
		   6(a).&lt;br /&gt;
 .&lt;br /&gt;
		4. Media and formats; technical modifications allowed. The&lt;br /&gt;
		   Licensor authorizes You to exercise the Licensed Rights in&lt;br /&gt;
		   all media and formats whether now known or hereafter created,&lt;br /&gt;
		   and to make technical modifications necessary to do so. The&lt;br /&gt;
		   Licensor waives and/or agrees not to assert any right or&lt;br /&gt;
		   authority to forbid You from making technical modifications&lt;br /&gt;
		   necessary to exercise the Licensed Rights, including&lt;br /&gt;
		   technical modifications necessary to circumvent Effective&lt;br /&gt;
		   Technological Measures. For purposes of this Public License,&lt;br /&gt;
		   simply making modifications authorized by this Section 2(a)&lt;br /&gt;
		   (4) never produces Adapted Material.&lt;br /&gt;
 .&lt;br /&gt;
		5. Downstream recipients.&lt;br /&gt;
 .&lt;br /&gt;
			 a. Offer from the Licensor -- Licensed Material. Every&lt;br /&gt;
				recipient of the Licensed Material automatically&lt;br /&gt;
				receives an offer from the Licensor to exercise the&lt;br /&gt;
				Licensed Rights under the terms and conditions of this&lt;br /&gt;
				Public License.&lt;br /&gt;
 .&lt;br /&gt;
			 b. Additional offer from the Licensor -- Adapted Material.&lt;br /&gt;
				Every recipient of Adapted Material from You&lt;br /&gt;
				automatically receives an offer from the Licensor to&lt;br /&gt;
				exercise the Licensed Rights in the Adapted Material&lt;br /&gt;
				under the conditions of the Adapter&#039;s License You apply.&lt;br /&gt;
 .&lt;br /&gt;
			 c. No downstream restrictions. You may not offer or impose&lt;br /&gt;
				any additional or different terms or conditions on, or&lt;br /&gt;
				apply any Effective Technological Measures to, the&lt;br /&gt;
				Licensed Material if doing so restricts exercise of the&lt;br /&gt;
				Licensed Rights by any recipient of the Licensed&lt;br /&gt;
				Material.&lt;br /&gt;
 .&lt;br /&gt;
		6. No endorsement. Nothing in this Public License constitutes or&lt;br /&gt;
		   may be construed as permission to assert or imply that You&lt;br /&gt;
		   are, or that Your use of the Licensed Material is, connected&lt;br /&gt;
		   with, or sponsored, endorsed, or granted official status by,&lt;br /&gt;
		   the Licensor or others designated to receive attribution as&lt;br /&gt;
		   provided in Section 3(a)(1)(A)(i).&lt;br /&gt;
 .&lt;br /&gt;
   b. Other rights.&lt;br /&gt;
 .&lt;br /&gt;
		1. Moral rights, such as the right of integrity, are not&lt;br /&gt;
		   licensed under this Public License, nor are publicity,&lt;br /&gt;
		   privacy, and/or other similar personality rights; however, to&lt;br /&gt;
		   the extent possible, the Licensor waives and/or agrees not to&lt;br /&gt;
		   assert any such rights held by the Licensor to the limited&lt;br /&gt;
		   extent necessary to allow You to exercise the Licensed&lt;br /&gt;
		   Rights, but not otherwise.&lt;br /&gt;
 .&lt;br /&gt;
		2. Patent and trademark rights are not licensed under this&lt;br /&gt;
		   Public License.&lt;br /&gt;
 .&lt;br /&gt;
		3. To the extent possible, the Licensor waives any right to&lt;br /&gt;
		   collect royalties from You for the exercise of the Licensed&lt;br /&gt;
		   Rights, whether directly or through a collecting society&lt;br /&gt;
		   under any voluntary or waivable statutory or compulsory&lt;br /&gt;
		   licensing scheme. In all other cases the Licensor expressly&lt;br /&gt;
		   reserves any right to collect such royalties.&lt;br /&gt;
 .&lt;br /&gt;
 .&lt;br /&gt;
 Section 3 -- License Conditions.&lt;br /&gt;
 .&lt;br /&gt;
 Your exercise of the Licensed Rights is expressly made subject to the&lt;br /&gt;
 following conditions.&lt;br /&gt;
 .&lt;br /&gt;
   a. Attribution.&lt;br /&gt;
 .&lt;br /&gt;
		1. If You Share the Licensed Material (including in modified&lt;br /&gt;
		   form), You must:&lt;br /&gt;
 .&lt;br /&gt;
			 a. retain the following if it is supplied by the Licensor&lt;br /&gt;
				with the Licensed Material:&lt;br /&gt;
 .&lt;br /&gt;
				  i. identification of the creator(s) of the Licensed&lt;br /&gt;
					 Material and any others designated to receive&lt;br /&gt;
					 attribution, in any reasonable manner requested by&lt;br /&gt;
					 the Licensor (including by pseudonym if&lt;br /&gt;
					 designated);&lt;br /&gt;
 .&lt;br /&gt;
				 ii. a copyright notice;&lt;br /&gt;
 .&lt;br /&gt;
				iii. a notice that refers to this Public License;&lt;br /&gt;
 .&lt;br /&gt;
				 iv. a notice that refers to the disclaimer of&lt;br /&gt;
					 warranties;&lt;br /&gt;
 .&lt;br /&gt;
				  v. a URI or hyperlink to the Licensed Material to the&lt;br /&gt;
					 extent reasonably practicable;&lt;br /&gt;
 .&lt;br /&gt;
			 b. indicate if You modified the Licensed Material and&lt;br /&gt;
				retain an indication of any previous modifications; and&lt;br /&gt;
 .&lt;br /&gt;
			 c. indicate the Licensed Material is licensed under this&lt;br /&gt;
				Public License, and include the text of, or the URI or&lt;br /&gt;
				hyperlink to, this Public License.&lt;br /&gt;
 .&lt;br /&gt;
		2. You may satisfy the conditions in Section 3(a)(1) in any&lt;br /&gt;
		   reasonable manner based on the medium, means, and context in&lt;br /&gt;
		   which You Share the Licensed Material. For example, it may be&lt;br /&gt;
		   reasonable to satisfy the conditions by providing a URI or&lt;br /&gt;
		   hyperlink to a resource that includes the required&lt;br /&gt;
		   information.&lt;br /&gt;
 .&lt;br /&gt;
		3. If requested by the Licensor, You must remove any of the&lt;br /&gt;
		   information required by Section 3(a)(1)(A) to the extent&lt;br /&gt;
		   reasonably practicable.&lt;br /&gt;
 .&lt;br /&gt;
   b. ShareAlike.&lt;br /&gt;
 .&lt;br /&gt;
	  In addition to the conditions in Section 3(a), if You Share&lt;br /&gt;
	  Adapted Material You produce, the following conditions also apply.&lt;br /&gt;
 .&lt;br /&gt;
		1. The Adapter&#039;s License You apply must be a Creative Commons&lt;br /&gt;
		   license with the same License Elements, this version or&lt;br /&gt;
		   later, or a BY-SA Compatible License.&lt;br /&gt;
 .&lt;br /&gt;
		2. You must include the text of, or the URI or hyperlink to, the&lt;br /&gt;
		   Adapter&#039;s License You apply. You may satisfy this condition&lt;br /&gt;
		   in any reasonable manner based on the medium, means, and&lt;br /&gt;
		   context in which You Share Adapted Material.&lt;br /&gt;
 .&lt;br /&gt;
		3. You may not offer or impose any additional or different terms&lt;br /&gt;
		   or conditions on, or apply any Effective Technological&lt;br /&gt;
		   Measures to, Adapted Material that restrict exercise of the&lt;br /&gt;
		   rights granted under the Adapter&#039;s License You apply.&lt;br /&gt;
 .&lt;br /&gt;
 .&lt;br /&gt;
 Section 4 -- Sui Generis Database Rights.&lt;br /&gt;
 .&lt;br /&gt;
 Where the Licensed Rights include Sui Generis Database Rights that&lt;br /&gt;
 apply to Your use of the Licensed Material:&lt;br /&gt;
 .&lt;br /&gt;
   a. for the avoidance of doubt, Section 2(a)(1) grants You the right&lt;br /&gt;
	  to extract, reuse, reproduce, and Share all or a substantial&lt;br /&gt;
	  portion of the contents of the database;&lt;br /&gt;
 .&lt;br /&gt;
   b. if You include all or a substantial portion of the database&lt;br /&gt;
	  contents in a database in which You have Sui Generis Database&lt;br /&gt;
	  Rights, then the database in which You have Sui Generis Database&lt;br /&gt;
	  Rights (but not its individual contents) is Adapted Material,&lt;br /&gt;
 .&lt;br /&gt;
	  including for purposes of Section 3(b); and&lt;br /&gt;
   c. You must comply with the conditions in Section 3(a) if You Share&lt;br /&gt;
	  all or a substantial portion of the contents of the database.&lt;br /&gt;
 .&lt;br /&gt;
 For the avoidance of doubt, this Section 4 supplements and does not&lt;br /&gt;
 replace Your obligations under this Public License where the Licensed&lt;br /&gt;
 Rights include other Copyright and Similar Rights.&lt;br /&gt;
 .&lt;br /&gt;
 .&lt;br /&gt;
 Section 5 -- Disclaimer of Warranties and Limitation of Liability.&lt;br /&gt;
 .&lt;br /&gt;
   a. UNLESS OTHERWISE SEPARATELY UNDERTAKEN BY THE LICENSOR, TO THE&lt;br /&gt;
	  EXTENT POSSIBLE, THE LICENSOR OFFERS THE LICENSED MATERIAL AS-IS&lt;br /&gt;
	  AND AS-AVAILABLE, AND MAKES NO REPRESENTATIONS OR WARRANTIES OF&lt;br /&gt;
	  ANY KIND CONCERNING THE LICENSED MATERIAL, WHETHER EXPRESS,&lt;br /&gt;
	  IMPLIED, STATUTORY, OR OTHER. THIS INCLUDES, WITHOUT LIMITATION,&lt;br /&gt;
	  WARRANTIES OF TITLE, MERCHANTABILITY, FITNESS FOR A PARTICULAR&lt;br /&gt;
	  PURPOSE, NON-INFRINGEMENT, ABSENCE OF LATENT OR OTHER DEFECTS,&lt;br /&gt;
	  ACCURACY, OR THE PRESENCE OR ABSENCE OF ERRORS, WHETHER OR NOT&lt;br /&gt;
	  KNOWN OR DISCOVERABLE. WHERE DISCLAIMERS OF WARRANTIES ARE NOT&lt;br /&gt;
	  ALLOWED IN FULL OR IN PART, THIS DISCLAIMER MAY NOT APPLY TO YOU.&lt;br /&gt;
 .&lt;br /&gt;
   b. TO THE EXTENT POSSIBLE, IN NO EVENT WILL THE LICENSOR BE LIABLE&lt;br /&gt;
	  TO YOU ON ANY LEGAL THEORY (INCLUDING, WITHOUT LIMITATION,&lt;br /&gt;
	  NEGLIGENCE) OR OTHERWISE FOR ANY DIRECT, SPECIAL, INDIRECT,&lt;br /&gt;
	  INCIDENTAL, CONSEQUENTIAL, PUNITIVE, EXEMPLARY, OR OTHER LOSSES,&lt;br /&gt;
	  COSTS, EXPENSES, OR DAMAGES ARISING OUT OF THIS PUBLIC LICENSE OR&lt;br /&gt;
	  USE OF THE LICENSED MATERIAL, EVEN IF THE LICENSOR HAS BEEN&lt;br /&gt;
	  ADVISED OF THE POSSIBILITY OF SUCH LOSSES, COSTS, EXPENSES, OR&lt;br /&gt;
	  DAMAGES. WHERE A LIMITATION OF LIABILITY IS NOT ALLOWED IN FULL OR&lt;br /&gt;
	  IN PART, THIS LIMITATION MAY NOT APPLY TO YOU.&lt;br /&gt;
 .&lt;br /&gt;
   c. The disclaimer of warranties and limitation of liability provided&lt;br /&gt;
	  above shall be interpreted in a manner that, to the extent&lt;br /&gt;
	  possible, most closely approximates an absolute disclaimer and&lt;br /&gt;
	  waiver of all liability.&lt;br /&gt;
 .&lt;br /&gt;
 .&lt;br /&gt;
 Section 6 -- Term and Termination.&lt;br /&gt;
 .&lt;br /&gt;
   a. This Public License applies for the term of the Copyright and&lt;br /&gt;
	  Similar Rights licensed here. However, if You fail to comply with&lt;br /&gt;
	  this Public License, then Your rights under this Public License&lt;br /&gt;
	  terminate automatically.&lt;br /&gt;
 .&lt;br /&gt;
   b. Where Your right to use the Licensed Material has terminated under&lt;br /&gt;
	  Section 6(a), it reinstates:&lt;br /&gt;
 .&lt;br /&gt;
		1. automatically as of the date the violation is cured, provided&lt;br /&gt;
		   it is cured within 30 days of Your discovery of the&lt;br /&gt;
		   violation; or&lt;br /&gt;
 .&lt;br /&gt;
		2. upon express reinstatement by the Licensor.&lt;br /&gt;
 .&lt;br /&gt;
	  For the avoidance of doubt, this Section 6(b) does not affect any&lt;br /&gt;
	  right the Licensor may have to seek remedies for Your violations&lt;br /&gt;
	  of this Public License.&lt;br /&gt;
 .&lt;br /&gt;
   c. For the avoidance of doubt, the Licensor may also offer the&lt;br /&gt;
	  Licensed Material under separate terms or conditions or stop&lt;br /&gt;
	  distributing the Licensed Material at any time; however, doing so&lt;br /&gt;
	  will not terminate this Public License.&lt;br /&gt;
 .&lt;br /&gt;
   d. Sections 1, 5, 6, 7, and 8 survive termination of this Public&lt;br /&gt;
	  License.&lt;br /&gt;
 .&lt;br /&gt;
 .&lt;br /&gt;
 Section 7 -- Other Terms and Conditions.&lt;br /&gt;
 .&lt;br /&gt;
   a. The Licensor shall not be bound by any additional or different&lt;br /&gt;
	  terms or conditions communicated by You unless expressly agreed.&lt;br /&gt;
 .&lt;br /&gt;
   b. Any arrangements, understandings, or agreements regarding the&lt;br /&gt;
	  Licensed Material not stated herein are separate from and&lt;br /&gt;
	  independent of the terms and conditions of this Public License.&lt;br /&gt;
 .&lt;br /&gt;
 .&lt;br /&gt;
 Section 8 -- Interpretation.&lt;br /&gt;
 .&lt;br /&gt;
   a. For the avoidance of doubt, this Public License does not, and&lt;br /&gt;
	  shall not be interpreted to, reduce, limit, restrict, or impose&lt;br /&gt;
	  conditions on any use of the Licensed Material that could lawfully&lt;br /&gt;
	  be made without permission under this Public License.&lt;br /&gt;
 .&lt;br /&gt;
   b. To the extent possible, if any provision of this Public License is&lt;br /&gt;
	  deemed unenforceable, it shall be automatically reformed to the&lt;br /&gt;
	  minimum extent necessary to make it enforceable. If the provision&lt;br /&gt;
	  cannot be reformed, it shall be severed from this Public License&lt;br /&gt;
	  without affecting the enforceability of the remaining terms and&lt;br /&gt;
	  conditions.&lt;br /&gt;
 .&lt;br /&gt;
   c. No term or condition of this Public License will be waived and no&lt;br /&gt;
	  failure to comply consented to unless expressly agreed to by the&lt;br /&gt;
	  Licensor.&lt;br /&gt;
 .&lt;br /&gt;
   d. Nothing in this Public License constitutes or may be interpreted&lt;br /&gt;
	  as a limitation upon, or waiver of, any privileges and immunities&lt;br /&gt;
	  that apply to the Licensor or You, including from the legal&lt;br /&gt;
	  processes of any jurisdiction or authority.&lt;br /&gt;
 .&lt;br /&gt;
 .&lt;br /&gt;
 =======================================================================&lt;br /&gt;
 .&lt;br /&gt;
 Creative Commons is not a party to its public&lt;br /&gt;
 licenses. Notwithstanding, Creative Commons may elect to apply one of&lt;br /&gt;
 its public licenses to material it publishes and in those instances&lt;br /&gt;
 will be considered the “Licensor.” The text of the Creative Commons&lt;br /&gt;
 public licenses is dedicated to the public domain under the CC0 Public&lt;br /&gt;
 Domain Dedication. Except for the limited purpose of indicating that&lt;br /&gt;
 material is shared under a Creative Commons public license or as&lt;br /&gt;
 otherwise permitted by the Creative Commons policies published at&lt;br /&gt;
 creativecommons.org/policies, Creative Commons does not authorize the&lt;br /&gt;
 use of the trademark &amp;quot;Creative Commons&amp;quot; or any other trademark or logo&lt;br /&gt;
 of Creative Commons without its prior written consent including,&lt;br /&gt;
 without limitation, in connection with any unauthorized modifications&lt;br /&gt;
 to any of its public licenses or any other arrangements,&lt;br /&gt;
 understandings, or agreements concerning use of licensed material. For&lt;br /&gt;
 the avoidance of doubt, this paragraph does not form part of the&lt;br /&gt;
 public licenses.&lt;br /&gt;
 .&lt;br /&gt;
 Creative Commons may be contacted at creativecommons.org.&lt;br /&gt;
&lt;br /&gt;
License: GPL-3+&lt;br /&gt;
 This package is free software; you can redistribute it and/or modify&lt;br /&gt;
 it under the terms of the GNU General Public License as published by&lt;br /&gt;
 the Free Software Foundation; either version 3 of the License, or&lt;br /&gt;
 (at your option) any later version.&lt;br /&gt;
 .&lt;br /&gt;
 This package is distributed in the hope that it will be useful,&lt;br /&gt;
 but WITHOUT ANY WARRANTY; without even the implied warranty of&lt;br /&gt;
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the&lt;br /&gt;
 GNU General Public License for more details.&lt;br /&gt;
 .&lt;br /&gt;
 You should have received a copy of the GNU General Public License&lt;br /&gt;
 along with this program. If not, see &amp;lt;https://www.gnu.org/licenses/&amp;gt;&lt;br /&gt;
 .&lt;br /&gt;
 On Debian systems, the complete text of the GNU General&lt;br /&gt;
 Public License version 3 can be found in &amp;quot;/usr/share/common-licenses/GPL-3&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
License: LGPL-2.1+&lt;br /&gt;
 This library is free software; you can redistribute it and/or&lt;br /&gt;
 modify it under the terms of the GNU Lesser General Public&lt;br /&gt;
 License as published by the Free Software Foundation; either&lt;br /&gt;
 version 2.1 of the License, or (at your option) any later version.&lt;br /&gt;
 .&lt;br /&gt;
 This library is distributed in the hope that it will be useful,&lt;br /&gt;
 but WITHOUT ANY WARRANTY; without even the implied warranty of&lt;br /&gt;
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU&lt;br /&gt;
 Lesser General Public License for more details.&lt;br /&gt;
 .&lt;br /&gt;
 You should have received a copy of the GNU Lesser General Public License&lt;br /&gt;
 along with this library. If not, see &amp;lt;https://www.gnu.org/licenses/&amp;gt;&lt;br /&gt;
 .&lt;br /&gt;
 On Debian systems, the complete text of the GNU Lesser General&lt;br /&gt;
 Public License version 3 can be found in &amp;quot;/usr/share/common-licenses/LGPL-2.1&amp;quot;.&lt;br /&gt;
user@disp4360:/usr/share/doc$ &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## that&#039;s a big annoying, but I guess we can live with it&lt;br /&gt;
## they also apparently put a dot (.) on every double-newline in a single indented stanza. I guess that&#039;s to not break the syntax of &amp;quot;two newlines becomes a new stanaza&amp;quot;. So I&#039;ll adopt that for the CERN License snippet.&lt;br /&gt;
## I grepd all the &amp;quot;Files&amp;quot; lines in all the systems, and generated a reasonably complete list of all programming language source files&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Files:&lt;br /&gt;
 *.c *.cpp *.h *.hpp&lt;br /&gt;
 *.py *.pl *.go&lt;br /&gt;
 *.dtd&lt;br /&gt;
 *.html *.css *.js *.xml&lt;br /&gt;
Copyright:&lt;br /&gt;
 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
License: AGPL-3.0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## .dtd came up a few times. something related to gis, I think. I added a few more gis formats&lt;br /&gt;
## per https://docs.qgis.org/3.44/en/docs/user_manual/managing_data_source/supported_data.html&lt;br /&gt;
## and https://gis.stackexchange.com/questions/392708/list-of-data-file-formats-supported-in-qgis-including-read-write-support&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Files:&lt;br /&gt;
 *.c *.cpp *.h *.hpp&lt;br /&gt;
 *.py *.pl *.go&lt;br /&gt;
 *.qix *.dtd *.shp *.shz *.dbf *.shx *.prj *.kml&lt;br /&gt;
 *.html *.css *.js *.xml&lt;br /&gt;
Copyright:&lt;br /&gt;
 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
License: AGPL-3.0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## Another thing I can do is to check some syntax highlighers, which have some logic to auto-detect code syntax based on filename. That would be a great list of code-specific filenames&lt;br /&gt;
### here&#039;s the one we use as a wordpress plugin for eco-libre.org https://wordpress.org/plugins/syntaxhighlighter/&lt;br /&gt;
### code is here https://github.com/Automattic/syntaxhighlighter&lt;br /&gt;
### here&#039;s the block where they map languages to file extensions https://github.com/Automattic/syntaxhighlighter/blob/61fd26c64d019641db143e90e05b0eb9a4a57d62/syntaxhighlighter.php#L181-L246&lt;br /&gt;
### oh crap, those are aliases, not file extensions. maybe I should check something like notepad++ or vim&lt;br /&gt;
### we can get 694 file types from vim with this crazy command https://vi.stackexchange.com/a/14980&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
user@disp4360:/usr/share/vim/vim90$ find syntax ftplugin -iname &#039;*.vim&#039; -exec basename -s .vim {} + | sort -u | wc -l&lt;br /&gt;
694&lt;br /&gt;
user@disp4360:/usr/share/vim/vim90$ &lt;br /&gt;
&lt;br /&gt;
user@disp4360:/usr/share/vim/vim90$ find syntax ftplugin -iname &#039;*.vim&#039; -exec basename -s .vim {} + | sort -u | xargs&lt;br /&gt;
2html 8th a2ps a65 aap abap abaqus abc abel acedb ada aflex ahdl aidl alsaconf amiga aml ampl ant antlr apache apachestyle aptconf arch arduino art asciidoc asm asm68k asmh8300 asn aspperl aspvbs asterisk asteriskvm atlas autodoc autohotkey autoit automake ave avra awk ayacc b baan bash basic bc bdf bib bindzone bitbake blank bsdl bst btm bzl bzr c cabal cabalconfig cabalproject calendar catalog cdl cdrdaoconf cdrtoc cf cfg ch chaiscript change changelog chaskell chatito cheetah chicken chill chordpro cl clean clipper clojure cmake cmod cmusrc cobol coco colortest conaryrecipe conf config confini context context-data-context context-data-interfaces context-data-metafun context-data-tex cpp crm crontab cs csc csdl csh csp css cterm ctrlh cucumber cuda cupl cuplsim cvs cvsrc cweb cynlib cynpp d dart datascript dcd dcl debchangelog debcontrol debcopyright debsources def denyhosts dep3patch desc desktop dictconf dictdconf diff dircolors dirpager diva django dns dnsmasq docbk docbksgml docbkxml dockerfile dosbatch dosini dot doxygen dracula dsl dtd dtml dtrace dts dune dylan dylanintr dylanlid ecd edif editorconfig eiffel elf elinks elixir elm elmfilt erlang eruby esmtprc esqlc esterel eterm euphoria3 euphoria4 eviews exim expect exports falcon fan fasm fdcc fennel fetchmail fgl fish flexwiki focexec form forth fortran foxpro fpcmake framescript freebasic fstab fvwm fvwm2m4 gdb gdmo gdresource gdscript gdshader gedcom gemtext gift git gitattributes gitcommit gitconfig gitignore gitolite gitrebase gitsendemail gkrellmrc gnash gnuplot go godoc gp gpg gprof grads gretl groff groovy group grub gsp gtkrc gvpr gyp haml hamster hare haskell haste hastepreproc hb heex help help_ru hercules hex hgcommit hgcommitDiff hitest hlsplaylist hog hollywood hostconf hostsaccess html htmlcheetah htmldjango htmlm4 htmlos i3config ia64 ibasic icemenu icon idl idlang indent inform initex initng inittab ipfilter ishd iss ist j jal jam jargon java javacc javascript javascriptreact jess jgraph jovial jproperties json jsonc jsonnet jsp julia kconfig kivy kix krl kscript kwt lace latte lc ld ldapconf ldif less lex lftp lhaskell libao lifelines lilo limits liquid lisp lite litestep logcheck loginaccess logindefs logtalk lotos lout lpc lprolog lscript lsl lss lua lynx lyrics m3build m3quake m4 mail mailaliases mailcap make mallard man manconf manual maple markdown masm mason master matlab maxima mel mermaid meson messages mf mgl mgp mib mix mma mmix mmp modconf model modsim3 modula2 modula3 monk moo mp mplayerconf mrxvtrc msidl msmessages msql mupad murphi mush muttrc mysql n1ql named nanorc nasm nastran natural ncf neomuttrc netrc netrw nginx ninja nix nosyntax nqc nroff nsis obj objc objcpp obse ocaml occam octave omnimark opam openroad openscad openvpn opl ora pamconf pamenv papp pascal passwd pbtxt pcap pccts pdf perl pf pfmain php phtml pic pike pilrc pine pinfo plaintex pli plm plp plsql po pod poefilter poke postscr pov povini ppd ppwiz prescribe privoxy procmail progress prolog promela proto protocols ps1 ps1xml psf psl ptcap purifylog pyrex python python2 qb64 qf quake quarto r racc racket radiance raku raml ratpoison rc rcs rcslog readline rebol redif registry rego remind resolv reva rexx rhelp rib rmd rnc rng rnoweb robots routeros rpcgen rpl rrst rst rtf ruby rust samba sas sass sather sbt scala scdoc scheme scilab screen scss sd sdc sdl sed sendpr sensors services setserial sexplib sgml sgmldecl sgmllnx sh sicad sieve sil simula sinda sindacmp sindaout sisu skill sl slang slice slpconf slpreg slpspi slrnrc slrnsc sm smarty smcl smil smith sml snnsnet snnspat snnsres snobol4 solidity solution spec specman spice splint spup spyce sql sqlanywhere sqlforms sqlhana sqlinformix sqlj sqloracle sqr squid squirrel srec srt ssa sshconfig sshdconfig st stata stp strace structurizr sudoers svg svn swayconfig swift swiftgyb syncolor synload syntax sysctl systemd systemverilog tads tags tak takcmp takout tap tar taskdata taskedit tasm tcl tcsh template teraterm terminfo tex texinfo texmf text tf tidy tilde tli tmux toml tpp trasys treetop trustees tsalt tsscl tssgm tssop tt2 tt2html tt2js typescript typescriptcommon typescriptreact uc udevconf udevperm udevrules uil updatedb upstart upstreamdat upstreaminstalllog upstreamlog upstreamrpt usserverlog usw2kagtlog valgrind vb vdf vera verilog verilogams vgrindefs vhdl vim viminfo virata vmasm voscm vrml vroom vsejcl vue wast wdiff wdl web webmacro wget wget2 whitespace winbatch wml wsh wsml wvdial xbl xdefaults xf86conf xhtml xinetd xkb xmath xml xmodmap xpm xpm2 xquery xs xsd xslt xxd yacc yaml z8a zig zimbu zir zsh&lt;br /&gt;
user@disp4360:/usr/share/vim/vim90$ &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
### so I definitely don&#039;t want all of those. for example, .po files are not code.&lt;br /&gt;
## I decided to remove html and css from the list, as those are markup and not code. but js should remain.&lt;br /&gt;
## I reduced the vim list to the following&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
user@disp4360:~$ cat filetypes1.txt &lt;br /&gt;
autohotkey&lt;br /&gt;
automake&lt;br /&gt;
awk&lt;br /&gt;
bash&lt;br /&gt;
basic&lt;br /&gt;
cmake&lt;br /&gt;
cuda&lt;br /&gt;
d&lt;br /&gt;
erlang&lt;br /&gt;
eruby&lt;br /&gt;
haskell&lt;br /&gt;
j&lt;br /&gt;
java&lt;br /&gt;
javacc&lt;br /&gt;
javascript&lt;br /&gt;
javascriptreact&lt;br /&gt;
kivy&lt;br /&gt;
lisp&lt;br /&gt;
lua&lt;br /&gt;
make&lt;br /&gt;
perl&lt;br /&gt;
r&lt;br /&gt;
ruby&lt;br /&gt;
rust&lt;br /&gt;
sh&lt;br /&gt;
swift&lt;br /&gt;
tcl&lt;br /&gt;
typescript&lt;br /&gt;
vb&lt;br /&gt;
zsh&lt;br /&gt;
user@disp4360:~$ &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## fun fact, autohotkey was the first &amp;quot;language&amp;quot; I learned – which I used to script my windows computer to feed my fish and collect their pooped-out gold in some video game, wayy back when I was  kid &amp;amp; before I used Linux. It&#039;s a cool way to automate GUI macros on Windows (which is otherwise a PIA to automate, by (terrible) design.&lt;br /&gt;
## I merged this into our copyright file.  I also added asp.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Files:&lt;br /&gt;
 *.c *.cpp *.h *.hpp *.make *.automake *.cmake&lt;br /&gt;
 *.java *.javacc *.rust&lt;br /&gt;
 *.d *.j *.r&lt;br /&gt;
 *.sh *.bash *.zsh *.awk *.tcl&lt;br /&gt;
 *.py *.python *.python2 *.python3 *.pl *.perl *.kivy&lt;br /&gt;
 *.qix *.dtd *.shp *.shz *.dbf *.shx *.prj *.kml&lt;br /&gt;
 *.php *.js *.javascript *.typescript&lt;br /&gt;
 *.ruby *.eruby *.cuda *.erlang *.lisp *.lua *.haskell *.go&lt;br /&gt;
 *.autohotkey *.basic *.swift *.vb *.asp&lt;br /&gt;
Copyright:&lt;br /&gt;
 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
License: AGPL-3.0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## let&#039;s also add exceptions for the CERN-licensed files&lt;br /&gt;
## I hope we never use tools like AutoCAD, but it&#039;s likely that someone will design something in AutoCAD and copyleft it. Then we&#039;ll be able to use that in one of our projects, but where we redesign it in FreeCAD. In that case, we still might want to include the source AutoCAD DXF file in our repo, and license it properly (though, if that happens, we&#039;d probably need to update the copyright file to whatever license they use; unless they happen to use the same CERN strong license as us)&lt;br /&gt;
## I added scad. And .vue was one from vim.&lt;br /&gt;
## bibliocad lists wg, bim, skp, max, and 3ds https://www.bibliocad.com/&lt;br /&gt;
## I logged into the OSE wiki and checked all of the files that have been uploaded, and I added a few more: 3dm, fcmacro, ino, fzz, gto, blend, kicad_pcb, sh3d, pod, brd, sch, abp, dwb, cc, skb, sldrw, sldasm, pde&lt;br /&gt;
## note that I&#039;ve *not* put stp, gcode, stl, igs, wrl, wrz, etc files as CERN licensed (so they&#039;d be CC). I&#039;m not sure if that&#039;s the right thing or not.&lt;br /&gt;
### also dia, gan, mpp, mm, svg, jpg, png, jpeg, tiff, bmp, ai, idml, psd, mp4, mp3, webm, wav, kdenlive, xcf, doc, docx, ppt, pptx, xls, odt, ods, odg, numbers, tex, zip, rar, 7z, tar.gz, torrent, etc..&lt;br /&gt;
### there was also some ini config files. I read you can&#039;t license config files. so those will be CC.&lt;br /&gt;
# ok, here&#039;s what I got&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/&lt;br /&gt;
Source: https://github.com/Eco-Libre/life-line&lt;br /&gt;
Upstream-Name: Eco-Libre Life-Line&lt;br /&gt;
Upstream-Contact: https://eco-libre.org/contact&lt;br /&gt;
&lt;br /&gt;
Files:&lt;br /&gt;
 *&lt;br /&gt;
Copyright:&lt;br /&gt;
 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
License: CC-BY-SA-4.0&lt;br /&gt;
&lt;br /&gt;
Files:&lt;br /&gt;
 *.FCStd *.scad *.fzz *.blend *.kicad_pcb *.sh3d&lt;br /&gt;
 *.vue *.dxf *.dwg *.bim *.skp *.skb *.max *.3ds *.gto *.pod *.brd&lt;br /&gt;
 *.sch *.3dm *.dwb *.slddrw *.sldasm&lt;br /&gt;
Copyright:&lt;br /&gt;
 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
License: CERN-OHL-S-2.0&lt;br /&gt;
&lt;br /&gt;
Files:&lt;br /&gt;
 *.c *.cpp *.h *.hpp *.cc *.ino *.pde *.make *.automake *.cmake&lt;br /&gt;
 *.java *.javacc *.rust&lt;br /&gt;
 *.d *.j *.r&lt;br /&gt;
 *.sh *.bash *.zsh *.awk *.tcl&lt;br /&gt;
 *.py *.python *.python2 *.python3 *.FCMacro *.pl *.perl *.kivy&lt;br /&gt;
 *.qix *.dtd *.shp *.shz *.dbf *.shx *.prj *.kml&lt;br /&gt;
 *.php *.js *.javascript *.typescript&lt;br /&gt;
 *.ruby *.eruby *.cuda *.erlang *.lisp *.lua *.haskell *.go&lt;br /&gt;
 *.autohotkey *.basic *.swift *.vb *.asp&lt;br /&gt;
Copyright:&lt;br /&gt;
 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
License: AGPL-3.0&lt;br /&gt;
&lt;br /&gt;
License: AGPL-3.0&lt;br /&gt;
 https://www.gnu.org/licenses/agpl-3.0.html&lt;br /&gt;
 .&lt;br /&gt;
 This program is free software: you can redistribute it and/or modify&lt;br /&gt;
 it under the terms of the GNU Affero General Public License as&lt;br /&gt;
 published by the Free Software Foundation, version 3&lt;br /&gt;
 .&lt;br /&gt;
 This program is distributed in the hope that it will be useful,&lt;br /&gt;
 but WITHOUT ANY WARRANTY; without even the implied warranty of&lt;br /&gt;
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the&lt;br /&gt;
 GNU Affero General Public License for more details.&lt;br /&gt;
 .&lt;br /&gt;
 You should have received a copy of the GNU Affero General Public License&lt;br /&gt;
 along with this program.  If not, see &amp;lt;https://www.gnu.org/licenses/&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
License: CERN-OHL-S-2.0&lt;br /&gt;
 https://ohwr.org/cern_ohl_s_v2.txt&lt;br /&gt;
 .&lt;br /&gt;
 You may redistribute and modify this source and make products using &lt;br /&gt;
 it under the terms of the CERN-OHL-S v2 &lt;br /&gt;
 (https://ohwr.org/cern_ohl_s_v2.txt).&lt;br /&gt;
 .&lt;br /&gt;
 This source is distributed WITHOUT ANY EXPRESS OR IMPLIED WARRANTY, &lt;br /&gt;
 INCLUDING OF MERCHANTABILITY, SATISFACTORY QUALITY AND FITNESS FOR A &lt;br /&gt;
 PARTICULAR PURPOSE. Please see the CERN-OHL-S v2 for applicable &lt;br /&gt;
 conditions.&lt;br /&gt;
 .&lt;br /&gt;
 Source location: eco-libre.org/p/&lt;br /&gt;
 .&lt;br /&gt;
 As per CERN-OHL-S v2 section 4, should You produce hardware based on &lt;br /&gt;
 this source, You must where practicable and applicable maintain the &lt;br /&gt;
 Source Location visible (1) on the packaging of the hardware, (2) on &lt;br /&gt;
 the circuit board(s) via silkscreen or copper, (3) in any &lt;br /&gt;
 documentation, and (4) on other products you make using this source.&lt;br /&gt;
&lt;br /&gt;
License: CC-BY-SA-4.0&lt;br /&gt;
 http://creativecommons.org/licenses/by-sa/4.0/&lt;br /&gt;
 .&lt;br /&gt;
 Attribution-ShareAlike 4.0 International&lt;br /&gt;
 .&lt;br /&gt;
 =======================================================================&lt;br /&gt;
 .&lt;br /&gt;
 Creative Commons Corporation (&amp;quot;Creative Commons&amp;quot;) is not a law firm and&lt;br /&gt;
 does not provide legal services or legal advice. Distribution of&lt;br /&gt;
 Creative Commons public licenses does not create a lawyer-client or&lt;br /&gt;
 other relationship. Creative Commons makes its licenses and related&lt;br /&gt;
 information available on an &amp;quot;as-is&amp;quot; basis. Creative Commons gives no&lt;br /&gt;
 warranties regarding its licenses, any material licensed under their&lt;br /&gt;
 terms and conditions, or any related information. Creative Commons&lt;br /&gt;
 disclaims all liability for damages resulting from their use to the&lt;br /&gt;
 fullest extent possible.&lt;br /&gt;
 .&lt;br /&gt;
 Using Creative Commons Public Licenses&lt;br /&gt;
 .&lt;br /&gt;
 Creative Commons public licenses provide a standard set of terms and&lt;br /&gt;
 conditions that creators and other rights holders may use to share&lt;br /&gt;
 original works of authorship and other material subject to copyright&lt;br /&gt;
 and certain other rights specified in the public license below. The&lt;br /&gt;
 following considerations are for informational purposes only, are not&lt;br /&gt;
 exhaustive, and do not form part of our licenses.&lt;br /&gt;
 .&lt;br /&gt;
	  Considerations for licensors: Our public licenses are&lt;br /&gt;
	  intended for use by those authorized to give the public&lt;br /&gt;
	  permission to use material in ways otherwise restricted by&lt;br /&gt;
	  copyright and certain other rights. Our licenses are&lt;br /&gt;
	  irrevocable. Licensors should read and understand the terms&lt;br /&gt;
	  and conditions of the license they choose before applying it.&lt;br /&gt;
	  Licensors should also secure all rights necessary before&lt;br /&gt;
	  applying our licenses so that the public can reuse the&lt;br /&gt;
	  material as expected. Licensors should clearly mark any&lt;br /&gt;
	  material not subject to the license. This includes other CC-&lt;br /&gt;
	  licensed material, or material used under an exception or&lt;br /&gt;
	  limitation to copyright. More considerations for licensors:&lt;br /&gt;
	  wiki.creativecommons.org/Considerations_for_licensors&lt;br /&gt;
 .&lt;br /&gt;
	  Considerations for the public: By using one of our public&lt;br /&gt;
	  licenses, a licensor grants the public permission to use the&lt;br /&gt;
	  licensed material under specified terms and conditions. If&lt;br /&gt;
	  the licensor&#039;s permission is not necessary for any reason--for&lt;br /&gt;
	  example, because of any applicable exception or limitation to&lt;br /&gt;
	  copyright--then that use is not regulated by the license. Our&lt;br /&gt;
	  licenses grant only permissions under copyright and certain&lt;br /&gt;
	  other rights that a licensor has authority to grant. Use of&lt;br /&gt;
	  the licensed material may still be restricted for other&lt;br /&gt;
	  reasons, including because others have copyright or other&lt;br /&gt;
	  rights in the material. A licensor may make special requests,&lt;br /&gt;
	  such as asking that all changes be marked or described.&lt;br /&gt;
	  Although not required by our licenses, you are encouraged to&lt;br /&gt;
	  respect those requests where reasonable. More_considerations&lt;br /&gt;
	  for the public:&lt;br /&gt;
	  wiki.creativecommons.org/Considerations_for_licensees&lt;br /&gt;
 .&lt;br /&gt;
 =======================================================================&lt;br /&gt;
 .&lt;br /&gt;
 Creative Commons Attribution-ShareAlike 4.0 International Public&lt;br /&gt;
 License&lt;br /&gt;
 .&lt;br /&gt;
 By exercising the Licensed Rights (defined below), You accept and agree&lt;br /&gt;
 to be bound by the terms and conditions of this Creative Commons&lt;br /&gt;
 Attribution-ShareAlike 4.0 International Public License (&amp;quot;Public&lt;br /&gt;
 License&amp;quot;). To the extent this Public License may be interpreted as a&lt;br /&gt;
 contract, You are granted the Licensed Rights in consideration of Your&lt;br /&gt;
 acceptance of these terms and conditions, and the Licensor grants You&lt;br /&gt;
 such rights in consideration of benefits the Licensor receives from&lt;br /&gt;
 making the Licensed Material available under these terms and&lt;br /&gt;
 conditions.&lt;br /&gt;
 .&lt;br /&gt;
 .&lt;br /&gt;
 Section 1 -- Definitions.&lt;br /&gt;
 .&lt;br /&gt;
   a. Adapted Material means material subject to Copyright and Similar&lt;br /&gt;
	  Rights that is derived from or based upon the Licensed Material&lt;br /&gt;
	  and in which the Licensed Material is translated, altered,&lt;br /&gt;
	  arranged, transformed, or otherwise modified in a manner requiring&lt;br /&gt;
	  permission under the Copyright and Similar Rights held by the&lt;br /&gt;
	  Licensor. For purposes of this Public License, where the Licensed&lt;br /&gt;
	  Material is a musical work, performance, or sound recording,&lt;br /&gt;
	  Adapted Material is always produced where the Licensed Material is&lt;br /&gt;
	  synched in timed relation with a moving image.&lt;br /&gt;
 .&lt;br /&gt;
   b. Adapter&#039;s License means the license You apply to Your Copyright&lt;br /&gt;
	  and Similar Rights in Your contributions to Adapted Material in&lt;br /&gt;
	  accordance with the terms and conditions of this Public License.&lt;br /&gt;
 .&lt;br /&gt;
   c. BY-SA Compatible License means a license listed at&lt;br /&gt;
	  creativecommons.org/compatiblelicenses, approved by Creative&lt;br /&gt;
	  Commons as essentially the equivalent of this Public License.&lt;br /&gt;
 .&lt;br /&gt;
   d. Copyright and Similar Rights means copyright and/or similar rights&lt;br /&gt;
	  closely related to copyright including, without limitation,&lt;br /&gt;
	  performance, broadcast, sound recording, and Sui Generis Database&lt;br /&gt;
	  Rights, without regard to how the rights are labeled or&lt;br /&gt;
	  categorized. For purposes of this Public License, the rights&lt;br /&gt;
	  specified in Section 2(b)(1)-(2) are not Copyright and Similar&lt;br /&gt;
	  Rights.&lt;br /&gt;
 .&lt;br /&gt;
   e. Effective Technological Measures means those measures that, in the&lt;br /&gt;
	  absence of proper authority, may not be circumvented under laws&lt;br /&gt;
	  fulfilling obligations under Article 11 of the WIPO Copyright&lt;br /&gt;
	  Treaty adopted on December 20, 1996, and/or similar international&lt;br /&gt;
	  agreements.&lt;br /&gt;
 .&lt;br /&gt;
   f. Exceptions and Limitations means fair use, fair dealing, and/or&lt;br /&gt;
	  any other exception or limitation to Copyright and Similar Rights&lt;br /&gt;
	  that applies to Your use of the Licensed Material.&lt;br /&gt;
 .&lt;br /&gt;
   g. License Elements means the license attributes listed in the name&lt;br /&gt;
	  of a Creative Commons Public License. The License Elements of this&lt;br /&gt;
	  Public License are Attribution and ShareAlike.&lt;br /&gt;
 .&lt;br /&gt;
   h. Licensed Material means the artistic or literary work, database,&lt;br /&gt;
	  or other material to which the Licensor applied this Public&lt;br /&gt;
	  License.&lt;br /&gt;
 .&lt;br /&gt;
   i. Licensed Rights means the rights granted to You subject to the&lt;br /&gt;
	  terms and conditions of this Public License, which are limited to&lt;br /&gt;
	  all Copyright and Similar Rights that apply to Your use of the&lt;br /&gt;
	  Licensed Material and that the Licensor has authority to license.&lt;br /&gt;
 .&lt;br /&gt;
   j. Licensor means the individual(s) or entity(ies) granting rights&lt;br /&gt;
	  under this Public License.&lt;br /&gt;
 .&lt;br /&gt;
   k. Share means to provide material to the public by any means or&lt;br /&gt;
	  process that requires permission under the Licensed Rights, such&lt;br /&gt;
	  as reproduction, public display, public performance, distribution,&lt;br /&gt;
	  dissemination, communication, or importation, and to make material&lt;br /&gt;
	  available to the public including in ways that members of the&lt;br /&gt;
	  public may access the material from a place and at a time&lt;br /&gt;
	  individually chosen by them.&lt;br /&gt;
 .&lt;br /&gt;
   l. Sui Generis Database Rights means rights other than copyright&lt;br /&gt;
	  resulting from Directive 96/9/EC of the European Parliament and of&lt;br /&gt;
	  the Council of 11 March 1996 on the legal protection of databases,&lt;br /&gt;
	  as amended and/or succeeded, as well as other essentially&lt;br /&gt;
	  equivalent rights anywhere in the world.&lt;br /&gt;
 .&lt;br /&gt;
   m. You means the individual or entity exercising the Licensed Rights&lt;br /&gt;
	  under this Public License. Your has a corresponding meaning.&lt;br /&gt;
 .&lt;br /&gt;
 .&lt;br /&gt;
 Section 2 -- Scope.&lt;br /&gt;
 .&lt;br /&gt;
   a. License grant.&lt;br /&gt;
 .&lt;br /&gt;
		1. Subject to the terms and conditions of this Public License,&lt;br /&gt;
		   the Licensor hereby grants You a worldwide, royalty-free,&lt;br /&gt;
		   non-sublicensable, non-exclusive, irrevocable license to&lt;br /&gt;
		   exercise the Licensed Rights in the Licensed Material to:&lt;br /&gt;
 .&lt;br /&gt;
			 a. reproduce and Share the Licensed Material, in whole or&lt;br /&gt;
				in part; and&lt;br /&gt;
 .&lt;br /&gt;
			 b. produce, reproduce, and Share Adapted Material.&lt;br /&gt;
 .&lt;br /&gt;
		2. Exceptions and Limitations. For the avoidance of doubt, where&lt;br /&gt;
		   Exceptions and Limitations apply to Your use, this Public&lt;br /&gt;
		   License does not apply, and You do not need to comply with&lt;br /&gt;
		   its terms and conditions.&lt;br /&gt;
 .&lt;br /&gt;
		3. Term. The term of this Public License is specified in Section&lt;br /&gt;
		   6(a).&lt;br /&gt;
 .&lt;br /&gt;
		4. Media and formats; technical modifications allowed. The&lt;br /&gt;
		   Licensor authorizes You to exercise the Licensed Rights in&lt;br /&gt;
		   all media and formats whether now known or hereafter created,&lt;br /&gt;
		   and to make technical modifications necessary to do so. The&lt;br /&gt;
		   Licensor waives and/or agrees not to assert any right or&lt;br /&gt;
		   authority to forbid You from making technical modifications&lt;br /&gt;
		   necessary to exercise the Licensed Rights, including&lt;br /&gt;
		   technical modifications necessary to circumvent Effective&lt;br /&gt;
		   Technological Measures. For purposes of this Public License,&lt;br /&gt;
		   simply making modifications authorized by this Section 2(a)&lt;br /&gt;
		   (4) never produces Adapted Material.&lt;br /&gt;
 .&lt;br /&gt;
		5. Downstream recipients.&lt;br /&gt;
 .&lt;br /&gt;
			 a. Offer from the Licensor -- Licensed Material. Every&lt;br /&gt;
				recipient of the Licensed Material automatically&lt;br /&gt;
				receives an offer from the Licensor to exercise the&lt;br /&gt;
				Licensed Rights under the terms and conditions of this&lt;br /&gt;
				Public License.&lt;br /&gt;
 .&lt;br /&gt;
			 b. Additional offer from the Licensor -- Adapted Material.&lt;br /&gt;
				Every recipient of Adapted Material from You&lt;br /&gt;
				automatically receives an offer from the Licensor to&lt;br /&gt;
				exercise the Licensed Rights in the Adapted Material&lt;br /&gt;
				under the conditions of the Adapter&#039;s License You apply.&lt;br /&gt;
 .&lt;br /&gt;
			 c. No downstream restrictions. You may not offer or impose&lt;br /&gt;
				any additional or different terms or conditions on, or&lt;br /&gt;
				apply any Effective Technological Measures to, the&lt;br /&gt;
				Licensed Material if doing so restricts exercise of the&lt;br /&gt;
				Licensed Rights by any recipient of the Licensed&lt;br /&gt;
				Material.&lt;br /&gt;
 .&lt;br /&gt;
		6. No endorsement. Nothing in this Public License constitutes or&lt;br /&gt;
		   may be construed as permission to assert or imply that You&lt;br /&gt;
		   are, or that Your use of the Licensed Material is, connected&lt;br /&gt;
		   with, or sponsored, endorsed, or granted official status by,&lt;br /&gt;
		   the Licensor or others designated to receiv&lt;br /&gt;
&lt;br /&gt;
= 2026-04-23 =&lt;br /&gt;
# I&#039;ve been thinking about chaning our licensing, to something like this&lt;br /&gt;
## All hardware designs are licened under CERN-OHL-S-2.0 &lt;br /&gt;
## All code is licened under AGPL-3.0&lt;br /&gt;
## Everything else (art, documentation, etc) are CC BY-SA&lt;br /&gt;
# here&#039;s the design rational for the cern license (the s means strongly reciprocal, which is what we want) https://gitlab.com/ohwr/project/cernohl/-/wikis/uploads/0be6f561d2b4a686c5765c74be32daf9/CERN_OHL_rationale.pdf&lt;br /&gt;
# apparently creative commons license aren&#039;t OSI approved — only because they don&#039;t work for sourcecode https://opensource.stackexchange.com/questions/5021/osi-approved-license-similar-to-cc-by-sa-4-0&lt;br /&gt;
## by CC BY-SA (without NC or ND) are recommended by OSHWA for things like art and docs https://oshwa.org/resources/sharing-best-practices/&lt;br /&gt;
## hah, the footer of the OSI website (opensource.org) says that the contents of the website are licened CC BY – even though it&#039;s not OSI approved. That&#039;s a good enough endorsement for me&lt;br /&gt;
# oh, I found a CERN Discourse forum https://forums.ohwr.org/c/cernohl/53&lt;br /&gt;
## I never did get a response from OSHWA from my toot about their recommended CLAs https://chaos.social/@ecolibre/116444933464052302&lt;br /&gt;
## da fuk. the &amp;quot;register&amp;quot; button redirects to gitlab?&lt;br /&gt;
### ugh, it&#039;s some SSO OAuth (OpenID Connect). I don&#039;t trust that&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
OHWR Forum is requesting access to your account on GitLab.com.&lt;br /&gt;
 Make sure you trust OHWR Forum before authorizing.&lt;br /&gt;
&lt;br /&gt;
Vasco Guita added this OAuth application over 1 year ago. You will be redirected to forums.ohwr.org after authorizing.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
### I decllined it, and chose to create a new github account that&#039;s specific to these oshwa forums, and nothing else&lt;br /&gt;
## ok I asked about the triple-licensing here https://forums.ohwr.org/t/possible-to-triple-license-cern-ohl-s-2-0-agpl-3-0-cc-by-sa/849882&lt;br /&gt;
## ugh, the license of the licnese itself is CC BY-ND 4.0 :( https://gitlab.com/ohwr/project/cernohl/-/wikis/faq#q-i-am-using-one-of-variants-of-cern-ohl-v2-what-is-the-licence-of-the-licence-text-itself&lt;br /&gt;
### I have no intention to change it, but it would be nice if we had the abilty to add, idk, footnotes or page numbers or any trivial change if we needed&lt;br /&gt;
# hmm...the faq on the cern license say that it&#039;s *not* compatible with GPL https://gitlab.com/ohwr/project/cernohl/-/wikis/faq#q-is-cern-ohl-s-compatible-with-gpl&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Q: Is CERN-OHL-S compatible with GPL?&lt;br /&gt;
A: No...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## so we can&#039;t just license everything under both, I guess. But we might be able to specify that the hardware designs are CERN and any software is GPL, still&lt;br /&gt;
# here&#039;s a good example usage; they have the full license in LICENSE file, but they also have a &amp;quot;License Notice&amp;quot; section of their README.mde with the following https://github.com/Foundation-Devices/passport-electronics&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
You may redistribute and modify this source and make products using it under the terms of the CERN-OHL-S v2 (https://ohwr.org/cern_ohl_s_v2.txt).&lt;br /&gt;
&lt;br /&gt;
This source is distributed WITHOUT ANY EXPRESS OR IMPLIED WARRANTY, INCLUDING OF MERCHANTABILITY, SATISFACTORY QUALITY AND FITNESS FOR A PARTICULAR PURPOSE. Please see the CERN-OHL-S v2 for applicable conditions.&lt;br /&gt;
&lt;br /&gt;
Source location: foundationdevices.com/passport-electronics&lt;br /&gt;
&lt;br /&gt;
As per CERN-OHL-S v2 section 4, should You produce hardware based on this source, You must where practicable and applicable maintain the Source Location visible (1) on the packaging of the hardware, (2) on the circuit board(s) via silkscreen or copper, (3) in any documentation, and (4) on other products you make using this source.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## I especially like the &amp;quot;Source location&amp;quot; part. We can use https://eco-libre.org/p (which is our &amp;quot;projects&amp;quot; page, indended to have one page per project – each with a *very* short summary, link to the *real* docs (currently on github, but that may change to codeberg – which is why we have this simple project page on our own infra), and a list of articles that are tagged with the project&#039;s name.&lt;br /&gt;
### currently we only have one example for life-line https://www.eco-libre.org/p/life-line/ – but, again, we&#039;d want to just link to eco-libre.org/p/ so we can have a boilerplate copy-pasta for all repo&#039;s README.md files&lt;br /&gt;
# there&#039;s a 6-page guide on how to use the CERN license here https://gitlab.com/ohwr/project/cernohl/-/wikis/uploads/cf37727497ca2b5295a7ab83a40fcf5a/cern_ohl_s_v2_user_guide.pdf&lt;br /&gt;
## cool, they do recommend using git. something I advocated-for (and never really got traction-on) at OSE&lt;br /&gt;
## interesting, they recommend we create a CHANGES file, because the license requires downstream modifications to be clearly documented. And by creating a blank file, it&#039;s where they should write their downstream changes.&lt;br /&gt;
## oh wow, they specifically mention FCStd files. So the writers of this license had FreeCAD in mind. Cool!&lt;br /&gt;
## they reference SPDX standard by resue.software https://reuse.software/tutorial/&lt;br /&gt;
### apparently this is a standardized way to indicate licenses of files that are machine-readable. Because, of course there is a standard for that.&lt;br /&gt;
### interesting, they advocate for a folder LICENSES instead of a file LICENSE. that would be better for us, if we&#039;re using three.&lt;br /&gt;
### ok, apparently SPDX is a distinct product from the Linux Foundation https://spdx.org/&lt;br /&gt;
### they say all of these are valid ways to declare copyright; I like it&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2019 Jane Doe &amp;lt;jane@example.com&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: © 2019 John Doe &amp;lt;john@example.com&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: Contributors to Example Project &amp;lt;https://project.example.com&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Alice Hack and (other) contributors to Project X &amp;lt;https://git.example.com/alicehack/projectx/CONTRIBUTORS.md&amp;gt;&lt;br /&gt;
SPDX-SnippetCopyrightText: (C) Example Cooperative &amp;lt;info@coop.example.com&amp;gt;&lt;br /&gt;
© Example Corporation &amp;lt;https://corp.example.com&amp;gt;&lt;br /&gt;
Copyright 2016, 2018-2019 Joe Anybody&lt;br /&gt;
Copyright (c) Alice, some rights reserved&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
#### I especially like line 4. I think I&#039;d use that. So it would be my name, all contributors, and a link to the Attribution section of the docs&lt;br /&gt;
### they also clarify that the copyright line can omit the year or include a range, the current year, or the original year. I always thought the first year that we did a single commit was best, and they had a link to an article that argues this too. I like that. https://matija.suklje.name/how-and-why-to-properly-write-copyright-statements-in-your-code&lt;br /&gt;
### they have a section on license compatiblity https://reuse.software/faq/#license-compatibility&lt;br /&gt;
#### apparently GPL isn&#039;t compatible with lots of license, because it says you can&#039;t add restrictions to it. that would make it incompatible with CC NC licenses, for example.&lt;br /&gt;
### god, both CERN and reuse.software want us to add comments or a cooresponding &#039;&amp;lt;file&amp;gt;.license&#039; file to *every* file to indicate its license. I was hoping instead that we could just put text that says &amp;quot;hardware files are CERN and software is GPL&amp;quot; but idk if that&#039;ll work :/&lt;br /&gt;
#### they have an &amp;quot;eaiser&amp;quot; method of defining a REUSE.toml file – but that&#039;s per-dir. So I&#039;d have to put all software in one dir and all CAD files in another dir. I guess that would work, but eventually someone will probably break it due to human error and volunteer chaos https://reuse.software/faq/#license-compatibility&lt;br /&gt;
## the faq had said they were going to apply to the FSF, but fsf.org has no mention of the CERN OHL&lt;br /&gt;
### this thread goes into some detail on why they &amp;quot;gave up&amp;quot; on GPL compatibility https://forums.ohwr.org/t/concerns-on-the-impact-of-ohl-on-gpl-community/848400&lt;br /&gt;
#### also some good history on the OHL from Javier Serrano at CERN. He said he gave a presentation on why using GPL was good for hardware, but after the Q&amp;amp;A he realized it wasn&#039;t. That was in 2015 at ORConf.&lt;br /&gt;
#### that thread linked to another cool open hardware forum. GOSH! https://forum.openhardware.science/&lt;br /&gt;
### here&#039;s the thread where CERN applied for OHL to be covered by OSI (which it got) https://lists.opensource.org/pipermail/license-review_lists.opensource.org/2020-June/004892.html&lt;br /&gt;
## back to the usage guide on CERN OHL, they also mention Debian&#039;s DEP5. DEP5 used to be supported by reuse.software, but it was deprecated&lt;br /&gt;
### DEP-5 is another machine-readable copyright/license standard, currently documented here https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/&lt;br /&gt;
#### man, I don&#039;t know which I like better: human-readable legaleze (well, readable only to a subset of superhumans) or machine-readable complexity&lt;br /&gt;
#### they use machine-readable license shortcodes, which are defined by spdx here https://spdx.org/licenses/&lt;br /&gt;
#### so we want&lt;br /&gt;
##### CERN-OHL-S-2.0&lt;br /&gt;
##### AGPL-3.0-or-later&lt;br /&gt;
##### CC-BY-SA-4.0&lt;br /&gt;
#### curiously, only two of the CC licenses are marked as &amp;quot;FSF libre&amp;quot; = CC-BY-4.0 and CC-BY-SA-4.0. None are &amp;quot;OSI Approved&amp;quot; (but see above because OSI uses them for docs!)&lt;br /&gt;
#### hah, cern is the opposite. their 2.0 OHLs are &amp;quot;OSI approved&amp;quot; but not &amp;quot;FSF libre&amp;quot;&lt;br /&gt;
#### the AGPL-3.0-or-later (or -only) is both &amp;quot;OSI approved&amp;quot; *and* &amp;quot;FSF libre&amp;quot; huh&lt;br /&gt;
### anyway, the DEP5 has a similar system to define regex-like globs of files under different licenses&lt;br /&gt;
### the end of the spec includes a &amp;quot;complex&amp;quot; example&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/&lt;br /&gt;
Source: https://www.example.com/code/venus&lt;br /&gt;
Upstream-Name: Planet Venus&lt;br /&gt;
Upstream-Contact: John Doe &amp;lt;jdoe@example.com&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Files:&lt;br /&gt;
 *&lt;br /&gt;
Copyright: 2008, John Doe &amp;lt;jdoe@example.com&amp;gt;&lt;br /&gt;
		   2007, Jane Smith &amp;lt;jsmith@example.org&amp;gt;&lt;br /&gt;
		   2007, Joe Average &amp;lt;joe@example.org&amp;gt;&lt;br /&gt;
		   2007, J. Random User &amp;lt;jr@users.example.com&amp;gt;&lt;br /&gt;
License: PSF-2&lt;br /&gt;
&lt;br /&gt;
Files:&lt;br /&gt;
 debian/*&lt;br /&gt;
Copyright: 2008, Dan Developer &amp;lt;dan@debian.example.com&amp;gt;&lt;br /&gt;
License: permissive&lt;br /&gt;
 Copying and distribution of this package, with or without modification,&lt;br /&gt;
 are permitted in any medium without royalty provided the copyright notice&lt;br /&gt;
 and this notice are preserved.&lt;br /&gt;
&lt;br /&gt;
Files:&lt;br /&gt;
 debian/patches/theme-diveintomark.patch&lt;br /&gt;
Copyright: 2008, Joe Hacker &amp;lt;hack@example.org&amp;gt;&lt;br /&gt;
License: GPL-2+&lt;br /&gt;
&lt;br /&gt;
Files:&lt;br /&gt;
 planet/vendor/compat_logging/*&lt;br /&gt;
Copyright: 2002, Mark Smith &amp;lt;msmith@example.org&amp;gt;&lt;br /&gt;
License: MIT&lt;br /&gt;
 [LICENSE TEXT]&lt;br /&gt;
&lt;br /&gt;
Files:&lt;br /&gt;
 planet/vendor/httplib2/*&lt;br /&gt;
Copyright: 2006, John Brown &amp;lt;brown@example.org&amp;gt;&lt;br /&gt;
License: MIT2&lt;br /&gt;
 Unspecified MIT style license.&lt;br /&gt;
&lt;br /&gt;
Files:&lt;br /&gt;
 planet/vendor/feedparser.py&lt;br /&gt;
Copyright: 2007, Mike Smith &amp;lt;mike@example.org&amp;gt;&lt;br /&gt;
License: PSF-2&lt;br /&gt;
&lt;br /&gt;
Files:&lt;br /&gt;
 planet/vendor/htmltmpl.py&lt;br /&gt;
Copyright: 2004, Thomas Brown &amp;lt;coder@example.org&amp;gt;&lt;br /&gt;
License: GPL-2+&lt;br /&gt;
&lt;br /&gt;
License: PSF-2&lt;br /&gt;
 [LICENSE TEXT]&lt;br /&gt;
&lt;br /&gt;
License: GPL-2+&lt;br /&gt;
 This program is free software; you can redistribute it and/or modify&lt;br /&gt;
 it under the terms of the GNU General Public License as published by&lt;br /&gt;
 the Free Software Foundation; either version 2 of the License, or&lt;br /&gt;
 (at your option) any later version.&lt;br /&gt;
 .&lt;br /&gt;
 This program is distributed in the hope that it will be useful,&lt;br /&gt;
 but WITHOUT ANY WARRANTY; without even the implied warranty of&lt;br /&gt;
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the&lt;br /&gt;
 GNU General Public License for more details.&lt;br /&gt;
 .&lt;br /&gt;
 You should have received a copy of the GNU General Public License&lt;br /&gt;
 along with this package; if not, see &amp;amp;lt;https://www.gnu.org/licenses/&amp;amp;gt;.&lt;br /&gt;
Comment:&lt;br /&gt;
 On Debian systems, the full text of the GNU General Public License&lt;br /&gt;
 version 2 can be found in the file &#039;/usr/share/common-licenses/GPL-2&#039;.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
### I was wondering if I could match all files of a given type at any depth, and it looks like this is accounted-for&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Patterns match pathnames that start at the root of the source tree. Thus, “Makefile.in” matches only the file at the root of the tree, but “*/Makefile.in” matches at any depth.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
### oh, it also says globs include slashes&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Only the wildcards * and ? apply; the former matches any number of characters (including none), the latter a single character. Both match slashes (/) and leading dots, unlike shell globs. The pattern *.in therefore matches any file whose name ends in .in anywhere in the source tree, not just at the top level.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
### so I could do something like&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Files:&lt;br /&gt;
 *&lt;br /&gt;
Copyright: 2023 Michael Altfield and Eco-Libre&lt;br /&gt;
License: CC-BY-SA-4.0&lt;br /&gt;
&lt;br /&gt;
Files:&lt;br /&gt;
 *.FCStd&lt;br /&gt;
Copyright: 2023 Michael Altfield and Eco-Libre&lt;br /&gt;
License: CERN-OHL-S-2.0&lt;br /&gt;
&lt;br /&gt;
Files:&lt;br /&gt;
 *.py&lt;br /&gt;
Copyright: 2023 Michael Altfield and Eco-Libre&lt;br /&gt;
License: AGPL-3.0-or-later&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
### but then it&#039;s not clear which overrrides the others&lt;br /&gt;
### oh, it says the last one that matches applies. So I did that perfect&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Multiple Files stanzas are allowed. The last stanza that matches a particular file applies to it. More general stanzas should therefore be given first, followed by more specific overrides.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
### honestly, that seems like the perfect happy-medium. It&#039;s less to maintain (or for maintainers to screw-up) than .license files everywhere (per REUSE). so it&#039;s more long-term durable. I just need to think of all possible file extensions for code that we&#039;ll use (it&#039;ll be more than just .py files, I&#039;m sure) and hardware files (stl would be CC, so that&#039;s caught by the first one but OpenSCAD could foreseably be one)&lt;br /&gt;
### hmm...I wonder how kdenlive files should be licensed. It&#039;s used to make media, but not the media itself.&lt;br /&gt;
### I asked my question on Stack Exchange too https://opensource.stackexchange.com/questions/15745/possible-to-triple-license-cern-ohl-s-2-0-agpl-3-0-cc-by-sa&lt;br /&gt;
### I also asked about kdenlive files here https://opensource.stackexchange.com/questions/15746/best-libre-license-for-kdenlive-files&lt;br /&gt;
## back to the usage guide of the CERN OHL. they do say you should use the SPDX headers, but that&#039;s REUSE – not DEP5&lt;br /&gt;
## they also recommend adding a &amp;quot;+&amp;quot; for &amp;quot;-or-later&amp;quot;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
CERN-OHL-S-2.0+&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## but I guess I have to place trust in FSF and/or CERN that they won&#039;t become evil and fuck-up future licenses to be not-libre. hmm. imagine if they got bought-out by John Deere.. Yeah, it&#039;s probably better to pin to the current version, and just do the copyright transfer in the CLA. Then we can control the license, and change it if we ever discover some new tech that necessitates changes to a new license&lt;br /&gt;
## for the copyright, they suggest &amp;quot;and others&amp;quot; – that might be better than just &amp;quot;and contributors to Eco-Libre&amp;quot;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Suggestion: You can optionally include a copyright notice to be printed&lt;br /&gt;
on the Product (remember you must keep intact any Notices in the source,&lt;br /&gt;
though). If you do, and your design includes part of other designs, you&lt;br /&gt;
should at least acknowledge the work is not all your own by using e.g.&lt;br /&gt;
Copyright c 2020 Sam Smith and others. In any case, do not include the&lt;br /&gt;
CERN logo.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# well we&#039;ll see if I got any answers on the forums&lt;br /&gt;
# in the meantime, I want to finish my CLA agreements&lt;br /&gt;
# yesterday I made a very slick looking libreoffice document with the individual CLA, but I realized today that it would be better if I could store it in reST and generate the PDF using sphinx or pandoc&lt;br /&gt;
## so, yeah, it would absolutely be better, but I really think I&#039;m letting perfect be the enemy of the good here. I&#039;m already spending weeks just to finish the ConfirmAccount extension on the wiki – just because I didn&#039;t have a Terms of Service, which sent me down this rabbit hole.&lt;br /&gt;
## I&#039;m going to make the reST -&amp;gt; PDF part a TODO. The libreoffice file is currently 64 KB and the PDF is 95 KB. I&#039;ll probably have maybe 4-10x that, as I add a corporate CLA and also some other less-important agreements for volunteers (I agree not to use AI. I agree to follow the CoC. Etc)&lt;br /&gt;
## oh wtf. I finished making the libreoffice for the corporate version of the contract (it&#039;s called &amp;quot;entity&amp;quot;) but the only difference in the file&#039;s contents is literally the subtitle&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Individual Contributor Exclusive License Agreement&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Entity Contributor Exclusive License Agreement&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## I also diff&#039;d the html version, just in-case it was a bug. same thing&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;h2 id=&amp;quot;tmp-subtitle&amp;quot;&amp;gt;&amp;lt;span id=&amp;quot;tmp-contributor-type&amp;quot;&amp;gt;Individual&amp;lt;/span&amp;gt; Contributor &amp;lt;span id=&amp;quot;tmp-contributor-exclusivity-1&amp;quot; class=&amp;quot;tmp-contributor-exclusivity-1&amp;quot;&amp;gt;Exclusive&amp;lt;/span&amp;gt; License Agreement&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;h2 id=&amp;quot;tmp-subtitle&amp;quot;&amp;gt;&amp;lt;span id=&amp;quot;tmp-contributor-type&amp;quot;&amp;gt;Entity&amp;lt;/span&amp;gt; Contributor &amp;lt;span id=&amp;quot;tmp-contributor-exclusivity-1&amp;quot; class=&amp;quot;tmp-contributor-exclusivity-1&amp;quot;&amp;gt;Exclusive&amp;lt;/span&amp;gt; License Agreement&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## maybe there would be differences if I chose a different patent option?&lt;br /&gt;
# idk, but I guess I only need one doc...&lt;br /&gt;
# TODO: finish the CLA docs in LibreOffice, put them on github somewhere, then do the other volunteer agreements, and then sign them myself&lt;br /&gt;
&lt;br /&gt;
= 2026-04-22 =&lt;br /&gt;
# picking up where we left-off yesterday, we&#039;re looking at examples of open-source CLAs&lt;br /&gt;
# Ideally we want a simple one for the wiki an a strong legal one for future volunteers to sign&lt;br /&gt;
# OpenJS has these https://openjsf.org/cla&lt;br /&gt;
## indivdual https://images.prismic.io/openjsf/4c740999-4bd7-4f69-8c4a-b80db0919690_OpenJS-Foundation-ICLA-2020-09-23.pdf&lt;br /&gt;
## corporate https://images.prismic.io/openjsf/7f4dc103-c6cf-41ab-a2e8-42248e8a45f2_OpenJS-Foundation-CCLA-2020-09-23.pdf&lt;br /&gt;
## they say they were made by the Linux Foundation&#039;s EasyCLA tool https://easycla.lfx.linuxfoundation.org/#/&lt;br /&gt;
### oh, we saw that one yesterday; it&#039;s authalled :/&lt;br /&gt;
# CNCF (kubernetes) also uses EasyCLA, which is apparently integrated into GitHub https://github.com/kubernetes/community/blob/main/CLA.md&lt;br /&gt;
# OpenBMC has these two; no idea what the doc&#039;s license is &lt;br /&gt;
## individual https://github.com/kubernetes/community/blob/main/CLA.md&lt;br /&gt;
## corporate https://drive.google.com/file/d/1d-2M8ng_Dl2j1odsvZ8o1QHAdHB-pNSH/edit&lt;br /&gt;
# here&#039;s python&#039;s; the license is unsaid https://www.python.org/psf/contrib/&lt;br /&gt;
# Apollo&#039;s derived its from Apache&#039;s https://contribute.apollographql.com/&lt;br /&gt;
# here&#039;s microsoft&#039;s https://opensource.microsoft.com/cla/&lt;br /&gt;
## actual doc is here; it&#039;s CC0 https://opensource.microsoft.com/pdf/microsoft-contribution-license-agreement.pdf&lt;br /&gt;
## it&#039;s pretty software focused, but I like that it&#039;s licensed openly&lt;br /&gt;
## it&#039;s also only good for individual contributions&lt;br /&gt;
# here&#039;s a short &amp;amp; sweet one by musescore, but it&#039;s not clear how it&#039;s licensed https://musescore.org/en/cla&lt;br /&gt;
# here&#039;s openmediavault&#039;s https://www.openmediavault.org/contributoragreement.html&lt;br /&gt;
## doc is actually here; it&#039;s derived from apache&#039;s CLA https://www.openmediavault.org/wp-content/uploads/2013/12/oca.pdf&lt;br /&gt;
# the link to openstack (openinfra) was bad; looks like they replaced their CLA with the Linux Foundation&#039;s DOC https://www.openmediavault.org/wp-content/uploads/2013/12/oca.pdf&lt;br /&gt;
# puppet uses this CLA Assistant one, based on Apache&#039;s https://cla-assistant.io/puppetlabs/&lt;br /&gt;
# sangoma uses this one, also using CLA Assistant, but it doesn&#039;t mention apache https://web.archive.org/web/20230429235353/https://oss-cla.sangoma.com/asterisk/asterisk&lt;br /&gt;
# the W3C&#039;s looks pretty good, and specifc to them https://www.w3.org/community/about/process/cla/&lt;br /&gt;
## the license isn&#039;t explicilty stated, but the footer says it&#039;s website contents is licensed by, uh, their own &amp;quot;document license - 2023 version&amp;quot; https://www.w3.org/copyright/document-license-2023/&lt;br /&gt;
# here&#039;s one by zed; it&#039;s not clear how the text is licensed https://zed.dev/cla&lt;br /&gt;
# KDE announced theirs here https://ev.kde.org/2008/08/22/2008-08-22-fsfe-welcomes-kde-s-fiduciary-license-agreement/&lt;br /&gt;
## actual doc about the FLA is here https://ev.kde.org/rules/fla/&lt;br /&gt;
## actual doc is here&lt;br /&gt;
### individuals https://ev.kde.org/resources/FLA-2.0-individual.pdf&lt;br /&gt;
### companies https://ev.kde.org/resources/FLA-2.0-entity.pdf&lt;br /&gt;
## they seem pretty good, albeit they&#039;re very focused on software (not hardware)&lt;br /&gt;
## it says it&#039;s based on this https://contributoragreements.org/&lt;br /&gt;
### and that site&#039;s footer says its contents is CC BY-SA 4.0. Perfect.&lt;br /&gt;
## I went through their CLA Chooser generator/wizard https://contributoragreements.org/ca-cla-chooser/#&lt;br /&gt;
# that spat-out two, one for individual and one for corporate&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
	Fiduciary License Agreement 2.0&lt;br /&gt;
	based on the&lt;br /&gt;
	Individual Contributor Exclusive License Agreement&lt;br /&gt;
	(including the Traditional Patent License OPTION)&lt;br /&gt;
&lt;br /&gt;
	Thank you for your interest in contributing to Eco-Libre&#039;s ____________________ (&amp;quot;We&amp;quot; or &amp;quot;Us&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
	The purpose of this contributor agreement (&amp;quot;Agreement&amp;quot;) is to clarify and document the rights granted by contributors to Us. To make this document effective, please follow the instructions at ____________________.&lt;br /&gt;
	Preamble&lt;br /&gt;
&lt;br /&gt;
	Software is deeply embedded in all aspects of our lives and it is important that it empower, rather than restrict us. Free Software gives everybody the rights to use, understand, adapt and share software. These rights help support other fundamental freedoms like freedom of speech, press and privacy.&lt;br /&gt;
&lt;br /&gt;
	Development of Free Software can follow many patterns. In some cases whole development is handled by a sole programmer or a small group of people. But usually, the creation and maintenance of software is a complex process that requires the contribution of many individuals. This also affects who owns the rights to the software. In the latter case, rights in software are owned jointly by a great number of individuals.&lt;br /&gt;
&lt;br /&gt;
	To tackle this issue some projects require a full copyright assignment to be signed by all contributors. The problem with such assignments is that they often lack checks and balances that would protect the contributors from potential abuse of power from the new copyright holder.&lt;br /&gt;
&lt;br /&gt;
	FSFE’s Fiduciary License Agreement (FLA) was created by the Free Software Foundation Europe e.V. with just that in mind – to concentrate all deciding power within one entity and prevent fragmentation of rights on one hand, while on the other preventing that single entity from abusing its power. The main aim is to ensure that the software covered under the FLA will forever remain Free Software.&lt;br /&gt;
&lt;br /&gt;
	This process only serves for the transfer of economic rights. So-called moral rights (e.g. authors right to be identified as author) remain with the original author(s) and are inalienable.&lt;br /&gt;
	How to use this FLA&lt;br /&gt;
&lt;br /&gt;
	If You are an employee and have created the Contribution as part of your employment, You need to have Your employer approve this Agreement. If You do not own the Copyright in Your Contribution, any other author of the Contribution should also sign this. In any event, please contact Us at https://www.eco-libre.org/contact.&lt;br /&gt;
	Definitions&lt;br /&gt;
&lt;br /&gt;
	&amp;quot;You&amp;quot; means the individual Copyright owner who Submits a Contribution to Us; or&lt;br /&gt;
&lt;br /&gt;
	if the Copyright in the Contribution is held by a Legal Entity and the Contribution is being Submitted to Us on behalf of such Legal Entity, &amp;quot;You&amp;quot; means such Legal Entity.&lt;br /&gt;
&lt;br /&gt;
	&amp;quot;Contribution&amp;quot; means any original work of authorship, including any original modifications or additions to an existing work of authorship, Submitted for inclusion into Material by You to Us, in which you own the Copyright.&lt;br /&gt;
&lt;br /&gt;
	&amp;quot;Copyright&amp;quot; means all rights protecting works of authorship, including copyright, moral and neighboring rights, as appropriate, for the full term of their existence.&lt;br /&gt;
&lt;br /&gt;
	&amp;quot;Material&amp;quot; means the software and/or documentation of ____________________ that we make available to third parties.&lt;br /&gt;
&lt;br /&gt;
	&amp;quot;Submit&amp;quot; means any act by which a Contribution is transferred to Us by You by means of tangible or intangible media, including but not limited to electronic mailing lists, source code control systems, and issue tracking systems, but excluding any transfer that is conspicuously marked or otherwise designated in writing by You as &amp;quot;Not a Contribution.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
	&amp;quot;Documentation&amp;quot; means any non-software portion of a Contribution.&lt;br /&gt;
	License grant&lt;br /&gt;
	Copyright license to Us&lt;br /&gt;
&lt;br /&gt;
	Subject to the terms and conditions of this Agreement, You hereby grant to Us a worldwide, royalty-free, exclusive, perpetual and irrevocable (except as stated in Section &amp;quot;Term&amp;quot;) license, with the right to transfer an unlimited number of non-exclusive licenses or to grant sublicenses to third parties, under the Copyright covering the Contribution to use the Contribution by all means, including, but not limited to:&lt;br /&gt;
		publish the Contribution,&lt;br /&gt;
		modify the Contribution,&lt;br /&gt;
		prepare derivative works based upon or containing the Contribution and/or to combine the Contribution with other Materials,&lt;br /&gt;
		reproduce the Contribution in original or modified form,&lt;br /&gt;
		distribute, to make the Contribution available to the public, display and publicly perform the Contribution in original or modified form.&lt;br /&gt;
	Moral rights&lt;br /&gt;
&lt;br /&gt;
	Moral Rights remain unaffected to the extent they are recognized and not waivable by applicable law. Notwithstanding, You may add your name to the attribution mechanism customary used in the Materials you Contribute to, such as the header of the source code files of Your Contribution, and We will respect this attribution when using Your Contribution.&lt;br /&gt;
	Copyright license back to You&lt;br /&gt;
&lt;br /&gt;
	Upon such grant of rights to Us, We immediately grant to You a worldwide, royalty-free, non-exclusive, perpetual and irrevocable license, with the right to transfer an unlimited number of non-exclusive licenses or to grant sublicenses to third parties, under the Copyright covering the Contribution to use the Contribution by all means, including, but not limited to:&lt;br /&gt;
		publish the Contribution,&lt;br /&gt;
		modify the Contribution,&lt;br /&gt;
		prepare derivative works based upon or containing the Contribution and/or to combine the Contribution with other Materials,&lt;br /&gt;
		reproduce the Contribution in original or modified form,&lt;br /&gt;
		distribute, to make the Contribution available to the public, display and publicly perform the Contribution in original or modified form.&lt;br /&gt;
&lt;br /&gt;
	This license back is limited to the Contribution and does not provide any rights to the Material.&lt;br /&gt;
	Patents&lt;br /&gt;
	Patent license&lt;br /&gt;
&lt;br /&gt;
	Subject to the terms and conditions of this Agreement You hereby grant to Us and to recipients of Materials distributed by Us a worldwide, royalty-free, non-exclusive, perpetual and irrevocable (except as stated in Subsection &amp;quot;Revocation of patent license&amp;quot;) patent license, with the right to transfer an unlimited number of non-exclusive licenses or to grant sublicenses to third parties, to make, have made, use, sell, offer for sale, import and otherwise transfer the Contribution and the Contribution in combination with any Material (and portions of such combination). This license applies to all patents owned or controlled by You, whether already acquired or hereafter acquired, that would be infringed by making, having made, using, selling, offering for sale, importing or otherwise transferring of Your Contribution(s) alone or by combination of Your Contribution(s) with any Material.&lt;br /&gt;
	Revocation of patent license&lt;br /&gt;
&lt;br /&gt;
	You reserve the right to revoke the patent license stated in Subsection &amp;quot;Patent license&amp;quot; if We make any infringement claim that is targeted at your Contribution and not asserted for a Defensive Purpose. An assertion of claims of the Patents shall be considered for a &amp;quot;Defensive Purpose&amp;quot; if the claims are asserted against an entity that has filed, maintained, threatened, or voluntarily participated in a patent infringement lawsuit against Us or any of Our licensees.&lt;br /&gt;
	License obligations by Us&lt;br /&gt;
&lt;br /&gt;
	We may, but are under no obligation to, include the Contribution You Submitted to Us into the Material.&lt;br /&gt;
&lt;br /&gt;
	We agree to (sub)license the Contribution or any Materials containing, based on or derived from your Contribution under the terms of any licenses that qualify as [Free Software](https://www.gnu.org/philosophy/free-sw.html) as defined by the Free Software Foundation and at the same time qualify as [Open Source](https://opensource.org/osd) as defined by the Open Source Initiative. For clarification, should we make available any Material under a non-free or non-open license, we must make a version of such Material available under a free and open license too.&lt;br /&gt;
&lt;br /&gt;
	More specifically and in strict accordance with the above paragraph, we agree to (sub)license the Contribution or any Materials containing, based on or derived from the Contribution only under the terms of the following license(s) GPL-3.0, MIT (including any right to adopt any future version of a license if permitted), whereby any non-free or non-open licenses need to be listed as well.&lt;br /&gt;
&lt;br /&gt;
	We agree to license patents owned or controlled by You only to the extent necessary to (sub)license Your Contribution(s) and the combination of Your Contribution(s) with the Material under the terms of any licenses the Free Software Foundation classifies as Free Software licenses and which are approved by the Open Source Initiative as Open Source licenses..&lt;br /&gt;
	Disclaimer&lt;br /&gt;
	**We acknowledge that you provide the Contribution &amp;quot;as is&amp;quot;.** **More particularly, You disclaim all express or implied warranties including, without limitation, any implied warranty of satisfactory quality, fitness for a particular purpose and non-infringement. To the extent that any such warranties cannot be disclaimed, such warranty is limited in duration and extent to the minimum period and extent permitted by law.**&lt;br /&gt;
	Consequential damage waiver&lt;br /&gt;
&lt;br /&gt;
	**To the maximum extent permitted by applicable law, in no event will You or We be liable for any loss of profits, loss of anticipated savings, loss of data, indirect, special, incidental, consequential and exemplary damages arising out of this Agreement regardless of the legal or equitable theory (contract, tort or otherwise) upon which the claim is based.**&lt;br /&gt;
	Approximation of disclaimer and damage waiver&lt;br /&gt;
&lt;br /&gt;
	**If the disclaimer and damage waiver mentioned in Subsection &amp;quot;Disclaimer of warranty&amp;quot; and Section &amp;quot;Consequential damage waiver&amp;quot; cannot be given legal effect under applicable local law, reviewing courts shall apply local law that most closely approximates an absolute waiver of all civil or contractual liability in connection with the Contribution.**&lt;br /&gt;
	Term&lt;br /&gt;
&lt;br /&gt;
	This Agreement shall come into effect upon Your acceptance of the terms and conditions.&lt;br /&gt;
&lt;br /&gt;
	This Agreement shall apply for the term of the copyright and patents licensed here. However, You shall have the right to terminate the Agreement if We do not fulfill the obligations as set forth in Section &amp;quot;License obligations by Us&amp;quot;. Such termination must be made in writing.&lt;br /&gt;
&lt;br /&gt;
	In the event of a termination of this Agreement Sections &amp;quot;Disclaimer&amp;quot;, &amp;quot;Term&amp;quot; and &amp;quot;Miscellaneous&amp;quot; shall survive such termination and shall remain in full force thereafter. For the avoidance of doubt, Free and Open Source Software (sub)licenses that have already been granted for Contributions at the date of the termination shall remain in full force after the termination of this Agreement.&lt;br /&gt;
	Miscellaneous&lt;br /&gt;
&lt;br /&gt;
	This Agreement and all disputes, claims, actions, suits or other proceedings arising out of this agreement or relating in any way to it shall be governed by the laws of Ecuador excluding its private international law provisions.&lt;br /&gt;
&lt;br /&gt;
	This Agreement sets out the entire agreement between You and Us for Your Contributions to Us and overrides all other agreements or understandings.&lt;br /&gt;
&lt;br /&gt;
	In case of Your death, this agreement shall continue with Your heirs. In case of more than one heir, all heirs must exercise their rights through a commonly authorized person.&lt;br /&gt;
&lt;br /&gt;
	If any provision of this Agreement is found void and unenforceable, such provision will be replaced to the extent possible with a provision that comes closest to the meaning of the original provision and that is enforceable. The terms and conditions set forth in this Agreement shall apply notwithstanding any failure of essential purpose of this Agreement or any limited remedy to the maximum extent possible under law.&lt;br /&gt;
&lt;br /&gt;
	You agree to notify Us of any facts or circumstances of which you become aware that would make Your representations under this Agreement inaccurate in any respect.&lt;br /&gt;
	You&lt;br /&gt;
	Date:	&lt;br /&gt;
	Name:	&lt;br /&gt;
	Title:	&lt;br /&gt;
	Address:	&lt;br /&gt;
	Us&lt;br /&gt;
	Date:	&lt;br /&gt;
	Name:	&lt;br /&gt;
	Title:	&lt;br /&gt;
	Address:	&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
	Fiduciary License Agreement 2.0&lt;br /&gt;
	based on the&lt;br /&gt;
	Entity Contributor Exclusive License Agreement&lt;br /&gt;
	(including the Traditional Patent License OPTION)&lt;br /&gt;
&lt;br /&gt;
	Thank you for your interest in contributing to Eco-Libre&#039;s ____________________ (&amp;quot;We&amp;quot; or &amp;quot;Us&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
	The purpose of this contributor agreement (&amp;quot;Agreement&amp;quot;) is to clarify and document the rights granted by contributors to Us. To make this document effective, please follow the instructions at ____________________.&lt;br /&gt;
	Preamble&lt;br /&gt;
&lt;br /&gt;
	Software is deeply embedded in all aspects of our lives and it is important that it empower, rather than restrict us. Free Software gives everybody the rights to use, understand, adapt and share software. These rights help support other fundamental freedoms like freedom of speech, press and privacy.&lt;br /&gt;
&lt;br /&gt;
	Development of Free Software can follow many patterns. In some cases whole development is handled by a sole programmer or a small group of people. But usually, the creation and maintenance of software is a complex process that requires the contribution of many individuals. This also affects who owns the rights to the software. In the latter case, rights in software are owned jointly by a great number of individuals.&lt;br /&gt;
&lt;br /&gt;
	To tackle this issue some projects require a full copyright assignment to be signed by all contributors. The problem with such assignments is that they often lack checks and balances that would protect the contributors from potential abuse of power from the new copyright holder.&lt;br /&gt;
&lt;br /&gt;
	FSFE’s Fiduciary License Agreement (FLA) was created by the Free Software Foundation Europe e.V. with just that in mind – to concentrate all deciding power within one entity and prevent fragmentation of rights on one hand, while on the other preventing that single entity from abusing its power. The main aim is to ensure that the software covered under the FLA will forever remain Free Software.&lt;br /&gt;
&lt;br /&gt;
	This process only serves for the transfer of economic rights. So-called moral rights (e.g. authors right to be identified as author) remain with the original author(s) and are inalienable.&lt;br /&gt;
	How to use this FLA&lt;br /&gt;
&lt;br /&gt;
	If You are an employee and have created the Contribution as part of your employment, You need to have Your employer approve this Agreement. If You do not own the Copyright in Your Contribution, any other author of the Contribution should also sign this. In any event, please contact Us at https://www.eco-libre.org/contact.&lt;br /&gt;
	Definitions&lt;br /&gt;
&lt;br /&gt;
	&amp;quot;You&amp;quot; means the individual Copyright owner who Submits a Contribution to Us; or&lt;br /&gt;
&lt;br /&gt;
	if the Copyright in the Contribution is held by a Legal Entity and the Contribution is being Submitted to Us on behalf of such Legal Entity, &amp;quot;You&amp;quot; means such Legal Entity.&lt;br /&gt;
&lt;br /&gt;
	&amp;quot;Contribution&amp;quot; means any original work of authorship, including any original modifications or additions to an existing work of authorship, Submitted for inclusion into Material by You to Us, in which you own the Copyright.&lt;br /&gt;
&lt;br /&gt;
	&amp;quot;Copyright&amp;quot; means all rights protecting works of authorship, including copyright, moral and neighboring rights, as appropriate, for the full term of their existence.&lt;br /&gt;
&lt;br /&gt;
	&amp;quot;Material&amp;quot; means the software and/or documentation of ____________________ that we make available to third parties.&lt;br /&gt;
&lt;br /&gt;
	&amp;quot;Submit&amp;quot; means any act by which a Contribution is transferred to Us by You by means of tangible or intangible media, including but not limited to electronic mailing lists, source code control systems, and issue tracking systems, but excluding any transfer that is conspicuously marked or otherwise designated in writing by You as &amp;quot;Not a Contribution.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
	&amp;quot;Documentation&amp;quot; means any non-software portion of a Contribution.&lt;br /&gt;
	License grant&lt;br /&gt;
	Copyright license to Us&lt;br /&gt;
&lt;br /&gt;
	Subject to the terms and conditions of this Agreement, You hereby grant to Us a worldwide, royalty-free, exclusive, perpetual and irrevocable (except as stated in Section &amp;quot;Term&amp;quot;) license, with the right to transfer an unlimited number of non-exclusive licenses or to grant sublicenses to third parties, under the Copyright covering the Contribution to use the Contribution by all means, including, but not limited to:&lt;br /&gt;
		publish the Contribution,&lt;br /&gt;
		modify the Contribution,&lt;br /&gt;
		prepare derivative works based upon or containing the Contribution and/or to combine the Contribution with other Materials,&lt;br /&gt;
		reproduce the Contribution in original or modified form,&lt;br /&gt;
		distribute, to make the Contribution available to the public, display and publicly perform the Contribution in original or modified form.&lt;br /&gt;
	Moral rights&lt;br /&gt;
&lt;br /&gt;
	Moral Rights remain unaffected to the extent they are recognized and not waivable by applicable law. Notwithstanding, You may add your name to the attribution mechanism customary used in the Materials you Contribute to, such as the header of the source code files of Your Contribution, and We will respect this attribution when using Your Contribution.&lt;br /&gt;
	Copyright license back to You&lt;br /&gt;
&lt;br /&gt;
	Upon such grant of rights to Us, We immediately grant to You a worldwide, royalty-free, non-exclusive, perpetual and irrevocable license, with the right to transfer an unlimited number of non-exclusive licenses or to grant sublicenses to third parties, under the Copyright covering the Contribution to use the Contribution by all means, including, but not limited to:&lt;br /&gt;
		publish the Contribution,&lt;br /&gt;
		modify the Contribution,&lt;br /&gt;
		prepare derivative works based upon or containing the Contribution and/or to combine the Contribution with other Materials,&lt;br /&gt;
		reproduce the Contribution in original or modified form,&lt;br /&gt;
		distribute, to make the Contribution available to the public, display and publicly perform the Contribution in original or modified form.&lt;br /&gt;
&lt;br /&gt;
	This license back is limited to the Contribution and does not provide any rights to the Material.&lt;br /&gt;
	Patents&lt;br /&gt;
	Patent license&lt;br /&gt;
&lt;br /&gt;
	Subject to the terms and conditions of this Agreement You hereby grant to Us and to recipients of Materials distributed by Us a worldwide, royalty-free, non-exclusive, perpetual and irrevocable (except as stated in Subsection &amp;quot;Revocation of patent license&amp;quot;) patent license, with the right to transfer an unlimited number of non-exclusive licenses or to grant sublicenses to third parties, to make, have made, use, sell, offer for sale, import and otherwise transfer the Contribution and the Contribution in combination with any Material (and portions of such combination). This license applies to all patents owned or controlled by You, whether already acquired or hereafter acquired, that would be infringed by making, having made, using, selling, offering for sale, importing or otherwise transferring of Your Contribution(s) alone or by combination of Your Contribution(s) with any Material.&lt;br /&gt;
	Revocation of patent license&lt;br /&gt;
&lt;br /&gt;
	You reserve the right to revoke the patent license stated in Subsection &amp;quot;Patent license&amp;quot; if We make any infringement claim that is targeted at your Contribution and not asserted for a Defensive Purpose. An assertion of claims of the Patents shall be considered for a &amp;quot;Defensive Purpose&amp;quot; if the claims are asserted against an entity that has filed, maintained, threatened, or voluntarily participated in a patent infringement lawsuit against Us or any of Our licensees.&lt;br /&gt;
	License obligations by Us&lt;br /&gt;
&lt;br /&gt;
	We may, but are under no obligation to, include the Contribution You Submitted to Us into the Material.&lt;br /&gt;
&lt;br /&gt;
	We agree to (sub)license the Contribution or any Materials containing, based on or derived from your Contribution under the terms of any licenses that qualify as [Free Software](https://www.gnu.org/philosophy/free-sw.html) as defined by the Free Software Foundation and at the same time qualify as [Open Source](https://opensource.org/osd) as defined by the Open Source Initiative. For clarification, should we make available any Material under a non-free or non-open license, we must make a version of such Material available under a free and open license too.&lt;br /&gt;
&lt;br /&gt;
	More specifically and in strict accordance with the above paragraph, we agree to (sub)license the Contribution or any Materials containing, based on or derived from the Contribution only under the terms of the following license(s) GPL-3.0, MIT (including any right to adopt any future version of a license if permitted), whereby any non-free or non-open licenses need to be listed as well.&lt;br /&gt;
&lt;br /&gt;
	We agree to license patents owned or controlled by You only to the extent necessary to (sub)license Your Contribution(s) and the combination of Your Contribution(s) with the Material under the terms of any licenses the Free Software Foundation classifies as Free Software licenses and which are approved by the Open Source Initiative as Open Source licenses..&lt;br /&gt;
	Disclaimer&lt;br /&gt;
	**We acknowledge that you provide the Contribution &amp;quot;as is&amp;quot;.** **More particularly, You disclaim all express or implied warranties including, without limitation, any implied warranty of satisfactory quality, fitness for a particular purpose and non-infringement. To the extent that any such warranties cannot be disclaimed, such warranty is limited in duration and extent to the minimum period and extent permitted by law.**&lt;br /&gt;
	Consequential damage waiver&lt;br /&gt;
&lt;br /&gt;
	**To the maximum extent permitted by applicable law, in no event will You or We be liable for any loss of profits, loss of anticipated savings, loss of data, indirect, special, incidental, consequential and exemplary damages arising out of this Agreement regardless of the legal or equitable theory (contract, tort or otherwise) upon which the claim is based.**&lt;br /&gt;
	Approximation of disclaimer and damage waiver&lt;br /&gt;
&lt;br /&gt;
	**If the disclaimer and damage waiver mentioned in Subsection &amp;quot;Disclaimer of warranty&amp;quot; and Section &amp;quot;Consequential damage waiver&amp;quot; cannot be given legal effect under applicable local law, reviewing courts shall apply local law that most closely approximates an absolute waiver of all civil or contractual liability in connection with the Contribution.**&lt;br /&gt;
	Term&lt;br /&gt;
&lt;br /&gt;
	This Agreement shall come into effect upon Your acceptance of the terms and conditions.&lt;br /&gt;
&lt;br /&gt;
	This Agreement shall apply for the term of the copyright and patents licensed here. However, You shall have the right to terminate the Agreement if We do not fulfill the obligations as set forth in Section &amp;quot;License obligations by Us&amp;quot;. Such termination must be made in writing.&lt;br /&gt;
&lt;br /&gt;
	In the event of a termination of this Agreement Sections &amp;quot;Disclaimer&amp;quot;, &amp;quot;Term&amp;quot; and &amp;quot;Miscellaneous&amp;quot; shall survive such termination and shall remain in full force thereafter. For the avoidance of doubt, Free and Open Source Software (sub)licenses that have already been granted for Contributions at the date of the termination shall remain in full force after the termination of this Agreement.&lt;br /&gt;
	Miscellaneous&lt;br /&gt;
&lt;br /&gt;
	This Agreement and all disputes, claims, actions, suits or other proceedings arising out of this agreement or relating in any way to it shall be governed by the laws of Ecuador excluding its private international law provisions.&lt;br /&gt;
&lt;br /&gt;
	This Agreement sets out the entire agreement between You and Us for Your Contributions to Us and overrides all other agreements or understandings.&lt;br /&gt;
&lt;br /&gt;
	In case of Your death, this agreement shall continue with Your heirs. In case of more than one heir, all heirs must exercise their rights through a commonly authorized person.&lt;br /&gt;
&lt;br /&gt;
	If any provision of this Agreement is found void and unenforceable, such provision will be replaced to the extent possible with a provision that comes closest to the meaning of the original provision and that is enforceable. The terms and conditions set forth in this Agreement shall apply notwithstanding any failure of essential purpose of this Agreement or any limited remedy to the maximum extent possible under law.&lt;br /&gt;
&lt;br /&gt;
	You agree to notify Us of any facts or circumstances of which you become aware that would make Your representations under this Agreement inaccurate in any respect.&lt;br /&gt;
	You&lt;br /&gt;
	Date:	&lt;br /&gt;
	Name:	&lt;br /&gt;
	Title:	&lt;br /&gt;
	Address:	&lt;br /&gt;
	Us&lt;br /&gt;
	Date:	&lt;br /&gt;
	Name:	&lt;br /&gt;
	Title:	&lt;br /&gt;
	Address:	&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## the generator didn&#039;t let me choose &amp;quot;CC BY-SA&amp;quot; as one of the licnese, so I chose &amp;quot;MIT&amp;quot; so we could find/replace it later&lt;br /&gt;
# oh, if I change the first page&#039;s option to &amp;quot;let me do what I want&amp;quot; then the second page has an option to include CC BY-SA. that changed it to:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	Contributor Agreement&lt;br /&gt;
	Individual Contributor Exclusive License Agreement&lt;br /&gt;
	(including the Traditional Patent License OPTION)&lt;br /&gt;
&lt;br /&gt;
	Thank you for your interest in contributing to Eco-Libre&#039;s ____________________ (&amp;quot;We&amp;quot; or &amp;quot;Us&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
	The purpose of this contributor agreement (&amp;quot;Agreement&amp;quot;) is to clarify and document the rights granted by contributors to Us. To make this document effective, please follow the instructions at ____________________.&lt;br /&gt;
	How to use this Contributor Agreement&lt;br /&gt;
&lt;br /&gt;
	If You are an employee and have created the Contribution as part of your employment, You need to have Your employer approve this Agreement. If You do not own the Copyright in Your Contribution, any other author of the Contribution should also sign this. In any event, please contact Us at https://www.eco-libre.org/contact.&lt;br /&gt;
	Definitions&lt;br /&gt;
&lt;br /&gt;
	&amp;quot;You&amp;quot; means the individual Copyright owner who Submits a Contribution to Us; or&lt;br /&gt;
&lt;br /&gt;
	if the Copyright in the Contribution is held by a Legal Entity and the Contribution is being Submitted to Us on behalf of such Legal Entity, &amp;quot;You&amp;quot; means such Legal Entity.&lt;br /&gt;
&lt;br /&gt;
	&amp;quot;Contribution&amp;quot; means any original work of authorship, including any original modifications or additions to an existing work of authorship, Submitted for inclusion into Material by You to Us, in which you own the Copyright.&lt;br /&gt;
&lt;br /&gt;
	&amp;quot;Copyright&amp;quot; means all rights protecting works of authorship, including copyright, moral and neighboring rights, as appropriate, for the full term of their existence.&lt;br /&gt;
&lt;br /&gt;
	&amp;quot;Material&amp;quot; means the software and/or documentation of ____________________ that we make available to third parties.&lt;br /&gt;
&lt;br /&gt;
	&amp;quot;Submit&amp;quot; means any act by which a Contribution is transferred to Us by You by means of tangible or intangible media, including but not limited to electronic mailing lists, source code control systems, and issue tracking systems, but excluding any transfer that is conspicuously marked or otherwise designated in writing by You as &amp;quot;Not a Contribution.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
	&amp;quot;Documentation&amp;quot; means any non-software portion of a Contribution.&lt;br /&gt;
	License grant&lt;br /&gt;
	Copyright license to Us&lt;br /&gt;
&lt;br /&gt;
	Subject to the terms and conditions of this Agreement, You hereby grant to Us a worldwide, royalty-free, exclusive, perpetual and irrevocable (except as stated in Section &amp;quot;Term&amp;quot;) license, with the right to transfer an unlimited number of non-exclusive licenses or to grant sublicenses to third parties, under the Copyright covering the Contribution to use the Contribution by all means, including, but not limited to:&lt;br /&gt;
		publish the Contribution,&lt;br /&gt;
		modify the Contribution,&lt;br /&gt;
		prepare derivative works based upon or containing the Contribution and/or to combine the Contribution with other Materials,&lt;br /&gt;
		reproduce the Contribution in original or modified form,&lt;br /&gt;
		distribute, to make the Contribution available to the public, display and publicly perform the Contribution in original or modified form.&lt;br /&gt;
	Moral rights&lt;br /&gt;
&lt;br /&gt;
	Moral Rights remain unaffected to the extent they are recognized and not waivable by applicable law. Notwithstanding, You may add your name to the attribution mechanism customary used in the Materials you Contribute to, such as the header of the source code files of Your Contribution, and We will respect this attribution when using Your Contribution.&lt;br /&gt;
	Copyright license back to You&lt;br /&gt;
&lt;br /&gt;
	Upon such grant of rights to Us, We immediately grant to You a worldwide, royalty-free, non-exclusive, perpetual and irrevocable license, with the right to transfer an unlimited number of non-exclusive licenses or to grant sublicenses to third parties, under the Copyright covering the Contribution to use the Contribution by all means, including, but not limited to:&lt;br /&gt;
		publish the Contribution,&lt;br /&gt;
		modify the Contribution,&lt;br /&gt;
		prepare derivative works based upon or containing the Contribution and/or to combine the Contribution with other Materials,&lt;br /&gt;
		reproduce the Contribution in original or modified form,&lt;br /&gt;
		distribute, to make the Contribution available to the public, display and publicly perform the Contribution in original or modified form.&lt;br /&gt;
&lt;br /&gt;
	This license back is limited to the Contribution and does not provide any rights to the Material.&lt;br /&gt;
	Patents&lt;br /&gt;
	Patent license&lt;br /&gt;
&lt;br /&gt;
	Subject to the terms and conditions of this Agreement You hereby grant to Us and to recipients of Materials distributed by Us a worldwide, royalty-free, non-exclusive, perpetual and irrevocable (except as stated in Subsection &amp;quot;Revocation of patent license&amp;quot;) patent license, with the right to transfer an unlimited number of non-exclusive licenses or to grant sublicenses to third parties, to make, have made, use, sell, offer for sale, import and otherwise transfer the Contribution and the Contribution in combination with any Material (and portions of such combination). This license applies to all patents owned or controlled by You, whether already acquired or hereafter acquired, that would be infringed by making, having made, using, selling, offering for sale, importing or otherwise transferring of Your Contribution(s) alone or by combination of Your Contribution(s) with any Material.&lt;br /&gt;
	Revocation of patent license&lt;br /&gt;
&lt;br /&gt;
	You reserve the right to revoke the patent license stated in Subsection &amp;quot;Patent license&amp;quot; if We make any infringement claim that is targeted at your Contribution and not asserted for a Defensive Purpose. An assertion of claims of the Patents shall be considered for a &amp;quot;Defensive Purpose&amp;quot; if the claims are asserted against an entity that has filed, maintained, threatened, or voluntarily participated in a patent infringement lawsuit against Us or any of Our licensees.&lt;br /&gt;
	License obligations by Us&lt;br /&gt;
&lt;br /&gt;
	We may, but are under no obligation to, include the Contribution You Submitted to Us into the Material.&lt;br /&gt;
&lt;br /&gt;
	We agree to license the Contribution only under the terms of the following license(s) GPL-3.0 (including any right to adopt any future version of a license if permitted), whereby any non-free or non-open licenses need to be listed as well.&lt;br /&gt;
&lt;br /&gt;
	In addition, We may use the following licenses for Documentation in the Contribution: CC-BY-SA-4.0 (including any right to adopt any future version of a license).&lt;br /&gt;
&lt;br /&gt;
	We agree to license patents owned or controlled by You only to the extent necessary to (sub)license Your Contribution(s) and the combination of Your Contribution(s) with the Material under the terms of the following GPL-3.0 license(s).&lt;br /&gt;
	Disclaimer&lt;br /&gt;
	**We acknowledge that you provide the Contribution &amp;quot;as is&amp;quot;.** **More particularly, You disclaim all express or implied warranties including, without limitation, any implied warranty of satisfactory quality, fitness for a particular purpose and non-infringement. To the extent that any such warranties cannot be disclaimed, such warranty is limited in duration and extent to the minimum period and extent permitted by law.**&lt;br /&gt;
	Consequential damage waiver&lt;br /&gt;
&lt;br /&gt;
	**To the maximum extent permitted by applicable law, in no event will You or We be liable for any loss of profits, loss of anticipated savings, loss of data, indirect, special, incidental, consequential and exemplary damages arising out of this Agreement regardless of the legal or equitable theory (contract, tort or otherwise) upon which the claim is based.**&lt;br /&gt;
	Approximation of disclaimer and damage waiver&lt;br /&gt;
&lt;br /&gt;
	**If the disclaimer and damage waiver mentioned in Subsection &amp;quot;Disclaimer of warranty&amp;quot; and Section &amp;quot;Consequential damage waiver&amp;quot; cannot be given legal effect under applicable local law, reviewing courts shall apply local law that most closely approximates an absolute waiver of all civil or contractual liability in connection with the Contribution.**&lt;br /&gt;
	Term&lt;br /&gt;
&lt;br /&gt;
	This Agreement shall come into effect upon Your acceptance of the terms and conditions.&lt;br /&gt;
&lt;br /&gt;
	This Agreement shall apply for the term of the copyright and patents licensed here. However, You shall have the right to terminate the Agreement if We do not fulfill the obligations as set forth in Section &amp;quot;License obligations by Us&amp;quot;. Such termination must be made in writing.&lt;br /&gt;
&lt;br /&gt;
	In the event of a termination of this Agreement Sections &amp;quot;Disclaimer&amp;quot;, &amp;quot;Term&amp;quot; and &amp;quot;Miscellaneous&amp;quot; shall survive such termination and shall remain in full force thereafter. For the avoidance of doubt, Free and Open Source Software (sub)licenses that have already been granted for Contributions at the date of the termination shall remain in full force after the termination of this Agreement.&lt;br /&gt;
	Miscellaneous&lt;br /&gt;
&lt;br /&gt;
	This Agreement and all disputes, claims, actions, suits or other proceedings arising out of this agreement or relating in any way to it shall be governed by the laws of Ecuador excluding its private international law provisions.&lt;br /&gt;
&lt;br /&gt;
	This Agreement sets out the entire agreement between You and Us for Your Contributions to Us and overrides all other agreements or understandings.&lt;br /&gt;
&lt;br /&gt;
	In case of Your death, this agreement shall continue with Your heirs. In case of more than one heir, all heirs must exercise their rights through a commonly authorized person.&lt;br /&gt;
&lt;br /&gt;
	If any provision of this Agreement is found void and unenforceable, such provision will be replaced to the extent possible with a provision that comes closest to the meaning of the original provision and that is enforceable. The terms and conditions set forth in this Agreement shall apply notwithstanding any failure of essential purpose of this Agreement or any limited remedy to the maximum extent possible under law.&lt;br /&gt;
&lt;br /&gt;
	You agree to notify Us of any facts or circumstances of which you become aware that would make Your representations under this Agreement inaccurate in any respect.&lt;br /&gt;
	You&lt;br /&gt;
	Date:	&lt;br /&gt;
	Name:	&lt;br /&gt;
	Title:	&lt;br /&gt;
	Address:	&lt;br /&gt;
	Us&lt;br /&gt;
	Date:	&lt;br /&gt;
	Name:	&lt;br /&gt;
	Title:	&lt;br /&gt;
	Address:	&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
	Contributor Agreement&lt;br /&gt;
	Entity Contributor Exclusive License Agreement&lt;br /&gt;
	(including the Traditional Patent License OPTION)&lt;br /&gt;
&lt;br /&gt;
	Thank you for your interest in contributing to Eco-Libre&#039;s ____________________ (&amp;quot;We&amp;quot; or &amp;quot;Us&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
	The purpose of this contributor agreement (&amp;quot;Agreement&amp;quot;) is to clarify and document the rights granted by contributors to Us. To make this document effective, please follow the instructions at ____________________.&lt;br /&gt;
	How to use this Contributor Agreement&lt;br /&gt;
&lt;br /&gt;
	If You are an employee and have created the Contribution as part of your employment, You need to have Your employer approve this Agreement. If You do not own the Copyright in Your Contribution, any other author of the Contribution should also sign this. In any event, please contact Us at https://www.eco-libre.org/contact.&lt;br /&gt;
	Definitions&lt;br /&gt;
&lt;br /&gt;
	&amp;quot;You&amp;quot; means the individual Copyright owner who Submits a Contribution to Us; or&lt;br /&gt;
&lt;br /&gt;
	if the Copyright in the Contribution is held by a Legal Entity and the Contribution is being Submitted to Us on behalf of such Legal Entity, &amp;quot;You&amp;quot; means such Legal Entity.&lt;br /&gt;
&lt;br /&gt;
	&amp;quot;Contribution&amp;quot; means any original work of authorship, including any original modifications or additions to an existing work of authorship, Submitted for inclusion into Material by You to Us, in which you own the Copyright.&lt;br /&gt;
&lt;br /&gt;
	&amp;quot;Copyright&amp;quot; means all rights protecting works of authorship, including copyright, moral and neighboring rights, as appropriate, for the full term of their existence.&lt;br /&gt;
&lt;br /&gt;
	&amp;quot;Material&amp;quot; means the software and/or documentation of ____________________ that we make available to third parties.&lt;br /&gt;
&lt;br /&gt;
	&amp;quot;Submit&amp;quot; means any act by which a Contribution is transferred to Us by You by means of tangible or intangible media, including but not limited to electronic mailing lists, source code control systems, and issue tracking systems, but excluding any transfer that is conspicuously marked or otherwise designated in writing by You as &amp;quot;Not a Contribution.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
	&amp;quot;Documentation&amp;quot; means any non-software portion of a Contribution.&lt;br /&gt;
	License grant&lt;br /&gt;
	Copyright license to Us&lt;br /&gt;
&lt;br /&gt;
	Subject to the terms and conditions of this Agreement, You hereby grant to Us a worldwide, royalty-free, exclusive, perpetual and irrevocable (except as stated in Section &amp;quot;Term&amp;quot;) license, with the right to transfer an unlimited number of non-exclusive licenses or to grant sublicenses to third parties, under the Copyright covering the Contribution to use the Contribution by all means, including, but not limited to:&lt;br /&gt;
		publish the Contribution,&lt;br /&gt;
		modify the Contribution,&lt;br /&gt;
		prepare derivative works based upon or containing the Contribution and/or to combine the Contribution with other Materials,&lt;br /&gt;
		reproduce the Contribution in original or modified form,&lt;br /&gt;
		distribute, to make the Contribution available to the public, display and publicly perform the Contribution in original or modified form.&lt;br /&gt;
	Moral rights&lt;br /&gt;
&lt;br /&gt;
	Moral Rights remain unaffected to the extent they are recognized and not waivable by applicable law. Notwithstanding, You may add your name to the attribution mechanism customary used in the Materials you Contribute to, such as the header of the source code files of Your Contribution, and We will respect this attribution when using Your Contribution.&lt;br /&gt;
	Copyright license back to You&lt;br /&gt;
&lt;br /&gt;
	Upon such grant of rights to Us, We immediately grant to You a worldwide, royalty-free, non-exclusive, perpetual and irrevocable license, with the right to transfer an unlimited number of non-exclusive licenses or to grant sublicenses to third parties, under the Copyright covering the Contribution to use the Contribution by all means, including, but not limited to:&lt;br /&gt;
		publish the Contribution,&lt;br /&gt;
		modify the Contribution,&lt;br /&gt;
		prepare derivative works based upon or containing the Contribution and/or to combine the Contribution with other Materials,&lt;br /&gt;
		reproduce the Contribution in original or modified form,&lt;br /&gt;
		distribute, to make the Contribution available to the public, display and publicly perform the Contribution in original or modified form.&lt;br /&gt;
&lt;br /&gt;
	This license back is limited to the Contribution and does not provide any rights to the Material.&lt;br /&gt;
	Patents&lt;br /&gt;
	Patent license&lt;br /&gt;
&lt;br /&gt;
	Subject to the terms and conditions of this Agreement You hereby grant to Us and to recipients of Materials distributed by Us a worldwide, royalty-free, non-exclusive, perpetual and irrevocable (except as stated in Subsection &amp;quot;Revocation of patent license&amp;quot;) patent license, with the right to transfer an unlimited number of non-exclusive licenses or to grant sublicenses to third parties, to make, have made, use, sell, offer for sale, import and otherwise transfer the Contribution and the Contribution in combination with any Material (and portions of such combination). This license applies to all patents owned or controlled by You, whether already acquired or hereafter acquired, that would be infringed by making, having made, using, selling, offering for sale, importing or otherwise transferring of Your Contribution(s) alone or by combination of Your Contribution(s) with any Material.&lt;br /&gt;
	Revocation of patent license&lt;br /&gt;
&lt;br /&gt;
	You reserve the right to revoke the patent license stated in Subsection &amp;quot;Patent license&amp;quot; if We make any infringement claim that is targeted at your Contribution and not asserted for a Defensive Purpose. An assertion of claims of the Patents shall be considered for a &amp;quot;Defensive Purpose&amp;quot; if the claims are asserted against an entity that has filed, maintained, threatened, or voluntarily participated in a patent infringement lawsuit against Us or any of Our licensees.&lt;br /&gt;
	License obligations by Us&lt;br /&gt;
&lt;br /&gt;
	We may, but are under no obligation to, include the Contribution You Submitted to Us into the Material.&lt;br /&gt;
&lt;br /&gt;
	We agree to license the Contribution only under the terms of the following license(s) GPL-3.0 (including any right to adopt any future version of a license if permitted), whereby any non-free or non-open licenses need to be listed as well.&lt;br /&gt;
&lt;br /&gt;
	In addition, We may use the following licenses for Documentation in the Contribution: CC-BY-SA-4.0 (including any right to adopt any future version of a license).&lt;br /&gt;
&lt;br /&gt;
	We agree to license patents owned or controlled by You only to the extent necessary to (sub)license Your Contribution(s) and the combination of Your Contribution(s) with the Material under the terms of the following GPL-3.0 license(s).&lt;br /&gt;
	Disclaimer&lt;br /&gt;
	**We acknowledge that you provide the Contribution &amp;quot;as is&amp;quot;.** **More particularly, You disclaim all express or implied warranties including, without limitation, any implied warranty of satisfactory quality, fitness for a particular purpose and non-infringement. To the extent that any such warranties cannot be disclaimed, such warranty is limited in duration and extent to the minimum period and extent permitted by law.**&lt;br /&gt;
	Consequential damage waiver&lt;br /&gt;
&lt;br /&gt;
	**To the maximum extent permitted by applicable law, in no event will You or We be liable for any loss of profits, loss of anticipated savings, loss of data, indirect, special, incidental, consequential and exemplary damages arising out of this Agreement regardless of the legal or equitable theory (contract, tort or otherwise) upon which the claim is based.**&lt;br /&gt;
	Approximation of disclaimer and damage waiver&lt;br /&gt;
&lt;br /&gt;
	**If the disclaimer and damage waiver mentioned in Subsection &amp;quot;Disclaimer of warranty&amp;quot; and Section &amp;quot;Consequential damage waiver&amp;quot; cannot be given legal effect under applicable local law, reviewing courts shall apply local law that most closely approximates an absolute waiver of all civil or contractual liability in connection with the Contribution.**&lt;br /&gt;
	Term&lt;br /&gt;
&lt;br /&gt;
	This Agreement shall come into effect upon Your acceptance of the terms and conditions.&lt;br /&gt;
&lt;br /&gt;
	This Agreement shall apply for the term of the copyright and patents licensed here. However, You shall have the right to terminate the Agreement if We do not fulfill the obligations as set forth in Section &amp;quot;License obligations by Us&amp;quot;. Such termination must be made in writing.&lt;br /&gt;
&lt;br /&gt;
	In the event of a termination of this Agreement Sections &amp;quot;Disclaimer&amp;quot;, &amp;quot;Term&amp;quot; and &amp;quot;Miscellaneous&amp;quot; shall survive such termination and shall remain in full force thereafter. For the avoidance of doubt, Free and Open Source Software (sub)licenses that have already been granted for Contributions at the date of the termination shall remain in full force after the termination of this Agreement.&lt;br /&gt;
	Miscellaneous&lt;br /&gt;
&lt;br /&gt;
	This Agreement and all disputes, claims, actions, suits or other proceedings arising out of this agreement or relating in any way to it shall be governed by the laws of Ecuador excluding its private international law provisions.&lt;br /&gt;
&lt;br /&gt;
	This Agreement sets out the entire agreement between You and Us for Your Contributions to Us and overrides all other agreements or understandings.&lt;br /&gt;
&lt;br /&gt;
	In case of Your death, this agreement shall continue with Your heirs. In case of more than one heir, all heirs must exercise their rights through a commonly authorized person.&lt;br /&gt;
&lt;br /&gt;
	If any provision of this Agreement is found void and unenforceable, such provision will be replaced to the extent possible with a provision that comes closest to the meaning of the original provision and that is enforceable. The terms and conditions set forth in this Agreement shall apply notwithstanding any failure of essential purpose of this Agreement or any limited remedy to the maximum extent possible under law.&lt;br /&gt;
&lt;br /&gt;
	You agree to notify Us of any facts or circumstances of which you become aware that would make Your representations under this Agreement inaccurate in any respect.&lt;br /&gt;
	You&lt;br /&gt;
	Date:	&lt;br /&gt;
	Name:	&lt;br /&gt;
	Title:	&lt;br /&gt;
	Address:	&lt;br /&gt;
	Us&lt;br /&gt;
	Date:	&lt;br /&gt;
	Name:	&lt;br /&gt;
	Title:	&lt;br /&gt;
	Address:	&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# well, I&#039;m still not sure what to use. In the meantime, I went ahead and updated the wiki ToS to include an unaltered version of the Linux Foundation&#039;s DCO https://wiki.eco-libre.org/wiki/Eco-Libre:Terms_of_Service&lt;br /&gt;
## I also added a section on the license, because the DCO (which I can&#039;t edit) referes to &amp;quot;the open source license indicated in the file&amp;quot;&lt;br /&gt;
## alright, that&#039;s a placeholder. I&#039;ll wait to see if we get a response from the home automation folks and/or the OSHWA.&lt;br /&gt;
# oh, TIL that OSE *does* use CERN OHL-S-2.0 for hardware files https://wiki.opensourceecology.org/wiki/OSE_License_for_Distributive_Economics&lt;br /&gt;
## but their wiki is a mess. it says dual-licensed under the GNU Free Documentation License and CC BY-SA on this page https://wiki.opensourceecology.org/wiki/Media-wiki:Copyright&lt;br /&gt;
## while this page says just CC BY-SA for wiki and design files, CERN OHL-S-2.0 for hardware files, and GPL v3 for code https://wiki.opensourceecology.org/wiki/OSE_License_for_Distributive_Economics&lt;br /&gt;
## there&#039;s a section on CAs, which just says that we need a paper with NAME OF PERSON and SPECIFIED DATE https://wiki.opensourceecology.org/wiki/OSE_License_for_Distributive_Economics&lt;br /&gt;
## looks like they started working on a &amp;quot;distributed enterprise license&amp;quot; – but I can&#039;t find anything but a sketch outline&lt;br /&gt;
### https://wiki.opensourceecology.org/wiki/OSE_License_for_Distributive_Enterprise&lt;br /&gt;
### https://wiki.opensourceecology.org/wiki/OSE_License_for_Distributive_Economics_-_Requirements&lt;br /&gt;
## ah ha! apparently Marcin&#039;s legal advisor volunteer person suggested https://contributoragreements.org per https://wiki.opensourceecology.org/wiki/Contributor_Agreement&lt;br /&gt;
# alright, I think I&#039;ll do one of the contributoragreements.org developed above. I&#039;ll draft it into a nice-looking odt -&amp;gt; pdf and upload it to opensign. then we&#039;ll be ready to accept volunteer contributions to our repos &amp;amp; wiki, like, very legally sound &lt;br /&gt;
&lt;br /&gt;
= 2026-04-21 =&lt;br /&gt;
# I published and did the social media marketing for our announcement that we&#039;re accepting tax-deductable donations via raft today https://www.eco-libre.org/raft-2026/&lt;br /&gt;
# I, again, was unable to post to our X account.&lt;br /&gt;
## even though I enter the correct password, they demand an OTP sent to the email address used when the account was registered&lt;br /&gt;
## I guess they fired all the ex-twitter engineers with a brain, because they can&#039;t see that their emails are bouncing?&lt;br /&gt;
## I, maybe the 3rd or 4th time, told them that tutanota deleted our email address. And asked them to update the email address to one @eco-libre.org, which is pretty easy for a junior engineer to authenticate, since it&#039;s literally the domain assoaciated with our account. Auth done. QED. Here&#039;s their response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Reply above this line.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Hello,&lt;br /&gt;
&lt;br /&gt;
We=E2=80=99re writing to let you know that we=E2=80=99re unable to verify y=&lt;br /&gt;
ou as the account owner. We know this is disappointing to hear, but we can=&lt;br /&gt;
=E2=80=99t assist you further with accessing your account.&lt;br /&gt;
&lt;br /&gt;
If you know which email address or phone number is associated with the acco=&lt;br /&gt;
unt, and you no longer have access to that email or connected phone number,=&lt;br /&gt;
 please contact your service provider for assistance.&lt;br /&gt;
&lt;br /&gt;
For privacy reasons, we can=E2=80=99t provide any information about this ac=&lt;br /&gt;
count=E2=80=99s registered email address or phone number&lt;br /&gt;
&lt;br /&gt;
We understand it=E2=80=99s frustrating to get locked out of an account, but=&lt;br /&gt;
 we have these policies to protect accounts and private data. We appreciate=&lt;br /&gt;
 your understanding.&lt;br /&gt;
&lt;br /&gt;
You=E2=80=99re more than welcome to create a new account to get back onto X=&lt;br /&gt;
.&lt;br /&gt;
&lt;br /&gt;
Please do not respond to this email as replies to this account are not moni=&lt;br /&gt;
tored.&lt;br /&gt;
&lt;br /&gt;
Thanks,&lt;br /&gt;
X Support&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## So, fuck X. This is why we shouldn&#039;t use corporate, non-federated social media.&lt;br /&gt;
## oh, and I was also unable to log into reddit. Similar issue. I get this, just for a GET on /login – before they even asked me for creds!&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
You&#039;ve been blocked by network security.&lt;br /&gt;
If you think you&#039;ve been blocked by mistake, file a ticket below and we&#039;ll look into it.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# again, this is why we use better non-corportate social media. Now on lemmy!&lt;br /&gt;
## https://chaos.social/@ecolibre/116443354810130299&lt;br /&gt;
## https://slrpnk.net/post/36851013&lt;br /&gt;
# woah, mastodon has a new link under the post that says &amp;quot;More from Eco-Libre Team&amp;quot; which links here https://mastodon.social/@eco-libre@www.eco-libre.org&lt;br /&gt;
## that&#039;s, uhh, our wordpress site&#039;s ActivityPub plugins&#039; actor! The one that I couldn&#039;t finish setting-up due to the 5xx error (see previous log entries)&lt;br /&gt;
## so i guess it&#039;s working under defaults&lt;br /&gt;
## as I found before, it doesn&#039;t show previous content until after you subscribe, so the page on mastodon doesn&#039;t even show today&#039;s post :(&lt;br /&gt;
## I&#039;m thinking the best way to use this is to not really advertise wordpress as an endpoint. But, rather, to just setup our other federated-service-x-native account to subscribe and auto-boost our wordpress posts. That way we don&#039;t even have to login to mastodon or lemmy or whatever else. We can just automate the distribution from wordpress via ActivityPub to all our other federated social media accounts.&lt;br /&gt;
## anyway, I subscribed to @eco-libre@www.eco-libre.org from my personal mastodon account and our eco-libre mastodon account. let&#039;s see what that looks like over time.&lt;br /&gt;
# I logged-into our raft (private) discourse to ask if they have a mastodon account https://raft.talk/t/following-raft-on-the-fediverse/45/1&lt;br /&gt;
## I also followd-up with a thread in which I asked about a vector logo. Nathan (founder) said they don&#039;t have one, so I spent about an hour generating a few different decent-looking vectors from the png using inkscape&#039;s Trace Bitmap tool, and shared it – so others can have it in the future https://raft.talk/t/raft-logo-vector-svg/31/3&lt;br /&gt;
## I also realized that I had started (but not finished) asking the community for advice on how to get volunteers from &amp;quot;volutneer social year&amp;quot; programs like the Freiwilliges Soziales Jahr in Germany or the European Solidarity Corps or the US Peace Corps. So I finished that https://raft.talk/t/getting-state-sponsored-volunteers-voluntary-social-year/46&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Does anyone have experience here in getting volunteers via State-sponsored programs, like the US Peace Core, Germany&#039;s Voluntary Social Year (Freiwilliges Soziales Jahr), or the EU Solidarity Corps?&lt;br /&gt;
&lt;br /&gt;
 * https://en.wikipedia.org/wiki/Voluntary_social_year&lt;br /&gt;
 * https://en.wikipedia.org/wiki/European_Solidarity_Corps&lt;br /&gt;
&lt;br /&gt;
I&#039;ve met a *lot* of Germans (and one person from Liechtenstein!) who took their [gap year](https://en.wikipedia.org/wiki/Gap_year) off to go abroad and help some cool non-profit.&lt;br /&gt;
&lt;br /&gt;
Our project&#039;s mission is to develop and document [open-source appropriate technology](https://en.wikipedia.org/wiki/Open-source_appropriate_technology) to enfranchise sustainable communities&#039; human rights. And we need volunteers!&lt;br /&gt;
&lt;br /&gt;
I&#039;m wondering if anyone else here has experience satisfying the requirements of such orgs, so that we can get listed in their &amp;quot;directory of cool nonprofits abroad&amp;quot; that their want-to-be-volunteers will see (and can apply-to).&lt;br /&gt;
&lt;br /&gt;
I imagine that one key requirement is met by us being able to provide Raft&#039;s IRS Determination Letter. What else do we need to do? Where do we apply?&lt;br /&gt;
&lt;br /&gt;
Can anyone with experience provide tips (or a link to a guide?) on how to get volunteers abroad doing a &amp;quot;voluntary social year&amp;quot;?&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# ...&lt;br /&gt;
# back to Terms of Use, which is where we left-off on the wiki&#039;s config of ConfirmAccount extension&lt;br /&gt;
## honestly, we probably should write a ToS for all volunteers, which extends beyond just the wiki&lt;br /&gt;
## I have already drafted (not yet published) some agreements for volunteers, but we haven&#039;t had any in-person volunteers that required us to use it&lt;br /&gt;
## so, I guess, we need distinct agreements for people who volunteer remotely vs volunteer in-person&lt;br /&gt;
## in any case, even in-person volunteers are going to start remotely &amp;gt;99% of the time, so we should probably figure out some system for them to &amp;quot;sign a document&amp;quot; such that a copy gets sent to them and stored with us&lt;br /&gt;
## the first thing that comes to the top of my head is copyleft. We need folks to agree that all of their contributions to Eco-Libre will be copyleft under dual license of CC BY-SA and GNU GPL.&lt;br /&gt;
## can I find some libre service that&#039;s like docusign for this? https://alternativeto.net/software/docusign/&lt;br /&gt;
### DocuSeal https://www.docuseal.com&lt;br /&gt;
#### + free cloud account (limited to 10 field types and 10 requests emails per month)&lt;br /&gt;
#### + self-hostable https://github.com/docusealco/docuseal&lt;br /&gt;
#### - docker https://www.docuseal.com/install&lt;br /&gt;
#### - even self -hosted solution has usage limits without buying a license https://www.docuseal.com/pricing&lt;br /&gt;
### OpenSign https://www.opensignlabs.com&lt;br /&gt;
#### + free cloud account (limited to 14 field types)&lt;br /&gt;
#### + self hostable https://www.docuseal.com&lt;br /&gt;
#### - docker https://docs.opensignlabs.com/docs/category/docker&lt;br /&gt;
#### + self-hosted doesn&#039;t appear to have any restrictions&lt;br /&gt;
### Documenso https://docs.opensignlabs.com/docs/category/docker&lt;br /&gt;
#### + free cloud account (limited to 5 documents per month) https://documenso.com/pricing&lt;br /&gt;
#### + self-hostable https://github.com/documenso/documenso&lt;br /&gt;
#### - docker https://docs.documenso.com/docs/self-hosting/deployment&lt;br /&gt;
#### + baremetal (non-docker) installation is documented https://github.com/documenso/documenso&lt;br /&gt;
#### - it&#039;s nodejs w/ npm&lt;br /&gt;
### LibreSign https://libresign.coop/&lt;br /&gt;
#### - no free cloud plan https://libresign.coop/pricing/&lt;br /&gt;
#### + self-hostable https://github.com/LibreSign/libresign&lt;br /&gt;
#### - no docs for self-hosting? installtion guide?&lt;br /&gt;
#### + github says it&#039;s a nextcloud app&lt;br /&gt;
## well, of thse, I think OpenSign or DDocumenso are the best options. my biggest concern is: can we export everything from the site, if they ever eliminate their free plan (or we outgrow them)?&lt;br /&gt;
## let&#039;s create accounts with both and get a feel for it&lt;br /&gt;
### well, shit, the signup page for documenso included their &amp;quot;sign here&amp;quot; digital field. It was so shitty, it nearly crashed my browser. so let&#039;s try open sign instead.&lt;br /&gt;
## ugh, OpenSign requires a phone number on sign-up&lt;br /&gt;
### ugh, password policy is dumb. it rejected a &amp;gt;50 char password because it requires a special symbol. makes me question their security. fortunately, these documents would need to be public, anyway.&lt;br /&gt;
### it accepted a bullshit phone number. good&lt;br /&gt;
### I immediately went to settings&lt;br /&gt;
#### I changed the document download filename format to include the date. It always bothers me when documents aren&#039;t dated in the filename..&lt;br /&gt;
#### I changed the date format to YYYY-MM-DD – iso format, sortable, and no ambiguity&lt;br /&gt;
#### In the setting&#039;s &amp;quot;widgets&amp;quot; tab, I also set the date to YYYY-MM-DD&lt;br /&gt;
#### In the settings&#039; &amp;quot;security&amp;quot; tab, I setup TOTP 2FA&lt;br /&gt;
### I went to my &amp;quot;profile&amp;quot;&lt;br /&gt;
#### It said my email wasn&#039;t verified. I never got an email *to* verify. I clicked the &amp;quot;Verify&amp;quot; button&lt;br /&gt;
##### gross. it sent an email with an OTP. the email had text/plain, but the only contents was &amp;quot;otp email&amp;quot;. I had to dig through some html to find the code.&lt;br /&gt;
# I clicked around in OpenSign. I expected there would be some place where I could type a document, but it only allows me to upload a pdf, jpg, png, jpeg, or docx. whey not OpenOffice (LibreOffice)? Hmm.&lt;br /&gt;
# not sure how this translates into being able to add input fields.&lt;br /&gt;
# using libreoffice, I created a test document with the contents&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
I agree not to act like an evil corporation.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# I exported it as a pdf, and uploaded it as a new &amp;quot;template&amp;quot; to opensign&lt;br /&gt;
## there&#039;s a lot of settings you can make&lt;br /&gt;
### you can change it so that everyone can sign at once, or (the default) has the intended party sign, then I sign. But I&#039;m not sure if I will *want* Eco-Libre to sign these documents at all?&lt;br /&gt;
### you can set the number of days that the person has to sign. it defaults to 15.&lt;br /&gt;
### you can add a bcc&lt;br /&gt;
### you can make the &amp;quot;certification pdf&amp;quot; merged into the signed document. well, apparently only if you pay for an upgrade. whatever.&lt;br /&gt;
### ah man, there&#039;s a cool feature that requries an OTP from the email address, but it requires upgrade&lt;br /&gt;
### you can specify a &amp;quot;redirect url&amp;quot; which is blank by default. I guess that&#039;s where they get sent after signing. That&#039;s cool. I could have it redirect to a &amp;quot;thank you; here&#039;s the next steps&amp;quot; doc. I set it to &#039;https://eco-libre.github.io/volunteer-test/&#039;&lt;br /&gt;
#### I&#039;m beginning to wonder if I shouldn&#039;t have made a repo named &#039;volunteer-test&#039; but instead made one named &#039;volunteer-onboarding&#039; in-which the volunteer test was only one section. hmm.&lt;br /&gt;
### the only other thing I could change was the pen ink colors. here in Ecuador, everything should be blue. so I disabled black and red.&lt;br /&gt;
## ok, after I click &amp;quot;next&amp;quot; I can decorate the page with a bunch of widgets. note that I cannot edit the text&lt;br /&gt;
### you can add a &amp;quot;role&amp;quot; for someone to sign. I just want one = the volunteer. So I added one named &amp;quot;Volunteer&amp;quot;&lt;br /&gt;
### I clicked the &amp;quot;Signature&amp;quot; widget, and a blue box popped-up on the bottom of the page&lt;br /&gt;
#### I hovered over it with my mouse, and a &amp;quot;gear&amp;quot; &amp;quot;person&amp;quot; &amp;quot;copy&amp;quot; and &amp;quot;trash&amp;quot; icons appeared.&lt;br /&gt;
#### I clicked the gear, and it let me choose the type of signatures accepted (draw, typed, upload, or default), and a &amp;quot;hint&amp;quot;&lt;br /&gt;
#### I clicked the &amp;quot;person&amp;quot; and it let me choose someone from contacts. I&#039;m creating a template, so that doesn&#039;t make sense (unless we had, like, *me* signing every document – which I don&#039;t think we&#039;ll do). So I left that empty&lt;br /&gt;
### there&#039;s a &amp;quot;text input widget&amp;quot;, which I guess is how I would let someone enter their name. I can make it optional, required, or read-only (relavant for the other &amp;quot;default value&amp;quot; option). I can change the font size and font color. So, I guess, the idea is that I would have left a blank space in the pdf, and later decorated it with this widget. I&#039;ll do that for the next test.&lt;br /&gt;
### there&#039;s a &amp;quot;image&amp;quot; widget – as in, the user can upload an image (I guess useful for profile photos)&lt;br /&gt;
### there&#039;s also widgets for stamp, initials, number, name, job title, company, email, date, cells, checkbox, dropdown, and radio button&lt;br /&gt;
### I dropped the &amp;quot;name&amp;quot; widget randomly near the top. So now I have two: name &amp;amp; signature.&lt;br /&gt;
### I saved the template&lt;br /&gt;
### I went back and edited it. I realized there&#039;s an option &amp;quot;prefiil by owner&amp;quot; vs &amp;quot;volunteer&amp;quot;. apparently I can add the name and stuff before I send it out. I left it at &amp;quot;volunteer&amp;quot;&lt;br /&gt;
## there was an option to make the template public, but I don&#039;t have a public profile. I went to edit my profile, but the box for entering my username for the public profile is grey-out. Unlike other places, it doesn&#039;t say &amp;quot;upgrade now&amp;quot; so idk wtf is going on&lt;br /&gt;
### after making it public, it gave me some js to embed the document. oh, so this is so that I can embed the docs on my own site. well, that&#039;s kinda cool. but I really don&#039;t want to embed a third party javascript.&lt;br /&gt;
## anyway, back to &amp;quot;manage templates&amp;quot;&lt;br /&gt;
### I tried to edit the template again, but it gave me an error&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
You cannot edit a public template directly. To make changes, the template will be set to private, and you&#039;ll need to make it public again afterward. Do you want to continue?&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
### so I unchecked &amp;quot;public&amp;quot; and edited it&lt;br /&gt;
### I added a &amp;quot;date&amp;quot; widget. I set it to &amp;quot;signing date&amp;quot; and &amp;quot;read only&amp;quot; and &amp;quot;required&amp;quot; and placed it just above the signature&lt;br /&gt;
## I went back to &amp;quot;manage templates&amp;quot; and clicked the &amp;quot;+ use&amp;quot; button.&lt;br /&gt;
### it gave me a drop down menu of our contacts, but it&#039;s empty. so I pressed the red &amp;quot;+&amp;quot; button to add a new contact&lt;br /&gt;
### I added a contact named &amp;quot;Michael Altfield&amp;quot; and my email address. then I selected this contact and clicked &amp;quot;next&amp;quot;&lt;br /&gt;
### It asked &amp;quot; Are you sure you want to send out this document for signatures?&amp;quot; and I clicked &amp;quot;Send&amp;quot;&lt;br /&gt;
### I immediately got an email. Again, the shitty email plaintext contetns was just &amp;quot;mail&amp;quot; and I had to read-through the html to find a encoding-broken link :/&lt;br /&gt;
#### I created a bug report for them to fix the `text/plain` content type of emails here https://github.com/OpenSignLabs/OpenSign/issues/2156&lt;br /&gt;
### using some mutt scripting fuckery, I&#039;m able to extract the URLs. But I can&#039;t figure out which one is to go to the document. Two of the four are both to &amp;quot;click.opensignlabs.com. the first one appears to go to a login page, and the second one doesn&#039;t. I tried the second one&lt;br /&gt;
#### wtf, that link brought me to a single dark page with a single dead pixel in the center of the screen.&lt;br /&gt;
### ok, looks like the first link (with the login that I was trying to avoid) is a button that says &amp;quot;sign here&amp;quot;&lt;br /&gt;
### ohhh, and the other one is an image. I guess it&#039;s a tracking pixel. that explains it.&lt;br /&gt;
### back in my admin dashboard, under Documents -&amp;gt; In-Progress, I can see Michael Altfield has &amp;quot;Yet to sign&amp;quot;&lt;br /&gt;
### If I click on &amp;quot;sent&amp;quot; then there&#039;s a section &amp;quot;viewed on&amp;quot; and &amp;quot;signed on&amp;quot; that are both &amp;quot;-&amp;quot; – so I guess that tracking pixel didn&#039;t really work, huh..&lt;br /&gt;
### fine, I went to the first link&lt;br /&gt;
#### oh, awesome, it didn&#039;t make me login! It redirected me to the document. perfect! It popped-up a modal that said&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
I confirm that I have read and understood the Electronic Record and Signature Disclosure and consent to use electronic records and signatures.&lt;br /&gt;
Note: Agreeing to this does not mean you are signing the document immediately. This only allows you to review the document electronically. You will have the opportunity to read it in full and decide whether to sign it afterward.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
### I clicked &amp;quot;I confirm &amp;amp; agree to continue&amp;quot;&lt;br /&gt;
### it did the whole modal popup &amp;quot;guide&amp;quot; thing, which was an option I could have disabled. basically it said to type my name (which was, cool, auto-completed to &amp;quot;Michael Altfield&amp;quot;), listed the signers (just me), and then highlighted the widgets at the bottom (date and sig), then told me how to zoom-in, then highlighted the &amp;quot;you&#039;re done&amp;quot; buttons = &amp;quot;decline&amp;quot; &amp;quot;download&amp;quot; or &amp;quot;finish&amp;quot;&lt;br /&gt;
### it let me change my name, but I should probably make that read-only now that I know it auto-completes with the name from the contacts&lt;br /&gt;
### it wouldn&#039;t let me change the date, which it autocompletd to today&lt;br /&gt;
### it did let me click on the signature widget, which opened a modal with a box where I could draw my nanme. I did that. It was fast, wayy better than Documenso – no issues here with the browser crashing&lt;br /&gt;
### alternatively, I could click &amp;quot;type&amp;quot; and it displayed my name in some cursive fonts, which I could choose-from. and there was an option to upload image.&lt;br /&gt;
### I chose draw and did my signature and clicked next. very fast.&lt;br /&gt;
### it asked if I&#039;m sure I want to finish the doc. I clicked &amp;quot;Review&amp;quot;&lt;br /&gt;
### then I clicked the &amp;quot;finish&amp;quot; button at the top&lt;br /&gt;
### it said this&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Document signed&lt;br /&gt;
Congratulations! 🎉 This document has been successfully signed by all participants!&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
### and there was a countdown to redirect. in 3 seconds, the browser redirected to here. perfect! https://eco-libre.github.io/volunteer-test/en/main/&lt;br /&gt;
### back in the opensign admin dashboard, the row is absent from &amp;quot;Documents -&amp;gt; in progress&amp;quot;. I found it in &amp;quot;documents -&amp;gt; completed&amp;quot;&lt;br /&gt;
### I clicked the &amp;quot;eye&amp;quot; next to the document, and it showed me the document, including the signature that I left in the other browser. I can also click &amp;quot;print&amp;quot; or &amp;quot;certifiacte&amp;quot; or &amp;quot;download&amp;quot;&lt;br /&gt;
#### &amp;quot;print&amp;quot; does what you&#039;d expect. I can print or use the browser&#039;s &amp;quot;save to pdf&amp;quot; of the document, which includes the signature&lt;br /&gt;
#### &amp;quot;certifiacte&amp;quot; opens some legal-looking pdf (something similar to docusign) with a some metadata, including a sah256 hash, ip address of both document issuer (me) and the signer (also me, but different IP because Tor). And it includes an image of the drawn signature.&lt;br /&gt;
#### &amp;quot;download&amp;quot; then lets me choose if i want the download pdf or downlaod pdf + certifiate. I chose both.&lt;br /&gt;
##### lol that failed. the browser didn&#039;t let me download both&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Something went wrong, refreshing this page may solve this issue&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
#### I tried just &amp;quot;downlaod pdf&amp;quot;&lt;br /&gt;
##### that gave me the document, plus the signature and other &amp;quot;widgets&amp;quot; filled-out, plus the following in the top-left&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
OpenSign™ DocumentId: pS5lEdCyIp&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
##### I guess that&#039;s something like their observatory. they said I can turn it off only if I have a paid plan. But it&#039;s probably necessary for them as a thrid party to confirm the signature.&lt;br /&gt;
#### anyway, I tested the hash on the file that I downloaded&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[user@disp6411 Downloads]$ sha256sum Test\ Agreement\ -\ REDACTED@eco-libre.org\ -\ 21-Apr-2026\ 04_01\ PM.pdf &lt;br /&gt;
569152424a49024297f4bb550291036896de3189e70efb1fee6a9e39333bbe77  Test Agreement - REDACTED@eco-libre.org - 21-Apr-2026 04_01 PM.pdf&lt;br /&gt;
[user@disp6411 Downloads]$ &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
#### I wanted to confirm that matches the certificate, but when I clicked &amp;quot;certificate&amp;quot; again, I got a permissions issue!&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;Error&amp;gt;&lt;br /&gt;
&amp;lt;Code&amp;gt;AccessDenied&amp;lt;/Code&amp;gt;&lt;br /&gt;
&amp;lt;Message&amp;gt;Request has expired.&amp;lt;/Message&amp;gt;&lt;br /&gt;
&amp;lt;Resource&amp;gt;&lt;br /&gt;
legadratw3d/460246e423800b30c50c967ef6157248_certificate.pdf&lt;br /&gt;
&amp;lt;/Resource&amp;gt;&lt;br /&gt;
&amp;lt;RequestId&amp;gt;not available&amp;lt;/RequestId&amp;gt;&lt;br /&gt;
&amp;lt;/Error&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
### fortunately I still had it open in another tab, and I copied this from it&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Generated On 2026-04-21, 15:56:29 GMT -05:00&lt;br /&gt;
Certificate of Completion&lt;br /&gt;
Summary&lt;br /&gt;
Document Id : pS5lEdCyIp&lt;br /&gt;
Document Name : Test Agreement&lt;br /&gt;
Document hash (sha256) : 569152424a49024297f4bb550291036896de3189e70efb1fee6a9e39333bbe77&lt;br /&gt;
Organization : Eco-Libre&lt;br /&gt;
Created on : 2026-04-21, 15:25:55 GMT -05:00&lt;br /&gt;
Completed on : 2026-04-21, 15:56:29 GMT -05:00&lt;br /&gt;
Signers : 1&lt;br /&gt;
Document originator&lt;br /&gt;
Name : Eco-Libre&lt;br /&gt;
Email : REDACTED@eco-libre.org&lt;br /&gt;
IP address : 94.185.80.231&lt;br /&gt;
Signer 1&lt;br /&gt;
Name : Michael Altfield&lt;br /&gt;
Email : REDACTED@eco-libre.org&lt;br /&gt;
Viewed on : 2026-04-21, 15:50:32 GMT -05:00&lt;br /&gt;
Signed on : 2026-04-21, 15:56:29 GMT -05:00&lt;br /&gt;
IP address : 2001:67c:e60:c0c:192:42:116:52&lt;br /&gt;
Signature :&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
### so the hashes do match; that&#039;s cool&lt;br /&gt;
### but will I be able to view the certificates in the future?!?&lt;br /&gt;
### I went back to the admin dashboard -&amp;gt; documents -&amp;gt; completed -&amp;gt; (eye icon) -&amp;gt; certificate&lt;br /&gt;
#### ok, that worked. I can pull it up again.&lt;br /&gt;
### curiously it still says I&#039;ve sent 0/15 emails this month&lt;br /&gt;
#### oh, I refrehed the page. now it says 1/15.&lt;br /&gt;
### I also see that my admin email got an email with an attachment titled &amp;quot;Test Agreement -&lt;br /&gt;
 REDACTED@eco-libre.org - 22-Apr-2026 02:26 AM.pdf&amp;quot; – so I guess it did email it to me&lt;br /&gt;
#### oh, awesome, there&#039;s also an attachment named &amp;quot;certificate.pdf&amp;quot;&lt;br /&gt;
#### the email is 83 KB + 139 KB for the two attachments, so that&#039;s reasonable. and that eliminates a lot of fear around exports. we&#039;ll have this data forever if we keep this email account&#039;s forever (or setup an automated backup process)&lt;br /&gt;
### there&#039;s also this &amp;quot;open sign drive&amp;quot; thing. I wasn&#039;t sure if this was an opt-in or pro feature&lt;br /&gt;
#### looks like the signed document is there too. it&#039;s just called &amp;quot;Test Agreement&amp;quot; – which isn&#039;t very nice, but I can see the &amp;quot;Created date&amp;quot; – which should be good enough.&lt;br /&gt;
## ok, I think we have a solution! this definitely meets our needs – unless/until we get &amp;gt;=6 volunteers per month (if we have them sign two documents each)&lt;br /&gt;
# I spent some time designing a letterhead in LibreOffice&lt;br /&gt;
# looks like what we want is a Contributor License Agreement https://en.wikipedia.org/wiki/Contributor_license_agreement&lt;br /&gt;
# looks like a lot of projects just use the CLA assistant tool on gthub https://cla-assistant.io/&lt;br /&gt;
## that&#039;s kinda cool, but I honestly don&#039;t know how long we&#039;ll be on github. If it&#039;s tied to an issue (and not something actually in git), it&#039;ll be hard to move to codeberg in the future&lt;br /&gt;
## still, I like the tl;dr CLA; short &amp;amp; sweet (maybe too much so) https://gist.github.com/waldyrious/e50feec13683e565769fbd58ce503d4e&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
## tldr-pages contributor agreement&lt;br /&gt;
&lt;br /&gt;
(1) I assert that any past, present and future contributions I make to the tldr-pages project are my own work, and that I have the right to license them.&lt;br /&gt;
&lt;br /&gt;
(2) I agree to license all my contributions to the tldr-pages project under the terms of the license included in the tldr-pages repository I’m contributing to.&lt;br /&gt;
&lt;br /&gt;
(3) I grant the tldr-pages organization a license to distribute my contributions under any open content license compliant with the Open Definition [a], or any open source software license approved by the Open Source Initiative [b], as applicable.&lt;br /&gt;
&lt;br /&gt;
a. http://opendefinition.org/licenses&lt;br /&gt;
&lt;br /&gt;
b. https://opensource.org/licenses/alphabetical&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# apparently Connonical created a project called Harmony for the purpose of making contributor agreements https://www.harmonyagreements.org/&lt;br /&gt;
## apparently these things are more complicated between individuals vs other entities. it&#039;s possible we&#039;ll work with for-profit companies in the future, and for that it&#039;d be good if we were setup to accept both&lt;br /&gt;
## ugh, there&#039;s also a distinction between a &amp;quot;license&amp;quot; and a &amp;quot;assignment&amp;quot;&lt;br /&gt;
### I skimmed their guide, but I couldn&#039;t understand the difference between these two https://www.harmonyagreements.org/guide&lt;br /&gt;
# fedora project also has one, with an emphasis on *not* taking the copyright away from the user (some controversy about copyright transfer in different CLAs – such as from for-profit companies that later fork &amp;amp; lock-up their user-contributed content under a different, less-permisive license (though I really don&#039;t understand how that&#039;s possible if we use a CC SA license) https://docs.fedoraproject.org/en-US/legal/fpca/&lt;br /&gt;
## oh, fedora uses MIT license --which is probably why they need to add all that&lt;br /&gt;
# apahce has one https://www.apache.org/licenses/contributor-agreements.html#clas&lt;br /&gt;
## cool, they accept signing with gpg :D&lt;br /&gt;
# Element (the matrix client) which uses AGPL has a pretty good document, which is 3 pages long https://static.element.io/legal/contributor-license-agreement.pdf&lt;br /&gt;
# a lot of these are kinda software heavy. I wonder if there&#039;s any good OSHW orgs that we can try?&lt;br /&gt;
## I checked OSHWA, but didn&#039;t see a boilerplate CLA that we could copy https://oshwa.org/&lt;br /&gt;
### they did have a CoC. Jesus, how many policies do we need to make? https://oshwa.org/resources/how-to-write-a-code-of-conduct/&lt;br /&gt;
### I publicy tooted @oshwassociation@mastodon.social if they had something to recommend https://chaos.social/@ecolibre/116444933464052302&lt;br /&gt;
### hmm...here they recommend CERN OHL v2 instead of CC BY-SA, if we&#039;re using something like STL files that are generated from CAD design https://oshwa.org/resources/sharing-best-practices/&lt;br /&gt;
## CERN does have some does on CLAs https://ospo.docs.cern.ch/howtos/signing-CLA-DCO/&lt;br /&gt;
## CERN links to this short one, from the Linux Foundation https://developercertificate.org/&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Developer Certificate of Origin&lt;br /&gt;
Version 1.1&lt;br /&gt;
&lt;br /&gt;
Copyright (C) 2004, 2006 The Linux Foundation and its contributors.&lt;br /&gt;
&lt;br /&gt;
Everyone is permitted to copy and distribute verbatim copies of this&lt;br /&gt;
license document, but changing it is not allowed.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Developer&#039;s Certificate of Origin 1.1&lt;br /&gt;
&lt;br /&gt;
By making a contribution to this project, I certify that:&lt;br /&gt;
&lt;br /&gt;
(a) The contribution was created in whole or in part by me and I&lt;br /&gt;
	have the right to submit it under the open source license&lt;br /&gt;
	indicated in the file; or&lt;br /&gt;
&lt;br /&gt;
(b) The contribution is based upon previous work that, to the best&lt;br /&gt;
	of my knowledge, is covered under an appropriate open source&lt;br /&gt;
	license and I have the right under that license to submit that&lt;br /&gt;
	work with modifications, whether created in whole or in part&lt;br /&gt;
	by me, under the same open source license (unless I am&lt;br /&gt;
	permitted to submit under a different license), as indicated&lt;br /&gt;
	in the file; or&lt;br /&gt;
&lt;br /&gt;
(c) The contribution was provided directly to me by some other&lt;br /&gt;
	person who certified (a), (b) or (c) and I have not modified&lt;br /&gt;
	it.&lt;br /&gt;
&lt;br /&gt;
(d) I understand and agree that this project and the contribution&lt;br /&gt;
	are public and that a record of the contribution (including all&lt;br /&gt;
	personal information I submit with it, including my sign-off) is&lt;br /&gt;
	maintained indefinitely and may be redistributed consistent with&lt;br /&gt;
	this project or the open source license(s) involved.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# ok, I think I&#039;m muddling two things here&lt;br /&gt;
## I think the wiki&#039;s TOS should be simpler. If I require all wiki users to become volunteers first, and the volunteer onboarding requires the signing of documents, then the real legal stuff should be in the documents.&lt;br /&gt;
## for now, let&#039;s just do the bullet point thing on the wiki ToS. And I&#039;ll wait to hear back from OSHWA about the CLA for a *proper* leagl document later – maybe TODO when we actually get another volunteer application..&lt;br /&gt;
# I set the ToS to the DCO from the linux foundation https://wiki.eco-libre.org/wiki/Eco-Libre:Terms_of_Service&lt;br /&gt;
## ah crap, I just realized that it says &amp;quot;changing it is not allowed&amp;quot;. I already changed it by removing the Linux Foundation from the name (I moved it to the bottom in an &amp;quot;attribution&amp;quot; section, which is another change! damn ND licenses! I&#039;ll have to find something else)&lt;br /&gt;
# I want to use the tl;dr gist, but it&#039;s not licensed! https://gist.github.com/waldyrious/e50feec13683e565769fbd58ce503d4e#file-tldr-pages-cla-md&lt;br /&gt;
## the profile of the author says they&#039;re a wikipedian and anarchist, so they&#039;ll probably be down to license it openly&lt;br /&gt;
## I asked here https://gist.github.com/waldyrious/e50feec13683e565769fbd58ce503d4e?permalink_comment_id=6112400#gistcomment-6112400&lt;br /&gt;
# another issue with a lot of these CLAs is that they&#039;re pretty old, and don&#039;t touch on AI.&lt;br /&gt;
## I&#039;m thinking we should have a policy that forbids contributions from Eco-Libre volunteers that do any research or design work with AI, since it presents serious legal issues around copyrights. I really do want 100% of our work to be very CC BY-SA. With nothing to muddle the waters. We&#039;re doing this designs ourselves to build an open-source commons, built only individual human contributions and only other openly-licensed works&lt;br /&gt;
## clojure already addressed this in their CLA (they just call it CA = Contributor Agreement) https://clojure.org/dev/contributor_agreement&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
No Generated Code&lt;br /&gt;
&lt;br /&gt;
Clojure’s code is written and reviewed by humans. Code generated by a large language model or similar technology, such as Anthropic’s Claude, GitHub/Microsoft’s Copilot, OpenAI’s ChatGPT, Facebook/Meta’s Code Llama et al, is not compliant with the covenants and representations of Clojure’s Contributor’s Agreement, and is thus not acceptable as code for Clojure.&lt;br /&gt;
&lt;br /&gt;
An exception may be made for human written generators whose source code is contributed along with the patch&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## I don&#039;t like that exception. The source code doesn&#039;t just need to be submitted along with the patch. the whole training set data needs to be submitted along with the patch, which is practically impossible.&lt;br /&gt;
## weird, they call it the &amp;quot;Rich Hickey Contributor Agreement&amp;quot; https://na1.documents.adobe.com/public/esignWidget?wid=CBFCIBAA3AAABLblqZhCSXRbJ7T5RGvmMvmpg3CzvkF_RcpWXMnGWW_W9340ztJ3-ChQ0m18hA-d06ufD8Yk*&lt;br /&gt;
### oh good, the document itself is CC BY-SA&lt;br /&gt;
## the source for it was oracle&#039;s OCA https://www.oracle.com/technetwork/oca-faq-405384.pdf&lt;br /&gt;
### yeah, the second-to-last FAQ question says that the OCA is CC BY-SA &lt;br /&gt;
### looks like neither of them mention AI in the document itself :/&lt;br /&gt;
### maybe I don&#039;t like the RHCA contents, but I do really like the header and footer and how clearly it&#039;s licened itself as CC BY-SA&lt;br /&gt;
# the linux foundation has a CLA generator, but it&#039;s authwalled :( https://easycla.lfx.linuxfoundation.org/#/&lt;br /&gt;
# cyanogenmod&#039;s is pretty nice; not too long. unfortunately the license isn&#039;t clear https://web.archive.org/web/20160308140334/http://review.cyanogenmod.org/static/cla_individual.html&lt;br /&gt;
# same for Discourse; it&#039;s about 7 paragraph bullet points long. unfortuantely the license isn&#039;t clear https://cla-assistant.io/discourse/discourse&lt;br /&gt;
## apparently it&#039;s an apache license https://github.com/cla-assistant/cla-assistant/blob/main/LICENSE&lt;br /&gt;
# django has two: indivdual and corproate. apparently adapted from apache&#039;s (so likely licensed under apache, but I should confirm&lt;br /&gt;
## https://media.djangoproject.com/foundation/icla.pdf&lt;br /&gt;
## https://media.djangoproject.com/foundation/icla.pdf&lt;br /&gt;
# evil corps like meta and google have CLAs, but I doubt they&#039;re licensed openly&lt;br /&gt;
## https://code.facebook.com/cla/individual&lt;br /&gt;
## https://cla.developers.google.com/about/google-individual?csw=1&lt;br /&gt;
# here&#039;s hashicorp&#039;s. I don&#039;t think it&#039;s licensed openly https://www.hashicorp.com/en/cla&lt;br /&gt;
# Here&#039;s Hoe Assistant https://www.home-assistant.io/blog/2017/01/21/home-assistant-governance/&lt;br /&gt;
## apparently Matthew Garret convinced them to change their CLA from GitHub&#039;s to this one https://www.home-assistant.io/blog/2017/01/21/home-assistant-governance/&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
By making a contribution to this project, I certify that:&lt;br /&gt;
&lt;br /&gt;
(a) The contribution was created in whole or in part by me and I&lt;br /&gt;
	have the right to submit it under the Apache 2.0 license; or&lt;br /&gt;
&lt;br /&gt;
(b) The contribution is based upon previous work that, to the best&lt;br /&gt;
	of my knowledge, is covered under an appropriate open source&lt;br /&gt;
	license and I have the right under that license to submit that&lt;br /&gt;
	work with modifications, whether created in whole or in part&lt;br /&gt;
	by me, under the Apache 2.0 license; or&lt;br /&gt;
&lt;br /&gt;
(c) The contribution was provided directly to me by some other&lt;br /&gt;
	person who certified (a), (b) or (c) and I have not modified&lt;br /&gt;
	it.&lt;br /&gt;
&lt;br /&gt;
(d) I understand and agree that this project and the contribution&lt;br /&gt;
	are public and that a record of the contribution (including all&lt;br /&gt;
	personal information I submit with it) is maintained indefinitely&lt;br /&gt;
	and may be redistributed consistent with this project or the open&lt;br /&gt;
	source license(s) involved.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## is it just me, or does that look like the one from the Linux Foundation, except it was modified to have the section saying &amp;quot;you can&#039;t modify this&amp;quot; removed. Hmm./.&lt;br /&gt;
## yeah, they say that in attribtuion&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
The text of this license is available under the Creative Commons Attribution-ShareAlike 3.0 Unported License. It is based on the Linux Developer Certificate Of Origin, but is modified to explicitly use the Apache 2.0 license and not mention sign-off.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## idk, maybe they got explicit permission from the Linux Foundation to modify it and re-license it CC BY-SA?&lt;br /&gt;
## I asked them if they got permission and to publish proof, so we could do the same https://github.com/home-assistant/home-assistant.io/issues/44892&lt;br /&gt;
&lt;br /&gt;
= 2026-04-20 =&lt;br /&gt;
# I got a link from a friend from a pretty cool sounding similar project https://projectkamp.com/&lt;br /&gt;
## sounds like they have similar ideas as Eco-Libre, except they already bought land already&lt;br /&gt;
## They claim to use CC BY-SA to license all their works, but their videos are not marked as-such on YouTube. And, because YouTube is trash, I can&#039;t view their videos  https://academy.projectkamp.com/start/intro/#open-source--license&lt;br /&gt;
## I wanted to email them to update the license on their YouTube videos (so, at least, they could be archived on archive.org and uploaded to PeerTube, etc), but I couldn&#039;t find their email https://projectkamp.com/faq.html&lt;br /&gt;
## Their footer says they&#039;re part of One Army (along with, eg Precious Plastic), so I emailed One Army asking for the email address of Project Kamp https://www.onearmy.earth/&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Hello,&lt;br /&gt;
&lt;br /&gt;
Can you please tell me the email address of Project Kamp?&lt;br /&gt;
&lt;br /&gt;
I&#039;m looking to get in contact with Project Kamp over email, but I couldn&#039;t find a way to email them from their website:&lt;br /&gt;
&lt;br /&gt;
 * https://projectkamp.com/faq.html&lt;br /&gt;
&lt;br /&gt;
Please send me the email address for Project Kamp.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Thank you,&lt;br /&gt;
&lt;br /&gt;
Michael Altfield&lt;br /&gt;
https://www.michaelaltfield.net&lt;br /&gt;
PGP Fingerprint: 0465 E42F 7120 6785 E972  644C FE1B 8449 4E64 0D41&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## TODO: add Project Kamp to our &#039;common-files&#039; repo&#039;s docs as a &amp;quot;Similar Project&amp;quot;&lt;br /&gt;
# ...&lt;br /&gt;
# Tomorrow we&#039;re publishing our partnership with Raft Foundation, so we can accept tax-deductable donations https://www.eco-libre.org/raft-2026/&lt;br /&gt;
# Some weeks ago I did updates of wordpress, including adding new plugins. One of them was ActivityPub&lt;br /&gt;
# I enabled ActivityPub, but the Settings page gives me a &amp;quot;504 Gateway Time-out&amp;quot; error from nginx https://www.eco-libre.org/wp-admin/options-general.php?page=activitypub&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;head&amp;gt;&amp;lt;title&amp;gt;504 Gateway Time-out&amp;lt;/title&amp;gt;&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;h1&amp;gt;504 Gateway Time-out&amp;lt;/h1&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&amp;lt;center&amp;gt;nginx&amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## here&#039;s the error.log entry for nginx&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
2026/04/20 17:37:36 [error] 1992101#1992101: *2507383 upstream timed out (110: Connection timed out) while reading response header from upstream, client: 64.42.180.66, server: www.eco-libre.org, request: &amp;quot;GET /wp-admin/options-general.php?page=activitypub HTTP/1.1&amp;quot;, upstream: &amp;quot;http://127.0.0.1:6081/wp-admin/options-general.php?page=activitypub&amp;quot;, host: &amp;quot;www.eco-libre.org&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## and here&#039;s the apache logs&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
==&amp;gt; www.eco-libre.org/access.log &amp;lt;==&lt;br /&gt;
64.42.180.66 - - [20/Apr/2026:17:54:54 +0000] &amp;quot;POST /wp-admin/admin-ajax.php HTTP/1.1&amp;quot; 200 792 &amp;quot;https://www.eco-libre.org/wp-admin/plugins.php?plugin_status=all&amp;amp;paged=1&amp;amp;s&amp;quot; &amp;quot;Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.0.0 Safari/537.36&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==&amp;gt; www.eco-libre.org/error.log &amp;lt;==&lt;br /&gt;
[Mon Apr 20 17:55:23.176842 2026] [proxy_fcgi:error] [pid 526343:tid 526374] (70007)The timeout specified has expired: [client 64.42.180.66:0] AH01075: Error dispatching request to : (polling)&lt;br /&gt;
&lt;br /&gt;
==&amp;gt; www.eco-libre.org/access.log &amp;lt;==&lt;br /&gt;
64.42.180.66 - - [20/Apr/2026:17:54:23 +0000] &amp;quot;GET /wp-admin/options-general.php?page=activitypub HTTP/1.1&amp;quot; 504 467 &amp;quot;-&amp;quot; &amp;quot;Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.0.0 Safari/537.36&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## I don&#039;t know what&#039;s wrong, and that&#039;s not enough to debug it. I tested ActivityPub on another site, and the config page had no issues. But I ended-up not finishing its setup because I wanted the actor URL to use the naked domain, and I&#039;m still waiting to hear back on that https://github.com/Automattic/wordpress-activitypub/issues/3164&lt;br /&gt;
# anyway, I wrote a newsletter, scheduled it to go out for tomorrow at 15:00 UTC&lt;br /&gt;
# I also wrote the update for Open Collective&lt;br /&gt;
# I put the &amp;quot;Donate&amp;quot; page in the menu bar&lt;br /&gt;
## on mobile, this made the top navbar spill over into a second row, so I moved &amp;quot;Contact&amp;quot; under &amp;quot;Join Us&amp;quot;&lt;br /&gt;
### to make up for this, I started creating footer areas&lt;br /&gt;
### the theme supports three footers. one on the left, center, and right&lt;br /&gt;
### I put copyright &amp;amp; copyleft info on the right footer&lt;br /&gt;
### I put social media icons in the middle footer&lt;br /&gt;
### I put a &amp;quot;Contact&amp;quot; link on the left footer&lt;br /&gt;
## As I was styling the left footer, I stopped being able to update it suddenly. I kept getting error&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
There was an error. Could not get a valid response from the server.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## closer inspection of the networking tab of the browsers debugger showed an error when doing an OPTIONS request&lt;br /&gt;
## well, that&#039;s probably because (for security) we block all but GET POST and HEAD&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
if ($request_method !~ ^(GET|HEAD|POST)$ ) {&lt;br /&gt;
   # note: 444 is a meta code; it doesn&#039;t return anything, actually&lt;br /&gt;
   #       it just logs, drops, &amp;amp; closes the connection (useful&lt;br /&gt;
   #       against malware)&lt;br /&gt;
   return 444;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## well, fuck, our widgets are bricked&lt;br /&gt;
## I asked about this here https://wordpress.org/support/topic/configure-wordpress-to-never-use-options-requests/&lt;br /&gt;
## as a workaround, I found that I *can* edit these footer widgets from the theme -&amp;gt; customize -&amp;gt; widgets section of the site – which sends POST as expected https://www.eco-libre.org/wp-admin/customize.php?return=%2Fwp-admin%2Fwidgets.php&lt;br /&gt;
# I realized that I can&#039;t post to lemmy anymore, because our sdf instance has been down since 2026-04-07&lt;br /&gt;
# I went ahead and created an accout request on the solar punk instance https://slrpnk.net/&lt;br /&gt;
## if we&#039;re accepted, I&#039;d also like to create a community specific to Eco-Libre &lt;br /&gt;
# I also created one on lemmy.vg&lt;br /&gt;
&lt;br /&gt;
= 2026-04-19 =&lt;br /&gt;
# I failed to login to the wiki today. I got error&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[REDACTED] 2026-04-19 20:34:48: Fatal exception of type &amp;quot;DomainException&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# exception.log seems to suggest that I set a bad config for the password policy yesterday&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
==&amp;gt; exception.log &amp;lt;==&lt;br /&gt;
2026-04-19 20:36:27 mail wiki_el_db-rHb3: [REDACTED] /index.php?title=Special:UserLogin&amp;amp;returnto=MediaWiki&lt;br /&gt;
%3ARequestaccount-agree   DomainException: Invalid password policy config. No check defined for &#039;PasswordCannotMatchUsername&#039;&lt;br /&gt;
.&lt;br /&gt;
#0 /usr/share/mediawiki/includes/password/UserPasswordPolicy.php(88): MediaWiki\Password\UserPasswordPolicy-&amp;gt;checkPolicies()&lt;br /&gt;
#1 /usr/share/mediawiki/includes/user/User.php(995): MediaWiki\Password\UserPasswordPolicy-&amp;gt;checkUserPassword()&lt;br /&gt;
#2 /usr/share/mediawiki/includes/auth/AbstractPasswordPrimaryAuthenticationProvider.php(114): MediaWiki\User\User-&amp;gt;checkPassw&lt;br /&gt;
ordValidity()&lt;br /&gt;
#3 /usr/share/mediawiki/includes/auth/AbstractTemporaryPasswordPrimaryAuthenticationProvider.php(155): MediaWiki\Auth\Abstrac&lt;br /&gt;
tPasswordPrimaryAuthenticationProvider-&amp;gt;checkPasswordValidity()&lt;br /&gt;
#4 /usr/share/mediawiki/includes/auth/AuthManager.php(625): MediaWiki\Auth\AbstractTemporaryPasswordPrimaryAuthenticationProv&lt;br /&gt;
ider-&amp;gt;beginPrimaryAuthentication()&lt;br /&gt;
#5 /usr/share/mediawiki/includes/auth/AuthManager.php(535): MediaWiki\Auth\AuthManager-&amp;gt;continueAuthentication()&lt;br /&gt;
#6 /usr/share/mediawiki/includes/specialpage/AuthManagerSpecialPage.php(390): MediaWiki\Auth\AuthManager-&amp;gt;beginAuthentication&lt;br /&gt;
()&lt;br /&gt;
#7 /usr/share/mediawiki/includes/specialpage/AuthManagerSpecialPage.php(524): MediaWiki\SpecialPage\AuthManagerSpecialPage-&amp;gt;performAuthenticationStep()&lt;br /&gt;
#8 [internal function]: MediaWiki\SpecialPage\AuthManagerSpecialPage-&amp;gt;handleFormSubmit()&lt;br /&gt;
#9 /usr/share/mediawiki/includes/htmlform/HTMLForm.php(822): call_user_func()&lt;br /&gt;
#10 /usr/share/mediawiki/includes/specialpage/AuthManagerSpecialPage.php(455): MediaWiki\HTMLForm\HTMLForm-&amp;gt;trySubmit()&lt;br /&gt;
#11 /usr/share/mediawiki/includes/specialpage/LoginSignupSpecialPage.php(403): MediaWiki\SpecialPage\AuthManagerSpecialPage-&amp;gt;trySubmit()&lt;br /&gt;
#12 /usr/share/mediawiki/includes/specialpage/SpecialPage.php(728): MediaWiki\SpecialPage\LoginSignupSpecialPage-&amp;gt;execute()&lt;br /&gt;
#13 /usr/share/mediawiki/includes/specialpage/SpecialPageFactory.php(1717): MediaWiki\SpecialPage\SpecialPage-&amp;gt;run()&lt;br /&gt;
#14 /usr/share/mediawiki/includes/actions/ActionEntryPoint.php(505): MediaWiki\SpecialPage\SpecialPageFactory-&amp;gt;executePath()&lt;br /&gt;
#15 /usr/share/mediawiki/includes/actions/ActionEntryPoint.php(147): MediaWiki\Actions\ActionEntryPoint-&amp;gt;performRequest()&lt;br /&gt;
#16 /usr/share/mediawiki/includes/MediaWikiEntryPoint.php(200): MediaWiki\Actions\ActionEntryPoint-&amp;gt;execute()&lt;br /&gt;
#17 /usr/share/mediawiki/index.php(58): MediaWiki\MediaWikiEntryPoint-&amp;gt;run()&lt;br /&gt;
#18 {main}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# here&#039;s what we have&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$wgPasswordPolicy[&#039;policies&#039;][&#039;default&#039;][&#039;PasswordCannotMatchUsername&#039;] = true;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# but the docs suggest there&#039;s an additioanl array needed for &amp;quot;value&amp;quot;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$wgPasswordPolicy[&#039;policies&#039;][&#039;default&#039;][&#039;PasswordCannotMatchUsername&#039;][&#039;value&#039;] = false;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# if I expand &amp;quot;Older Versions&amp;quot; then the &#039;PasswordCannotMatchUsername&#039; disappears from mediawiki &amp;gt;1.37. The docs still say it&#039;s an option, but I didn&#039;t find it in our files https://www.mediawiki.org/wiki/Manual:$wgPasswordPolicy#Default&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@mail:/var/www/html/wiki.eco-libre.org# grep -irl PasswordCannotMatchUsername *&lt;br /&gt;
LocalSettings.20260419.php&lt;br /&gt;
LocalSettings.php&lt;br /&gt;
root@mail:/var/www/html/wiki.eco-libre.org# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# it does appear that &#039;PasswordCannotBeSubstringInUsername&#039; is available. let&#039;s use that instead.&lt;br /&gt;
# ugh, next attempt gives another failure&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
==&amp;gt; exception.log &amp;lt;==&lt;br /&gt;
2026-04-19 21:04:26 mail wiki_el_db-rHb3: [REDACTED] /index.php?title=Special:UserLogin&amp;amp;returnto=MediaWiki&lt;br /&gt;
%3ARequestaccount-agree   DomainException: Invalid password policy config. No check defined for &#039;PasswordCannotBePopular&#039;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# I removed this; I guess we&#039;re supposed to use &#039;PasswordNotInCommonList&#039;, which we already use.&lt;br /&gt;
# ok, that worked. I&#039;m able to login-in. here&#039;s the final&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# PASSWORD POLICIES&lt;br /&gt;
&lt;br /&gt;
$wgPasswordPolicy[&#039;policies&#039;][&#039;default&#039;][&#039;MinimalPasswordLength&#039;] = 10;&lt;br /&gt;
$wgPasswordPolicy[&#039;policies&#039;][&#039;default&#039;][&#039;PasswordCannotBeSubstringInUsername&#039;][&#039;value&#039;] = true;&lt;br /&gt;
$wgPasswordPolicy[&#039;policies&#039;][&#039;default&#039;][&#039;PasswordNotInCommonList&#039;] = true;&lt;br /&gt;
&lt;br /&gt;
$wgPasswordPolicy[&#039;policies&#039;][&#039;sysop&#039;][&#039;MinimalPasswordLength&#039;] = 20;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# now that I can login, I was going to change the text that appears on the Request Account page https://wiki.eco-libre.org/wiki/MediaWiki:Requestaccount-text&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Complete and submit the following form to request a user account.&lt;br /&gt;
&lt;br /&gt;
Make sure that you first read the Terms of Service before requesting an account.&lt;br /&gt;
&lt;br /&gt;
Once the account is approved, you will be emailed a notification message and the account will be usable at login. &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## my intention was to add a notebox to highlight that the user would need to first complete the Eco-Libre Volunteer Test (https://eco-libre.github.io/volunteer-test/) before their new wiki account would be approve, and tell them to contact us (https://eco-libre.org/contact/)&lt;br /&gt;
## unforutnately, the notebox template doesn&#039;t exist!&lt;br /&gt;
## I found the docs on templates, and it says there&#039;s no way to import a bunch of standard templates https://www.mediawiki.org/wiki/Help:Templates&lt;br /&gt;
## this third-party guide says we can make the export/import (eg from Wikipedia) of a mass of templates easier with the Scribunto extension https://www.ryadel.com/en/how-to-add-wikipedia-mbox-templates-to-your-own-mediawiki/&lt;br /&gt;
## this extension ships with core mediawiki, it seems&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@mail:/var/www/html/wiki.eco-libre.org# ls htdocs/extensions/&lt;br /&gt;
AbuseFilter     ConfirmEdit      InputBox          Nuke             ReplaceText            TemplateData    Widgets&lt;br /&gt;
CategoryTree    DeleteBatch      Interwiki         OATHAuth         Scribunto              TextExtracts    WikiEditor&lt;br /&gt;
Cite            DiscussionTools  Linter            PageImages       SecureLinkFixer        Thanks&lt;br /&gt;
CiteThisPage    Echo             LoginNotify       ParserFunctions  SmiteSpam              TitleBlacklist&lt;br /&gt;
CodeEditor      Gadgets          Math              PdfHandler       SpamBlacklist          UserMerge&lt;br /&gt;
ConfirmAccount  ImageMap         MultimediaViewer  Poem             SyntaxHighlight_GeSHi  VisualEditor&lt;br /&gt;
root@mail:/var/www/html/wiki.eco-libre.org# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# TODO: finish installing Scribunto, then do a mass-export &amp;amp; mass-import of common templates from Wikipedia. Then finish configuring [[&#039;&#039;MediaWiki:Requestaccount-text&#039;&#039;]]&lt;br /&gt;
# I thought that, maybe, a lower hanging fruit would be to implement the Privacy Policy, but I realized that page actually requires the user to accept the Terms of Service, not the Privacy Policy&lt;br /&gt;
## OSE appears to have never set a ToS (And I created the Privacy Policy, largely based on the creative commons&#039; privacy policy https://wiki.opensourceecology.org/wiki/Terms_of_Service&lt;br /&gt;
## The wikipedia Terms of Service is actually named Terms of Use, and it&#039;s pretty specific to Wikipedia (including their mission, etc). In it, it references the Privacy Policy https://foundation.wikimedia.org/wiki/Policy:Terms_of_Use/en&lt;br /&gt;
## Appropedia doesn&#039;t appear to have a page dedicated to ToS (or ToU) or Privacy Policy. Instead, it&#039;s just on one page named Policies https://www.appropedia.org/Appropedia:Policies&lt;br /&gt;
&lt;br /&gt;
= 2026-04-18 =&lt;br /&gt;
# continuing where I left off yes terday to fix mediawiki after the unattended-upgrade deleted our LocalSettings.php file&lt;br /&gt;
# I need to push-out a new php.ini config (with ansible) to include /etc/mediawiki/ in the open_basedir setting&lt;br /&gt;
# ansible is broken suddenly; it says it can&#039;t find python&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
fatal: [michaelaltfield.net]: UNREACHABLE! =&amp;gt; {&amp;quot;changed&amp;quot;: false, &amp;quot;msg&amp;quot;: &amp;quot;EOF on stream; last 100 lines received:\nbash: line 1: /usr/bin/python: No such file or directory&amp;quot;, &amp;quot;unreachable&amp;quot;: true}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# well, idk, did debian remove a symlink from python to python3?&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@mail:/var/lib/mediawiki# ls -lah /usr/bin/python&lt;br /&gt;
ls: cannot access &#039;/usr/bin/python&#039;: No such file or directory&lt;br /&gt;
root@mail:/var/lib/mediawiki# ls -lah /usr/bin/python3&lt;br /&gt;
lrwxrwxrwx 1 root root 10 Jun 30  2025 /usr/bin/python3 -&amp;gt; python3.13&lt;br /&gt;
root@mail:/var/lib/mediawiki# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# looks like there&#039;s a var I can set for this named ansible_python_interpreter, but it&#039;s only available in python &amp;gt;= 2.2.0 https://stackoverflow.com/a/41431540&lt;br /&gt;
# and we only have ansible v2.14.18, installed in apt on debian 12 on my client machine&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ dpkg -l | grep -i ansible&lt;br /&gt;
ii  ansible                                       7.7.0+dfsg-3+deb12u1                     all          Configuration management, deployment, and task execution system&lt;br /&gt;
ii  ansible-core                                  2.14.18-0+deb12u2                        all          Configuration management, deployment, and task execution system&lt;br /&gt;
ii  ansible-mitogen                               0.3.3-9+deb12u1                          all          Fast connection strategy for Ansible&lt;br /&gt;
$&lt;br /&gt;
&lt;br /&gt;
$ cat /etc/issue&lt;br /&gt;
Debian GNU/Linux 12 \n \l&lt;br /&gt;
&lt;br /&gt;
$ &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# looks like debian 13 only has ansible core v2.18, so that won&#039;t help https://packages.debian.org/trixie/ansible&lt;br /&gt;
# fuck it, I just created a symlink. maybe it&#039;ll get deleted a and I&#039;ll have to recreate it again. maybe not&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@mail:/var/lib/mediawiki# ln -s /usr/bin/python3 /usr/bin/python&lt;br /&gt;
root@mail:/var/lib/mediawiki# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# ok, that fixed ansible, and I was able to push-out the udpdated php.ini file&lt;br /&gt;
# restarted php&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@mail:/var/lib/mediawiki# systemctl restart php8.4-fpm&lt;br /&gt;
root@mail:/var/lib/mediawiki# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# ...aaaand the wiki is fixed&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[user@disp3459 ~]$ curl -IL https://wiki.eco-libre.org/&lt;br /&gt;
HTTP/1.1 301 Moved Permanently&lt;br /&gt;
Server: nginx&lt;br /&gt;
Date: Sat, 18 Apr 2026 17:38:39 GMT&lt;br /&gt;
Content-Type: text/html; charset=UTF-8&lt;br /&gt;
Content-Length: 0&lt;br /&gt;
Connection: keep-alive&lt;br /&gt;
X-Content-Type-Options: nosniff&lt;br /&gt;
Vary: Accept-Encoding,Cookie&lt;br /&gt;
Expires: Thu, 01 Jan 1970 00:00:00 GMT&lt;br /&gt;
Cache-Control: private, must-revalidate, max-age=0&lt;br /&gt;
X-Request-Id: REDACTED&lt;br /&gt;
X-Frame-Options: SAMEORIGIN&lt;br /&gt;
Last-Modified: Sat, 18 Apr 2026 17:38:06 GMT&lt;br /&gt;
Location: https://wiki.eco-libre.org/wiki/Main_Page&lt;br /&gt;
X-Content-Type-Options: nosniff&lt;br /&gt;
X-XSS-Protection: 1; mode=block&lt;br /&gt;
X-Frame-Options: deny&lt;br /&gt;
Referrer-Policy: strict-origin&lt;br /&gt;
X-Varnish: 6288299 13705059&lt;br /&gt;
Age: 33&lt;br /&gt;
Via: 1.1 mail (Varnish/7.7)&lt;br /&gt;
Strict-Transport-Security: max-age=86400;includeSubDomains&lt;br /&gt;
&lt;br /&gt;
HTTP/1.1 200 OK&lt;br /&gt;
Server: nginx&lt;br /&gt;
Date: Sat, 18 Apr 2026 17:38:40 GMT&lt;br /&gt;
Content-Type: text/html; charset=UTF-8&lt;br /&gt;
Content-Length: 15926&lt;br /&gt;
Connection: keep-alive&lt;br /&gt;
X-Content-Type-Options: nosniff&lt;br /&gt;
Content-language: en&lt;br /&gt;
Vary: Accept-Encoding,Cookie&lt;br /&gt;
Expires: Thu, 01 Jan 1970 00:00:00 GMT&lt;br /&gt;
Cache-Control: private, must-revalidate, max-age=0&lt;br /&gt;
X-Request-Id: REDACTED&lt;br /&gt;
X-Frame-Options: SAMEORIGIN&lt;br /&gt;
Last-Modified: Sat, 18 Apr 2026 01:16:13 GMT&lt;br /&gt;
X-Mod-Pagespeed: Powered By mod_pagespeed&lt;br /&gt;
X-Content-Type-Options: nosniff&lt;br /&gt;
X-XSS-Protection: 1; mode=block&lt;br /&gt;
X-Frame-Options: deny&lt;br /&gt;
Referrer-Policy: strict-origin&lt;br /&gt;
X-Varnish: 18702490 13705062&lt;br /&gt;
Age: 31&lt;br /&gt;
Via: 1.1 mail (Varnish/7.7)&lt;br /&gt;
Accept-Ranges: bytes&lt;br /&gt;
Strict-Transport-Security: max-age=86400;includeSubDomains&lt;br /&gt;
&lt;br /&gt;
[user@disp3459 ~]$ &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# ...&lt;br /&gt;
# alright, now let&#039;s try to install &amp;amp; configure all the 3TOFU&#039;d extensions&lt;br /&gt;
# we have 6 new extensions to install&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@mail:/var/tmp/mediawiki/extensions.2026-03-29# ls&lt;br /&gt;
ConfirmAccount-REL1_43-38c4602.tar.gz  extensions.txt  OATHAuth-REL1_43-015a49e.tar.gz   UserMerge-REL1_43-27425da.tar.gz&lt;br /&gt;
DeleteBatch-REL1_43-b3b052b.tar.gz     info.txt        SmiteSpam-REL1_43-483b81b.tar.gz  Widgets-REL1_43-60a09f0.tar.gz&lt;br /&gt;
root@mail:/var/tmp/mediawiki/extensions.2026-03-29# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# I extracted them&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@mail:/var/tmp/mediawiki/extensions.2026-03-29# for file in $(ls *.tar.gz); do tar -xvf $file; done.&lt;br /&gt;
...&lt;br /&gt;
Widgets/vendor/smarty/smarty/CHANGELOG.md&lt;br /&gt;
Widgets/COPYING&lt;br /&gt;
root@mail:/var/tmp/mediawiki/extensions.2026-03-29#&lt;br /&gt;
&lt;br /&gt;
root@mail:/var/tmp/mediawiki/extensions.2026-03-29# ls&lt;br /&gt;
ConfirmAccount                         info.txt                          UserMerge&lt;br /&gt;
ConfirmAccount-REL1_43-38c4602.tar.gz  OATHAuth                          UserMerge-REL1_43-27425da.tar.gz&lt;br /&gt;
DeleteBatch                            OATHAuth-REL1_43-015a49e.tar.gz   Widgets&lt;br /&gt;
DeleteBatch-REL1_43-b3b052b.tar.gz     SmiteSpam                         Widgets-REL1_43-60a09f0.tar.gz&lt;br /&gt;
extensions.txt                         SmiteSpam-REL1_43-483b81b.tar.gz&lt;br /&gt;
root@mail:/var/tmp/mediawiki/extensions.2026-03-29# &lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# let&#039;s start with OATHAuth, which is probably the most important (for security)&lt;br /&gt;
# oh wait, we already have OATHAuth??&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@mail:/var/tmp/mediawiki/extensions.2026-03-29# ls /var/www/html/wiki.eco-libre.org/htdocs/extensions/&lt;br /&gt;
AbuseFilter   ConfirmEdit      InputBox     MultimediaViewer  PdfHandler       SpamBlacklist          TitleBlacklist&lt;br /&gt;
CategoryTree  DiscussionTools  Interwiki    Nuke              Poem             SyntaxHighlight_GeSHi  VisualEditor&lt;br /&gt;
Cite          Echo             Linter       OATHAuth          ReplaceText      TemplateData           WikiEditor&lt;br /&gt;
CiteThisPage  Gadgets          LoginNotify  PageImages        Scribunto        TextExtracts&lt;br /&gt;
CodeEditor    ImageMap         Math         ParserFunctions   SecureLinkFixer  Thanks&lt;br /&gt;
root@mail:/var/tmp/mediawiki/extensions.2026-03-29# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# ugh, yeah, this syas it has been inclued in MediaWiki core since v1.31 https://www.mediawiki.org/wiki/Extension:OATHAuth&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
This extension comes with MediaWiki 1.31 and later, so you do not need to download it. The remaining configuration instructions must still be followed.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# well, maybe that&#039;s why it got updated so much. anyway, that&#039;s better; we get it directly from apt&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@mail:/var/tmp/mediawiki/extensions.2026-03-29# dpkg -l | grep -i mediawiki&lt;br /&gt;
ii  mediawiki                         1:1.43.8+dfsg-1~deb13u1                 all          website engine for collaborative work&lt;br /&gt;
ii  mediawiki-classes                 1:1.43.8+dfsg-1~deb13u1                 all          website engine for collaborative work - standalone classes&lt;br /&gt;
root@mail:/var/tmp/mediawiki/extensions.2026-03-29# &lt;br /&gt;
&lt;br /&gt;
root@mail:/var/tmp/mediawiki/extensions.2026-03-29# dpkg-query -L mediawiki | grep -i oathauth | head&lt;br /&gt;
/usr/share/mediawiki/extensions-core/OATHAuth&lt;br /&gt;
/usr/share/mediawiki/extensions-core/OATHAuth/COPYING&lt;br /&gt;
/usr/share/mediawiki/extensions-core/OATHAuth/OATHAuth.alias.php&lt;br /&gt;
/usr/share/mediawiki/extensions-core/OATHAuth/ServiceWiring.php&lt;br /&gt;
/usr/share/mediawiki/extensions-core/OATHAuth/composer.json&lt;br /&gt;
/usr/share/mediawiki/extensions-core/OATHAuth/extension.json&lt;br /&gt;
/usr/share/mediawiki/extensions-core/OATHAuth/i18n&lt;br /&gt;
/usr/share/mediawiki/extensions-core/OATHAuth/i18n/ang.json&lt;br /&gt;
/usr/share/mediawiki/extensions-core/OATHAuth/i18n/api&lt;br /&gt;
/usr/share/mediawiki/extensions-core/OATHAuth/i18n/api/ar.json&lt;br /&gt;
root@mail:/var/tmp/mediawiki/extensions.2026-03-29# &lt;br /&gt;
&lt;br /&gt;
root@mail:/var/tmp/mediawiki/extensions.2026-03-29# dpkg-query -L mediawiki | grep -i oathauth | tail&lt;br /&gt;
/usr/share/mediawiki/extensions-core/OATHAuth/src/OATHAuth.php&lt;br /&gt;
/usr/share/mediawiki/extensions-core/OATHAuth/src/OATHAuthModuleRegistry.php&lt;br /&gt;
/usr/share/mediawiki/extensions-core/OATHAuth/src/OATHAuthServices.php&lt;br /&gt;
/usr/share/mediawiki/extensions-core/OATHAuth/src/OATHUser.php&lt;br /&gt;
/usr/share/mediawiki/extensions-core/OATHAuth/src/OATHUserRepository.php&lt;br /&gt;
/usr/share/mediawiki/extensions-core/OATHAuth/src/Special&lt;br /&gt;
/usr/share/mediawiki/extensions-core/OATHAuth/src/Special/DisableOATHForUser.php&lt;br /&gt;
/usr/share/mediawiki/extensions-core/OATHAuth/src/Special/OATHManage.php&lt;br /&gt;
/usr/share/mediawiki/extensions-core/OATHAuth/src/Special/VerifyOATHForUser.php&lt;br /&gt;
/var/lib/mediawiki/extensions/OATHAuth&lt;br /&gt;
root@mail:/var/tmp/mediawiki/extensions.2026-03-29# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# I wonder if there&#039;s any others we get? looks like it&#039;s only this one&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@mail:/var/tmp/mediawiki/extensions.2026-03-29# ls /usr/share/mediawiki/extensions-core | grep -iE &#039;ConfirmAccount|SmiteSpam|DeleteBatch|UserMerge|Widgets|OATHAuth&#039;&lt;br /&gt;
OATHAuth&lt;br /&gt;
root@mail:/var/tmp/mediawiki/extensions.2026-03-29# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# just another quick check – none of these are in apt either&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@mail:/var/tmp/mediawiki/extensions.2026-03-29# apt-cache search mediawiki | grep -i extension&lt;br /&gt;
libreoffice-wiki-publisher - LibreOffice extension for working with MediaWiki articles&lt;br /&gt;
mediawiki-extension-codemirror - Syntax highlighting in MediaWiki&#039;s wikitext editor&lt;br /&gt;
mediawiki-extension-youtube - Embed YouTube and other videos into MediaWiki pages&lt;br /&gt;
php-luasandbox - PHP extension that provides a sandboxed Lua environment&lt;br /&gt;
php-wmerrors - PHP extension that enhances and customizes handling of PHP errors&lt;br /&gt;
root@mail:/var/tmp/mediawiki/extensions.2026-03-29# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# anyway, back to OATHAuth&lt;br /&gt;
## it says to enable caching&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
It is strongly recommended to setup caching when using OATHAuth.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# I confirmed that we already have cachign setup with APC&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@mail:/var/www/html/wiki.eco-libre.org# grep -ir cache LocalSettings.php &lt;br /&gt;
$wgMainCacheType = CACHE_ACCEL;&lt;br /&gt;
$wgMemCachedServers = [];&lt;br /&gt;
## Set $wgCacheDirectory to a writable directory on the web server&lt;br /&gt;
#$wgCacheDirectory = &amp;quot;$IP/cache&amp;quot;;&lt;br /&gt;
$wgCacheDirectory = &amp;quot;/var/www/html/wiki.eco-libre.org/cache&amp;quot;;&lt;br /&gt;
root@mail:/var/www/html/wiki.eco-libre.org# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
### CACHE_ACCEL means APC, which is the recommended option for single-server wikis, per the official mediawiki docs on performance tuning https://www.mediawiki.org/wiki/Manual:Performance_tuning#Single_web_server&lt;br /&gt;
### it also says to ue varnish. check&lt;br /&gt;
### it also says to use php-fpm w/ event MPM (instead of mod_php with prefork MPM), which we changed-to last month. check.&lt;br /&gt;
## our notes from OSE had the following options https://wiki.opensourceecology.org/wiki/CHG-2025-XX-XX_migrate_wiki_to_hetzner3&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
wfLoadExtension( &#039;OATHAuth&#039; );&lt;br /&gt;
&lt;br /&gt;
# Relaxed mode with +/- 4 minutes time drift tolerance. This is important or users will complain and/or disable 2FA entirely&lt;br /&gt;
# The security consequences are small. The usability benefits are huge.&lt;br /&gt;
$wgOATHAuthWindowRadius = 8;&lt;br /&gt;
&lt;br /&gt;
# make admins require 2FA&lt;br /&gt;
$wgOATHRequiredForGroups = [&#039;sysop&#039;, &#039;interface-admin&#039;, &#039;bureaucrat&#039;, &#039;suppress&#039;, &#039;widgeteditor&#039; ];&lt;br /&gt;
&lt;br /&gt;
# make &#039;powerful&#039; rights require 2FA&lt;br /&gt;
$wgOATHExclusiveRights =  [ &#039;apihighlimits&#039;, &#039;applychangetags&#039;, &#039;autoconfirmed&#039;, &#039;autopatrol&#039;, &#039;bigdelete&#039;, &#039;block&#039;, &#039;blockemail&#039;, &#039;bot&#039;, &#039;changetags&#039;, &#039;createaccount&#039;, &#039;createtalk&#039;, &#039;delete&#039;, &#039;deletechangetags&#039;, &#039;deletedhistory&#039;, &#039;deletedtext&#039;, &#039;deletelogentry&#039;, &#039;deleterevision&#039;, &#039;editcontentmodel&#039;, &#039;editinterface&#039;, &#039;editprotected&#039;, &#039;editsemiprotected&#039;, &#039;editsitecss&#039;, &#039;editsitejs&#039;, &#039;editsitejson&#039;, &#039;editusercss&#039;, &#039;edituserjs&#039;, &#039;edituserjson&#039;, &#039;hideuser&#039;, &#039;import&#039;, &#039;importupload&#039;, &#039;ipblock-exempt&#039;, &#039;managechangetags&#039;, &#039;markbotedits&#039;, &#039;mergehistory&#039;, &#039;move-categorypages&#039;, &#039;move-rootuserpages&#039;, &#039;move-subpages&#039;, &#039;nominornewtalk&#039;, &#039;noratelimit&#039;, &#039;patrol&#039;, &#039;protect&#039;, &#039;renameuser&#039;, &#039;reupload-shared&#039;, &#039;sendemail&#039;, &#039;suppressionlog&#039;, &#039;suppressredirect&#039;, &#039;suppressrevision&#039;, &#039;unblockself&#039;, &#039;unwatchedpages&#039;, &#039;userrights&#039;, ];&lt;br /&gt;
&lt;br /&gt;
# full list for reference (taken from htdocs/includes/MainConfigSchema.php) https://www.mediawiki.org/wiki/Extension:OATHAuth#Configuration&lt;br /&gt;
#$wgOATHExclusiveRights =  [ &#039;apihighlimits&#039;, &#039;applychangetags&#039;, &#039;autoconfirmed&#039;, &#039;autopatrol&#039;, &#039;bigdelete&#039;, &#039;block&#039;, &#039;blockemail&#039;, &#039;bot&#039;, &#039;browsearchive&#039;, &#039;changetags&#039;, &#039;createaccount&#039;, &#039;createpage&#039;, &#039;createtalk&#039;, &#039;delete&#039;, &#039;deletechangetags&#039;, &#039;deletedhistory&#039;, &#039;deletedtext&#039;, &#039;deletelogentry&#039;, &#039;deleterevision&#039;, &#039;edit&#039;, &#039;editcontentmodel&#039;, &#039;editinterface&#039;, &#039;editmyoptions&#039;, &#039;editmyprivateinfo&#039;, &#039;editmyusercss&#039;, &#039;editmyuserjs&#039;, &#039;editmyuserjson&#039;, &#039;editmyuserjsredirect&#039;, &#039;editmywatchlist&#039;, &#039;editprotected&#039;, &#039;editsemiprotected&#039;, &#039;editsitecss&#039;, &#039;editsitejs&#039;, &#039;editsitejson&#039;, &#039;editusercss&#039;, &#039;edituserjs&#039;, &#039;edituserjson&#039;, &#039;hideuser&#039;, &#039;import&#039;, &#039;importupload&#039;, &#039;ipblock-exempt&#039;, &#039;managechangetags&#039;, &#039;markbotedits&#039;, &#039;mergehistory&#039;, &#039;minoredit&#039;, &#039;move&#039;, &#039;move-categorypages&#039;, &#039;movefile&#039;, &#039;move-rootuserpages&#039;, &#039;move-subpages&#039;, &#039;nominornewtalk&#039;, &#039;noratelimit&#039;, &#039;patrol&#039;, &#039;protect&#039;, &#039;read&#039;, &#039;renameuser&#039;, &#039;reupload&#039;, &#039;reupload-shared&#039;, &#039;rollback&#039;, &#039;sendemail&#039;, &#039;suppressionlog&#039;, &#039;suppressredirect&#039;, &#039;suppressrevision&#039;, &#039;unblockself&#039;, &#039;undelete&#039;, &#039;unwatchedpages&#039;, &#039;upload&#039;, &#039;userrights&#039;, &#039;viewmyprivateinfo&#039;, &#039;viewmywatchlist&#039;, &#039;viewsuppressed&#039; ];&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
### I strongly agree with the relaxed window of codes&lt;br /&gt;
### I guess that list of requirements is good&lt;br /&gt;
### the other two are no longer listed on the wiki, but I guess they&#039;re good ?&lt;br /&gt;
## the docs show an additional option = $wgOATHSecretKey, used for encrypting the secret keys in the db. it suggests this command to generate it https://www.mediawiki.org/wiki/Extension:OATHAuth&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
hexdump -vn32 -e&#039;8/8 &amp;quot;%08X&amp;quot; &amp;quot;\n&amp;quot;&#039; /dev/urandom&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
### says it&#039;s only available since 1.45. I&#039;m not sure if that&#039;s the mediawiki version or the extension version.&lt;br /&gt;
### oh, I guess it&#039;s mediawiki, since they ship together. We&#039;re running 1.43.8, so I guess we can&#039;t use it yet https://wiki.eco-libre.org/wiki/Special:Version&lt;br /&gt;
### well, I guess let&#039;s define it. then it&#039;ll automatically start to use it when we upgrade to the next LTS. I think.&lt;br /&gt;
## ok, here&#039;s what I added&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@mail:/var/www/html/wiki.eco-libre.org# diff LocalSettings.20260418.php LocalSettings.php &lt;br /&gt;
220a221,240&lt;br /&gt;
&amp;gt; &lt;br /&gt;
&amp;gt; # configure OATHAuth for MFA (2FA). See also:&lt;br /&gt;
&amp;gt; # * https://www.mediawiki.org/wiki/Extension:OATHAuth&lt;br /&gt;
&amp;gt; # * https://wiki.eco-libre.org/wiki/Maltfield_Log/2026&lt;br /&gt;
&amp;gt; wfLoadExtension( &#039;OATHAuth&#039; );&lt;br /&gt;
&amp;gt; &lt;br /&gt;
&amp;gt; # Relaxed mode with +/- 4 minutes time drift tolerance. This is important or users will complain and/or disable 2FA entirely&lt;br /&gt;
&amp;gt; # The security consequences are small. The usability benefits are huge.&lt;br /&gt;
&amp;gt; $wgOATHAuthWindowRadius = 8;&lt;br /&gt;
&amp;gt; &lt;br /&gt;
&amp;gt; # make admins require 2FA&lt;br /&gt;
&amp;gt; $wgOATHRequiredForGroups = [&#039;sysop&#039;, &#039;interface-admin&#039;, &#039;bureaucrat&#039;, &#039;suppress&#039;, &#039;widgeteditor&#039; ];&lt;br /&gt;
&amp;gt; &lt;br /&gt;
&amp;gt; # make &#039;powerful&#039; rights require 2FA&lt;br /&gt;
&amp;gt; $wgOATHExclusiveRights =  [ &#039;apihighlimits&#039;, &#039;applychangetags&#039;, &#039;autoconfirmed&#039;, &#039;autopatrol&#039;, &#039;bigdelete&#039;, &#039;block&#039;, &#039;blockemail&#039;, &#039;bot&#039;, &#039;changetags&#039;, &#039;createaccount&#039;, &#039;createtalk&#039;, &#039;delete&#039;, &#039;deletechangetags&#039;, &#039;deletedhistory&#039;, &#039;deletedtext&#039;, &#039;deletelogentry&#039;, &#039;deleterevision&#039;, &#039;editcontentmodel&#039;, &#039;editinterface&#039;, &#039;editprotected&#039;, &#039;editsemiprotected&#039;, &#039;editsitecss&#039;, &#039;editsitejs&#039;, &#039;editsitejson&#039;, &#039;editusercss&#039;, &#039;edituserjs&#039;, &#039;edituserjson&#039;, &#039;hideuser&#039;, &#039;import&#039;, &#039;importupload&#039;, &#039;ipblock-exempt&#039;, &#039;managechangetags&#039;, &#039;markbotedits&#039;, &#039;mergehistory&#039;, &#039;move-categorypages&#039;, &#039;move-rootuserpages&#039;, &#039;move-subpages&#039;, &#039;nominornewtalk&#039;, &#039;noratelimit&#039;, &#039;patrol&#039;, &#039;protect&#039;, &#039;renameuser&#039;, &#039;reupload-shared&#039;, &#039;sendemail&#039;, &#039;suppressionlog&#039;, &#039;suppressredirect&#039;, &#039;suppressrevision&#039;, &#039;unblockself&#039;, &#039;unwatchedpages&#039;, &#039;userrights&#039;, ];&lt;br /&gt;
&amp;gt; &lt;br /&gt;
&amp;gt; # full list for reference (taken from htdocs/includes/MainConfigSchema.php) https://www.mediawiki.org/wiki/Extension:OATHAuth#Configuration&lt;br /&gt;
&amp;gt; #$wgOATHExclusiveRights =  [ &#039;apihighlimits&#039;, &#039;applychangetags&#039;, &#039;autoconfirmed&#039;, &#039;autopatrol&#039;, &#039;bigdelete&#039;, &#039;block&#039;, &#039;blockemail&#039;, &#039;bot&#039;, &#039;browsearchive&#039;, &#039;changetags&#039;, &#039;createaccount&#039;, &#039;createpage&#039;, &#039;createtalk&#039;, &#039;delete&#039;, &#039;deletechangetags&#039;, &#039;deletedhistory&#039;, &#039;deletedtext&#039;, &#039;deletelogentry&#039;, &#039;deleterevision&#039;, &#039;edit&#039;, &#039;editcontentmodel&#039;, &#039;editinterface&#039;, &#039;editmyoptions&#039;, &#039;editmyprivateinfo&#039;, &#039;editmyusercss&#039;, &#039;editmyuserjs&#039;, &#039;editmyuserjson&#039;, &#039;editmyuserjsredirect&#039;, &#039;editmywatchlist&#039;, &#039;editprotected&#039;, &#039;editsemiprotected&#039;, &#039;editsitecss&#039;, &#039;editsitejs&#039;, &#039;editsitejson&#039;, &#039;editusercss&#039;, &#039;edituserjs&#039;, &#039;edituserjson&#039;, &#039;hideuser&#039;, &#039;import&#039;, &#039;importupload&#039;, &#039;ipblock-exempt&#039;, &#039;managechangetags&#039;, &#039;markbotedits&#039;, &#039;mergehistory&#039;, &#039;minoredit&#039;, &#039;move&#039;, &#039;move-categorypages&#039;, &#039;movefile&#039;, &#039;move-rootuserpages&#039;, &#039;move-subpages&#039;, &#039;nominornewtalk&#039;, &#039;noratelimit&#039;, &#039;patrol&#039;, &#039;protect&#039;, &#039;read&#039;, &#039;renameuser&#039;, &#039;reupload&#039;, &#039;reupload-shared&#039;, &#039;rollback&#039;, &#039;sendemail&#039;, &#039;suppressionlog&#039;, &#039;suppressredirect&#039;, &#039;suppressrevision&#039;, &#039;unblockself&#039;, &#039;undelete&#039;, &#039;unwatchedpages&#039;, &#039;upload&#039;, &#039;userrights&#039;, &#039;viewmyprivateinfo&#039;, &#039;viewmywatchlist&#039;, &#039;viewsuppressed&#039; ];&lt;br /&gt;
&amp;gt; &lt;br /&gt;
&amp;gt; $wgOATHSecretKey=&#039;REDACTED&#039;;&lt;br /&gt;
root@mail:/var/www/html/wiki.eco-libre.org# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## ok, now let&#039;s update the db&lt;br /&gt;
### oh, this failed. we need to use the special privliged db user, since we hardened the normal db user&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@mail:/var/www/html/wiki.eco-libre.org# sudo -u www-data php /usr/share/mediawiki/maintenance/run.php update&lt;br /&gt;
MediaWiki 1.43.8 Updater&lt;br /&gt;
&lt;br /&gt;
Your composer.lock file is up to date with current dependencies!&lt;br /&gt;
Going to run database updates for wiki_el_db-rHb3&lt;br /&gt;
Depending on the size of your database this may take a while!&lt;br /&gt;
Abort with control-c in the next five seconds (skip this countdown with --quick) ...0&lt;br /&gt;
Updating category collations...&lt;br /&gt;
Selecting next 100 pages from cl_from = 0... processing... 0 done.&lt;br /&gt;
0 rows processed&lt;br /&gt;
...done.&lt;br /&gt;
Modifying rd_title field of table redirect...Wikimedia\Rdbms\DBQueryError from line 1198 of /usr/share/mediawiki/includes/libs/rdbms/database/Database.php: Error 1142: ALTER command denied to user &#039;wiki_el_user&#039;@&#039;localhost&#039; for table `wiki_el_db`.`rHb3redirect`&lt;br /&gt;
Function: Wikimedia\Rdbms\Database::sourceFile( /usr/share/mediawiki/maintenance/archives/patch-redirect-rd_title-varbinary.sql )&lt;br /&gt;
Query: ALTER TABLE `rHb3redirect` MODIFY rd_title VARBINARY(255) NOT NULL default &#039;&#039;,&lt;br /&gt;
 MODIFY rd_fragment VARBINARY(255) default NULL&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#0 /usr/share/mediawiki/includes/libs/rdbms/database/Database.php(1182): Wikimedia\Rdbms\Database-&amp;gt;getQueryException()&lt;br /&gt;
#1 /usr/share/mediawiki/includes/libs/rdbms/database/Database.php(1156): Wikimedia\Rdbms\Database-&amp;gt;getQueryExceptionAndLog()&lt;br /&gt;
#2 /usr/share/mediawiki/includes/libs/rdbms/database/Database.php(647): Wikimedia\Rdbms\Database-&amp;gt;reportQueryError()&lt;br /&gt;
#3 /usr/share/mediawiki/includes/libs/rdbms/database/Database.php(2791): Wikimedia\Rdbms\Database-&amp;gt;query()&lt;br /&gt;
#4 /usr/share/mediawiki/includes/libs/rdbms/database/Database.php(2729): Wikimedia\Rdbms\Database-&amp;gt;sourceStream()&lt;br /&gt;
#5 /usr/share/mediawiki/includes/libs/rdbms/database/DBConnRef.php(127): Wikimedia\Rdbms\Database-&amp;gt;sourceFile()&lt;br /&gt;
#6 /usr/share/mediawiki/includes/libs/rdbms/database/DBConnRef.php(799): Wikimedia\Rdbms\DBConnRef-&amp;gt;__call()&lt;br /&gt;
#7 /usr/share/mediawiki/includes/installer/DatabaseUpdater.php(797): Wikimedia\Rdbms\DBConnRef-&amp;gt;sourceFile()&lt;br /&gt;
#8 /usr/share/mediawiki/includes/installer/DatabaseUpdater.php(1074): MediaWiki\Installer\DatabaseUpdater-&amp;gt;applyPatch()&lt;br /&gt;
#9 /usr/share/mediawiki/includes/installer/DatabaseUpdater.php(595): MediaWiki\Installer\DatabaseUpdater-&amp;gt;modifyField()&lt;br /&gt;
#10 /usr/share/mediawiki/includes/installer/DatabaseUpdater.php(548): MediaWiki\Installer\DatabaseUpdater-&amp;gt;runUpdates()&lt;br /&gt;
#11 /usr/share/mediawiki/maintenance/update.php(195): MediaWiki\Installer\DatabaseUpdater-&amp;gt;doUpdates()&lt;br /&gt;
#12 /usr/share/mediawiki/maintenance/includes/MaintenanceRunner.php(703): UpdateMediaWiki-&amp;gt;execute()&lt;br /&gt;
#13 /usr/share/mediawiki/maintenance/run.php(51): MediaWiki\Maintenance\MaintenanceRunner-&amp;gt;run()&lt;br /&gt;
#14 {main}&lt;br /&gt;
root@mail:/var/www/html/wiki.eco-libre.org# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# alright, this worked&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@mail:/var/www/html/wiki.eco-libre.org# sudo -u www-data php /usr/share/mediawiki/maintenance/run.php update --dbuser wiki_el_superuser --dbpass REDACTED&lt;br /&gt;
...&lt;br /&gt;
done.&lt;br /&gt;
Purging caches...done.&lt;br /&gt;
&lt;br /&gt;
Done in 8.3 s.&lt;br /&gt;
root@mail:/var/www/html/wiki.eco-libre.org# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## after that, I tried to login. it worked&lt;br /&gt;
## I expected to be sent to some 2fa registration page, but that didn&#039;t happen. it was just like any normal login&lt;br /&gt;
## I went to special pages to see if I could get it to yell at me to enable 2fa, but that didn&#039;t happen&lt;br /&gt;
### I only see the following bold options on /wiki/Special:SpecialPages (usually admin page). I wonder if this is a subset because the others are just hidden since I don&#039;t have 2FA setup? https://wiki.eco-libre.org/wiki/Special:SpecialPages&lt;br /&gt;
#### Manage Two-Factor Authentication, Watchlist, Upload file, Change content model of a page&lt;br /&gt;
## anyway, I went to &amp;quot;Manage Two-factor authentication&amp;quot; https://wiki.eco-libre.org/wiki/Special:AccountSecurity&lt;br /&gt;
## I clicked the &amp;quot;Enable&amp;quot; button under TOTP&lt;br /&gt;
## I scanned the code. It entered it in my TOTP app as &amp;quot;Eco-Libre&amp;quot; – that&#039;s not ideal. It should say &amp;quot;Eco-Libre Wiki&amp;quot;&lt;br /&gt;
## So I updated the LocalSettings.php config with&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# This is the name that the entry will have in the user&#039;s TOTP app&lt;br /&gt;
$wgOATHAuthAccountPrefix=&#039;Eco-Libre Wiki&#039;;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## anyway, I was able to finish the 2FA enrollment process&lt;br /&gt;
## I went back to SpecialPages, and already I see a *ton* more SpecialPages in bold. So it looks like that restriction worked. Currently I have access to&lt;br /&gt;
### Unwateched pages, Block user, Create account, Delete user contributions, Disable user&#039;s two-factor authentication, Rename user, Unblock user, Verify two-factor authentication status, Watchlist, Upload file, Replace text, Change content model of a page, Import pages, Mass delete, Merge page histories, and View deleted pages.&lt;br /&gt;
## I also have a notifcation &amp;quot;Two-factor authenication has been enabeld on your account. If you did not do this, your account may have been comprimised.&amp;quot;&lt;br /&gt;
## I logged-out&lt;br /&gt;
## I logged-in.&lt;br /&gt;
### First I teted it with 6 zeros (bullshit code), and it rejected it&lt;br /&gt;
### next I entered the real OTP from my app; it worked&lt;br /&gt;
## ok, this extension is done.&lt;br /&gt;
# ...&lt;br /&gt;
# probably the next-most important one is ConfirmAccount.&lt;br /&gt;
## Honestly I don&#039;t know if I&#039;ll use this, as I decided it&#039;s better to raise the barrier of entry on the wiki to users that have passed the Eco-Libre test (which is itself very accessible, but it does allow for a onboarding &amp;amp; alignment process that should eliminate spam issues that most wikis have)&lt;br /&gt;
## perhaps if I can set it up to email the applicant a link to the &amp;quot;volunteer test&amp;quot; docs, that would be helpful to funnel wiki users into the proper volunteer join workflow..&lt;br /&gt;
# first let me copy the extensions; I ran these commands to put them in-place (yet still deactivated)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
rsync -av --progress ./ConfirmAccount /var/www/html/wiki.eco-libre.org/htdocs/extensions/&lt;br /&gt;
rsync -av --progress ./SmiteSpam /var/www/html/wiki.eco-libre.org/htdocs/extensions/&lt;br /&gt;
rsync -av --progress ./DeleteBatch /var/www/html/wiki.eco-libre.org/htdocs/extensions/&lt;br /&gt;
rsync -av --progress ./UserMerge /var/www/html/wiki.eco-libre.org/htdocs/extensions/&lt;br /&gt;
rsync -av --progress ./Widgets /var/www/html/wiki.eco-libre.org/htdocs/extensions/&lt;br /&gt;
rsync -av --progress ./OATHAuth /var/www/html/wiki.eco-libre.org/htdocs/extensions/&lt;br /&gt;
fix_web_permissions.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## that finished&lt;br /&gt;
# ok, here&#039;s the ConfirmAccount https://www.mediawiki.org/wiki/Extension:ConfirmAccount&lt;br /&gt;
## hmmm...it says we should use cache type CACHE_DB https://www.mediawiki.org/wiki/Extension:ConfirmAccount#Installation&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
wfLoadExtension( &#039;ConfirmAccount&#039; );&lt;br /&gt;
$wgSessionCacheType = CACHE_DB; // Avoids stale session state across requests.&lt;br /&gt;
$wgGroupPermissions[&#039;*&#039;][&#039;createaccount&#039;] = false; // REQUIRED to enforce account requests&lt;br /&gt;
$wgGroupPermissions[&#039;bureaucrat&#039;][&#039;createaccount&#039;] = true; // Optional to allow account creation by this trusted user group&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
#### I can&#039;t find elsewhere that says this specific cache type is requried. We&#039;re using APC, which I think is supposed to be more preformant than &lt;br /&gt;
### I checked the OSE LocalSettings.php config, and it also uses ConfirmAccount *and* CACHE_ACCEL (APC), so surely it&#039;s fine&lt;br /&gt;
### but it also used a bunch of other optimiazations, some of which are necessary for varnish caching&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#################&lt;br /&gt;
# VARNISH CACHE #&lt;br /&gt;
#################&lt;br /&gt;
&lt;br /&gt;
# note that these are named &amp;quot;squid&amp;quot; for historical reasons: wikipedia used to&lt;br /&gt;
# use squid, now they use varnish. They say &amp;quot;squid,&amp;quot; but also apply to varnish&lt;br /&gt;
# * https://www.mediawiki.org/wiki/Manual:Configuration_settings#Squid&lt;br /&gt;
&lt;br /&gt;
# See this guide for more info:&lt;br /&gt;
#  * https://www.mediawiki.org/wiki/Manual:Varnish_caching&lt;br /&gt;
&lt;br /&gt;
#$wgUseSquid = true;&lt;br /&gt;
#$wgSquidServers = array(&#039;opensourceecology.org&#039;);&lt;br /&gt;
#$wgSquidServersNoPurge = array(&#039;127.0.0.1&#039;);&lt;br /&gt;
&lt;br /&gt;
$wgUseSquid = true;&lt;br /&gt;
$wgSquidServers = array( &#039;127.0.0.1:6081&#039; );&lt;br /&gt;
$wgUsePrivateIPs = true;&lt;br /&gt;
&lt;br /&gt;
#################&lt;br /&gt;
# OPTIMIZATIONS #&lt;br /&gt;
#################&lt;br /&gt;
&lt;br /&gt;
# See these links for more info:&lt;br /&gt;
#  * https://www.mediawiki.org/wiki/Manual:Performance_tuning&lt;br /&gt;
#  * https://www.mediawiki.org/wiki/Manual:Caching&lt;br /&gt;
#  * https://www.mediawiki.org/wiki/User:Aaron_Schulz/How_to_make_MediaWiki_fast&lt;br /&gt;
&lt;br /&gt;
# INTERNAL MEDIAWIKI CACHE OPTIONS (DISTINCT FROM VARNISH)&lt;br /&gt;
&lt;br /&gt;
# MainCache and MessageCache should use APCU per Aaron Schulz&lt;br /&gt;
$wgMainCacheType = CACHE_ACCEL;&lt;br /&gt;
&lt;br /&gt;
# note that if message cache uses the db (per defaults), then it may make every&lt;br /&gt;
# page load include a db change, which causes mediawiki to emmit a set-cookie&lt;br /&gt;
# for cpPosTime. The cookie&#039;s presence coming from the backend causes varnish&lt;br /&gt;
# not to cache the page (rightfully so), and the result is that varnish (which&lt;br /&gt;
# is our most important cache) is rendered useless. For more info, see:&lt;br /&gt;
#  * https://www.mediawiki.org/wiki/Topic:U9fys4phj04a85vu&lt;br /&gt;
#  * https://wiki.opensourceecology.org/wiki/Maltfield_log_2018#Thr_Mar_15.2C_2018&lt;br /&gt;
$wgMessageCacheType = CACHE_ACCEL;&lt;br /&gt;
$wgUseLocalMessageCache = true;&lt;br /&gt;
&lt;br /&gt;
# Parser Cache should still use the DB per Aaron Schulz&lt;br /&gt;
$wgParserCacheType = CACHE_DB;&lt;br /&gt;
&lt;br /&gt;
# enable caching navigation sidebar per Aaron Schulz&lt;br /&gt;
$wgEnableSidebarCache = true;&lt;br /&gt;
&lt;br /&gt;
# cache interface messages to files in this directory per Aaron Schulz&lt;br /&gt;
# note that this should be outside the docroot!&lt;br /&gt;
$wgCacheDirectory = &amp;quot;$IP/../cache&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
# OTHER OPTIMIZATIONS&lt;br /&gt;
&lt;br /&gt;
# decrease db-heavy features per Aaron Schulz&lt;br /&gt;
$wgMiserMode = true;&lt;br /&gt;
&lt;br /&gt;
# Causes serious encoding problems&lt;br /&gt;
$wgUseGzip = false;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## I added this to our LocalSettings.php, except I hard-coded the wgCacheDirectory to &#039;/var/www/html/wiki.eco-libre.org/cache&#039;&lt;br /&gt;
## here&#039;s the ConfirmAccounts-related (and ConfirmEdit-related) config from OSE&#039;s LocalSettings.php&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# ConfirmAccount&lt;br /&gt;
# This extension and directory requires an admin to confirm a user before their &lt;br /&gt;
account is created&lt;br /&gt;
&lt;br /&gt;
require_once &amp;quot;$IP/extensions/ConfirmAccount/ConfirmAccount.php&amp;quot;;&lt;br /&gt;
$wgFileStore[&#039;accountreqs&#039;] = &amp;quot;$IP/images/ConfirmAccount&amp;quot;;&lt;br /&gt;
$wgFileStore[&#039;accountcreds&#039;] = &amp;quot;$IP/images/ConfirmAccount&amp;quot;;&lt;br /&gt;
$wgConfirmAccountContact = &#039;REDACTED@opensourceecology.org&#039;;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# ConfirmEdit&lt;br /&gt;
# reCaptcha settings and keys&lt;br /&gt;
&lt;br /&gt;
wfLoadExtensions([ &#039;ConfirmEdit&#039;, &#039;ConfirmEdit/ReCaptcha&#039; ]);&lt;br /&gt;
#$wgCaptchaClass = &#039;ReCaptcha&#039;;&lt;br /&gt;
$wgCaptchaClass = &#039;SimpleCaptcha&#039;;&lt;br /&gt;
#$wgCaptchaClass = &#039;QuestyCaptcha&#039;;&lt;br /&gt;
&lt;br /&gt;
#$wgReCaptchaPublicKey = &#039;REDACTED&#039;;&lt;br /&gt;
#$wgReCaptchaPrivateKey = &#039;REDACTED&#039;;&lt;br /&gt;
$wgReCaptchaPublicKey = &#039;REDACTED&#039;;&lt;br /&gt;
$wgReCaptchaPrivateKey = &#039;REDACTED&#039;;&lt;br /&gt;
&lt;br /&gt;
# https://www.google.com/recaptcha/admin/site?siteid=REDACTED - old style&lt;br /&gt;
#$recaptcha_public_key = &#039;REDACTED&#039;;&lt;br /&gt;
#$recaptcha_private_key = &#039;REDACTED&#039;;&lt;br /&gt;
&lt;br /&gt;
$wgGroupPermissions[&#039;*&#039;            ][&#039;skipcaptcha&#039;] = false;&lt;br /&gt;
$wgGroupPermissions[&#039;user&#039;         ][&#039;skipcaptcha&#039;] = true;&lt;br /&gt;
$wgGroupPermissions[&#039;autoconfirmed&#039;][&#039;skipcaptcha&#039;] = true;&lt;br /&gt;
$wgGroupPermissions[&#039;bot&#039;          ][&#039;skipcaptcha&#039;] = true; // registered bots&lt;br /&gt;
$wgGroupPermissions[&#039;sysop&#039;        ][&#039;skipcaptcha&#039;] = true;&lt;br /&gt;
&lt;br /&gt;
# Allow admins to approve (and unapprove) users via Special:UserRights&lt;br /&gt;
$wgAddGroups[&#039;sysop&#039;][&#039;approved&#039;] = true;&lt;br /&gt;
$wgRemoveGroups[&#039;sysop&#039;][&#039;approved&#039;] = true;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## of note is that I was planning on moving OSE from recaptcha to FancyCaptcha https://wiki.opensourceecology.org/wiki/CHG-2025-XX-XX_migrate_wiki_to_hetzner3&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# re-enable ConfirmEdit and switch to FancyCaption&lt;br /&gt;
grep &#039;FancyCaptcha&#039; ${vhostDir}/LocalSettings.php || perl -0777 -pi -e &amp;quot;s%\\\$wgCaptchaClass = &#039;SimpleCaptcha&#039;;%\#\\\$wgCaptchaClass = &#039;SimpleCaptcha&#039;;\n\nwfLoadExtensions([ &#039;ConfirmEdit&#039;, &#039;ConfirmEdit/FancyCaptcha&#039; ]);\n\\\$wgCaptchaDirectory = &#039;/var/www/html/wiki.opensourceecology.org/htdocs/images/captcha/&#039;;\n\\\$wgCaptchaSecret = &#039;$wgCaptchaSecret&#039;;\n%igs&amp;quot; ${vhostDir}/LocalSettings.php&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## oh shit, there&#039;s a known issue with ConfirmAccounts that it doesn&#039;t work at all on mediawiki v1.43. it was opened a year ago X_x https://www.mediawiki.org/wiki/Extension:ConfirmAccount#Known_issues&lt;br /&gt;
### well, hopefully that gets fixed before we upgrade to the latest LTS?&lt;br /&gt;
## ok, I&#039;m just going to add this to LocalSettings.php&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# configure ConfirmAccount. See also:&lt;br /&gt;
# * https://www.mediawiki.org/wiki/Extension:ConfirmAccount&lt;br /&gt;
# * https://wiki.eco-libre.org/wiki/Maltfield_Log/2026&lt;br /&gt;
wfLoadExtension( &#039;ConfirmAccount&#039; );&lt;br /&gt;
&lt;br /&gt;
# REQUIRED to enforce account requests&lt;br /&gt;
$wgGroupPermissions[&#039;*&#039;][&#039;createaccount&#039;] = false;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## and, per the wiki extensions&#039; page, I ran the update script&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@mail:/var/www/html/wiki.eco-libre.org# sudo -u www-data php /usr/share/mediawiki/maintenance/run.php update --dbuser wiki_el_superuser --dbpass REDACTED&lt;br /&gt;
...&lt;br /&gt;
...Update &#039;MediaWiki\Maintenance\FixAutoblockLogTitles&#039; already logged as completed. Use --force to run it again.&lt;br /&gt;
Purging caches...done.&lt;br /&gt;
&lt;br /&gt;
Done in 2.2 s.&lt;br /&gt;
root@mail:/var/www/html/wiki.eco-libre.org# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## I went to the SpecialPages, I now see &amp;quot;ConfirmAccounts Requests&amp;quot; https://wiki.eco-libre.org/wiki/Special:ConfirmAccounts&lt;br /&gt;
## Now, in a tor browser where I&#039;m *not* logged-in, I can click on &amp;quot;Anonymous&amp;quot; in the top-right and click on &amp;quot;Request account&amp;quot; https://wiki.eco-libre.org/wiki/Special:RequestAccount&lt;br /&gt;
## there&#039;s this weird thing that people have to agree to the ToS *and* that their real name is real.&lt;br /&gt;
### that first one is reasonable (though we haven&#039;t written a ToS yet)&lt;br /&gt;
### that second one is dumb. why wouldn&#039;t we let users contribute anonymously?&lt;br /&gt;
#### so I edited the LocalSettings.php with this&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# we let folks contribute under pseudonyms &lt;br /&gt;
$wgConfirmAccountRequestFormItems = [&lt;br /&gt;
   &#039;UserName&#039;        =&amp;gt; [ &#039;enabled&#039; =&amp;gt; true ],&lt;br /&gt;
   &#039;RealName&#039;        =&amp;gt; [ &#039;enabled&#039; =&amp;gt; false ],&lt;br /&gt;
   &#039;Biography&#039;       =&amp;gt; [ &#039;enabled&#039; =&amp;gt; false, &#039;minWords&#039; =&amp;gt; 50 ],&lt;br /&gt;
   &#039;AreasOfInterest&#039; =&amp;gt; [ &#039;enabled&#039; =&amp;gt; true ],&lt;br /&gt;
   &#039;CV&#039;              =&amp;gt; [ &#039;enabled&#039; =&amp;gt; true ],&lt;br /&gt;
   &#039;Notes&#039;           =&amp;gt; [ &#039;enabled&#039; =&amp;gt; true ],&lt;br /&gt;
   &#039;Links&#039;           =&amp;gt; [ &#039;enabled&#039; =&amp;gt; true ],&lt;br /&gt;
   &#039;TermsOfService&#039;  =&amp;gt; [ &#039;enabled&#039; =&amp;gt; true ],&lt;br /&gt;
 ];&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## ugh, it still has the same text about the &amp;quot;Real Name&amp;quot; – even after we disabled it&lt;br /&gt;
## looks like I need to create a wiki arrticle with the text that I want here https://wiki.eco-libre.org/wiki/MediaWiki:Requestaccount-text&lt;br /&gt;
### so the default text for this article is&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&#039;Complete and submit the following form to request a user account&#039;.&lt;br /&gt;
&lt;br /&gt;
Make sure that you first read the Terms of Service before requesting an account.&lt;br /&gt;
&lt;br /&gt;
Once the account is approved, you will be emailed a notification message and the account will be usable at login.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
### what I want is the &amp;quot;accept&amp;quot; text, which replaces this&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
I have read and agree to abide by the Terms of Service of Eco-Libre. The name I have specified under &amp;quot;Real name&amp;quot; is in fact my own real name.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
### here&#039;s a list of all the system messages, according to the extensions wiki page https://www.mediawiki.org/wiki/Extension:ConfirmAccount#Minimal&lt;br /&gt;
#### requestaccount-text, requestaccount-notes, requestaccount-ext-text, requestaccount-acc-text&lt;br /&gt;
##### this is not it https://wiki.eco-libre.org/wiki/MediaWiki:Requestaccount-acc-text&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
A confirmation message will be sent to your email address once you submit this request. The address will not be published. Please respond by clicking on the confirmation link provided by the email. Finally, your password will be emailed to you when your account is created. &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
#### nor this https://wiki.eco-libre.org/wiki/MediaWiki:Requestaccount-ext-text&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
The following information is kept private and will only be used for this request. You may want to list contacts such a phone number to aid in identify confirmation. &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
### I just searched the string, and found this&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@mail:/var/www/html/wiki.eco-libre.org# grep -irl &#039;is in fact my own real name&#039; *&lt;br /&gt;
cache/l10n_cache-en.cdb&lt;br /&gt;
htdocs/extensions/ConfirmAccount/i18n/requestaccount/en.json&lt;br /&gt;
root@mail:/var/www/html/wiki.eco-libre.org# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
#### so it looks like we need to edit one of these&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@mail:/var/www/html/wiki.eco-libre.org# grep -i &#039;real name&#039; htdocs/extensions/ConfirmAccount/i18n/requestaccount/en.json&lt;br /&gt;
		&amp;quot;requestaccount-real&amp;quot;: &amp;quot;Real name (optional):&amp;quot;,&lt;br /&gt;
		&amp;quot;requestaccount-real-i&amp;quot;: &amp;quot;Real name is optional. If you choose to provide it, this will be used for giving the user attribution for their work.&amp;quot;,&lt;br /&gt;
		&amp;quot;requestaccount-same&amp;quot;: &amp;quot;(same as real name below)&amp;quot;,&lt;br /&gt;
		&amp;quot;requestaccount-agree&amp;quot;: &amp;quot;You must certify that your real name is correct and that you agree to our Terms of Service.&amp;quot;,&lt;br /&gt;
		&amp;quot;requestaccount-tos&amp;quot;: &amp;quot;I have read and agree to abide by the [[{{MediaWiki:Requestaccount-page}}|Terms of Service]] of {{SITENAME}}.\nThe name I have specified under \&amp;quot;Real name\&amp;quot; is in fact my own real name.&amp;quot;,&lt;br /&gt;
root@mail:/var/www/html/wiki.eco-libre.org# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
#### I edited these two pages&lt;br /&gt;
##### https://wiki.eco-libre.org/wiki/MediaWiki:Requestaccount-tos&lt;br /&gt;
##### https://wiki.eco-libre.org/wiki/MediaWiki:Requestaccount-agree&lt;br /&gt;
### that worked; the agree text changed when I refresh the RequsetAccount form in tor browser&lt;br /&gt;
### I entered the min inforamtion, and got this response&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Your account request has been sent and is now pending review. A confirmation email has been sent to your email address.&lt;br /&gt;
&lt;br /&gt;
Return to Main Page.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
#### curiously, that means it didn&#039;t force me to enter a CV, bio, or the list of websites&lt;br /&gt;
#### I also got an email from noreply@eco-libre.org. It just basically asked me to click an email. Good GDPR compliance.&lt;br /&gt;
##### wait, I refreshed the special page as admin. it shows-up for review. so I guess not GDPR compliant :(&lt;br /&gt;
##### also the ip address listed is 127.0.0.1. Perhaps I need to configure MediaWiki to process X-Forwarded-For headers&lt;br /&gt;
### I changed &#039;false&#039; to &#039;true&#039; for the biography; now it appears again&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$wgConfirmAccountRequestFormItems = [&lt;br /&gt;
   &#039;UserName&#039;        =&amp;gt; [ &#039;enabled&#039; =&amp;gt; true ],&lt;br /&gt;
   &#039;RealName&#039;        =&amp;gt; [ &#039;enabled&#039; =&amp;gt; false ],&lt;br /&gt;
   &#039;Biography&#039;       =&amp;gt; [ &#039;enabled&#039; =&amp;gt; true, &#039;minWords&#039; =&amp;gt; 50 ],&lt;br /&gt;
   &#039;AreasOfInterest&#039; =&amp;gt; [ &#039;enabled&#039; =&amp;gt; true ],&lt;br /&gt;
   &#039;CV&#039;              =&amp;gt; [ &#039;enabled&#039; =&amp;gt; true ],&lt;br /&gt;
   &#039;Notes&#039;           =&amp;gt; [ &#039;enabled&#039; =&amp;gt; true ],&lt;br /&gt;
   &#039;Links&#039;           =&amp;gt; [ &#039;enabled&#039; =&amp;gt; true ],&lt;br /&gt;
   &#039;TermsOfService&#039;  =&amp;gt; [ &#039;enabled&#039; =&amp;gt; true ],&lt;br /&gt;
 ];&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## the workflow is for, after being approved, the system emails the passowrd. that&#039;s not very secure. we should, at least, make sure to require the user to change their password on first login&lt;br /&gt;
### I was looking for a way to force users to change their password on first login, but I first found this in the OSE config&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#############&lt;br /&gt;
# HARDENING #&lt;br /&gt;
#############&lt;br /&gt;
&lt;br /&gt;
$wgSecureLogin = true;&lt;br /&gt;
$wgSecretKey = &#039;REDACTED&#039;;&lt;br /&gt;
&lt;br /&gt;
# PASSWORD POLICIES&lt;br /&gt;
&lt;br /&gt;
$wgPasswordPolicy[&#039;policies&#039;][&#039;default&#039;][&#039;MinimalPasswordLength&#039;] = 10;&lt;br /&gt;
$wgPasswordPolicy[&#039;policies&#039;][&#039;default&#039;][&#039;PasswordCannotBePopular&#039;] = PHP_INT_MAX;&lt;br /&gt;
$wgPasswordPolicy[&#039;policies&#039;][&#039;default&#039;][&#039;PasswordCannotMatchUsername&#039;] = true;&lt;br /&gt;
&lt;br /&gt;
$wgPasswordPolicy[&#039;policies&#039;][&#039;sysop&#039;][&#039;MinimalPasswordLength&#039;] = 20&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
### I added this to stack exchange https://webapps.stackexchange.com/questions/182290/how-to-force-new-users-to-reset-their-password-mediawiki&lt;br /&gt;
# TODO: figure-out how to force new users to change their password, if it was auto-generated by mediawiki&lt;br /&gt;
# TODO: create ToS page https://wiki.eco-libre.org/wiki/Eco-Libre:Terms_of_Service&lt;br /&gt;
# TODO: figure-out how to make mediawiki see the IP as X-Forwarded-For (to play nice with nginx-&amp;gt;varnish-&amp;gt;apache)&lt;br /&gt;
# TODO: finish activating &amp;amp; configuring the remaining &amp;quot;new&amp;quot; extensions&lt;br /&gt;
&lt;br /&gt;
= 2026-04-17 =&lt;br /&gt;
# shit, we&#039;re getting a 500 error on the wiki today&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[user@disp3459 ~]$ curl -iL https://wiki.eco-libre.org&lt;br /&gt;
HTTP/1.1 500 Internal Server Error&lt;br /&gt;
Server: nginx&lt;br /&gt;
Date: Sat, 18 Apr 2026 00:57:02 GMT&lt;br /&gt;
Content-Type: text/html; charset=UTF-8&lt;br /&gt;
Content-Length: 0&lt;br /&gt;
Connection: keep-alive&lt;br /&gt;
X-Content-Type-Options: nosniff&lt;br /&gt;
Expires: Thu, 19 Nov 1981 08:52:00 GMT&lt;br /&gt;
Cache-Control: no-store, no-cache, must-revalidate&lt;br /&gt;
Pragma: no-cache&lt;br /&gt;
X-Request-Id: REDACTED&lt;br /&gt;
X-Frame-Options: SAMEORIGIN&lt;br /&gt;
Set-Cookie: mw_installer_session=REDACTED; path=/; secure; HttpOnly; SameSite=Strict;HttpOnly;Secure&lt;br /&gt;
X-Content-Type-Options: nosniff&lt;br /&gt;
X-XSS-Protection: 1; mode=block&lt;br /&gt;
X-Frame-Options: deny&lt;br /&gt;
Referrer-Policy: strict-origin&lt;br /&gt;
X-Varnish: 18804052&lt;br /&gt;
Age: 0&lt;br /&gt;
Via: 1.1 mail (Varnish/7.7)&lt;br /&gt;
&lt;br /&gt;
[user@disp3459 ~]$ &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# looks like open_basedir?&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Sat Apr 18 00:59:28.202275 2026] [proxy_fcgi:error] [pid 3214280:tid 3214323] [client 127.0.0.1:0] AH01071: Got error &#039;PHP message: PHP Warning:  is_readable(): open_basedir restriction in effect. File(/usr/share/mediawiki/LocalSettings.php) is not within the allowed path(s): (...) in /usr/share/mediawiki/includes/Output/NoLocalSettings.php on line 59; PHP message: PHP Fatal error:  Uncaught Error: Call to undefined function Wikimedia\\ObjectCache\\ini_set() in /usr/share/mediawiki/includes/libs/objectcache/APCUBagOStuff.php:55\nStack trace:\n#0 /usr/share/mediawiki/includes/utils/FileContentsHasher.php(37): Wikimedia\\ObjectCache\\APCUBagOStuff-&amp;gt;construct()\n#1 /usr/share/mediawiki/includes/utils/FileContentsHasher.php(47): FileContentsHasher-&amp;gt;construct()\n#2 /usr/share/mediawiki/includes/utils/FileContentsHasher.php(93): FileContentsHasher::singleton()\n#3 /usr/share/mediawiki/includes/Html/TemplateParser.php(271): FileContentsHasher::getFileContentsHash()\n#4 /usr/share/mediawiki/includes/Html/TemplateParser.php(173): MediaWiki\\Html\\TemplateParser-&amp;gt;compile()\n#5 /usr/share/mediawiki/includes/Html/TemplateParser.php(296): MediaWiki\\Html\\TemplateParser-&amp;gt;getTemplate()\n#6 /usr/share/mediawiki/includes/Output/NoLocalSettings.php(54): MediaWiki\\Html\\TemplateParser-&amp;gt;processTemplate()\n#7 /usr/share/mediawiki/includes/WebStart.php(51): require_once(&#039;...&#039;)\n#8...&#039;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# it&#039;s just a symlink to a symlink to a non-existant file. is that the issue?&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@mail:/usr/share/mediawiki/includes/libs/rdbms/database# ls -lah /usr/share/mediawiki/LocalSettings.php&lt;br /&gt;
lrwxrwxrwx 1 root root 36 Apr 10 22:17 /usr/share/mediawiki/LocalSettings.php -&amp;gt; /var/lib/mediawiki/LocalSettings.php&lt;br /&gt;
root@mail:/usr/share/mediawiki/includes/libs/rdbms/database# ls -lah /var/lib/mediawiki/LocalSettings.php&lt;br /&gt;
lrwxrwxrwx 1 root root 32 Apr 10 22:17 /var/lib/mediawiki/LocalSettings.php -&amp;gt; /etc/mediawiki/LocalSettings.php&lt;br /&gt;
root@mail:/usr/share/mediawiki/includes/libs/rdbms/database# ls -lah /etc/mediawiki/LocalSettings.php&lt;br /&gt;
ls: cannot access &#039;/etc/mediawiki/LocalSettings.php&#039;: No such file or directory&lt;br /&gt;
root@mail:/usr/share/mediawiki/includes/libs/rdbms/database# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# wtf. the file is here, but it&#039;s not here?&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@mail:/var/lib/mediawiki# ls LocalSettings.php &lt;br /&gt;
LocalSettings.php&lt;br /&gt;
root@mail:/var/lib/mediawiki# cat LocalSettings.php &lt;br /&gt;
cat: LocalSettings.php: No such file or directory&lt;br /&gt;
root@mail:/var/lib/mediawiki# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# oh, it&#039;s because it&#039;s a symlink&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@mail:/var/lib/mediawiki# ls -lah /var/www/html/wiki.eco-libre.org/htdocs/LocalSettings.php &lt;br /&gt;
lrwxrwxrwx 1 root root 32 Apr 10 22:17 /var/www/html/wiki.eco-libre.org/htdocs/LocalSettings.php -&amp;gt; /etc/mediawiki/LocalSettings.php&lt;br /&gt;
root@mail:/var/lib/mediawiki# cat /var/www/html/wiki.eco-libre.org/htdocs/LocalSettings.php &lt;br /&gt;
cat: /var/www/html/wiki.eco-libre.org/htdocs/LocalSettings.php: No such file or directory&lt;br /&gt;
root@mail:/var/lib/mediawiki# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# that definitely was a file before. I set it to just require() the real file from one dir up (outside the docroot). but why is it gone now? could it have been deleted by a security upgrade in apt? unattended-upgrades perhaps?&lt;br /&gt;
## well, that&#039;s a match&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@mail:/var/log/unattended-upgrades# grep -irl mediawiki *&lt;br /&gt;
unattended-upgrades-dpkg.log&lt;br /&gt;
unattended-upgrades.log&lt;br /&gt;
root@mail:/var/log/unattended-upgrades# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# yeah, it looks like we upgraded on 2026-04-13. That was Monday. Today is Friday.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@mail:/var/log/unattended-upgrades# grep -ir mediawiki *&lt;br /&gt;
unattended-upgrades-dpkg.log:Preparing to unpack .../mediawiki_1%3a1.43.8+dfsg-1~deb13u1_all.deb ...&lt;br /&gt;
unattended-upgrades-dpkg.log:Unpacking mediawiki (1:1.43.8+dfsg-1~deb13u1) over (1:1.43.6+dfsg-1~deb13u1) ...&lt;br /&gt;
unattended-upgrades-dpkg.log:Preparing to unpack .../mediawiki-classes_1%3a1.43.8+dfsg-1~deb13u1_all.deb ...&lt;br /&gt;
unattended-upgrades-dpkg.log:Unpacking mediawiki-classes (1:1.43.8+dfsg-1~deb13u1) over (1:1.43.6+dfsg-1~deb13u1) ...&lt;br /&gt;
unattended-upgrades-dpkg.log:Setting up mediawiki-classes (1:1.43.8+dfsg-1~deb13u1) ...&lt;br /&gt;
unattended-upgrades-dpkg.log:Setting up mediawiki (1:1.43.8+dfsg-1~deb13u1) ...&lt;br /&gt;
unattended-upgrades-dpkg.log:apache2_invoke mediawiki: already enabled&lt;br /&gt;
unattended-upgrades-dpkg.log:mediawiki-jobrunner.service is a disabled or a static unit not running, not starting it.&lt;br /&gt;
unattended-upgrades.log:2026-04-13 06:07:02,546 INFO Packages that will be upgraded: mediawiki mediawiki-classes&lt;br /&gt;
root@mail:/var/log/unattended-upgrades# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# mediawiki announced two releases on 2026-04-01. One was a normal maintenance release (1.43.8). One was a security release (1.43.7)&lt;br /&gt;
## https://lists.wikimedia.org/hyperkitty/list/mediawiki-announce@lists.wikimedia.org/thread/DIBLSBHISKX6NFRUFNOGZRVW42E7R2QP/&lt;br /&gt;
## https://lists.wikimedia.org/hyperkitty/list/mediawiki-announce@lists.wikimedia.org/thread/6VW6OGVSC7LO3QUMBEZOPQFYYOFDJ452/&lt;br /&gt;
# well, it&#039;s good that we confirmed that securty updates are getting automatically installed.&lt;br /&gt;
# ok, well, obviously we need to follow the debian-way and put the LocalSettings.php file in /etc/.\&lt;br /&gt;
## I did that&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@mail:/var/lib/mediawiki# cat /etc/mediawiki/LocalSettings.php&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
# including separate file that contains the database password so that it is not stored within the document root.&lt;br /&gt;
# For more info see:&lt;br /&gt;
#  * https://tech.michaelaltfield.net/2020/02/14/phplist-hardening-security/&lt;br /&gt;
#  * https://www.mediawiki.org/wiki/Manual:Security&lt;br /&gt;
#  * https://wiki.r00tedvw.com/index.php/Mediawiki/Hardening&lt;br /&gt;
 &lt;br /&gt;
#$docRoot = dirname( $_SERVER[&#039;DOCUMENT_ROOT&#039;] );&lt;br /&gt;
#require_once &amp;quot;$docRoot/LocalSettings.php&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
# docRoot didn&#039;t work for all of:&lt;br /&gt;
#  1. php-fpm (the normal website)&lt;br /&gt;
#  2. cli&lt;br /&gt;
#  3. the fact that we&#039;re in /var/lib/mediawiki due to debian&#039;s install symlink&lt;br /&gt;
#&lt;br /&gt;
# ...so I&#039;m just hardcoding the path to LocalSettings.php, so it always works!&lt;br /&gt;
&lt;br /&gt;
require_once( &amp;quot;/var/www/html/wiki.eco-libre.org/LocalSettings.php&amp;quot; );&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
root@mail:/var/lib/mediawiki# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# I tried the site; it&#039;s still broken&lt;br /&gt;
# I cleared varnish cache; it&#039;s still broken&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@mail:/var/lib/mediawiki# varnishadm &#039;ban req.url ~ &amp;quot;.&amp;quot;&#039;&lt;br /&gt;
&lt;br /&gt;
root@mail:/var/lib/mediawiki# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# yeah, I think the problem is that I never added /etc/mediawiki into the basedir, because I wasn&#039;t using it there. Ugh.&lt;br /&gt;
# I don&#039;t like doing this, but there&#039;s nothing else there. should be fine&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@mail:/var/lib/mediawiki# ls -lah /etc/mediawiki/&lt;br /&gt;
total 20K&lt;br /&gt;
drwxr-xr-x   2 root root 4,0K Apr 18 01:16 .&lt;br /&gt;
drwxr-xr-x 120 root root  12K Apr 17 20:30 ..&lt;br /&gt;
-rw-r--r--   1 root root  741 Apr 18 01:16 LocalSettings.php&lt;br /&gt;
root@mail:/var/lib/mediawiki# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= 2026-04-14 =&lt;br /&gt;
# Appropedia responded to me, indicating that they use Vector 2022 skin, with these config options https://wordpress.org/support/topic/support-for-automatic-exchange-rates-wp_http_block_external-2/#&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
:wfLoadSkin( &#039;Vector&#039; );&lt;br /&gt;
:$wgDefaultSkin = &#039;vector-2022&#039;;&lt;br /&gt;
:$wgSkipSkins[] = &#039;vector&#039;; // Disable old Vector&lt;br /&gt;
:$wgVectorResponsive = true;&lt;br /&gt;
:$wgVectorMaxWidthOptions[&#039;exclude&#039;][&#039;mainpage&#039;] = false;&lt;br /&gt;
:$wgVectorNightMode[&#039;logged_out&#039;] = true;&lt;br /&gt;
:$wgDefaultUserOptions[&#039;vector-main-menu-pinned&#039;] = 0;&lt;br /&gt;
:$wgDefaultUserOptions[&#039;vector-page-tools-pinned&#039;] = 0;&lt;br /&gt;
:$wgDefaultUserOptions[&#039;vector-appearance-pinned&#039;] = 0;&lt;br /&gt;
:$wgDefaultUserOptions[&#039;vector-toc-pinned&#039;] = 0;&lt;br /&gt;
:$wgDefaultUserOptions[&#039;vector-font-size&#039;] = 1;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# they said they use this extension for &amp;quot;read mode&amp;quot; which they developed themselves https://www.mediawiki.org/wiki/Extension:ReadMode&lt;br /&gt;
&lt;br /&gt;
= 2026-04-13 =&lt;br /&gt;
# Here&#039;s TOFU 3/3 (Tor, exit in The Netherlands)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
The Netherlands&lt;br /&gt;
	  Congratulations. This browser is configured to use Tor.&lt;br /&gt;
2026-04-13&lt;br /&gt;
######################################################################### 100.0%&lt;br /&gt;
2026-04-13&lt;br /&gt;
14M	OATHAuth-REL1_43-015a49e.tar.gz&lt;br /&gt;
9ee56e843931edd87b631b264d680e9f8d77f18b5ffdbc18b9a4f5b15330878e  OATHAuth-REL1_43-015a49e.tar.gz&lt;br /&gt;
user@host:/tmp/user/1000/tmp.eIvrMPff3B$ &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= 2026-04-10 =&lt;br /&gt;
# Here&#039;s TOFU 2/3 (VPN, exit in US)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
United States&lt;br /&gt;
2026-04-10&lt;br /&gt;
######################################################################### 100.0%&lt;br /&gt;
2026-04-10&lt;br /&gt;
14M	OATHAuth-REL1_43-015a49e.tar.gz&lt;br /&gt;
9ee56e843931edd87b631b264d680e9f8d77f18b5ffdbc18b9a4f5b15330878e  OATHAuth-REL1_43-015a49e.tar.gz&lt;br /&gt;
user@disp5712:/tmp/tmp.oTeGPpTCzP$ &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# finally, they all match! great, that&#039;s our last extension&lt;br /&gt;
&lt;br /&gt;
= 2026-04-09 =&lt;br /&gt;
# Here&#039;s TOFU 3/3 (ISP, exit in Ecuador)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Ecuador&lt;br /&gt;
2026-04-09&lt;br /&gt;
######################################################################### 100.0%&lt;br /&gt;
2026-04-09&lt;br /&gt;
4.0K	OATHAuth-REL1_43-967ccd4.tar.gz&lt;br /&gt;
8351c0267c2cd7866ff04c04261f06cd75af9a7130aac848ca43fd047404e229  OATHAuth-REL1_43-967ccd4.tar.gz&lt;br /&gt;
user@disp7124:/tmp/tmp.wlx3U02c6r$ &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# fuck, it&#039;s already unavailable; says &#039;libraryupgrader&#039; from 3 hours ago &amp;gt;:0&lt;br /&gt;
# let&#039;s try again&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
REMOTE_FILES=&amp;quot;https://extdist.wmflabs.org/dist/extensions/OATHAuth-REL1_43-015a49e.tar.gz&amp;quot;&lt;br /&gt;
&lt;br /&gt;
CURL=&amp;quot;/usr/bin/curl --retry 5 --retry-all-errors&amp;quot;&lt;br /&gt;
PYTHON=&amp;quot;/usr/bin/python3&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# in tails, we must torify&lt;br /&gt;
if [[ &amp;quot;`whoami`&amp;quot; == &amp;quot;amnesia&amp;quot; ]] ; then&lt;br /&gt;
	CURL=&amp;quot;/usr/bin/torify ${CURL}&amp;quot;&lt;br /&gt;
	PYTHON=&amp;quot;/usr/bin/torify ${PYTHON}&amp;quot;&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
tmpDir=`mktemp -d`&lt;br /&gt;
pushd &amp;quot;${tmpDir}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# first get some info about our internet connection&lt;br /&gt;
${CURL} -s https://ifconfig.co/country | head -n1&lt;br /&gt;
${CURL} -s https://check.torproject.org | grep Congratulations | head -n1&lt;br /&gt;
&lt;br /&gt;
# and today&#039;s date&lt;br /&gt;
date -u +&amp;quot;%Y-%m-%d&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# get the file&lt;br /&gt;
for file in ${REMOTE_FILES}; do&lt;br /&gt;
	${CURL} --progress-bar -O ${file}&lt;br /&gt;
done&lt;br /&gt;
&lt;br /&gt;
# checksum&lt;br /&gt;
date -u +&amp;quot;%Y-%m-%d&amp;quot;&lt;br /&gt;
du -sh *&lt;br /&gt;
sha256sum *&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# Here&#039;s TOFU 1/3 (ISP, exit in Ecuador)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Ecuador&lt;br /&gt;
2026-04-09&lt;br /&gt;
######################################################################### 100.0%&lt;br /&gt;
2026-04-09&lt;br /&gt;
14M	OATHAuth-REL1_43-015a49e.tar.gz&lt;br /&gt;
9ee56e843931edd87b631b264d680e9f8d77f18b5ffdbc18b9a4f5b15330878e  OATHAuth-REL1_43-015a49e.tar.gz&lt;br /&gt;
user@disp7124:/tmp/tmp.rGKb4qtHLX$ &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= 2026-04-08 =&lt;br /&gt;
# Here&#039;s TOFU 2/3 (VPN, exit in UK)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
United Kingdom&lt;br /&gt;
2026-04-08&lt;br /&gt;
############################################################################## 100.0%&lt;br /&gt;
2026-04-08&lt;br /&gt;
14M	OATHAuth-REL1_43-967ccd4.tar.gz&lt;br /&gt;
5992bf6044ba5bd6404d51ec5bef936e6eb724576a2003fc176648c7fcf9c6b7  OATHAuth-REL1_43-967ccd4.tar.gz&lt;br /&gt;
user@disp6902:/tmp/tmp.KDMVCsn1cU$ &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= 2026-04-07 =&lt;br /&gt;
# here&#039;s TOFU 3/3 (Tor, exit in The Netherlands)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
The Netherlands&lt;br /&gt;
	  Congratulations. This browser is configured to use Tor.&lt;br /&gt;
2026-04-07&lt;br /&gt;
####################################################################### 100.0%&lt;br /&gt;
####################################################################### 100.0%&lt;br /&gt;
####################################################################### 100.0%&lt;br /&gt;
2026-04-07&lt;br /&gt;
448K	ConfirmAccount-REL1_43-38c4602.tar.gz&lt;br /&gt;
124K	DeleteBatch-REL1_43-b3b052b.tar.gz&lt;br /&gt;
4.0K	OATHAuth-REL1_43-2cdbefb.tar.gz&lt;br /&gt;
95b2bc67977c22d069867a7225aa1a9720b7593ed5ab49aa27cc293f01b2e2bb  ConfirmAccount-REL1_43-38c4602.tar.gz&lt;br /&gt;
d1e7c01cf709f2b57137bb3d76f73b4e8fd36ce57c12b750b04fe20ffce9be61  DeleteBatch-REL1_43-b3b052b.tar.gz&lt;br /&gt;
8351c0267c2cd7866ff04c04261f06cd75af9a7130aac848ca43fd047404e229  OATHAuth-REL1_43-2cdbefb.tar.gz&lt;br /&gt;
user@host:/tmp/user/1000/tmp.qw9hrOvh3l$ &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# ok, well, we&#039;re 2/3 for that one. ConfirmAccount and DeleteBatch both have the same on all 3 TOFUs.&lt;br /&gt;
## But OATHAuth must have had a new release, because it&#039;s now 404&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
user@host:/tmp/user/1000/tmp.qw9hrOvh3l$ cat OATHAuth-REL1_43-2cdbefb.tar.gz &lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;head&amp;gt;&amp;lt;title&amp;gt;404 Not Found&amp;lt;/title&amp;gt;&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;h1&amp;gt;404 Not Found&amp;lt;/h1&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&amp;lt;center&amp;gt;nginx/1.18.0&amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
user@host:/tmp/user/1000/tmp.qw9hrOvh3l$ &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# I checked the changelog. looks like this extension is getting updated almost every 1-2 days from &amp;quot;Translation updater bot&amp;quot; – that&#039;s terrible. We need three consecutive days of no changes for 3TOFU https://www.mediawiki.org/wiki/Extension:OATHAuth&lt;br /&gt;
## hmm, well, if I look back further, there was a gap of 2 months before the update 6 days ago. So there certainly is *some* stability.&lt;br /&gt;
## also, that was *all* commits. This one limits to just the 1.43 branch, which is what we want https://gerrit.wikimedia.org/r/plugins/gitiles/mediawiki/extensions/OATHAuth/+log/refs/heads/REL1_43&lt;br /&gt;
### hmm, that one shows the last update was 10 hours ago, and the one before that was 2 months ago (Jan 22). That would be fine, but didn&#039;t we have two consecutive 3TOFUs fail on us?&lt;br /&gt;
### oh, wait, woah. the commits are out of order! First it shows &amp;quot;10 hours ago&amp;quot; and then &amp;quot;2 months ago&amp;quot; and then &amp;quot;7 days ago&amp;quot; wtf!&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
gerrit.wikimedia.org / mediawiki / extensions / OATHAuth / refs/heads/REL1_43&lt;br /&gt;
&lt;br /&gt;
	967ccd4 Localisation updates from https://translatewiki.net. by Translation updater bot · 10 hours ago REL1_43&lt;br /&gt;
	2cdbefb SECURITY: Don&#039;t leak user&#039;s lack of 2FA to other users by Roan Kattouw · 2 months ago&lt;br /&gt;
	bfcd5cf Localisation updates from https://translatewiki.net. by Translation updater bot · 7 days ago&lt;br /&gt;
	d8e7578 build: Updating npm dependencies by libraryupgrader · 12 days ago&lt;br /&gt;
	be14e83 Localisation updates from https://translatewiki.net. by Translation updater bot · 2 weeks ago&lt;br /&gt;
	77c70f5 build: Updating flatted to 3.4.2 by libraryupgrader · 3 weeks ago&lt;br /&gt;
	87d04d4 Localisation updates from https://translatewiki.net. by Translation updater bot · 3 weeks ago&lt;br /&gt;
	8e176b2 Localisation updates from https://translatewiki.net. by Translation updater bot · 4 weeks ago&lt;br /&gt;
	14596de Localisation updates from https://translatewiki.net. by Translation updater bot · 5 weeks ago&lt;br /&gt;
	8c7891a build: Updating ajv to 6.14.0, 8.18.0 by libraryupgrader · 6 weeks ago&lt;br /&gt;
	0406194 Localisation updates from https://translatewiki.net. by Translation updater bot · 6 weeks ago&lt;br /&gt;
	4c94235 Localisation updates from https://translatewiki.net. by Translation updater bot · 7 weeks ago&lt;br /&gt;
	7d0b2d7 Localisation updates from https://translatewiki.net. by Translation updater bot · 8 weeks ago&lt;br /&gt;
	a896cff Localisation updates from https://translatewiki.net. by Translation updater bot · 9 weeks ago&lt;br /&gt;
	b8e8afa Localisation updates from https://translatewiki.net. by Translation updater bot · 2 months ago&lt;br /&gt;
	4b3cb73 build: Updating lodash to 4.17.23 by libraryupgrader · 2 months ago&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# well, it looks like the translator bot runs once per week. so we should have 6 days before that one changes again..&lt;br /&gt;
# anyway, here&#039;s our (hopefully last) 3TOFU script, just for OATHAuth&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
REMOTE_FILES=&amp;quot;https://extdist.wmflabs.org/dist/extensions/OATHAuth-REL1_43-967ccd4.tar.gz&amp;quot;&lt;br /&gt;
&lt;br /&gt;
CURL=&amp;quot;/usr/bin/curl --retry 5 --retry-all-errors&amp;quot;&lt;br /&gt;
PYTHON=&amp;quot;/usr/bin/python3&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# in tails, we must torify&lt;br /&gt;
if [[ &amp;quot;`whoami`&amp;quot; == &amp;quot;amnesia&amp;quot; ]] ; then&lt;br /&gt;
	CURL=&amp;quot;/usr/bin/torify ${CURL}&amp;quot;&lt;br /&gt;
	PYTHON=&amp;quot;/usr/bin/torify ${PYTHON}&amp;quot;&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
tmpDir=`mktemp -d`&lt;br /&gt;
pushd &amp;quot;${tmpDir}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# first get some info about our internet connection&lt;br /&gt;
${CURL} -s https://ifconfig.co/country | head -n1&lt;br /&gt;
${CURL} -s https://check.torproject.org | grep Congratulations | head -n1&lt;br /&gt;
&lt;br /&gt;
# and today&#039;s date&lt;br /&gt;
date -u +&amp;quot;%Y-%m-%d&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# get the file&lt;br /&gt;
for file in ${REMOTE_FILES}; do&lt;br /&gt;
	${CURL} --progress-bar -O ${file}&lt;br /&gt;
done&lt;br /&gt;
&lt;br /&gt;
# checksum&lt;br /&gt;
date -u +&amp;quot;%Y-%m-%d&amp;quot;&lt;br /&gt;
du -sh *&lt;br /&gt;
sha256sum *&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# and TOFU 1/3 (Tor, exit in The Netherlands)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
The Netherlands&lt;br /&gt;
	  Congratulations. This browser is configured to use Tor.&lt;br /&gt;
2026-04-07&lt;br /&gt;
####################################################################### 100.0%&lt;br /&gt;
2026-04-07&lt;br /&gt;
14M	OATHAuth-REL1_43-967ccd4.tar.gz&lt;br /&gt;
5992bf6044ba5bd6404d51ec5bef936e6eb724576a2003fc176648c7fcf9c6b7  OATHAuth-REL1_43-967ccd4.tar.gz&lt;br /&gt;
user@host:/tmp/user/1000/tmp.RBxv6XdjXd$ &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= 2026-04-06 =&lt;br /&gt;
# here&#039;s TOFU 2/3 (VPN, exit in Germany)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Germany&lt;br /&gt;
2026-04-06&lt;br /&gt;
#################################################################################### 100.0%&lt;br /&gt;
#################################################################################### 100.0%&lt;br /&gt;
#################################################################################### 100.0%&lt;br /&gt;
2026-04-06&lt;br /&gt;
448K	ConfirmAccount-REL1_43-38c4602.tar.gz&lt;br /&gt;
124K	DeleteBatch-REL1_43-b3b052b.tar.gz&lt;br /&gt;
14M	OATHAuth-REL1_43-2cdbefb.tar.gz&lt;br /&gt;
95b2bc67977c22d069867a7225aa1a9720b7593ed5ab49aa27cc293f01b2e2bb  ConfirmAccount-REL1_43-38c4602.tar.gz&lt;br /&gt;
d1e7c01cf709f2b57137bb3d76f73b4e8fd36ce57c12b750b04fe20ffce9be61  DeleteBatch-REL1_43-b3b052b.tar.gz&lt;br /&gt;
f71115af96a1ed5297d8d56f56683635b7c9e0b8b32151b184feea1fbec3350a  OATHAuth-REL1_43-2cdbefb.tar.gz&lt;br /&gt;
user@disp8963:/tmp/tmp.JNwdKPbQIW$ &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= 2026-04-01 =&lt;br /&gt;
# continuing with the wiki setup today&lt;br /&gt;
# I saw our db partition reached 90%. It&#039;s been growing slowly, but adding mediawiki to the server didn&#039;t help, so I spent some time expanding the disks. Now we&#039;re down to 48% usage on the db partition, and everything else is hovering around 60% used, +/- 5%&lt;br /&gt;
# here&#039;s our last TOFU on the mediawiki extensions&lt;br /&gt;
## TOFU 3/3 (ISP, exit in Ecuador)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Ecuador&lt;br /&gt;
2026-04-01&lt;br /&gt;
######################################################################### 100.0%&lt;br /&gt;
######################################################################### 100.0%&lt;br /&gt;
######################################################################### 100.0%&lt;br /&gt;
######################################################################### 100.0%&lt;br /&gt;
######################################################################### 100.0%&lt;br /&gt;
######################################################################### 100.0%&lt;br /&gt;
2026-04-01&lt;br /&gt;
4.0K	ConfirmAccount-REL1_43-9cc1a82.tar.gz&lt;br /&gt;
4.0K	DeleteBatch-REL1_43-24a81e4.tar.gz&lt;br /&gt;
4.0K	OATHAuth-REL1_43-d8e7578.tar.gz&lt;br /&gt;
108K	SmiteSpam-REL1_43-483b81b.tar.gz&lt;br /&gt;
140K	UserMerge-REL1_43-27425da.tar.gz&lt;br /&gt;
492K	Widgets-REL1_43-60a09f0.tar.gz&lt;br /&gt;
8351c0267c2cd7866ff04c04261f06cd75af9a7130aac848ca43fd047404e229  ConfirmAccount-REL1_43-9cc1a82.tar.gz&lt;br /&gt;
8351c0267c2cd7866ff04c04261f06cd75af9a7130aac848ca43fd047404e229  DeleteBatch-REL1_43-24a81e4.tar.gz&lt;br /&gt;
8351c0267c2cd7866ff04c04261f06cd75af9a7130aac848ca43fd047404e229  OATHAuth-REL1_43-d8e7578.tar.gz&lt;br /&gt;
997c9edfe7ab78d6e1f1268d48ec19f13d036f584ad54c4281e210940a59f7c9  SmiteSpam-REL1_43-483b81b.tar.gz&lt;br /&gt;
5f28fdf7c0b727d699d42f14073359e13c8db1b2d389d78219845b5912cc0ccc  UserMerge-REL1_43-27425da.tar.gz&lt;br /&gt;
bed64d3c98842f7ec3675e17a24c21fb4720862084857e6834fb7813d14ab865  Widgets-REL1_43-60a09f0.tar.gz&lt;br /&gt;
user@disp7799:/tmp/tmp.YkN2s6MgT6$ &lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# huh, 3TOFU failed for 3/5 of the extensions&lt;br /&gt;
## SmiteSpam, UserMerge, and Widgets matched on all three&lt;br /&gt;
## but ConfirmAccount, DeleteBatch, and OATHAuthOATHAuth diff&#039;d&lt;br /&gt;
# I see that the file size of the three that failed is &amp;quot;4.0K&amp;quot;. that suggests that it didn&#039;t actually download&lt;br /&gt;
# sure enough, they&#039;re 404&#039;d&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
user@disp7799:/tmp/tmp.YkN2s6MgT6$ cat ConfirmAccount-REL1_43-9cc1a82.tar.gz&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;head&amp;gt;&amp;lt;title&amp;gt;404 Not Found&amp;lt;/title&amp;gt;&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;h1&amp;gt;404 Not Found&amp;lt;/h1&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&amp;lt;center&amp;gt;nginx/1.18.0&amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
user@disp7799:/tmp/tmp.YkN2s6MgT6$ &lt;br /&gt;
user@disp7799:/tmp/tmp.YkN2s6MgT6$ cat DeleteBatch-REL1_43-24a81e4.tar.gz&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;head&amp;gt;&amp;lt;title&amp;gt;404 Not Found&amp;lt;/title&amp;gt;&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;h1&amp;gt;404 Not Found&amp;lt;/h1&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&amp;lt;center&amp;gt;nginx/1.18.0&amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
user@disp7799:/tmp/tmp.YkN2s6MgT6$ &lt;br /&gt;
user@disp7799:/tmp/tmp.YkN2s6MgT6$ cat OATHAuth-REL1_43-d8e7578.tar.gz&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;head&amp;gt;&amp;lt;title&amp;gt;404 Not Found&amp;lt;/title&amp;gt;&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;h1&amp;gt;404 Not Found&amp;lt;/h1&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&amp;lt;center&amp;gt;nginx/1.18.0&amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
user@disp7799:/tmp/tmp.YkN2s6MgT6$ &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# if I go to download these plugins again, here&#039;s the URLs I get&lt;br /&gt;
## ConfirmAccount https://www.mediawiki.org/wiki/Extension:ConfirmAccount&lt;br /&gt;
### https://extdist.wmflabs.org/dist/extensions/ConfirmAccount-REL1_43-38c4602.tar.gz&lt;br /&gt;
## DeleteBatch https://www.mediawiki.org/wiki/Extension:ConfirmAccount&lt;br /&gt;
### https://extdist.wmflabs.org/dist/extensions/DeleteBatch-REL1_43-b3b052b.tar.gz&lt;br /&gt;
## OATHAuth https://www.mediawiki.org/wiki/Extension:OATHAuth&lt;br /&gt;
### https://extdist.wmflabs.org/dist/extensions/OATHAuth-REL1_43-2cdbefb.tar.gz&lt;br /&gt;
# here&#039;s our old 3TOFU script, for comparison&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
REMOTE_FILES=&amp;quot;https://extdist.wmflabs.org/dist/extensions/ConfirmAccount-REL1_43-9cc1a82.tar.gz https://extdist.wmflabs.org/dist/extensions/DeleteBatch-REL1_43-24a81e4.tar.gz https://extdist.wmflabs.org/dist/extensions/OATHAuth-REL1_43-d8e7578.tar.gz https://extdist.wmflabs.org/dist/extensions/SmiteSpam-REL1_43-483b81b.tar.gz https://extdist.wmflabs.org/dist/extensions/UserMerge-REL1_43-27425da.tar.gz https://extdist.wmflabs.org/dist/extensions/Widgets-REL1_43-60a09f0.tar.gz&amp;quot;&lt;br /&gt;
&lt;br /&gt;
CURL=&amp;quot;/usr/bin/curl --retry 5 --retry-all-errors&amp;quot;&lt;br /&gt;
PYTHON=&amp;quot;/usr/bin/python3&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# in tails, we must torify&lt;br /&gt;
if [[ &amp;quot;`whoami`&amp;quot; == &amp;quot;amnesia&amp;quot; ]] ; then&lt;br /&gt;
	CURL=&amp;quot;/usr/bin/torify ${CURL}&amp;quot;&lt;br /&gt;
	PYTHON=&amp;quot;/usr/bin/torify ${PYTHON}&amp;quot;&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
tmpDir=`mktemp -d`&lt;br /&gt;
pushd &amp;quot;${tmpDir}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# first get some info about our internet connection&lt;br /&gt;
${CURL} -s https://ifconfig.co/country | head -n1&lt;br /&gt;
${CURL} -s https://check.torproject.org | grep Congratulations | head -n1&lt;br /&gt;
&lt;br /&gt;
# and today&#039;s date&lt;br /&gt;
date -u +&amp;quot;%Y-%m-%d&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# get the file&lt;br /&gt;
for file in ${REMOTE_FILES}; do&lt;br /&gt;
	${CURL} --progress-bar -O ${file}&lt;br /&gt;
done&lt;br /&gt;
&lt;br /&gt;
# checksum&lt;br /&gt;
date -u +&amp;quot;%Y-%m-%d&amp;quot;&lt;br /&gt;
du -sh *&lt;br /&gt;
sha256sum *&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# so, yeah, I guess they delete the old releases when the push a new one? that&#039;s pretty annoying&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
https://extdist.wmflabs.org/dist/extensions/ConfirmAccount-REL1_43-9cc1a82.tar.gz&lt;br /&gt;
https://extdist.wmflabs.org/dist/extensions/ConfirmAccount-REL1_43-38c4602.tar.gz&lt;br /&gt;
&lt;br /&gt;
https://extdist.wmflabs.org/dist/extensions/DeleteBatch-REL1_43-24a81e4.tar.gz&lt;br /&gt;
https://extdist.wmflabs.org/dist/extensions/DeleteBatch-REL1_43-b3b052b.tar.gz&lt;br /&gt;
&lt;br /&gt;
https://extdist.wmflabs.org/dist/extensions/OATHAuth-REL1_43-d8e7578.tar.gz&lt;br /&gt;
https://extdist.wmflabs.org/dist/extensions/OATHAuth-REL1_43-2cdbefb.tar.gz&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# anyway, let&#039;s try it again, and hope we get all three before they push another release in the next ~1 week&lt;br /&gt;
# here&#039;s a new 3TOFU script&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
REMOTE_FILES=&amp;quot;https://extdist.wmflabs.org/dist/extensions/ConfirmAccount-REL1_43-38c4602.tar.gz https://extdist.wmflabs.org/dist/extensions/DeleteBatch-REL1_43-b3b052b.tar.gz https://extdist.wmflabs.org/dist/extensions/OATHAuth-REL1_43-2cdbefb.tar.gz&amp;quot;&lt;br /&gt;
&lt;br /&gt;
CURL=&amp;quot;/usr/bin/curl --retry 5 --retry-all-errors&amp;quot;&lt;br /&gt;
PYTHON=&amp;quot;/usr/bin/python3&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# in tails, we must torify&lt;br /&gt;
if [[ &amp;quot;`whoami`&amp;quot; == &amp;quot;amnesia&amp;quot; ]] ; then&lt;br /&gt;
	CURL=&amp;quot;/usr/bin/torify ${CURL}&amp;quot;&lt;br /&gt;
	PYTHON=&amp;quot;/usr/bin/torify ${PYTHON}&amp;quot;&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
tmpDir=`mktemp -d`&lt;br /&gt;
pushd &amp;quot;${tmpDir}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# first get some info about our internet connection&lt;br /&gt;
${CURL} -s https://ifconfig.co/country | head -n1&lt;br /&gt;
${CURL} -s https://check.torproject.org | grep Congratulations | head -n1&lt;br /&gt;
&lt;br /&gt;
# and today&#039;s date&lt;br /&gt;
date -u +&amp;quot;%Y-%m-%d&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# get the file&lt;br /&gt;
for file in ${REMOTE_FILES}; do&lt;br /&gt;
	${CURL} --progress-bar -O ${file}&lt;br /&gt;
done&lt;br /&gt;
&lt;br /&gt;
# checksum&lt;br /&gt;
date -u +&amp;quot;%Y-%m-%d&amp;quot;&lt;br /&gt;
du -sh *&lt;br /&gt;
sha256sum *&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# And TOFU 1/3 (ISP, exit in Ecuador)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Ecuador&lt;br /&gt;
2026-04-01&lt;br /&gt;
######################################################################### 100.0%&lt;br /&gt;
######################################################################### 100.0%&lt;br /&gt;
######################################################################### 100.0%&lt;br /&gt;
2026-04-01&lt;br /&gt;
448K	ConfirmAccount-REL1_43-38c4602.tar.gz&lt;br /&gt;
124K	DeleteBatch-REL1_43-b3b052b.tar.gz&lt;br /&gt;
14M	OATHAuth-REL1_43-2cdbefb.tar.gz&lt;br /&gt;
95b2bc67977c22d069867a7225aa1a9720b7593ed5ab49aa27cc293f01b2e2bb  ConfirmAccount-REL1_43-38c4602.tar.gz&lt;br /&gt;
d1e7c01cf709f2b57137bb3d76f73b4e8fd36ce57c12b750b04fe20ffce9be61  DeleteBatch-REL1_43-b3b052b.tar.gz&lt;br /&gt;
f71115af96a1ed5297d8d56f56683635b7c9e0b8b32151b184feea1fbec3350a  OATHAuth-REL1_43-2cdbefb.tar.gz&lt;br /&gt;
user@disp7799:/tmp/tmp.oWTEqi2mpP$ &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# and all the files are &amp;gt;4K, so that&#039;s promising.&lt;br /&gt;
# TODO: finish 3TOFU, install &amp;amp; configure extensions&lt;br /&gt;
# ...&lt;br /&gt;
# I also edited some wiki articles, namely&lt;br /&gt;
## this Maltfield_Log and Maltfield_Log/2026&lt;br /&gt;
## the Main_Page&lt;br /&gt;
## the Eco-Libre:About page (from the footer)&lt;br /&gt;
## a Documentation page, which describes what the wiki is for and what it&#039;s not for&lt;br /&gt;
# TOOO: write Eco-Libre:Privacy_policy&lt;br /&gt;
&lt;br /&gt;
= 2026-03-31 =&lt;br /&gt;
Hello World!&lt;br /&gt;
&lt;br /&gt;
# I installed this wiki last week on 2026-03-27&lt;br /&gt;
# since then, I did some hardening and basic setup (skin, logos)&lt;br /&gt;
# today I continued through the process of configuring its built-in plugins&lt;br /&gt;
# I&#039;m still in the process of a 3TOFU on the desired extensions.&lt;br /&gt;
# now I&#039;m finally editing some pages&lt;br /&gt;
# &#039;&#039;&#039;TODO: download, activate, and configure additional extensions&#039;&#039;&#039;&lt;/div&gt;</summary>
		<author><name>Maltfield</name></author>
	</entry>
	<entry>
		<id>https://wiki.eco-libre.org/index.php?title=Maltfield_Log/2026&amp;diff=113</id>
		<title>Maltfield Log/2026</title>
		<link rel="alternate" type="text/html" href="https://wiki.eco-libre.org/index.php?title=Maltfield_Log/2026&amp;diff=113"/>
		<updated>2026-05-07T20:17:25Z</updated>

		<summary type="html">&lt;p&gt;Maltfield: fix truncated day&amp;#039;s log&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is my ([[User:Maltfield|Michael Altfield]]&#039;s) work log from 2026&lt;br /&gt;
&lt;br /&gt;
I intentionally make my log entries &#039;&#039;very&#039;&#039; verbose -- to make future volunteer&#039;s work easier. The more information that is dumped into this log, the more helpful it will be for future volunteers.&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
=See Also=&lt;br /&gt;
# [[Maltfield_Log]]&lt;br /&gt;
# [[User:Maltfield]]&lt;br /&gt;
# [[Special:Contributions/Maltfield]]&lt;br /&gt;
&lt;br /&gt;
= 2026-04-28 =&lt;br /&gt;
# one of the authors of the CERN OHL license got back to me! https://forums.ohwr.org/t/possible-to-triple-license-cern-ohl-s-2-0-agpl-3-0-cc-by-sa-4-0/849882/6&lt;br /&gt;
# they confirmed what I said: don&#039;t license under 3 licenses, or the person who uses our stuff can choose which license they want. that&#039;s not good.&lt;br /&gt;
# unfortuantely they didn&#039;t comment on my copyright DEP5 file, so I asked them to&lt;br /&gt;
# in the meantime, I did look into REUSE&lt;br /&gt;
## it looked like a big PIA. their demo vid shows you having to define the license of every file. that&#039;s a nightmare.&lt;br /&gt;
## the docs said that there is a &#039;convert dep5&#039;. that would be a lifesaver! https://codeberg.org/fsfe/reuse-tool&lt;br /&gt;
## I installed reuse from apt, but I discovered there is NO &#039;convert-dep5&#039; option :(&lt;br /&gt;
## I tried, instead, to install from pip (very insecure but I did it in a dispVM), and it *does* have the &#039;convert-dep5&#039; command&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
user@disp4360:~/sandbox/life-line$ pip install reuse&lt;br /&gt;
error: externally-managed-environment&lt;br /&gt;
&lt;br /&gt;
× This environment is externally managed&lt;br /&gt;
╰─&amp;gt; To install Python packages system-wide, try apt install&lt;br /&gt;
	python3-xyz, where xyz is the package you are trying to&lt;br /&gt;
	install.&lt;br /&gt;
    &lt;br /&gt;
	If you wish to install a non-Debian-packaged Python package,&lt;br /&gt;
	create a virtual environment using python3 -m venv path/to/venv.&lt;br /&gt;
	Then use path/to/venv/bin/python and path/to/venv/bin/pip. Make&lt;br /&gt;
	sure you have python3-full installed.&lt;br /&gt;
    &lt;br /&gt;
	If you wish to install a non-Debian packaged Python application,&lt;br /&gt;
	it may be easiest to use pipx install xyz, which will manage a&lt;br /&gt;
	virtual environment for you. Make sure you have pipx installed.&lt;br /&gt;
    &lt;br /&gt;
	See /usr/share/doc/python3.11/README.venv for more information.&lt;br /&gt;
&lt;br /&gt;
note: If you believe this is a mistake, please contact your Python installation or OS distribution provider. You can override this, at the risk of breaking your Python installation or OS, by passing --break-system-packages.&lt;br /&gt;
hint: See PEP 668 for the detailed specification.&lt;br /&gt;
user@disp4360:~/sandbox/life-line$&lt;br /&gt;
&lt;br /&gt;
user@disp4360:~/sandbox/life-line$ sudo apt-get install python3-virtualenv&lt;br /&gt;
Reading package lists... Done&lt;br /&gt;
Building dependency tree... Done&lt;br /&gt;
Reading state information... Done&lt;br /&gt;
The following packages were automatically installed and are no longer required:&lt;br /&gt;
  python3-binaryornot python3-boolean python3-debian python3-license-expression&lt;br /&gt;
Use &#039;sudo apt autoremove&#039; to remove them.&lt;br /&gt;
The following additional packages will be installed:&lt;br /&gt;
  python3-distlib python3-filelock python3-pip-whl python3-platformdirs&lt;br /&gt;
  python3-setuptools-whl python3-wheel-whl&lt;br /&gt;
The following NEW packages will be installed:&lt;br /&gt;
  python3-distlib python3-filelock python3-pip-whl python3-platformdirs&lt;br /&gt;
  python3-setuptools-whl python3-virtualenv python3-wheel-whl&lt;br /&gt;
0 upgraded, 7 newly installed, 0 to remove and 59 not upgraded.&lt;br /&gt;
Need to get 3,245 kB of archives.&lt;br /&gt;
After this operation, 4,914 kB of additional disk space will be used.&lt;br /&gt;
Do you want to continue? [Y/n] y&lt;br /&gt;
Get:1 https://deb.debian.org/debian bookworm/main amd64 python3-distlib all 0.3.6-1 [257 kB]&lt;br /&gt;
Get:2 https://deb.debian.org/debian bookworm/main amd64 python3-filelock all 3.9.0-1 [9,460 B]&lt;br /&gt;
Get:3 https://deb.debian.org/debian bookworm/main amd64 python3-pip-whl all 23.0.1+dfsg-1 [1,717 kB]&lt;br /&gt;
Get:4 https://deb.debian.org/debian bookworm/main amd64 python3-platformdirs all 2.6.0-1 [16.3 kB]&lt;br /&gt;
Get:5 https://deb.debian.org/debian bookworm/main amd64 python3-setuptools-whl all 66.1.1-1+deb12u2 [1,112 kB]&lt;br /&gt;
Get:6 https://deb.debian.org/debian bookworm/main amd64 python3-wheel-whl all 0.38.4-2 [38.6 kB]&lt;br /&gt;
Get:7 https://deb.debian.org/debian bookworm/main amd64 python3-virtualenv all 20.17.1+ds-1 [93.9 kB]&lt;br /&gt;
Fetched 3,245 kB in 4s (776 kB/s)        &lt;br /&gt;
Selecting previously unselected package python3-distlib.&lt;br /&gt;
(Reading database ... 450690 files and directories currently installed.)&lt;br /&gt;
Preparing to unpack .../0-python3-distlib_0.3.6-1_all.deb ...&lt;br /&gt;
Unpacking python3-distlib (0.3.6-1) ...&lt;br /&gt;
Selecting previously unselected package python3-filelock.&lt;br /&gt;
Preparing to unpack .../1-python3-filelock_3.9.0-1_all.deb ...&lt;br /&gt;
Unpacking python3-filelock (3.9.0-1) ...&lt;br /&gt;
Selecting previously unselected package python3-pip-whl.&lt;br /&gt;
Preparing to unpack .../2-python3-pip-whl_23.0.1+dfsg-1_all.deb ...&lt;br /&gt;
Unpacking python3-pip-whl (23.0.1+dfsg-1) ...&lt;br /&gt;
Selecting previously unselected package python3-platformdirs.&lt;br /&gt;
Preparing to unpack .../3-python3-platformdirs_2.6.0-1_all.deb ...&lt;br /&gt;
Unpacking python3-platformdirs (2.6.0-1) ...&lt;br /&gt;
Selecting previously unselected package python3-setuptools-whl.&lt;br /&gt;
Preparing to unpack .../4-python3-setuptools-whl_66.1.1-1+deb12u2_all.deb ...&lt;br /&gt;
Unpacking python3-setuptools-whl (66.1.1-1+deb12u2) ...&lt;br /&gt;
Selecting previously unselected package python3-wheel-whl.&lt;br /&gt;
Preparing to unpack .../5-python3-wheel-whl_0.38.4-2_all.deb ...&lt;br /&gt;
Unpacking python3-wheel-whl (0.38.4-2) ...&lt;br /&gt;
Selecting previously unselected package python3-virtualenv.&lt;br /&gt;
Preparing to unpack .../6-python3-virtualenv_20.17.1+ds-1_all.deb ...&lt;br /&gt;
Unpacking python3-virtualenv (20.17.1+ds-1) ...&lt;br /&gt;
Setting up python3-setuptools-whl (66.1.1-1+deb12u2) ...&lt;br /&gt;
Setting up python3-filelock (3.9.0-1) ...&lt;br /&gt;
Setting up python3-pip-whl (23.0.1+dfsg-1) ...&lt;br /&gt;
Setting up python3-distlib (0.3.6-1) ...&lt;br /&gt;
Setting up python3-platformdirs (2.6.0-1) ...&lt;br /&gt;
Setting up python3-wheel-whl (0.38.4-2) ...&lt;br /&gt;
Setting up python3-virtualenv (20.17.1+ds-1) ...&lt;br /&gt;
Processing triggers for man-db (2.11.2-2) ...&lt;br /&gt;
Scanning processes...                                                                    &lt;br /&gt;
Scanning linux images...                                                                 &lt;br /&gt;
&lt;br /&gt;
No services need to be restarted.&lt;br /&gt;
&lt;br /&gt;
No containers need to be restarted.&lt;br /&gt;
&lt;br /&gt;
No user sessions are running outdated binaries.&lt;br /&gt;
&lt;br /&gt;
No VM guests are running outdated hypervisor (qemu) binaries on this host.&lt;br /&gt;
user@disp4360:~/sandbox/life-line$ python3 -m virtualenv --python=python3.7 /tmp/virtualenv&lt;br /&gt;
RuntimeError: failed to find interpreter for Builtin discover of python_spec=&#039;python3.7&#039;&lt;br /&gt;
user@disp4360:~/sandbox/life-line$&lt;br /&gt;
&lt;br /&gt;
user@disp4360:~/sandbox/life-line$ python3 -m virtualenv --python=python3 /tmp/virtualenvcreated virtual environment CPython3.11.2.final.0-64 in 248ms&lt;br /&gt;
  creator CPython3Posix(dest=/tmp/virtualenv, clear=False, no_vcs_ignore=False, global=False)&lt;br /&gt;
  seeder FromAppData(download=False, pip=bundle, setuptools=bundle, wheel=bundle, via=copy, app_data_dir=/home/user/.local/share/virtualenv)&lt;br /&gt;
	added seed packages: pip==23.0.1, setuptools==66.1.1, wheel==0.38.4&lt;br /&gt;
  activators BashActivator,CShellActivator,FishActivator,NushellActivator,PowerShellActivator,PythonActivator&lt;br /&gt;
user@disp4360:~/sandbox/life-line$&lt;br /&gt;
&lt;br /&gt;
user@disp4360:~/sandbox/life-line$ source /tmp/virtualenv/bin/activate&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ pip install --user --upgrade reuse&lt;br /&gt;
ERROR: Can not perform a &#039;--user&#039; install. User site-packages are not visible in this virtualenv.&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$&lt;br /&gt;
&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ pip install  --upgrade reuse&lt;br /&gt;
Collecting reuse&lt;br /&gt;
  Downloading reuse-6.2.0.tar.gz (1.6 MB)&lt;br /&gt;
	 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 1.6/1.6 MB 696.8 kB/s eta 0:00:00&lt;br /&gt;
  Installing build dependencies ... done&lt;br /&gt;
  Getting requirements to build wheel ... done&lt;br /&gt;
  Preparing metadata (pyproject.toml) ... done&lt;br /&gt;
Collecting Jinja2&amp;gt;=3.0.0&lt;br /&gt;
  Downloading jinja2-3.1.6-py3-none-any.whl (134 kB)&lt;br /&gt;
	 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 134.9/134.9 kB 576.8 kB/s eta 0:00:00&lt;br /&gt;
Collecting attrs&amp;gt;=23.2&lt;br /&gt;
  Downloading attrs-26.1.0-py3-none-any.whl (67 kB)&lt;br /&gt;
	 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 67.5/67.5 kB 674.1 kB/s eta 0:00:00&lt;br /&gt;
Collecting click&amp;gt;=8.1&lt;br /&gt;
  Downloading click-8.3.3-py3-none-any.whl (110 kB)&lt;br /&gt;
	 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 110.5/110.5 kB 1.1 MB/s eta 0:00:00&lt;br /&gt;
Collecting license-expression&amp;gt;=21.6.14&lt;br /&gt;
  Downloading license_expression-30.4.4-py3-none-any.whl (120 kB)&lt;br /&gt;
	 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 120.6/120.6 kB 1.3 MB/s eta 0:00:00&lt;br /&gt;
Collecting python-debian&amp;gt;=0.1.48&lt;br /&gt;
  Downloading python_debian-1.1.0-py3-none-any.whl (137 kB)&lt;br /&gt;
	 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 138.0/138.0 kB 819.7 kB/s eta 0:00:00&lt;br /&gt;
Collecting python-magic&amp;gt;=0.4.12&lt;br /&gt;
  Downloading python_magic-0.4.27-py2.py3-none-any.whl (13 kB)&lt;br /&gt;
Collecting tomlkit&amp;gt;=0.8&lt;br /&gt;
  Downloading tomlkit-0.14.0-py3-none-any.whl (39 kB)&lt;br /&gt;
Collecting MarkupSafe&amp;gt;=2.0&lt;br /&gt;
  Downloading markupsafe-3.0.3-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (22 kB)&lt;br /&gt;
Collecting boolean.py&amp;gt;=4.0&lt;br /&gt;
  Downloading boolean_py-5.0-py3-none-any.whl (26 kB)&lt;br /&gt;
Collecting charset-normalizer&lt;br /&gt;
  Downloading charset_normalizer-3.4.7-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (214 kB)&lt;br /&gt;
	 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 214.1/214.1 kB 1.3 MB/s eta 0:00:00&lt;br /&gt;
Building wheels for collected packages: reuse&lt;br /&gt;
  Building wheel for reuse (pyproject.toml) ... done&lt;br /&gt;
  Created wheel for reuse: filename=reuse-6.2.0-cp311-cp311-manylinux_2_36_x86_64.whl size=158934 sha256=db5cd3e5984de36238f3ead308c250b12c1cce318d17eb802313e29b25bd28cf&lt;br /&gt;
  Stored in directory: /home/user/.cache/pip/wheels/a0/8e/93/87a9da23115993a12577ff1fc8df222b28bd91e19b9987c529&lt;br /&gt;
Successfully built reuse&lt;br /&gt;
Installing collected packages: boolean.py, tomlkit, python-magic, MarkupSafe, license-expression, click, charset-normalizer, attrs, python-debian, Jinja2, reuse&lt;br /&gt;
Successfully installed Jinja2-3.1.6 MarkupSafe-3.0.3 attrs-26.1.0 boolean.py-5.0 charset-normalizer-3.4.7 click-8.3.3 license-expression-30.4.4 python-debian-1.1.0 python-magic-0.4.27 reuse-6.2.0 tomlkit-0.14.0&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$&lt;br /&gt;
&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ reuse --version&lt;br /&gt;
reuse, version 6.2.0&lt;br /&gt;
&lt;br /&gt;
This program is free software: you can redistribute it and/or modify it under&lt;br /&gt;
the terms of the GNU General Public License as published by the Free Software&lt;br /&gt;
Foundation, either version 3 of the License, or (at your option) any later&lt;br /&gt;
version.&lt;br /&gt;
&lt;br /&gt;
This program is distributed in the hope that it will be useful, but WITHOUT&lt;br /&gt;
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS&lt;br /&gt;
FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.&lt;br /&gt;
&lt;br /&gt;
You should have received a copy of the GNU General Public License along with&lt;br /&gt;
this program. If not, see &amp;lt;https://www.gnu.org/licenses/&amp;gt;.&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ &lt;br /&gt;
&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ reuse convert-dep5&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## no output; but it looked like it worked&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ reuse lint&lt;br /&gt;
# MISSING LICENSES&lt;br /&gt;
&lt;br /&gt;
&#039;AGPL-3.0&#039; found in:&lt;br /&gt;
* docs/buildDocs.sh&lt;br /&gt;
* docs/conf.py&lt;br /&gt;
&#039;CC-BY-SA-4.0&#039; found in:&lt;br /&gt;
* .github/workflows/docs_pages_workflow.yml&lt;br /&gt;
* .gitignore&lt;br /&gt;
* CHANGELOG&lt;br /&gt;
* KEYS&lt;br /&gt;
* README.md&lt;br /&gt;
* docs/.gitignore&lt;br /&gt;
* docs/Makefile&lt;br /&gt;
* docs/_static/custom.css&lt;br /&gt;
* docs/_templates/versions.html&lt;br /&gt;
* docs/attribution.rst&lt;br /&gt;
* docs/build/index.rst&lt;br /&gt;
* docs/build/intake/bom.ods&lt;br /&gt;
* docs/build/intake/bom.rst&lt;br /&gt;
* docs/build/intake/index.rst&lt;br /&gt;
* docs/build/intake/what.rst&lt;br /&gt;
* docs/build/settling-tank/bom.rst&lt;br /&gt;
* docs/build/settling-tank/index.rst&lt;br /&gt;
* docs/build/settling-tank/what.rst&lt;br /&gt;
* docs/changelog.rst&lt;br /&gt;
* docs/conf.py.orig&lt;br /&gt;
* docs/dev/index.rst&lt;br /&gt;
* docs/faq.rst&lt;br /&gt;
* docs/images/eco-libre_logo-2025.08.svg&lt;br /&gt;
* docs/images/eco-libre_text-logo-2025.08.svg&lt;br /&gt;
* docs/images/eco-libre_text-logo-2025.08_500px.png&lt;br /&gt;
* docs/images/life-line_2023.12.jpg&lt;br /&gt;
* docs/images/life-line_2025.10.jpg&lt;br /&gt;
* docs/images/life-line_intake_cleanout-drain.jpg&lt;br /&gt;
* docs/images/life-line_intake_drum.jpg&lt;br /&gt;
* docs/images/life-line_intake_expanded-metal.jpg&lt;br /&gt;
* docs/images/life-line_intake_fine-mesh.jpg&lt;br /&gt;
* docs/images/life-line_intake_outflow.jpg&lt;br /&gt;
* docs/images/life-line_intake_parts.svg&lt;br /&gt;
* docs/images/life-line_intake_turbulence-bar.jpg&lt;br /&gt;
* docs/images/life-line_intake_weir.jpg&lt;br /&gt;
* docs/images/life-line_praxis_boris-plotkin.2024-11.jpg&lt;br /&gt;
* docs/images/life-line_praxis_vegan-beasts_screen.2025-04.jpg&lt;br /&gt;
* docs/images/life-line_praxis_vegan-beasts_weir.2025-04.jpg&lt;br /&gt;
* docs/index.rst&lt;br /&gt;
* docs/introduction/index.rst&lt;br /&gt;
* docs/license.rst&lt;br /&gt;
* docs/locales/es/LC_MESSAGES/autodoc.mo&lt;br /&gt;
* docs/locales/es/LC_MESSAGES/autodoc.po&lt;br /&gt;
* docs/locales/es/LC_MESSAGES/index.mo&lt;br /&gt;
* docs/locales/es/LC_MESSAGES/index.po&lt;br /&gt;
* docs/make.bat&lt;br /&gt;
* docs/praxis/index.rst&lt;br /&gt;
* docs/support.rst&lt;br /&gt;
* docs/theory/index.rst&lt;br /&gt;
&#039;CERN-OHL-S-2.0&#039; found in:&lt;br /&gt;
* intake.FCStd&lt;br /&gt;
&lt;br /&gt;
# SUMMARY&lt;br /&gt;
&lt;br /&gt;
* Bad licenses: 0&lt;br /&gt;
* Deprecated licenses: 0&lt;br /&gt;
* Licenses without file extension: 0&lt;br /&gt;
* Missing licenses: AGPL-3.0, CC-BY-SA-4.0, CERN-OHL-S-2.0&lt;br /&gt;
* Unused licenses: 0&lt;br /&gt;
* Used licenses: AGPL-3.0, CC-BY-SA-4.0, CERN-OHL-S-2.0&lt;br /&gt;
* Read errors: 0&lt;br /&gt;
* Invalid SPDX License Expressions: 0&lt;br /&gt;
* Files with copyright information: 52 / 52&lt;br /&gt;
* Files with license information: 52 / 52&lt;br /&gt;
&lt;br /&gt;
Unfortunately, your project is not compliant with version 3.3 of the REUSE Specification :-(&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# RECOMMENDATIONS&lt;br /&gt;
&lt;br /&gt;
* Fix missing licenses: For at least one of the license identifiers provided by&lt;br /&gt;
  the &#039;SPDX-License-Identifier&#039; tags, there is no corresponding license text&lt;br /&gt;
  file in the &#039;LICENSES&#039; directory. For SPDX license identifiers, you can simply&lt;br /&gt;
  run &#039;reuse download --all&#039; to get any missing ones. For custom licenses&lt;br /&gt;
  (starting with &#039;LicenseRef-&#039;), you need to add these files yourself.&lt;br /&gt;
&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## ok, so it&#039;s just unhappy the licenses are missing; let&#039;s add them with the tool&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ reuse download&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ &lt;br /&gt;
&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ reuse download CC-BY-SA-4.0&lt;br /&gt;
Successfully downloaded LICENSES/CC-BY-SA-4.0.txt.&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$&lt;br /&gt;
&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ ls -lah LICENSES&lt;br /&gt;
total 28K&lt;br /&gt;
drwxr-xr-x 2 user user 4.0K Apr 28 16:43 .&lt;br /&gt;
drwxr-xr-x 7 user user 4.0K Apr 28 16:43 ..&lt;br /&gt;
-rw-r--r-- 1 user user  18K Apr 28 16:43 CC-BY-SA-4.0.txt&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ &lt;br /&gt;
&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ reuse download CERN-OHL-S-2.0&lt;br /&gt;
Successfully downloaded LICENSES/CERN-OHL-S-2.0.txt.&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ &lt;br /&gt;
&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ reuse download AGPL-3.0&lt;br /&gt;
Successfully downloaded LICENSES/AGPL-3.0.txt.&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ &lt;br /&gt;
&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ ls -lah LICENSES&lt;br /&gt;
total 80K&lt;br /&gt;
drwxr-xr-x 2 user user 4.0K Apr 28 16:44 .&lt;br /&gt;
drwxr-xr-x 7 user user 4.0K Apr 28 16:43 ..&lt;br /&gt;
-rw-r--r-- 1 user user  34K Apr 28 16:44 AGPL-3.0.txt&lt;br /&gt;
-rw-r--r-- 1 user user  18K Apr 28 16:43 CC-BY-SA-4.0.txt&lt;br /&gt;
-rw-r--r-- 1 user user  14K Apr 28 16:43 CERN-OHL-S-2.0.txt&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## wut. they said we can&#039;t use AGPL-3.0?&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ reuse lint&lt;br /&gt;
# DEPRECATED LICENSES&lt;br /&gt;
&lt;br /&gt;
The following licenses are deprecated by SPDX:&lt;br /&gt;
* AGPL-3.0&lt;br /&gt;
&lt;br /&gt;
# SUMMARY&lt;br /&gt;
&lt;br /&gt;
* Bad licenses: 0&lt;br /&gt;
* Deprecated licenses: AGPL-3.0&lt;br /&gt;
* Licenses without file extension: 0&lt;br /&gt;
* Missing licenses: 0&lt;br /&gt;
* Unused licenses: 0&lt;br /&gt;
* Used licenses: AGPL-3.0, CC-BY-SA-4.0, CERN-OHL-S-2.0&lt;br /&gt;
* Read errors: 0&lt;br /&gt;
* Invalid SPDX License Expressions: 0&lt;br /&gt;
* Files with copyright information: 52 / 52&lt;br /&gt;
* Files with license information: 52 / 52&lt;br /&gt;
&lt;br /&gt;
Unfortunately, your project is not compliant with version 3.3 of the REUSE Specification :-(&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# RECOMMENDATIONS&lt;br /&gt;
&lt;br /&gt;
* Fix deprecated licenses: At least one of the licenses in the LICENSES&lt;br /&gt;
  directory and/or provided by an &#039;SPDX-License-Identifier&#039; tag or in&lt;br /&gt;
  &#039;.reuse/dep5&#039; has been deprecated by SPDX. The current list and their&lt;br /&gt;
  respective recommended  new identifiers can be found here:&lt;br /&gt;
  &amp;lt;https://spdx.org/licenses/#deprecated&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## ok, apparently they want one of these https://spdx.org/licenses/&lt;br /&gt;
###  AGPL-3.0-only&lt;br /&gt;
###  AGPL-3.0-or-later&lt;br /&gt;
## ugh, they deleted our dep5 file; appraently it puts everything in a REUSE.toml file (there&#039;s no .license files everywhere, which I do like)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ ls -lah .reuse/&lt;br /&gt;
total 8.0K&lt;br /&gt;
drwxr-xr-x 2 user user 4.0K Apr 28 16:34 .&lt;br /&gt;
drwxr-xr-x 7 user user 4.0K Apr 28 16:43 ..&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ &lt;br /&gt;
&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ ls -lah&lt;br /&gt;
total 376K&lt;br /&gt;
drwxr-xr-x  7 user user 4.0K Apr 28 16:43 .&lt;br /&gt;
drwxr-xr-x  3 user user 4.0K Apr 28 16:23 ..&lt;br /&gt;
-rw-r--r--  1 user user  531 Apr 28 16:23 CHANGELOG&lt;br /&gt;
drwxr-xr-x 11 user user 4.0K Apr 28 16:23 docs&lt;br /&gt;
drwxr-xr-x  8 user user 4.0K Apr 28 16:28 .git&lt;br /&gt;
drwxr-xr-x  3 user user 4.0K Apr 28 16:23 .github&lt;br /&gt;
-rw-r--r--  1 user user   44 Apr 28 16:23 .gitignore&lt;br /&gt;
-rw-r--r--  1 user user 221K Apr 28 16:23 intake.FCStd&lt;br /&gt;
-rw-r--r--  1 user user  71K Apr 28 16:23 KEYS&lt;br /&gt;
-rw-r--r--  1 user user  35K Apr 28 16:23 LICENSE&lt;br /&gt;
drwxr-xr-x  2 user user 4.0K Apr 28 16:44 LICENSES&lt;br /&gt;
-rw-r--r--  1 user user 1.3K Apr 28 16:23 README.md&lt;br /&gt;
drwxr-xr-x  2 user user 4.0K Apr 28 16:34 .reuse&lt;br /&gt;
-rw-r--r--  1 user user 1.7K Apr 28 16:34 REUSE.toml&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## oh, this isn&#039;t so bad. I was afriad it would literally list every single file, but instead it more-or-less just adapted what I had for the dep5 format&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ cat REUSE.toml &lt;br /&gt;
version = 1&lt;br /&gt;
SPDX-PackageName = &amp;quot;Eco-Libre Life-Line&amp;quot;&lt;br /&gt;
SPDX-PackageSupplier = &amp;quot;https://eco-libre.org/contact&amp;quot;&lt;br /&gt;
SPDX-PackageDownloadLocation = &amp;quot;https://github.com/Eco-Libre/life-line&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[annotations]]&lt;br /&gt;
path = &amp;quot;**&amp;quot;&lt;br /&gt;
precedence = &amp;quot;aggregate&amp;quot;&lt;br /&gt;
SPDX-FileCopyrightText = [&amp;quot;&amp;quot;, &amp;quot;2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&amp;quot;, &amp;quot;2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&amp;quot;]&lt;br /&gt;
SPDX-License-Identifier = &amp;quot;CC-BY-SA-4.0&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[annotations]]&lt;br /&gt;
path = [&amp;quot;**.FCStd&amp;quot;, &amp;quot;**.scad&amp;quot;, &amp;quot;**.fzz&amp;quot;, &amp;quot;**.blend&amp;quot;, &amp;quot;**.kicad_pcb&amp;quot;, &amp;quot;**.sh3d&amp;quot;, &amp;quot;**.vue&amp;quot;, &amp;quot;**.dxf&amp;quot;, &amp;quot;**.dwg&amp;quot;, &amp;quot;**.bim&amp;quot;, &amp;quot;**.skp&amp;quot;, &amp;quot;**.skb&amp;quot;, &amp;quot;**.max&amp;quot;, &amp;quot;**.3ds&amp;quot;, &amp;quot;**.gto&amp;quot;, &amp;quot;**.pod&amp;quot;, &amp;quot;**.brd&amp;quot;, &amp;quot;**.sch&amp;quot;, &amp;quot;**.3dm&amp;quot;, &amp;quot;**.dwb&amp;quot;, &amp;quot;**.slddrw&amp;quot;, &amp;quot;**.sldasm&amp;quot;]&lt;br /&gt;
precedence = &amp;quot;aggregate&amp;quot;&lt;br /&gt;
SPDX-FileCopyrightText = [&amp;quot;&amp;quot;, &amp;quot;2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&amp;quot;, &amp;quot;2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&amp;quot;]&lt;br /&gt;
SPDX-License-Identifier = &amp;quot;CERN-OHL-S-2.0&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[annotations]]&lt;br /&gt;
path = [&amp;quot;**.c&amp;quot;, &amp;quot;**.cpp&amp;quot;, &amp;quot;**.h&amp;quot;, &amp;quot;**.hpp&amp;quot;, &amp;quot;**.cc&amp;quot;, &amp;quot;**.ino&amp;quot;, &amp;quot;**.pde&amp;quot;, &amp;quot;**.make&amp;quot;, &amp;quot;**.automake&amp;quot;, &amp;quot;**.cmake&amp;quot;, &amp;quot;**.java&amp;quot;, &amp;quot;**.javacc&amp;quot;, &amp;quot;**.rust&amp;quot;, &amp;quot;**.d&amp;quot;, &amp;quot;**.j&amp;quot;, &amp;quot;**.r&amp;quot;, &amp;quot;**.sh&amp;quot;, &amp;quot;**.bash&amp;quot;, &amp;quot;**.zsh&amp;quot;, &amp;quot;**.awk&amp;quot;, &amp;quot;**.tcl&amp;quot;, &amp;quot;**.py&amp;quot;, &amp;quot;**.python&amp;quot;, &amp;quot;**.python2&amp;quot;, &amp;quot;**.python3&amp;quot;, &amp;quot;**.FCMacro&amp;quot;, &amp;quot;**.pl&amp;quot;, &amp;quot;**.perl&amp;quot;, &amp;quot;**.kivy&amp;quot;, &amp;quot;**.qix&amp;quot;, &amp;quot;**.dtd&amp;quot;, &amp;quot;**.shp&amp;quot;, &amp;quot;**.shz&amp;quot;, &amp;quot;**.dbf&amp;quot;, &amp;quot;**.shx&amp;quot;, &amp;quot;**.prj&amp;quot;, &amp;quot;**.kml&amp;quot;, &amp;quot;**.php&amp;quot;, &amp;quot;**.js&amp;quot;, &amp;quot;**.javascript&amp;quot;, &amp;quot;**.typescript&amp;quot;, &amp;quot;**.ruby&amp;quot;, &amp;quot;**.eruby&amp;quot;, &amp;quot;**.cuda&amp;quot;, &amp;quot;**.erlang&amp;quot;, &amp;quot;**.lisp&amp;quot;, &amp;quot;**.lua&amp;quot;, &amp;quot;**.haskell&amp;quot;, &amp;quot;**.go&amp;quot;, &amp;quot;**.autohotkey&amp;quot;, &amp;quot;**.basic&amp;quot;, &amp;quot;**.swift&amp;quot;, &amp;quot;**.vb&amp;quot;, &amp;quot;**.asp&amp;quot;]&lt;br /&gt;
precedence = &amp;quot;aggregate&amp;quot;&lt;br /&gt;
SPDX-FileCopyrightText = [&amp;quot;&amp;quot;, &amp;quot;2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&amp;quot;, &amp;quot;2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&amp;quot;]&lt;br /&gt;
SPDX-License-Identifier = &amp;quot;AGPL-3.0&amp;quot;&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## I edited the file, but the lint still isn&#039;t happy. I guess I have to update the LICENSES dir from AGPL-3.0 to AGPL-3.0-only :/&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ vim REUSE.toml &lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ &lt;br /&gt;
&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ reuse lint&lt;br /&gt;
# DEPRECATED LICENSES&lt;br /&gt;
&lt;br /&gt;
The following licenses are deprecated by SPDX:&lt;br /&gt;
* AGPL-3.0&lt;br /&gt;
&lt;br /&gt;
# MISSING LICENSES&lt;br /&gt;
&lt;br /&gt;
&#039;AGPL-3.0-only&#039; found in:&lt;br /&gt;
* docs/buildDocs.sh&lt;br /&gt;
* docs/conf.py&lt;br /&gt;
&lt;br /&gt;
# UNUSED LICENSES&lt;br /&gt;
&lt;br /&gt;
The following licenses are not used:&lt;br /&gt;
* AGPL-3.0&lt;br /&gt;
&lt;br /&gt;
# SUMMARY&lt;br /&gt;
&lt;br /&gt;
* Bad licenses: 0&lt;br /&gt;
* Deprecated licenses: AGPL-3.0&lt;br /&gt;
* Licenses without file extension: 0&lt;br /&gt;
* Missing licenses: AGPL-3.0-only&lt;br /&gt;
* Unused licenses: AGPL-3.0&lt;br /&gt;
* Used licenses: AGPL-3.0-only, CC-BY-SA-4.0, CERN-OHL-S-2.0&lt;br /&gt;
* Read errors: 0&lt;br /&gt;
* Invalid SPDX License Expressions: 0&lt;br /&gt;
* Files with copyright information: 52 / 52&lt;br /&gt;
* Files with license information: 52 / 52&lt;br /&gt;
&lt;br /&gt;
Unfortunately, your project is not compliant with version 3.3 of the REUSE Specification :-(&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# RECOMMENDATIONS&lt;br /&gt;
&lt;br /&gt;
* Fix deprecated licenses: At least one of the licenses in the LICENSES&lt;br /&gt;
  directory and/or provided by an &#039;SPDX-License-Identifier&#039; tag or in&lt;br /&gt;
  &#039;.reuse/dep5&#039; has been deprecated by SPDX. The current list and their&lt;br /&gt;
  respective recommended  new identifiers can be found here:&lt;br /&gt;
  &amp;lt;https://spdx.org/licenses/#deprecated&amp;gt;&lt;br /&gt;
* Fix missing licenses: For at least one of the license identifiers provided by&lt;br /&gt;
  the &#039;SPDX-License-Identifier&#039; tags, there is no corresponding license text&lt;br /&gt;
  file in the &#039;LICENSES&#039; directory. For SPDX license identifiers, you can simply&lt;br /&gt;
  run &#039;reuse download --all&#039; to get any missing ones. For custom licenses&lt;br /&gt;
  (starting with &#039;LicenseRef-&#039;), you need to add these files yourself.&lt;br /&gt;
* Fix unused licenses: At least one of the license text files in &#039;LICENSES&#039; is&lt;br /&gt;
  not referenced by any file, e.g. by an &#039;SPDX-License-Identifier&#039; tag. Please&lt;br /&gt;
  make sure that you either tag the accordingly licensed files properly, or&lt;br /&gt;
  delete the unused license text if you are sure that no file or code snippet is&lt;br /&gt;
  licensed as such.&lt;br /&gt;
&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## ok, now it&#039;s happy&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ ls -lah LICENSES&lt;br /&gt;
total 80K&lt;br /&gt;
drwxr-xr-x 2 user user 4.0K Apr 28 16:44 .&lt;br /&gt;
drwxr-xr-x 7 user user 4.0K Apr 28 16:50 ..&lt;br /&gt;
-rw-r--r-- 1 user user  34K Apr 28 16:44 AGPL-3.0.txt&lt;br /&gt;
-rw-r--r-- 1 user user  18K Apr 28 16:43 CC-BY-SA-4.0.txt&lt;br /&gt;
-rw-r--r-- 1 user user  14K Apr 28 16:43 CERN-OHL-S-2.0.txt&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ &lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ rm LICENSES/AGPL-3.0.txt &lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ &lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ reuse download AGPL-3.0-only&lt;br /&gt;
Successfully downloaded LICENSES/AGPL-3.0-only.txt.&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ &lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ reuse lint&lt;br /&gt;
# SUMMARY&lt;br /&gt;
&lt;br /&gt;
* Bad licenses: 0&lt;br /&gt;
* Deprecated licenses: 0&lt;br /&gt;
* Licenses without file extension: 0&lt;br /&gt;
* Missing licenses: 0&lt;br /&gt;
* Unused licenses: 0&lt;br /&gt;
* Used licenses: AGPL-3.0-only, CC-BY-SA-4.0, CERN-OHL-S-2.0&lt;br /&gt;
* Read errors: 0&lt;br /&gt;
* Invalid SPDX License Expressions: 0&lt;br /&gt;
* Files with copyright information: 52 / 52&lt;br /&gt;
* Files with license information: 52 / 52&lt;br /&gt;
&lt;br /&gt;
Congratulations! Your project is compliant with version 3.3 of the REUSE Specification :-)&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## anyway, here&#039;s our final file&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ cat REUSE.toml &lt;br /&gt;
version = 1&lt;br /&gt;
SPDX-PackageName = &amp;quot;Eco-Libre Life-Line&amp;quot;&lt;br /&gt;
SPDX-PackageSupplier = &amp;quot;https://eco-libre.org/contact&amp;quot;&lt;br /&gt;
SPDX-PackageDownloadLocation = &amp;quot;https://github.com/Eco-Libre/life-line&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[annotations]]&lt;br /&gt;
path = &amp;quot;**&amp;quot;&lt;br /&gt;
precedence = &amp;quot;aggregate&amp;quot;&lt;br /&gt;
SPDX-FileCopyrightText = [&amp;quot;&amp;quot;, &amp;quot;2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&amp;quot;, &amp;quot;2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&amp;quot;]&lt;br /&gt;
SPDX-License-Identifier = &amp;quot;CC-BY-SA-4.0&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[annotations]]&lt;br /&gt;
path = [&amp;quot;**.FCStd&amp;quot;, &amp;quot;**.scad&amp;quot;, &amp;quot;**.fzz&amp;quot;, &amp;quot;**.blend&amp;quot;, &amp;quot;**.kicad_pcb&amp;quot;, &amp;quot;**.sh3d&amp;quot;, &amp;quot;**.vue&amp;quot;, &amp;quot;**.dxf&amp;quot;, &amp;quot;**.dwg&amp;quot;, &amp;quot;**.bim&amp;quot;, &amp;quot;**.skp&amp;quot;, &amp;quot;**.skb&amp;quot;, &amp;quot;**.max&amp;quot;, &amp;quot;**.3ds&amp;quot;, &amp;quot;**.gto&amp;quot;, &amp;quot;**.pod&amp;quot;, &amp;quot;**.brd&amp;quot;, &amp;quot;**.sch&amp;quot;, &amp;quot;**.3dm&amp;quot;, &amp;quot;**.dwb&amp;quot;, &amp;quot;**.slddrw&amp;quot;, &amp;quot;**.sldasm&amp;quot;]&lt;br /&gt;
precedence = &amp;quot;aggregate&amp;quot;&lt;br /&gt;
SPDX-FileCopyrightText = [&amp;quot;&amp;quot;, &amp;quot;2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&amp;quot;, &amp;quot;2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&amp;quot;]&lt;br /&gt;
SPDX-License-Identifier = &amp;quot;CERN-OHL-S-2.0&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[annotations]]&lt;br /&gt;
path = [&amp;quot;**.c&amp;quot;, &amp;quot;**.cpp&amp;quot;, &amp;quot;**.h&amp;quot;, &amp;quot;**.hpp&amp;quot;, &amp;quot;**.cc&amp;quot;, &amp;quot;**.ino&amp;quot;, &amp;quot;**.pde&amp;quot;, &amp;quot;**.make&amp;quot;, &amp;quot;**.automake&amp;quot;, &amp;quot;**.cmake&amp;quot;, &amp;quot;**.java&amp;quot;, &amp;quot;**.javacc&amp;quot;, &amp;quot;**.rust&amp;quot;, &amp;quot;**.d&amp;quot;, &amp;quot;**.j&amp;quot;, &amp;quot;**.r&amp;quot;, &amp;quot;**.sh&amp;quot;, &amp;quot;**.bash&amp;quot;, &amp;quot;**.zsh&amp;quot;, &amp;quot;**.awk&amp;quot;, &amp;quot;**.tcl&amp;quot;, &amp;quot;**.py&amp;quot;, &amp;quot;**.python&amp;quot;, &amp;quot;**.python2&amp;quot;, &amp;quot;**.python3&amp;quot;, &amp;quot;**.FCMacro&amp;quot;, &amp;quot;**.pl&amp;quot;, &amp;quot;**.perl&amp;quot;, &amp;quot;**.kivy&amp;quot;, &amp;quot;**.qix&amp;quot;, &amp;quot;**.dtd&amp;quot;, &amp;quot;**.shp&amp;quot;, &amp;quot;**.shz&amp;quot;, &amp;quot;**.dbf&amp;quot;, &amp;quot;**.shx&amp;quot;, &amp;quot;**.prj&amp;quot;, &amp;quot;**.kml&amp;quot;, &amp;quot;**.php&amp;quot;, &amp;quot;**.js&amp;quot;, &amp;quot;**.javascript&amp;quot;, &amp;quot;**.typescript&amp;quot;, &amp;quot;**.ruby&amp;quot;, &amp;quot;**.eruby&amp;quot;, &amp;quot;**.cuda&amp;quot;, &amp;quot;**.erlang&amp;quot;, &amp;quot;**.lisp&amp;quot;, &amp;quot;**.lua&amp;quot;, &amp;quot;**.haskell&amp;quot;, &amp;quot;**.go&amp;quot;, &amp;quot;**.autohotkey&amp;quot;, &amp;quot;**.basic&amp;quot;, &amp;quot;**.swift&amp;quot;, &amp;quot;**.vb&amp;quot;, &amp;quot;**.asp&amp;quot;]&lt;br /&gt;
precedence = &amp;quot;aggregate&amp;quot;&lt;br /&gt;
SPDX-FileCopyrightText = [&amp;quot;&amp;quot;, &amp;quot;2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&amp;quot;, &amp;quot;2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&amp;quot;]&lt;br /&gt;
SPDX-License-Identifier = &amp;quot;AGPL-3.0-only&amp;quot;&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## looks like that only created the toml file. None of the files are actually annoated; we do that with `reuse annotate`&lt;br /&gt;
### apparently that command only works for individual files, so I did some find magic&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ find . -type f -exec reuse annotate --copyright --license &#039;{}&#039; \;&lt;br /&gt;
Successfully changed header of docs/license.rst&lt;br /&gt;
Successfully changed header of docs/build/intake/bom.rst&lt;br /&gt;
Successfully changed header of docs/build/intake/index.rst&lt;br /&gt;
Successfully changed header of docs/build/intake/bom.ods.license&lt;br /&gt;
Successfully changed header of docs/build/intake/what.rst&lt;br /&gt;
Successfully changed header of docs/build/index.rst&lt;br /&gt;
Successfully changed header of docs/build/settling-tank/bom.rst&lt;br /&gt;
Successfully changed header of docs/build/settling-tank/index.rst&lt;br /&gt;
Successfully changed header of docs/build/settling-tank/what.rst&lt;br /&gt;
Successfully changed header of docs/support.rst&lt;br /&gt;
Successfully changed header of docs/theory/index.rst&lt;br /&gt;
Successfully changed header of docs/make.bat&lt;br /&gt;
Successfully changed header of docs/buildDocs.sh&lt;br /&gt;
Successfully changed header of docs/images/life-line_intake_cleanout-drain.jpg.license&lt;br /&gt;
Successfully changed header of docs/images/life-line_intake_outflow.jpg.license&lt;br /&gt;
Successfully changed header of docs/images/life-line_2025.10.jpg.license&lt;br /&gt;
Successfully changed header of docs/images/life-line_2023.12.jpg.license&lt;br /&gt;
Successfully changed header of docs/images/life-line_intake_drum.jpg.license&lt;br /&gt;
Successfully changed header of docs/images/life-line_praxis_vegan-beasts_weir.2025-04.jpg.license&lt;br /&gt;
Successfully changed header of docs/images/life-line_praxis_vegan-beasts_screen.2025-04.jpg.license&lt;br /&gt;
Successfully changed header of docs/images/life-line_intake_turbulence-bar.jpg.license&lt;br /&gt;
Successfully changed header of docs/images/life-line_praxis_boris-plotkin.2024-11.jpg.license&lt;br /&gt;
Successfully changed header of docs/images/life-line_intake_fine-mesh.jpg.license&lt;br /&gt;
Successfully changed header of docs/images/eco-libre_logo-2025.08.svg.license&lt;br /&gt;
Successfully changed header of docs/images/eco-libre_text-logo-2025.08.svg.license&lt;br /&gt;
Successfully changed header of docs/images/life-line_intake_weir.jpg.license&lt;br /&gt;
Successfully changed header of docs/images/life-line_intake_parts.svg.license&lt;br /&gt;
Successfully changed header of docs/images/eco-libre_text-logo-2025.08_500px.png.license&lt;br /&gt;
Successfully changed header of docs/images/life-line_intake_expanded-metal.jpg.license&lt;br /&gt;
Successfully changed header of docs/praxis/index.rst&lt;br /&gt;
Successfully changed header of docs/introduction/index.rst&lt;br /&gt;
Successfully changed header of docs/_static/custom.css&lt;br /&gt;
Successfully changed header of docs/index.rst&lt;br /&gt;
Successfully changed header of docs/Makefile&lt;br /&gt;
Usage: reuse annotate [OPTIONS] PATH&lt;br /&gt;
Try &#039;reuse annotate --help&#039; for help.&lt;br /&gt;
&lt;br /&gt;
Error: The following files do not have a recognised file extension. Please use &#039;--style&#039;, &#039;--force-dot-license&#039;, &#039;--fallback-dot-license&#039;, or &#039;--skip-unrecognised&#039;:&lt;br /&gt;
&lt;br /&gt;
docs/conf.py.orig&lt;br /&gt;
Successfully changed header of docs/conf.py&lt;br /&gt;
Successfully changed header of docs/faq.rst&lt;br /&gt;
Successfully changed header of docs/.gitignore&lt;br /&gt;
Successfully changed header of docs/attribution.rst&lt;br /&gt;
Successfully changed header of docs/changelog.rst&lt;br /&gt;
Successfully changed header of docs/_templates/versions.html&lt;br /&gt;
Usage: reuse annotate [OPTIONS] PATH&lt;br /&gt;
Try &#039;reuse annotate --help&#039; for help.&lt;br /&gt;
&lt;br /&gt;
Error: The following files do not have a recognised file extension. Please use &#039;--style&#039;, &#039;--force-dot-license&#039;, &#039;--fallback-dot-license&#039;, or &#039;--skip-unrecognised&#039;:&lt;br /&gt;
&lt;br /&gt;
docs/locales/es/LC_MESSAGES/autodoc.mo&lt;br /&gt;
Successfully changed header of docs/locales/es/LC_MESSAGES/index.po&lt;br /&gt;
Successfully changed header of docs/locales/es/LC_MESSAGES/autodoc.po&lt;br /&gt;
Usage: reuse annotate [OPTIONS] PATH&lt;br /&gt;
Try &#039;reuse annotate --help&#039; for help.&lt;br /&gt;
&lt;br /&gt;
Error: The following files do not have a recognised file extension. Please use &#039;--style&#039;, &#039;--force-dot-license&#039;, &#039;--fallback-dot-license&#039;, or &#039;--skip-unrecognised&#039;:&lt;br /&gt;
&lt;br /&gt;
docs/locales/es/LC_MESSAGES/index.mo&lt;br /&gt;
Successfully changed header of docs/dev/index.rst&lt;br /&gt;
Usage: reuse annotate [OPTIONS] PATH&lt;br /&gt;
Try &#039;reuse annotate --help&#039; for help.&lt;br /&gt;
&lt;br /&gt;
Error: The following files do not have a recognised file extension. Please use &#039;--style&#039;, &#039;--force-dot-license&#039;, &#039;--fallback-dot-license&#039;, or &#039;--skip-unrecognised&#039;:&lt;br /&gt;
&lt;br /&gt;
CHANGELOG&lt;br /&gt;
Usage: reuse annotate [OPTIONS] PATH&lt;br /&gt;
Try &#039;reuse annotate --help&#039; for help.&lt;br /&gt;
&lt;br /&gt;
Error: The following files do not have a recognised file extension. Please use &#039;--style&#039;, &#039;--force-dot-license&#039;, &#039;--fallback-dot-license&#039;, or &#039;--skip-unrecognised&#039;:&lt;br /&gt;
&lt;br /&gt;
LICENSES/CC-BY-SA-4.0.txt&lt;br /&gt;
Usage: reuse annotate [OPTIONS] PATH&lt;br /&gt;
Try &#039;reuse annotate --help&#039; for help.&lt;br /&gt;
&lt;br /&gt;
Error: The following files do not have a recognised file extension. Please use &#039;--style&#039;, &#039;--force-dot-license&#039;, &#039;--fallback-dot-license&#039;, or &#039;--skip-unrecognised&#039;:&lt;br /&gt;
&lt;br /&gt;
LICENSES/CERN-OHL-S-2.0.txt&lt;br /&gt;
Usage: reuse annotate [OPTIONS] PATH&lt;br /&gt;
Try &#039;reuse annotate --help&#039; for help.&lt;br /&gt;
&lt;br /&gt;
Error: The following files do not have a recognised file extension. Please use &#039;--style&#039;, &#039;--force-dot-license&#039;, &#039;--fallback-dot-license&#039;, or &#039;--skip-unrecognised&#039;:&lt;br /&gt;
&lt;br /&gt;
LICENSES/AGPL-3.0-only.txt&lt;br /&gt;
Usage: reuse annotate [OPTIONS] PATH&lt;br /&gt;
Try &#039;reuse annotate --help&#039; for help.&lt;br /&gt;
&lt;br /&gt;
Error: Invalid value for &#039;PATH&#039;: Path &#039;./.git/objects/pack/pack-38957d03ba60a2a9101b19234fac447289823e43.idx&#039; is not writable.&lt;br /&gt;
Usage: reuse annotate [OPTIONS] PATH&lt;br /&gt;
Try &#039;reuse annotate --help&#039; for help.&lt;br /&gt;
&lt;br /&gt;
Error: Invalid value for &#039;PATH&#039;: Path &#039;./.git/objects/pack/pack-38957d03ba60a2a9101b19234fac447289823e43.pack&#039; is not writable.&lt;br /&gt;
Usage: reuse annotate [OPTIONS] PATH&lt;br /&gt;
Try &#039;reuse annotate --help&#039; for help.&lt;br /&gt;
&lt;br /&gt;
Error: The following files do not have a recognised file extension. Please use &#039;--style&#039;, &#039;--force-dot-license&#039;, &#039;--fallback-dot-license&#039;, or &#039;--skip-unrecognised&#039;:&lt;br /&gt;
&lt;br /&gt;
.git/logs/HEAD&lt;br /&gt;
Usage: reuse annotate [OPTIONS] PATH&lt;br /&gt;
Try &#039;reuse annotate --help&#039; for help.&lt;br /&gt;
&lt;br /&gt;
Error: The following files do not have a recognised file extension. Please use &#039;--style&#039;, &#039;--force-dot-license&#039;, &#039;--fallback-dot-license&#039;, or &#039;--skip-unrecognised&#039;:&lt;br /&gt;
&lt;br /&gt;
.git/logs/refs/remotes/origin/HEAD&lt;br /&gt;
Usage: reuse annotate [OPTIONS] PATH&lt;br /&gt;
Try &#039;reuse annotate --help&#039; for help.&lt;br /&gt;
&lt;br /&gt;
Error: The following files do not have a recognised file extension. Please use &#039;--style&#039;, &#039;--force-dot-license&#039;, &#039;--fallback-dot-license&#039;, or &#039;--skip-unrecognised&#039;:&lt;br /&gt;
&lt;br /&gt;
.git/logs/refs/heads/main&lt;br /&gt;
Usage: reuse annotate [OPTIONS] PATH&lt;br /&gt;
Try &#039;reuse annotate --help&#039; for help.&lt;br /&gt;
&lt;br /&gt;
Error: The following files do not have a recognised file extension. Please use &#039;--style&#039;, &#039;--force-dot-license&#039;, &#039;--fallback-dot-license&#039;, or &#039;--skip-unrecognised&#039;:&lt;br /&gt;
&lt;br /&gt;
.git/hooks/pre-push.sample&lt;br /&gt;
Usage: reuse annotate [OPTIONS] PATH&lt;br /&gt;
Try &#039;reuse annotate --help&#039; for help.&lt;br /&gt;
&lt;br /&gt;
Error: The following files do not have a recognised file extension. Please use &#039;--style&#039;, &#039;--force-dot-license&#039;, &#039;--fallback-dot-license&#039;, or &#039;--skip-unrecognised&#039;:&lt;br /&gt;
&lt;br /&gt;
.git/hooks/post-update.sample&lt;br /&gt;
Usage: reuse annotate [OPTIONS] PATH&lt;br /&gt;
Try &#039;reuse annotate --help&#039; for help.&lt;br /&gt;
&lt;br /&gt;
Error: The following files do not have a recognised file extension. Please use &#039;--style&#039;, &#039;--force-dot-license&#039;, &#039;--fallback-dot-license&#039;, or &#039;--skip-unrecognised&#039;:&lt;br /&gt;
&lt;br /&gt;
.git/hooks/pre-rebase.sample&lt;br /&gt;
Usage: reuse annotate [OPTIONS] PATH&lt;br /&gt;
Try &#039;reuse annotate --help&#039; for help.&lt;br /&gt;
&lt;br /&gt;
Error: The following files do not have a recognised file extension. Please use &#039;--style&#039;, &#039;--force-dot-license&#039;, &#039;--fallback-dot-license&#039;, or &#039;--skip-unrecognised&#039;:&lt;br /&gt;
&lt;br /&gt;
.git/hooks/update.sample&lt;br /&gt;
Usage: reuse annotate [OPTIONS] PATH&lt;br /&gt;
Try &#039;reuse annotate --help&#039; for help.&lt;br /&gt;
&lt;br /&gt;
Error: The following files do not have a recognised file extension. Please use &#039;--style&#039;, &#039;--force-dot-license&#039;, &#039;--fallback-dot-license&#039;, or &#039;--skip-unrecognised&#039;:&lt;br /&gt;
&lt;br /&gt;
.git/hooks/push-to-checkout.sample&lt;br /&gt;
Usage: reuse annotate [OPTIONS] PATH&lt;br /&gt;
Try &#039;reuse annotate --help&#039; for help.&lt;br /&gt;
&lt;br /&gt;
Error: The following files do not have a recognised file extension. Please use &#039;--style&#039;, &#039;--force-dot-license&#039;, &#039;--fallback-dot-license&#039;, or &#039;--skip-unrecognised&#039;:&lt;br /&gt;
&lt;br /&gt;
.git/hooks/pre-receive.sample&lt;br /&gt;
Usage: reuse annotate [OPTIONS] PATH&lt;br /&gt;
Try &#039;reuse annotate --help&#039; for help.&lt;br /&gt;
&lt;br /&gt;
Error: The following files do not have a recognised file extension. Please use &#039;--style&#039;, &#039;--force-dot-license&#039;, &#039;--fallback-dot-license&#039;, or &#039;--skip-unrecognised&#039;:&lt;br /&gt;
&lt;br /&gt;
.git/hooks/prepare-commit-msg.sample&lt;br /&gt;
Usage: reuse annotate [OPTIONS] PATH&lt;br /&gt;
Try &#039;reuse annotate --help&#039; for help.&lt;br /&gt;
&lt;br /&gt;
Error: The following files do not have a recognised file extension. Please use &#039;--style&#039;, &#039;--force-dot-license&#039;, &#039;--fallback-dot-license&#039;, or &#039;--skip-unrecognised&#039;:&lt;br /&gt;
&lt;br /&gt;
.git/hooks/applypatch-msg.sample&lt;br /&gt;
Usage: reuse annotate [OPTIONS] PATH&lt;br /&gt;
Try &#039;reuse annotate --help&#039; for help.&lt;br /&gt;
&lt;br /&gt;
Error: The following files do not have a recognised file extension. Please use &#039;--style&#039;, &#039;--force-dot-license&#039;, &#039;--fallback-dot-license&#039;, or &#039;--skip-unrecognised&#039;:&lt;br /&gt;
&lt;br /&gt;
.git/hooks/pre-merge-commit.sample&lt;br /&gt;
Usage: reuse annotate [OPTIONS] PATH&lt;br /&gt;
Try &#039;reuse annotate --help&#039; for help.&lt;br /&gt;
&lt;br /&gt;
Error: The following files do not have a recognised file extension. Please use &#039;--style&#039;, &#039;--force-dot-license&#039;, &#039;--fallback-dot-license&#039;, or &#039;--skip-unrecognised&#039;:&lt;br /&gt;
&lt;br /&gt;
.git/hooks/pre-applypatch.sample&lt;br /&gt;
Usage: reuse annotate [OPTIONS] PATH&lt;br /&gt;
Try &#039;reuse annotate --help&#039; for help.&lt;br /&gt;
&lt;br /&gt;
Error: The following files do not have a recognised file extension. Please use &#039;--style&#039;, &#039;--force-dot-license&#039;, &#039;--fallback-dot-license&#039;, or &#039;--skip-unrecognised&#039;:&lt;br /&gt;
&lt;br /&gt;
.git/hooks/pre-commit.sample&lt;br /&gt;
Usage: reuse annotate [OPTIONS] PATH&lt;br /&gt;
Try &#039;reuse annotate --help&#039; for help.&lt;br /&gt;
&lt;br /&gt;
Error: The following files do not have a recognised file extension. Please use &#039;--style&#039;, &#039;--force-dot-license&#039;, &#039;--fallback-dot-license&#039;, or &#039;--skip-unrecognised&#039;:&lt;br /&gt;
&lt;br /&gt;
.git/hooks/fsmonitor-watchman.sample&lt;br /&gt;
Usage: reuse annotate [OPTIONS] PATH&lt;br /&gt;
Try &#039;reuse annotate --help&#039; for help.&lt;br /&gt;
&lt;br /&gt;
Error: The following files do not have a recognised file extension. Please use &#039;--style&#039;, &#039;--force-dot-license&#039;, &#039;--fallback-dot-license&#039;, or &#039;--skip-unrecognised&#039;:&lt;br /&gt;
&lt;br /&gt;
.git/hooks/commit-msg.sample&lt;br /&gt;
Usage: reuse annotate [OPTIONS] PATH&lt;br /&gt;
Try &#039;reuse annotate --help&#039; for help.&lt;br /&gt;
&lt;br /&gt;
Error: The following files do not have a recognised file extension. Please use &#039;--style&#039;, &#039;--force-dot-license&#039;, &#039;--fallback-dot-license&#039;, or &#039;--skip-unrecognised&#039;:&lt;br /&gt;
&lt;br /&gt;
.git/config&lt;br /&gt;
Usage: reuse annotate [OPTIONS] PATH&lt;br /&gt;
Try &#039;reuse annotate --help&#039; for help.&lt;br /&gt;
&lt;br /&gt;
Error: The following files do not have a recognised file extension. Please use &#039;--style&#039;, &#039;--force-dot-license&#039;, &#039;--fallback-dot-license&#039;, or &#039;--skip-unrecognised&#039;:&lt;br /&gt;
&lt;br /&gt;
.git/HEAD&lt;br /&gt;
Usage: reuse annotate [OPTIONS] PATH&lt;br /&gt;
Try &#039;reuse annotate --help&#039; for help.&lt;br /&gt;
&lt;br /&gt;
Error: The following files do not have a recognised file extension. Please use &#039;--style&#039;, &#039;--force-dot-license&#039;, &#039;--fallback-dot-license&#039;, or &#039;--skip-unrecognised&#039;:&lt;br /&gt;
&lt;br /&gt;
.git/description&lt;br /&gt;
Usage: reuse annotate [OPTIONS] PATH&lt;br /&gt;
Try &#039;reuse annotate --help&#039; for help.&lt;br /&gt;
&lt;br /&gt;
Error: The following files do not have a recognised file extension. Please use &#039;--style&#039;, &#039;--force-dot-license&#039;, &#039;--fallback-dot-license&#039;, or &#039;--skip-unrecognised&#039;:&lt;br /&gt;
&lt;br /&gt;
.git/info/exclude&lt;br /&gt;
Usage: reuse annotate [OPTIONS] PATH&lt;br /&gt;
Try &#039;reuse annotate --help&#039; for help.&lt;br /&gt;
&lt;br /&gt;
Error: The following files do not have a recognised file extension. Please use &#039;--style&#039;, &#039;--force-dot-license&#039;, &#039;--fallback-dot-license&#039;, or &#039;--skip-unrecognised&#039;:&lt;br /&gt;
&lt;br /&gt;
.git/index&lt;br /&gt;
Usage: reuse annotate [OPTIONS] PATH&lt;br /&gt;
Try &#039;reuse annotate --help&#039; for help.&lt;br /&gt;
&lt;br /&gt;
Error: The following files do not have a recognised file extension. Please use &#039;--style&#039;, &#039;--force-dot-license&#039;, &#039;--fallback-dot-license&#039;, or &#039;--skip-unrecognised&#039;:&lt;br /&gt;
&lt;br /&gt;
.git/refs/remotes/origin/HEAD&lt;br /&gt;
Usage: reuse annotate [OPTIONS] PATH&lt;br /&gt;
Try &#039;reuse annotate --help&#039; for help.&lt;br /&gt;
&lt;br /&gt;
Error: The following files do not have a recognised file extension. Please use &#039;--style&#039;, &#039;--force-dot-license&#039;, &#039;--fallback-dot-license&#039;, or &#039;--skip-unrecognised&#039;:&lt;br /&gt;
&lt;br /&gt;
.git/refs/heads/main&lt;br /&gt;
Usage: reuse annotate [OPTIONS] PATH&lt;br /&gt;
Try &#039;reuse annotate --help&#039; for help.&lt;br /&gt;
&lt;br /&gt;
Error: The following files do not have a recognised file extension. Please use &#039;--style&#039;, &#039;--force-dot-license&#039;, &#039;--fallback-dot-license&#039;, or &#039;--skip-unrecognised&#039;:&lt;br /&gt;
&lt;br /&gt;
.git/packed-refs&lt;br /&gt;
Usage: reuse annotate [OPTIONS] PATH&lt;br /&gt;
Try &#039;reuse annotate --help&#039; for help.&lt;br /&gt;
&lt;br /&gt;
Error: The following files do not have a recognised file extension. Please use &#039;--style&#039;, &#039;--force-dot-license&#039;, &#039;--fallback-dot-license&#039;, or &#039;--skip-unrecognised&#039;:&lt;br /&gt;
&lt;br /&gt;
KEYS&lt;br /&gt;
Usage: reuse annotate [OPTIONS] PATH&lt;br /&gt;
Try &#039;reuse annotate --help&#039; for help.&lt;br /&gt;
&lt;br /&gt;
Error: The following files do not have a recognised file extension. Please use &#039;--style&#039;, &#039;--force-dot-license&#039;, &#039;--fallback-dot-license&#039;, or &#039;--skip-unrecognised&#039;:&lt;br /&gt;
&lt;br /&gt;
intake.FCStd&lt;br /&gt;
Successfully changed header of REUSE.toml&lt;br /&gt;
Successfully changed header of .gitignore&lt;br /&gt;
Successfully changed header of README.md&lt;br /&gt;
Successfully changed header of .github/workflows/docs_pages_workflow.yml&lt;br /&gt;
Usage: reuse annotate [OPTIONS] PATH&lt;br /&gt;
Try &#039;reuse annotate --help&#039; for help.&lt;br /&gt;
&lt;br /&gt;
Error: The following files do not have a recognised file extension. Please use &#039;--style&#039;, &#039;--force-dot-license&#039;, &#039;--fallback-dot-license&#039;, or &#039;--skip-unrecognised&#039;:&lt;br /&gt;
&lt;br /&gt;
LICENSE&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## ah fuk, that didn&#039;t do what we wanted at all. I expected it would have pulled the copyright info from the REUSE.toml file. Instead it just took the contents &#039;--license&#039; as the value of the copyright attribute :(&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ head docs/faq.rst &lt;br /&gt;
.. SPDX-FileCopyrightText: 2026 --license&lt;br /&gt;
&lt;br /&gt;
.. _faq:&lt;br /&gt;
&lt;br /&gt;
Frequently Asked Questions&lt;br /&gt;
==========================&lt;br /&gt;
&lt;br /&gt;
.. _faq_follow:&lt;br /&gt;
&lt;br /&gt;
Q: How can I get updates about Eco-Libre?&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## the faq says that we *should* update headers to every file, but it&#039;s not necessary if we use `REUSE.toml` file – as was also indicated with the `reuse lint` output above https://reuse.software/faq/&lt;br /&gt;
## we can, at any time, get a list of every file&#039;s copyright and license using the `reuse spdx` command&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ reuse spdx&lt;br /&gt;
SPDXVersion: SPDX-2.1&lt;br /&gt;
DataLicense: CC0-1.0&lt;br /&gt;
SPDXID: SPDXRef-DOCUMENT&lt;br /&gt;
DocumentName: life-line&lt;br /&gt;
DocumentNamespace: http://spdx.org/spdxdocs/spdx-v2.1-16677618-7d18-4c76-8411-c508a053c01d&lt;br /&gt;
Creator: Person: Anonymous ()&lt;br /&gt;
Creator: Organization: Anonymous ()&lt;br /&gt;
Creator: Tool: reuse-6.2.0&lt;br /&gt;
Created: 2026-04-28T22:19:51Z&lt;br /&gt;
CreatorComment: &amp;lt;text&amp;gt;This document was created automatically using available reuse information consistent with REUSE.&amp;lt;/text&amp;gt;&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-97ed0fdad1415bc2a07967691fb8b548&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-5a39e4fd6c4d6fe353cacabc360bd279&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-25ab5821b678be2b2b12d29b956be405&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-3a1f36e95ccd2fd666e9798d3ac7eb47&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-21b8c0e80d2658f4b88b5a3938551f27&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-1a8de53ae2a6abc46eb8ed1144b7a1f9&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-f9fec76b2bf698c8fb90b872cd0318c1&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-10a5417ebf693664c167892a336585dc&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-3baf92437e62e7b84893396f6d6d2c31&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-120ec97787268d2d531b284f8f238388&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-96f0aa3db80b8611b0cad4fd7f43d887&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-55954c104527c72b6f63da5076e914f7&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-87ca5b46937380db7a2e234fe72b2988&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-ce4d5cb6868565afb76744142953776c&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-7df4243f95862b10bf244e1a932a1305&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-009fc4d41e5673f7da41e8b27bd3ebd6&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-87008e367a587fb44b1e9b7aaa52f6b6&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-c531371aac660823102048108ce60921&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-732742039a9682c0d5bfa8d8845abb5f&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-1228cd07cdef9163c78a4847c409b29e&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-f039812ae7f967b8f08d9147e2fd4153&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-35b1d5815fbbdd7c4356fb3b3cba3b1e&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-c1aae1897500b74ec3aaca84335f882f&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-3598f5057a1cdb741af433a6096d913d&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-c17ac5ff4f166b672e4510ff2c577dbc&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-7b9171fdbbab79cca77d36069477c84a&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-7a9621b85efc539284dde0394be036d8&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-4658cb22cc4a9761f1206a7297889577&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-49300cf0d117ccc668836b524d21d3f9&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-d6b38587054ac699a38698e0eefb93c8&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-49b84e58657e7ccc299f61b0cf539e20&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-39d79d9e7219bdbab89178b7dc21d0da&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-ed584b122f50739f0fda5917ea3f7f59&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-1e2b0fda7ea1435b44332b7c8900d12a&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-2595e40eb2dc20ee8fc015548806efdc&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-fdc6a9c01b345699ecf781d28fa90f5a&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-9cd72e674f0f994995a06528ee25ce2f&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-9cc2a1a37bc4829e8725d74912f56b16&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-e2350358bd19a26c28ac28cc5e18c5a1&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-b33bfd4d5eec5e96e039ec43915bfbf8&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-7015c357dbfa9a8c1900250df442c421&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-4dedfba4994163f7e688743fc42a33d6&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-89b9ed2df6780dc61cffdf6dab799cff&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-eb10117cc0b1fcd44808cc34f4cb1083&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-f1dc0b0fba5c4ce78e065efb774669a8&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-01067d41eee220cdd87bfbf80ea71e87&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-111708d19b33da1a42118224ef69665e&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-472c7aaf2054b6662a0f02656ff453e0&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-f373dac39205edb0975081cc2411a334&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-3d7c4e6cccb3294880a3d23a9edc019c&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-fe7b87a77ea58c18a39d99c8cc4fd9b8&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-8979307823bc12e1df0c4754fb92b50a&lt;br /&gt;
&lt;br /&gt;
FileName: ./.github/workflows/docs_pages_workflow.yml&lt;br /&gt;
SPDXID: SPDXRef-97ed0fdad1415bc2a07967691fb8b548&lt;br /&gt;
FileChecksum: SHA1: 9d6615d72965d4a93b8f7b9eb83b6484b44dee95&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./.gitignore&lt;br /&gt;
SPDXID: SPDXRef-5a39e4fd6c4d6fe353cacabc360bd279&lt;br /&gt;
FileChecksum: SHA1: ac7e0839e77460fca604674fb11218c9fca3a62b&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./CHANGELOG&lt;br /&gt;
SPDXID: SPDXRef-25ab5821b678be2b2b12d29b956be405&lt;br /&gt;
FileChecksum: SHA1: 0d0ca350f7daa0808bebebd0a65784358dfc45c3&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./KEYS&lt;br /&gt;
SPDXID: SPDXRef-3a1f36e95ccd2fd666e9798d3ac7eb47&lt;br /&gt;
FileChecksum: SHA1: f97678ccd0eed19288e1962a838be2f4aa8b7c43&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./README.md&lt;br /&gt;
SPDXID: SPDXRef-21b8c0e80d2658f4b88b5a3938551f27&lt;br /&gt;
FileChecksum: SHA1: 954a6f4347c29a012ef72704606756c843b6a522&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
Copyright (C) 2023 Michael Altfield and the Eco-Libre Team&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./docs/.gitignore&lt;br /&gt;
SPDXID: SPDXRef-1a8de53ae2a6abc46eb8ed1144b7a1f9&lt;br /&gt;
FileChecksum: SHA1: 71683d32ff456772212653e2e836b217c3b7fb73&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./docs/Makefile&lt;br /&gt;
SPDXID: SPDXRef-f9fec76b2bf698c8fb90b872cd0318c1&lt;br /&gt;
FileChecksum: SHA1: 77b7d944eb62d73c1f46a1cfcba1e70e31e4297a&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./docs/_static/custom.css&lt;br /&gt;
SPDXID: SPDXRef-10a5417ebf693664c167892a336585dc&lt;br /&gt;
FileChecksum: SHA1: 6cd536f874aadf0ccc0a0e17ad33f948b4fba44c&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./docs/_templates/versions.html&lt;br /&gt;
SPDXID: SPDXRef-3baf92437e62e7b84893396f6d6d2c31&lt;br /&gt;
FileChecksum: SHA1: 8443bd4bfd306f5b6cf6485e6a6cff5599def6f7&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./docs/attribution.rst&lt;br /&gt;
SPDXID: SPDXRef-120ec97787268d2d531b284f8f238388&lt;br /&gt;
FileChecksum: SHA1: e4b0c037aac62dc9b64293fe57a188f6bf4c5615&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./docs/build/index.rst&lt;br /&gt;
SPDXID: SPDXRef-96f0aa3db80b8611b0cad4fd7f43d887&lt;br /&gt;
FileChecksum: SHA1: 464d9b8ffa36876d3eb0c95a093f4c212d80ff1b&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./docs/build/intake/bom.ods&lt;br /&gt;
SPDXID: SPDXRef-55954c104527c72b6f63da5076e914f7&lt;br /&gt;
FileChecksum: SHA1: 916d43e423eea34a6b63c4cc36190b998b426d85&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2026 --license&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./docs/build/intake/bom.rst&lt;br /&gt;
SPDXID: SPDXRef-87ca5b46937380db7a2e234fe72b2988&lt;br /&gt;
FileChecksum: SHA1: b72018fd716c9cd1f44b96e84a97d7891a9659c2&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./docs/build/intake/index.rst&lt;br /&gt;
SPDXID: SPDXRef-ce4d5cb6868565afb76744142953776c&lt;br /&gt;
FileChecksum: SHA1: 73e83f3d88739f3a711cdc22d05a17e5e46135a0&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./docs/build/intake/what.rst&lt;br /&gt;
SPDXID: SPDXRef-7df4243f95862b10bf244e1a932a1305&lt;br /&gt;
FileChecksum: SHA1: e444a37cc9615febee656e969dac625b9c2014ba&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./docs/build/settling-tank/bom.rst&lt;br /&gt;
SPDXID: SPDXRef-009fc4d41e5673f7da41e8b27bd3ebd6&lt;br /&gt;
FileChecksum: SHA1: e03a27e7d09a23245baa962f0f4ea12fac7ea6d2&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./docs/build/settling-tank/index.rst&lt;br /&gt;
SPDXID: SPDXRef-87008e367a587fb44b1e9b7aaa52f6b6&lt;br /&gt;
FileChecksum: SHA1: f8ff63ef2190341ea2bd810c300d54b83d5d3674&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./docs/build/settling-tank/what.rst&lt;br /&gt;
SPDXID: SPDXRef-c531371aac660823102048108ce60921&lt;br /&gt;
FileChecksum: SHA1: 57a0fa949c5e6e46eca53d0889f152c2962bfa61&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./docs/buildDocs.sh&lt;br /&gt;
SPDXID: SPDXRef-732742039a9682c0d5bfa8d8845abb5f&lt;br /&gt;
FileChecksum: SHA1: befd1b0246b958791ad57f4e18bbba43d8872cd7&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: AGPL-3.0-only&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./docs/changelog.rst&lt;br /&gt;
SPDXID: SPDXRef-1228cd07cdef9163c78a4847c409b29e&lt;br /&gt;
FileChecksum: SHA1: 26793d0a9acc383ba3ccfa7d622b7071db91418e&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./docs/conf.py&lt;br /&gt;
SPDXID: SPDXRef-f039812ae7f967b8f08d9147e2fd4153&lt;br /&gt;
FileChecksum: SHA1: 96026b86d9255c306df4b1fc8b2f5e94cc66c529&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: AGPL-3.0-only&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: &lt;br /&gt;
© &#039; +copyright,&amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./docs/conf.py.orig&lt;br /&gt;
SPDXID: SPDXRef-35b1d5815fbbdd7c4356fb3b3cba3b1e&lt;br /&gt;
FileChecksum: SHA1: 71f3dc660a741b97542c68e32eaa33c80dc42630&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./docs/dev/index.rst&lt;br /&gt;
SPDXID: SPDXRef-c1aae1897500b74ec3aaca84335f882f&lt;br /&gt;
FileChecksum: SHA1: 8075e5fb62dcb27431df32d5928e7561d66a2c46&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./docs/faq.rst&lt;br /&gt;
SPDXID: SPDXRef-3598f5057a1cdb741af433a6096d913d&lt;br /&gt;
FileChecksum: SHA1: f3b1399a843bcd73a4eb67e1fc62a4e090b2377a&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./docs/images/eco-libre_logo-2025.08.svg&lt;br /&gt;
SPDXID: SPDXRef-c17ac5ff4f166b672e4510ff2c577dbc&lt;br /&gt;
FileChecksum: SHA1: d582ec414c54cea2834891d35349c09ae069cbbd&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2026 --license&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./docs/images/eco-libre_text-logo-2025.08.svg&lt;br /&gt;
SPDXID: SPDXRef-7b9171fdbbab79cca77d36069477c84a&lt;br /&gt;
FileChecksum: SHA1: 513c03e164c26e0b35644bee03625b8d343fc49b&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2026 --license&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./docs/images/eco-libre_text-logo-2025.08_500px.png&lt;br /&gt;
SPDXID: SPDXRef-7a9621b85efc539284dde0394be036d8&lt;br /&gt;
FileChecksum: SHA1: de27a5411a683f090c1b543c1e93f8164c4d44cc&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2026 --license&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./docs/images/life-line_2023.12.jpg&lt;br /&gt;
SPDXID: SPDXRef-4658cb22cc4a9761f1206a7297889577&lt;br /&gt;
FileChecksum: SHA1: 8bff1f109f6f7ebc2accd5996d13fb94f7e8939a&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2026 --license&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./docs/images/life-line_2025.10.jpg&lt;br /&gt;
SPDXID: SPDXRef-49300cf0d117ccc668836b524d21d3f9&lt;br /&gt;
FileChecksum: SHA1: af42083713949fb9aac751421fc9a5fc3e794e4d&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2026 --license&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./docs/images/life-line_intake_cleanout-drain.jpg&lt;br /&gt;
SPDXID: SPDXRef-d6b38587054ac699a38698e0eefb93c8&lt;br /&gt;
FileChecksum: SHA1: 2652eedb0face5fececa50537198fc0f3aaf6092&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2026 --license&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./docs/images/life-line_intake_drum.jpg&lt;br /&gt;
SPDXID: SPDXRef-49b84e58657e7ccc299f61b0cf539e20&lt;br /&gt;
FileChecksum: SHA1: e26715adcf558fe12f4eded7308bc1be3e12761c&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2026 --license&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./docs/images/life-line_intake_expanded-metal.jpg&lt;br /&gt;
SPDXID: SPDXRef-39d79d9e7219bdbab89178b7dc21d0da&lt;br /&gt;
FileChecksum: SHA1: 0d0c3398256d96884fcd11daaebc4507b23d7750&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2026 --license&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./docs/images/life-line_intake_fine-mesh.jpg&lt;br /&gt;
SPDXID: SPDXRef-ed584b122f50739f0fda5917ea3f7f59&lt;br /&gt;
FileChecksum: SHA1: 4b3786e5f403c70f9598350c04cf12abb4a790aa&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2026 --license&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./docs/images/life-line_intake_outflow.jpg&lt;br /&gt;
SPDXID: SPDXRef-1e2b0fda7ea1435b44332b7c8900d12a&lt;br /&gt;
FileChecksum: SHA1: 0b7db555483b713324756799e657d2324bdab4f7&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2026 --license&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./docs/images/life-line_intake_parts.svg&lt;br /&gt;
SPDXID: SPDXRef-2595e40eb2dc20ee8fc015548806efdc&lt;br /&gt;
FileChecksum: SHA1: d98da9d0de766b61df6fb0c25f61521a3d26344a&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2026 --license&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./docs/images/life-line_intake_turbulence-bar.jpg&lt;br /&gt;
SPDXID: SPDXRef-fdc6a9c01b345699ecf781d28fa90f5a&lt;br /&gt;
FileChecksum: SHA1: 0f9c8372c9737ad1bac27204292c6aa7e5098813&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2026 --license&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./docs/images/life-line_intake_weir.jpg&lt;br /&gt;
SPDXID: SPDXRef-9cd72e674f0f994995a06528ee25ce2f&lt;br /&gt;
FileChecksum: SHA1: 7f64e42c9fe3b1d2c7d1ae1ece0b55bf544c781a&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2026 --license&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./docs/images/life-line_praxis_boris-plotkin.2024-11.jpg&lt;br /&gt;
SPDXID: SPDXRef-9cc2a1a37bc4829e8725d74912f56b16&lt;br /&gt;
FileChecksum: SHA1: baef65c6984d5b04e1cf44d435f471be0727bfd1&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2026 --license&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./docs/images/life-line_praxis_vegan-beasts_screen.2025-04.jpg&lt;br /&gt;
SPDXID: SPDXRef-e2350358bd19a26c28ac28cc5e18c5a1&lt;br /&gt;
FileChecksum: SHA1: d21be6517081f4f294ed88dca32a920e6bfeaadf&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2026 --license&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./docs/images/life-line_praxis_vegan-beasts_weir.2025-04.jpg&lt;br /&gt;
SPDXID: SPDXRef-b33bfd4d5eec5e96e039ec43915bfbf8&lt;br /&gt;
FileChecksum: SHA1: ba75a617970d7819263e2f21f0d52dcaa61c961c&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2026 --license&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./docs/index.rst&lt;br /&gt;
SPDXID: SPDXRef-7015c357dbfa9a8c1900250df442c421&lt;br /&gt;
FileChecksum: SHA1: e2618dda841766cbd533441dbd21fcfa55e2f119&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./docs/introduction/index.rst&lt;br /&gt;
SPDXID: SPDXRef-4dedfba4994163f7e688743fc42a33d6&lt;br /&gt;
FileChecksum: SHA1: 636e89b3596a43b9ca869502795fdc1956101d1c&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./docs/license.rst&lt;br /&gt;
SPDXID: SPDXRef-89b9ed2df6780dc61cffdf6dab799cff&lt;br /&gt;
FileChecksum: SHA1: c858a38846985c5a96c11c170468688b2860f529&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./docs/locales/es/LC_MESSAGES/autodoc.mo&lt;br /&gt;
SPDXID: SPDXRef-eb10117cc0b1fcd44808cc34f4cb1083&lt;br /&gt;
FileChecksum: SHA1: 3b2fa212f0265c96b1cde5a8cc061cc49385ed96&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./docs/locales/es/LC_MESSAGES/autodoc.po&lt;br /&gt;
SPDXID: SPDXRef-f1dc0b0fba5c4ce78e065efb774669a8&lt;br /&gt;
FileChecksum: SHA1: 58fca147c574cbda23a9c7a5ce420f6385d80ca1&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;Copyright (C) 2020 Michael Altfield&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./docs/locales/es/LC_MESSAGES/index.mo&lt;br /&gt;
SPDXID: SPDXRef-01067d41eee220cdd87bfbf80ea71e87&lt;br /&gt;
FileChecksum: SHA1: f6dda249389c9eb42684431b13c68bbb98530c35&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./docs/locales/es/LC_MESSAGES/index.po&lt;br /&gt;
SPDXID: SPDXRef-111708d19b33da1a42118224ef69665e&lt;br /&gt;
FileChecksum: SHA1: 21c57fcf054a05fcf4e0ef8660a6a38f98239e80&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;Copyright (C) 2020 Michael Altfield&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./docs/make.bat&lt;br /&gt;
SPDXID: SPDXRef-472c7aaf2054b6662a0f02656ff453e0&lt;br /&gt;
FileChecksum: SHA1: 3c504feedb2e1f1e85ed443a4d5aba20bafe0b28&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./docs/praxis/index.rst&lt;br /&gt;
SPDXID: SPDXRef-f373dac39205edb0975081cc2411a334&lt;br /&gt;
FileChecksum: SHA1: 03c98408278e3ebd2cdb61ecae75bd1c52cf4c02&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./docs/support.rst&lt;br /&gt;
SPDXID: SPDXRef-3d7c4e6cccb3294880a3d23a9edc019c&lt;br /&gt;
FileChecksum: SHA1: 3aabd6b0faf44abd22ae7d802d5e2baa988d4eaa&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./docs/theory/index.rst&lt;br /&gt;
SPDXID: SPDXRef-fe7b87a77ea58c18a39d99c8cc4fd9b8&lt;br /&gt;
FileChecksum: SHA1: 7b1906423a6b89ef1e047613a4a7bcee33ebbb7b&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./intake.FCStd&lt;br /&gt;
SPDXID: SPDXRef-8979307823bc12e1df0c4754fb92b50a&lt;br /&gt;
FileChecksum: SHA1: e0df68c56c2984184fccd26890583c8f82406525&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CERN-OHL-S-2.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## I guess we could even have a CI job that automatically generated this file on-push&lt;br /&gt;
# Javier Serrano (Deputy Group Leader of the accelerator Controls Electronics and Mechatronics and co-author of the CERN OHL license) said that he would be open to updating the &amp;quot;how to use the CERN OHL license&amp;quot; guide to include our REUSE.toml example, but that he&#039;d want us to provide an example repo\&lt;br /&gt;
# ok, on my eco-libre vm I did some real changes and pushed them up to github&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
user@eco-libre:~/sandbox/life-line$ ls -lah&lt;br /&gt;
total 116K&lt;br /&gt;
drwxr-xr-x  7 user user 4.0K Apr 28 18:32 .&lt;br /&gt;
drwxr-xr-x 18 user user 4.0K Apr 28 17:59 ..&lt;br /&gt;
drwxr-xr-x  2 user user 4.0K Apr 28 18:00 cad&lt;br /&gt;
-rw-r--r--  1 user user  531 Apr 28 17:59 CHANGELOG&lt;br /&gt;
drwxr-xr-x 11 user user 4.0K Apr 28 17:59 docs&lt;br /&gt;
drwxr-xr-x  8 user user 4.0K Apr 28 18:59 .git&lt;br /&gt;
drwxr-xr-x  3 user user 4.0K Apr 28 17:59 .github&lt;br /&gt;
-rw-r--r--  1 user user   44 Apr 28 17:59 .gitignore&lt;br /&gt;
-rw-r--r--  1 user user  71K Apr 28 17:59 KEYS&lt;br /&gt;
drwxr-xr-x  2 user user 4.0K Apr 28 18:20 LICENSES&lt;br /&gt;
-rw-r--r--  1 user user 1.3K Apr 28 18:32 README.md&lt;br /&gt;
-rw-r--r--  1 user user 1.7K Apr 28 18:10 REUSE.toml&lt;br /&gt;
user@eco-libre:~/sandbox/life-line$ &lt;br /&gt;
user@eco-libre:~/sandbox/life-line$ ls -lah LICENSES/&lt;br /&gt;
total 80K&lt;br /&gt;
drwxr-xr-x 2 user user 4.0K Apr 28 18:20 .&lt;br /&gt;
drwxr-xr-x 7 user user 4.0K Apr 28 18:32 ..&lt;br /&gt;
-rw-r--r-- 1 user user  34K Apr 28 18:08 AGPL-3.0-only.txt&lt;br /&gt;
-rw-r--r-- 1 user user  18K Apr 28 18:08 CC-BY-SA-4.0.txt&lt;br /&gt;
-rw-r--r-- 1 user user  14K Apr 28 18:08 CERN-OHL-S-2.0.txt&lt;br /&gt;
user@eco-libre:~/sandbox/life-line$ &lt;br /&gt;
user@eco-libre:~/sandbox/life-line$ cat REUSE.toml &lt;br /&gt;
version = 1&lt;br /&gt;
SPDX-PackageName = &amp;quot;Eco-Libre Life-Line&amp;quot;&lt;br /&gt;
SPDX-PackageSupplier = &amp;quot;https://eco-libre.org/contact&amp;quot;&lt;br /&gt;
SPDX-PackageDownloadLocation = &amp;quot;https://github.com/Eco-Libre/life-line&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[annotations]]&lt;br /&gt;
path = &amp;quot;**&amp;quot;&lt;br /&gt;
precedence = &amp;quot;aggregate&amp;quot;&lt;br /&gt;
SPDX-FileCopyrightText = [&amp;quot;&amp;quot;, &amp;quot;2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&amp;quot;, &amp;quot;2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&amp;quot;]&lt;br /&gt;
SPDX-License-Identifier = &amp;quot;CC-BY-SA-4.0&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[annotations]]&lt;br /&gt;
path = [&amp;quot;**.FCStd&amp;quot;, &amp;quot;**.scad&amp;quot;, &amp;quot;**.fzz&amp;quot;, &amp;quot;**.blend&amp;quot;, &amp;quot;**.kicad_pcb&amp;quot;, &amp;quot;**.sh3d&amp;quot;, &amp;quot;**.vue&amp;quot;, &amp;quot;**.dxf&amp;quot;, &amp;quot;**.dwg&amp;quot;, &amp;quot;**.bim&amp;quot;, &amp;quot;**.skp&amp;quot;, &amp;quot;**.skb&amp;quot;, &amp;quot;**.max&amp;quot;, &amp;quot;**.3ds&amp;quot;, &amp;quot;**.gto&amp;quot;, &amp;quot;**.pod&amp;quot;, &amp;quot;**.brd&amp;quot;, &amp;quot;**.sch&amp;quot;, &amp;quot;**.3dm&amp;quot;, &amp;quot;**.dwb&amp;quot;, &amp;quot;**.slddrw&amp;quot;, &amp;quot;**.sldasm&amp;quot;]&lt;br /&gt;
precedence = &amp;quot;aggregate&amp;quot;&lt;br /&gt;
SPDX-FileCopyrightText = [&amp;quot;&amp;quot;, &amp;quot;2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&amp;quot;, &amp;quot;2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&amp;quot;]&lt;br /&gt;
SPDX-License-Identifier = &amp;quot;CERN-OHL-S-2.0&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[annotations]]&lt;br /&gt;
path = [&amp;quot;**.c&amp;quot;, &amp;quot;**.cpp&amp;quot;, &amp;quot;**.h&amp;quot;, &amp;quot;**.hpp&amp;quot;, &amp;quot;**.cc&amp;quot;, &amp;quot;**.ino&amp;quot;, &amp;quot;**.pde&amp;quot;, &amp;quot;**.make&amp;quot;, &amp;quot;**.automake&amp;quot;, &amp;quot;**.cmake&amp;quot;, &amp;quot;**.java&amp;quot;, &amp;quot;**.javacc&amp;quot;, &amp;quot;**.rust&amp;quot;, &amp;quot;**.d&amp;quot;, &amp;quot;**.j&amp;quot;, &amp;quot;**.r&amp;quot;, &amp;quot;**.sh&amp;quot;, &amp;quot;**.bash&amp;quot;, &amp;quot;**.zsh&amp;quot;, &amp;quot;**.awk&amp;quot;, &amp;quot;**.tcl&amp;quot;, &amp;quot;**.py&amp;quot;, &amp;quot;**.python&amp;quot;, &amp;quot;**.python2&amp;quot;, &amp;quot;**.python3&amp;quot;, &amp;quot;**.FCMacro&amp;quot;, &amp;quot;**.pl&amp;quot;, &amp;quot;**.perl&amp;quot;, &amp;quot;**.kivy&amp;quot;, &amp;quot;**.qix&amp;quot;, &amp;quot;**.dtd&amp;quot;, &amp;quot;**.shp&amp;quot;, &amp;quot;**.shz&amp;quot;, &amp;quot;**.dbf&amp;quot;, &amp;quot;**.shx&amp;quot;, &amp;quot;**.prj&amp;quot;, &amp;quot;**.kml&amp;quot;, &amp;quot;**.php&amp;quot;, &amp;quot;**.js&amp;quot;, &amp;quot;**.javascript&amp;quot;, &amp;quot;**.typescript&amp;quot;, &amp;quot;**.ruby&amp;quot;, &amp;quot;**.eruby&amp;quot;, &amp;quot;**.cuda&amp;quot;, &amp;quot;**.erlang&amp;quot;, &amp;quot;**.lisp&amp;quot;, &amp;quot;**.lua&amp;quot;, &amp;quot;**.haskell&amp;quot;, &amp;quot;**.go&amp;quot;, &amp;quot;**.autohotkey&amp;quot;, &amp;quot;**.basic&amp;quot;, &amp;quot;**.swift&amp;quot;, &amp;quot;**.vb&amp;quot;, &amp;quot;**.asp&amp;quot;]&lt;br /&gt;
precedence = &amp;quot;aggregate&amp;quot;&lt;br /&gt;
SPDX-FileCopyrightText = [&amp;quot;&amp;quot;, &amp;quot;2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&amp;quot;, &amp;quot;2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&amp;quot;]&lt;br /&gt;
SPDX-License-Identifier = &amp;quot;AGPL-3.0-only&amp;quot;&lt;br /&gt;
user@eco-libre:~/sandbox/life-line$ &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# I don&#039;t trust pip, so I did this with the `reuse` from `apt`. Unfortuantly, this old version of reuse says we&#039;re not in compliance with REUSE specification 3.0&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
user@eco-libre:~/sandbox/life-line$ git log | head&lt;br /&gt;
commit fd844016efa29f34b97ea59aa6dc575bf21f8916&lt;br /&gt;
Author: Michael Altfield &amp;lt;michael@michaelaltfield.net&amp;gt;&lt;br /&gt;
Date:   Tue Apr 28 18:32:21 2026 -0500&lt;br /&gt;
&lt;br /&gt;
	updated the README with new license info&lt;br /&gt;
    &lt;br /&gt;
	TODO: see if I can get a CI process to automatically generate a SPDX BOM&lt;br /&gt;
&lt;br /&gt;
commit e4ece950b29294681a435e3239777390e417b274&lt;br /&gt;
Author: Michael Altfield &amp;lt;michael@michaelaltfield.net&amp;gt;&lt;br /&gt;
user@eco-libre:~/sandbox/life-line$ &lt;br /&gt;
user@eco-libre:~/sandbox/life-line$ reuse --version&lt;br /&gt;
reuse 1.1.2&lt;br /&gt;
user@eco-libre:~/sandbox/life-line$ &lt;br /&gt;
user@eco-libre:~/sandbox/life-line$ reuse lint&lt;br /&gt;
# UNUSED LICENSES&lt;br /&gt;
&lt;br /&gt;
The following licenses are not used:&lt;br /&gt;
* AGPL-3.0-only&lt;br /&gt;
* CC-BY-SA-4.0&lt;br /&gt;
* CERN-OHL-S-2.0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# MISSING COPYRIGHT AND LICENSING INFORMATION&lt;br /&gt;
&lt;br /&gt;
The following files have no copyright and licensing information:&lt;br /&gt;
* .github/workflows/docs_pages_workflow.yml&lt;br /&gt;
* .gitignore&lt;br /&gt;
* CHANGELOG&lt;br /&gt;
* KEYS&lt;br /&gt;
* REUSE.toml&lt;br /&gt;
* cad/intake.FCStd&lt;br /&gt;
* docs/.gitignore&lt;br /&gt;
* docs/Makefile&lt;br /&gt;
* docs/_static/custom.css&lt;br /&gt;
* docs/_templates/versions.html&lt;br /&gt;
* docs/attribution.rst&lt;br /&gt;
* docs/build/index.rst&lt;br /&gt;
* docs/build/intake/bom.ods&lt;br /&gt;
* docs/build/intake/bom.rst&lt;br /&gt;
* docs/build/intake/index.rst&lt;br /&gt;
* docs/build/intake/what.rst&lt;br /&gt;
* docs/build/settling-tank/bom.rst&lt;br /&gt;
* docs/build/settling-tank/index.rst&lt;br /&gt;
* docs/build/settling-tank/what.rst&lt;br /&gt;
* docs/buildDocs.sh&lt;br /&gt;
* docs/changelog.rst&lt;br /&gt;
* docs/conf.py&lt;br /&gt;
* docs/conf.py.orig&lt;br /&gt;
* docs/dev/index.rst&lt;br /&gt;
* docs/faq.rst&lt;br /&gt;
* docs/images/eco-libre_logo-2025.08.svg&lt;br /&gt;
* docs/images/eco-libre_text-logo-2025.08.svg&lt;br /&gt;
* docs/images/eco-libre_text-logo-2025.08_500px.png&lt;br /&gt;
* docs/images/life-line_2023.12.jpg&lt;br /&gt;
* docs/images/life-line_2025.10.jpg&lt;br /&gt;
* docs/images/life-line_intake_cleanout-drain.jpg&lt;br /&gt;
* docs/images/life-line_intake_drum.jpg&lt;br /&gt;
* docs/images/life-line_intake_expanded-metal.jpg&lt;br /&gt;
* docs/images/life-line_intake_fine-mesh.jpg&lt;br /&gt;
* docs/images/life-line_intake_outflow.jpg&lt;br /&gt;
* docs/images/life-line_intake_parts.svg&lt;br /&gt;
* docs/images/life-line_intake_turbulence-bar.jpg&lt;br /&gt;
* docs/images/life-line_intake_weir.jpg&lt;br /&gt;
* docs/images/life-line_praxis_boris-plotkin.2024-11.jpg&lt;br /&gt;
* docs/images/life-line_praxis_vegan-beasts_screen.2025-04.jpg&lt;br /&gt;
* docs/images/life-line_praxis_vegan-beasts_weir.2025-04.jpg&lt;br /&gt;
* docs/index.rst&lt;br /&gt;
* docs/introduction/index.rst&lt;br /&gt;
* docs/license.rst&lt;br /&gt;
* docs/locales/es/LC_MESSAGES/autodoc.mo&lt;br /&gt;
* docs/locales/es/LC_MESSAGES/index.mo&lt;br /&gt;
* docs/make.bat&lt;br /&gt;
* docs/praxis/index.rst&lt;br /&gt;
* docs/support.rst&lt;br /&gt;
* docs/theory/index.rst&lt;br /&gt;
&lt;br /&gt;
The following files have no licensing information:&lt;br /&gt;
* README.md&lt;br /&gt;
* docs/locales/es/LC_MESSAGES/autodoc.po&lt;br /&gt;
* docs/locales/es/LC_MESSAGES/index.po&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# SUMMARY&lt;br /&gt;
&lt;br /&gt;
* Bad licenses:&lt;br /&gt;
* Deprecated licenses:&lt;br /&gt;
* Licenses without file extension:&lt;br /&gt;
* Missing licenses:&lt;br /&gt;
* Unused licenses: AGPL-3.0-only, CC-BY-SA-4.0, CERN-OHL-S-2.0&lt;br /&gt;
* Used licenses:&lt;br /&gt;
* Read errors: 0&lt;br /&gt;
* Files with copyright information: 3 / 53&lt;br /&gt;
* Files with license information: 0 / 53&lt;br /&gt;
&lt;br /&gt;
Unfortunately, your project is not compliant with version 3.0 of the REUSE Specification :-(&lt;br /&gt;
user@eco-libre:~/sandbox/life-line$ &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# however, if I checkout the repo to the *exact same* commit on my dispvm (where we&#039;ve installed reuse insecurely from pip), it says that we *are* in compliance with REUSE Specification 3.3&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ git log | head&lt;br /&gt;
commit fd844016efa29f34b97ea59aa6dc575bf21f8916&lt;br /&gt;
Author: Michael Altfield &amp;lt;michael@michaelaltfield.net&amp;gt;&lt;br /&gt;
Date:   Tue Apr 28 18:32:21 2026 -0500&lt;br /&gt;
&lt;br /&gt;
	updated the README with new license info&lt;br /&gt;
    &lt;br /&gt;
	TODO: see if I can get a CI process to automatically generate a SPDX BOM&lt;br /&gt;
&lt;br /&gt;
commit e4ece950b29294681a435e3239777390e417b274&lt;br /&gt;
Author: Michael Altfield &amp;lt;michael@michaelaltfield.net&amp;gt;&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ &lt;br /&gt;
&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ reuse --version&lt;br /&gt;
reuse, version 6.2.0&lt;br /&gt;
&lt;br /&gt;
This program is free software: you can redistribute it and/or modify it under&lt;br /&gt;
the terms of the GNU General Public License as published by the Free Software&lt;br /&gt;
Foundation, either version 3 of the License, or (at your option) any later&lt;br /&gt;
version.&lt;br /&gt;
&lt;br /&gt;
This program is distributed in the hope that it will be useful, but WITHOUT&lt;br /&gt;
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS&lt;br /&gt;
FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.&lt;br /&gt;
&lt;br /&gt;
You should have received a copy of the GNU General Public License along with&lt;br /&gt;
this program. If not, see &amp;lt;https://www.gnu.org/licenses/&amp;gt;.&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ &lt;br /&gt;
&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ reuse lint&lt;br /&gt;
# SUMMARY&lt;br /&gt;
&lt;br /&gt;
* Bad licenses: 0&lt;br /&gt;
* Deprecated licenses: 0&lt;br /&gt;
* Licenses without file extension: 0&lt;br /&gt;
* Missing licenses: 0&lt;br /&gt;
* Unused licenses: 0&lt;br /&gt;
* Used licenses: AGPL-3.0-only, CC-BY-SA-4.0, CERN-OHL-S-2.0&lt;br /&gt;
* Read errors: 0&lt;br /&gt;
* Invalid SPDX License Expressions: 0&lt;br /&gt;
* Files with copyright information: 52 / 52&lt;br /&gt;
* Files with license information: 52 / 52&lt;br /&gt;
&lt;br /&gt;
Congratulations! Your project is compliant with version 3.3 of the REUSE Specification :-)&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# so that means that, if I wanted to build a spdx bom (one file that lists every copyright &amp;amp; license of every file in the repo, by following the REUSE.toml file&#039;s spec) using a CI job on-push, I would have to download some sketch code and then give it permission to modify the repo&#039;s contents. That&#039;s a problem&lt;br /&gt;
## Eco-Libre isn&#039;t a huge security risk, but the first thing that comes to mind is our &amp;quot;donate to us&amp;quot; info in the docs. If someone did a Remote Code Execution (the vuln opened by the fact that pip is vulnerable to a MITM attack when it downloads software because it isn&#039;t cryptographically signed – like with gpg as apt has done for decades), then an attacker could swap any of our docs as they please on-build – including changing our bitcoin address. Or URL to the &amp;quot;donate&amp;quot; page&lt;br /&gt;
## It&#039;s also concieveable that it would tell someone to build something that&#039;s obviously very unsafe. And, for heavy machinerary, that could be very bad.&lt;br /&gt;
## threfore, I guess we&#039;ll just skip this nice-to-have. It should be enough to just link them to the spec and the toml file&lt;br /&gt;
# TODO: apply these license changes to some repo (probably life-line) and then update this thead https://forums.ohwr.org/t/possible-to-triple-license-cern-ohl-s-2-0-agpl-3-0-cc-by-sa-4-0/849882/9&lt;br /&gt;
# TODO: write an article about this on our website, explaining our rationale, how to add it to a repo, and an example (eg life-line but probably create an article-specific repo with some eco-libre internal &amp;amp; also external hardware files plus some content in other licenses)&lt;br /&gt;
&lt;br /&gt;
= 2026-04-26 =&lt;br /&gt;
# I started working on writing a privacy policy for wiki.eco-lbre.org&lt;br /&gt;
# I wrote one years ago for OSE. editing history suggests I finished that in Nov 2018 https://wiki.opensourceecology.org/index.php?title=Media-wiki:Privacy_policy&amp;amp;action=history&lt;br /&gt;
# I largely copied it from the Creative Commons Privacy Policy, and I know Marcin made some (very non-gdpr-compliant) changes to it since then (in 2024)&lt;br /&gt;
# so I did diff of the current privacy policy on CC&#039;s website and OSE&#039;s; they had very little in common! https://creativecommons.org/privacy/&lt;br /&gt;
# it looks like CC updated their Privacy Policy in Dec 2019, so unfortuantly about a year after I did my work with it, they changed it almost completely&lt;br /&gt;
# so I&#039;m just going to start fresh with this, and make changes I think necessary&lt;br /&gt;
# I struggled to find the ToS page. It didn&#039;t appear on the special list of  long pages, and nothign returend for a search of &amp;quot;terms of service&amp;quot; – I guess because it&#039;s in the Eco-Libre namespace? I had to search my logs to find it https://wiki.eco-libre.org/wiki/Eco-Libre:Terms_of_Service&lt;br /&gt;
# I think I should change the link in the bottom-left footer from &amp;quot;Privacy Policy&amp;quot; to &amp;quot;Terms of Service&amp;quot; – since the PP is one of the ToS (and not the other way around)&lt;br /&gt;
## here&#039;s the docs on how to change the links in the footer https://www.mediawiki.org/wiki/Manual:Footer&lt;br /&gt;
## I was able to do this by updating the following two pages (one is the hyperlink text and one is the hyperlink article destination)&lt;br /&gt;
### https://wiki.eco-libre.org/wiki/MediaWiki:Privacypage&lt;br /&gt;
### https://wiki.eco-libre.org/wiki/MediaWiki:Privacy&lt;br /&gt;
# I created the Privacy Policy from the CC one, cleaned up the syntax and did my best to replace all the relevant CC stuff to EL https://wiki.eco-libre.org/wiki/Eco-Libre:Privacy_policy&lt;br /&gt;
# the privacy policy references a CoC (Code of Conduct). Ugh, I guess we need one of those too..&lt;br /&gt;
## I wonder if we can say &amp;quot;you must wash your hands with soap and water&amp;quot; and &amp;quot;you must take b12 if you&#039;re vegan&amp;quot; in the CoC. Or is that *another* agreement?&lt;br /&gt;
## probably we should make some CoC that applies to in-person and remote users *and* a separate agreement with that sort of thing, only for live-in guests (maybe call it a &amp;quot;Housing Agreeemnt&amp;quot; or something)&lt;br /&gt;
## here&#039;s the rules from veganism.social&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
	Rule #1No speciesism, animal abuse, carnists, omnivores, vegetarians, or other non-vegans&lt;br /&gt;
	Rule #2Sexually explicit or violent media must be marked as sensitive when posting&lt;br /&gt;
	Rule #3No racism, sexism, homophobia, transphobia, xenophobia, fatphobia, or casteism&lt;br /&gt;
	Rule #4No incitement of violence or promotion of violent ideologies&lt;br /&gt;
	Rule #5No harassment or doxxing of other users&lt;br /&gt;
	Rule #6Do not share intentionally false or misleading information&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## here&#039;s mastodon.energy&#039;s&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
1. Be Nice&lt;br /&gt;
2. Tell the Truth&lt;br /&gt;
3. Be Ethical&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## here&#039;s chaos.social, which is where we have our mastodon now&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Rules&lt;br /&gt;
&lt;br /&gt;
We expect users on chaos.social to adhere to the following rules:&lt;br /&gt;
&lt;br /&gt;
	No content condoning or advocating for the oppression of members of marginalised groups, or general discrimination of groups based on characteristics like gender, race, disabilities, nationality, education, religion etc.&lt;br /&gt;
	No harassment, stalking, mobbing, deadnaming, misgendering, contacting users who have made it clear they do not wish to be contacted.&lt;br /&gt;
	Obviously: no content that is illegal in Germany, no actions intended to damage this instance (performance, reputation, security).&lt;br /&gt;
	No right or alt-right bullshit, Nazi content, conspiracy narratives.&lt;br /&gt;
	No automated accounts (unless approved by the moderators). This includes bots, crossposters, feedposters etc.&lt;br /&gt;
	When posting to the local timeline, provide Content Warnings for violence, sexually explicit content, death/disease, and politics, particularly when negative or controversial (those are the larger categories, a CW might be something like “uspol, elections”).&lt;br /&gt;
	When posting to the local timeline, provide image descriptions.&lt;br /&gt;
	Provide credit for creative works that are not your own. That includes marking AI generated content clearly as such.&lt;br /&gt;
&lt;br /&gt;
Clarification: You post to the local timeline when you give your post “public” visibility. If you don’t want to follow local timeline rules, you can post with visibility “quiet public” (which used to be called “unlisted”) – posts will still be visible to everybody (your followers and everybody else), they just won’t get shown on the local and federated timelines. Boosts also do not appear on the local timeline.&lt;br /&gt;
&lt;br /&gt;
Note that the instance is also subject to our terms and privacy policy.&lt;br /&gt;
Best practices&lt;br /&gt;
&lt;br /&gt;
We ask users on chaos.social to keep the following guidelines in mind, in order to foster a considerate and accessible atmosphere. Forgetting about them is not as serious as breaking the instance rules, but repeated malicious unwillingness to follow the best practices will be considered just like breaking a rule.&lt;br /&gt;
&lt;br /&gt;
	Use content warnings liberally, especially for topics that are potentially disturbing or controversial, or that make life harder for people struggling with addiction or trauma.&lt;br /&gt;
	Don’t be a reply guy – uninvited comments about another user’s personal choices, lifestyle or family are strongly discouraged and may be considered harassment.&lt;br /&gt;
	In discussions, please remain civil, do not insult the people you’re talking to. Don’t escalate.&lt;br /&gt;
&lt;br /&gt;
Enforcement&lt;br /&gt;
&lt;br /&gt;
Rules are only worth as much as their enforcement, so here is what you can expect from the chaos.social moderators (we will publish our moderation guidelines in the future, but here’s the short version):&lt;br /&gt;
&lt;br /&gt;
Breaking these rules can get you kicked off the instance, though unless you’re behaving in bad faith, we will give you several warnings first. Going against the Best Practices can also get you kicked off the instance, but you have to really persistently act against them (and at that point, why are you on chaos.social?).&lt;br /&gt;
&lt;br /&gt;
Please report behaviour that bothers you. We will keep your report confidential.&lt;br /&gt;
&lt;br /&gt;
We run this instance in our spare time, so we can’t respond instantly. We try to react to all reports within a day, but please allow for delays. You can always contact us us in private if you have concerns about moderation. We will not comment in public about individual moderation cases.&lt;br /&gt;
Ultimately,&lt;br /&gt;
&lt;br /&gt;
we (@leah and @rixx) are maintaining this instance on our spare time, hardware and nerves. Don’t push either of those.&lt;br /&gt;
&lt;br /&gt;
The rules are licensed under CC-BY-SA by chaos.social e.V.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
### and this one explicilty says it&#039;s CC-BY-SA, so that&#039;s cool.&lt;br /&gt;
## I guess we&#039;ll copy chaos.socials&#039; since it&#039;s already copyleft&lt;br /&gt;
## ok, here&#039;s what I came-up with&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
By using this website, you agree to the following Code of Conduct:&lt;br /&gt;
&lt;br /&gt;
# Only submit content for which you have the right to submit it under the terms of our copyleft licensing (it must either be created in whole or in part by you or already licensed under a comparable copyleft)&lt;br /&gt;
# No AI content! This is a violation of rule #1.&lt;br /&gt;
# No content condoning or advocating for the oppression of members of marginalised groups, or general discrimination of groups based on characteristics like species, gender, race, disabilities, nationality, education, religion etc.&lt;br /&gt;
# No harassment, stalking, mobbing, deadnaming, misgendering, contacting users who have made it clear they do not wish to be contacted.&lt;br /&gt;
# No content that is illegal in Germany or Ecuador, no actions intended to damage this instance (performance, reputation, security).&lt;br /&gt;
# No pro-fascist or pro-Nazi content&lt;br /&gt;
# Post Content Warnings for violence, sexually explicit content, death and/or disease&lt;br /&gt;
# Whenever possible, provide image descriptions for visually impaired readers&lt;br /&gt;
# No misinformation or disinformaton&lt;br /&gt;
# Provide attribution (credit) for works that are not your own. This should include a name of the original copyright holder and a link to the source.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# now we have a CLA (Community License Agreement), ToS (Terms of Service), PP (Privacy Policy), and CoC (Code of Conduct)&lt;br /&gt;
## so I think we still have just 2 agreeements missing&lt;br /&gt;
### Public Data Agreement&lt;br /&gt;
### In-House Volunteer Agreement&lt;br /&gt;
# I had previously drafted the Public Data Agreeement as followes&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
1. I understand that Eco-Libre will publish all of my work publicly on their website&lt;br /&gt;
2. I understand that, because my work is licensed openly, I cannot request it to be taken down from the Internet&lt;br /&gt;
3. I understand that I have the right to use an alias, so that all of my work can be attributed to an anonymous profile with no PII (publicly identifiable information).&lt;br /&gt;
4. I understand that, if I wish to use an anonymous identity for my public contributions, then I should not use my real name in this application&lt;br /&gt;
5. I understand that currently my name is set to XXXX, and this is the name that will be publicly listed on Eco-Libre&#039;s website associated with all of my contributions&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## I&#039;m actually not fully sure that&#039;s necessary. The PP from CC had a clause&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Eco-Libre Volunteers.&lt;br /&gt;
&lt;br /&gt;
o In connection with you Eco-Libre Volunteer application, we may provide your information to the individuals you’ve selected to vouch for you, and with those reviewing your application, including the Membership Council whose members include people not employed by Eco-Libre and who are located in various countries around the world.&lt;br /&gt;
&lt;br /&gt;
o If you vouch for someone’s application to the Eco-Libre Volunteer program, your information will be shared with those reviewing the application, including the Membership Council, and if you provide a positive vouching statement, that statement will be shared with the applicant if and when they are admitted for membership.&lt;br /&gt;
&lt;br /&gt;
o Once you are an Eco-Libre Volunteer, we may provide you with a public profile page, pre-populated with certain information you provided in your application such as your name, areas of interest, images or other content you upload, which will be publicly displayed to anyone who visits the site. &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## I added a paragraph&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
o   As an Eco-Libre Volunteer, all of your Contributions will be licensed under a copyleft license, and published publicly.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## well, I guess this satisfies the legal requirements, but I do want to make the pseudonym stuff more clear. But I apparently wrote that to go on the application itself. Currently our application process is non-existant: the user just sends and email, we have a call, and we figure it out. I did just add some docs to sign to that process, but we need a more streamlined process: a form&lt;br /&gt;
## it&#039;s on our TODO list to review some wordpress plugins that we can use for building an application process. eventually *that&#039;s* where this text should be copied, and it should reference things like our official Privacy Policy&lt;br /&gt;
# the other thing was our &amp;quot; In-House Volunteer Agreement&amp;quot; which is *really* premature, as we don&#039;t even have housing yet. Nonetheless, I drafted this&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
1. I am at least 15 years old&lt;br /&gt;
2. I sincerely want live a sustainable lifestyle and work on developing tools to help others live sustainably. I understand that volunteering at Eco-Libre is an active experience, not a cheap vacation. &lt;br /&gt;
3. I am ready to participate in the community and share in the daily routine of my hosts, while respecting their living conditions and boundaries.&lt;br /&gt;
4. I will contribute my time to the community the agreed-upon number of hours per week.&lt;br /&gt;
5. I am willing to adapt to a lifestyle that may be different from mine. I will make known to the community any pertinent health conditions (disabilities, addictions...) beforehand.&lt;br /&gt;
6. I have insurance that will cover me for accidents, illness, and liability during my stay. I am aware that Eco-Libre cannot be held responsible for damages and / or losses linked to my stay.&lt;br /&gt;
7. I will prevent the spread of disease by washing my hands with soap and water after using the toilet and before preparing meals&lt;br /&gt;
8. I will only purchase vegan goods (derived from non-animal sources) during my time at Eco-Libre in accordance with the community values of ecological sustainability.&lt;br /&gt;
9. I will supplement my diet by taking vitamin B12&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# I also think that should be included in the online volunteer application form. And probably physically signed by folks who are going to actually come to Ecudaor. But we&#039;re not there yet...&lt;br /&gt;
# anyway, I think we&#039;ve finally satisifed the requrements of (and finished the configuration of) ConfirmAccount!&lt;br /&gt;
# TODO: finish enabling &amp;amp; configuring wiki extensions: DeleteBatch, SmiteSpam, UserMerge, Widgets&lt;br /&gt;
&lt;br /&gt;
= 2026-04-24 =&lt;br /&gt;
# someone answered my &amp;quot;how do I license kdnelive files&amp;quot; here https://opensource.stackexchange.com/a/15747/30915&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
It sounds like your desired outcome is that copies of your mp4 can only be distributed while also sharing the kdenlive source files. You&#039;re correct that CC ShareAlike terms won&#039;t do this. ShareAlike requires that all downstream works that reuse the work be shareable under the same kind of ShareAlike license, but it doesn&#039;t require redistributors to share the underlying source code.&lt;br /&gt;
&lt;br /&gt;
If you do want to require source to accompany your work, this requirement differs from the desires of many artists who choose a CC license: they want their song or image to be shared around without having to be followed by the underlying sound-editor archive or photo-editor layer file. If that actually is what you want, then the GPL is a sensible choice for such a strong requirement, and it is perfectly applicable to non-software works.&lt;br /&gt;
&lt;br /&gt;
 * https://www.gnu.org/licenses/gpl-faq.html#GPLOtherThanSoftware&lt;br /&gt;
&lt;br /&gt;
If you don&#039;t want to impose this requirement, then I think CC BY-SA is still a reasonable choice for the underlying &amp;quot;source code&amp;quot; of your video. The output mp4 is legally derivative of your kdenlive files, so CC BY-SA will ensure that all mp4 files made from (derivatives of) your kdenlive source must also be freely shareable under CC BY-SA, but will not impose source disclosure. Future derivatives of the source kdenlive files will, similarly, have to remain under CC BY-SA even as others change them (but they can be kept secret even when built into a CC BY-SA mp4).&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# I half-decided we should then license all artwork (images made in gimp or inkscape, videos made in kdenlive) under GPL, so the sources would need to be public&lt;br /&gt;
# then I started thinking, hey, maybe our documentation should also be GPL, since sphinx and reST are like sources for PDFs they produce&lt;br /&gt;
# then I realized what that would actually mean. Say we make a video showing the construction of a launch-nest. Say the sources for that video include a camera that was mounted to a post and recording for 8 hours every day over the period of 3 months. Maybe five of them, for differet angles. Once we finally finish producing the video, I&#039;m going to be super relieved when we can delete that enormous source footage. The kdenlive file itself would be fine to release; it&#039;s small. But would we then be forced to indefinitely save and distribute the source video footage, even if it&#039;s a combined 3 TB of 1,000 video files, for a 1 GB finally-rendered mp4?&lt;br /&gt;
# inkscape is easy; the svg literally *is* the source file&lt;br /&gt;
# gimp is somewhere in-between. I typically hang-onto the source images used to make a feature image (sometimes brands, or screenshots or stock copyleft images of forests or whatever) for some number of months. eventually they get deleted. I would love to upload the gimp files, but those might be broken without the source images. Or they just would be too enormous and break git over time.&lt;br /&gt;
# also, if we can&#039;t do it, we can&#039;t expect downstream to do it. imagine we work with some youtuber and demand that the must forever store and publish the sources in order to do a video with us? I think 99% would turn us down, because they know they can&#039;t do that. It&#039;s too expensive and unrealistic.&lt;br /&gt;
# due to this very real logistical problem, I think we should just keep CC BY-SA on media files. We can go above-and-beyond that license and provide kdenlive and gimp files *sometimes*, but we shouldn&#039;t mandate it by using GPL.&lt;br /&gt;
# and, honestly, if downstream just licenses CC BY-SA, that lets us cut that up and use it in future videos. That&#039;s good enough. And appropriate for the (expensive-to-store) medium.&lt;br /&gt;
# ...&lt;br /&gt;
# revisting the DEB5 system, I found an example on another project that I maintain: buskill https://salsa.debian.org/debian/buskill/-/blob/master/debian/copyright?ref_type=heads&lt;br /&gt;
## so our debian maintainer built this. he put a file &#039;copyright&#039; in the root with this contents&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/&lt;br /&gt;
Source: https://github.com/BusKill/buskill-app&lt;br /&gt;
Upstream-Name: buskill&lt;br /&gt;
Upstream-Contact: Michael Altfield &amp;lt;michael@michaelaltfield.net&amp;gt;&lt;br /&gt;
Files:&lt;br /&gt;
 *&lt;br /&gt;
Copyright:&lt;br /&gt;
 2020-2022 Michael Altfield &amp;lt;michael@michaelaltfield.net&amp;gt;&lt;br /&gt;
 2020-2021 Steven Johnson &amp;lt;steven.j2019@protonmail.com&amp;gt;&lt;br /&gt;
License: GPL-3+&lt;br /&gt;
Files:&lt;br /&gt;
 src/fonts/*&lt;br /&gt;
Copyright:&lt;br /&gt;
 2015 Google&lt;br /&gt;
License: Apache-2.0&lt;br /&gt;
 Licensed under the Apache License, Version 2.0 (the &amp;quot;License&amp;quot;);&lt;br /&gt;
 you may not use this file except in compliance with the License.&lt;br /&gt;
 You may obtain a copy of the License at&lt;br /&gt;
 ․&lt;br /&gt;
	https://www.apache.org/licenses/LICENSE-2.0&lt;br /&gt;
 ․&lt;br /&gt;
 Unless required by applicable law or agreed to in writing, software&lt;br /&gt;
 distributed under the License is distributed on an &amp;quot;AS IS&amp;quot; BASIS,&lt;br /&gt;
 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.&lt;br /&gt;
 See the License for the specific language governing permissions and&lt;br /&gt;
 limitations under the License.&lt;br /&gt;
Comment:&lt;br /&gt;
 On Debian systems, the complete text of the Apache License&lt;br /&gt;
 version 2 can be found in &amp;quot;/usr/share/common-licenses/Apache-2.0&amp;quot;.&lt;br /&gt;
Files:&lt;br /&gt;
 src/packages/garden/navigationdrawer/*&lt;br /&gt;
Copyright:&lt;br /&gt;
 2013 Alexander Taylor&lt;br /&gt;
License: MIT&lt;br /&gt;
Files:&lt;br /&gt;
 src/packages/garden/progressspinner/*&lt;br /&gt;
Copyright:&lt;br /&gt;
 2015 Ryan Pessa &amp;lt;dkived@gmail.com&amp;gt;&lt;br /&gt;
License: MIT&lt;br /&gt;
Files:&lt;br /&gt;
 debian/*&lt;br /&gt;
Copyright:&lt;br /&gt;
 2022-2026 Francois Marier &amp;lt;francois@debian.org&amp;gt;&lt;br /&gt;
License: GPL-3+&lt;br /&gt;
License: GPL-3+&lt;br /&gt;
 This package is free software; you can redistribute it and/or modify&lt;br /&gt;
 it under the terms of the GNU General Public License as published by&lt;br /&gt;
 the Free Software Foundation; either version 3 of the License, or&lt;br /&gt;
 (at your option) any later version.&lt;br /&gt;
 .&lt;br /&gt;
 This package is distributed in the hope that it will be useful,&lt;br /&gt;
 but WITHOUT ANY WARRANTY; without even the implied warranty of&lt;br /&gt;
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the&lt;br /&gt;
 GNU General Public License for more details.&lt;br /&gt;
 .&lt;br /&gt;
 You should have received a copy of the GNU General Public License&lt;br /&gt;
 along with this program. If not, see &amp;lt;https://www.gnu.org/licenses/&amp;gt;&lt;br /&gt;
Comment:&lt;br /&gt;
 On Debian systems, the complete text of the GNU General&lt;br /&gt;
 Public License version 3 can be found in &amp;quot;/usr/share/common-licenses/GPL-3&amp;quot;.&lt;br /&gt;
License: MIT&lt;br /&gt;
 Permission is hereby granted, free of charge, to any person obtaining a copy&lt;br /&gt;
 of this software and associated documentation files (the &amp;quot;Software&amp;quot;), to deal&lt;br /&gt;
&lt;br /&gt;
 in the Software without restriction, including without limitation the rights&lt;br /&gt;
 to use, copy, modify, merge, publish, distribute, sublicense, and/or sell&lt;br /&gt;
 copies of the Software, and to permit persons to whom the Software is&lt;br /&gt;
 furnished to do so, subject to the following conditions:&lt;br /&gt;
 .&lt;br /&gt;
 The above copyright notice and this permission notice shall be included in&lt;br /&gt;
 all copies or substantial portions of the Software.&lt;br /&gt;
 .&lt;br /&gt;
 THE SOFTWARE IS PROVIDED &amp;quot;AS IS&amp;quot;, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR&lt;br /&gt;
 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,&lt;br /&gt;
 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE&lt;br /&gt;
 AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER&lt;br /&gt;
 LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,&lt;br /&gt;
 OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN&lt;br /&gt;
 THE SOFTWARE.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# I spent some time trying to craft a &#039;copyright&#039; file that we could use for Eco-Libre&lt;br /&gt;
## one thing that bothers me is that I have so many &#039;Files&#039; stanzas – one for each programming language. I wish I could do something like&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Files:&lt;br /&gt;
 *.py|*.php|*.c&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## there are no examples where a single file stanza has many file paths, but the text of the standard does say they are whitespace-delimited (not pipe-delimited, like I naturally think)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
4. File syntax&lt;br /&gt;
...&lt;br /&gt;
4.2. Whitespace-separated lists&lt;br /&gt;
&lt;br /&gt;
Field values defined as whitespace-separated lists may be on one line or many. Values in the list are separated by one or more whitespace characters (space, tab, or newline). For example, the Files field contains a whitespace-separated list of filename patterns.&lt;br /&gt;
...&lt;br /&gt;
6.9. Files&lt;br /&gt;
&lt;br /&gt;
Whitespace-separated list: list of patterns indicating files covered by the license and copyright specified in this stanza.&lt;br /&gt;
&lt;br /&gt;
Filename patterns in the Files field are specified using a simplified shell glob syntax. Patterns are separated by whitespace. &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## let&#039;s see if I can find any example package that use this whitespace, so I don&#039;t fuck it up&lt;br /&gt;
## looks like debian has a *ton* of these already available on my system&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
user@disp4360:~$ ls /usr/share/doc/*/copyright | head&lt;br /&gt;
/usr/share/doc/acl/copyright&lt;br /&gt;
/usr/share/doc/adduser/copyright&lt;br /&gt;
/usr/share/doc/adwaita-icon-theme/copyright&lt;br /&gt;
/usr/share/doc/alsa-topology-conf/copyright&lt;br /&gt;
/usr/share/doc/alsa-ucm-conf/copyright&lt;br /&gt;
/usr/share/doc/alsa-utils/copyright&lt;br /&gt;
/usr/share/doc/amd64-microcode/copyright&lt;br /&gt;
/usr/share/doc/anacron/copyright&lt;br /&gt;
/usr/share/doc/ansible/copyright&lt;br /&gt;
/usr/share/doc/ansible-core/copyright&lt;br /&gt;
user@disp4360:~$ &lt;br /&gt;
&lt;br /&gt;
user@disp4360:~$ ls /usr/share/doc/*/copyright | wc -l&lt;br /&gt;
2798&lt;br /&gt;
user@disp4360:~$ &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## the very first one has a great example&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
user@disp4360:~$ cat /usr/share/doc/acl/copyright&lt;br /&gt;
Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/&lt;br /&gt;
&lt;br /&gt;
Files:&lt;br /&gt;
 *&lt;br /&gt;
Copyright:&lt;br /&gt;
 Copyright © 2000-2008 Silicon Graphics, Inc.&lt;br /&gt;
 Copyright © 1999-2001,2007-2009 Andreas Gruenbacher&lt;br /&gt;
License: GPL-2+&lt;br /&gt;
 This program is free software: you can redistribute it and/or modify it&lt;br /&gt;
 under the terms of the GNU General Public License as published by&lt;br /&gt;
 the Free Software Foundation, either version 2 of the License, or&lt;br /&gt;
 (at your option) any later version.&lt;br /&gt;
 .&lt;br /&gt;
 This program is distributed in the hope that it will be useful,&lt;br /&gt;
 but WITHOUT ANY WARRANTY; without even the implied warranty of&lt;br /&gt;
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the&lt;br /&gt;
 GNU General Public License for more details.&lt;br /&gt;
 .&lt;br /&gt;
 You should have received a copy of the GNU General Public License&lt;br /&gt;
 along with this program.  If not, see &amp;lt;https://www.gnu.org/licenses/&amp;gt;.&lt;br /&gt;
Comment:&lt;br /&gt;
 On Debian systems, the full text of the GNU General Public License&lt;br /&gt;
 can be found in &#039;/usr/share/common-licenses/GPL-2&#039;.&lt;br /&gt;
&lt;br /&gt;
Files:&lt;br /&gt;
 exports&lt;br /&gt;
 include/*.h&lt;br /&gt;
 libacl/*.c&lt;br /&gt;
 libacl/*.h&lt;br /&gt;
 libmisc/*.c&lt;br /&gt;
 tools/do_set.*&lt;br /&gt;
 tools/parse.*&lt;br /&gt;
 tools/sequence.c&lt;br /&gt;
 tools/setfacl.c&lt;br /&gt;
 tools/user_group.h&lt;br /&gt;
Copyright:&lt;br /&gt;
 Copyright © 2001-2002 Silicon Graphics, Inc.&lt;br /&gt;
 Copyright © 1999-2003,2007,2009,2011 Andreas Gruenbacher&lt;br /&gt;
License: LGPL-2+&lt;br /&gt;
 This program is free software: you can redistribute it and/or modify it&lt;br /&gt;
 under the terms of the GNU Lesser General Public License as published by&lt;br /&gt;
 the Free Software Foundation, either version 2.1 of the License, or&lt;br /&gt;
 (at your option) any later version.&lt;br /&gt;
 .&lt;br /&gt;
 This program is distributed in the hope that it will be useful,&lt;br /&gt;
 but WITHOUT ANY WARRANTY; without even the implied warranty of&lt;br /&gt;
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the&lt;br /&gt;
 GNU Lesser General Public License for more details.&lt;br /&gt;
 .&lt;br /&gt;
 You should have received a copy of the GNU Lesser General Public License&lt;br /&gt;
 along with this program.  If not, see &amp;lt;https://www.gnu.org/licenses/&amp;gt;.&lt;br /&gt;
Comment:&lt;br /&gt;
 On Debian systems, the full text of the GNU Lesser General Public License&lt;br /&gt;
 can be found in &#039;/usr/share/common-licenses/LGPL-2.1&#039;.&lt;br /&gt;
user@disp4360:~$ &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# I also found an example where the whitespace was a space, not a newline + space&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
user@disp4360:~$ cat /usr/share/doc/apparmor/copyright &lt;br /&gt;
Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/&lt;br /&gt;
Upstream-Name: AppArmor&lt;br /&gt;
Upstream-Contact: apparmor@lists.ubuntu.com&lt;br /&gt;
Source: https://launchpad.net/apparmor&lt;br /&gt;
&lt;br /&gt;
Files: *&lt;br /&gt;
Copyright: 1998-2010 Novell/SuSE/Immunix&lt;br /&gt;
		   2008-2014 Canonical Ltd.&lt;br /&gt;
License: GPL-2+&lt;br /&gt;
&lt;br /&gt;
Files: changehat/pam_apparmor/*&lt;br /&gt;
Copyright: 2006 SUSE Linux Products GmbH, Nuernberg, Germany&lt;br /&gt;
		   2002, 2003, 2004 SuSE GmbH Nuernberg, Germany&lt;br /&gt;
		   2002-2006 Novell/SuSE&lt;br /&gt;
		   2010 Canonical Ltd.&lt;br /&gt;
License: BSD-3-clause or GPL-2+&lt;br /&gt;
&lt;br /&gt;
Files: changehat/mod_apparmor/*&lt;br /&gt;
Copyright: 2004-2006 Novell&lt;br /&gt;
		   2014 Canonical Ltd.&lt;br /&gt;
License: LGPL-2.1+&lt;br /&gt;
&lt;br /&gt;
Files: libraries/libapparmor/* parser/libapparmor_re/*&lt;br /&gt;
Copyright: 1999-2008 Novell&lt;br /&gt;
		   2009-2013 Canonical Ltd.&lt;br /&gt;
License: LGPL-2.1+&lt;br /&gt;
&lt;br /&gt;
Files: profiles/apparmor.d/abstractions/mysql&lt;br /&gt;
Copyright: 2002-2006 Novell/SUSE&lt;br /&gt;
		   2013 Christian Boltz&lt;br /&gt;
License: GPL-2&lt;br /&gt;
&lt;br /&gt;
Files: profiles/apparmor.d/usr.sbin.dnsmasq&lt;br /&gt;
Copyright: 2009 John Dong &amp;lt;jdong@ubuntu.com&amp;gt;&lt;br /&gt;
		   2010 Canonical Ltd.&lt;br /&gt;
License: GPL-2&lt;br /&gt;
&lt;br /&gt;
Files: profiles/apparmor.d/sbin.syslog-ng&lt;br /&gt;
Copyright: 2006-2009 Novell/SUSE&lt;br /&gt;
		   2006 Christian Boltz&lt;br /&gt;
		   2010 Canonical Ltd.&lt;br /&gt;
License: GPL-2&lt;br /&gt;
&lt;br /&gt;
Files: profiles/apparmor.d/usr.lib.dovecot.*&lt;br /&gt;
Copyright: 2013 Christian Boltz&lt;br /&gt;
License: GPL-2&lt;br /&gt;
&lt;br /&gt;
Files: profiles/apparmor.d/usr.lib.dovecot.auth&lt;br /&gt;
Copyright: 2013 Christian Boltz&lt;br /&gt;
		   2014 Christian Wittmer&lt;br /&gt;
License: GPL-2&lt;br /&gt;
&lt;br /&gt;
Files: profiles/apparmor.d/usr.lib.dovecot.deliver&lt;br /&gt;
Copyright: 2009 Dulmandakh Sukhbaatar &amp;lt;dulmandakh@gmail.com&amp;gt;&lt;br /&gt;
		   2009-2014 Canonical Ltd.&lt;br /&gt;
		   2011-2013 Christian Boltz&lt;br /&gt;
License: GPL-2&lt;br /&gt;
&lt;br /&gt;
Files: profiles/apparmor.d/usr.lib.dovecot.dovecot-auth&lt;br /&gt;
Copyright: 2009-2013 Canonical Ltd.&lt;br /&gt;
		   2013 Christian Boltz&lt;br /&gt;
License: GPL-2&lt;br /&gt;
&lt;br /&gt;
Files: profiles/apparmor.d/usr.lib.dovecot.imap profiles/apparmor.d/usr.lib.dovecot.pop3&lt;br /&gt;
Copyright: 2009-2010 Canonical Ltd.&lt;br /&gt;
		   2011-2013 Christian Boltz&lt;br /&gt;
License: GPL-2&lt;br /&gt;
&lt;br /&gt;
Files: profiles/apparmor.d/usr.lib.dovecot.imap-login profiles/apparmor.d/usr.lib.dovecot.pop3-login&lt;br /&gt;
Copyright: 2009-2011 Canonical Ltd.&lt;br /&gt;
		   2013 Christian Boltz&lt;br /&gt;
License: GPL-2&lt;br /&gt;
&lt;br /&gt;
Files: profiles/apparmor.d/usr.lib.dovecot.managesieve&lt;br /&gt;
Copyright: 2013 Christian Boltz&lt;br /&gt;
		   2014 Christian Wittmer&lt;br /&gt;
License: GPL-2&lt;br /&gt;
&lt;br /&gt;
Files: profiles/apparmor.d/usr.lib.dovecot.managesieve-login&lt;br /&gt;
Copyright: 2009 Dulmandakh Sukhbaatar &amp;lt;dulmandakh@gmail.com&amp;gt;&lt;br /&gt;
		   2009-2011 Canonical Ltd.&lt;br /&gt;
		   2013 Christian Boltz&lt;br /&gt;
		   2014 Christian Wittmer&lt;br /&gt;
License: GPL-2&lt;br /&gt;
&lt;br /&gt;
Files: profiles/apparmor/profiles/extras/usr.bin.mlmmj-make-ml.sh&lt;br /&gt;
Copyright: 2002-2005 Novell/SUSE&lt;br /&gt;
License: GPL-2&lt;br /&gt;
&lt;br /&gt;
Files: profiles/apparmor/profiles/extras/usr.bin.passwd&lt;br /&gt;
Copyright: 2006 Volker Kuhlmann&lt;br /&gt;
License: GPL-2&lt;br /&gt;
&lt;br /&gt;
Files: debian/*&lt;br /&gt;
Copyright: 2007-2011 Canonical Ltd.&lt;br /&gt;
		   2014-2022 intrigeri&lt;br /&gt;
License: GPL-2&lt;br /&gt;
&lt;br /&gt;
License: BSD-3-clause&lt;br /&gt;
 Redistribution and use in source and binary forms, with or without&lt;br /&gt;
 modification, are permitted provided that the following conditions&lt;br /&gt;
 are met:&lt;br /&gt;
 .&lt;br /&gt;
 1. Redistributions of source code must retain any existing copyright&lt;br /&gt;
	notice, and this entire permission notice in its entirety,&lt;br /&gt;
	including the disclaimer of warranties.&lt;br /&gt;
 .&lt;br /&gt;
 2. Redistributions in binary form must reproduce all prior and current&lt;br /&gt;
	copyright notices, this list of conditions, and the following&lt;br /&gt;
	disclaimer in the documentation and/or other materials provided&lt;br /&gt;
	with the distribution.&lt;br /&gt;
 .&lt;br /&gt;
 3. The name of any author may not be used to endorse or promote&lt;br /&gt;
	products derived from this software without their specific prior&lt;br /&gt;
	written permission.&lt;br /&gt;
&lt;br /&gt;
License: GPL-2&lt;br /&gt;
 This program is free software; you can redistribute it and/or modify&lt;br /&gt;
 it under the terms of the GNU General Public License as published by&lt;br /&gt;
 the Free Software Foundation; version 2 of the License.&lt;br /&gt;
 .&lt;br /&gt;
 This program is distributed in the hope that it will be useful,&lt;br /&gt;
 but WITHOUT ANY WARRANTY; without even the implied warranty of&lt;br /&gt;
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the&lt;br /&gt;
 GNU General Public License for more details.&lt;br /&gt;
 .&lt;br /&gt;
 You should have received a copy of the GNU General Public License along&lt;br /&gt;
 with this program; if not, write to the Free Software Foundation, Inc.,&lt;br /&gt;
 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.&lt;br /&gt;
 .&lt;br /&gt;
 On Debian systems, the complete text of the GNU General&lt;br /&gt;
 Public License can be found in `/usr/share/common-licenses/GPL-2&#039;.&lt;br /&gt;
&lt;br /&gt;
License: GPL-2+&lt;br /&gt;
 This program is free software; you can redistribute it and/or modify&lt;br /&gt;
 it under the terms of the GNU General Public License as published by&lt;br /&gt;
 the Free Software Foundation; either version 2 of the License, or&lt;br /&gt;
 (at your option) any later version.&lt;br /&gt;
 .&lt;br /&gt;
 This program is distributed in the hope that it will be useful,&lt;br /&gt;
 but WITHOUT ANY WARRANTY; without even the implied warranty of&lt;br /&gt;
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the&lt;br /&gt;
 GNU General Public License for more details.&lt;br /&gt;
 .&lt;br /&gt;
 You should have received a copy of the GNU General Public License along&lt;br /&gt;
 with this program; if not, write to the Free Software Foundation, Inc.,&lt;br /&gt;
 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.&lt;br /&gt;
 .&lt;br /&gt;
 On Debian systems, the complete text of the GNU General&lt;br /&gt;
 Public License can be found in `/usr/share/common-licenses/GPL-2&#039;.&lt;br /&gt;
&lt;br /&gt;
License: LGPL-2.1+&lt;br /&gt;
 This library is free software; you can redistribute it and/or&lt;br /&gt;
 modify it under the terms of the GNU Lesser General Public&lt;br /&gt;
 License as published by the Free Software Foundation; either&lt;br /&gt;
 version 2.1 of the License, or (at your option) any later version.&lt;br /&gt;
 .&lt;br /&gt;
 This library is distributed in the hope that it will be useful,&lt;br /&gt;
 but WITHOUT ANY WARRANTY; without even the implied warranty of&lt;br /&gt;
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU&lt;br /&gt;
 Lesser General Public License for more details.&lt;br /&gt;
 .&lt;br /&gt;
 You should have received a copy of the GNU Lesser General Public&lt;br /&gt;
 License along with this library; if not, write to the Free Software&lt;br /&gt;
 Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA&lt;br /&gt;
 .&lt;br /&gt;
 On Debian systems, the complete text of the GNU General&lt;br /&gt;
 Public License can be found in `/usr/share/common-licenses/LGPL-2.1&#039;.&lt;br /&gt;
user@disp4360:~$ &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
## so we already have a &amp;quot;short version&amp;quot; of the license for GPL and CERN. For example&lt;br /&gt;
### GPL&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 This package is free software; you can redistribute it and/or modify&lt;br /&gt;
 it under the terms of the GNU General Public License as published by&lt;br /&gt;
 the Free Software Foundation; either version 3 of the License, or&lt;br /&gt;
 (at your option) any later version.&lt;br /&gt;
 .&lt;br /&gt;
 This package is distributed in the hope that it will be useful,&lt;br /&gt;
 but WITHOUT ANY WARRANTY; without even the implied warranty of&lt;br /&gt;
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the&lt;br /&gt;
 GNU General Public License for more details.&lt;br /&gt;
 .&lt;br /&gt;
 You should have received a copy of the GNU General Public License&lt;br /&gt;
 along with this program. If not, see &amp;lt;https://www.gnu.org/licenses/&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
### CERN&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
You may redistribute and modify this source and make products using it under the terms of the CERN-OHL-S v2 (https://ohwr.org/cern_ohl_s_v2.txt).&lt;br /&gt;
&lt;br /&gt;
This source is distributed WITHOUT ANY EXPRESS OR IMPLIED WARRANTY, INCLUDING OF MERCHANTABILITY, SATISFACTORY QUALITY AND FITNESS FOR A PARTICULAR PURPOSE. Please see the CERN-OHL-S v2 for applicable conditions.&lt;br /&gt;
&lt;br /&gt;
Source location: foundationdevices.com/passport-electronics&lt;br /&gt;
&lt;br /&gt;
As per CERN-OHL-S v2 section 4, should You produce hardware based on this source, You must where practicable and applicable maintain the Source Location visible (1) on the packaging of the hardware, (2) on the circuit board(s) via silkscreen or copper, (3) in any documentation, and (4) on other products you make using this source.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## I was hoping for some sort of equivalent in CC-BY-SA-4.0, but all of these (which were the only ones I found with BY-SA-4.0) had the full text of the license&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
user@disp4360:/usr/share/doc$ grep -irl BY-SA-4.0 /usr/share/doc/*/copyright&lt;br /&gt;
/usr/share/doc/adwaita-icon-theme/copyright&lt;br /&gt;
/usr/share/doc/containerd/copyright&lt;br /&gt;
/usr/share/doc/gimp/copyright&lt;br /&gt;
/usr/share/doc/gimp-data/copyright&lt;br /&gt;
/usr/share/doc/gir1.2-gtk-3.0/copyright&lt;br /&gt;
/usr/share/doc/gtk-update-icon-cache/copyright&lt;br /&gt;
/usr/share/doc/libadwaita-1-0/copyright&lt;br /&gt;
/usr/share/doc/libgimp2.0/copyright&lt;br /&gt;
/usr/share/doc/libgtk-3-0/copyright&lt;br /&gt;
/usr/share/doc/libgtk-3-bin/copyright&lt;br /&gt;
/usr/share/doc/libgtk-3-common/copyright&lt;br /&gt;
/usr/share/doc/libmd4c0/copyright&lt;br /&gt;
/usr/share/doc/libnftables1/copyright&lt;br /&gt;
/usr/share/doc/libwildmidi2/copyright&lt;br /&gt;
/usr/share/doc/mythes-en-us/copyright&lt;br /&gt;
/usr/share/doc/nftables/copyright&lt;br /&gt;
/usr/share/doc/syncthing/copyright&lt;br /&gt;
user@disp4360:/usr/share/doc$ &lt;br /&gt;
user@disp4360:/usr/share/doc$ cat /usr/share/doc/libadwaita-1-0/copyright&lt;br /&gt;
Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/&lt;br /&gt;
Upstream-Name: libadwaita&lt;br /&gt;
Source: https://gitlab.gnome.org/GNOME/libadwaita&lt;br /&gt;
Files-Excluded: doc/libadwaita-1&lt;br /&gt;
Comment: Let&#039;s build the docs from source&lt;br /&gt;
&lt;br /&gt;
Files: *&lt;br /&gt;
Copyright: 2019, Alexander Mikhaylenko &amp;lt;exalm7659@gmail.com&amp;gt;&lt;br /&gt;
  2018, 2019, Zander Brown &amp;lt;zbrown@gnome.org&amp;gt;&lt;br /&gt;
  2017-2021, Purism SPC&lt;br /&gt;
  2016, Endless Mobile Inc.&lt;br /&gt;
  2013, 2019, Red Hat, Inc.&lt;br /&gt;
  1995-1997, Peter Mattis, Spencer Kimball and Josh MacDonald&lt;br /&gt;
  2021, GNOME Foundation&lt;br /&gt;
  2021, Manuel Genovés&lt;br /&gt;
  2021, Nahuel Gomez Castro&lt;br /&gt;
  2021, Maximiliano Sandoval&lt;br /&gt;
  2011, Intel Corporation&lt;br /&gt;
License: LGPL-2.1+&lt;br /&gt;
&lt;br /&gt;
Files: debian/*&lt;br /&gt;
Copyright: 2021, Guido Günther &amp;lt;agx@sigxcpu.org&amp;gt;&lt;br /&gt;
License: GPL-3+&lt;br /&gt;
&lt;br /&gt;
Files:&lt;br /&gt;
 doc/libadwaita-1/*.html&lt;br /&gt;
 doc/libadwaita-1/main.js&lt;br /&gt;
Copyright:&lt;br /&gt;
 2021, GNOME Foundation&lt;br /&gt;
License: Apache-2.0 or GPL-3+&lt;br /&gt;
&lt;br /&gt;
Files:&lt;br /&gt;
 demo/data/org.gnome.Adwaita1.Demo.metainfo.xml.in.in&lt;br /&gt;
Copyright: none&lt;br /&gt;
License: CC0-1.0&lt;br /&gt;
&lt;br /&gt;
Files:&lt;br /&gt;
 demo/data/org.gnome.Adwaita1.Demo.Source.svg&lt;br /&gt;
Copyright:&lt;br /&gt;
 GNOME Design Team&lt;br /&gt;
License: CC-BY-SA-4.0&lt;br /&gt;
&lt;br /&gt;
License: Apache-2.0&lt;br /&gt;
 SPDX license identifier Apache-2.0.&lt;br /&gt;
 .&lt;br /&gt;
 Licensed under the Apache License, Version 2.0 (the &amp;quot;License&amp;quot;);&lt;br /&gt;
 you may not use this file except in compliance with the License.&lt;br /&gt;
 You may obtain a copy of the License at&lt;br /&gt;
 .&lt;br /&gt;
	  http://www.apache.org/licenses/LICENSE-2.0&lt;br /&gt;
 .&lt;br /&gt;
 Unless required by applicable law or agreed to in writing, software&lt;br /&gt;
 distributed under the License is distributed on an &amp;quot;AS IS&amp;quot; BASIS,&lt;br /&gt;
 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.&lt;br /&gt;
 See the License for the specific language governing permissions and&lt;br /&gt;
 limitations under the License.&lt;br /&gt;
 .&lt;br /&gt;
 On Debian systems, a copy of the Apache License version 2.0&lt;br /&gt;
 can be found in /usr/share/common-licenses/Apache-2.0.&lt;br /&gt;
&lt;br /&gt;
License: CC0-1.0&lt;br /&gt;
 SPDX license identifier CC0-1.0.&lt;br /&gt;
 .&lt;br /&gt;
 On Debian systems, a copy of the Creative Commons Zero license, version 1.0&lt;br /&gt;
 can be found in /usr/share/common-licenses/CC0-1.0.&lt;br /&gt;
&lt;br /&gt;
License: CC-BY-SA-4.0&lt;br /&gt;
 http://creativecommons.org/licenses/by-sa/4.0/&lt;br /&gt;
 .&lt;br /&gt;
 Attribution-ShareAlike 4.0 International&lt;br /&gt;
 .&lt;br /&gt;
 =======================================================================&lt;br /&gt;
 .&lt;br /&gt;
 Creative Commons Corporation (&amp;quot;Creative Commons&amp;quot;) is not a law firm and&lt;br /&gt;
 does not provide legal services or legal advice. Distribution of&lt;br /&gt;
 Creative Commons public licenses does not create a lawyer-client or&lt;br /&gt;
 other relationship. Creative Commons makes its licenses and related&lt;br /&gt;
 information available on an &amp;quot;as-is&amp;quot; basis. Creative Commons gives no&lt;br /&gt;
 warranties regarding its licenses, any material licensed under their&lt;br /&gt;
 terms and conditions, or any related information. Creative Commons&lt;br /&gt;
 disclaims all liability for damages resulting from their use to the&lt;br /&gt;
 fullest extent possible.&lt;br /&gt;
 .&lt;br /&gt;
 Using Creative Commons Public Licenses&lt;br /&gt;
 .&lt;br /&gt;
 Creative Commons public licenses provide a standard set of terms and&lt;br /&gt;
 conditions that creators and other rights holders may use to share&lt;br /&gt;
 original works of authorship and other material subject to copyright&lt;br /&gt;
 and certain other rights specified in the public license below. The&lt;br /&gt;
 following considerations are for informational purposes only, are not&lt;br /&gt;
 exhaustive, and do not form part of our licenses.&lt;br /&gt;
 .&lt;br /&gt;
	  Considerations for licensors: Our public licenses are&lt;br /&gt;
	  intended for use by those authorized to give the public&lt;br /&gt;
	  permission to use material in ways otherwise restricted by&lt;br /&gt;
	  copyright and certain other rights. Our licenses are&lt;br /&gt;
	  irrevocable. Licensors should read and understand the terms&lt;br /&gt;
	  and conditions of the license they choose before applying it.&lt;br /&gt;
	  Licensors should also secure all rights necessary before&lt;br /&gt;
	  applying our licenses so that the public can reuse the&lt;br /&gt;
	  material as expected. Licensors should clearly mark any&lt;br /&gt;
	  material not subject to the license. This includes other CC-&lt;br /&gt;
	  licensed material, or material used under an exception or&lt;br /&gt;
	  limitation to copyright. More considerations for licensors:&lt;br /&gt;
	  wiki.creativecommons.org/Considerations_for_licensors&lt;br /&gt;
 .&lt;br /&gt;
	  Considerations for the public: By using one of our public&lt;br /&gt;
	  licenses, a licensor grants the public permission to use the&lt;br /&gt;
	  licensed material under specified terms and conditions. If&lt;br /&gt;
	  the licensor&#039;s permission is not necessary for any reason--for&lt;br /&gt;
	  example, because of any applicable exception or limitation to&lt;br /&gt;
	  copyright--then that use is not regulated by the license. Our&lt;br /&gt;
	  licenses grant only permissions under copyright and certain&lt;br /&gt;
	  other rights that a licensor has authority to grant. Use of&lt;br /&gt;
	  the licensed material may still be restricted for other&lt;br /&gt;
	  reasons, including because others have copyright or other&lt;br /&gt;
	  rights in the material. A licensor may make special requests,&lt;br /&gt;
	  such as asking that all changes be marked or described.&lt;br /&gt;
	  Although not required by our licenses, you are encouraged to&lt;br /&gt;
	  respect those requests where reasonable. More_considerations&lt;br /&gt;
	  for the public:&lt;br /&gt;
	  wiki.creativecommons.org/Considerations_for_licensees&lt;br /&gt;
 .&lt;br /&gt;
 =======================================================================&lt;br /&gt;
 .&lt;br /&gt;
 Creative Commons Attribution-ShareAlike 4.0 International Public&lt;br /&gt;
 License&lt;br /&gt;
 .&lt;br /&gt;
 By exercising the Licensed Rights (defined below), You accept and agree&lt;br /&gt;
 to be bound by the terms and conditions of this Creative Commons&lt;br /&gt;
 Attribution-ShareAlike 4.0 International Public License (&amp;quot;Public&lt;br /&gt;
 License&amp;quot;). To the extent this Public License may be interpreted as a&lt;br /&gt;
 contract, You are granted the Licensed Rights in consideration of Your&lt;br /&gt;
 acceptance of these terms and conditions, and the Licensor grants You&lt;br /&gt;
 such rights in consideration of benefits the Licensor receives from&lt;br /&gt;
 making the Licensed Material available under these terms and&lt;br /&gt;
 conditions.&lt;br /&gt;
 .&lt;br /&gt;
 .&lt;br /&gt;
 Section 1 -- Definitions.&lt;br /&gt;
 .&lt;br /&gt;
   a. Adapted Material means material subject to Copyright and Similar&lt;br /&gt;
	  Rights that is derived from or based upon the Licensed Material&lt;br /&gt;
	  and in which the Licensed Material is translated, altered,&lt;br /&gt;
	  arranged, transformed, or otherwise modified in a manner requiring&lt;br /&gt;
	  permission under the Copyright and Similar Rights held by the&lt;br /&gt;
	  Licensor. For purposes of this Public License, where the Licensed&lt;br /&gt;
	  Material is a musical work, performance, or sound recording,&lt;br /&gt;
	  Adapted Material is always produced where the Licensed Material is&lt;br /&gt;
	  synched in timed relation with a moving image.&lt;br /&gt;
 .&lt;br /&gt;
   b. Adapter&#039;s License means the license You apply to Your Copyright&lt;br /&gt;
	  and Similar Rights in Your contributions to Adapted Material in&lt;br /&gt;
	  accordance with the terms and conditions of this Public License.&lt;br /&gt;
 .&lt;br /&gt;
   c. BY-SA Compatible License means a license listed at&lt;br /&gt;
	  creativecommons.org/compatiblelicenses, approved by Creative&lt;br /&gt;
	  Commons as essentially the equivalent of this Public License.&lt;br /&gt;
 .&lt;br /&gt;
   d. Copyright and Similar Rights means copyright and/or similar rights&lt;br /&gt;
	  closely related to copyright including, without limitation,&lt;br /&gt;
	  performance, broadcast, sound recording, and Sui Generis Database&lt;br /&gt;
	  Rights, without regard to how the rights are labeled or&lt;br /&gt;
	  categorized. For purposes of this Public License, the rights&lt;br /&gt;
	  specified in Section 2(b)(1)-(2) are not Copyright and Similar&lt;br /&gt;
	  Rights.&lt;br /&gt;
 .&lt;br /&gt;
   e. Effective Technological Measures means those measures that, in the&lt;br /&gt;
	  absence of proper authority, may not be circumvented under laws&lt;br /&gt;
	  fulfilling obligations under Article 11 of the WIPO Copyright&lt;br /&gt;
	  Treaty adopted on December 20, 1996, and/or similar international&lt;br /&gt;
	  agreements.&lt;br /&gt;
 .&lt;br /&gt;
   f. Exceptions and Limitations means fair use, fair dealing, and/or&lt;br /&gt;
	  any other exception or limitation to Copyright and Similar Rights&lt;br /&gt;
	  that applies to Your use of the Licensed Material.&lt;br /&gt;
 .&lt;br /&gt;
   g. License Elements means the license attributes listed in the name&lt;br /&gt;
	  of a Creative Commons Public License. The License Elements of this&lt;br /&gt;
	  Public License are Attribution and ShareAlike.&lt;br /&gt;
 .&lt;br /&gt;
   h. Licensed Material means the artistic or literary work, database,&lt;br /&gt;
	  or other material to which the Licensor applied this Public&lt;br /&gt;
	  License.&lt;br /&gt;
 .&lt;br /&gt;
   i. Licensed Rights means the rights granted to You subject to the&lt;br /&gt;
	  terms and conditions of this Public License, which are limited to&lt;br /&gt;
	  all Copyright and Similar Rights that apply to Your use of the&lt;br /&gt;
	  Licensed Material and that the Licensor has authority to license.&lt;br /&gt;
 .&lt;br /&gt;
   j. Licensor means the individual(s) or entity(ies) granting rights&lt;br /&gt;
	  under this Public License.&lt;br /&gt;
 .&lt;br /&gt;
   k. Share means to provide material to the public by any means or&lt;br /&gt;
	  process that requires permission under the Licensed Rights, such&lt;br /&gt;
	  as reproduction, public display, public performance, distribution,&lt;br /&gt;
	  dissemination, communication, or importation, and to make material&lt;br /&gt;
	  available to the public including in ways that members of the&lt;br /&gt;
	  public may access the material from a place and at a time&lt;br /&gt;
	  individually chosen by them.&lt;br /&gt;
 .&lt;br /&gt;
   l. Sui Generis Database Rights means rights other than copyright&lt;br /&gt;
	  resulting from Directive 96/9/EC of the European Parliament and of&lt;br /&gt;
	  the Council of 11 March 1996 on the legal protection of databases,&lt;br /&gt;
	  as amended and/or succeeded, as well as other essentially&lt;br /&gt;
	  equivalent rights anywhere in the world.&lt;br /&gt;
 .&lt;br /&gt;
   m. You means the individual or entity exercising the Licensed Rights&lt;br /&gt;
	  under this Public License. Your has a corresponding meaning.&lt;br /&gt;
 .&lt;br /&gt;
 .&lt;br /&gt;
 Section 2 -- Scope.&lt;br /&gt;
 .&lt;br /&gt;
   a. License grant.&lt;br /&gt;
 .&lt;br /&gt;
		1. Subject to the terms and conditions of this Public License,&lt;br /&gt;
		   the Licensor hereby grants You a worldwide, royalty-free,&lt;br /&gt;
		   non-sublicensable, non-exclusive, irrevocable license to&lt;br /&gt;
		   exercise the Licensed Rights in the Licensed Material to:&lt;br /&gt;
 .&lt;br /&gt;
			 a. reproduce and Share the Licensed Material, in whole or&lt;br /&gt;
				in part; and&lt;br /&gt;
 .&lt;br /&gt;
			 b. produce, reproduce, and Share Adapted Material.&lt;br /&gt;
 .&lt;br /&gt;
		2. Exceptions and Limitations. For the avoidance of doubt, where&lt;br /&gt;
		   Exceptions and Limitations apply to Your use, this Public&lt;br /&gt;
		   License does not apply, and You do not need to comply with&lt;br /&gt;
		   its terms and conditions.&lt;br /&gt;
 .&lt;br /&gt;
		3. Term. The term of this Public License is specified in Section&lt;br /&gt;
		   6(a).&lt;br /&gt;
 .&lt;br /&gt;
		4. Media and formats; technical modifications allowed. The&lt;br /&gt;
		   Licensor authorizes You to exercise the Licensed Rights in&lt;br /&gt;
		   all media and formats whether now known or hereafter created,&lt;br /&gt;
		   and to make technical modifications necessary to do so. The&lt;br /&gt;
		   Licensor waives and/or agrees not to assert any right or&lt;br /&gt;
		   authority to forbid You from making technical modifications&lt;br /&gt;
		   necessary to exercise the Licensed Rights, including&lt;br /&gt;
		   technical modifications necessary to circumvent Effective&lt;br /&gt;
		   Technological Measures. For purposes of this Public License,&lt;br /&gt;
		   simply making modifications authorized by this Section 2(a)&lt;br /&gt;
		   (4) never produces Adapted Material.&lt;br /&gt;
 .&lt;br /&gt;
		5. Downstream recipients.&lt;br /&gt;
 .&lt;br /&gt;
			 a. Offer from the Licensor -- Licensed Material. Every&lt;br /&gt;
				recipient of the Licensed Material automatically&lt;br /&gt;
				receives an offer from the Licensor to exercise the&lt;br /&gt;
				Licensed Rights under the terms and conditions of this&lt;br /&gt;
				Public License.&lt;br /&gt;
 .&lt;br /&gt;
			 b. Additional offer from the Licensor -- Adapted Material.&lt;br /&gt;
				Every recipient of Adapted Material from You&lt;br /&gt;
				automatically receives an offer from the Licensor to&lt;br /&gt;
				exercise the Licensed Rights in the Adapted Material&lt;br /&gt;
				under the conditions of the Adapter&#039;s License You apply.&lt;br /&gt;
 .&lt;br /&gt;
			 c. No downstream restrictions. You may not offer or impose&lt;br /&gt;
				any additional or different terms or conditions on, or&lt;br /&gt;
				apply any Effective Technological Measures to, the&lt;br /&gt;
				Licensed Material if doing so restricts exercise of the&lt;br /&gt;
				Licensed Rights by any recipient of the Licensed&lt;br /&gt;
				Material.&lt;br /&gt;
 .&lt;br /&gt;
		6. No endorsement. Nothing in this Public License constitutes or&lt;br /&gt;
		   may be construed as permission to assert or imply that You&lt;br /&gt;
		   are, or that Your use of the Licensed Material is, connected&lt;br /&gt;
		   with, or sponsored, endorsed, or granted official status by,&lt;br /&gt;
		   the Licensor or others designated to receive attribution as&lt;br /&gt;
		   provided in Section 3(a)(1)(A)(i).&lt;br /&gt;
 .&lt;br /&gt;
   b. Other rights.&lt;br /&gt;
 .&lt;br /&gt;
		1. Moral rights, such as the right of integrity, are not&lt;br /&gt;
		   licensed under this Public License, nor are publicity,&lt;br /&gt;
		   privacy, and/or other similar personality rights; however, to&lt;br /&gt;
		   the extent possible, the Licensor waives and/or agrees not to&lt;br /&gt;
		   assert any such rights held by the Licensor to the limited&lt;br /&gt;
		   extent necessary to allow You to exercise the Licensed&lt;br /&gt;
		   Rights, but not otherwise.&lt;br /&gt;
 .&lt;br /&gt;
		2. Patent and trademark rights are not licensed under this&lt;br /&gt;
		   Public License.&lt;br /&gt;
 .&lt;br /&gt;
		3. To the extent possible, the Licensor waives any right to&lt;br /&gt;
		   collect royalties from You for the exercise of the Licensed&lt;br /&gt;
		   Rights, whether directly or through a collecting society&lt;br /&gt;
		   under any voluntary or waivable statutory or compulsory&lt;br /&gt;
		   licensing scheme. In all other cases the Licensor expressly&lt;br /&gt;
		   reserves any right to collect such royalties.&lt;br /&gt;
 .&lt;br /&gt;
 .&lt;br /&gt;
 Section 3 -- License Conditions.&lt;br /&gt;
 .&lt;br /&gt;
 Your exercise of the Licensed Rights is expressly made subject to the&lt;br /&gt;
 following conditions.&lt;br /&gt;
 .&lt;br /&gt;
   a. Attribution.&lt;br /&gt;
 .&lt;br /&gt;
		1. If You Share the Licensed Material (including in modified&lt;br /&gt;
		   form), You must:&lt;br /&gt;
 .&lt;br /&gt;
			 a. retain the following if it is supplied by the Licensor&lt;br /&gt;
				with the Licensed Material:&lt;br /&gt;
 .&lt;br /&gt;
				  i. identification of the creator(s) of the Licensed&lt;br /&gt;
					 Material and any others designated to receive&lt;br /&gt;
					 attribution, in any reasonable manner requested by&lt;br /&gt;
					 the Licensor (including by pseudonym if&lt;br /&gt;
					 designated);&lt;br /&gt;
 .&lt;br /&gt;
				 ii. a copyright notice;&lt;br /&gt;
 .&lt;br /&gt;
				iii. a notice that refers to this Public License;&lt;br /&gt;
 .&lt;br /&gt;
				 iv. a notice that refers to the disclaimer of&lt;br /&gt;
					 warranties;&lt;br /&gt;
 .&lt;br /&gt;
				  v. a URI or hyperlink to the Licensed Material to the&lt;br /&gt;
					 extent reasonably practicable;&lt;br /&gt;
 .&lt;br /&gt;
			 b. indicate if You modified the Licensed Material and&lt;br /&gt;
				retain an indication of any previous modifications; and&lt;br /&gt;
 .&lt;br /&gt;
			 c. indicate the Licensed Material is licensed under this&lt;br /&gt;
				Public License, and include the text of, or the URI or&lt;br /&gt;
				hyperlink to, this Public License.&lt;br /&gt;
 .&lt;br /&gt;
		2. You may satisfy the conditions in Section 3(a)(1) in any&lt;br /&gt;
		   reasonable manner based on the medium, means, and context in&lt;br /&gt;
		   which You Share the Licensed Material. For example, it may be&lt;br /&gt;
		   reasonable to satisfy the conditions by providing a URI or&lt;br /&gt;
		   hyperlink to a resource that includes the required&lt;br /&gt;
		   information.&lt;br /&gt;
 .&lt;br /&gt;
		3. If requested by the Licensor, You must remove any of the&lt;br /&gt;
		   information required by Section 3(a)(1)(A) to the extent&lt;br /&gt;
		   reasonably practicable.&lt;br /&gt;
 .&lt;br /&gt;
   b. ShareAlike.&lt;br /&gt;
 .&lt;br /&gt;
	  In addition to the conditions in Section 3(a), if You Share&lt;br /&gt;
	  Adapted Material You produce, the following conditions also apply.&lt;br /&gt;
 .&lt;br /&gt;
		1. The Adapter&#039;s License You apply must be a Creative Commons&lt;br /&gt;
		   license with the same License Elements, this version or&lt;br /&gt;
		   later, or a BY-SA Compatible License.&lt;br /&gt;
 .&lt;br /&gt;
		2. You must include the text of, or the URI or hyperlink to, the&lt;br /&gt;
		   Adapter&#039;s License You apply. You may satisfy this condition&lt;br /&gt;
		   in any reasonable manner based on the medium, means, and&lt;br /&gt;
		   context in which You Share Adapted Material.&lt;br /&gt;
 .&lt;br /&gt;
		3. You may not offer or impose any additional or different terms&lt;br /&gt;
		   or conditions on, or apply any Effective Technological&lt;br /&gt;
		   Measures to, Adapted Material that restrict exercise of the&lt;br /&gt;
		   rights granted under the Adapter&#039;s License You apply.&lt;br /&gt;
 .&lt;br /&gt;
 .&lt;br /&gt;
 Section 4 -- Sui Generis Database Rights.&lt;br /&gt;
 .&lt;br /&gt;
 Where the Licensed Rights include Sui Generis Database Rights that&lt;br /&gt;
 apply to Your use of the Licensed Material:&lt;br /&gt;
 .&lt;br /&gt;
   a. for the avoidance of doubt, Section 2(a)(1) grants You the right&lt;br /&gt;
	  to extract, reuse, reproduce, and Share all or a substantial&lt;br /&gt;
	  portion of the contents of the database;&lt;br /&gt;
 .&lt;br /&gt;
   b. if You include all or a substantial portion of the database&lt;br /&gt;
	  contents in a database in which You have Sui Generis Database&lt;br /&gt;
	  Rights, then the database in which You have Sui Generis Database&lt;br /&gt;
	  Rights (but not its individual contents) is Adapted Material,&lt;br /&gt;
 .&lt;br /&gt;
	  including for purposes of Section 3(b); and&lt;br /&gt;
   c. You must comply with the conditions in Section 3(a) if You Share&lt;br /&gt;
	  all or a substantial portion of the contents of the database.&lt;br /&gt;
 .&lt;br /&gt;
 For the avoidance of doubt, this Section 4 supplements and does not&lt;br /&gt;
 replace Your obligations under this Public License where the Licensed&lt;br /&gt;
 Rights include other Copyright and Similar Rights.&lt;br /&gt;
 .&lt;br /&gt;
 .&lt;br /&gt;
 Section 5 -- Disclaimer of Warranties and Limitation of Liability.&lt;br /&gt;
 .&lt;br /&gt;
   a. UNLESS OTHERWISE SEPARATELY UNDERTAKEN BY THE LICENSOR, TO THE&lt;br /&gt;
	  EXTENT POSSIBLE, THE LICENSOR OFFERS THE LICENSED MATERIAL AS-IS&lt;br /&gt;
	  AND AS-AVAILABLE, AND MAKES NO REPRESENTATIONS OR WARRANTIES OF&lt;br /&gt;
	  ANY KIND CONCERNING THE LICENSED MATERIAL, WHETHER EXPRESS,&lt;br /&gt;
	  IMPLIED, STATUTORY, OR OTHER. THIS INCLUDES, WITHOUT LIMITATION,&lt;br /&gt;
	  WARRANTIES OF TITLE, MERCHANTABILITY, FITNESS FOR A PARTICULAR&lt;br /&gt;
	  PURPOSE, NON-INFRINGEMENT, ABSENCE OF LATENT OR OTHER DEFECTS,&lt;br /&gt;
	  ACCURACY, OR THE PRESENCE OR ABSENCE OF ERRORS, WHETHER OR NOT&lt;br /&gt;
	  KNOWN OR DISCOVERABLE. WHERE DISCLAIMERS OF WARRANTIES ARE NOT&lt;br /&gt;
	  ALLOWED IN FULL OR IN PART, THIS DISCLAIMER MAY NOT APPLY TO YOU.&lt;br /&gt;
 .&lt;br /&gt;
   b. TO THE EXTENT POSSIBLE, IN NO EVENT WILL THE LICENSOR BE LIABLE&lt;br /&gt;
	  TO YOU ON ANY LEGAL THEORY (INCLUDING, WITHOUT LIMITATION,&lt;br /&gt;
	  NEGLIGENCE) OR OTHERWISE FOR ANY DIRECT, SPECIAL, INDIRECT,&lt;br /&gt;
	  INCIDENTAL, CONSEQUENTIAL, PUNITIVE, EXEMPLARY, OR OTHER LOSSES,&lt;br /&gt;
	  COSTS, EXPENSES, OR DAMAGES ARISING OUT OF THIS PUBLIC LICENSE OR&lt;br /&gt;
	  USE OF THE LICENSED MATERIAL, EVEN IF THE LICENSOR HAS BEEN&lt;br /&gt;
	  ADVISED OF THE POSSIBILITY OF SUCH LOSSES, COSTS, EXPENSES, OR&lt;br /&gt;
	  DAMAGES. WHERE A LIMITATION OF LIABILITY IS NOT ALLOWED IN FULL OR&lt;br /&gt;
	  IN PART, THIS LIMITATION MAY NOT APPLY TO YOU.&lt;br /&gt;
 .&lt;br /&gt;
   c. The disclaimer of warranties and limitation of liability provided&lt;br /&gt;
	  above shall be interpreted in a manner that, to the extent&lt;br /&gt;
	  possible, most closely approximates an absolute disclaimer and&lt;br /&gt;
	  waiver of all liability.&lt;br /&gt;
 .&lt;br /&gt;
 .&lt;br /&gt;
 Section 6 -- Term and Termination.&lt;br /&gt;
 .&lt;br /&gt;
   a. This Public License applies for the term of the Copyright and&lt;br /&gt;
	  Similar Rights licensed here. However, if You fail to comply with&lt;br /&gt;
	  this Public License, then Your rights under this Public License&lt;br /&gt;
	  terminate automatically.&lt;br /&gt;
 .&lt;br /&gt;
   b. Where Your right to use the Licensed Material has terminated under&lt;br /&gt;
	  Section 6(a), it reinstates:&lt;br /&gt;
 .&lt;br /&gt;
		1. automatically as of the date the violation is cured, provided&lt;br /&gt;
		   it is cured within 30 days of Your discovery of the&lt;br /&gt;
		   violation; or&lt;br /&gt;
 .&lt;br /&gt;
		2. upon express reinstatement by the Licensor.&lt;br /&gt;
 .&lt;br /&gt;
	  For the avoidance of doubt, this Section 6(b) does not affect any&lt;br /&gt;
	  right the Licensor may have to seek remedies for Your violations&lt;br /&gt;
	  of this Public License.&lt;br /&gt;
 .&lt;br /&gt;
   c. For the avoidance of doubt, the Licensor may also offer the&lt;br /&gt;
	  Licensed Material under separate terms or conditions or stop&lt;br /&gt;
	  distributing the Licensed Material at any time; however, doing so&lt;br /&gt;
	  will not terminate this Public License.&lt;br /&gt;
 .&lt;br /&gt;
   d. Sections 1, 5, 6, 7, and 8 survive termination of this Public&lt;br /&gt;
	  License.&lt;br /&gt;
 .&lt;br /&gt;
 .&lt;br /&gt;
 Section 7 -- Other Terms and Conditions.&lt;br /&gt;
 .&lt;br /&gt;
   a. The Licensor shall not be bound by any additional or different&lt;br /&gt;
	  terms or conditions communicated by You unless expressly agreed.&lt;br /&gt;
 .&lt;br /&gt;
   b. Any arrangements, understandings, or agreements regarding the&lt;br /&gt;
	  Licensed Material not stated herein are separate from and&lt;br /&gt;
	  independent of the terms and conditions of this Public License.&lt;br /&gt;
 .&lt;br /&gt;
 .&lt;br /&gt;
 Section 8 -- Interpretation.&lt;br /&gt;
 .&lt;br /&gt;
   a. For the avoidance of doubt, this Public License does not, and&lt;br /&gt;
	  shall not be interpreted to, reduce, limit, restrict, or impose&lt;br /&gt;
	  conditions on any use of the Licensed Material that could lawfully&lt;br /&gt;
	  be made without permission under this Public License.&lt;br /&gt;
 .&lt;br /&gt;
   b. To the extent possible, if any provision of this Public License is&lt;br /&gt;
	  deemed unenforceable, it shall be automatically reformed to the&lt;br /&gt;
	  minimum extent necessary to make it enforceable. If the provision&lt;br /&gt;
	  cannot be reformed, it shall be severed from this Public License&lt;br /&gt;
	  without affecting the enforceability of the remaining terms and&lt;br /&gt;
	  conditions.&lt;br /&gt;
 .&lt;br /&gt;
   c. No term or condition of this Public License will be waived and no&lt;br /&gt;
	  failure to comply consented to unless expressly agreed to by the&lt;br /&gt;
	  Licensor.&lt;br /&gt;
 .&lt;br /&gt;
   d. Nothing in this Public License constitutes or may be interpreted&lt;br /&gt;
	  as a limitation upon, or waiver of, any privileges and immunities&lt;br /&gt;
	  that apply to the Licensor or You, including from the legal&lt;br /&gt;
	  processes of any jurisdiction or authority.&lt;br /&gt;
 .&lt;br /&gt;
 .&lt;br /&gt;
 =======================================================================&lt;br /&gt;
 .&lt;br /&gt;
 Creative Commons is not a party to its public&lt;br /&gt;
 licenses. Notwithstanding, Creative Commons may elect to apply one of&lt;br /&gt;
 its public licenses to material it publishes and in those instances&lt;br /&gt;
 will be considered the “Licensor.” The text of the Creative Commons&lt;br /&gt;
 public licenses is dedicated to the public domain under the CC0 Public&lt;br /&gt;
 Domain Dedication. Except for the limited purpose of indicating that&lt;br /&gt;
 material is shared under a Creative Commons public license or as&lt;br /&gt;
 otherwise permitted by the Creative Commons policies published at&lt;br /&gt;
 creativecommons.org/policies, Creative Commons does not authorize the&lt;br /&gt;
 use of the trademark &amp;quot;Creative Commons&amp;quot; or any other trademark or logo&lt;br /&gt;
 of Creative Commons without its prior written consent including,&lt;br /&gt;
 without limitation, in connection with any unauthorized modifications&lt;br /&gt;
 to any of its public licenses or any other arrangements,&lt;br /&gt;
 understandings, or agreements concerning use of licensed material. For&lt;br /&gt;
 the avoidance of doubt, this paragraph does not form part of the&lt;br /&gt;
 public licenses.&lt;br /&gt;
 .&lt;br /&gt;
 Creative Commons may be contacted at creativecommons.org.&lt;br /&gt;
&lt;br /&gt;
License: GPL-3+&lt;br /&gt;
 This package is free software; you can redistribute it and/or modify&lt;br /&gt;
 it under the terms of the GNU General Public License as published by&lt;br /&gt;
 the Free Software Foundation; either version 3 of the License, or&lt;br /&gt;
 (at your option) any later version.&lt;br /&gt;
 .&lt;br /&gt;
 This package is distributed in the hope that it will be useful,&lt;br /&gt;
 but WITHOUT ANY WARRANTY; without even the implied warranty of&lt;br /&gt;
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the&lt;br /&gt;
 GNU General Public License for more details.&lt;br /&gt;
 .&lt;br /&gt;
 You should have received a copy of the GNU General Public License&lt;br /&gt;
 along with this program. If not, see &amp;lt;https://www.gnu.org/licenses/&amp;gt;&lt;br /&gt;
 .&lt;br /&gt;
 On Debian systems, the complete text of the GNU General&lt;br /&gt;
 Public License version 3 can be found in &amp;quot;/usr/share/common-licenses/GPL-3&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
License: LGPL-2.1+&lt;br /&gt;
 This library is free software; you can redistribute it and/or&lt;br /&gt;
 modify it under the terms of the GNU Lesser General Public&lt;br /&gt;
 License as published by the Free Software Foundation; either&lt;br /&gt;
 version 2.1 of the License, or (at your option) any later version.&lt;br /&gt;
 .&lt;br /&gt;
 This library is distributed in the hope that it will be useful,&lt;br /&gt;
 but WITHOUT ANY WARRANTY; without even the implied warranty of&lt;br /&gt;
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU&lt;br /&gt;
 Lesser General Public License for more details.&lt;br /&gt;
 .&lt;br /&gt;
 You should have received a copy of the GNU Lesser General Public License&lt;br /&gt;
 along with this library. If not, see &amp;lt;https://www.gnu.org/licenses/&amp;gt;&lt;br /&gt;
 .&lt;br /&gt;
 On Debian systems, the complete text of the GNU Lesser General&lt;br /&gt;
 Public License version 3 can be found in &amp;quot;/usr/share/common-licenses/LGPL-2.1&amp;quot;.&lt;br /&gt;
user@disp4360:/usr/share/doc$ &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## that&#039;s a big annoying, but I guess we can live with it&lt;br /&gt;
## they also apparently put a dot (.) on every double-newline in a single indented stanza. I guess that&#039;s to not break the syntax of &amp;quot;two newlines becomes a new stanaza&amp;quot;. So I&#039;ll adopt that for the CERN License snippet.&lt;br /&gt;
## I grepd all the &amp;quot;Files&amp;quot; lines in all the systems, and generated a reasonably complete list of all programming language source files&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Files:&lt;br /&gt;
 *.c *.cpp *.h *.hpp&lt;br /&gt;
 *.py *.pl *.go&lt;br /&gt;
 *.dtd&lt;br /&gt;
 *.html *.css *.js *.xml&lt;br /&gt;
Copyright:&lt;br /&gt;
 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
License: AGPL-3.0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## .dtd came up a few times. something related to gis, I think. I added a few more gis formats&lt;br /&gt;
## per https://docs.qgis.org/3.44/en/docs/user_manual/managing_data_source/supported_data.html&lt;br /&gt;
## and https://gis.stackexchange.com/questions/392708/list-of-data-file-formats-supported-in-qgis-including-read-write-support&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Files:&lt;br /&gt;
 *.c *.cpp *.h *.hpp&lt;br /&gt;
 *.py *.pl *.go&lt;br /&gt;
 *.qix *.dtd *.shp *.shz *.dbf *.shx *.prj *.kml&lt;br /&gt;
 *.html *.css *.js *.xml&lt;br /&gt;
Copyright:&lt;br /&gt;
 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
License: AGPL-3.0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## Another thing I can do is to check some syntax highlighers, which have some logic to auto-detect code syntax based on filename. That would be a great list of code-specific filenames&lt;br /&gt;
### here&#039;s the one we use as a wordpress plugin for eco-libre.org https://wordpress.org/plugins/syntaxhighlighter/&lt;br /&gt;
### code is here https://github.com/Automattic/syntaxhighlighter&lt;br /&gt;
### here&#039;s the block where they map languages to file extensions https://github.com/Automattic/syntaxhighlighter/blob/61fd26c64d019641db143e90e05b0eb9a4a57d62/syntaxhighlighter.php#L181-L246&lt;br /&gt;
### oh crap, those are aliases, not file extensions. maybe I should check something like notepad++ or vim&lt;br /&gt;
### we can get 694 file types from vim with this crazy command https://vi.stackexchange.com/a/14980&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
user@disp4360:/usr/share/vim/vim90$ find syntax ftplugin -iname &#039;*.vim&#039; -exec basename -s .vim {} + | sort -u | wc -l&lt;br /&gt;
694&lt;br /&gt;
user@disp4360:/usr/share/vim/vim90$ &lt;br /&gt;
&lt;br /&gt;
user@disp4360:/usr/share/vim/vim90$ find syntax ftplugin -iname &#039;*.vim&#039; -exec basename -s .vim {} + | sort -u | xargs&lt;br /&gt;
2html 8th a2ps a65 aap abap abaqus abc abel acedb ada aflex ahdl aidl alsaconf amiga aml ampl ant antlr apache apachestyle aptconf arch arduino art asciidoc asm asm68k asmh8300 asn aspperl aspvbs asterisk asteriskvm atlas autodoc autohotkey autoit automake ave avra awk ayacc b baan bash basic bc bdf bib bindzone bitbake blank bsdl bst btm bzl bzr c cabal cabalconfig cabalproject calendar catalog cdl cdrdaoconf cdrtoc cf cfg ch chaiscript change changelog chaskell chatito cheetah chicken chill chordpro cl clean clipper clojure cmake cmod cmusrc cobol coco colortest conaryrecipe conf config confini context context-data-context context-data-interfaces context-data-metafun context-data-tex cpp crm crontab cs csc csdl csh csp css cterm ctrlh cucumber cuda cupl cuplsim cvs cvsrc cweb cynlib cynpp d dart datascript dcd dcl debchangelog debcontrol debcopyright debsources def denyhosts dep3patch desc desktop dictconf dictdconf diff dircolors dirpager diva django dns dnsmasq docbk docbksgml docbkxml dockerfile dosbatch dosini dot doxygen dracula dsl dtd dtml dtrace dts dune dylan dylanintr dylanlid ecd edif editorconfig eiffel elf elinks elixir elm elmfilt erlang eruby esmtprc esqlc esterel eterm euphoria3 euphoria4 eviews exim expect exports falcon fan fasm fdcc fennel fetchmail fgl fish flexwiki focexec form forth fortran foxpro fpcmake framescript freebasic fstab fvwm fvwm2m4 gdb gdmo gdresource gdscript gdshader gedcom gemtext gift git gitattributes gitcommit gitconfig gitignore gitolite gitrebase gitsendemail gkrellmrc gnash gnuplot go godoc gp gpg gprof grads gretl groff groovy group grub gsp gtkrc gvpr gyp haml hamster hare haskell haste hastepreproc hb heex help help_ru hercules hex hgcommit hgcommitDiff hitest hlsplaylist hog hollywood hostconf hostsaccess html htmlcheetah htmldjango htmlm4 htmlos i3config ia64 ibasic icemenu icon idl idlang indent inform initex initng inittab ipfilter ishd iss ist j jal jam jargon java javacc javascript javascriptreact jess jgraph jovial jproperties json jsonc jsonnet jsp julia kconfig kivy kix krl kscript kwt lace latte lc ld ldapconf ldif less lex lftp lhaskell libao lifelines lilo limits liquid lisp lite litestep logcheck loginaccess logindefs logtalk lotos lout lpc lprolog lscript lsl lss lua lynx lyrics m3build m3quake m4 mail mailaliases mailcap make mallard man manconf manual maple markdown masm mason master matlab maxima mel mermaid meson messages mf mgl mgp mib mix mma mmix mmp modconf model modsim3 modula2 modula3 monk moo mp mplayerconf mrxvtrc msidl msmessages msql mupad murphi mush muttrc mysql n1ql named nanorc nasm nastran natural ncf neomuttrc netrc netrw nginx ninja nix nosyntax nqc nroff nsis obj objc objcpp obse ocaml occam octave omnimark opam openroad openscad openvpn opl ora pamconf pamenv papp pascal passwd pbtxt pcap pccts pdf perl pf pfmain php phtml pic pike pilrc pine pinfo plaintex pli plm plp plsql po pod poefilter poke postscr pov povini ppd ppwiz prescribe privoxy procmail progress prolog promela proto protocols ps1 ps1xml psf psl ptcap purifylog pyrex python python2 qb64 qf quake quarto r racc racket radiance raku raml ratpoison rc rcs rcslog readline rebol redif registry rego remind resolv reva rexx rhelp rib rmd rnc rng rnoweb robots routeros rpcgen rpl rrst rst rtf ruby rust samba sas sass sather sbt scala scdoc scheme scilab screen scss sd sdc sdl sed sendpr sensors services setserial sexplib sgml sgmldecl sgmllnx sh sicad sieve sil simula sinda sindacmp sindaout sisu skill sl slang slice slpconf slpreg slpspi slrnrc slrnsc sm smarty smcl smil smith sml snnsnet snnspat snnsres snobol4 solidity solution spec specman spice splint spup spyce sql sqlanywhere sqlforms sqlhana sqlinformix sqlj sqloracle sqr squid squirrel srec srt ssa sshconfig sshdconfig st stata stp strace structurizr sudoers svg svn swayconfig swift swiftgyb syncolor synload syntax sysctl systemd systemverilog tads tags tak takcmp takout tap tar taskdata taskedit tasm tcl tcsh template teraterm terminfo tex texinfo texmf text tf tidy tilde tli tmux toml tpp trasys treetop trustees tsalt tsscl tssgm tssop tt2 tt2html tt2js typescript typescriptcommon typescriptreact uc udevconf udevperm udevrules uil updatedb upstart upstreamdat upstreaminstalllog upstreamlog upstreamrpt usserverlog usw2kagtlog valgrind vb vdf vera verilog verilogams vgrindefs vhdl vim viminfo virata vmasm voscm vrml vroom vsejcl vue wast wdiff wdl web webmacro wget wget2 whitespace winbatch wml wsh wsml wvdial xbl xdefaults xf86conf xhtml xinetd xkb xmath xml xmodmap xpm xpm2 xquery xs xsd xslt xxd yacc yaml z8a zig zimbu zir zsh&lt;br /&gt;
user@disp4360:/usr/share/vim/vim90$ &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
### so I definitely don&#039;t want all of those. for example, .po files are not code.&lt;br /&gt;
## I decided to remove html and css from the list, as those are markup and not code. but js should remain.&lt;br /&gt;
## I reduced the vim list to the following&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
user@disp4360:~$ cat filetypes1.txt &lt;br /&gt;
autohotkey&lt;br /&gt;
automake&lt;br /&gt;
awk&lt;br /&gt;
bash&lt;br /&gt;
basic&lt;br /&gt;
cmake&lt;br /&gt;
cuda&lt;br /&gt;
d&lt;br /&gt;
erlang&lt;br /&gt;
eruby&lt;br /&gt;
haskell&lt;br /&gt;
j&lt;br /&gt;
java&lt;br /&gt;
javacc&lt;br /&gt;
javascript&lt;br /&gt;
javascriptreact&lt;br /&gt;
kivy&lt;br /&gt;
lisp&lt;br /&gt;
lua&lt;br /&gt;
make&lt;br /&gt;
perl&lt;br /&gt;
r&lt;br /&gt;
ruby&lt;br /&gt;
rust&lt;br /&gt;
sh&lt;br /&gt;
swift&lt;br /&gt;
tcl&lt;br /&gt;
typescript&lt;br /&gt;
vb&lt;br /&gt;
zsh&lt;br /&gt;
user@disp4360:~$ &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## fun fact, autohotkey was the first &amp;quot;language&amp;quot; I learned – which I used to script my windows computer to feed my fish and collect their pooped-out gold in some video game, wayy back when I was  kid &amp;amp; before I used Linux. It&#039;s a cool way to automate GUI macros on Windows (which is otherwise a PIA to automate, by (terrible) design.&lt;br /&gt;
## I merged this into our copyright file.  I also added asp.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Files:&lt;br /&gt;
 *.c *.cpp *.h *.hpp *.make *.automake *.cmake&lt;br /&gt;
 *.java *.javacc *.rust&lt;br /&gt;
 *.d *.j *.r&lt;br /&gt;
 *.sh *.bash *.zsh *.awk *.tcl&lt;br /&gt;
 *.py *.python *.python2 *.python3 *.pl *.perl *.kivy&lt;br /&gt;
 *.qix *.dtd *.shp *.shz *.dbf *.shx *.prj *.kml&lt;br /&gt;
 *.php *.js *.javascript *.typescript&lt;br /&gt;
 *.ruby *.eruby *.cuda *.erlang *.lisp *.lua *.haskell *.go&lt;br /&gt;
 *.autohotkey *.basic *.swift *.vb *.asp&lt;br /&gt;
Copyright:&lt;br /&gt;
 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
License: AGPL-3.0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## let&#039;s also add exceptions for the CERN-licensed files&lt;br /&gt;
## I hope we never use tools like AutoCAD, but it&#039;s likely that someone will design something in AutoCAD and copyleft it. Then we&#039;ll be able to use that in one of our projects, but where we redesign it in FreeCAD. In that case, we still might want to include the source AutoCAD DXF file in our repo, and license it properly (though, if that happens, we&#039;d probably need to update the copyright file to whatever license they use; unless they happen to use the same CERN strong license as us)&lt;br /&gt;
## I added scad. And .vue was one from vim.&lt;br /&gt;
## bibliocad lists wg, bim, skp, max, and 3ds https://www.bibliocad.com/&lt;br /&gt;
## I logged into the OSE wiki and checked all of the files that have been uploaded, and I added a few more: 3dm, fcmacro, ino, fzz, gto, blend, kicad_pcb, sh3d, pod, brd, sch, abp, dwb, cc, skb, sldrw, sldasm, pde&lt;br /&gt;
## note that I&#039;ve *not* put stp, gcode, stl, igs, wrl, wrz, etc files as CERN licensed (so they&#039;d be CC). I&#039;m not sure if that&#039;s the right thing or not.&lt;br /&gt;
### also dia, gan, mpp, mm, svg, jpg, png, jpeg, tiff, bmp, ai, idml, psd, mp4, mp3, webm, wav, kdenlive, xcf, doc, docx, ppt, pptx, xls, odt, ods, odg, numbers, tex, zip, rar, 7z, tar.gz, torrent, etc..&lt;br /&gt;
### there was also some ini config files. I read you can&#039;t license config files. so those will be CC.&lt;br /&gt;
# ok, here&#039;s what I got&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/&lt;br /&gt;
Source: https://github.com/Eco-Libre/life-line&lt;br /&gt;
Upstream-Name: Eco-Libre Life-Line&lt;br /&gt;
Upstream-Contact: https://eco-libre.org/contact&lt;br /&gt;
&lt;br /&gt;
Files:&lt;br /&gt;
 *&lt;br /&gt;
Copyright:&lt;br /&gt;
 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
License: CC-BY-SA-4.0&lt;br /&gt;
&lt;br /&gt;
Files:&lt;br /&gt;
 *.FCStd *.scad *.fzz *.blend *.kicad_pcb *.sh3d&lt;br /&gt;
 *.vue *.dxf *.dwg *.bim *.skp *.skb *.max *.3ds *.gto *.pod *.brd&lt;br /&gt;
 *.sch *.3dm *.dwb *.slddrw *.sldasm&lt;br /&gt;
Copyright:&lt;br /&gt;
 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
License: CERN-OHL-S-2.0&lt;br /&gt;
&lt;br /&gt;
Files:&lt;br /&gt;
 *.c *.cpp *.h *.hpp *.cc *.ino *.pde *.make *.automake *.cmake&lt;br /&gt;
 *.java *.javacc *.rust&lt;br /&gt;
 *.d *.j *.r&lt;br /&gt;
 *.sh *.bash *.zsh *.awk *.tcl&lt;br /&gt;
 *.py *.python *.python2 *.python3 *.FCMacro *.pl *.perl *.kivy&lt;br /&gt;
 *.qix *.dtd *.shp *.shz *.dbf *.shx *.prj *.kml&lt;br /&gt;
 *.php *.js *.javascript *.typescript&lt;br /&gt;
 *.ruby *.eruby *.cuda *.erlang *.lisp *.lua *.haskell *.go&lt;br /&gt;
 *.autohotkey *.basic *.swift *.vb *.asp&lt;br /&gt;
Copyright:&lt;br /&gt;
 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
License: AGPL-3.0&lt;br /&gt;
&lt;br /&gt;
License: AGPL-3.0&lt;br /&gt;
 https://www.gnu.org/licenses/agpl-3.0.html&lt;br /&gt;
 .&lt;br /&gt;
 This program is free software: you can redistribute it and/or modify&lt;br /&gt;
 it under the terms of the GNU Affero General Public License as&lt;br /&gt;
 published by the Free Software Foundation, version 3&lt;br /&gt;
 .&lt;br /&gt;
 This program is distributed in the hope that it will be useful,&lt;br /&gt;
 but WITHOUT ANY WARRANTY; without even the implied warranty of&lt;br /&gt;
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the&lt;br /&gt;
 GNU Affero General Public License for more details.&lt;br /&gt;
 .&lt;br /&gt;
 You should have received a copy of the GNU Affero General Public License&lt;br /&gt;
 along with this program.  If not, see &amp;lt;https://www.gnu.org/licenses/&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
License: CERN-OHL-S-2.0&lt;br /&gt;
 https://ohwr.org/cern_ohl_s_v2.txt&lt;br /&gt;
 .&lt;br /&gt;
 You may redistribute and modify this source and make products using &lt;br /&gt;
 it under the terms of the CERN-OHL-S v2 &lt;br /&gt;
 (https://ohwr.org/cern_ohl_s_v2.txt).&lt;br /&gt;
 .&lt;br /&gt;
 This source is distributed WITHOUT ANY EXPRESS OR IMPLIED WARRANTY, &lt;br /&gt;
 INCLUDING OF MERCHANTABILITY, SATISFACTORY QUALITY AND FITNESS FOR A &lt;br /&gt;
 PARTICULAR PURPOSE. Please see the CERN-OHL-S v2 for applicable &lt;br /&gt;
 conditions.&lt;br /&gt;
 .&lt;br /&gt;
 Source location: eco-libre.org/p/&lt;br /&gt;
 .&lt;br /&gt;
 As per CERN-OHL-S v2 section 4, should You produce hardware based on &lt;br /&gt;
 this source, You must where practicable and applicable maintain the &lt;br /&gt;
 Source Location visible (1) on the packaging of the hardware, (2) on &lt;br /&gt;
 the circuit board(s) via silkscreen or copper, (3) in any &lt;br /&gt;
 documentation, and (4) on other products you make using this source.&lt;br /&gt;
&lt;br /&gt;
License: CC-BY-SA-4.0&lt;br /&gt;
 http://creativecommons.org/licenses/by-sa/4.0/&lt;br /&gt;
 .&lt;br /&gt;
 Attribution-ShareAlike 4.0 International&lt;br /&gt;
 .&lt;br /&gt;
 =======================================================================&lt;br /&gt;
 .&lt;br /&gt;
 Creative Commons Corporation (&amp;quot;Creative Commons&amp;quot;) is not a law firm and&lt;br /&gt;
 does not provide legal services or legal advice. Distribution of&lt;br /&gt;
 Creative Commons public licenses does not create a lawyer-client or&lt;br /&gt;
 other relationship. Creative Commons makes its licenses and related&lt;br /&gt;
 information available on an &amp;quot;as-is&amp;quot; basis. Creative Commons gives no&lt;br /&gt;
 warranties regarding its licenses, any material licensed under their&lt;br /&gt;
 terms and conditions, or any related information. Creative Commons&lt;br /&gt;
 disclaims all liability for damages resulting from their use to the&lt;br /&gt;
 fullest extent possible.&lt;br /&gt;
 .&lt;br /&gt;
 Using Creative Commons Public Licenses&lt;br /&gt;
 .&lt;br /&gt;
 Creative Commons public licenses provide a standard set of terms and&lt;br /&gt;
 conditions that creators and other rights holders may use to share&lt;br /&gt;
 original works of authorship and other material subject to copyright&lt;br /&gt;
 and certain other rights specified in the public license below. The&lt;br /&gt;
 following considerations are for informational purposes only, are not&lt;br /&gt;
 exhaustive, and do not form part of our licenses.&lt;br /&gt;
 .&lt;br /&gt;
	  Considerations for licensors: Our public licenses are&lt;br /&gt;
	  intended for use by those authorized to give the public&lt;br /&gt;
	  permission to use material in ways otherwise restricted by&lt;br /&gt;
	  copyright and certain other rights. Our licenses are&lt;br /&gt;
	  irrevocable. Licensors should read and understand the terms&lt;br /&gt;
	  and conditions of the license they choose before applying it.&lt;br /&gt;
	  Licensors should also secure all rights necessary before&lt;br /&gt;
	  applying our licenses so that the public can reuse the&lt;br /&gt;
	  material as expected. Licensors should clearly mark any&lt;br /&gt;
	  material not subject to the license. This includes other CC-&lt;br /&gt;
	  licensed material, or material used under an exception or&lt;br /&gt;
	  limitation to copyright. More considerations for licensors:&lt;br /&gt;
	  wiki.creativecommons.org/Considerations_for_licensors&lt;br /&gt;
 .&lt;br /&gt;
	  Considerations for the public: By using one of our public&lt;br /&gt;
	  licenses, a licensor grants the public permission to use the&lt;br /&gt;
	  licensed material under specified terms and conditions. If&lt;br /&gt;
	  the licensor&#039;s permission is not necessary for any reason--for&lt;br /&gt;
	  example, because of any applicable exception or limitation to&lt;br /&gt;
	  copyright--then that use is not regulated by the license. Our&lt;br /&gt;
	  licenses grant only permissions under copyright and certain&lt;br /&gt;
	  other rights that a licensor has authority to grant. Use of&lt;br /&gt;
	  the licensed material may still be restricted for other&lt;br /&gt;
	  reasons, including because others have copyright or other&lt;br /&gt;
	  rights in the material. A licensor may make special requests,&lt;br /&gt;
	  such as asking that all changes be marked or described.&lt;br /&gt;
	  Although not required by our licenses, you are encouraged to&lt;br /&gt;
	  respect those requests where reasonable. More_considerations&lt;br /&gt;
	  for the public:&lt;br /&gt;
	  wiki.creativecommons.org/Considerations_for_licensees&lt;br /&gt;
 .&lt;br /&gt;
 =======================================================================&lt;br /&gt;
 .&lt;br /&gt;
 Creative Commons Attribution-ShareAlike 4.0 International Public&lt;br /&gt;
 License&lt;br /&gt;
 .&lt;br /&gt;
 By exercising the Licensed Rights (defined below), You accept and agree&lt;br /&gt;
 to be bound by the terms and conditions of this Creative Commons&lt;br /&gt;
 Attribution-ShareAlike 4.0 International Public License (&amp;quot;Public&lt;br /&gt;
 License&amp;quot;). To the extent this Public License may be interpreted as a&lt;br /&gt;
 contract, You are granted the Licensed Rights in consideration of Your&lt;br /&gt;
 acceptance of these terms and conditions, and the Licensor grants You&lt;br /&gt;
 such rights in consideration of benefits the Licensor receives from&lt;br /&gt;
 making the Licensed Material available under these terms and&lt;br /&gt;
 conditions.&lt;br /&gt;
 .&lt;br /&gt;
 .&lt;br /&gt;
 Section 1 -- Definitions.&lt;br /&gt;
 .&lt;br /&gt;
   a. Adapted Material means material subject to Copyright and Similar&lt;br /&gt;
	  Rights that is derived from or based upon the Licensed Material&lt;br /&gt;
	  and in which the Licensed Material is translated, altered,&lt;br /&gt;
	  arranged, transformed, or otherwise modified in a manner requiring&lt;br /&gt;
	  permission under the Copyright and Similar Rights held by the&lt;br /&gt;
	  Licensor. For purposes of this Public License, where the Licensed&lt;br /&gt;
	  Material is a musical work, performance, or sound recording,&lt;br /&gt;
	  Adapted Material is always produced where the Licensed Material is&lt;br /&gt;
	  synched in timed relation with a moving image.&lt;br /&gt;
 .&lt;br /&gt;
   b. Adapter&#039;s License means the license You apply to Your Copyright&lt;br /&gt;
	  and Similar Rights in Your contributions to Adapted Material in&lt;br /&gt;
	  accordance with the terms and conditions of this Public License.&lt;br /&gt;
 .&lt;br /&gt;
   c. BY-SA Compatible License means a license listed at&lt;br /&gt;
	  creativecommons.org/compatiblelicenses, approved by Creative&lt;br /&gt;
	  Commons as essentially the equivalent of this Public License.&lt;br /&gt;
 .&lt;br /&gt;
   d. Copyright and Similar Rights means copyright and/or similar rights&lt;br /&gt;
	  closely related to copyright including, without limitation,&lt;br /&gt;
	  performance, broadcast, sound recording, and Sui Generis Database&lt;br /&gt;
	  Rights, without regard to how the rights are labeled or&lt;br /&gt;
	  categorized. For purposes of this Public License, the rights&lt;br /&gt;
	  specified in Section 2(b)(1)-(2) are not Copyright and Similar&lt;br /&gt;
	  Rights.&lt;br /&gt;
 .&lt;br /&gt;
   e. Effective Technological Measures means those measures that, in the&lt;br /&gt;
	  absence of proper authority, may not be circumvented under laws&lt;br /&gt;
	  fulfilling obligations under Article 11 of the WIPO Copyright&lt;br /&gt;
	  Treaty adopted on December 20, 1996, and/or similar international&lt;br /&gt;
	  agreements.&lt;br /&gt;
 .&lt;br /&gt;
   f. Exceptions and Limitations means fair use, fair dealing, and/or&lt;br /&gt;
	  any other exception or limitation to Copyright and Similar Rights&lt;br /&gt;
	  that applies to Your use of the Licensed Material.&lt;br /&gt;
 .&lt;br /&gt;
   g. License Elements means the license attributes listed in the name&lt;br /&gt;
	  of a Creative Commons Public License. The License Elements of this&lt;br /&gt;
	  Public License are Attribution and ShareAlike.&lt;br /&gt;
 .&lt;br /&gt;
   h. Licensed Material means the artistic or literary work, database,&lt;br /&gt;
	  or other material to which the Licensor applied this Public&lt;br /&gt;
	  License.&lt;br /&gt;
 .&lt;br /&gt;
   i. Licensed Rights means the rights granted to You subject to the&lt;br /&gt;
	  terms and conditions of this Public License, which are limited to&lt;br /&gt;
	  all Copyright and Similar Rights that apply to Your use of the&lt;br /&gt;
	  Licensed Material and that the Licensor has authority to license.&lt;br /&gt;
 .&lt;br /&gt;
   j. Licensor means the individual(s) or entity(ies) granting rights&lt;br /&gt;
	  under this Public License.&lt;br /&gt;
 .&lt;br /&gt;
   k. Share means to provide material to the public by any means or&lt;br /&gt;
	  process that requires permission under the Licensed Rights, such&lt;br /&gt;
	  as reproduction, public display, public performance, distribution,&lt;br /&gt;
	  dissemination, communication, or importation, and to make material&lt;br /&gt;
	  available to the public including in ways that members of the&lt;br /&gt;
	  public may access the material from a place and at a time&lt;br /&gt;
	  individually chosen by them.&lt;br /&gt;
 .&lt;br /&gt;
   l. Sui Generis Database Rights means rights other than copyright&lt;br /&gt;
	  resulting from Directive 96/9/EC of the European Parliament and of&lt;br /&gt;
	  the Council of 11 March 1996 on the legal protection of databases,&lt;br /&gt;
	  as amended and/or succeeded, as well as other essentially&lt;br /&gt;
	  equivalent rights anywhere in the world.&lt;br /&gt;
 .&lt;br /&gt;
   m. You means the individual or entity exercising the Licensed Rights&lt;br /&gt;
	  under this Public License. Your has a corresponding meaning.&lt;br /&gt;
 .&lt;br /&gt;
 .&lt;br /&gt;
 Section 2 -- Scope.&lt;br /&gt;
 .&lt;br /&gt;
   a. License grant.&lt;br /&gt;
 .&lt;br /&gt;
		1. Subject to the terms and conditions of this Public License,&lt;br /&gt;
		   the Licensor hereby grants You a worldwide, royalty-free,&lt;br /&gt;
		   non-sublicensable, non-exclusive, irrevocable license to&lt;br /&gt;
		   exercise the Licensed Rights in the Licensed Material to:&lt;br /&gt;
 .&lt;br /&gt;
			 a. reproduce and Share the Licensed Material, in whole or&lt;br /&gt;
				in part; and&lt;br /&gt;
 .&lt;br /&gt;
			 b. produce, reproduce, and Share Adapted Material.&lt;br /&gt;
 .&lt;br /&gt;
		2. Exceptions and Limitations. For the avoidance of doubt, where&lt;br /&gt;
		   Exceptions and Limitations apply to Your use, this Public&lt;br /&gt;
		   License does not apply, and You do not need to comply with&lt;br /&gt;
		   its terms and conditions.&lt;br /&gt;
 .&lt;br /&gt;
		3. Term. The term of this Public License is specified in Section&lt;br /&gt;
		   6(a).&lt;br /&gt;
 .&lt;br /&gt;
		4. Media and formats; technical modifications allowed. The&lt;br /&gt;
		   Licensor authorizes You to exercise the Licensed Rights in&lt;br /&gt;
		   all media and formats whether now known or hereafter created,&lt;br /&gt;
		   and to make technical modifications necessary to do so. The&lt;br /&gt;
		   Licensor waives and/or agrees not to assert any right or&lt;br /&gt;
		   authority to forbid You from making technical modifications&lt;br /&gt;
		   necessary to exercise the Licensed Rights, including&lt;br /&gt;
		   technical modifications necessary to circumvent Effective&lt;br /&gt;
		   Technological Measures. For purposes of this Public License,&lt;br /&gt;
		   simply making modifications authorized by this Section 2(a)&lt;br /&gt;
		   (4) never produces Adapted Material.&lt;br /&gt;
 .&lt;br /&gt;
		5. Downstream recipients.&lt;br /&gt;
 .&lt;br /&gt;
			 a. Offer from the Licensor -- Licensed Material. Every&lt;br /&gt;
				recipient of the Licensed Material automatically&lt;br /&gt;
				receives an offer from the Licensor to exercise the&lt;br /&gt;
				Licensed Rights under the terms and conditions of this&lt;br /&gt;
				Public License.&lt;br /&gt;
 .&lt;br /&gt;
			 b. Additional offer from the Licensor -- Adapted Material.&lt;br /&gt;
				Every recipient of Adapted Material from You&lt;br /&gt;
				automatically receives an offer from the Licensor to&lt;br /&gt;
				exercise the Licensed Rights in the Adapted Material&lt;br /&gt;
				under the conditions of the Adapter&#039;s License You apply.&lt;br /&gt;
 .&lt;br /&gt;
			 c. No downstream restrictions. You may not offer or impose&lt;br /&gt;
				any additional or different terms or conditions on, or&lt;br /&gt;
				apply any Effective Technological Measures to, the&lt;br /&gt;
				Licensed Material if doing so restricts exercise of the&lt;br /&gt;
				Licensed Rights by any recipient of the Licensed&lt;br /&gt;
				Material.&lt;br /&gt;
 .&lt;br /&gt;
		6. No endorsement. Nothing in this Public License constitutes or&lt;br /&gt;
		   may be construed as permission to assert or imply that You&lt;br /&gt;
		   are, or that Your use of the Licensed Material is, connected&lt;br /&gt;
		   with, or sponsored, endorsed, or granted official status by,&lt;br /&gt;
		   the Licensor or others designated to receiv&lt;br /&gt;
&lt;br /&gt;
= 2026-04-23 =&lt;br /&gt;
# I&#039;ve been thinking about chaning our licensing, to something like this&lt;br /&gt;
## All hardware designs are licened under CERN-OHL-S-2.0 &lt;br /&gt;
## All code is licened under AGPL-3.0&lt;br /&gt;
## Everything else (art, documentation, etc) are CC BY-SA&lt;br /&gt;
# here&#039;s the design rational for the cern license (the s means strongly reciprocal, which is what we want) https://gitlab.com/ohwr/project/cernohl/-/wikis/uploads/0be6f561d2b4a686c5765c74be32daf9/CERN_OHL_rationale.pdf&lt;br /&gt;
# apparently creative commons license aren&#039;t OSI approved — only because they don&#039;t work for sourcecode https://opensource.stackexchange.com/questions/5021/osi-approved-license-similar-to-cc-by-sa-4-0&lt;br /&gt;
## by CC BY-SA (without NC or ND) are recommended by OSHWA for things like art and docs https://oshwa.org/resources/sharing-best-practices/&lt;br /&gt;
## hah, the footer of the OSI website (opensource.org) says that the contents of the website are licened CC BY – even though it&#039;s not OSI approved. That&#039;s a good enough endorsement for me&lt;br /&gt;
# oh, I found a CERN Discourse forum https://forums.ohwr.org/c/cernohl/53&lt;br /&gt;
## I never did get a response from OSHWA from my toot about their recommended CLAs https://chaos.social/@ecolibre/116444933464052302&lt;br /&gt;
## da fuk. the &amp;quot;register&amp;quot; button redirects to gitlab?&lt;br /&gt;
### ugh, it&#039;s some SSO OAuth (OpenID Connect). I don&#039;t trust that&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
OHWR Forum is requesting access to your account on GitLab.com.&lt;br /&gt;
 Make sure you trust OHWR Forum before authorizing.&lt;br /&gt;
&lt;br /&gt;
Vasco Guita added this OAuth application over 1 year ago. You will be redirected to forums.ohwr.org after authorizing.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
### I decllined it, and chose to create a new github account that&#039;s specific to these oshwa forums, and nothing else&lt;br /&gt;
## ok I asked about the triple-licensing here https://forums.ohwr.org/t/possible-to-triple-license-cern-ohl-s-2-0-agpl-3-0-cc-by-sa/849882&lt;br /&gt;
## ugh, the license of the licnese itself is CC BY-ND 4.0 :( https://gitlab.com/ohwr/project/cernohl/-/wikis/faq#q-i-am-using-one-of-variants-of-cern-ohl-v2-what-is-the-licence-of-the-licence-text-itself&lt;br /&gt;
### I have no intention to change it, but it would be nice if we had the abilty to add, idk, footnotes or page numbers or any trivial change if we needed&lt;br /&gt;
# hmm...the faq on the cern license say that it&#039;s *not* compatible with GPL https://gitlab.com/ohwr/project/cernohl/-/wikis/faq#q-is-cern-ohl-s-compatible-with-gpl&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Q: Is CERN-OHL-S compatible with GPL?&lt;br /&gt;
A: No...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## so we can&#039;t just license everything under both, I guess. But we might be able to specify that the hardware designs are CERN and any software is GPL, still&lt;br /&gt;
# here&#039;s a good example usage; they have the full license in LICENSE file, but they also have a &amp;quot;License Notice&amp;quot; section of their README.mde with the following https://github.com/Foundation-Devices/passport-electronics&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
You may redistribute and modify this source and make products using it under the terms of the CERN-OHL-S v2 (https://ohwr.org/cern_ohl_s_v2.txt).&lt;br /&gt;
&lt;br /&gt;
This source is distributed WITHOUT ANY EXPRESS OR IMPLIED WARRANTY, INCLUDING OF MERCHANTABILITY, SATISFACTORY QUALITY AND FITNESS FOR A PARTICULAR PURPOSE. Please see the CERN-OHL-S v2 for applicable conditions.&lt;br /&gt;
&lt;br /&gt;
Source location: foundationdevices.com/passport-electronics&lt;br /&gt;
&lt;br /&gt;
As per CERN-OHL-S v2 section 4, should You produce hardware based on this source, You must where practicable and applicable maintain the Source Location visible (1) on the packaging of the hardware, (2) on the circuit board(s) via silkscreen or copper, (3) in any documentation, and (4) on other products you make using this source.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## I especially like the &amp;quot;Source location&amp;quot; part. We can use https://eco-libre.org/p (which is our &amp;quot;projects&amp;quot; page, indended to have one page per project – each with a *very* short summary, link to the *real* docs (currently on github, but that may change to codeberg – which is why we have this simple project page on our own infra), and a list of articles that are tagged with the project&#039;s name.&lt;br /&gt;
### currently we only have one example for life-line https://www.eco-libre.org/p/life-line/ – but, again, we&#039;d want to just link to eco-libre.org/p/ so we can have a boilerplate copy-pasta for all repo&#039;s README.md files&lt;br /&gt;
# there&#039;s a 6-page guide on how to use the CERN license here https://gitlab.com/ohwr/project/cernohl/-/wikis/uploads/cf37727497ca2b5295a7ab83a40fcf5a/cern_ohl_s_v2_user_guide.pdf&lt;br /&gt;
## cool, they do recommend using git. something I advocated-for (and never really got traction-on) at OSE&lt;br /&gt;
## interesting, they recommend we create a CHANGES file, because the license requires downstream modifications to be clearly documented. And by creating a blank file, it&#039;s where they should write their downstream changes.&lt;br /&gt;
## oh wow, they specifically mention FCStd files. So the writers of this license had FreeCAD in mind. Cool!&lt;br /&gt;
## they reference SPDX standard by resue.software https://reuse.software/tutorial/&lt;br /&gt;
### apparently this is a standardized way to indicate licenses of files that are machine-readable. Because, of course there is a standard for that.&lt;br /&gt;
### interesting, they advocate for a folder LICENSES instead of a file LICENSE. that would be better for us, if we&#039;re using three.&lt;br /&gt;
### ok, apparently SPDX is a distinct product from the Linux Foundation https://spdx.org/&lt;br /&gt;
### they say all of these are valid ways to declare copyright; I like it&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2019 Jane Doe &amp;lt;jane@example.com&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: © 2019 John Doe &amp;lt;john@example.com&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: Contributors to Example Project &amp;lt;https://project.example.com&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Alice Hack and (other) contributors to Project X &amp;lt;https://git.example.com/alicehack/projectx/CONTRIBUTORS.md&amp;gt;&lt;br /&gt;
SPDX-SnippetCopyrightText: (C) Example Cooperative &amp;lt;info@coop.example.com&amp;gt;&lt;br /&gt;
© Example Corporation &amp;lt;https://corp.example.com&amp;gt;&lt;br /&gt;
Copyright 2016, 2018-2019 Joe Anybody&lt;br /&gt;
Copyright (c) Alice, some rights reserved&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
#### I especially like line 4. I think I&#039;d use that. So it would be my name, all contributors, and a link to the Attribution section of the docs&lt;br /&gt;
### they also clarify that the copyright line can omit the year or include a range, the current year, or the original year. I always thought the first year that we did a single commit was best, and they had a link to an article that argues this too. I like that. https://matija.suklje.name/how-and-why-to-properly-write-copyright-statements-in-your-code&lt;br /&gt;
### they have a section on license compatiblity https://reuse.software/faq/#license-compatibility&lt;br /&gt;
#### apparently GPL isn&#039;t compatible with lots of license, because it says you can&#039;t add restrictions to it. that would make it incompatible with CC NC licenses, for example.&lt;br /&gt;
### god, both CERN and reuse.software want us to add comments or a cooresponding &#039;&amp;lt;file&amp;gt;.license&#039; file to *every* file to indicate its license. I was hoping instead that we could just put text that says &amp;quot;hardware files are CERN and software is GPL&amp;quot; but idk if that&#039;ll work :/&lt;br /&gt;
#### they have an &amp;quot;eaiser&amp;quot; method of defining a REUSE.toml file – but that&#039;s per-dir. So I&#039;d have to put all software in one dir and all CAD files in another dir. I guess that would work, but eventually someone will probably break it due to human error and volunteer chaos https://reuse.software/faq/#license-compatibility&lt;br /&gt;
## the faq had said they were going to apply to the FSF, but fsf.org has no mention of the CERN OHL&lt;br /&gt;
### this thread goes into some detail on why they &amp;quot;gave up&amp;quot; on GPL compatibility https://forums.ohwr.org/t/concerns-on-the-impact-of-ohl-on-gpl-community/848400&lt;br /&gt;
#### also some good history on the OHL from Javier Serrano at CERN. He said he gave a presentation on why using GPL was good for hardware, but after the Q&amp;amp;A he realized it wasn&#039;t. That was in 2015 at ORConf.&lt;br /&gt;
#### that thread linked to another cool open hardware forum. GOSH! https://forum.openhardware.science/&lt;br /&gt;
### here&#039;s the thread where CERN applied for OHL to be covered by OSI (which it got) https://lists.opensource.org/pipermail/license-review_lists.opensource.org/2020-June/004892.html&lt;br /&gt;
## back to the usage guide on CERN OHL, they also mention Debian&#039;s DEP5. DEP5 used to be supported by reuse.software, but it was deprecated&lt;br /&gt;
### DEP-5 is another machine-readable copyright/license standard, currently documented here https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/&lt;br /&gt;
#### man, I don&#039;t know which I like better: human-readable legaleze (well, readable only to a subset of superhumans) or machine-readable complexity&lt;br /&gt;
#### they use machine-readable license shortcodes, which are defined by spdx here https://spdx.org/licenses/&lt;br /&gt;
#### so we want&lt;br /&gt;
##### CERN-OHL-S-2.0&lt;br /&gt;
##### AGPL-3.0-or-later&lt;br /&gt;
##### CC-BY-SA-4.0&lt;br /&gt;
#### curiously, only two of the CC licenses are marked as &amp;quot;FSF libre&amp;quot; = CC-BY-4.0 and CC-BY-SA-4.0. None are &amp;quot;OSI Approved&amp;quot; (but see above because OSI uses them for docs!)&lt;br /&gt;
#### hah, cern is the opposite. their 2.0 OHLs are &amp;quot;OSI approved&amp;quot; but not &amp;quot;FSF libre&amp;quot;&lt;br /&gt;
#### the AGPL-3.0-or-later (or -only) is both &amp;quot;OSI approved&amp;quot; *and* &amp;quot;FSF libre&amp;quot; huh&lt;br /&gt;
### anyway, the DEP5 has a similar system to define regex-like globs of files under different licenses&lt;br /&gt;
### the end of the spec includes a &amp;quot;complex&amp;quot; example&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/&lt;br /&gt;
Source: https://www.example.com/code/venus&lt;br /&gt;
Upstream-Name: Planet Venus&lt;br /&gt;
Upstream-Contact: John Doe &amp;lt;jdoe@example.com&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Files:&lt;br /&gt;
 *&lt;br /&gt;
Copyright: 2008, John Doe &amp;lt;jdoe@example.com&amp;gt;&lt;br /&gt;
		   2007, Jane Smith &amp;lt;jsmith@example.org&amp;gt;&lt;br /&gt;
		   2007, Joe Average &amp;lt;joe@example.org&amp;gt;&lt;br /&gt;
		   2007, J. Random User &amp;lt;jr@users.example.com&amp;gt;&lt;br /&gt;
License: PSF-2&lt;br /&gt;
&lt;br /&gt;
Files:&lt;br /&gt;
 debian/*&lt;br /&gt;
Copyright: 2008, Dan Developer &amp;lt;dan@debian.example.com&amp;gt;&lt;br /&gt;
License: permissive&lt;br /&gt;
 Copying and distribution of this package, with or without modification,&lt;br /&gt;
 are permitted in any medium without royalty provided the copyright notice&lt;br /&gt;
 and this notice are preserved.&lt;br /&gt;
&lt;br /&gt;
Files:&lt;br /&gt;
 debian/patches/theme-diveintomark.patch&lt;br /&gt;
Copyright: 2008, Joe Hacker &amp;lt;hack@example.org&amp;gt;&lt;br /&gt;
License: GPL-2+&lt;br /&gt;
&lt;br /&gt;
Files:&lt;br /&gt;
 planet/vendor/compat_logging/*&lt;br /&gt;
Copyright: 2002, Mark Smith &amp;lt;msmith@example.org&amp;gt;&lt;br /&gt;
License: MIT&lt;br /&gt;
 [LICENSE TEXT]&lt;br /&gt;
&lt;br /&gt;
Files:&lt;br /&gt;
 planet/vendor/httplib2/*&lt;br /&gt;
Copyright: 2006, John Brown &amp;lt;brown@example.org&amp;gt;&lt;br /&gt;
License: MIT2&lt;br /&gt;
 Unspecified MIT style license.&lt;br /&gt;
&lt;br /&gt;
Files:&lt;br /&gt;
 planet/vendor/feedparser.py&lt;br /&gt;
Copyright: 2007, Mike Smith &amp;lt;mike@example.org&amp;gt;&lt;br /&gt;
License: PSF-2&lt;br /&gt;
&lt;br /&gt;
Files:&lt;br /&gt;
 planet/vendor/htmltmpl.py&lt;br /&gt;
Copyright: 2004, Thomas Brown &amp;lt;coder@example.org&amp;gt;&lt;br /&gt;
License: GPL-2+&lt;br /&gt;
&lt;br /&gt;
License: PSF-2&lt;br /&gt;
 [LICENSE TEXT]&lt;br /&gt;
&lt;br /&gt;
License: GPL-2+&lt;br /&gt;
 This program is free software; you can redistribute it and/or modify&lt;br /&gt;
 it under the terms of the GNU General Public License as published by&lt;br /&gt;
 the Free Software Foundation; either version 2 of the License, or&lt;br /&gt;
 (at your option) any later version.&lt;br /&gt;
 .&lt;br /&gt;
 This program is distributed in the hope that it will be useful,&lt;br /&gt;
 but WITHOUT ANY WARRANTY; without even the implied warranty of&lt;br /&gt;
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the&lt;br /&gt;
 GNU General Public License for more details.&lt;br /&gt;
 .&lt;br /&gt;
 You should have received a copy of the GNU General Public License&lt;br /&gt;
 along with this package; if not, see &amp;amp;lt;https://www.gnu.org/licenses/&amp;amp;gt;.&lt;br /&gt;
Comment:&lt;br /&gt;
 On Debian systems, the full text of the GNU General Public License&lt;br /&gt;
 version 2 can be found in the file &#039;/usr/share/common-licenses/GPL-2&#039;.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
### I was wondering if I could match all files of a given type at any depth, and it looks like this is accounted-for&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Patterns match pathnames that start at the root of the source tree. Thus, “Makefile.in” matches only the file at the root of the tree, but “*/Makefile.in” matches at any depth.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
### oh, it also says globs include slashes&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Only the wildcards * and ? apply; the former matches any number of characters (including none), the latter a single character. Both match slashes (/) and leading dots, unlike shell globs. The pattern *.in therefore matches any file whose name ends in .in anywhere in the source tree, not just at the top level.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
### so I could do something like&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Files:&lt;br /&gt;
 *&lt;br /&gt;
Copyright: 2023 Michael Altfield and Eco-Libre&lt;br /&gt;
License: CC-BY-SA-4.0&lt;br /&gt;
&lt;br /&gt;
Files:&lt;br /&gt;
 *.FCStd&lt;br /&gt;
Copyright: 2023 Michael Altfield and Eco-Libre&lt;br /&gt;
License: CERN-OHL-S-2.0&lt;br /&gt;
&lt;br /&gt;
Files:&lt;br /&gt;
 *.py&lt;br /&gt;
Copyright: 2023 Michael Altfield and Eco-Libre&lt;br /&gt;
License: AGPL-3.0-or-later&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
### but then it&#039;s not clear which overrrides the others&lt;br /&gt;
### oh, it says the last one that matches applies. So I did that perfect&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Multiple Files stanzas are allowed. The last stanza that matches a particular file applies to it. More general stanzas should therefore be given first, followed by more specific overrides.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
### honestly, that seems like the perfect happy-medium. It&#039;s less to maintain (or for maintainers to screw-up) than .license files everywhere (per REUSE). so it&#039;s more long-term durable. I just need to think of all possible file extensions for code that we&#039;ll use (it&#039;ll be more than just .py files, I&#039;m sure) and hardware files (stl would be CC, so that&#039;s caught by the first one but OpenSCAD could foreseably be one)&lt;br /&gt;
### hmm...I wonder how kdenlive files should be licensed. It&#039;s used to make media, but not the media itself.&lt;br /&gt;
### I asked my question on Stack Exchange too https://opensource.stackexchange.com/questions/15745/possible-to-triple-license-cern-ohl-s-2-0-agpl-3-0-cc-by-sa&lt;br /&gt;
### I also asked about kdenlive files here https://opensource.stackexchange.com/questions/15746/best-libre-license-for-kdenlive-files&lt;br /&gt;
## back to the usage guide of the CERN OHL. they do say you should use the SPDX headers, but that&#039;s REUSE – not DEP5&lt;br /&gt;
## they also recommend adding a &amp;quot;+&amp;quot; for &amp;quot;-or-later&amp;quot;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
CERN-OHL-S-2.0+&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## but I guess I have to place trust in FSF and/or CERN that they won&#039;t become evil and fuck-up future licenses to be not-libre. hmm. imagine if they got bought-out by John Deere.. Yeah, it&#039;s probably better to pin to the current version, and just do the copyright transfer in the CLA. Then we can control the license, and change it if we ever discover some new tech that necessitates changes to a new license&lt;br /&gt;
## for the copyright, they suggest &amp;quot;and others&amp;quot; – that might be better than just &amp;quot;and contributors to Eco-Libre&amp;quot;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Suggestion: You can optionally include a copyright notice to be printed&lt;br /&gt;
on the Product (remember you must keep intact any Notices in the source,&lt;br /&gt;
though). If you do, and your design includes part of other designs, you&lt;br /&gt;
should at least acknowledge the work is not all your own by using e.g.&lt;br /&gt;
Copyright c 2020 Sam Smith and others. In any case, do not include the&lt;br /&gt;
CERN logo.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# well we&#039;ll see if I got any answers on the forums&lt;br /&gt;
# in the meantime, I want to finish my CLA agreements&lt;br /&gt;
# yesterday I made a very slick looking libreoffice document with the individual CLA, but I realized today that it would be better if I could store it in reST and generate the PDF using sphinx or pandoc&lt;br /&gt;
## so, yeah, it would absolutely be better, but I really think I&#039;m letting perfect be the enemy of the good here. I&#039;m already spending weeks just to finish the ConfirmAccount extension on the wiki – just because I didn&#039;t have a Terms of Service, which sent me down this rabbit hole.&lt;br /&gt;
## I&#039;m going to make the reST -&amp;gt; PDF part a TODO. The libreoffice file is currently 64 KB and the PDF is 95 KB. I&#039;ll probably have maybe 4-10x that, as I add a corporate CLA and also some other less-important agreements for volunteers (I agree not to use AI. I agree to follow the CoC. Etc)&lt;br /&gt;
## oh wtf. I finished making the libreoffice for the corporate version of the contract (it&#039;s called &amp;quot;entity&amp;quot;) but the only difference in the file&#039;s contents is literally the subtitle&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Individual Contributor Exclusive License Agreement&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Entity Contributor Exclusive License Agreement&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## I also diff&#039;d the html version, just in-case it was a bug. same thing&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;h2 id=&amp;quot;tmp-subtitle&amp;quot;&amp;gt;&amp;lt;span id=&amp;quot;tmp-contributor-type&amp;quot;&amp;gt;Individual&amp;lt;/span&amp;gt; Contributor &amp;lt;span id=&amp;quot;tmp-contributor-exclusivity-1&amp;quot; class=&amp;quot;tmp-contributor-exclusivity-1&amp;quot;&amp;gt;Exclusive&amp;lt;/span&amp;gt; License Agreement&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;h2 id=&amp;quot;tmp-subtitle&amp;quot;&amp;gt;&amp;lt;span id=&amp;quot;tmp-contributor-type&amp;quot;&amp;gt;Entity&amp;lt;/span&amp;gt; Contributor &amp;lt;span id=&amp;quot;tmp-contributor-exclusivity-1&amp;quot; class=&amp;quot;tmp-contributor-exclusivity-1&amp;quot;&amp;gt;Exclusive&amp;lt;/span&amp;gt; License Agreement&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## maybe there would be differences if I chose a different patent option?&lt;br /&gt;
# idk, but I guess I only need one doc...&lt;br /&gt;
# TODO: finish the CLA docs in LibreOffice, put them on github somewhere, then do the other volunteer agreements, and then sign them myself&lt;br /&gt;
&lt;br /&gt;
= 2026-04-22 =&lt;br /&gt;
# picking up where we left-off yesterday, we&#039;re looking at examples of open-source CLAs&lt;br /&gt;
# Ideally we want a simple one for the wiki an a strong legal one for future volunteers to sign&lt;br /&gt;
# OpenJS has these https://openjsf.org/cla&lt;br /&gt;
## indivdual https://images.prismic.io/openjsf/4c740999-4bd7-4f69-8c4a-b80db0919690_OpenJS-Foundation-ICLA-2020-09-23.pdf&lt;br /&gt;
## corporate https://images.prismic.io/openjsf/7f4dc103-c6cf-41ab-a2e8-42248e8a45f2_OpenJS-Foundation-CCLA-2020-09-23.pdf&lt;br /&gt;
## they say they were made by the Linux Foundation&#039;s EasyCLA tool https://easycla.lfx.linuxfoundation.org/#/&lt;br /&gt;
### oh, we saw that one yesterday; it&#039;s authalled :/&lt;br /&gt;
# CNCF (kubernetes) also uses EasyCLA, which is apparently integrated into GitHub https://github.com/kubernetes/community/blob/main/CLA.md&lt;br /&gt;
# OpenBMC has these two; no idea what the doc&#039;s license is &lt;br /&gt;
## individual https://github.com/kubernetes/community/blob/main/CLA.md&lt;br /&gt;
## corporate https://drive.google.com/file/d/1d-2M8ng_Dl2j1odsvZ8o1QHAdHB-pNSH/edit&lt;br /&gt;
# here&#039;s python&#039;s; the license is unsaid https://www.python.org/psf/contrib/&lt;br /&gt;
# Apollo&#039;s derived its from Apache&#039;s https://contribute.apollographql.com/&lt;br /&gt;
# here&#039;s microsoft&#039;s https://opensource.microsoft.com/cla/&lt;br /&gt;
## actual doc is here; it&#039;s CC0 https://opensource.microsoft.com/pdf/microsoft-contribution-license-agreement.pdf&lt;br /&gt;
## it&#039;s pretty software focused, but I like that it&#039;s licensed openly&lt;br /&gt;
## it&#039;s also only good for individual contributions&lt;br /&gt;
# here&#039;s a short &amp;amp; sweet one by musescore, but it&#039;s not clear how it&#039;s licensed https://musescore.org/en/cla&lt;br /&gt;
# here&#039;s openmediavault&#039;s https://www.openmediavault.org/contributoragreement.html&lt;br /&gt;
## doc is actually here; it&#039;s derived from apache&#039;s CLA https://www.openmediavault.org/wp-content/uploads/2013/12/oca.pdf&lt;br /&gt;
# the link to openstack (openinfra) was bad; looks like they replaced their CLA with the Linux Foundation&#039;s DOC https://www.openmediavault.org/wp-content/uploads/2013/12/oca.pdf&lt;br /&gt;
# puppet uses this CLA Assistant one, based on Apache&#039;s https://cla-assistant.io/puppetlabs/&lt;br /&gt;
# sangoma uses this one, also using CLA Assistant, but it doesn&#039;t mention apache https://web.archive.org/web/20230429235353/https://oss-cla.sangoma.com/asterisk/asterisk&lt;br /&gt;
# the W3C&#039;s looks pretty good, and specifc to them https://www.w3.org/community/about/process/cla/&lt;br /&gt;
## the license isn&#039;t explicilty stated, but the footer says it&#039;s website contents is licensed by, uh, their own &amp;quot;document license - 2023 version&amp;quot; https://www.w3.org/copyright/document-license-2023/&lt;br /&gt;
# here&#039;s one by zed; it&#039;s not clear how the text is licensed https://zed.dev/cla&lt;br /&gt;
# KDE announced theirs here https://ev.kde.org/2008/08/22/2008-08-22-fsfe-welcomes-kde-s-fiduciary-license-agreement/&lt;br /&gt;
## actual doc about the FLA is here https://ev.kde.org/rules/fla/&lt;br /&gt;
## actual doc is here&lt;br /&gt;
### individuals https://ev.kde.org/resources/FLA-2.0-individual.pdf&lt;br /&gt;
### companies https://ev.kde.org/resources/FLA-2.0-entity.pdf&lt;br /&gt;
## they seem pretty good, albeit they&#039;re very focused on software (not hardware)&lt;br /&gt;
## it says it&#039;s based on this https://contributoragreements.org/&lt;br /&gt;
### and that site&#039;s footer says its contents is CC BY-SA 4.0. Perfect.&lt;br /&gt;
## I went through their CLA Chooser generator/wizard https://contributoragreements.org/ca-cla-chooser/#&lt;br /&gt;
# that spat-out two, one for individual and one for corporate&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
	Fiduciary License Agreement 2.0&lt;br /&gt;
	based on the&lt;br /&gt;
	Individual Contributor Exclusive License Agreement&lt;br /&gt;
	(including the Traditional Patent License OPTION)&lt;br /&gt;
&lt;br /&gt;
	Thank you for your interest in contributing to Eco-Libre&#039;s ____________________ (&amp;quot;We&amp;quot; or &amp;quot;Us&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
	The purpose of this contributor agreement (&amp;quot;Agreement&amp;quot;) is to clarify and document the rights granted by contributors to Us. To make this document effective, please follow the instructions at ____________________.&lt;br /&gt;
	Preamble&lt;br /&gt;
&lt;br /&gt;
	Software is deeply embedded in all aspects of our lives and it is important that it empower, rather than restrict us. Free Software gives everybody the rights to use, understand, adapt and share software. These rights help support other fundamental freedoms like freedom of speech, press and privacy.&lt;br /&gt;
&lt;br /&gt;
	Development of Free Software can follow many patterns. In some cases whole development is handled by a sole programmer or a small group of people. But usually, the creation and maintenance of software is a complex process that requires the contribution of many individuals. This also affects who owns the rights to the software. In the latter case, rights in software are owned jointly by a great number of individuals.&lt;br /&gt;
&lt;br /&gt;
	To tackle this issue some projects require a full copyright assignment to be signed by all contributors. The problem with such assignments is that they often lack checks and balances that would protect the contributors from potential abuse of power from the new copyright holder.&lt;br /&gt;
&lt;br /&gt;
	FSFE’s Fiduciary License Agreement (FLA) was created by the Free Software Foundation Europe e.V. with just that in mind – to concentrate all deciding power within one entity and prevent fragmentation of rights on one hand, while on the other preventing that single entity from abusing its power. The main aim is to ensure that the software covered under the FLA will forever remain Free Software.&lt;br /&gt;
&lt;br /&gt;
	This process only serves for the transfer of economic rights. So-called moral rights (e.g. authors right to be identified as author) remain with the original author(s) and are inalienable.&lt;br /&gt;
	How to use this FLA&lt;br /&gt;
&lt;br /&gt;
	If You are an employee and have created the Contribution as part of your employment, You need to have Your employer approve this Agreement. If You do not own the Copyright in Your Contribution, any other author of the Contribution should also sign this. In any event, please contact Us at https://www.eco-libre.org/contact.&lt;br /&gt;
	Definitions&lt;br /&gt;
&lt;br /&gt;
	&amp;quot;You&amp;quot; means the individual Copyright owner who Submits a Contribution to Us; or&lt;br /&gt;
&lt;br /&gt;
	if the Copyright in the Contribution is held by a Legal Entity and the Contribution is being Submitted to Us on behalf of such Legal Entity, &amp;quot;You&amp;quot; means such Legal Entity.&lt;br /&gt;
&lt;br /&gt;
	&amp;quot;Contribution&amp;quot; means any original work of authorship, including any original modifications or additions to an existing work of authorship, Submitted for inclusion into Material by You to Us, in which you own the Copyright.&lt;br /&gt;
&lt;br /&gt;
	&amp;quot;Copyright&amp;quot; means all rights protecting works of authorship, including copyright, moral and neighboring rights, as appropriate, for the full term of their existence.&lt;br /&gt;
&lt;br /&gt;
	&amp;quot;Material&amp;quot; means the software and/or documentation of ____________________ that we make available to third parties.&lt;br /&gt;
&lt;br /&gt;
	&amp;quot;Submit&amp;quot; means any act by which a Contribution is transferred to Us by You by means of tangible or intangible media, including but not limited to electronic mailing lists, source code control systems, and issue tracking systems, but excluding any transfer that is conspicuously marked or otherwise designated in writing by You as &amp;quot;Not a Contribution.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
	&amp;quot;Documentation&amp;quot; means any non-software portion of a Contribution.&lt;br /&gt;
	License grant&lt;br /&gt;
	Copyright license to Us&lt;br /&gt;
&lt;br /&gt;
	Subject to the terms and conditions of this Agreement, You hereby grant to Us a worldwide, royalty-free, exclusive, perpetual and irrevocable (except as stated in Section &amp;quot;Term&amp;quot;) license, with the right to transfer an unlimited number of non-exclusive licenses or to grant sublicenses to third parties, under the Copyright covering the Contribution to use the Contribution by all means, including, but not limited to:&lt;br /&gt;
		publish the Contribution,&lt;br /&gt;
		modify the Contribution,&lt;br /&gt;
		prepare derivative works based upon or containing the Contribution and/or to combine the Contribution with other Materials,&lt;br /&gt;
		reproduce the Contribution in original or modified form,&lt;br /&gt;
		distribute, to make the Contribution available to the public, display and publicly perform the Contribution in original or modified form.&lt;br /&gt;
	Moral rights&lt;br /&gt;
&lt;br /&gt;
	Moral Rights remain unaffected to the extent they are recognized and not waivable by applicable law. Notwithstanding, You may add your name to the attribution mechanism customary used in the Materials you Contribute to, such as the header of the source code files of Your Contribution, and We will respect this attribution when using Your Contribution.&lt;br /&gt;
	Copyright license back to You&lt;br /&gt;
&lt;br /&gt;
	Upon such grant of rights to Us, We immediately grant to You a worldwide, royalty-free, non-exclusive, perpetual and irrevocable license, with the right to transfer an unlimited number of non-exclusive licenses or to grant sublicenses to third parties, under the Copyright covering the Contribution to use the Contribution by all means, including, but not limited to:&lt;br /&gt;
		publish the Contribution,&lt;br /&gt;
		modify the Contribution,&lt;br /&gt;
		prepare derivative works based upon or containing the Contribution and/or to combine the Contribution with other Materials,&lt;br /&gt;
		reproduce the Contribution in original or modified form,&lt;br /&gt;
		distribute, to make the Contribution available to the public, display and publicly perform the Contribution in original or modified form.&lt;br /&gt;
&lt;br /&gt;
	This license back is limited to the Contribution and does not provide any rights to the Material.&lt;br /&gt;
	Patents&lt;br /&gt;
	Patent license&lt;br /&gt;
&lt;br /&gt;
	Subject to the terms and conditions of this Agreement You hereby grant to Us and to recipients of Materials distributed by Us a worldwide, royalty-free, non-exclusive, perpetual and irrevocable (except as stated in Subsection &amp;quot;Revocation of patent license&amp;quot;) patent license, with the right to transfer an unlimited number of non-exclusive licenses or to grant sublicenses to third parties, to make, have made, use, sell, offer for sale, import and otherwise transfer the Contribution and the Contribution in combination with any Material (and portions of such combination). This license applies to all patents owned or controlled by You, whether already acquired or hereafter acquired, that would be infringed by making, having made, using, selling, offering for sale, importing or otherwise transferring of Your Contribution(s) alone or by combination of Your Contribution(s) with any Material.&lt;br /&gt;
	Revocation of patent license&lt;br /&gt;
&lt;br /&gt;
	You reserve the right to revoke the patent license stated in Subsection &amp;quot;Patent license&amp;quot; if We make any infringement claim that is targeted at your Contribution and not asserted for a Defensive Purpose. An assertion of claims of the Patents shall be considered for a &amp;quot;Defensive Purpose&amp;quot; if the claims are asserted against an entity that has filed, maintained, threatened, or voluntarily participated in a patent infringement lawsuit against Us or any of Our licensees.&lt;br /&gt;
	License obligations by Us&lt;br /&gt;
&lt;br /&gt;
	We may, but are under no obligation to, include the Contribution You Submitted to Us into the Material.&lt;br /&gt;
&lt;br /&gt;
	We agree to (sub)license the Contribution or any Materials containing, based on or derived from your Contribution under the terms of any licenses that qualify as [Free Software](https://www.gnu.org/philosophy/free-sw.html) as defined by the Free Software Foundation and at the same time qualify as [Open Source](https://opensource.org/osd) as defined by the Open Source Initiative. For clarification, should we make available any Material under a non-free or non-open license, we must make a version of such Material available under a free and open license too.&lt;br /&gt;
&lt;br /&gt;
	More specifically and in strict accordance with the above paragraph, we agree to (sub)license the Contribution or any Materials containing, based on or derived from the Contribution only under the terms of the following license(s) GPL-3.0, MIT (including any right to adopt any future version of a license if permitted), whereby any non-free or non-open licenses need to be listed as well.&lt;br /&gt;
&lt;br /&gt;
	We agree to license patents owned or controlled by You only to the extent necessary to (sub)license Your Contribution(s) and the combination of Your Contribution(s) with the Material under the terms of any licenses the Free Software Foundation classifies as Free Software licenses and which are approved by the Open Source Initiative as Open Source licenses..&lt;br /&gt;
	Disclaimer&lt;br /&gt;
	**We acknowledge that you provide the Contribution &amp;quot;as is&amp;quot;.** **More particularly, You disclaim all express or implied warranties including, without limitation, any implied warranty of satisfactory quality, fitness for a particular purpose and non-infringement. To the extent that any such warranties cannot be disclaimed, such warranty is limited in duration and extent to the minimum period and extent permitted by law.**&lt;br /&gt;
	Consequential damage waiver&lt;br /&gt;
&lt;br /&gt;
	**To the maximum extent permitted by applicable law, in no event will You or We be liable for any loss of profits, loss of anticipated savings, loss of data, indirect, special, incidental, consequential and exemplary damages arising out of this Agreement regardless of the legal or equitable theory (contract, tort or otherwise) upon which the claim is based.**&lt;br /&gt;
	Approximation of disclaimer and damage waiver&lt;br /&gt;
&lt;br /&gt;
	**If the disclaimer and damage waiver mentioned in Subsection &amp;quot;Disclaimer of warranty&amp;quot; and Section &amp;quot;Consequential damage waiver&amp;quot; cannot be given legal effect under applicable local law, reviewing courts shall apply local law that most closely approximates an absolute waiver of all civil or contractual liability in connection with the Contribution.**&lt;br /&gt;
	Term&lt;br /&gt;
&lt;br /&gt;
	This Agreement shall come into effect upon Your acceptance of the terms and conditions.&lt;br /&gt;
&lt;br /&gt;
	This Agreement shall apply for the term of the copyright and patents licensed here. However, You shall have the right to terminate the Agreement if We do not fulfill the obligations as set forth in Section &amp;quot;License obligations by Us&amp;quot;. Such termination must be made in writing.&lt;br /&gt;
&lt;br /&gt;
	In the event of a termination of this Agreement Sections &amp;quot;Disclaimer&amp;quot;, &amp;quot;Term&amp;quot; and &amp;quot;Miscellaneous&amp;quot; shall survive such termination and shall remain in full force thereafter. For the avoidance of doubt, Free and Open Source Software (sub)licenses that have already been granted for Contributions at the date of the termination shall remain in full force after the termination of this Agreement.&lt;br /&gt;
	Miscellaneous&lt;br /&gt;
&lt;br /&gt;
	This Agreement and all disputes, claims, actions, suits or other proceedings arising out of this agreement or relating in any way to it shall be governed by the laws of Ecuador excluding its private international law provisions.&lt;br /&gt;
&lt;br /&gt;
	This Agreement sets out the entire agreement between You and Us for Your Contributions to Us and overrides all other agreements or understandings.&lt;br /&gt;
&lt;br /&gt;
	In case of Your death, this agreement shall continue with Your heirs. In case of more than one heir, all heirs must exercise their rights through a commonly authorized person.&lt;br /&gt;
&lt;br /&gt;
	If any provision of this Agreement is found void and unenforceable, such provision will be replaced to the extent possible with a provision that comes closest to the meaning of the original provision and that is enforceable. The terms and conditions set forth in this Agreement shall apply notwithstanding any failure of essential purpose of this Agreement or any limited remedy to the maximum extent possible under law.&lt;br /&gt;
&lt;br /&gt;
	You agree to notify Us of any facts or circumstances of which you become aware that would make Your representations under this Agreement inaccurate in any respect.&lt;br /&gt;
	You&lt;br /&gt;
	Date:	&lt;br /&gt;
	Name:	&lt;br /&gt;
	Title:	&lt;br /&gt;
	Address:	&lt;br /&gt;
	Us&lt;br /&gt;
	Date:	&lt;br /&gt;
	Name:	&lt;br /&gt;
	Title:	&lt;br /&gt;
	Address:	&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
	Fiduciary License Agreement 2.0&lt;br /&gt;
	based on the&lt;br /&gt;
	Entity Contributor Exclusive License Agreement&lt;br /&gt;
	(including the Traditional Patent License OPTION)&lt;br /&gt;
&lt;br /&gt;
	Thank you for your interest in contributing to Eco-Libre&#039;s ____________________ (&amp;quot;We&amp;quot; or &amp;quot;Us&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
	The purpose of this contributor agreement (&amp;quot;Agreement&amp;quot;) is to clarify and document the rights granted by contributors to Us. To make this document effective, please follow the instructions at ____________________.&lt;br /&gt;
	Preamble&lt;br /&gt;
&lt;br /&gt;
	Software is deeply embedded in all aspects of our lives and it is important that it empower, rather than restrict us. Free Software gives everybody the rights to use, understand, adapt and share software. These rights help support other fundamental freedoms like freedom of speech, press and privacy.&lt;br /&gt;
&lt;br /&gt;
	Development of Free Software can follow many patterns. In some cases whole development is handled by a sole programmer or a small group of people. But usually, the creation and maintenance of software is a complex process that requires the contribution of many individuals. This also affects who owns the rights to the software. In the latter case, rights in software are owned jointly by a great number of individuals.&lt;br /&gt;
&lt;br /&gt;
	To tackle this issue some projects require a full copyright assignment to be signed by all contributors. The problem with such assignments is that they often lack checks and balances that would protect the contributors from potential abuse of power from the new copyright holder.&lt;br /&gt;
&lt;br /&gt;
	FSFE’s Fiduciary License Agreement (FLA) was created by the Free Software Foundation Europe e.V. with just that in mind – to concentrate all deciding power within one entity and prevent fragmentation of rights on one hand, while on the other preventing that single entity from abusing its power. The main aim is to ensure that the software covered under the FLA will forever remain Free Software.&lt;br /&gt;
&lt;br /&gt;
	This process only serves for the transfer of economic rights. So-called moral rights (e.g. authors right to be identified as author) remain with the original author(s) and are inalienable.&lt;br /&gt;
	How to use this FLA&lt;br /&gt;
&lt;br /&gt;
	If You are an employee and have created the Contribution as part of your employment, You need to have Your employer approve this Agreement. If You do not own the Copyright in Your Contribution, any other author of the Contribution should also sign this. In any event, please contact Us at https://www.eco-libre.org/contact.&lt;br /&gt;
	Definitions&lt;br /&gt;
&lt;br /&gt;
	&amp;quot;You&amp;quot; means the individual Copyright owner who Submits a Contribution to Us; or&lt;br /&gt;
&lt;br /&gt;
	if the Copyright in the Contribution is held by a Legal Entity and the Contribution is being Submitted to Us on behalf of such Legal Entity, &amp;quot;You&amp;quot; means such Legal Entity.&lt;br /&gt;
&lt;br /&gt;
	&amp;quot;Contribution&amp;quot; means any original work of authorship, including any original modifications or additions to an existing work of authorship, Submitted for inclusion into Material by You to Us, in which you own the Copyright.&lt;br /&gt;
&lt;br /&gt;
	&amp;quot;Copyright&amp;quot; means all rights protecting works of authorship, including copyright, moral and neighboring rights, as appropriate, for the full term of their existence.&lt;br /&gt;
&lt;br /&gt;
	&amp;quot;Material&amp;quot; means the software and/or documentation of ____________________ that we make available to third parties.&lt;br /&gt;
&lt;br /&gt;
	&amp;quot;Submit&amp;quot; means any act by which a Contribution is transferred to Us by You by means of tangible or intangible media, including but not limited to electronic mailing lists, source code control systems, and issue tracking systems, but excluding any transfer that is conspicuously marked or otherwise designated in writing by You as &amp;quot;Not a Contribution.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
	&amp;quot;Documentation&amp;quot; means any non-software portion of a Contribution.&lt;br /&gt;
	License grant&lt;br /&gt;
	Copyright license to Us&lt;br /&gt;
&lt;br /&gt;
	Subject to the terms and conditions of this Agreement, You hereby grant to Us a worldwide, royalty-free, exclusive, perpetual and irrevocable (except as stated in Section &amp;quot;Term&amp;quot;) license, with the right to transfer an unlimited number of non-exclusive licenses or to grant sublicenses to third parties, under the Copyright covering the Contribution to use the Contribution by all means, including, but not limited to:&lt;br /&gt;
		publish the Contribution,&lt;br /&gt;
		modify the Contribution,&lt;br /&gt;
		prepare derivative works based upon or containing the Contribution and/or to combine the Contribution with other Materials,&lt;br /&gt;
		reproduce the Contribution in original or modified form,&lt;br /&gt;
		distribute, to make the Contribution available to the public, display and publicly perform the Contribution in original or modified form.&lt;br /&gt;
	Moral rights&lt;br /&gt;
&lt;br /&gt;
	Moral Rights remain unaffected to the extent they are recognized and not waivable by applicable law. Notwithstanding, You may add your name to the attribution mechanism customary used in the Materials you Contribute to, such as the header of the source code files of Your Contribution, and We will respect this attribution when using Your Contribution.&lt;br /&gt;
	Copyright license back to You&lt;br /&gt;
&lt;br /&gt;
	Upon such grant of rights to Us, We immediately grant to You a worldwide, royalty-free, non-exclusive, perpetual and irrevocable license, with the right to transfer an unlimited number of non-exclusive licenses or to grant sublicenses to third parties, under the Copyright covering the Contribution to use the Contribution by all means, including, but not limited to:&lt;br /&gt;
		publish the Contribution,&lt;br /&gt;
		modify the Contribution,&lt;br /&gt;
		prepare derivative works based upon or containing the Contribution and/or to combine the Contribution with other Materials,&lt;br /&gt;
		reproduce the Contribution in original or modified form,&lt;br /&gt;
		distribute, to make the Contribution available to the public, display and publicly perform the Contribution in original or modified form.&lt;br /&gt;
&lt;br /&gt;
	This license back is limited to the Contribution and does not provide any rights to the Material.&lt;br /&gt;
	Patents&lt;br /&gt;
	Patent license&lt;br /&gt;
&lt;br /&gt;
	Subject to the terms and conditions of this Agreement You hereby grant to Us and to recipients of Materials distributed by Us a worldwide, royalty-free, non-exclusive, perpetual and irrevocable (except as stated in Subsection &amp;quot;Revocation of patent license&amp;quot;) patent license, with the right to transfer an unlimited number of non-exclusive licenses or to grant sublicenses to third parties, to make, have made, use, sell, offer for sale, import and otherwise transfer the Contribution and the Contribution in combination with any Material (and portions of such combination). This license applies to all patents owned or controlled by You, whether already acquired or hereafter acquired, that would be infringed by making, having made, using, selling, offering for sale, importing or otherwise transferring of Your Contribution(s) alone or by combination of Your Contribution(s) with any Material.&lt;br /&gt;
	Revocation of patent license&lt;br /&gt;
&lt;br /&gt;
	You reserve the right to revoke the patent license stated in Subsection &amp;quot;Patent license&amp;quot; if We make any infringement claim that is targeted at your Contribution and not asserted for a Defensive Purpose. An assertion of claims of the Patents shall be considered for a &amp;quot;Defensive Purpose&amp;quot; if the claims are asserted against an entity that has filed, maintained, threatened, or voluntarily participated in a patent infringement lawsuit against Us or any of Our licensees.&lt;br /&gt;
	License obligations by Us&lt;br /&gt;
&lt;br /&gt;
	We may, but are under no obligation to, include the Contribution You Submitted to Us into the Material.&lt;br /&gt;
&lt;br /&gt;
	We agree to (sub)license the Contribution or any Materials containing, based on or derived from your Contribution under the terms of any licenses that qualify as [Free Software](https://www.gnu.org/philosophy/free-sw.html) as defined by the Free Software Foundation and at the same time qualify as [Open Source](https://opensource.org/osd) as defined by the Open Source Initiative. For clarification, should we make available any Material under a non-free or non-open license, we must make a version of such Material available under a free and open license too.&lt;br /&gt;
&lt;br /&gt;
	More specifically and in strict accordance with the above paragraph, we agree to (sub)license the Contribution or any Materials containing, based on or derived from the Contribution only under the terms of the following license(s) GPL-3.0, MIT (including any right to adopt any future version of a license if permitted), whereby any non-free or non-open licenses need to be listed as well.&lt;br /&gt;
&lt;br /&gt;
	We agree to license patents owned or controlled by You only to the extent necessary to (sub)license Your Contribution(s) and the combination of Your Contribution(s) with the Material under the terms of any licenses the Free Software Foundation classifies as Free Software licenses and which are approved by the Open Source Initiative as Open Source licenses..&lt;br /&gt;
	Disclaimer&lt;br /&gt;
	**We acknowledge that you provide the Contribution &amp;quot;as is&amp;quot;.** **More particularly, You disclaim all express or implied warranties including, without limitation, any implied warranty of satisfactory quality, fitness for a particular purpose and non-infringement. To the extent that any such warranties cannot be disclaimed, such warranty is limited in duration and extent to the minimum period and extent permitted by law.**&lt;br /&gt;
	Consequential damage waiver&lt;br /&gt;
&lt;br /&gt;
	**To the maximum extent permitted by applicable law, in no event will You or We be liable for any loss of profits, loss of anticipated savings, loss of data, indirect, special, incidental, consequential and exemplary damages arising out of this Agreement regardless of the legal or equitable theory (contract, tort or otherwise) upon which the claim is based.**&lt;br /&gt;
	Approximation of disclaimer and damage waiver&lt;br /&gt;
&lt;br /&gt;
	**If the disclaimer and damage waiver mentioned in Subsection &amp;quot;Disclaimer of warranty&amp;quot; and Section &amp;quot;Consequential damage waiver&amp;quot; cannot be given legal effect under applicable local law, reviewing courts shall apply local law that most closely approximates an absolute waiver of all civil or contractual liability in connection with the Contribution.**&lt;br /&gt;
	Term&lt;br /&gt;
&lt;br /&gt;
	This Agreement shall come into effect upon Your acceptance of the terms and conditions.&lt;br /&gt;
&lt;br /&gt;
	This Agreement shall apply for the term of the copyright and patents licensed here. However, You shall have the right to terminate the Agreement if We do not fulfill the obligations as set forth in Section &amp;quot;License obligations by Us&amp;quot;. Such termination must be made in writing.&lt;br /&gt;
&lt;br /&gt;
	In the event of a termination of this Agreement Sections &amp;quot;Disclaimer&amp;quot;, &amp;quot;Term&amp;quot; and &amp;quot;Miscellaneous&amp;quot; shall survive such termination and shall remain in full force thereafter. For the avoidance of doubt, Free and Open Source Software (sub)licenses that have already been granted for Contributions at the date of the termination shall remain in full force after the termination of this Agreement.&lt;br /&gt;
	Miscellaneous&lt;br /&gt;
&lt;br /&gt;
	This Agreement and all disputes, claims, actions, suits or other proceedings arising out of this agreement or relating in any way to it shall be governed by the laws of Ecuador excluding its private international law provisions.&lt;br /&gt;
&lt;br /&gt;
	This Agreement sets out the entire agreement between You and Us for Your Contributions to Us and overrides all other agreements or understandings.&lt;br /&gt;
&lt;br /&gt;
	In case of Your death, this agreement shall continue with Your heirs. In case of more than one heir, all heirs must exercise their rights through a commonly authorized person.&lt;br /&gt;
&lt;br /&gt;
	If any provision of this Agreement is found void and unenforceable, such provision will be replaced to the extent possible with a provision that comes closest to the meaning of the original provision and that is enforceable. The terms and conditions set forth in this Agreement shall apply notwithstanding any failure of essential purpose of this Agreement or any limited remedy to the maximum extent possible under law.&lt;br /&gt;
&lt;br /&gt;
	You agree to notify Us of any facts or circumstances of which you become aware that would make Your representations under this Agreement inaccurate in any respect.&lt;br /&gt;
	You&lt;br /&gt;
	Date:	&lt;br /&gt;
	Name:	&lt;br /&gt;
	Title:	&lt;br /&gt;
	Address:	&lt;br /&gt;
	Us&lt;br /&gt;
	Date:	&lt;br /&gt;
	Name:	&lt;br /&gt;
	Title:	&lt;br /&gt;
	Address:	&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## the generator didn&#039;t let me choose &amp;quot;CC BY-SA&amp;quot; as one of the licnese, so I chose &amp;quot;MIT&amp;quot; so we could find/replace it later&lt;br /&gt;
# oh, if I change the first page&#039;s option to &amp;quot;let me do what I want&amp;quot; then the second page has an option to include CC BY-SA. that changed it to:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	Contributor Agreement&lt;br /&gt;
	Individual Contributor Exclusive License Agreement&lt;br /&gt;
	(including the Traditional Patent License OPTION)&lt;br /&gt;
&lt;br /&gt;
	Thank you for your interest in contributing to Eco-Libre&#039;s ____________________ (&amp;quot;We&amp;quot; or &amp;quot;Us&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
	The purpose of this contributor agreement (&amp;quot;Agreement&amp;quot;) is to clarify and document the rights granted by contributors to Us. To make this document effective, please follow the instructions at ____________________.&lt;br /&gt;
	How to use this Contributor Agreement&lt;br /&gt;
&lt;br /&gt;
	If You are an employee and have created the Contribution as part of your employment, You need to have Your employer approve this Agreement. If You do not own the Copyright in Your Contribution, any other author of the Contribution should also sign this. In any event, please contact Us at https://www.eco-libre.org/contact.&lt;br /&gt;
	Definitions&lt;br /&gt;
&lt;br /&gt;
	&amp;quot;You&amp;quot; means the individual Copyright owner who Submits a Contribution to Us; or&lt;br /&gt;
&lt;br /&gt;
	if the Copyright in the Contribution is held by a Legal Entity and the Contribution is being Submitted to Us on behalf of such Legal Entity, &amp;quot;You&amp;quot; means such Legal Entity.&lt;br /&gt;
&lt;br /&gt;
	&amp;quot;Contribution&amp;quot; means any original work of authorship, including any original modifications or additions to an existing work of authorship, Submitted for inclusion into Material by You to Us, in which you own the Copyright.&lt;br /&gt;
&lt;br /&gt;
	&amp;quot;Copyright&amp;quot; means all rights protecting works of authorship, including copyright, moral and neighboring rights, as appropriate, for the full term of their existence.&lt;br /&gt;
&lt;br /&gt;
	&amp;quot;Material&amp;quot; means the software and/or documentation of ____________________ that we make available to third parties.&lt;br /&gt;
&lt;br /&gt;
	&amp;quot;Submit&amp;quot; means any act by which a Contribution is transferred to Us by You by means of tangible or intangible media, including but not limited to electronic mailing lists, source code control systems, and issue tracking systems, but excluding any transfer that is conspicuously marked or otherwise designated in writing by You as &amp;quot;Not a Contribution.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
	&amp;quot;Documentation&amp;quot; means any non-software portion of a Contribution.&lt;br /&gt;
	License grant&lt;br /&gt;
	Copyright license to Us&lt;br /&gt;
&lt;br /&gt;
	Subject to the terms and conditions of this Agreement, You hereby grant to Us a worldwide, royalty-free, exclusive, perpetual and irrevocable (except as stated in Section &amp;quot;Term&amp;quot;) license, with the right to transfer an unlimited number of non-exclusive licenses or to grant sublicenses to third parties, under the Copyright covering the Contribution to use the Contribution by all means, including, but not limited to:&lt;br /&gt;
		publish the Contribution,&lt;br /&gt;
		modify the Contribution,&lt;br /&gt;
		prepare derivative works based upon or containing the Contribution and/or to combine the Contribution with other Materials,&lt;br /&gt;
		reproduce the Contribution in original or modified form,&lt;br /&gt;
		distribute, to make the Contribution available to the public, display and publicly perform the Contribution in original or modified form.&lt;br /&gt;
	Moral rights&lt;br /&gt;
&lt;br /&gt;
	Moral Rights remain unaffected to the extent they are recognized and not waivable by applicable law. Notwithstanding, You may add your name to the attribution mechanism customary used in the Materials you Contribute to, such as the header of the source code files of Your Contribution, and We will respect this attribution when using Your Contribution.&lt;br /&gt;
	Copyright license back to You&lt;br /&gt;
&lt;br /&gt;
	Upon such grant of rights to Us, We immediately grant to You a worldwide, royalty-free, non-exclusive, perpetual and irrevocable license, with the right to transfer an unlimited number of non-exclusive licenses or to grant sublicenses to third parties, under the Copyright covering the Contribution to use the Contribution by all means, including, but not limited to:&lt;br /&gt;
		publish the Contribution,&lt;br /&gt;
		modify the Contribution,&lt;br /&gt;
		prepare derivative works based upon or containing the Contribution and/or to combine the Contribution with other Materials,&lt;br /&gt;
		reproduce the Contribution in original or modified form,&lt;br /&gt;
		distribute, to make the Contribution available to the public, display and publicly perform the Contribution in original or modified form.&lt;br /&gt;
&lt;br /&gt;
	This license back is limited to the Contribution and does not provide any rights to the Material.&lt;br /&gt;
	Patents&lt;br /&gt;
	Patent license&lt;br /&gt;
&lt;br /&gt;
	Subject to the terms and conditions of this Agreement You hereby grant to Us and to recipients of Materials distributed by Us a worldwide, royalty-free, non-exclusive, perpetual and irrevocable (except as stated in Subsection &amp;quot;Revocation of patent license&amp;quot;) patent license, with the right to transfer an unlimited number of non-exclusive licenses or to grant sublicenses to third parties, to make, have made, use, sell, offer for sale, import and otherwise transfer the Contribution and the Contribution in combination with any Material (and portions of such combination). This license applies to all patents owned or controlled by You, whether already acquired or hereafter acquired, that would be infringed by making, having made, using, selling, offering for sale, importing or otherwise transferring of Your Contribution(s) alone or by combination of Your Contribution(s) with any Material.&lt;br /&gt;
	Revocation of patent license&lt;br /&gt;
&lt;br /&gt;
	You reserve the right to revoke the patent license stated in Subsection &amp;quot;Patent license&amp;quot; if We make any infringement claim that is targeted at your Contribution and not asserted for a Defensive Purpose. An assertion of claims of the Patents shall be considered for a &amp;quot;Defensive Purpose&amp;quot; if the claims are asserted against an entity that has filed, maintained, threatened, or voluntarily participated in a patent infringement lawsuit against Us or any of Our licensees.&lt;br /&gt;
	License obligations by Us&lt;br /&gt;
&lt;br /&gt;
	We may, but are under no obligation to, include the Contribution You Submitted to Us into the Material.&lt;br /&gt;
&lt;br /&gt;
	We agree to license the Contribution only under the terms of the following license(s) GPL-3.0 (including any right to adopt any future version of a license if permitted), whereby any non-free or non-open licenses need to be listed as well.&lt;br /&gt;
&lt;br /&gt;
	In addition, We may use the following licenses for Documentation in the Contribution: CC-BY-SA-4.0 (including any right to adopt any future version of a license).&lt;br /&gt;
&lt;br /&gt;
	We agree to license patents owned or controlled by You only to the extent necessary to (sub)license Your Contribution(s) and the combination of Your Contribution(s) with the Material under the terms of the following GPL-3.0 license(s).&lt;br /&gt;
	Disclaimer&lt;br /&gt;
	**We acknowledge that you provide the Contribution &amp;quot;as is&amp;quot;.** **More particularly, You disclaim all express or implied warranties including, without limitation, any implied warranty of satisfactory quality, fitness for a particular purpose and non-infringement. To the extent that any such warranties cannot be disclaimed, such warranty is limited in duration and extent to the minimum period and extent permitted by law.**&lt;br /&gt;
	Consequential damage waiver&lt;br /&gt;
&lt;br /&gt;
	**To the maximum extent permitted by applicable law, in no event will You or We be liable for any loss of profits, loss of anticipated savings, loss of data, indirect, special, incidental, consequential and exemplary damages arising out of this Agreement regardless of the legal or equitable theory (contract, tort or otherwise) upon which the claim is based.**&lt;br /&gt;
	Approximation of disclaimer and damage waiver&lt;br /&gt;
&lt;br /&gt;
	**If the disclaimer and damage waiver mentioned in Subsection &amp;quot;Disclaimer of warranty&amp;quot; and Section &amp;quot;Consequential damage waiver&amp;quot; cannot be given legal effect under applicable local law, reviewing courts shall apply local law that most closely approximates an absolute waiver of all civil or contractual liability in connection with the Contribution.**&lt;br /&gt;
	Term&lt;br /&gt;
&lt;br /&gt;
	This Agreement shall come into effect upon Your acceptance of the terms and conditions.&lt;br /&gt;
&lt;br /&gt;
	This Agreement shall apply for the term of the copyright and patents licensed here. However, You shall have the right to terminate the Agreement if We do not fulfill the obligations as set forth in Section &amp;quot;License obligations by Us&amp;quot;. Such termination must be made in writing.&lt;br /&gt;
&lt;br /&gt;
	In the event of a termination of this Agreement Sections &amp;quot;Disclaimer&amp;quot;, &amp;quot;Term&amp;quot; and &amp;quot;Miscellaneous&amp;quot; shall survive such termination and shall remain in full force thereafter. For the avoidance of doubt, Free and Open Source Software (sub)licenses that have already been granted for Contributions at the date of the termination shall remain in full force after the termination of this Agreement.&lt;br /&gt;
	Miscellaneous&lt;br /&gt;
&lt;br /&gt;
	This Agreement and all disputes, claims, actions, suits or other proceedings arising out of this agreement or relating in any way to it shall be governed by the laws of Ecuador excluding its private international law provisions.&lt;br /&gt;
&lt;br /&gt;
	This Agreement sets out the entire agreement between You and Us for Your Contributions to Us and overrides all other agreements or understandings.&lt;br /&gt;
&lt;br /&gt;
	In case of Your death, this agreement shall continue with Your heirs. In case of more than one heir, all heirs must exercise their rights through a commonly authorized person.&lt;br /&gt;
&lt;br /&gt;
	If any provision of this Agreement is found void and unenforceable, such provision will be replaced to the extent possible with a provision that comes closest to the meaning of the original provision and that is enforceable. The terms and conditions set forth in this Agreement shall apply notwithstanding any failure of essential purpose of this Agreement or any limited remedy to the maximum extent possible under law.&lt;br /&gt;
&lt;br /&gt;
	You agree to notify Us of any facts or circumstances of which you become aware that would make Your representations under this Agreement inaccurate in any respect.&lt;br /&gt;
	You&lt;br /&gt;
	Date:	&lt;br /&gt;
	Name:	&lt;br /&gt;
	Title:	&lt;br /&gt;
	Address:	&lt;br /&gt;
	Us&lt;br /&gt;
	Date:	&lt;br /&gt;
	Name:	&lt;br /&gt;
	Title:	&lt;br /&gt;
	Address:	&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
	Contributor Agreement&lt;br /&gt;
	Entity Contributor Exclusive License Agreement&lt;br /&gt;
	(including the Traditional Patent License OPTION)&lt;br /&gt;
&lt;br /&gt;
	Thank you for your interest in contributing to Eco-Libre&#039;s ____________________ (&amp;quot;We&amp;quot; or &amp;quot;Us&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
	The purpose of this contributor agreement (&amp;quot;Agreement&amp;quot;) is to clarify and document the rights granted by contributors to Us. To make this document effective, please follow the instructions at ____________________.&lt;br /&gt;
	How to use this Contributor Agreement&lt;br /&gt;
&lt;br /&gt;
	If You are an employee and have created the Contribution as part of your employment, You need to have Your employer approve this Agreement. If You do not own the Copyright in Your Contribution, any other author of the Contribution should also sign this. In any event, please contact Us at https://www.eco-libre.org/contact.&lt;br /&gt;
	Definitions&lt;br /&gt;
&lt;br /&gt;
	&amp;quot;You&amp;quot; means the individual Copyright owner who Submits a Contribution to Us; or&lt;br /&gt;
&lt;br /&gt;
	if the Copyright in the Contribution is held by a Legal Entity and the Contribution is being Submitted to Us on behalf of such Legal Entity, &amp;quot;You&amp;quot; means such Legal Entity.&lt;br /&gt;
&lt;br /&gt;
	&amp;quot;Contribution&amp;quot; means any original work of authorship, including any original modifications or additions to an existing work of authorship, Submitted for inclusion into Material by You to Us, in which you own the Copyright.&lt;br /&gt;
&lt;br /&gt;
	&amp;quot;Copyright&amp;quot; means all rights protecting works of authorship, including copyright, moral and neighboring rights, as appropriate, for the full term of their existence.&lt;br /&gt;
&lt;br /&gt;
	&amp;quot;Material&amp;quot; means the software and/or documentation of ____________________ that we make available to third parties.&lt;br /&gt;
&lt;br /&gt;
	&amp;quot;Submit&amp;quot; means any act by which a Contribution is transferred to Us by You by means of tangible or intangible media, including but not limited to electronic mailing lists, source code control systems, and issue tracking systems, but excluding any transfer that is conspicuously marked or otherwise designated in writing by You as &amp;quot;Not a Contribution.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
	&amp;quot;Documentation&amp;quot; means any non-software portion of a Contribution.&lt;br /&gt;
	License grant&lt;br /&gt;
	Copyright license to Us&lt;br /&gt;
&lt;br /&gt;
	Subject to the terms and conditions of this Agreement, You hereby grant to Us a worldwide, royalty-free, exclusive, perpetual and irrevocable (except as stated in Section &amp;quot;Term&amp;quot;) license, with the right to transfer an unlimited number of non-exclusive licenses or to grant sublicenses to third parties, under the Copyright covering the Contribution to use the Contribution by all means, including, but not limited to:&lt;br /&gt;
		publish the Contribution,&lt;br /&gt;
		modify the Contribution,&lt;br /&gt;
		prepare derivative works based upon or containing the Contribution and/or to combine the Contribution with other Materials,&lt;br /&gt;
		reproduce the Contribution in original or modified form,&lt;br /&gt;
		distribute, to make the Contribution available to the public, display and publicly perform the Contribution in original or modified form.&lt;br /&gt;
	Moral rights&lt;br /&gt;
&lt;br /&gt;
	Moral Rights remain unaffected to the extent they are recognized and not waivable by applicable law. Notwithstanding, You may add your name to the attribution mechanism customary used in the Materials you Contribute to, such as the header of the source code files of Your Contribution, and We will respect this attribution when using Your Contribution.&lt;br /&gt;
	Copyright license back to You&lt;br /&gt;
&lt;br /&gt;
	Upon such grant of rights to Us, We immediately grant to You a worldwide, royalty-free, non-exclusive, perpetual and irrevocable license, with the right to transfer an unlimited number of non-exclusive licenses or to grant sublicenses to third parties, under the Copyright covering the Contribution to use the Contribution by all means, including, but not limited to:&lt;br /&gt;
		publish the Contribution,&lt;br /&gt;
		modify the Contribution,&lt;br /&gt;
		prepare derivative works based upon or containing the Contribution and/or to combine the Contribution with other Materials,&lt;br /&gt;
		reproduce the Contribution in original or modified form,&lt;br /&gt;
		distribute, to make the Contribution available to the public, display and publicly perform the Contribution in original or modified form.&lt;br /&gt;
&lt;br /&gt;
	This license back is limited to the Contribution and does not provide any rights to the Material.&lt;br /&gt;
	Patents&lt;br /&gt;
	Patent license&lt;br /&gt;
&lt;br /&gt;
	Subject to the terms and conditions of this Agreement You hereby grant to Us and to recipients of Materials distributed by Us a worldwide, royalty-free, non-exclusive, perpetual and irrevocable (except as stated in Subsection &amp;quot;Revocation of patent license&amp;quot;) patent license, with the right to transfer an unlimited number of non-exclusive licenses or to grant sublicenses to third parties, to make, have made, use, sell, offer for sale, import and otherwise transfer the Contribution and the Contribution in combination with any Material (and portions of such combination). This license applies to all patents owned or controlled by You, whether already acquired or hereafter acquired, that would be infringed by making, having made, using, selling, offering for sale, importing or otherwise transferring of Your Contribution(s) alone or by combination of Your Contribution(s) with any Material.&lt;br /&gt;
	Revocation of patent license&lt;br /&gt;
&lt;br /&gt;
	You reserve the right to revoke the patent license stated in Subsection &amp;quot;Patent license&amp;quot; if We make any infringement claim that is targeted at your Contribution and not asserted for a Defensive Purpose. An assertion of claims of the Patents shall be considered for a &amp;quot;Defensive Purpose&amp;quot; if the claims are asserted against an entity that has filed, maintained, threatened, or voluntarily participated in a patent infringement lawsuit against Us or any of Our licensees.&lt;br /&gt;
	License obligations by Us&lt;br /&gt;
&lt;br /&gt;
	We may, but are under no obligation to, include the Contribution You Submitted to Us into the Material.&lt;br /&gt;
&lt;br /&gt;
	We agree to license the Contribution only under the terms of the following license(s) GPL-3.0 (including any right to adopt any future version of a license if permitted), whereby any non-free or non-open licenses need to be listed as well.&lt;br /&gt;
&lt;br /&gt;
	In addition, We may use the following licenses for Documentation in the Contribution: CC-BY-SA-4.0 (including any right to adopt any future version of a license).&lt;br /&gt;
&lt;br /&gt;
	We agree to license patents owned or controlled by You only to the extent necessary to (sub)license Your Contribution(s) and the combination of Your Contribution(s) with the Material under the terms of the following GPL-3.0 license(s).&lt;br /&gt;
	Disclaimer&lt;br /&gt;
	**We acknowledge that you provide the Contribution &amp;quot;as is&amp;quot;.** **More particularly, You disclaim all express or implied warranties including, without limitation, any implied warranty of satisfactory quality, fitness for a particular purpose and non-infringement. To the extent that any such warranties cannot be disclaimed, such warranty is limited in duration and extent to the minimum period and extent permitted by law.**&lt;br /&gt;
	Consequential damage waiver&lt;br /&gt;
&lt;br /&gt;
	**To the maximum extent permitted by applicable law, in no event will You or We be liable for any loss of profits, loss of anticipated savings, loss of data, indirect, special, incidental, consequential and exemplary damages arising out of this Agreement regardless of the legal or equitable theory (contract, tort or otherwise) upon which the claim is based.**&lt;br /&gt;
	Approximation of disclaimer and damage waiver&lt;br /&gt;
&lt;br /&gt;
	**If the disclaimer and damage waiver mentioned in Subsection &amp;quot;Disclaimer of warranty&amp;quot; and Section &amp;quot;Consequential damage waiver&amp;quot; cannot be given legal effect under applicable local law, reviewing courts shall apply local law that most closely approximates an absolute waiver of all civil or contractual liability in connection with the Contribution.**&lt;br /&gt;
	Term&lt;br /&gt;
&lt;br /&gt;
	This Agreement shall come into effect upon Your acceptance of the terms and conditions.&lt;br /&gt;
&lt;br /&gt;
	This Agreement shall apply for the term of the copyright and patents licensed here. However, You shall have the right to terminate the Agreement if We do not fulfill the obligations as set forth in Section &amp;quot;License obligations by Us&amp;quot;. Such termination must be made in writing.&lt;br /&gt;
&lt;br /&gt;
	In the event of a termination of this Agreement Sections &amp;quot;Disclaimer&amp;quot;, &amp;quot;Term&amp;quot; and &amp;quot;Miscellaneous&amp;quot; shall survive such termination and shall remain in full force thereafter. For the avoidance of doubt, Free and Open Source Software (sub)licenses that have already been granted for Contributions at the date of the termination shall remain in full force after the termination of this Agreement.&lt;br /&gt;
	Miscellaneous&lt;br /&gt;
&lt;br /&gt;
	This Agreement and all disputes, claims, actions, suits or other proceedings arising out of this agreement or relating in any way to it shall be governed by the laws of Ecuador excluding its private international law provisions.&lt;br /&gt;
&lt;br /&gt;
	This Agreement sets out the entire agreement between You and Us for Your Contributions to Us and overrides all other agreements or understandings.&lt;br /&gt;
&lt;br /&gt;
	In case of Your death, this agreement shall continue with Your heirs. In case of more than one heir, all heirs must exercise their rights through a commonly authorized person.&lt;br /&gt;
&lt;br /&gt;
	If any provision of this Agreement is found void and unenforceable, such provision will be replaced to the extent possible with a provision that comes closest to the meaning of the original provision and that is enforceable. The terms and conditions set forth in this Agreement shall apply notwithstanding any failure of essential purpose of this Agreement or any limited remedy to the maximum extent possible under law.&lt;br /&gt;
&lt;br /&gt;
	You agree to notify Us of any facts or circumstances of which you become aware that would make Your representations under this Agreement inaccurate in any respect.&lt;br /&gt;
	You&lt;br /&gt;
	Date:	&lt;br /&gt;
	Name:	&lt;br /&gt;
	Title:	&lt;br /&gt;
	Address:	&lt;br /&gt;
	Us&lt;br /&gt;
	Date:	&lt;br /&gt;
	Name:	&lt;br /&gt;
	Title:	&lt;br /&gt;
	Address:	&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# well, I&#039;m still not sure what to use. In the meantime, I went ahead and updated the wiki ToS to include an unaltered version of the Linux Foundation&#039;s DCO https://wiki.eco-libre.org/wiki/Eco-Libre:Terms_of_Service&lt;br /&gt;
## I also added a section on the license, because the DCO (which I can&#039;t edit) referes to &amp;quot;the open source license indicated in the file&amp;quot;&lt;br /&gt;
## alright, that&#039;s a placeholder. I&#039;ll wait to see if we get a response from the home automation folks and/or the OSHWA.&lt;br /&gt;
# oh, TIL that OSE *does* use CERN OHL-S-2.0 for hardware files https://wiki.opensourceecology.org/wiki/OSE_License_for_Distributive_Economics&lt;br /&gt;
## but their wiki is a mess. it says dual-licensed under the GNU Free Documentation License and CC BY-SA on this page https://wiki.opensourceecology.org/wiki/Media-wiki:Copyright&lt;br /&gt;
## while this page says just CC BY-SA for wiki and design files, CERN OHL-S-2.0 for hardware files, and GPL v3 for code https://wiki.opensourceecology.org/wiki/OSE_License_for_Distributive_Economics&lt;br /&gt;
## there&#039;s a section on CAs, which just says that we need a paper with NAME OF PERSON and SPECIFIED DATE https://wiki.opensourceecology.org/wiki/OSE_License_for_Distributive_Economics&lt;br /&gt;
## looks like they started working on a &amp;quot;distributed enterprise license&amp;quot; – but I can&#039;t find anything but a sketch outline&lt;br /&gt;
### https://wiki.opensourceecology.org/wiki/OSE_License_for_Distributive_Enterprise&lt;br /&gt;
### https://wiki.opensourceecology.org/wiki/OSE_License_for_Distributive_Economics_-_Requirements&lt;br /&gt;
## ah ha! apparently Marcin&#039;s legal advisor volunteer person suggested https://contributoragreements.org per https://wiki.opensourceecology.org/wiki/Contributor_Agreement&lt;br /&gt;
# alright, I think I&#039;ll do one of the contributoragreements.org developed above. I&#039;ll draft it into a nice-looking odt -&amp;gt; pdf and upload it to opensign. then we&#039;ll be ready to accept volunteer contributions to our repos &amp;amp; wiki, like, very legally sound &lt;br /&gt;
&lt;br /&gt;
= 2026-04-21 =&lt;br /&gt;
# I published and did the social media marketing for our announcement that we&#039;re accepting tax-deductable donations via raft today https://www.eco-libre.org/raft-2026/&lt;br /&gt;
# I, again, was unable to post to our X account.&lt;br /&gt;
## even though I enter the correct password, they demand an OTP sent to the email address used when the account was registered&lt;br /&gt;
## I guess they fired all the ex-twitter engineers with a brain, because they can&#039;t see that their emails are bouncing?&lt;br /&gt;
## I, maybe the 3rd or 4th time, told them that tutanota deleted our email address. And asked them to update the email address to one @eco-libre.org, which is pretty easy for a junior engineer to authenticate, since it&#039;s literally the domain assoaciated with our account. Auth done. QED. Here&#039;s their response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Reply above this line.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Hello,&lt;br /&gt;
&lt;br /&gt;
We=E2=80=99re writing to let you know that we=E2=80=99re unable to verify y=&lt;br /&gt;
ou as the account owner. We know this is disappointing to hear, but we can=&lt;br /&gt;
=E2=80=99t assist you further with accessing your account.&lt;br /&gt;
&lt;br /&gt;
If you know which email address or phone number is associated with the acco=&lt;br /&gt;
unt, and you no longer have access to that email or connected phone number,=&lt;br /&gt;
 please contact your service provider for assistance.&lt;br /&gt;
&lt;br /&gt;
For privacy reasons, we can=E2=80=99t provide any information about this ac=&lt;br /&gt;
count=E2=80=99s registered email address or phone number&lt;br /&gt;
&lt;br /&gt;
We understand it=E2=80=99s frustrating to get locked out of an account, but=&lt;br /&gt;
 we have these policies to protect accounts and private data. We appreciate=&lt;br /&gt;
 your understanding.&lt;br /&gt;
&lt;br /&gt;
You=E2=80=99re more than welcome to create a new account to get back onto X=&lt;br /&gt;
.&lt;br /&gt;
&lt;br /&gt;
Please do not respond to this email as replies to this account are not moni=&lt;br /&gt;
tored.&lt;br /&gt;
&lt;br /&gt;
Thanks,&lt;br /&gt;
X Support&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## So, fuck X. This is why we shouldn&#039;t use corporate, non-federated social media.&lt;br /&gt;
## oh, and I was also unable to log into reddit. Similar issue. I get this, just for a GET on /login – before they even asked me for creds!&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
You&#039;ve been blocked by network security.&lt;br /&gt;
If you think you&#039;ve been blocked by mistake, file a ticket below and we&#039;ll look into it.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# again, this is why we use better non-corportate social media. Now on lemmy!&lt;br /&gt;
## https://chaos.social/@ecolibre/116443354810130299&lt;br /&gt;
## https://slrpnk.net/post/36851013&lt;br /&gt;
# woah, mastodon has a new link under the post that says &amp;quot;More from Eco-Libre Team&amp;quot; which links here https://mastodon.social/@eco-libre@www.eco-libre.org&lt;br /&gt;
## that&#039;s, uhh, our wordpress site&#039;s ActivityPub plugins&#039; actor! The one that I couldn&#039;t finish setting-up due to the 5xx error (see previous log entries)&lt;br /&gt;
## so i guess it&#039;s working under defaults&lt;br /&gt;
## as I found before, it doesn&#039;t show previous content until after you subscribe, so the page on mastodon doesn&#039;t even show today&#039;s post :(&lt;br /&gt;
## I&#039;m thinking the best way to use this is to not really advertise wordpress as an endpoint. But, rather, to just setup our other federated-service-x-native account to subscribe and auto-boost our wordpress posts. That way we don&#039;t even have to login to mastodon or lemmy or whatever else. We can just automate the distribution from wordpress via ActivityPub to all our other federated social media accounts.&lt;br /&gt;
## anyway, I subscribed to @eco-libre@www.eco-libre.org from my personal mastodon account and our eco-libre mastodon account. let&#039;s see what that looks like over time.&lt;br /&gt;
# I logged-into our raft (private) discourse to ask if they have a mastodon account https://raft.talk/t/following-raft-on-the-fediverse/45/1&lt;br /&gt;
## I also followd-up with a thread in which I asked about a vector logo. Nathan (founder) said they don&#039;t have one, so I spent about an hour generating a few different decent-looking vectors from the png using inkscape&#039;s Trace Bitmap tool, and shared it – so others can have it in the future https://raft.talk/t/raft-logo-vector-svg/31/3&lt;br /&gt;
## I also realized that I had started (but not finished) asking the community for advice on how to get volunteers from &amp;quot;volutneer social year&amp;quot; programs like the Freiwilliges Soziales Jahr in Germany or the European Solidarity Corps or the US Peace Corps. So I finished that https://raft.talk/t/getting-state-sponsored-volunteers-voluntary-social-year/46&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Does anyone have experience here in getting volunteers via State-sponsored programs, like the US Peace Core, Germany&#039;s Voluntary Social Year (Freiwilliges Soziales Jahr), or the EU Solidarity Corps?&lt;br /&gt;
&lt;br /&gt;
 * https://en.wikipedia.org/wiki/Voluntary_social_year&lt;br /&gt;
 * https://en.wikipedia.org/wiki/European_Solidarity_Corps&lt;br /&gt;
&lt;br /&gt;
I&#039;ve met a *lot* of Germans (and one person from Liechtenstein!) who took their [gap year](https://en.wikipedia.org/wiki/Gap_year) off to go abroad and help some cool non-profit.&lt;br /&gt;
&lt;br /&gt;
Our project&#039;s mission is to develop and document [open-source appropriate technology](https://en.wikipedia.org/wiki/Open-source_appropriate_technology) to enfranchise sustainable communities&#039; human rights. And we need volunteers!&lt;br /&gt;
&lt;br /&gt;
I&#039;m wondering if anyone else here has experience satisfying the requirements of such orgs, so that we can get listed in their &amp;quot;directory of cool nonprofits abroad&amp;quot; that their want-to-be-volunteers will see (and can apply-to).&lt;br /&gt;
&lt;br /&gt;
I imagine that one key requirement is met by us being able to provide Raft&#039;s IRS Determination Letter. What else do we need to do? Where do we apply?&lt;br /&gt;
&lt;br /&gt;
Can anyone with experience provide tips (or a link to a guide?) on how to get volunteers abroad doing a &amp;quot;voluntary social year&amp;quot;?&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# ...&lt;br /&gt;
# back to Terms of Use, which is where we left-off on the wiki&#039;s config of ConfirmAccount extension&lt;br /&gt;
## honestly, we probably should write a ToS for all volunteers, which extends beyond just the wiki&lt;br /&gt;
## I have already drafted (not yet published) some agreements for volunteers, but we haven&#039;t had any in-person volunteers that required us to use it&lt;br /&gt;
## so, I guess, we need distinct agreements for people who volunteer remotely vs volunteer in-person&lt;br /&gt;
## in any case, even in-person volunteers are going to start remotely &amp;gt;99% of the time, so we should probably figure out some system for them to &amp;quot;sign a document&amp;quot; such that a copy gets sent to them and stored with us&lt;br /&gt;
## the first thing that comes to the top of my head is copyleft. We need folks to agree that all of their contributions to Eco-Libre will be copyleft under dual license of CC BY-SA and GNU GPL.&lt;br /&gt;
## can I find some libre service that&#039;s like docusign for this? https://alternativeto.net/software/docusign/&lt;br /&gt;
### DocuSeal https://www.docuseal.com&lt;br /&gt;
#### + free cloud account (limited to 10 field types and 10 requests emails per month)&lt;br /&gt;
#### + self-hostable https://github.com/docusealco/docuseal&lt;br /&gt;
#### - docker https://www.docuseal.com/install&lt;br /&gt;
#### - even self -hosted solution has usage limits without buying a license https://www.docuseal.com/pricing&lt;br /&gt;
### OpenSign https://www.opensignlabs.com&lt;br /&gt;
#### + free cloud account (limited to 14 field types)&lt;br /&gt;
#### + self hostable https://www.docuseal.com&lt;br /&gt;
#### - docker https://docs.opensignlabs.com/docs/category/docker&lt;br /&gt;
#### + self-hosted doesn&#039;t appear to have any restrictions&lt;br /&gt;
### Documenso https://docs.opensignlabs.com/docs/category/docker&lt;br /&gt;
#### + free cloud account (limited to 5 documents per month) https://documenso.com/pricing&lt;br /&gt;
#### + self-hostable https://github.com/documenso/documenso&lt;br /&gt;
#### - docker https://docs.documenso.com/docs/self-hosting/deployment&lt;br /&gt;
#### + baremetal (non-docker) installation is documented https://github.com/documenso/documenso&lt;br /&gt;
#### - it&#039;s nodejs w/ npm&lt;br /&gt;
### LibreSign https://libresign.coop/&lt;br /&gt;
#### - no free cloud plan https://libresign.coop/pricing/&lt;br /&gt;
#### + self-hostable https://github.com/LibreSign/libresign&lt;br /&gt;
#### - no docs for self-hosting? installtion guide?&lt;br /&gt;
#### + github says it&#039;s a nextcloud app&lt;br /&gt;
## well, of thse, I think OpenSign or DDocumenso are the best options. my biggest concern is: can we export everything from the site, if they ever eliminate their free plan (or we outgrow them)?&lt;br /&gt;
## let&#039;s create accounts with both and get a feel for it&lt;br /&gt;
### well, shit, the signup page for documenso included their &amp;quot;sign here&amp;quot; digital field. It was so shitty, it nearly crashed my browser. so let&#039;s try open sign instead.&lt;br /&gt;
## ugh, OpenSign requires a phone number on sign-up&lt;br /&gt;
### ugh, password policy is dumb. it rejected a &amp;gt;50 char password because it requires a special symbol. makes me question their security. fortunately, these documents would need to be public, anyway.&lt;br /&gt;
### it accepted a bullshit phone number. good&lt;br /&gt;
### I immediately went to settings&lt;br /&gt;
#### I changed the document download filename format to include the date. It always bothers me when documents aren&#039;t dated in the filename..&lt;br /&gt;
#### I changed the date format to YYYY-MM-DD – iso format, sortable, and no ambiguity&lt;br /&gt;
#### In the setting&#039;s &amp;quot;widgets&amp;quot; tab, I also set the date to YYYY-MM-DD&lt;br /&gt;
#### In the settings&#039; &amp;quot;security&amp;quot; tab, I setup TOTP 2FA&lt;br /&gt;
### I went to my &amp;quot;profile&amp;quot;&lt;br /&gt;
#### It said my email wasn&#039;t verified. I never got an email *to* verify. I clicked the &amp;quot;Verify&amp;quot; button&lt;br /&gt;
##### gross. it sent an email with an OTP. the email had text/plain, but the only contents was &amp;quot;otp email&amp;quot;. I had to dig through some html to find the code.&lt;br /&gt;
# I clicked around in OpenSign. I expected there would be some place where I could type a document, but it only allows me to upload a pdf, jpg, png, jpeg, or docx. whey not OpenOffice (LibreOffice)? Hmm.&lt;br /&gt;
# not sure how this translates into being able to add input fields.&lt;br /&gt;
# using libreoffice, I created a test document with the contents&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
I agree not to act like an evil corporation.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# I exported it as a pdf, and uploaded it as a new &amp;quot;template&amp;quot; to opensign&lt;br /&gt;
## there&#039;s a lot of settings you can make&lt;br /&gt;
### you can change it so that everyone can sign at once, or (the default) has the intended party sign, then I sign. But I&#039;m not sure if I will *want* Eco-Libre to sign these documents at all?&lt;br /&gt;
### you can set the number of days that the person has to sign. it defaults to 15.&lt;br /&gt;
### you can add a bcc&lt;br /&gt;
### you can make the &amp;quot;certification pdf&amp;quot; merged into the signed document. well, apparently only if you pay for an upgrade. whatever.&lt;br /&gt;
### ah man, there&#039;s a cool feature that requries an OTP from the email address, but it requires upgrade&lt;br /&gt;
### you can specify a &amp;quot;redirect url&amp;quot; which is blank by default. I guess that&#039;s where they get sent after signing. That&#039;s cool. I could have it redirect to a &amp;quot;thank you; here&#039;s the next steps&amp;quot; doc. I set it to &#039;https://eco-libre.github.io/volunteer-test/&#039;&lt;br /&gt;
#### I&#039;m beginning to wonder if I shouldn&#039;t have made a repo named &#039;volunteer-test&#039; but instead made one named &#039;volunteer-onboarding&#039; in-which the volunteer test was only one section. hmm.&lt;br /&gt;
### the only other thing I could change was the pen ink colors. here in Ecuador, everything should be blue. so I disabled black and red.&lt;br /&gt;
## ok, after I click &amp;quot;next&amp;quot; I can decorate the page with a bunch of widgets. note that I cannot edit the text&lt;br /&gt;
### you can add a &amp;quot;role&amp;quot; for someone to sign. I just want one = the volunteer. So I added one named &amp;quot;Volunteer&amp;quot;&lt;br /&gt;
### I clicked the &amp;quot;Signature&amp;quot; widget, and a blue box popped-up on the bottom of the page&lt;br /&gt;
#### I hovered over it with my mouse, and a &amp;quot;gear&amp;quot; &amp;quot;person&amp;quot; &amp;quot;copy&amp;quot; and &amp;quot;trash&amp;quot; icons appeared.&lt;br /&gt;
#### I clicked the gear, and it let me choose the type of signatures accepted (draw, typed, upload, or default), and a &amp;quot;hint&amp;quot;&lt;br /&gt;
#### I clicked the &amp;quot;person&amp;quot; and it let me choose someone from contacts. I&#039;m creating a template, so that doesn&#039;t make sense (unless we had, like, *me* signing every document – which I don&#039;t think we&#039;ll do). So I left that empty&lt;br /&gt;
### there&#039;s a &amp;quot;text input widget&amp;quot;, which I guess is how I would let someone enter their name. I can make it optional, required, or read-only (relavant for the other &amp;quot;default value&amp;quot; option). I can change the font size and font color. So, I guess, the idea is that I would have left a blank space in the pdf, and later decorated it with this widget. I&#039;ll do that for the next test.&lt;br /&gt;
### there&#039;s a &amp;quot;image&amp;quot; widget – as in, the user can upload an image (I guess useful for profile photos)&lt;br /&gt;
### there&#039;s also widgets for stamp, initials, number, name, job title, company, email, date, cells, checkbox, dropdown, and radio button&lt;br /&gt;
### I dropped the &amp;quot;name&amp;quot; widget randomly near the top. So now I have two: name &amp;amp; signature.&lt;br /&gt;
### I saved the template&lt;br /&gt;
### I went back and edited it. I realized there&#039;s an option &amp;quot;prefiil by owner&amp;quot; vs &amp;quot;volunteer&amp;quot;. apparently I can add the name and stuff before I send it out. I left it at &amp;quot;volunteer&amp;quot;&lt;br /&gt;
## there was an option to make the template public, but I don&#039;t have a public profile. I went to edit my profile, but the box for entering my username for the public profile is grey-out. Unlike other places, it doesn&#039;t say &amp;quot;upgrade now&amp;quot; so idk wtf is going on&lt;br /&gt;
### after making it public, it gave me some js to embed the document. oh, so this is so that I can embed the docs on my own site. well, that&#039;s kinda cool. but I really don&#039;t want to embed a third party javascript.&lt;br /&gt;
## anyway, back to &amp;quot;manage templates&amp;quot;&lt;br /&gt;
### I tried to edit the template again, but it gave me an error&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
You cannot edit a public template directly. To make changes, the template will be set to private, and you&#039;ll need to make it public again afterward. Do you want to continue?&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
### so I unchecked &amp;quot;public&amp;quot; and edited it&lt;br /&gt;
### I added a &amp;quot;date&amp;quot; widget. I set it to &amp;quot;signing date&amp;quot; and &amp;quot;read only&amp;quot; and &amp;quot;required&amp;quot; and placed it just above the signature&lt;br /&gt;
## I went back to &amp;quot;manage templates&amp;quot; and clicked the &amp;quot;+ use&amp;quot; button.&lt;br /&gt;
### it gave me a drop down menu of our contacts, but it&#039;s empty. so I pressed the red &amp;quot;+&amp;quot; button to add a new contact&lt;br /&gt;
### I added a contact named &amp;quot;Michael Altfield&amp;quot; and my email address. then I selected this contact and clicked &amp;quot;next&amp;quot;&lt;br /&gt;
### It asked &amp;quot; Are you sure you want to send out this document for signatures?&amp;quot; and I clicked &amp;quot;Send&amp;quot;&lt;br /&gt;
### I immediately got an email. Again, the shitty email plaintext contetns was just &amp;quot;mail&amp;quot; and I had to read-through the html to find a encoding-broken link :/&lt;br /&gt;
#### I created a bug report for them to fix the `text/plain` content type of emails here https://github.com/OpenSignLabs/OpenSign/issues/2156&lt;br /&gt;
### using some mutt scripting fuckery, I&#039;m able to extract the URLs. But I can&#039;t figure out which one is to go to the document. Two of the four are both to &amp;quot;click.opensignlabs.com. the first one appears to go to a login page, and the second one doesn&#039;t. I tried the second one&lt;br /&gt;
#### wtf, that link brought me to a single dark page with a single dead pixel in the center of the screen.&lt;br /&gt;
### ok, looks like the first link (with the login that I was trying to avoid) is a button that says &amp;quot;sign here&amp;quot;&lt;br /&gt;
### ohhh, and the other one is an image. I guess it&#039;s a tracking pixel. that explains it.&lt;br /&gt;
### back in my admin dashboard, under Documents -&amp;gt; In-Progress, I can see Michael Altfield has &amp;quot;Yet to sign&amp;quot;&lt;br /&gt;
### If I click on &amp;quot;sent&amp;quot; then there&#039;s a section &amp;quot;viewed on&amp;quot; and &amp;quot;signed on&amp;quot; that are both &amp;quot;-&amp;quot; – so I guess that tracking pixel didn&#039;t really work, huh..&lt;br /&gt;
### fine, I went to the first link&lt;br /&gt;
#### oh, awesome, it didn&#039;t make me login! It redirected me to the document. perfect! It popped-up a modal that said&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
I confirm that I have read and understood the Electronic Record and Signature Disclosure and consent to use electronic records and signatures.&lt;br /&gt;
Note: Agreeing to this does not mean you are signing the document immediately. This only allows you to review the document electronically. You will have the opportunity to read it in full and decide whether to sign it afterward.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
### I clicked &amp;quot;I confirm &amp;amp; agree to continue&amp;quot;&lt;br /&gt;
### it did the whole modal popup &amp;quot;guide&amp;quot; thing, which was an option I could have disabled. basically it said to type my name (which was, cool, auto-completed to &amp;quot;Michael Altfield&amp;quot;), listed the signers (just me), and then highlighted the widgets at the bottom (date and sig), then told me how to zoom-in, then highlighted the &amp;quot;you&#039;re done&amp;quot; buttons = &amp;quot;decline&amp;quot; &amp;quot;download&amp;quot; or &amp;quot;finish&amp;quot;&lt;br /&gt;
### it let me change my name, but I should probably make that read-only now that I know it auto-completes with the name from the contacts&lt;br /&gt;
### it wouldn&#039;t let me change the date, which it autocompletd to today&lt;br /&gt;
### it did let me click on the signature widget, which opened a modal with a box where I could draw my nanme. I did that. It was fast, wayy better than Documenso – no issues here with the browser crashing&lt;br /&gt;
### alternatively, I could click &amp;quot;type&amp;quot; and it displayed my name in some cursive fonts, which I could choose-from. and there was an option to upload image.&lt;br /&gt;
### I chose draw and did my signature and clicked next. very fast.&lt;br /&gt;
### it asked if I&#039;m sure I want to finish the doc. I clicked &amp;quot;Review&amp;quot;&lt;br /&gt;
### then I clicked the &amp;quot;finish&amp;quot; button at the top&lt;br /&gt;
### it said this&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Document signed&lt;br /&gt;
Congratulations! 🎉 This document has been successfully signed by all participants!&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
### and there was a countdown to redirect. in 3 seconds, the browser redirected to here. perfect! https://eco-libre.github.io/volunteer-test/en/main/&lt;br /&gt;
### back in the opensign admin dashboard, the row is absent from &amp;quot;Documents -&amp;gt; in progress&amp;quot;. I found it in &amp;quot;documents -&amp;gt; completed&amp;quot;&lt;br /&gt;
### I clicked the &amp;quot;eye&amp;quot; next to the document, and it showed me the document, including the signature that I left in the other browser. I can also click &amp;quot;print&amp;quot; or &amp;quot;certifiacte&amp;quot; or &amp;quot;download&amp;quot;&lt;br /&gt;
#### &amp;quot;print&amp;quot; does what you&#039;d expect. I can print or use the browser&#039;s &amp;quot;save to pdf&amp;quot; of the document, which includes the signature&lt;br /&gt;
#### &amp;quot;certifiacte&amp;quot; opens some legal-looking pdf (something similar to docusign) with a some metadata, including a sah256 hash, ip address of both document issuer (me) and the signer (also me, but different IP because Tor). And it includes an image of the drawn signature.&lt;br /&gt;
#### &amp;quot;download&amp;quot; then lets me choose if i want the download pdf or downlaod pdf + certifiate. I chose both.&lt;br /&gt;
##### lol that failed. the browser didn&#039;t let me download both&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Something went wrong, refreshing this page may solve this issue&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
#### I tried just &amp;quot;downlaod pdf&amp;quot;&lt;br /&gt;
##### that gave me the document, plus the signature and other &amp;quot;widgets&amp;quot; filled-out, plus the following in the top-left&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
OpenSign™ DocumentId: pS5lEdCyIp&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
##### I guess that&#039;s something like their observatory. they said I can turn it off only if I have a paid plan. But it&#039;s probably necessary for them as a thrid party to confirm the signature.&lt;br /&gt;
#### anyway, I tested the hash on the file that I downloaded&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[user@disp6411 Downloads]$ sha256sum Test\ Agreement\ -\ REDACTED@eco-libre.org\ -\ 21-Apr-2026\ 04_01\ PM.pdf &lt;br /&gt;
569152424a49024297f4bb550291036896de3189e70efb1fee6a9e39333bbe77  Test Agreement - REDACTED@eco-libre.org - 21-Apr-2026 04_01 PM.pdf&lt;br /&gt;
[user@disp6411 Downloads]$ &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
#### I wanted to confirm that matches the certificate, but when I clicked &amp;quot;certificate&amp;quot; again, I got a permissions issue!&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;Error&amp;gt;&lt;br /&gt;
&amp;lt;Code&amp;gt;AccessDenied&amp;lt;/Code&amp;gt;&lt;br /&gt;
&amp;lt;Message&amp;gt;Request has expired.&amp;lt;/Message&amp;gt;&lt;br /&gt;
&amp;lt;Resource&amp;gt;&lt;br /&gt;
legadratw3d/460246e423800b30c50c967ef6157248_certificate.pdf&lt;br /&gt;
&amp;lt;/Resource&amp;gt;&lt;br /&gt;
&amp;lt;RequestId&amp;gt;not available&amp;lt;/RequestId&amp;gt;&lt;br /&gt;
&amp;lt;/Error&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
### fortunately I still had it open in another tab, and I copied this from it&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Generated On 2026-04-21, 15:56:29 GMT -05:00&lt;br /&gt;
Certificate of Completion&lt;br /&gt;
Summary&lt;br /&gt;
Document Id : pS5lEdCyIp&lt;br /&gt;
Document Name : Test Agreement&lt;br /&gt;
Document hash (sha256) : 569152424a49024297f4bb550291036896de3189e70efb1fee6a9e39333bbe77&lt;br /&gt;
Organization : Eco-Libre&lt;br /&gt;
Created on : 2026-04-21, 15:25:55 GMT -05:00&lt;br /&gt;
Completed on : 2026-04-21, 15:56:29 GMT -05:00&lt;br /&gt;
Signers : 1&lt;br /&gt;
Document originator&lt;br /&gt;
Name : Eco-Libre&lt;br /&gt;
Email : REDACTED@eco-libre.org&lt;br /&gt;
IP address : 94.185.80.231&lt;br /&gt;
Signer 1&lt;br /&gt;
Name : Michael Altfield&lt;br /&gt;
Email : REDACTED@eco-libre.org&lt;br /&gt;
Viewed on : 2026-04-21, 15:50:32 GMT -05:00&lt;br /&gt;
Signed on : 2026-04-21, 15:56:29 GMT -05:00&lt;br /&gt;
IP address : 2001:67c:e60:c0c:192:42:116:52&lt;br /&gt;
Signature :&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
### so the hashes do match; that&#039;s cool&lt;br /&gt;
### but will I be able to view the certificates in the future?!?&lt;br /&gt;
### I went back to the admin dashboard -&amp;gt; documents -&amp;gt; completed -&amp;gt; (eye icon) -&amp;gt; certificate&lt;br /&gt;
#### ok, that worked. I can pull it up again.&lt;br /&gt;
### curiously it still says I&#039;ve sent 0/15 emails this month&lt;br /&gt;
#### oh, I refrehed the page. now it says 1/15.&lt;br /&gt;
### I also see that my admin email got an email with an attachment titled &amp;quot;Test Agreement -&lt;br /&gt;
 REDACTED@eco-libre.org - 22-Apr-2026 02:26 AM.pdf&amp;quot; – so I guess it did email it to me&lt;br /&gt;
#### oh, awesome, there&#039;s also an attachment named &amp;quot;certificate.pdf&amp;quot;&lt;br /&gt;
#### the email is 83 KB + 139 KB for the two attachments, so that&#039;s reasonable. and that eliminates a lot of fear around exports. we&#039;ll have this data forever if we keep this email account&#039;s forever (or setup an automated backup process)&lt;br /&gt;
### there&#039;s also this &amp;quot;open sign drive&amp;quot; thing. I wasn&#039;t sure if this was an opt-in or pro feature&lt;br /&gt;
#### looks like the signed document is there too. it&#039;s just called &amp;quot;Test Agreement&amp;quot; – which isn&#039;t very nice, but I can see the &amp;quot;Created date&amp;quot; – which should be good enough.&lt;br /&gt;
## ok, I think we have a solution! this definitely meets our needs – unless/until we get &amp;gt;=6 volunteers per month (if we have them sign two documents each)&lt;br /&gt;
# I spent some time designing a letterhead in LibreOffice&lt;br /&gt;
# looks like what we want is a Contributor License Agreement https://en.wikipedia.org/wiki/Contributor_license_agreement&lt;br /&gt;
# looks like a lot of projects just use the CLA assistant tool on gthub https://cla-assistant.io/&lt;br /&gt;
## that&#039;s kinda cool, but I honestly don&#039;t know how long we&#039;ll be on github. If it&#039;s tied to an issue (and not something actually in git), it&#039;ll be hard to move to codeberg in the future&lt;br /&gt;
## still, I like the tl;dr CLA; short &amp;amp; sweet (maybe too much so) https://gist.github.com/waldyrious/e50feec13683e565769fbd58ce503d4e&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
## tldr-pages contributor agreement&lt;br /&gt;
&lt;br /&gt;
(1) I assert that any past, present and future contributions I make to the tldr-pages project are my own work, and that I have the right to license them.&lt;br /&gt;
&lt;br /&gt;
(2) I agree to license all my contributions to the tldr-pages project under the terms of the license included in the tldr-pages repository I’m contributing to.&lt;br /&gt;
&lt;br /&gt;
(3) I grant the tldr-pages organization a license to distribute my contributions under any open content license compliant with the Open Definition [a], or any open source software license approved by the Open Source Initiative [b], as applicable.&lt;br /&gt;
&lt;br /&gt;
a. http://opendefinition.org/licenses&lt;br /&gt;
&lt;br /&gt;
b. https://opensource.org/licenses/alphabetical&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# apparently Connonical created a project called Harmony for the purpose of making contributor agreements https://www.harmonyagreements.org/&lt;br /&gt;
## apparently these things are more complicated between individuals vs other entities. it&#039;s possible we&#039;ll work with for-profit companies in the future, and for that it&#039;d be good if we were setup to accept both&lt;br /&gt;
## ugh, there&#039;s also a distinction between a &amp;quot;license&amp;quot; and a &amp;quot;assignment&amp;quot;&lt;br /&gt;
### I skimmed their guide, but I couldn&#039;t understand the difference between these two https://www.harmonyagreements.org/guide&lt;br /&gt;
# fedora project also has one, with an emphasis on *not* taking the copyright away from the user (some controversy about copyright transfer in different CLAs – such as from for-profit companies that later fork &amp;amp; lock-up their user-contributed content under a different, less-permisive license (though I really don&#039;t understand how that&#039;s possible if we use a CC SA license) https://docs.fedoraproject.org/en-US/legal/fpca/&lt;br /&gt;
## oh, fedora uses MIT license --which is probably why they need to add all that&lt;br /&gt;
# apahce has one https://www.apache.org/licenses/contributor-agreements.html#clas&lt;br /&gt;
## cool, they accept signing with gpg :D&lt;br /&gt;
# Element (the matrix client) which uses AGPL has a pretty good document, which is 3 pages long https://static.element.io/legal/contributor-license-agreement.pdf&lt;br /&gt;
# a lot of these are kinda software heavy. I wonder if there&#039;s any good OSHW orgs that we can try?&lt;br /&gt;
## I checked OSHWA, but didn&#039;t see a boilerplate CLA that we could copy https://oshwa.org/&lt;br /&gt;
### they did have a CoC. Jesus, how many policies do we need to make? https://oshwa.org/resources/how-to-write-a-code-of-conduct/&lt;br /&gt;
### I publicy tooted @oshwassociation@mastodon.social if they had something to recommend https://chaos.social/@ecolibre/116444933464052302&lt;br /&gt;
### hmm...here they recommend CERN OHL v2 instead of CC BY-SA, if we&#039;re using something like STL files that are generated from CAD design https://oshwa.org/resources/sharing-best-practices/&lt;br /&gt;
## CERN does have some does on CLAs https://ospo.docs.cern.ch/howtos/signing-CLA-DCO/&lt;br /&gt;
## CERN links to this short one, from the Linux Foundation https://developercertificate.org/&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Developer Certificate of Origin&lt;br /&gt;
Version 1.1&lt;br /&gt;
&lt;br /&gt;
Copyright (C) 2004, 2006 The Linux Foundation and its contributors.&lt;br /&gt;
&lt;br /&gt;
Everyone is permitted to copy and distribute verbatim copies of this&lt;br /&gt;
license document, but changing it is not allowed.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Developer&#039;s Certificate of Origin 1.1&lt;br /&gt;
&lt;br /&gt;
By making a contribution to this project, I certify that:&lt;br /&gt;
&lt;br /&gt;
(a) The contribution was created in whole or in part by me and I&lt;br /&gt;
	have the right to submit it under the open source license&lt;br /&gt;
	indicated in the file; or&lt;br /&gt;
&lt;br /&gt;
(b) The contribution is based upon previous work that, to the best&lt;br /&gt;
	of my knowledge, is covered under an appropriate open source&lt;br /&gt;
	license and I have the right under that license to submit that&lt;br /&gt;
	work with modifications, whether created in whole or in part&lt;br /&gt;
	by me, under the same open source license (unless I am&lt;br /&gt;
	permitted to submit under a different license), as indicated&lt;br /&gt;
	in the file; or&lt;br /&gt;
&lt;br /&gt;
(c) The contribution was provided directly to me by some other&lt;br /&gt;
	person who certified (a), (b) or (c) and I have not modified&lt;br /&gt;
	it.&lt;br /&gt;
&lt;br /&gt;
(d) I understand and agree that this project and the contribution&lt;br /&gt;
	are public and that a record of the contribution (including all&lt;br /&gt;
	personal information I submit with it, including my sign-off) is&lt;br /&gt;
	maintained indefinitely and may be redistributed consistent with&lt;br /&gt;
	this project or the open source license(s) involved.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# ok, I think I&#039;m muddling two things here&lt;br /&gt;
## I think the wiki&#039;s TOS should be simpler. If I require all wiki users to become volunteers first, and the volunteer onboarding requires the signing of documents, then the real legal stuff should be in the documents.&lt;br /&gt;
## for now, let&#039;s just do the bullet point thing on the wiki ToS. And I&#039;ll wait to hear back from OSHWA about the CLA for a *proper* leagl document later – maybe TODO when we actually get another volunteer application..&lt;br /&gt;
# I set the ToS to the DCO from the linux foundation https://wiki.eco-libre.org/wiki/Eco-Libre:Terms_of_Service&lt;br /&gt;
## ah crap, I just realized that it says &amp;quot;changing it is not allowed&amp;quot;. I already changed it by removing the Linux Foundation from the name (I moved it to the bottom in an &amp;quot;attribution&amp;quot; section, which is another change! damn ND licenses! I&#039;ll have to find something else)&lt;br /&gt;
# I want to use the tl;dr gist, but it&#039;s not licensed! https://gist.github.com/waldyrious/e50feec13683e565769fbd58ce503d4e#file-tldr-pages-cla-md&lt;br /&gt;
## the profile of the author says they&#039;re a wikipedian and anarchist, so they&#039;ll probably be down to license it openly&lt;br /&gt;
## I asked here https://gist.github.com/waldyrious/e50feec13683e565769fbd58ce503d4e?permalink_comment_id=6112400#gistcomment-6112400&lt;br /&gt;
# another issue with a lot of these CLAs is that they&#039;re pretty old, and don&#039;t touch on AI.&lt;br /&gt;
## I&#039;m thinking we should have a policy that forbids contributions from Eco-Libre volunteers that do any research or design work with AI, since it presents serious legal issues around copyrights. I really do want 100% of our work to be very CC BY-SA. With nothing to muddle the waters. We&#039;re doing this designs ourselves to build an open-source commons, built only individual human contributions and only other openly-licensed works&lt;br /&gt;
## clojure already addressed this in their CLA (they just call it CA = Contributor Agreement) https://clojure.org/dev/contributor_agreement&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
No Generated Code&lt;br /&gt;
&lt;br /&gt;
Clojure’s code is written and reviewed by humans. Code generated by a large language model or similar technology, such as Anthropic’s Claude, GitHub/Microsoft’s Copilot, OpenAI’s ChatGPT, Facebook/Meta’s Code Llama et al, is not compliant with the covenants and representations of Clojure’s Contributor’s Agreement, and is thus not acceptable as code for Clojure.&lt;br /&gt;
&lt;br /&gt;
An exception may be made for human written generators whose source code is contributed along with the patch&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## I don&#039;t like that exception. The source code doesn&#039;t just need to be submitted along with the patch. the whole training set data needs to be submitted along with the patch, which is practically impossible.&lt;br /&gt;
## weird, they call it the &amp;quot;Rich Hickey Contributor Agreement&amp;quot; https://na1.documents.adobe.com/public/esignWidget?wid=CBFCIBAA3AAABLblqZhCSXRbJ7T5RGvmMvmpg3CzvkF_RcpWXMnGWW_W9340ztJ3-ChQ0m18hA-d06ufD8Yk*&lt;br /&gt;
### oh good, the document itself is CC BY-SA&lt;br /&gt;
## the source for it was oracle&#039;s OCA https://www.oracle.com/technetwork/oca-faq-405384.pdf&lt;br /&gt;
### yeah, the second-to-last FAQ question says that the OCA is CC BY-SA &lt;br /&gt;
### looks like neither of them mention AI in the document itself :/&lt;br /&gt;
### maybe I don&#039;t like the RHCA contents, but I do really like the header and footer and how clearly it&#039;s licened itself as CC BY-SA&lt;br /&gt;
# the linux foundation has a CLA generator, but it&#039;s authwalled :( https://easycla.lfx.linuxfoundation.org/#/&lt;br /&gt;
# cyanogenmod&#039;s is pretty nice; not too long. unfortunately the license isn&#039;t clear https://web.archive.org/web/20160308140334/http://review.cyanogenmod.org/static/cla_individual.html&lt;br /&gt;
# same for Discourse; it&#039;s about 7 paragraph bullet points long. unfortuantely the license isn&#039;t clear https://cla-assistant.io/discourse/discourse&lt;br /&gt;
## apparently it&#039;s an apache license https://github.com/cla-assistant/cla-assistant/blob/main/LICENSE&lt;br /&gt;
# django has two: indivdual and corproate. apparently adapted from apache&#039;s (so likely licensed under apache, but I should confirm&lt;br /&gt;
## https://media.djangoproject.com/foundation/icla.pdf&lt;br /&gt;
## https://media.djangoproject.com/foundation/icla.pdf&lt;br /&gt;
# evil corps like meta and google have CLAs, but I doubt they&#039;re licensed openly&lt;br /&gt;
## https://code.facebook.com/cla/individual&lt;br /&gt;
## https://cla.developers.google.com/about/google-individual?csw=1&lt;br /&gt;
# here&#039;s hashicorp&#039;s. I don&#039;t think it&#039;s licensed openly https://www.hashicorp.com/en/cla&lt;br /&gt;
# Here&#039;s Hoe Assistant https://www.home-assistant.io/blog/2017/01/21/home-assistant-governance/&lt;br /&gt;
## apparently Matthew Garret convinced them to change their CLA from GitHub&#039;s to this one https://www.home-assistant.io/blog/2017/01/21/home-assistant-governance/&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
By making a contribution to this project, I certify that:&lt;br /&gt;
&lt;br /&gt;
(a) The contribution was created in whole or in part by me and I&lt;br /&gt;
	have the right to submit it under the Apache 2.0 license; or&lt;br /&gt;
&lt;br /&gt;
(b) The contribution is based upon previous work that, to the best&lt;br /&gt;
	of my knowledge, is covered under an appropriate open source&lt;br /&gt;
	license and I have the right under that license to submit that&lt;br /&gt;
	work with modifications, whether created in whole or in part&lt;br /&gt;
	by me, under the Apache 2.0 license; or&lt;br /&gt;
&lt;br /&gt;
(c) The contribution was provided directly to me by some other&lt;br /&gt;
	person who certified (a), (b) or (c) and I have not modified&lt;br /&gt;
	it.&lt;br /&gt;
&lt;br /&gt;
(d) I understand and agree that this project and the contribution&lt;br /&gt;
	are public and that a record of the contribution (including all&lt;br /&gt;
	personal information I submit with it) is maintained indefinitely&lt;br /&gt;
	and may be redistributed consistent with this project or the open&lt;br /&gt;
	source license(s) involved.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## is it just me, or does that look like the one from the Linux Foundation, except it was modified to have the section saying &amp;quot;you can&#039;t modify this&amp;quot; removed. Hmm./.&lt;br /&gt;
## yeah, they say that in attribtuion&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
The text of this license is available under the Creative Commons Attribution-ShareAlike 3.0 Unported License. It is based on the Linux Developer Certificate Of Origin, but is modified to explicitly use the Apache 2.0 license and not mention sign-off.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## idk, maybe they got explicit permission from the Linux Foundation to modify it and re-license it CC BY-SA?&lt;br /&gt;
## I asked them if they got permission and to publish proof, so we could do the same https://github.com/home-assistant/home-assistant.io/issues/44892&lt;br /&gt;
&lt;br /&gt;
= 2026-04-20 =&lt;br /&gt;
# I got a link from a friend from a pretty cool sounding similar project https://projectkamp.com/&lt;br /&gt;
## sounds like they have similar ideas as Eco-Libre, except they already bought land already&lt;br /&gt;
## They claim to use CC BY-SA to license all their works, but their videos are not marked as-such on YouTube. And, because YouTube is trash, I can&#039;t view their videos  https://academy.projectkamp.com/start/intro/#open-source--license&lt;br /&gt;
## I wanted to email them to update the license on their YouTube videos (so, at least, they could be archived on archive.org and uploaded to PeerTube, etc), but I couldn&#039;t find their email https://projectkamp.com/faq.html&lt;br /&gt;
## Their footer says they&#039;re part of One Army (along with, eg Precious Plastic), so I emailed One Army asking for the email address of Project Kamp https://www.onearmy.earth/&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Hello,&lt;br /&gt;
&lt;br /&gt;
Can you please tell me the email address of Project Kamp?&lt;br /&gt;
&lt;br /&gt;
I&#039;m looking to get in contact with Project Kamp over email, but I couldn&#039;t find a way to email them from their website:&lt;br /&gt;
&lt;br /&gt;
 * https://projectkamp.com/faq.html&lt;br /&gt;
&lt;br /&gt;
Please send me the email address for Project Kamp.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Thank you,&lt;br /&gt;
&lt;br /&gt;
Michael Altfield&lt;br /&gt;
https://www.michaelaltfield.net&lt;br /&gt;
PGP Fingerprint: 0465 E42F 7120 6785 E972  644C FE1B 8449 4E64 0D41&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## TODO: add Project Kamp to our &#039;common-files&#039; repo&#039;s docs as a &amp;quot;Similar Project&amp;quot;&lt;br /&gt;
# ...&lt;br /&gt;
# Tomorrow we&#039;re publishing our partnership with Raft Foundation, so we can accept tax-deductable donations https://www.eco-libre.org/raft-2026/&lt;br /&gt;
# Some weeks ago I did updates of wordpress, including adding new plugins. One of them was ActivityPub&lt;br /&gt;
# I enabled ActivityPub, but the Settings page gives me a &amp;quot;504 Gateway Time-out&amp;quot; error from nginx https://www.eco-libre.org/wp-admin/options-general.php?page=activitypub&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;head&amp;gt;&amp;lt;title&amp;gt;504 Gateway Time-out&amp;lt;/title&amp;gt;&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;h1&amp;gt;504 Gateway Time-out&amp;lt;/h1&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&amp;lt;center&amp;gt;nginx&amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## here&#039;s the error.log entry for nginx&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
2026/04/20 17:37:36 [error] 1992101#1992101: *2507383 upstream timed out (110: Connection timed out) while reading response header from upstream, client: 64.42.180.66, server: www.eco-libre.org, request: &amp;quot;GET /wp-admin/options-general.php?page=activitypub HTTP/1.1&amp;quot;, upstream: &amp;quot;http://127.0.0.1:6081/wp-admin/options-general.php?page=activitypub&amp;quot;, host: &amp;quot;www.eco-libre.org&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## and here&#039;s the apache logs&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
==&amp;gt; www.eco-libre.org/access.log &amp;lt;==&lt;br /&gt;
64.42.180.66 - - [20/Apr/2026:17:54:54 +0000] &amp;quot;POST /wp-admin/admin-ajax.php HTTP/1.1&amp;quot; 200 792 &amp;quot;https://www.eco-libre.org/wp-admin/plugins.php?plugin_status=all&amp;amp;paged=1&amp;amp;s&amp;quot; &amp;quot;Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.0.0 Safari/537.36&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==&amp;gt; www.eco-libre.org/error.log &amp;lt;==&lt;br /&gt;
[Mon Apr 20 17:55:23.176842 2026] [proxy_fcgi:error] [pid 526343:tid 526374] (70007)The timeout specified has expired: [client 64.42.180.66:0] AH01075: Error dispatching request to : (polling)&lt;br /&gt;
&lt;br /&gt;
==&amp;gt; www.eco-libre.org/access.log &amp;lt;==&lt;br /&gt;
64.42.180.66 - - [20/Apr/2026:17:54:23 +0000] &amp;quot;GET /wp-admin/options-general.php?page=activitypub HTTP/1.1&amp;quot; 504 467 &amp;quot;-&amp;quot; &amp;quot;Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.0.0 Safari/537.36&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## I don&#039;t know what&#039;s wrong, and that&#039;s not enough to debug it. I tested ActivityPub on another site, and the config page had no issues. But I ended-up not finishing its setup because I wanted the actor URL to use the naked domain, and I&#039;m still waiting to hear back on that https://github.com/Automattic/wordpress-activitypub/issues/3164&lt;br /&gt;
# anyway, I wrote a newsletter, scheduled it to go out for tomorrow at 15:00 UTC&lt;br /&gt;
# I also wrote the update for Open Collective&lt;br /&gt;
# I put the &amp;quot;Donate&amp;quot; page in the menu bar&lt;br /&gt;
## on mobile, this made the top navbar spill over into a second row, so I moved &amp;quot;Contact&amp;quot; under &amp;quot;Join Us&amp;quot;&lt;br /&gt;
### to make up for this, I started creating footer areas&lt;br /&gt;
### the theme supports three footers. one on the left, center, and right&lt;br /&gt;
### I put copyright &amp;amp; copyleft info on the right footer&lt;br /&gt;
### I put social media icons in the middle footer&lt;br /&gt;
### I put a &amp;quot;Contact&amp;quot; link on the left footer&lt;br /&gt;
## As I was styling the left footer, I stopped being able to update it suddenly. I kept getting error&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
There was an error. Could not get a valid response from the server.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## closer inspection of the networking tab of the browsers debugger showed an error when doing an OPTIONS request&lt;br /&gt;
## well, that&#039;s probably because (for security) we block all but GET POST and HEAD&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
if ($request_method !~ ^(GET|HEAD|POST)$ ) {&lt;br /&gt;
   # note: 444 is a meta code; it doesn&#039;t return anything, actually&lt;br /&gt;
   #       it just logs, drops, &amp;amp; closes the connection (useful&lt;br /&gt;
   #       against malware)&lt;br /&gt;
   return 444;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## well, fuck, our widgets are bricked&lt;br /&gt;
## I asked about this here https://wordpress.org/support/topic/configure-wordpress-to-never-use-options-requests/&lt;br /&gt;
## as a workaround, I found that I *can* edit these footer widgets from the theme -&amp;gt; customize -&amp;gt; widgets section of the site – which sends POST as expected https://www.eco-libre.org/wp-admin/customize.php?return=%2Fwp-admin%2Fwidgets.php&lt;br /&gt;
# I realized that I can&#039;t post to lemmy anymore, because our sdf instance has been down since 2026-04-07&lt;br /&gt;
# I went ahead and created an accout request on the solar punk instance https://slrpnk.net/&lt;br /&gt;
## if we&#039;re accepted, I&#039;d also like to create a community specific to Eco-Libre &lt;br /&gt;
# I also created one on lemmy.vg&lt;br /&gt;
&lt;br /&gt;
= 2026-04-19 =&lt;br /&gt;
# I failed to login to the wiki today. I got error&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[REDACTED] 2026-04-19 20:34:48: Fatal exception of type &amp;quot;DomainException&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# exception.log seems to suggest that I set a bad config for the password policy yesterday&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
==&amp;gt; exception.log &amp;lt;==&lt;br /&gt;
2026-04-19 20:36:27 mail wiki_el_db-rHb3: [REDACTED] /index.php?title=Special:UserLogin&amp;amp;returnto=MediaWiki&lt;br /&gt;
%3ARequestaccount-agree   DomainException: Invalid password policy config. No check defined for &#039;PasswordCannotMatchUsername&#039;&lt;br /&gt;
.&lt;br /&gt;
#0 /usr/share/mediawiki/includes/password/UserPasswordPolicy.php(88): MediaWiki\Password\UserPasswordPolicy-&amp;gt;checkPolicies()&lt;br /&gt;
#1 /usr/share/mediawiki/includes/user/User.php(995): MediaWiki\Password\UserPasswordPolicy-&amp;gt;checkUserPassword()&lt;br /&gt;
#2 /usr/share/mediawiki/includes/auth/AbstractPasswordPrimaryAuthenticationProvider.php(114): MediaWiki\User\User-&amp;gt;checkPassw&lt;br /&gt;
ordValidity()&lt;br /&gt;
#3 /usr/share/mediawiki/includes/auth/AbstractTemporaryPasswordPrimaryAuthenticationProvider.php(155): MediaWiki\Auth\Abstrac&lt;br /&gt;
tPasswordPrimaryAuthenticationProvider-&amp;gt;checkPasswordValidity()&lt;br /&gt;
#4 /usr/share/mediawiki/includes/auth/AuthManager.php(625): MediaWiki\Auth\AbstractTemporaryPasswordPrimaryAuthenticationProv&lt;br /&gt;
ider-&amp;gt;beginPrimaryAuthentication()&lt;br /&gt;
#5 /usr/share/mediawiki/includes/auth/AuthManager.php(535): MediaWiki\Auth\AuthManager-&amp;gt;continueAuthentication()&lt;br /&gt;
#6 /usr/share/mediawiki/includes/specialpage/AuthManagerSpecialPage.php(390): MediaWiki\Auth\AuthManager-&amp;gt;beginAuthentication&lt;br /&gt;
()&lt;br /&gt;
#7 /usr/share/mediawiki/includes/specialpage/AuthManagerSpecialPage.php(524): MediaWiki\SpecialPage\AuthManagerSpecialPage-&amp;gt;performAuthenticationStep()&lt;br /&gt;
#8 [internal function]: MediaWiki\SpecialPage\AuthManagerSpecialPage-&amp;gt;handleFormSubmit()&lt;br /&gt;
#9 /usr/share/mediawiki/includes/htmlform/HTMLForm.php(822): call_user_func()&lt;br /&gt;
#10 /usr/share/mediawiki/includes/specialpage/AuthManagerSpecialPage.php(455): MediaWiki\HTMLForm\HTMLForm-&amp;gt;trySubmit()&lt;br /&gt;
#11 /usr/share/mediawiki/includes/specialpage/LoginSignupSpecialPage.php(403): MediaWiki\SpecialPage\AuthManagerSpecialPage-&amp;gt;trySubmit()&lt;br /&gt;
#12 /usr/share/mediawiki/includes/specialpage/SpecialPage.php(728): MediaWiki\SpecialPage\LoginSignupSpecialPage-&amp;gt;execute()&lt;br /&gt;
#13 /usr/share/mediawiki/includes/specialpage/SpecialPageFactory.php(1717): MediaWiki\SpecialPage\SpecialPage-&amp;gt;run()&lt;br /&gt;
#14 /usr/share/mediawiki/includes/actions/ActionEntryPoint.php(505): MediaWiki\SpecialPage\SpecialPageFactory-&amp;gt;executePath()&lt;br /&gt;
#15 /usr/share/mediawiki/includes/actions/ActionEntryPoint.php(147): MediaWiki\Actions\ActionEntryPoint-&amp;gt;performRequest()&lt;br /&gt;
#16 /usr/share/mediawiki/includes/MediaWikiEntryPoint.php(200): MediaWiki\Actions\ActionEntryPoint-&amp;gt;execute()&lt;br /&gt;
#17 /usr/share/mediawiki/index.php(58): MediaWiki\MediaWikiEntryPoint-&amp;gt;run()&lt;br /&gt;
#18 {main}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# here&#039;s what we have&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$wgPasswordPolicy[&#039;policies&#039;][&#039;default&#039;][&#039;PasswordCannotMatchUsername&#039;] = true;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# but the docs suggest there&#039;s an additioanl array needed for &amp;quot;value&amp;quot;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$wgPasswordPolicy[&#039;policies&#039;][&#039;default&#039;][&#039;PasswordCannotMatchUsername&#039;][&#039;value&#039;] = false;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# if I expand &amp;quot;Older Versions&amp;quot; then the &#039;PasswordCannotMatchUsername&#039; disappears from mediawiki &amp;gt;1.37. The docs still say it&#039;s an option, but I didn&#039;t find it in our files https://www.mediawiki.org/wiki/Manual:$wgPasswordPolicy#Default&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@mail:/var/www/html/wiki.eco-libre.org# grep -irl PasswordCannotMatchUsername *&lt;br /&gt;
LocalSettings.20260419.php&lt;br /&gt;
LocalSettings.php&lt;br /&gt;
root@mail:/var/www/html/wiki.eco-libre.org# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# it does appear that &#039;PasswordCannotBeSubstringInUsername&#039; is available. let&#039;s use that instead.&lt;br /&gt;
# ugh, next attempt gives another failure&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
==&amp;gt; exception.log &amp;lt;==&lt;br /&gt;
2026-04-19 21:04:26 mail wiki_el_db-rHb3: [REDACTED] /index.php?title=Special:UserLogin&amp;amp;returnto=MediaWiki&lt;br /&gt;
%3ARequestaccount-agree   DomainException: Invalid password policy config. No check defined for &#039;PasswordCannotBePopular&#039;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# I removed this; I guess we&#039;re supposed to use &#039;PasswordNotInCommonList&#039;, which we already use.&lt;br /&gt;
# ok, that worked. I&#039;m able to login-in. here&#039;s the final&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# PASSWORD POLICIES&lt;br /&gt;
&lt;br /&gt;
$wgPasswordPolicy[&#039;policies&#039;][&#039;default&#039;][&#039;MinimalPasswordLength&#039;] = 10;&lt;br /&gt;
$wgPasswordPolicy[&#039;policies&#039;][&#039;default&#039;][&#039;PasswordCannotBeSubstringInUsername&#039;][&#039;value&#039;] = true;&lt;br /&gt;
$wgPasswordPolicy[&#039;policies&#039;][&#039;default&#039;][&#039;PasswordNotInCommonList&#039;] = true;&lt;br /&gt;
&lt;br /&gt;
$wgPasswordPolicy[&#039;policies&#039;][&#039;sysop&#039;][&#039;MinimalPasswordLength&#039;] = 20;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# now that I can login, I was going to change the text that appears on the Request Account page https://wiki.eco-libre.org/wiki/MediaWiki:Requestaccount-text&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Complete and submit the following form to request a user account.&lt;br /&gt;
&lt;br /&gt;
Make sure that you first read the Terms of Service before requesting an account.&lt;br /&gt;
&lt;br /&gt;
Once the account is approved, you will be emailed a notification message and the account will be usable at login. &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## my intention was to add a notebox to highlight that the user would need to first complete the Eco-Libre Volunteer Test (https://eco-libre.github.io/volunteer-test/) before their new wiki account would be approve, and tell them to contact us (https://eco-libre.org/contact/)&lt;br /&gt;
## unforutnately, the notebox template doesn&#039;t exist!&lt;br /&gt;
## I found the docs on templates, and it says there&#039;s no way to import a bunch of standard templates https://www.mediawiki.org/wiki/Help:Templates&lt;br /&gt;
## this third-party guide says we can make the export/import (eg from Wikipedia) of a mass of templates easier with the Scribunto extension https://www.ryadel.com/en/how-to-add-wikipedia-mbox-templates-to-your-own-mediawiki/&lt;br /&gt;
## this extension ships with core mediawiki, it seems&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@mail:/var/www/html/wiki.eco-libre.org# ls htdocs/extensions/&lt;br /&gt;
AbuseFilter     ConfirmEdit      InputBox          Nuke             ReplaceText            TemplateData    Widgets&lt;br /&gt;
CategoryTree    DeleteBatch      Interwiki         OATHAuth         Scribunto              TextExtracts    WikiEditor&lt;br /&gt;
Cite            DiscussionTools  Linter            PageImages       SecureLinkFixer        Thanks&lt;br /&gt;
CiteThisPage    Echo             LoginNotify       ParserFunctions  SmiteSpam              TitleBlacklist&lt;br /&gt;
CodeEditor      Gadgets          Math              PdfHandler       SpamBlacklist          UserMerge&lt;br /&gt;
ConfirmAccount  ImageMap         MultimediaViewer  Poem             SyntaxHighlight_GeSHi  VisualEditor&lt;br /&gt;
root@mail:/var/www/html/wiki.eco-libre.org# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# TODO: finish installing Scribunto, then do a mass-export &amp;amp; mass-import of common templates from Wikipedia. Then finish configuring [[&#039;&#039;MediaWiki:Requestaccount-text&#039;&#039;]]&lt;br /&gt;
# I thought that, maybe, a lower hanging fruit would be to implement the Privacy Policy, but I realized that page actually requires the user to accept the Terms of Service, not the Privacy Policy&lt;br /&gt;
## OSE appears to have never set a ToS (And I created the Privacy Policy, largely based on the creative commons&#039; privacy policy https://wiki.opensourceecology.org/wiki/Terms_of_Service&lt;br /&gt;
## The wikipedia Terms of Service is actually named Terms of Use, and it&#039;s pretty specific to Wikipedia (including their mission, etc). In it, it references the Privacy Policy https://foundation.wikimedia.org/wiki/Policy:Terms_of_Use/en&lt;br /&gt;
## Appropedia doesn&#039;t appear to have a page dedicated to ToS (or ToU) or Privacy Policy. Instead, it&#039;s just on one page named Policies https://www.appropedia.org/Appropedia:Policies&lt;br /&gt;
&lt;br /&gt;
= 2026-04-18 =&lt;br /&gt;
# continuing where I left off yes terday to fix mediawiki after the unattended-upgrade deleted our LocalSettings.php file&lt;br /&gt;
# I need to push-out a new php.ini config (with ansible) to include /etc/mediawiki/ in the open_basedir setting&lt;br /&gt;
# ansible is broken suddenly; it says it can&#039;t find python&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
fatal: [michaelaltfield.net]: UNREACHABLE! =&amp;gt; {&amp;quot;changed&amp;quot;: false, &amp;quot;msg&amp;quot;: &amp;quot;EOF on stream; last 100 lines received:\nbash: line 1: /usr/bin/python: No such file or directory&amp;quot;, &amp;quot;unreachable&amp;quot;: true}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# well, idk, did debian remove a symlink from python to python3?&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@mail:/var/lib/mediawiki# ls -lah /usr/bin/python&lt;br /&gt;
ls: cannot access &#039;/usr/bin/python&#039;: No such file or directory&lt;br /&gt;
root@mail:/var/lib/mediawiki# ls -lah /usr/bin/python3&lt;br /&gt;
lrwxrwxrwx 1 root root 10 Jun 30  2025 /usr/bin/python3 -&amp;gt; python3.13&lt;br /&gt;
root@mail:/var/lib/mediawiki# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# looks like there&#039;s a var I can set for this named ansible_python_interpreter, but it&#039;s only available in python &amp;gt;= 2.2.0 https://stackoverflow.com/a/41431540&lt;br /&gt;
# and we only have ansible v2.14.18, installed in apt on debian 12 on my client machine&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ dpkg -l | grep -i ansible&lt;br /&gt;
ii  ansible                                       7.7.0+dfsg-3+deb12u1                     all          Configuration management, deployment, and task execution system&lt;br /&gt;
ii  ansible-core                                  2.14.18-0+deb12u2                        all          Configuration management, deployment, and task execution system&lt;br /&gt;
ii  ansible-mitogen                               0.3.3-9+deb12u1                          all          Fast connection strategy for Ansible&lt;br /&gt;
$&lt;br /&gt;
&lt;br /&gt;
$ cat /etc/issue&lt;br /&gt;
Debian GNU/Linux 12 \n \l&lt;br /&gt;
&lt;br /&gt;
$ &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# looks like debian 13 only has ansible core v2.18, so that won&#039;t help https://packages.debian.org/trixie/ansible&lt;br /&gt;
# fuck it, I just created a symlink. maybe it&#039;ll get deleted a and I&#039;ll have to recreate it again. maybe not&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@mail:/var/lib/mediawiki# ln -s /usr/bin/python3 /usr/bin/python&lt;br /&gt;
root@mail:/var/lib/mediawiki# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# ok, that fixed ansible, and I was able to push-out the udpdated php.ini file&lt;br /&gt;
# restarted php&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@mail:/var/lib/mediawiki# systemctl restart php8.4-fpm&lt;br /&gt;
root@mail:/var/lib/mediawiki# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# ...aaaand the wiki is fixed&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[user@disp3459 ~]$ curl -IL https://wiki.eco-libre.org/&lt;br /&gt;
HTTP/1.1 301 Moved Permanently&lt;br /&gt;
Server: nginx&lt;br /&gt;
Date: Sat, 18 Apr 2026 17:38:39 GMT&lt;br /&gt;
Content-Type: text/html; charset=UTF-8&lt;br /&gt;
Content-Length: 0&lt;br /&gt;
Connection: keep-alive&lt;br /&gt;
X-Content-Type-Options: nosniff&lt;br /&gt;
Vary: Accept-Encoding,Cookie&lt;br /&gt;
Expires: Thu, 01 Jan 1970 00:00:00 GMT&lt;br /&gt;
Cache-Control: private, must-revalidate, max-age=0&lt;br /&gt;
X-Request-Id: REDACTED&lt;br /&gt;
X-Frame-Options: SAMEORIGIN&lt;br /&gt;
Last-Modified: Sat, 18 Apr 2026 17:38:06 GMT&lt;br /&gt;
Location: https://wiki.eco-libre.org/wiki/Main_Page&lt;br /&gt;
X-Content-Type-Options: nosniff&lt;br /&gt;
X-XSS-Protection: 1; mode=block&lt;br /&gt;
X-Frame-Options: deny&lt;br /&gt;
Referrer-Policy: strict-origin&lt;br /&gt;
X-Varnish: 6288299 13705059&lt;br /&gt;
Age: 33&lt;br /&gt;
Via: 1.1 mail (Varnish/7.7)&lt;br /&gt;
Strict-Transport-Security: max-age=86400;includeSubDomains&lt;br /&gt;
&lt;br /&gt;
HTTP/1.1 200 OK&lt;br /&gt;
Server: nginx&lt;br /&gt;
Date: Sat, 18 Apr 2026 17:38:40 GMT&lt;br /&gt;
Content-Type: text/html; charset=UTF-8&lt;br /&gt;
Content-Length: 15926&lt;br /&gt;
Connection: keep-alive&lt;br /&gt;
X-Content-Type-Options: nosniff&lt;br /&gt;
Content-language: en&lt;br /&gt;
Vary: Accept-Encoding,Cookie&lt;br /&gt;
Expires: Thu, 01 Jan 1970 00:00:00 GMT&lt;br /&gt;
Cache-Control: private, must-revalidate, max-age=0&lt;br /&gt;
X-Request-Id: REDACTED&lt;br /&gt;
X-Frame-Options: SAMEORIGIN&lt;br /&gt;
Last-Modified: Sat, 18 Apr 2026 01:16:13 GMT&lt;br /&gt;
X-Mod-Pagespeed: Powered By mod_pagespeed&lt;br /&gt;
X-Content-Type-Options: nosniff&lt;br /&gt;
X-XSS-Protection: 1; mode=block&lt;br /&gt;
X-Frame-Options: deny&lt;br /&gt;
Referrer-Policy: strict-origin&lt;br /&gt;
X-Varnish: 18702490 13705062&lt;br /&gt;
Age: 31&lt;br /&gt;
Via: 1.1 mail (Varnish/7.7)&lt;br /&gt;
Accept-Ranges: bytes&lt;br /&gt;
Strict-Transport-Security: max-age=86400;includeSubDomains&lt;br /&gt;
&lt;br /&gt;
[user@disp3459 ~]$ &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# ...&lt;br /&gt;
# alright, now let&#039;s try to install &amp;amp; configure all the 3TOFU&#039;d extensions&lt;br /&gt;
# we have 6 new extensions to install&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@mail:/var/tmp/mediawiki/extensions.2026-03-29# ls&lt;br /&gt;
ConfirmAccount-REL1_43-38c4602.tar.gz  extensions.txt  OATHAuth-REL1_43-015a49e.tar.gz   UserMerge-REL1_43-27425da.tar.gz&lt;br /&gt;
DeleteBatch-REL1_43-b3b052b.tar.gz     info.txt        SmiteSpam-REL1_43-483b81b.tar.gz  Widgets-REL1_43-60a09f0.tar.gz&lt;br /&gt;
root@mail:/var/tmp/mediawiki/extensions.2026-03-29# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# I extracted them&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@mail:/var/tmp/mediawiki/extensions.2026-03-29# for file in $(ls *.tar.gz); do tar -xvf $file; done.&lt;br /&gt;
...&lt;br /&gt;
Widgets/vendor/smarty/smarty/CHANGELOG.md&lt;br /&gt;
Widgets/COPYING&lt;br /&gt;
root@mail:/var/tmp/mediawiki/extensions.2026-03-29#&lt;br /&gt;
&lt;br /&gt;
root@mail:/var/tmp/mediawiki/extensions.2026-03-29# ls&lt;br /&gt;
ConfirmAccount                         info.txt                          UserMerge&lt;br /&gt;
ConfirmAccount-REL1_43-38c4602.tar.gz  OATHAuth                          UserMerge-REL1_43-27425da.tar.gz&lt;br /&gt;
DeleteBatch                            OATHAuth-REL1_43-015a49e.tar.gz   Widgets&lt;br /&gt;
DeleteBatch-REL1_43-b3b052b.tar.gz     SmiteSpam                         Widgets-REL1_43-60a09f0.tar.gz&lt;br /&gt;
extensions.txt                         SmiteSpam-REL1_43-483b81b.tar.gz&lt;br /&gt;
root@mail:/var/tmp/mediawiki/extensions.2026-03-29# &lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# let&#039;s start with OATHAuth, which is probably the most important (for security)&lt;br /&gt;
# oh wait, we already have OATHAuth??&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@mail:/var/tmp/mediawiki/extensions.2026-03-29# ls /var/www/html/wiki.eco-libre.org/htdocs/extensions/&lt;br /&gt;
AbuseFilter   ConfirmEdit      InputBox     MultimediaViewer  PdfHandler       SpamBlacklist          TitleBlacklist&lt;br /&gt;
CategoryTree  DiscussionTools  Interwiki    Nuke              Poem             SyntaxHighlight_GeSHi  VisualEditor&lt;br /&gt;
Cite          Echo             Linter       OATHAuth          ReplaceText      TemplateData           WikiEditor&lt;br /&gt;
CiteThisPage  Gadgets          LoginNotify  PageImages        Scribunto        TextExtracts&lt;br /&gt;
CodeEditor    ImageMap         Math         ParserFunctions   SecureLinkFixer  Thanks&lt;br /&gt;
root@mail:/var/tmp/mediawiki/extensions.2026-03-29# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# ugh, yeah, this syas it has been inclued in MediaWiki core since v1.31 https://www.mediawiki.org/wiki/Extension:OATHAuth&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
This extension comes with MediaWiki 1.31 and later, so you do not need to download it. The remaining configuration instructions must still be followed.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# well, maybe that&#039;s why it got updated so much. anyway, that&#039;s better; we get it directly from apt&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@mail:/var/tmp/mediawiki/extensions.2026-03-29# dpkg -l | grep -i mediawiki&lt;br /&gt;
ii  mediawiki                         1:1.43.8+dfsg-1~deb13u1                 all          website engine for collaborative work&lt;br /&gt;
ii  mediawiki-classes                 1:1.43.8+dfsg-1~deb13u1                 all          website engine for collaborative work - standalone classes&lt;br /&gt;
root@mail:/var/tmp/mediawiki/extensions.2026-03-29# &lt;br /&gt;
&lt;br /&gt;
root@mail:/var/tmp/mediawiki/extensions.2026-03-29# dpkg-query -L mediawiki | grep -i oathauth | head&lt;br /&gt;
/usr/share/mediawiki/extensions-core/OATHAuth&lt;br /&gt;
/usr/share/mediawiki/extensions-core/OATHAuth/COPYING&lt;br /&gt;
/usr/share/mediawiki/extensions-core/OATHAuth/OATHAuth.alias.php&lt;br /&gt;
/usr/share/mediawiki/extensions-core/OATHAuth/ServiceWiring.php&lt;br /&gt;
/usr/share/mediawiki/extensions-core/OATHAuth/composer.json&lt;br /&gt;
/usr/share/mediawiki/extensions-core/OATHAuth/extension.json&lt;br /&gt;
/usr/share/mediawiki/extensions-core/OATHAuth/i18n&lt;br /&gt;
/usr/share/mediawiki/extensions-core/OATHAuth/i18n/ang.json&lt;br /&gt;
/usr/share/mediawiki/extensions-core/OATHAuth/i18n/api&lt;br /&gt;
/usr/share/mediawiki/extensions-core/OATHAuth/i18n/api/ar.json&lt;br /&gt;
root@mail:/var/tmp/mediawiki/extensions.2026-03-29# &lt;br /&gt;
&lt;br /&gt;
root@mail:/var/tmp/mediawiki/extensions.2026-03-29# dpkg-query -L mediawiki | grep -i oathauth | tail&lt;br /&gt;
/usr/share/mediawiki/extensions-core/OATHAuth/src/OATHAuth.php&lt;br /&gt;
/usr/share/mediawiki/extensions-core/OATHAuth/src/OATHAuthModuleRegistry.php&lt;br /&gt;
/usr/share/mediawiki/extensions-core/OATHAuth/src/OATHAuthServices.php&lt;br /&gt;
/usr/share/mediawiki/extensions-core/OATHAuth/src/OATHUser.php&lt;br /&gt;
/usr/share/mediawiki/extensions-core/OATHAuth/src/OATHUserRepository.php&lt;br /&gt;
/usr/share/mediawiki/extensions-core/OATHAuth/src/Special&lt;br /&gt;
/usr/share/mediawiki/extensions-core/OATHAuth/src/Special/DisableOATHForUser.php&lt;br /&gt;
/usr/share/mediawiki/extensions-core/OATHAuth/src/Special/OATHManage.php&lt;br /&gt;
/usr/share/mediawiki/extensions-core/OATHAuth/src/Special/VerifyOATHForUser.php&lt;br /&gt;
/var/lib/mediawiki/extensions/OATHAuth&lt;br /&gt;
root@mail:/var/tmp/mediawiki/extensions.2026-03-29# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# I wonder if there&#039;s any others we get? looks like it&#039;s only this one&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@mail:/var/tmp/mediawiki/extensions.2026-03-29# ls /usr/share/mediawiki/extensions-core | grep -iE &#039;ConfirmAccount|SmiteSpam|DeleteBatch|UserMerge|Widgets|OATHAuth&#039;&lt;br /&gt;
OATHAuth&lt;br /&gt;
root@mail:/var/tmp/mediawiki/extensions.2026-03-29# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# just another quick check – none of these are in apt either&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@mail:/var/tmp/mediawiki/extensions.2026-03-29# apt-cache search mediawiki | grep -i extension&lt;br /&gt;
libreoffice-wiki-publisher - LibreOffice extension for working with MediaWiki articles&lt;br /&gt;
mediawiki-extension-codemirror - Syntax highlighting in MediaWiki&#039;s wikitext editor&lt;br /&gt;
mediawiki-extension-youtube - Embed YouTube and other videos into MediaWiki pages&lt;br /&gt;
php-luasandbox - PHP extension that provides a sandboxed Lua environment&lt;br /&gt;
php-wmerrors - PHP extension that enhances and customizes handling of PHP errors&lt;br /&gt;
root@mail:/var/tmp/mediawiki/extensions.2026-03-29# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# anyway, back to OATHAuth&lt;br /&gt;
## it says to enable caching&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
It is strongly recommended to setup caching when using OATHAuth.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# I confirmed that we already have cachign setup with APC&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@mail:/var/www/html/wiki.eco-libre.org# grep -ir cache LocalSettings.php &lt;br /&gt;
$wgMainCacheType = CACHE_ACCEL;&lt;br /&gt;
$wgMemCachedServers = [];&lt;br /&gt;
## Set $wgCacheDirectory to a writable directory on the web server&lt;br /&gt;
#$wgCacheDirectory = &amp;quot;$IP/cache&amp;quot;;&lt;br /&gt;
$wgCacheDirectory = &amp;quot;/var/www/html/wiki.eco-libre.org/cache&amp;quot;;&lt;br /&gt;
root@mail:/var/www/html/wiki.eco-libre.org# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
### CACHE_ACCEL means APC, which is the recommended option for single-server wikis, per the official mediawiki docs on performance tuning https://www.mediawiki.org/wiki/Manual:Performance_tuning#Single_web_server&lt;br /&gt;
### it also says to ue varnish. check&lt;br /&gt;
### it also says to use php-fpm w/ event MPM (instead of mod_php with prefork MPM), which we changed-to last month. check.&lt;br /&gt;
## our notes from OSE had the following options https://wiki.opensourceecology.org/wiki/CHG-2025-XX-XX_migrate_wiki_to_hetzner3&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
wfLoadExtension( &#039;OATHAuth&#039; );&lt;br /&gt;
&lt;br /&gt;
# Relaxed mode with +/- 4 minutes time drift tolerance. This is important or users will complain and/or disable 2FA entirely&lt;br /&gt;
# The security consequences are small. The usability benefits are huge.&lt;br /&gt;
$wgOATHAuthWindowRadius = 8;&lt;br /&gt;
&lt;br /&gt;
# make admins require 2FA&lt;br /&gt;
$wgOATHRequiredForGroups = [&#039;sysop&#039;, &#039;interface-admin&#039;, &#039;bureaucrat&#039;, &#039;suppress&#039;, &#039;widgeteditor&#039; ];&lt;br /&gt;
&lt;br /&gt;
# make &#039;powerful&#039; rights require 2FA&lt;br /&gt;
$wgOATHExclusiveRights =  [ &#039;apihighlimits&#039;, &#039;applychangetags&#039;, &#039;autoconfirmed&#039;, &#039;autopatrol&#039;, &#039;bigdelete&#039;, &#039;block&#039;, &#039;blockemail&#039;, &#039;bot&#039;, &#039;changetags&#039;, &#039;createaccount&#039;, &#039;createtalk&#039;, &#039;delete&#039;, &#039;deletechangetags&#039;, &#039;deletedhistory&#039;, &#039;deletedtext&#039;, &#039;deletelogentry&#039;, &#039;deleterevision&#039;, &#039;editcontentmodel&#039;, &#039;editinterface&#039;, &#039;editprotected&#039;, &#039;editsemiprotected&#039;, &#039;editsitecss&#039;, &#039;editsitejs&#039;, &#039;editsitejson&#039;, &#039;editusercss&#039;, &#039;edituserjs&#039;, &#039;edituserjson&#039;, &#039;hideuser&#039;, &#039;import&#039;, &#039;importupload&#039;, &#039;ipblock-exempt&#039;, &#039;managechangetags&#039;, &#039;markbotedits&#039;, &#039;mergehistory&#039;, &#039;move-categorypages&#039;, &#039;move-rootuserpages&#039;, &#039;move-subpages&#039;, &#039;nominornewtalk&#039;, &#039;noratelimit&#039;, &#039;patrol&#039;, &#039;protect&#039;, &#039;renameuser&#039;, &#039;reupload-shared&#039;, &#039;sendemail&#039;, &#039;suppressionlog&#039;, &#039;suppressredirect&#039;, &#039;suppressrevision&#039;, &#039;unblockself&#039;, &#039;unwatchedpages&#039;, &#039;userrights&#039;, ];&lt;br /&gt;
&lt;br /&gt;
# full list for reference (taken from htdocs/includes/MainConfigSchema.php) https://www.mediawiki.org/wiki/Extension:OATHAuth#Configuration&lt;br /&gt;
#$wgOATHExclusiveRights =  [ &#039;apihighlimits&#039;, &#039;applychangetags&#039;, &#039;autoconfirmed&#039;, &#039;autopatrol&#039;, &#039;bigdelete&#039;, &#039;block&#039;, &#039;blockemail&#039;, &#039;bot&#039;, &#039;browsearchive&#039;, &#039;changetags&#039;, &#039;createaccount&#039;, &#039;createpage&#039;, &#039;createtalk&#039;, &#039;delete&#039;, &#039;deletechangetags&#039;, &#039;deletedhistory&#039;, &#039;deletedtext&#039;, &#039;deletelogentry&#039;, &#039;deleterevision&#039;, &#039;edit&#039;, &#039;editcontentmodel&#039;, &#039;editinterface&#039;, &#039;editmyoptions&#039;, &#039;editmyprivateinfo&#039;, &#039;editmyusercss&#039;, &#039;editmyuserjs&#039;, &#039;editmyuserjson&#039;, &#039;editmyuserjsredirect&#039;, &#039;editmywatchlist&#039;, &#039;editprotected&#039;, &#039;editsemiprotected&#039;, &#039;editsitecss&#039;, &#039;editsitejs&#039;, &#039;editsitejson&#039;, &#039;editusercss&#039;, &#039;edituserjs&#039;, &#039;edituserjson&#039;, &#039;hideuser&#039;, &#039;import&#039;, &#039;importupload&#039;, &#039;ipblock-exempt&#039;, &#039;managechangetags&#039;, &#039;markbotedits&#039;, &#039;mergehistory&#039;, &#039;minoredit&#039;, &#039;move&#039;, &#039;move-categorypages&#039;, &#039;movefile&#039;, &#039;move-rootuserpages&#039;, &#039;move-subpages&#039;, &#039;nominornewtalk&#039;, &#039;noratelimit&#039;, &#039;patrol&#039;, &#039;protect&#039;, &#039;read&#039;, &#039;renameuser&#039;, &#039;reupload&#039;, &#039;reupload-shared&#039;, &#039;rollback&#039;, &#039;sendemail&#039;, &#039;suppressionlog&#039;, &#039;suppressredirect&#039;, &#039;suppressrevision&#039;, &#039;unblockself&#039;, &#039;undelete&#039;, &#039;unwatchedpages&#039;, &#039;upload&#039;, &#039;userrights&#039;, &#039;viewmyprivateinfo&#039;, &#039;viewmywatchlist&#039;, &#039;viewsuppressed&#039; ];&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
### I strongly agree with the relaxed window of codes&lt;br /&gt;
### I guess that list of requirements is good&lt;br /&gt;
### the other two are no longer listed on the wiki, but I guess they&#039;re good ?&lt;br /&gt;
## the docs show an additional option = $wgOATHSecretKey, used for encrypting the secret keys in the db. it suggests this command to generate it https://www.mediawiki.org/wiki/Extension:OATHAuth&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
hexdump -vn32 -e&#039;8/8 &amp;quot;%08X&amp;quot; &amp;quot;\n&amp;quot;&#039; /dev/urandom&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
### says it&#039;s only available since 1.45. I&#039;m not sure if that&#039;s the mediawiki version or the extension version.&lt;br /&gt;
### oh, I guess it&#039;s mediawiki, since they ship together. We&#039;re running 1.43.8, so I guess we can&#039;t use it yet https://wiki.eco-libre.org/wiki/Special:Version&lt;br /&gt;
### well, I guess let&#039;s define it. then it&#039;ll automatically start to use it when we upgrade to the next LTS. I think.&lt;br /&gt;
## ok, here&#039;s what I added&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@mail:/var/www/html/wiki.eco-libre.org# diff LocalSettings.20260418.php LocalSettings.php &lt;br /&gt;
220a221,240&lt;br /&gt;
&amp;gt; &lt;br /&gt;
&amp;gt; # configure OATHAuth for MFA (2FA). See also:&lt;br /&gt;
&amp;gt; # * https://www.mediawiki.org/wiki/Extension:OATHAuth&lt;br /&gt;
&amp;gt; # * https://wiki.eco-libre.org/wiki/Maltfield_Log/2026&lt;br /&gt;
&amp;gt; wfLoadExtension( &#039;OATHAuth&#039; );&lt;br /&gt;
&amp;gt; &lt;br /&gt;
&amp;gt; # Relaxed mode with +/- 4 minutes time drift tolerance. This is important or users will complain and/or disable 2FA entirely&lt;br /&gt;
&amp;gt; # The security consequences are small. The usability benefits are huge.&lt;br /&gt;
&amp;gt; $wgOATHAuthWindowRadius = 8;&lt;br /&gt;
&amp;gt; &lt;br /&gt;
&amp;gt; # make admins require 2FA&lt;br /&gt;
&amp;gt; $wgOATHRequiredForGroups = [&#039;sysop&#039;, &#039;interface-admin&#039;, &#039;bureaucrat&#039;, &#039;suppress&#039;, &#039;widgeteditor&#039; ];&lt;br /&gt;
&amp;gt; &lt;br /&gt;
&amp;gt; # make &#039;powerful&#039; rights require 2FA&lt;br /&gt;
&amp;gt; $wgOATHExclusiveRights =  [ &#039;apihighlimits&#039;, &#039;applychangetags&#039;, &#039;autoconfirmed&#039;, &#039;autopatrol&#039;, &#039;bigdelete&#039;, &#039;block&#039;, &#039;blockemail&#039;, &#039;bot&#039;, &#039;changetags&#039;, &#039;createaccount&#039;, &#039;createtalk&#039;, &#039;delete&#039;, &#039;deletechangetags&#039;, &#039;deletedhistory&#039;, &#039;deletedtext&#039;, &#039;deletelogentry&#039;, &#039;deleterevision&#039;, &#039;editcontentmodel&#039;, &#039;editinterface&#039;, &#039;editprotected&#039;, &#039;editsemiprotected&#039;, &#039;editsitecss&#039;, &#039;editsitejs&#039;, &#039;editsitejson&#039;, &#039;editusercss&#039;, &#039;edituserjs&#039;, &#039;edituserjson&#039;, &#039;hideuser&#039;, &#039;import&#039;, &#039;importupload&#039;, &#039;ipblock-exempt&#039;, &#039;managechangetags&#039;, &#039;markbotedits&#039;, &#039;mergehistory&#039;, &#039;move-categorypages&#039;, &#039;move-rootuserpages&#039;, &#039;move-subpages&#039;, &#039;nominornewtalk&#039;, &#039;noratelimit&#039;, &#039;patrol&#039;, &#039;protect&#039;, &#039;renameuser&#039;, &#039;reupload-shared&#039;, &#039;sendemail&#039;, &#039;suppressionlog&#039;, &#039;suppressredirect&#039;, &#039;suppressrevision&#039;, &#039;unblockself&#039;, &#039;unwatchedpages&#039;, &#039;userrights&#039;, ];&lt;br /&gt;
&amp;gt; &lt;br /&gt;
&amp;gt; # full list for reference (taken from htdocs/includes/MainConfigSchema.php) https://www.mediawiki.org/wiki/Extension:OATHAuth#Configuration&lt;br /&gt;
&amp;gt; #$wgOATHExclusiveRights =  [ &#039;apihighlimits&#039;, &#039;applychangetags&#039;, &#039;autoconfirmed&#039;, &#039;autopatrol&#039;, &#039;bigdelete&#039;, &#039;block&#039;, &#039;blockemail&#039;, &#039;bot&#039;, &#039;browsearchive&#039;, &#039;changetags&#039;, &#039;createaccount&#039;, &#039;createpage&#039;, &#039;createtalk&#039;, &#039;delete&#039;, &#039;deletechangetags&#039;, &#039;deletedhistory&#039;, &#039;deletedtext&#039;, &#039;deletelogentry&#039;, &#039;deleterevision&#039;, &#039;edit&#039;, &#039;editcontentmodel&#039;, &#039;editinterface&#039;, &#039;editmyoptions&#039;, &#039;editmyprivateinfo&#039;, &#039;editmyusercss&#039;, &#039;editmyuserjs&#039;, &#039;editmyuserjson&#039;, &#039;editmyuserjsredirect&#039;, &#039;editmywatchlist&#039;, &#039;editprotected&#039;, &#039;editsemiprotected&#039;, &#039;editsitecss&#039;, &#039;editsitejs&#039;, &#039;editsitejson&#039;, &#039;editusercss&#039;, &#039;edituserjs&#039;, &#039;edituserjson&#039;, &#039;hideuser&#039;, &#039;import&#039;, &#039;importupload&#039;, &#039;ipblock-exempt&#039;, &#039;managechangetags&#039;, &#039;markbotedits&#039;, &#039;mergehistory&#039;, &#039;minoredit&#039;, &#039;move&#039;, &#039;move-categorypages&#039;, &#039;movefile&#039;, &#039;move-rootuserpages&#039;, &#039;move-subpages&#039;, &#039;nominornewtalk&#039;, &#039;noratelimit&#039;, &#039;patrol&#039;, &#039;protect&#039;, &#039;read&#039;, &#039;renameuser&#039;, &#039;reupload&#039;, &#039;reupload-shared&#039;, &#039;rollback&#039;, &#039;sendemail&#039;, &#039;suppressionlog&#039;, &#039;suppressredirect&#039;, &#039;suppressrevision&#039;, &#039;unblockself&#039;, &#039;undelete&#039;, &#039;unwatchedpages&#039;, &#039;upload&#039;, &#039;userrights&#039;, &#039;viewmyprivateinfo&#039;, &#039;viewmywatchlist&#039;, &#039;viewsuppressed&#039; ];&lt;br /&gt;
&amp;gt; &lt;br /&gt;
&amp;gt; $wgOATHSecretKey=&#039;REDACTED&#039;;&lt;br /&gt;
root@mail:/var/www/html/wiki.eco-libre.org# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## ok, now let&#039;s update the db&lt;br /&gt;
### oh, this failed. we need to use the special privliged db user, since we hardened the normal db user&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@mail:/var/www/html/wiki.eco-libre.org# sudo -u www-data php /usr/share/mediawiki/maintenance/run.php update&lt;br /&gt;
MediaWiki 1.43.8 Updater&lt;br /&gt;
&lt;br /&gt;
Your composer.lock file is up to date with current dependencies!&lt;br /&gt;
Going to run database updates for wiki_el_db-rHb3&lt;br /&gt;
Depending on the size of your database this may take a while!&lt;br /&gt;
Abort with control-c in the next five seconds (skip this countdown with --quick) ...0&lt;br /&gt;
Updating category collations...&lt;br /&gt;
Selecting next 100 pages from cl_from = 0... processing... 0 done.&lt;br /&gt;
0 rows processed&lt;br /&gt;
...done.&lt;br /&gt;
Modifying rd_title field of table redirect...Wikimedia\Rdbms\DBQueryError from line 1198 of /usr/share/mediawiki/includes/libs/rdbms/database/Database.php: Error 1142: ALTER command denied to user &#039;wiki_el_user&#039;@&#039;localhost&#039; for table `wiki_el_db`.`rHb3redirect`&lt;br /&gt;
Function: Wikimedia\Rdbms\Database::sourceFile( /usr/share/mediawiki/maintenance/archives/patch-redirect-rd_title-varbinary.sql )&lt;br /&gt;
Query: ALTER TABLE `rHb3redirect` MODIFY rd_title VARBINARY(255) NOT NULL default &#039;&#039;,&lt;br /&gt;
 MODIFY rd_fragment VARBINARY(255) default NULL&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#0 /usr/share/mediawiki/includes/libs/rdbms/database/Database.php(1182): Wikimedia\Rdbms\Database-&amp;gt;getQueryException()&lt;br /&gt;
#1 /usr/share/mediawiki/includes/libs/rdbms/database/Database.php(1156): Wikimedia\Rdbms\Database-&amp;gt;getQueryExceptionAndLog()&lt;br /&gt;
#2 /usr/share/mediawiki/includes/libs/rdbms/database/Database.php(647): Wikimedia\Rdbms\Database-&amp;gt;reportQueryError()&lt;br /&gt;
#3 /usr/share/mediawiki/includes/libs/rdbms/database/Database.php(2791): Wikimedia\Rdbms\Database-&amp;gt;query()&lt;br /&gt;
#4 /usr/share/mediawiki/includes/libs/rdbms/database/Database.php(2729): Wikimedia\Rdbms\Database-&amp;gt;sourceStream()&lt;br /&gt;
#5 /usr/share/mediawiki/includes/libs/rdbms/database/DBConnRef.php(127): Wikimedia\Rdbms\Database-&amp;gt;sourceFile()&lt;br /&gt;
#6 /usr/share/mediawiki/includes/libs/rdbms/database/DBConnRef.php(799): Wikimedia\Rdbms\DBConnRef-&amp;gt;__call()&lt;br /&gt;
#7 /usr/share/mediawiki/includes/installer/DatabaseUpdater.php(797): Wikimedia\Rdbms\DBConnRef-&amp;gt;sourceFile()&lt;br /&gt;
#8 /usr/share/mediawiki/includes/installer/DatabaseUpdater.php(1074): MediaWiki\Installer\DatabaseUpdater-&amp;gt;applyPatch()&lt;br /&gt;
#9 /usr/share/mediawiki/includes/installer/DatabaseUpdater.php(595): MediaWiki\Installer\DatabaseUpdater-&amp;gt;modifyField()&lt;br /&gt;
#10 /usr/share/mediawiki/includes/installer/DatabaseUpdater.php(548): MediaWiki\Installer\DatabaseUpdater-&amp;gt;runUpdates()&lt;br /&gt;
#11 /usr/share/mediawiki/maintenance/update.php(195): MediaWiki\Installer\DatabaseUpdater-&amp;gt;doUpdates()&lt;br /&gt;
#12 /usr/share/mediawiki/maintenance/includes/MaintenanceRunner.php(703): UpdateMediaWiki-&amp;gt;execute()&lt;br /&gt;
#13 /usr/share/mediawiki/maintenance/run.php(51): MediaWiki\Maintenance\MaintenanceRunner-&amp;gt;run()&lt;br /&gt;
#14 {main}&lt;br /&gt;
root@mail:/var/www/html/wiki.eco-libre.org# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# alright, this worked&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@mail:/var/www/html/wiki.eco-libre.org# sudo -u www-data php /usr/share/mediawiki/maintenance/run.php update --dbuser wiki_el_superuser --dbpass REDACTED&lt;br /&gt;
...&lt;br /&gt;
done.&lt;br /&gt;
Purging caches...done.&lt;br /&gt;
&lt;br /&gt;
Done in 8.3 s.&lt;br /&gt;
root@mail:/var/www/html/wiki.eco-libre.org# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## after that, I tried to login. it worked&lt;br /&gt;
## I expected to be sent to some 2fa registration page, but that didn&#039;t happen. it was just like any normal login&lt;br /&gt;
## I went to special pages to see if I could get it to yell at me to enable 2fa, but that didn&#039;t happen&lt;br /&gt;
### I only see the following bold options on /wiki/Special:SpecialPages (usually admin page). I wonder if this is a subset because the others are just hidden since I don&#039;t have 2FA setup? https://wiki.eco-libre.org/wiki/Special:SpecialPages&lt;br /&gt;
#### Manage Two-Factor Authentication, Watchlist, Upload file, Change content model of a page&lt;br /&gt;
## anyway, I went to &amp;quot;Manage Two-factor authentication&amp;quot; https://wiki.eco-libre.org/wiki/Special:AccountSecurity&lt;br /&gt;
## I clicked the &amp;quot;Enable&amp;quot; button under TOTP&lt;br /&gt;
## I scanned the code. It entered it in my TOTP app as &amp;quot;Eco-Libre&amp;quot; – that&#039;s not ideal. It should say &amp;quot;Eco-Libre Wiki&amp;quot;&lt;br /&gt;
## So I updated the LocalSettings.php config with&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# This is the name that the entry will have in the user&#039;s TOTP app&lt;br /&gt;
$wgOATHAuthAccountPrefix=&#039;Eco-Libre Wiki&#039;;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## anyway, I was able to finish the 2FA enrollment process&lt;br /&gt;
## I went back to SpecialPages, and already I see a *ton* more SpecialPages in bold. So it looks like that restriction worked. Currently I have access to&lt;br /&gt;
### Unwateched pages, Block user, Create account, Delete user contributions, Disable user&#039;s two-factor authentication, Rename user, Unblock user, Verify two-factor authentication status, Watchlist, Upload file, Replace text, Change content model of a page, Import pages, Mass delete, Merge page histories, and View deleted pages.&lt;br /&gt;
## I also have a notifcation &amp;quot;Two-factor authenication has been enabeld on your account. If you did not do this, your account may have been comprimised.&amp;quot;&lt;br /&gt;
## I logged-out&lt;br /&gt;
## I logged-in.&lt;br /&gt;
### First I teted it with 6 zeros (bullshit code), and it rejected it&lt;br /&gt;
### next I entered the real OTP from my app; it worked&lt;br /&gt;
## ok, this extension is done.&lt;br /&gt;
# ...&lt;br /&gt;
# probably the next-most important one is ConfirmAccount.&lt;br /&gt;
## Honestly I don&#039;t know if I&#039;ll use this, as I decided it&#039;s better to raise the barrier of entry on the wiki to users that have passed the Eco-Libre test (which is itself very accessible, but it does allow for a onboarding &amp;amp; alignment process that should eliminate spam issues that most wikis have)&lt;br /&gt;
## perhaps if I can set it up to email the applicant a link to the &amp;quot;volunteer test&amp;quot; docs, that would be helpful to funnel wiki users into the proper volunteer join workflow..&lt;br /&gt;
# first let me copy the extensions; I ran these commands to put them in-place (yet still deactivated)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
rsync -av --progress ./ConfirmAccount /var/www/html/wiki.eco-libre.org/htdocs/extensions/&lt;br /&gt;
rsync -av --progress ./SmiteSpam /var/www/html/wiki.eco-libre.org/htdocs/extensions/&lt;br /&gt;
rsync -av --progress ./DeleteBatch /var/www/html/wiki.eco-libre.org/htdocs/extensions/&lt;br /&gt;
rsync -av --progress ./UserMerge /var/www/html/wiki.eco-libre.org/htdocs/extensions/&lt;br /&gt;
rsync -av --progress ./Widgets /var/www/html/wiki.eco-libre.org/htdocs/extensions/&lt;br /&gt;
rsync -av --progress ./OATHAuth /var/www/html/wiki.eco-libre.org/htdocs/extensions/&lt;br /&gt;
fix_web_permissions.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## that finished&lt;br /&gt;
# ok, here&#039;s the ConfirmAccount https://www.mediawiki.org/wiki/Extension:ConfirmAccount&lt;br /&gt;
## hmmm...it says we should use cache type CACHE_DB https://www.mediawiki.org/wiki/Extension:ConfirmAccount#Installation&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
wfLoadExtension( &#039;ConfirmAccount&#039; );&lt;br /&gt;
$wgSessionCacheType = CACHE_DB; // Avoids stale session state across requests.&lt;br /&gt;
$wgGroupPermissions[&#039;*&#039;][&#039;createaccount&#039;] = false; // REQUIRED to enforce account requests&lt;br /&gt;
$wgGroupPermissions[&#039;bureaucrat&#039;][&#039;createaccount&#039;] = true; // Optional to allow account creation by this trusted user group&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
#### I can&#039;t find elsewhere that says this specific cache type is requried. We&#039;re using APC, which I think is supposed to be more preformant than &lt;br /&gt;
### I checked the OSE LocalSettings.php config, and it also uses ConfirmAccount *and* CACHE_ACCEL (APC), so surely it&#039;s fine&lt;br /&gt;
### but it also used a bunch of other optimiazations, some of which are necessary for varnish caching&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#################&lt;br /&gt;
# VARNISH CACHE #&lt;br /&gt;
#################&lt;br /&gt;
&lt;br /&gt;
# note that these are named &amp;quot;squid&amp;quot; for historical reasons: wikipedia used to&lt;br /&gt;
# use squid, now they use varnish. They say &amp;quot;squid,&amp;quot; but also apply to varnish&lt;br /&gt;
# * https://www.mediawiki.org/wiki/Manual:Configuration_settings#Squid&lt;br /&gt;
&lt;br /&gt;
# See this guide for more info:&lt;br /&gt;
#  * https://www.mediawiki.org/wiki/Manual:Varnish_caching&lt;br /&gt;
&lt;br /&gt;
#$wgUseSquid = true;&lt;br /&gt;
#$wgSquidServers = array(&#039;opensourceecology.org&#039;);&lt;br /&gt;
#$wgSquidServersNoPurge = array(&#039;127.0.0.1&#039;);&lt;br /&gt;
&lt;br /&gt;
$wgUseSquid = true;&lt;br /&gt;
$wgSquidServers = array( &#039;127.0.0.1:6081&#039; );&lt;br /&gt;
$wgUsePrivateIPs = true;&lt;br /&gt;
&lt;br /&gt;
#################&lt;br /&gt;
# OPTIMIZATIONS #&lt;br /&gt;
#################&lt;br /&gt;
&lt;br /&gt;
# See these links for more info:&lt;br /&gt;
#  * https://www.mediawiki.org/wiki/Manual:Performance_tuning&lt;br /&gt;
#  * https://www.mediawiki.org/wiki/Manual:Caching&lt;br /&gt;
#  * https://www.mediawiki.org/wiki/User:Aaron_Schulz/How_to_make_MediaWiki_fast&lt;br /&gt;
&lt;br /&gt;
# INTERNAL MEDIAWIKI CACHE OPTIONS (DISTINCT FROM VARNISH)&lt;br /&gt;
&lt;br /&gt;
# MainCache and MessageCache should use APCU per Aaron Schulz&lt;br /&gt;
$wgMainCacheType = CACHE_ACCEL;&lt;br /&gt;
&lt;br /&gt;
# note that if message cache uses the db (per defaults), then it may make every&lt;br /&gt;
# page load include a db change, which causes mediawiki to emmit a set-cookie&lt;br /&gt;
# for cpPosTime. The cookie&#039;s presence coming from the backend causes varnish&lt;br /&gt;
# not to cache the page (rightfully so), and the result is that varnish (which&lt;br /&gt;
# is our most important cache) is rendered useless. For more info, see:&lt;br /&gt;
#  * https://www.mediawiki.org/wiki/Topic:U9fys4phj04a85vu&lt;br /&gt;
#  * https://wiki.opensourceecology.org/wiki/Maltfield_log_2018#Thr_Mar_15.2C_2018&lt;br /&gt;
$wgMessageCacheType = CACHE_ACCEL;&lt;br /&gt;
$wgUseLocalMessageCache = true;&lt;br /&gt;
&lt;br /&gt;
# Parser Cache should still use the DB per Aaron Schulz&lt;br /&gt;
$wgParserCacheType = CACHE_DB;&lt;br /&gt;
&lt;br /&gt;
# enable caching navigation sidebar per Aaron Schulz&lt;br /&gt;
$wgEnableSidebarCache = true;&lt;br /&gt;
&lt;br /&gt;
# cache interface messages to files in this directory per Aaron Schulz&lt;br /&gt;
# note that this should be outside the docroot!&lt;br /&gt;
$wgCacheDirectory = &amp;quot;$IP/../cache&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
# OTHER OPTIMIZATIONS&lt;br /&gt;
&lt;br /&gt;
# decrease db-heavy features per Aaron Schulz&lt;br /&gt;
$wgMiserMode = true;&lt;br /&gt;
&lt;br /&gt;
# Causes serious encoding problems&lt;br /&gt;
$wgUseGzip = false;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## I added this to our LocalSettings.php, except I hard-coded the wgCacheDirectory to &#039;/var/www/html/wiki.eco-libre.org/cache&#039;&lt;br /&gt;
## here&#039;s the ConfirmAccounts-related (and ConfirmEdit-related) config from OSE&#039;s LocalSettings.php&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# ConfirmAccount&lt;br /&gt;
# This extension and directory requires an admin to confirm a user before their &lt;br /&gt;
account is created&lt;br /&gt;
&lt;br /&gt;
require_once &amp;quot;$IP/extensions/ConfirmAccount/ConfirmAccount.php&amp;quot;;&lt;br /&gt;
$wgFileStore[&#039;accountreqs&#039;] = &amp;quot;$IP/images/ConfirmAccount&amp;quot;;&lt;br /&gt;
$wgFileStore[&#039;accountcreds&#039;] = &amp;quot;$IP/images/ConfirmAccount&amp;quot;;&lt;br /&gt;
$wgConfirmAccountContact = &#039;REDACTED@opensourceecology.org&#039;;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# ConfirmEdit&lt;br /&gt;
# reCaptcha settings and keys&lt;br /&gt;
&lt;br /&gt;
wfLoadExtensions([ &#039;ConfirmEdit&#039;, &#039;ConfirmEdit/ReCaptcha&#039; ]);&lt;br /&gt;
#$wgCaptchaClass = &#039;ReCaptcha&#039;;&lt;br /&gt;
$wgCaptchaClass = &#039;SimpleCaptcha&#039;;&lt;br /&gt;
#$wgCaptchaClass = &#039;QuestyCaptcha&#039;;&lt;br /&gt;
&lt;br /&gt;
#$wgReCaptchaPublicKey = &#039;REDACTED&#039;;&lt;br /&gt;
#$wgReCaptchaPrivateKey = &#039;REDACTED&#039;;&lt;br /&gt;
$wgReCaptchaPublicKey = &#039;REDACTED&#039;;&lt;br /&gt;
$wgReCaptchaPrivateKey = &#039;REDACTED&#039;;&lt;br /&gt;
&lt;br /&gt;
# https://www.google.com/recaptcha/admin/site?siteid=REDACTED - old style&lt;br /&gt;
#$recaptcha_public_key = &#039;REDACTED&#039;;&lt;br /&gt;
#$recaptcha_private_key = &#039;REDACTED&#039;;&lt;br /&gt;
&lt;br /&gt;
$wgGroupPermissions[&#039;*&#039;            ][&#039;skipcaptcha&#039;] = false;&lt;br /&gt;
$wgGroupPermissions[&#039;user&#039;         ][&#039;skipcaptcha&#039;] = true;&lt;br /&gt;
$wgGroupPermissions[&#039;autoconfirmed&#039;][&#039;skipcaptcha&#039;] = true;&lt;br /&gt;
$wgGroupPermissions[&#039;bot&#039;          ][&#039;skipcaptcha&#039;] = true; // registered bots&lt;br /&gt;
$wgGroupPermissions[&#039;sysop&#039;        ][&#039;skipcaptcha&#039;] = true;&lt;br /&gt;
&lt;br /&gt;
# Allow admins to approve (and unapprove) users via Special:UserRights&lt;br /&gt;
$wgAddGroups[&#039;sysop&#039;][&#039;approved&#039;] = true;&lt;br /&gt;
$wgRemoveGroups[&#039;sysop&#039;][&#039;approved&#039;] = true;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## of note is that I was planning on moving OSE from recaptcha to FancyCaptcha https://wiki.opensourceecology.org/wiki/CHG-2025-XX-XX_migrate_wiki_to_hetzner3&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# re-enable ConfirmEdit and switch to FancyCaption&lt;br /&gt;
grep &#039;FancyCaptcha&#039; ${vhostDir}/LocalSettings.php || perl -0777 -pi -e &amp;quot;s%\\\$wgCaptchaClass = &#039;SimpleCaptcha&#039;;%\#\\\$wgCaptchaClass = &#039;SimpleCaptcha&#039;;\n\nwfLoadExtensions([ &#039;ConfirmEdit&#039;, &#039;ConfirmEdit/FancyCaptcha&#039; ]);\n\\\$wgCaptchaDirectory = &#039;/var/www/html/wiki.opensourceecology.org/htdocs/images/captcha/&#039;;\n\\\$wgCaptchaSecret = &#039;$wgCaptchaSecret&#039;;\n%igs&amp;quot; ${vhostDir}/LocalSettings.php&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## oh shit, there&#039;s a known issue with ConfirmAccounts that it doesn&#039;t work at all on mediawiki v1.43. it was opened a year ago X_x https://www.mediawiki.org/wiki/Extension:ConfirmAccount#Known_issues&lt;br /&gt;
### well, hopefully that gets fixed before we upgrade to the latest LTS?&lt;br /&gt;
## ok, I&#039;m just going to add this to LocalSettings.php&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# configure ConfirmAccount. See also:&lt;br /&gt;
# * https://www.mediawiki.org/wiki/Extension:ConfirmAccount&lt;br /&gt;
# * https://wiki.eco-libre.org/wiki/Maltfield_Log/2026&lt;br /&gt;
wfLoadExtension( &#039;ConfirmAccount&#039; );&lt;br /&gt;
&lt;br /&gt;
# REQUIRED to enforce account requests&lt;br /&gt;
$wgGroupPermissions[&#039;*&#039;][&#039;createaccount&#039;] = false;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## and, per the wiki extensions&#039; page, I ran the update script&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@mail:/var/www/html/wiki.eco-libre.org# sudo -u www-data php /usr/share/mediawiki/maintenance/run.php update --dbuser wiki_el_superuser --dbpass REDACTED&lt;br /&gt;
...&lt;br /&gt;
...Update &#039;MediaWiki\Maintenance\FixAutoblockLogTitles&#039; already logged as completed. Use --force to run it again.&lt;br /&gt;
Purging caches...done.&lt;br /&gt;
&lt;br /&gt;
Done in 2.2 s.&lt;br /&gt;
root@mail:/var/www/html/wiki.eco-libre.org# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## I went to the SpecialPages, I now see &amp;quot;ConfirmAccounts Requests&amp;quot; https://wiki.eco-libre.org/wiki/Special:ConfirmAccounts&lt;br /&gt;
## Now, in a tor browser where I&#039;m *not* logged-in, I can click on &amp;quot;Anonymous&amp;quot; in the top-right and click on &amp;quot;Request account&amp;quot; https://wiki.eco-libre.org/wiki/Special:RequestAccount&lt;br /&gt;
## there&#039;s this weird thing that people have to agree to the ToS *and* that their real name is real.&lt;br /&gt;
### that first one is reasonable (though we haven&#039;t written a ToS yet)&lt;br /&gt;
### that second one is dumb. why wouldn&#039;t we let users contribute anonymously?&lt;br /&gt;
#### so I edited the LocalSettings.php with this&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# we let folks contribute under pseudonyms &lt;br /&gt;
$wgConfirmAccountRequestFormItems = [&lt;br /&gt;
   &#039;UserName&#039;        =&amp;gt; [ &#039;enabled&#039; =&amp;gt; true ],&lt;br /&gt;
   &#039;RealName&#039;        =&amp;gt; [ &#039;enabled&#039; =&amp;gt; false ],&lt;br /&gt;
   &#039;Biography&#039;       =&amp;gt; [ &#039;enabled&#039; =&amp;gt; false, &#039;minWords&#039; =&amp;gt; 50 ],&lt;br /&gt;
   &#039;AreasOfInterest&#039; =&amp;gt; [ &#039;enabled&#039; =&amp;gt; true ],&lt;br /&gt;
   &#039;CV&#039;              =&amp;gt; [ &#039;enabled&#039; =&amp;gt; true ],&lt;br /&gt;
   &#039;Notes&#039;           =&amp;gt; [ &#039;enabled&#039; =&amp;gt; true ],&lt;br /&gt;
   &#039;Links&#039;           =&amp;gt; [ &#039;enabled&#039; =&amp;gt; true ],&lt;br /&gt;
   &#039;TermsOfService&#039;  =&amp;gt; [ &#039;enabled&#039; =&amp;gt; true ],&lt;br /&gt;
 ];&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## ugh, it still has the same text about the &amp;quot;Real Name&amp;quot; – even after we disabled it&lt;br /&gt;
## looks like I need to create a wiki arrticle with the text that I want here https://wiki.eco-libre.org/wiki/MediaWiki:Requestaccount-text&lt;br /&gt;
### so the default text for this article is&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&#039;Complete and submit the following form to request a user account&#039;.&lt;br /&gt;
&lt;br /&gt;
Make sure that you first read the Terms of Service before requesting an account.&lt;br /&gt;
&lt;br /&gt;
Once the account is approved, you will be emailed a notification message and the account will be usable at login.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
### what I want is the &amp;quot;accept&amp;quot; text, which replaces this&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
I have read and agree to abide by the Terms of Service of Eco-Libre. The name I have specified under &amp;quot;Real name&amp;quot; is in fact my own real name.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
### here&#039;s a list of all the system messages, according to the extensions wiki page https://www.mediawiki.org/wiki/Extension:ConfirmAccount#Minimal&lt;br /&gt;
#### requestaccount-text, requestaccount-notes, requestaccount-ext-text, requestaccount-acc-text&lt;br /&gt;
##### this is not it https://wiki.eco-libre.org/wiki/MediaWiki:Requestaccount-acc-text&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
A confirmation message will be sent to your email address once you submit this request. The address will not be published. Please respond by clicking on the confirmation link provided by the email. Finally, your password will be emailed to you when your account is created. &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
#### nor this https://wiki.eco-libre.org/wiki/MediaWiki:Requestaccount-ext-text&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
The following information is kept private and will only be used for this request. You may want to list contacts such a phone number to aid in identify confirmation. &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
### I just searched the string, and found this&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@mail:/var/www/html/wiki.eco-libre.org# grep -irl &#039;is in fact my own real name&#039; *&lt;br /&gt;
cache/l10n_cache-en.cdb&lt;br /&gt;
htdocs/extensions/ConfirmAccount/i18n/requestaccount/en.json&lt;br /&gt;
root@mail:/var/www/html/wiki.eco-libre.org# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
#### so it looks like we need to edit one of these&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@mail:/var/www/html/wiki.eco-libre.org# grep -i &#039;real name&#039; htdocs/extensions/ConfirmAccount/i18n/requestaccount/en.json&lt;br /&gt;
		&amp;quot;requestaccount-real&amp;quot;: &amp;quot;Real name (optional):&amp;quot;,&lt;br /&gt;
		&amp;quot;requestaccount-real-i&amp;quot;: &amp;quot;Real name is optional. If you choose to provide it, this will be used for giving the user attribution for their work.&amp;quot;,&lt;br /&gt;
		&amp;quot;requestaccount-same&amp;quot;: &amp;quot;(same as real name below)&amp;quot;,&lt;br /&gt;
		&amp;quot;requestaccount-agree&amp;quot;: &amp;quot;You must certify that your real name is correct and that you agree to our Terms of Service.&amp;quot;,&lt;br /&gt;
		&amp;quot;requestaccount-tos&amp;quot;: &amp;quot;I have read and agree to abide by the [[{{MediaWiki:Requestaccount-page}}|Terms of Service]] of {{SITENAME}}.\nThe name I have specified under \&amp;quot;Real name\&amp;quot; is in fact my own real name.&amp;quot;,&lt;br /&gt;
root@mail:/var/www/html/wiki.eco-libre.org# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
#### I edited these two pages&lt;br /&gt;
##### https://wiki.eco-libre.org/wiki/MediaWiki:Requestaccount-tos&lt;br /&gt;
##### https://wiki.eco-libre.org/wiki/MediaWiki:Requestaccount-agree&lt;br /&gt;
### that worked; the agree text changed when I refresh the RequsetAccount form in tor browser&lt;br /&gt;
### I entered the min inforamtion, and got this response&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Your account request has been sent and is now pending review. A confirmation email has been sent to your email address.&lt;br /&gt;
&lt;br /&gt;
Return to Main Page.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
#### curiously, that means it didn&#039;t force me to enter a CV, bio, or the list of websites&lt;br /&gt;
#### I also got an email from noreply@eco-libre.org. It just basically asked me to click an email. Good GDPR compliance.&lt;br /&gt;
##### wait, I refreshed the special page as admin. it shows-up for review. so I guess not GDPR compliant :(&lt;br /&gt;
##### also the ip address listed is 127.0.0.1. Perhaps I need to configure MediaWiki to process X-Forwarded-For headers&lt;br /&gt;
### I changed &#039;false&#039; to &#039;true&#039; for the biography; now it appears again&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$wgConfirmAccountRequestFormItems = [&lt;br /&gt;
   &#039;UserName&#039;        =&amp;gt; [ &#039;enabled&#039; =&amp;gt; true ],&lt;br /&gt;
   &#039;RealName&#039;        =&amp;gt; [ &#039;enabled&#039; =&amp;gt; false ],&lt;br /&gt;
   &#039;Biography&#039;       =&amp;gt; [ &#039;enabled&#039; =&amp;gt; true, &#039;minWords&#039; =&amp;gt; 50 ],&lt;br /&gt;
   &#039;AreasOfInterest&#039; =&amp;gt; [ &#039;enabled&#039; =&amp;gt; true ],&lt;br /&gt;
   &#039;CV&#039;              =&amp;gt; [ &#039;enabled&#039; =&amp;gt; true ],&lt;br /&gt;
   &#039;Notes&#039;           =&amp;gt; [ &#039;enabled&#039; =&amp;gt; true ],&lt;br /&gt;
   &#039;Links&#039;           =&amp;gt; [ &#039;enabled&#039; =&amp;gt; true ],&lt;br /&gt;
   &#039;TermsOfService&#039;  =&amp;gt; [ &#039;enabled&#039; =&amp;gt; true ],&lt;br /&gt;
 ];&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## the workflow is for, after being approved, the system emails the passowrd. that&#039;s not very secure. we should, at least, make sure to require the user to change their password on first login&lt;br /&gt;
### I was looking for a way to force users to change their password on first login, but I first found this in the OSE config&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#############&lt;br /&gt;
# HARDENING #&lt;br /&gt;
#############&lt;br /&gt;
&lt;br /&gt;
$wgSecureLogin = true;&lt;br /&gt;
$wgSecretKey = &#039;REDACTED&#039;;&lt;br /&gt;
&lt;br /&gt;
# PASSWORD POLICIES&lt;br /&gt;
&lt;br /&gt;
$wgPasswordPolicy[&#039;policies&#039;][&#039;default&#039;][&#039;MinimalPasswordLength&#039;] = 10;&lt;br /&gt;
$wgPasswordPolicy[&#039;policies&#039;][&#039;default&#039;][&#039;PasswordCannotBePopular&#039;] = PHP_INT_MAX;&lt;br /&gt;
$wgPasswordPolicy[&#039;policies&#039;][&#039;default&#039;][&#039;PasswordCannotMatchUsername&#039;] = true;&lt;br /&gt;
&lt;br /&gt;
$wgPasswordPolicy[&#039;policies&#039;][&#039;sysop&#039;][&#039;MinimalPasswordLength&#039;] = 20&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
### I added this to stack exchange https://webapps.stackexchange.com/questions/182290/how-to-force-new-users-to-reset-their-password-mediawiki&lt;br /&gt;
# TODO: figure-out how to force new users to change their password, if it was auto-generated by mediawiki&lt;br /&gt;
# TODO: create ToS page https://wiki.eco-libre.org/wiki/Eco-Libre:Terms_of_Service&lt;br /&gt;
# TODO: figure-out how to make mediawiki see the IP as X-Forwarded-For (to play nice with nginx-&amp;gt;varnish-&amp;gt;apache)&lt;br /&gt;
# TODO: finish activating &amp;amp; configuring the remaining &amp;quot;new&amp;quot; extensions&lt;br /&gt;
&lt;br /&gt;
= 2026-04-17 =&lt;br /&gt;
# shit, we&#039;re getting a 500 error on the wiki today&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[user@disp3459 ~]$ curl -iL https://wiki.eco-libre.org&lt;br /&gt;
HTTP/1.1 500 Internal Server Error&lt;br /&gt;
Server: nginx&lt;br /&gt;
Date: Sat, 18 Apr 2026 00:57:02 GMT&lt;br /&gt;
Content-Type: text/html; charset=UTF-8&lt;br /&gt;
Content-Length: 0&lt;br /&gt;
Connection: keep-alive&lt;br /&gt;
X-Content-Type-Options: nosniff&lt;br /&gt;
Expires: Thu, 19 Nov 1981 08:52:00 GMT&lt;br /&gt;
Cache-Control: no-store, no-cache, must-revalidate&lt;br /&gt;
Pragma: no-cache&lt;br /&gt;
X-Request-Id: REDACTED&lt;br /&gt;
X-Frame-Options: SAMEORIGIN&lt;br /&gt;
Set-Cookie: mw_installer_session=REDACTED; path=/; secure; HttpOnly; SameSite=Strict;HttpOnly;Secure&lt;br /&gt;
X-Content-Type-Options: nosniff&lt;br /&gt;
X-XSS-Protection: 1; mode=block&lt;br /&gt;
X-Frame-Options: deny&lt;br /&gt;
Referrer-Policy: strict-origin&lt;br /&gt;
X-Varnish: 18804052&lt;br /&gt;
Age: 0&lt;br /&gt;
Via: 1.1 mail (Varnish/7.7)&lt;br /&gt;
&lt;br /&gt;
[user@disp3459 ~]$ &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# looks like open_basedir?&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Sat Apr 18 00:59:28.202275 2026] [proxy_fcgi:error] [pid 3214280:tid 3214323] [client 127.0.0.1:0] AH01071: Got error &#039;PHP message: PHP Warning:  is_readable(): open_basedir restriction in effect. File(/usr/share/mediawiki/LocalSettings.php) is not within the allowed path(s): (...) in /usr/share/mediawiki/includes/Output/NoLocalSettings.php on line 59; PHP message: PHP Fatal error:  Uncaught Error: Call to undefined function Wikimedia\\ObjectCache\\ini_set() in /usr/share/mediawiki/includes/libs/objectcache/APCUBagOStuff.php:55\nStack trace:\n#0 /usr/share/mediawiki/includes/utils/FileContentsHasher.php(37): Wikimedia\\ObjectCache\\APCUBagOStuff-&amp;gt;construct()\n#1 /usr/share/mediawiki/includes/utils/FileContentsHasher.php(47): FileContentsHasher-&amp;gt;construct()\n#2 /usr/share/mediawiki/includes/utils/FileContentsHasher.php(93): FileContentsHasher::singleton()\n#3 /usr/share/mediawiki/includes/Html/TemplateParser.php(271): FileContentsHasher::getFileContentsHash()\n#4 /usr/share/mediawiki/includes/Html/TemplateParser.php(173): MediaWiki\\Html\\TemplateParser-&amp;gt;compile()\n#5 /usr/share/mediawiki/includes/Html/TemplateParser.php(296): MediaWiki\\Html\\TemplateParser-&amp;gt;getTemplate()\n#6 /usr/share/mediawiki/includes/Output/NoLocalSettings.php(54): MediaWiki\\Html\\TemplateParser-&amp;gt;processTemplate()\n#7 /usr/share/mediawiki/includes/WebStart.php(51): require_once(&#039;...&#039;)\n#8...&#039;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# it&#039;s just a symlink to a symlink to a non-existant file. is that the issue?&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@mail:/usr/share/mediawiki/includes/libs/rdbms/database# ls -lah /usr/share/mediawiki/LocalSettings.php&lt;br /&gt;
lrwxrwxrwx 1 root root 36 Apr 10 22:17 /usr/share/mediawiki/LocalSettings.php -&amp;gt; /var/lib/mediawiki/LocalSettings.php&lt;br /&gt;
root@mail:/usr/share/mediawiki/includes/libs/rdbms/database# ls -lah /var/lib/mediawiki/LocalSettings.php&lt;br /&gt;
lrwxrwxrwx 1 root root 32 Apr 10 22:17 /var/lib/mediawiki/LocalSettings.php -&amp;gt; /etc/mediawiki/LocalSettings.php&lt;br /&gt;
root@mail:/usr/share/mediawiki/includes/libs/rdbms/database# ls -lah /etc/mediawiki/LocalSettings.php&lt;br /&gt;
ls: cannot access &#039;/etc/mediawiki/LocalSettings.php&#039;: No such file or directory&lt;br /&gt;
root@mail:/usr/share/mediawiki/includes/libs/rdbms/database# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# wtf. the file is here, but it&#039;s not here?&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@mail:/var/lib/mediawiki# ls LocalSettings.php &lt;br /&gt;
LocalSettings.php&lt;br /&gt;
root@mail:/var/lib/mediawiki# cat LocalSettings.php &lt;br /&gt;
cat: LocalSettings.php: No such file or directory&lt;br /&gt;
root@mail:/var/lib/mediawiki# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# oh, it&#039;s because it&#039;s a symlink&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@mail:/var/lib/mediawiki# ls -lah /var/www/html/wiki.eco-libre.org/htdocs/LocalSettings.php &lt;br /&gt;
lrwxrwxrwx 1 root root 32 Apr 10 22:17 /var/www/html/wiki.eco-libre.org/htdocs/LocalSettings.php -&amp;gt; /etc/mediawiki/LocalSettings.php&lt;br /&gt;
root@mail:/var/lib/mediawiki# cat /var/www/html/wiki.eco-libre.org/htdocs/LocalSettings.php &lt;br /&gt;
cat: /var/www/html/wiki.eco-libre.org/htdocs/LocalSettings.php: No such file or directory&lt;br /&gt;
root@mail:/var/lib/mediawiki# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# that definitely was a file before. I set it to just require() the real file from one dir up (outside the docroot). but why is it gone now? could it have been deleted by a security upgrade in apt? unattended-upgrades perhaps?&lt;br /&gt;
## well, that&#039;s a match&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@mail:/var/log/unattended-upgrades# grep -irl mediawiki *&lt;br /&gt;
unattended-upgrades-dpkg.log&lt;br /&gt;
unattended-upgrades.log&lt;br /&gt;
root@mail:/var/log/unattended-upgrades# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# yeah, it looks like we upgraded on 2026-04-13. That was Monday. Today is Friday.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@mail:/var/log/unattended-upgrades# grep -ir mediawiki *&lt;br /&gt;
unattended-upgrades-dpkg.log:Preparing to unpack .../mediawiki_1%3a1.43.8+dfsg-1~deb13u1_all.deb ...&lt;br /&gt;
unattended-upgrades-dpkg.log:Unpacking mediawiki (1:1.43.8+dfsg-1~deb13u1) over (1:1.43.6+dfsg-1~deb13u1) ...&lt;br /&gt;
unattended-upgrades-dpkg.log:Preparing to unpack .../mediawiki-classes_1%3a1.43.8+dfsg-1~deb13u1_all.deb ...&lt;br /&gt;
unattended-upgrades-dpkg.log:Unpacking mediawiki-classes (1:1.43.8+dfsg-1~deb13u1) over (1:1.43.6+dfsg-1~deb13u1) ...&lt;br /&gt;
unattended-upgrades-dpkg.log:Setting up mediawiki-classes (1:1.43.8+dfsg-1~deb13u1) ...&lt;br /&gt;
unattended-upgrades-dpkg.log:Setting up mediawiki (1:1.43.8+dfsg-1~deb13u1) ...&lt;br /&gt;
unattended-upgrades-dpkg.log:apache2_invoke mediawiki: already enabled&lt;br /&gt;
unattended-upgrades-dpkg.log:mediawiki-jobrunner.service is a disabled or a static unit not running, not starting it.&lt;br /&gt;
unattended-upgrades.log:2026-04-13 06:07:02,546 INFO Packages that will be upgraded: mediawiki mediawiki-classes&lt;br /&gt;
root@mail:/var/log/unattended-upgrades# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# mediawiki announced two releases on 2026-04-01. One was a normal maintenance release (1.43.8). One was a security release (1.43.7)&lt;br /&gt;
## https://lists.wikimedia.org/hyperkitty/list/mediawiki-announce@lists.wikimedia.org/thread/DIBLSBHISKX6NFRUFNOGZRVW42E7R2QP/&lt;br /&gt;
## https://lists.wikimedia.org/hyperkitty/list/mediawiki-announce@lists.wikimedia.org/thread/6VW6OGVSC7LO3QUMBEZOPQFYYOFDJ452/&lt;br /&gt;
# well, it&#039;s good that we confirmed that securty updates are getting automatically installed.&lt;br /&gt;
# ok, well, obviously we need to follow the debian-way and put the LocalSettings.php file in /etc/.\&lt;br /&gt;
## I did that&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@mail:/var/lib/mediawiki# cat /etc/mediawiki/LocalSettings.php&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
# including separate file that contains the database password so that it is not stored within the document root.&lt;br /&gt;
# For more info see:&lt;br /&gt;
#  * https://tech.michaelaltfield.net/2020/02/14/phplist-hardening-security/&lt;br /&gt;
#  * https://www.mediawiki.org/wiki/Manual:Security&lt;br /&gt;
#  * https://wiki.r00tedvw.com/index.php/Mediawiki/Hardening&lt;br /&gt;
 &lt;br /&gt;
#$docRoot = dirname( $_SERVER[&#039;DOCUMENT_ROOT&#039;] );&lt;br /&gt;
#require_once &amp;quot;$docRoot/LocalSettings.php&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
# docRoot didn&#039;t work for all of:&lt;br /&gt;
#  1. php-fpm (the normal website)&lt;br /&gt;
#  2. cli&lt;br /&gt;
#  3. the fact that we&#039;re in /var/lib/mediawiki due to debian&#039;s install symlink&lt;br /&gt;
#&lt;br /&gt;
# ...so I&#039;m just hardcoding the path to LocalSettings.php, so it always works!&lt;br /&gt;
&lt;br /&gt;
require_once( &amp;quot;/var/www/html/wiki.eco-libre.org/LocalSettings.php&amp;quot; );&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
root@mail:/var/lib/mediawiki# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# I tried the site; it&#039;s still broken&lt;br /&gt;
# I cleared varnish cache; it&#039;s still broken&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@mail:/var/lib/mediawiki# varnishadm &#039;ban req.url ~ &amp;quot;.&amp;quot;&#039;&lt;br /&gt;
&lt;br /&gt;
root@mail:/var/lib/mediawiki# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# yeah, I think the problem is that I never added /etc/mediawiki into the basedir, because I wasn&#039;t using it there. Ugh.&lt;br /&gt;
# I don&#039;t like doing this, but there&#039;s nothing else there. should be fine&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@mail:/var/lib/mediawiki# ls -lah /etc/mediawiki/&lt;br /&gt;
total 20K&lt;br /&gt;
drwxr-xr-x   2 root root 4,0K Apr 18 01:16 .&lt;br /&gt;
drwxr-xr-x 120 root root  12K Apr 17 20:30 ..&lt;br /&gt;
-rw-r--r--   1 root root  741 Apr 18 01:16 LocalSettings.php&lt;br /&gt;
root@mail:/var/lib/mediawiki# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= 2026-04-14 =&lt;br /&gt;
# Appropedia responded to me, indicating that they use Vector 2022 skin, with these config options https://wordpress.org/support/topic/support-for-automatic-exchange-rates-wp_http_block_external-2/#&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
:wfLoadSkin( &#039;Vector&#039; );&lt;br /&gt;
:$wgDefaultSkin = &#039;vector-2022&#039;;&lt;br /&gt;
:$wgSkipSkins[] = &#039;vector&#039;; // Disable old Vector&lt;br /&gt;
:$wgVectorResponsive = true;&lt;br /&gt;
:$wgVectorMaxWidthOptions[&#039;exclude&#039;][&#039;mainpage&#039;] = false;&lt;br /&gt;
:$wgVectorNightMode[&#039;logged_out&#039;] = true;&lt;br /&gt;
:$wgDefaultUserOptions[&#039;vector-main-menu-pinned&#039;] = 0;&lt;br /&gt;
:$wgDefaultUserOptions[&#039;vector-page-tools-pinned&#039;] = 0;&lt;br /&gt;
:$wgDefaultUserOptions[&#039;vector-appearance-pinned&#039;] = 0;&lt;br /&gt;
:$wgDefaultUserOptions[&#039;vector-toc-pinned&#039;] = 0;&lt;br /&gt;
:$wgDefaultUserOptions[&#039;vector-font-size&#039;] = 1;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# they said they use this extension for &amp;quot;read mode&amp;quot; which they developed themselves https://www.mediawiki.org/wiki/Extension:ReadMode&lt;br /&gt;
&lt;br /&gt;
= 2026-04-13 =&lt;br /&gt;
# Here&#039;s TOFU 3/3 (Tor, exit in The Netherlands)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
The Netherlands&lt;br /&gt;
	  Congratulations. This browser is configured to use Tor.&lt;br /&gt;
2026-04-13&lt;br /&gt;
######################################################################### 100.0%&lt;br /&gt;
2026-04-13&lt;br /&gt;
14M	OATHAuth-REL1_43-015a49e.tar.gz&lt;br /&gt;
9ee56e843931edd87b631b264d680e9f8d77f18b5ffdbc18b9a4f5b15330878e  OATHAuth-REL1_43-015a49e.tar.gz&lt;br /&gt;
user@host:/tmp/user/1000/tmp.eIvrMPff3B$ &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= 2026-04-10 =&lt;br /&gt;
# Here&#039;s TOFU 2/3 (VPN, exit in US)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
United States&lt;br /&gt;
2026-04-10&lt;br /&gt;
######################################################################### 100.0%&lt;br /&gt;
2026-04-10&lt;br /&gt;
14M	OATHAuth-REL1_43-015a49e.tar.gz&lt;br /&gt;
9ee56e843931edd87b631b264d680e9f8d77f18b5ffdbc18b9a4f5b15330878e  OATHAuth-REL1_43-015a49e.tar.gz&lt;br /&gt;
user@disp5712:/tmp/tmp.oTeGPpTCzP$ &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# finally, they all match! great, that&#039;s our last extension&lt;br /&gt;
&lt;br /&gt;
= 2026-04-09 =&lt;br /&gt;
# Here&#039;s TOFU 3/3 (ISP, exit in Ecuador)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Ecuador&lt;br /&gt;
2026-04-09&lt;br /&gt;
######################################################################### 100.0%&lt;br /&gt;
2026-04-09&lt;br /&gt;
4.0K	OATHAuth-REL1_43-967ccd4.tar.gz&lt;br /&gt;
8351c0267c2cd7866ff04c04261f06cd75af9a7130aac848ca43fd047404e229  OATHAuth-REL1_43-967ccd4.tar.gz&lt;br /&gt;
user@disp7124:/tmp/tmp.wlx3U02c6r$ &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# fuck, it&#039;s already unavailable; says &#039;libraryupgrader&#039; from 3 hours ago &amp;gt;:0&lt;br /&gt;
# let&#039;s try again&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
REMOTE_FILES=&amp;quot;https://extdist.wmflabs.org/dist/extensions/OATHAuth-REL1_43-015a49e.tar.gz&amp;quot;&lt;br /&gt;
&lt;br /&gt;
CURL=&amp;quot;/usr/bin/curl --retry 5 --retry-all-errors&amp;quot;&lt;br /&gt;
PYTHON=&amp;quot;/usr/bin/python3&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# in tails, we must torify&lt;br /&gt;
if [[ &amp;quot;`whoami`&amp;quot; == &amp;quot;amnesia&amp;quot; ]] ; then&lt;br /&gt;
	CURL=&amp;quot;/usr/bin/torify ${CURL}&amp;quot;&lt;br /&gt;
	PYTHON=&amp;quot;/usr/bin/torify ${PYTHON}&amp;quot;&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
tmpDir=`mktemp -d`&lt;br /&gt;
pushd &amp;quot;${tmpDir}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# first get some info about our internet connection&lt;br /&gt;
${CURL} -s https://ifconfig.co/country | head -n1&lt;br /&gt;
${CURL} -s https://check.torproject.org | grep Congratulations | head -n1&lt;br /&gt;
&lt;br /&gt;
# and today&#039;s date&lt;br /&gt;
date -u +&amp;quot;%Y-%m-%d&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# get the file&lt;br /&gt;
for file in ${REMOTE_FILES}; do&lt;br /&gt;
	${CURL} --progress-bar -O ${file}&lt;br /&gt;
done&lt;br /&gt;
&lt;br /&gt;
# checksum&lt;br /&gt;
date -u +&amp;quot;%Y-%m-%d&amp;quot;&lt;br /&gt;
du -sh *&lt;br /&gt;
sha256sum *&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# Here&#039;s TOFU 1/3 (ISP, exit in Ecuador)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Ecuador&lt;br /&gt;
2026-04-09&lt;br /&gt;
######################################################################### 100.0%&lt;br /&gt;
2026-04-09&lt;br /&gt;
14M	OATHAuth-REL1_43-015a49e.tar.gz&lt;br /&gt;
9ee56e843931edd87b631b264d680e9f8d77f18b5ffdbc18b9a4f5b15330878e  OATHAuth-REL1_43-015a49e.tar.gz&lt;br /&gt;
user@disp7124:/tmp/tmp.rGKb4qtHLX$ &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= 2026-04-08 =&lt;br /&gt;
# Here&#039;s TOFU 2/3 (VPN, exit in UK)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
United Kingdom&lt;br /&gt;
2026-04-08&lt;br /&gt;
############################################################################## 100.0%&lt;br /&gt;
2026-04-08&lt;br /&gt;
14M	OATHAuth-REL1_43-967ccd4.tar.gz&lt;br /&gt;
5992bf6044ba5bd6404d51ec5bef936e6eb724576a2003fc176648c7fcf9c6b7  OATHAuth-REL1_43-967ccd4.tar.gz&lt;br /&gt;
user@disp6902:/tmp/tmp.KDMVCsn1cU$ &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= 2026-04-07 =&lt;br /&gt;
# here&#039;s TOFU 3/3 (Tor, exit in The Netherlands)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
The Netherlands&lt;br /&gt;
	  Congratulations. This browser is configured to use Tor.&lt;br /&gt;
2026-04-07&lt;br /&gt;
####################################################################### 100.0%&lt;br /&gt;
####################################################################### 100.0%&lt;br /&gt;
####################################################################### 100.0%&lt;br /&gt;
2026-04-07&lt;br /&gt;
448K	ConfirmAccount-REL1_43-38c4602.tar.gz&lt;br /&gt;
124K	DeleteBatch-REL1_43-b3b052b.tar.gz&lt;br /&gt;
4.0K	OATHAuth-REL1_43-2cdbefb.tar.gz&lt;br /&gt;
95b2bc67977c22d069867a7225aa1a9720b7593ed5ab49aa27cc293f01b2e2bb  ConfirmAccount-REL1_43-38c4602.tar.gz&lt;br /&gt;
d1e7c01cf709f2b57137bb3d76f73b4e8fd36ce57c12b750b04fe20ffce9be61  DeleteBatch-REL1_43-b3b052b.tar.gz&lt;br /&gt;
8351c0267c2cd7866ff04c04261f06cd75af9a7130aac848ca43fd047404e229  OATHAuth-REL1_43-2cdbefb.tar.gz&lt;br /&gt;
user@host:/tmp/user/1000/tmp.qw9hrOvh3l$ &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# ok, well, we&#039;re 2/3 for that one. ConfirmAccount and DeleteBatch both have the same on all 3 TOFUs.&lt;br /&gt;
## But OATHAuth must have had a new release, because it&#039;s now 404&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
user@host:/tmp/user/1000/tmp.qw9hrOvh3l$ cat OATHAuth-REL1_43-2cdbefb.tar.gz &lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;head&amp;gt;&amp;lt;title&amp;gt;404 Not Found&amp;lt;/title&amp;gt;&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;h1&amp;gt;404 Not Found&amp;lt;/h1&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&amp;lt;center&amp;gt;nginx/1.18.0&amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
user@host:/tmp/user/1000/tmp.qw9hrOvh3l$ &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# I checked the changelog. looks like this extension is getting updated almost every 1-2 days from &amp;quot;Translation updater bot&amp;quot; – that&#039;s terrible. We need three consecutive days of no changes for 3TOFU https://www.mediawiki.org/wiki/Extension:OATHAuth&lt;br /&gt;
## hmm, well, if I look back further, there was a gap of 2 months before the update 6 days ago. So there certainly is *some* stability.&lt;br /&gt;
## also, that was *all* commits. This one limits to just the 1.43 branch, which is what we want https://gerrit.wikimedia.org/r/plugins/gitiles/mediawiki/extensions/OATHAuth/+log/refs/heads/REL1_43&lt;br /&gt;
### hmm, that one shows the last update was 10 hours ago, and the one before that was 2 months ago (Jan 22). That would be fine, but didn&#039;t we have two consecutive 3TOFUs fail on us?&lt;br /&gt;
### oh, wait, woah. the commits are out of order! First it shows &amp;quot;10 hours ago&amp;quot; and then &amp;quot;2 months ago&amp;quot; and then &amp;quot;7 days ago&amp;quot; wtf!&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
gerrit.wikimedia.org / mediawiki / extensions / OATHAuth / refs/heads/REL1_43&lt;br /&gt;
&lt;br /&gt;
	967ccd4 Localisation updates from https://translatewiki.net. by Translation updater bot · 10 hours ago REL1_43&lt;br /&gt;
	2cdbefb SECURITY: Don&#039;t leak user&#039;s lack of 2FA to other users by Roan Kattouw · 2 months ago&lt;br /&gt;
	bfcd5cf Localisation updates from https://translatewiki.net. by Translation updater bot · 7 days ago&lt;br /&gt;
	d8e7578 build: Updating npm dependencies by libraryupgrader · 12 days ago&lt;br /&gt;
	be14e83 Localisation updates from https://translatewiki.net. by Translation updater bot · 2 weeks ago&lt;br /&gt;
	77c70f5 build: Updating flatted to 3.4.2 by libraryupgrader · 3 weeks ago&lt;br /&gt;
	87d04d4 Localisation updates from https://translatewiki.net. by Translation updater bot · 3 weeks ago&lt;br /&gt;
	8e176b2 Localisation updates from https://translatewiki.net. by Translation updater bot · 4 weeks ago&lt;br /&gt;
	14596de Localisation updates from https://translatewiki.net. by Translation updater bot · 5 weeks ago&lt;br /&gt;
	8c7891a build: Updating ajv to 6.14.0, 8.18.0 by libraryupgrader · 6 weeks ago&lt;br /&gt;
	0406194 Localisation updates from https://translatewiki.net. by Translation updater bot · 6 weeks ago&lt;br /&gt;
	4c94235 Localisation updates from https://translatewiki.net. by Translation updater bot · 7 weeks ago&lt;br /&gt;
	7d0b2d7 Localisation updates from https://translatewiki.net. by Translation updater bot · 8 weeks ago&lt;br /&gt;
	a896cff Localisation updates from https://translatewiki.net. by Translation updater bot · 9 weeks ago&lt;br /&gt;
	b8e8afa Localisation updates from https://translatewiki.net. by Translation updater bot · 2 months ago&lt;br /&gt;
	4b3cb73 build: Updating lodash to 4.17.23 by libraryupgrader · 2 months ago&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# well, it looks like the translator bot runs once per week. so we should have 6 days before that one changes again..&lt;br /&gt;
# anyway, here&#039;s our (hopefully last) 3TOFU script, just for OATHAuth&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
REMOTE_FILES=&amp;quot;https://extdist.wmflabs.org/dist/extensions/OATHAuth-REL1_43-967ccd4.tar.gz&amp;quot;&lt;br /&gt;
&lt;br /&gt;
CURL=&amp;quot;/usr/bin/curl --retry 5 --retry-all-errors&amp;quot;&lt;br /&gt;
PYTHON=&amp;quot;/usr/bin/python3&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# in tails, we must torify&lt;br /&gt;
if [[ &amp;quot;`whoami`&amp;quot; == &amp;quot;amnesia&amp;quot; ]] ; then&lt;br /&gt;
	CURL=&amp;quot;/usr/bin/torify ${CURL}&amp;quot;&lt;br /&gt;
	PYTHON=&amp;quot;/usr/bin/torify ${PYTHON}&amp;quot;&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
tmpDir=`mktemp -d`&lt;br /&gt;
pushd &amp;quot;${tmpDir}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# first get some info about our internet connection&lt;br /&gt;
${CURL} -s https://ifconfig.co/country | head -n1&lt;br /&gt;
${CURL} -s https://check.torproject.org | grep Congratulations | head -n1&lt;br /&gt;
&lt;br /&gt;
# and today&#039;s date&lt;br /&gt;
date -u +&amp;quot;%Y-%m-%d&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# get the file&lt;br /&gt;
for file in ${REMOTE_FILES}; do&lt;br /&gt;
	${CURL} --progress-bar -O ${file}&lt;br /&gt;
done&lt;br /&gt;
&lt;br /&gt;
# checksum&lt;br /&gt;
date -u +&amp;quot;%Y-%m-%d&amp;quot;&lt;br /&gt;
du -sh *&lt;br /&gt;
sha256sum *&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# and TOFU 1/3 (Tor, exit in The Netherlands)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
The Netherlands&lt;br /&gt;
	  Congratulations. This browser is configured to use Tor.&lt;br /&gt;
2026-04-07&lt;br /&gt;
####################################################################### 100.0%&lt;br /&gt;
2026-04-07&lt;br /&gt;
14M	OATHAuth-REL1_43-967ccd4.tar.gz&lt;br /&gt;
5992bf6044ba5bd6404d51ec5bef936e6eb724576a2003fc176648c7fcf9c6b7  OATHAuth-REL1_43-967ccd4.tar.gz&lt;br /&gt;
user@host:/tmp/user/1000/tmp.RBxv6XdjXd$ &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= 2026-04-06 =&lt;br /&gt;
# here&#039;s TOFU 2/3 (VPN, exit in Germany)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Germany&lt;br /&gt;
2026-04-06&lt;br /&gt;
#################################################################################### 100.0%&lt;br /&gt;
#################################################################################### 100.0%&lt;br /&gt;
#################################################################################### 100.0%&lt;br /&gt;
2026-04-06&lt;br /&gt;
448K	ConfirmAccount-REL1_43-38c4602.tar.gz&lt;br /&gt;
124K	DeleteBatch-REL1_43-b3b052b.tar.gz&lt;br /&gt;
14M	OATHAuth-REL1_43-2cdbefb.tar.gz&lt;br /&gt;
95b2bc67977c22d069867a7225aa1a9720b7593ed5ab49aa27cc293f01b2e2bb  ConfirmAccount-REL1_43-38c4602.tar.gz&lt;br /&gt;
d1e7c01cf709f2b57137bb3d76f73b4e8fd36ce57c12b750b04fe20ffce9be61  DeleteBatch-REL1_43-b3b052b.tar.gz&lt;br /&gt;
f71115af96a1ed5297d8d56f56683635b7c9e0b8b32151b184feea1fbec3350a  OATHAuth-REL1_43-2cdbefb.tar.gz&lt;br /&gt;
user@disp8963:/tmp/tmp.JNwdKPbQIW$ &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= 2026-04-01 =&lt;br /&gt;
# continuing with the wiki setup today&lt;br /&gt;
# I saw our db partition reached 90%. It&#039;s been growing slowly, but adding mediawiki to the server didn&#039;t help, so I spent some time expanding the disks. Now we&#039;re down to 48% usage on the db partition, and everything else is hovering around 60% used, +/- 5%&lt;br /&gt;
# here&#039;s our last TOFU on the mediawiki extensions&lt;br /&gt;
## TOFU 3/3 (ISP, exit in Ecuador)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Ecuador&lt;br /&gt;
2026-04-01&lt;br /&gt;
######################################################################### 100.0%&lt;br /&gt;
######################################################################### 100.0%&lt;br /&gt;
######################################################################### 100.0%&lt;br /&gt;
######################################################################### 100.0%&lt;br /&gt;
######################################################################### 100.0%&lt;br /&gt;
######################################################################### 100.0%&lt;br /&gt;
2026-04-01&lt;br /&gt;
4.0K	ConfirmAccount-REL1_43-9cc1a82.tar.gz&lt;br /&gt;
4.0K	DeleteBatch-REL1_43-24a81e4.tar.gz&lt;br /&gt;
4.0K	OATHAuth-REL1_43-d8e7578.tar.gz&lt;br /&gt;
108K	SmiteSpam-REL1_43-483b81b.tar.gz&lt;br /&gt;
140K	UserMerge-REL1_43-27425da.tar.gz&lt;br /&gt;
492K	Widgets-REL1_43-60a09f0.tar.gz&lt;br /&gt;
8351c0267c2cd7866ff04c04261f06cd75af9a7130aac848ca43fd047404e229  ConfirmAccount-REL1_43-9cc1a82.tar.gz&lt;br /&gt;
8351c0267c2cd7866ff04c04261f06cd75af9a7130aac848ca43fd047404e229  DeleteBatch-REL1_43-24a81e4.tar.gz&lt;br /&gt;
8351c0267c2cd7866ff04c04261f06cd75af9a7130aac848ca43fd047404e229  OATHAuth-REL1_43-d8e7578.tar.gz&lt;br /&gt;
997c9edfe7ab78d6e1f1268d48ec19f13d036f584ad54c4281e210940a59f7c9  SmiteSpam-REL1_43-483b81b.tar.gz&lt;br /&gt;
5f28fdf7c0b727d699d42f14073359e13c8db1b2d389d78219845b5912cc0ccc  UserMerge-REL1_43-27425da.tar.gz&lt;br /&gt;
bed64d3c98842f7ec3675e17a24c21fb4720862084857e6834fb7813d14ab865  Widgets-REL1_43-60a09f0.tar.gz&lt;br /&gt;
user@disp7799:/tmp/tmp.YkN2s6MgT6$ &lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# huh, 3TOFU failed for 3/5 of the extensions&lt;br /&gt;
## SmiteSpam, UserMerge, and Widgets matched on all three&lt;br /&gt;
## but ConfirmAccount, DeleteBatch, and OATHAuthOATHAuth diff&#039;d&lt;br /&gt;
# I see that the file size of the three that failed is &amp;quot;4.0K&amp;quot;. that suggests that it didn&#039;t actually download&lt;br /&gt;
# sure enough, they&#039;re 404&#039;d&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
user@disp7799:/tmp/tmp.YkN2s6MgT6$ cat ConfirmAccount-REL1_43-9cc1a82.tar.gz&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;head&amp;gt;&amp;lt;title&amp;gt;404 Not Found&amp;lt;/title&amp;gt;&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;h1&amp;gt;404 Not Found&amp;lt;/h1&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&amp;lt;center&amp;gt;nginx/1.18.0&amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
user@disp7799:/tmp/tmp.YkN2s6MgT6$ &lt;br /&gt;
user@disp7799:/tmp/tmp.YkN2s6MgT6$ cat DeleteBatch-REL1_43-24a81e4.tar.gz&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;head&amp;gt;&amp;lt;title&amp;gt;404 Not Found&amp;lt;/title&amp;gt;&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;h1&amp;gt;404 Not Found&amp;lt;/h1&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&amp;lt;center&amp;gt;nginx/1.18.0&amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
user@disp7799:/tmp/tmp.YkN2s6MgT6$ &lt;br /&gt;
user@disp7799:/tmp/tmp.YkN2s6MgT6$ cat OATHAuth-REL1_43-d8e7578.tar.gz&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;head&amp;gt;&amp;lt;title&amp;gt;404 Not Found&amp;lt;/title&amp;gt;&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;h1&amp;gt;404 Not Found&amp;lt;/h1&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&amp;lt;center&amp;gt;nginx/1.18.0&amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
user@disp7799:/tmp/tmp.YkN2s6MgT6$ &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# if I go to download these plugins again, here&#039;s the URLs I get&lt;br /&gt;
## ConfirmAccount https://www.mediawiki.org/wiki/Extension:ConfirmAccount&lt;br /&gt;
### https://extdist.wmflabs.org/dist/extensions/ConfirmAccount-REL1_43-38c4602.tar.gz&lt;br /&gt;
## DeleteBatch https://www.mediawiki.org/wiki/Extension:ConfirmAccount&lt;br /&gt;
### https://extdist.wmflabs.org/dist/extensions/DeleteBatch-REL1_43-b3b052b.tar.gz&lt;br /&gt;
## OATHAuth https://www.mediawiki.org/wiki/Extension:OATHAuth&lt;br /&gt;
### https://extdist.wmflabs.org/dist/extensions/OATHAuth-REL1_43-2cdbefb.tar.gz&lt;br /&gt;
# here&#039;s our old 3TOFU script, for comparison&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
REMOTE_FILES=&amp;quot;https://extdist.wmflabs.org/dist/extensions/ConfirmAccount-REL1_43-9cc1a82.tar.gz https://extdist.wmflabs.org/dist/extensions/DeleteBatch-REL1_43-24a81e4.tar.gz https://extdist.wmflabs.org/dist/extensions/OATHAuth-REL1_43-d8e7578.tar.gz https://extdist.wmflabs.org/dist/extensions/SmiteSpam-REL1_43-483b81b.tar.gz https://extdist.wmflabs.org/dist/extensions/UserMerge-REL1_43-27425da.tar.gz https://extdist.wmflabs.org/dist/extensions/Widgets-REL1_43-60a09f0.tar.gz&amp;quot;&lt;br /&gt;
&lt;br /&gt;
CURL=&amp;quot;/usr/bin/curl --retry 5 --retry-all-errors&amp;quot;&lt;br /&gt;
PYTHON=&amp;quot;/usr/bin/python3&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# in tails, we must torify&lt;br /&gt;
if [[ &amp;quot;`whoami`&amp;quot; == &amp;quot;amnesia&amp;quot; ]] ; then&lt;br /&gt;
	CURL=&amp;quot;/usr/bin/torify ${CURL}&amp;quot;&lt;br /&gt;
	PYTHON=&amp;quot;/usr/bin/torify ${PYTHON}&amp;quot;&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
tmpDir=`mktemp -d`&lt;br /&gt;
pushd &amp;quot;${tmpDir}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# first get some info about our internet connection&lt;br /&gt;
${CURL} -s https://ifconfig.co/country | head -n1&lt;br /&gt;
${CURL} -s https://check.torproject.org | grep Congratulations | head -n1&lt;br /&gt;
&lt;br /&gt;
# and today&#039;s date&lt;br /&gt;
date -u +&amp;quot;%Y-%m-%d&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# get the file&lt;br /&gt;
for file in ${REMOTE_FILES}; do&lt;br /&gt;
	${CURL} --progress-bar -O ${file}&lt;br /&gt;
done&lt;br /&gt;
&lt;br /&gt;
# checksum&lt;br /&gt;
date -u +&amp;quot;%Y-%m-%d&amp;quot;&lt;br /&gt;
du -sh *&lt;br /&gt;
sha256sum *&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# so, yeah, I guess they delete the old releases when the push a new one? that&#039;s pretty annoying&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
https://extdist.wmflabs.org/dist/extensions/ConfirmAccount-REL1_43-9cc1a82.tar.gz&lt;br /&gt;
https://extdist.wmflabs.org/dist/extensions/ConfirmAccount-REL1_43-38c4602.tar.gz&lt;br /&gt;
&lt;br /&gt;
https://extdist.wmflabs.org/dist/extensions/DeleteBatch-REL1_43-24a81e4.tar.gz&lt;br /&gt;
https://extdist.wmflabs.org/dist/extensions/DeleteBatch-REL1_43-b3b052b.tar.gz&lt;br /&gt;
&lt;br /&gt;
https://extdist.wmflabs.org/dist/extensions/OATHAuth-REL1_43-d8e7578.tar.gz&lt;br /&gt;
https://extdist.wmflabs.org/dist/extensions/OATHAuth-REL1_43-2cdbefb.tar.gz&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# anyway, let&#039;s try it again, and hope we get all three before they push another release in the next ~1 week&lt;br /&gt;
# here&#039;s a new 3TOFU script&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
REMOTE_FILES=&amp;quot;https://extdist.wmflabs.org/dist/extensions/ConfirmAccount-REL1_43-38c4602.tar.gz https://extdist.wmflabs.org/dist/extensions/DeleteBatch-REL1_43-b3b052b.tar.gz https://extdist.wmflabs.org/dist/extensions/OATHAuth-REL1_43-2cdbefb.tar.gz&amp;quot;&lt;br /&gt;
&lt;br /&gt;
CURL=&amp;quot;/usr/bin/curl --retry 5 --retry-all-errors&amp;quot;&lt;br /&gt;
PYTHON=&amp;quot;/usr/bin/python3&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# in tails, we must torify&lt;br /&gt;
if [[ &amp;quot;`whoami`&amp;quot; == &amp;quot;amnesia&amp;quot; ]] ; then&lt;br /&gt;
	CURL=&amp;quot;/usr/bin/torify ${CURL}&amp;quot;&lt;br /&gt;
	PYTHON=&amp;quot;/usr/bin/torify ${PYTHON}&amp;quot;&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
tmpDir=`mktemp -d`&lt;br /&gt;
pushd &amp;quot;${tmpDir}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# first get some info about our internet connection&lt;br /&gt;
${CURL} -s https://ifconfig.co/country | head -n1&lt;br /&gt;
${CURL} -s https://check.torproject.org | grep Congratulations | head -n1&lt;br /&gt;
&lt;br /&gt;
# and today&#039;s date&lt;br /&gt;
date -u +&amp;quot;%Y-%m-%d&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# get the file&lt;br /&gt;
for file in ${REMOTE_FILES}; do&lt;br /&gt;
	${CURL} --progress-bar -O ${file}&lt;br /&gt;
done&lt;br /&gt;
&lt;br /&gt;
# checksum&lt;br /&gt;
date -u +&amp;quot;%Y-%m-%d&amp;quot;&lt;br /&gt;
du -sh *&lt;br /&gt;
sha256sum *&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# And TOFU 1/3 (ISP, exit in Ecuador)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Ecuador&lt;br /&gt;
2026-04-01&lt;br /&gt;
######################################################################### 100.0%&lt;br /&gt;
######################################################################### 100.0%&lt;br /&gt;
######################################################################### 100.0%&lt;br /&gt;
2026-04-01&lt;br /&gt;
448K	ConfirmAccount-REL1_43-38c4602.tar.gz&lt;br /&gt;
124K	DeleteBatch-REL1_43-b3b052b.tar.gz&lt;br /&gt;
14M	OATHAuth-REL1_43-2cdbefb.tar.gz&lt;br /&gt;
95b2bc67977c22d069867a7225aa1a9720b7593ed5ab49aa27cc293f01b2e2bb  ConfirmAccount-REL1_43-38c4602.tar.gz&lt;br /&gt;
d1e7c01cf709f2b57137bb3d76f73b4e8fd36ce57c12b750b04fe20ffce9be61  DeleteBatch-REL1_43-b3b052b.tar.gz&lt;br /&gt;
f71115af96a1ed5297d8d56f56683635b7c9e0b8b32151b184feea1fbec3350a  OATHAuth-REL1_43-2cdbefb.tar.gz&lt;br /&gt;
user@disp7799:/tmp/tmp.oWTEqi2mpP$ &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# and all the files are &amp;gt;4K, so that&#039;s promising.&lt;br /&gt;
# TODO: finish 3TOFU, install &amp;amp; configure extensions&lt;br /&gt;
# ...&lt;br /&gt;
# I also edited some wiki articles, namely&lt;br /&gt;
## this Maltfield_Log and Maltfield_Log/2026&lt;br /&gt;
## the Main_Page&lt;br /&gt;
## the Eco-Libre:About page (from the footer)&lt;br /&gt;
## a Documentation page, which describes what the wiki is for and what it&#039;s not for&lt;br /&gt;
# TOOO: write Eco-Libre:Privacy_policy&lt;br /&gt;
&lt;br /&gt;
= 2026-03-31 =&lt;br /&gt;
Hello World!&lt;br /&gt;
&lt;br /&gt;
# I installed this wiki last week on 2026-03-27&lt;br /&gt;
# since then, I did some hardening and basic setup (skin, logos)&lt;br /&gt;
# today I continued through the process of configuring its built-in plugins&lt;br /&gt;
# I&#039;m still in the process of a 3TOFU on the desired extensions.&lt;br /&gt;
# now I&#039;m finally editing some pages&lt;br /&gt;
# &#039;&#039;&#039;TODO: download, activate, and configure additional extensions&#039;&#039;&#039;&lt;/div&gt;</summary>
		<author><name>Maltfield</name></author>
	</entry>
	<entry>
		<id>https://wiki.eco-libre.org/index.php?title=Eco-Libre:Terms_of_Service&amp;diff=112</id>
		<title>Eco-Libre:Terms of Service</title>
		<link rel="alternate" type="text/html" href="https://wiki.eco-libre.org/index.php?title=Eco-Libre:Terms_of_Service&amp;diff=112"/>
		<updated>2026-05-05T20:12:45Z</updated>

		<summary type="html">&lt;p&gt;Maltfield: /* License */ license exceptions can occur..&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
Developer Certificate of Origin&lt;br /&gt;
Version 1.1&lt;br /&gt;
&lt;br /&gt;
Copyright (C) 2004, 2006 The Linux Foundation and its contributors.&lt;br /&gt;
&lt;br /&gt;
Everyone is permitted to copy and distribute verbatim copies of this&lt;br /&gt;
license document, but changing it is not allowed.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Developer&#039;s Certificate of Origin 1.1&lt;br /&gt;
&lt;br /&gt;
By making a contribution to this project, I certify that:&lt;br /&gt;
&lt;br /&gt;
(a) The contribution was created in whole or in part by me and I&lt;br /&gt;
    have the right to submit it under the open source license&lt;br /&gt;
    indicated in the file; or&lt;br /&gt;
&lt;br /&gt;
(b) The contribution is based upon previous work that, to the best&lt;br /&gt;
    of my knowledge, is covered under an appropriate open source&lt;br /&gt;
    license and I have the right under that license to submit that&lt;br /&gt;
    work with modifications, whether created in whole or in part&lt;br /&gt;
    by me, under the same open source license (unless I am&lt;br /&gt;
    permitted to submit under a different license), as indicated&lt;br /&gt;
    in the file; or&lt;br /&gt;
&lt;br /&gt;
(c) The contribution was provided directly to me by some other&lt;br /&gt;
    person who certified (a), (b) or (c) and I have not modified&lt;br /&gt;
    it.&lt;br /&gt;
&lt;br /&gt;
(d) I understand and agree that this project and the contribution&lt;br /&gt;
    are public and that a record of the contribution (including all&lt;br /&gt;
    personal information I submit with it, including my sign-off) is&lt;br /&gt;
    maintained indefinitely and may be redistributed consistent with&lt;br /&gt;
    this project or the open source license(s) involved.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Privacy Policy=&lt;br /&gt;
&lt;br /&gt;
By using this website, you agree to our [[Eco-Libre:Privacy policy|Privacy Policy]]&lt;br /&gt;
&lt;br /&gt;
=Code of Conduct=&lt;br /&gt;
&lt;br /&gt;
By using this website, you agree to our [[Eco-Libre:Code_of_Conduct|Code of Conduct]]&lt;br /&gt;
&lt;br /&gt;
=Attribution=&lt;br /&gt;
* Linux Foundation - https://developercertificate.org/&lt;br /&gt;
&lt;br /&gt;
=License=&lt;br /&gt;
&lt;br /&gt;
Copyright (C) 2023 Michael Altfield and Eco-Libre&lt;br /&gt;
&lt;br /&gt;
The contents of this wiki are under the [https://creativecommons.org/licenses/by-sa/4.0/ CC BY-SA version 4.0] license unless otherwise noted.&lt;br /&gt;
&lt;br /&gt;
The contents here is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the CC BY-SA License for more details.&lt;br /&gt;
&lt;br /&gt;
=Further Reading=&lt;br /&gt;
* CERN&#039;s DCO vs CLA https://ospo.docs.cern.ch/recommendations/CLAs-and-DCOs/&lt;br /&gt;
* https://wiki.eco-libre.org/wiki/Maltfield_Log/2026&lt;br /&gt;
&lt;br /&gt;
[[category: Legal]]&lt;br /&gt;
[[category: Eco-Libre Volunteer Agreements]]&lt;/div&gt;</summary>
		<author><name>Maltfield</name></author>
	</entry>
	<entry>
		<id>https://wiki.eco-libre.org/index.php?title=Maltfield_Log/2026&amp;diff=111</id>
		<title>Maltfield Log/2026</title>
		<link rel="alternate" type="text/html" href="https://wiki.eco-libre.org/index.php?title=Maltfield_Log/2026&amp;diff=111"/>
		<updated>2026-05-05T19:55:00Z</updated>

		<summary type="html">&lt;p&gt;Maltfield: change dates to h1 headings to fix toc&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is my ([[User:Maltfield|Michael Altfield]]&#039;s) work log from 2026&lt;br /&gt;
&lt;br /&gt;
I intentionally make my log entries &#039;&#039;very&#039;&#039; verbose -- to make future volunteer&#039;s work easier. The more information that is dumped into this log, the more helpful it will be for future volunteers.&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
=See Also=&lt;br /&gt;
# [[Maltfield_Log]]&lt;br /&gt;
# [[User:Maltfield]]&lt;br /&gt;
# [[Special:Contributions/Maltfield]]&lt;br /&gt;
&lt;br /&gt;
= 2026-04-28 =&lt;br /&gt;
# one of the authors of the CERN OHL license got back to me! https://forums.ohwr.org/t/possible-to-triple-license-cern-ohl-s-2-0-agpl-3-0-cc-by-sa-4-0/849882/6&lt;br /&gt;
# they confirmed what I said: don&#039;t license under 3 licenses, or the person who uses our stuff can choose which license they want. that&#039;s not good.&lt;br /&gt;
# unfortuantely they didn&#039;t comment on my copyright DEP5 file, so I asked them to&lt;br /&gt;
# in the meantime, I did look into REUSE&lt;br /&gt;
## it looked like a big PIA. their demo vid shows you having to define the license of every file. that&#039;s a nightmare.&lt;br /&gt;
## the docs said that there is a &#039;convert dep5&#039;. that would be a lifesaver! https://codeberg.org/fsfe/reuse-tool&lt;br /&gt;
## I installed reuse from apt, but I discovered there is NO &#039;convert-dep5&#039; option :(&lt;br /&gt;
## I tried, instead, to install from pip (very insecure but I did it in a dispVM), and it *does* have the &#039;convert-dep5&#039; command&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
user@disp4360:~/sandbox/life-line$ pip install reuse&lt;br /&gt;
error: externally-managed-environment&lt;br /&gt;
&lt;br /&gt;
× This environment is externally managed&lt;br /&gt;
╰─&amp;gt; To install Python packages system-wide, try apt install&lt;br /&gt;
	python3-xyz, where xyz is the package you are trying to&lt;br /&gt;
	install.&lt;br /&gt;
    &lt;br /&gt;
	If you wish to install a non-Debian-packaged Python package,&lt;br /&gt;
	create a virtual environment using python3 -m venv path/to/venv.&lt;br /&gt;
	Then use path/to/venv/bin/python and path/to/venv/bin/pip. Make&lt;br /&gt;
	sure you have python3-full installed.&lt;br /&gt;
    &lt;br /&gt;
	If you wish to install a non-Debian packaged Python application,&lt;br /&gt;
	it may be easiest to use pipx install xyz, which will manage a&lt;br /&gt;
	virtual environment for you. Make sure you have pipx installed.&lt;br /&gt;
    &lt;br /&gt;
	See /usr/share/doc/python3.11/README.venv for more information.&lt;br /&gt;
&lt;br /&gt;
note: If you believe this is a mistake, please contact your Python installation or OS distribution provider. You can override this, at the risk of breaking your Python installation or OS, by passing --break-system-packages.&lt;br /&gt;
hint: See PEP 668 for the detailed specification.&lt;br /&gt;
user@disp4360:~/sandbox/life-line$&lt;br /&gt;
&lt;br /&gt;
user@disp4360:~/sandbox/life-line$ sudo apt-get install python3-virtualenv&lt;br /&gt;
Reading package lists... Done&lt;br /&gt;
Building dependency tree... Done&lt;br /&gt;
Reading state information... Done&lt;br /&gt;
The following packages were automatically installed and are no longer required:&lt;br /&gt;
  python3-binaryornot python3-boolean python3-debian python3-license-expression&lt;br /&gt;
Use &#039;sudo apt autoremove&#039; to remove them.&lt;br /&gt;
The following additional packages will be installed:&lt;br /&gt;
  python3-distlib python3-filelock python3-pip-whl python3-platformdirs&lt;br /&gt;
  python3-setuptools-whl python3-wheel-whl&lt;br /&gt;
The following NEW packages will be installed:&lt;br /&gt;
  python3-distlib python3-filelock python3-pip-whl python3-platformdirs&lt;br /&gt;
  python3-setuptools-whl python3-virtualenv python3-wheel-whl&lt;br /&gt;
0 upgraded, 7 newly installed, 0 to remove and 59 not upgraded.&lt;br /&gt;
Need to get 3,245 kB of archives.&lt;br /&gt;
After this operation, 4,914 kB of additional disk space will be used.&lt;br /&gt;
Do you want to continue? [Y/n] y&lt;br /&gt;
Get:1 https://deb.debian.org/debian bookworm/main amd64 python3-distlib all 0.3.6-1 [257 kB]&lt;br /&gt;
Get:2 https://deb.debian.org/debian bookworm/main amd64 python3-filelock all 3.9.0-1 [9,460 B]&lt;br /&gt;
Get:3 https://deb.debian.org/debian bookworm/main amd64 python3-pip-whl all 23.0.1+dfsg-1 [1,717 kB]&lt;br /&gt;
Get:4 https://deb.debian.org/debian bookworm/main amd64 python3-platformdirs all 2.6.0-1 [16.3 kB]&lt;br /&gt;
Get:5 https://deb.debian.org/debian bookworm/main amd64 python3-setuptools-whl all 66.1.1-1+deb12u2 [1,112 kB]&lt;br /&gt;
Get:6 https://deb.debian.org/debian bookworm/main amd64 python3-wheel-whl all 0.38.4-2 [38.6 kB]&lt;br /&gt;
Get:7 https://deb.debian.org/debian bookworm/main amd64 python3-virtualenv all 20.17.1+ds-1 [93.9 kB]&lt;br /&gt;
Fetched 3,245 kB in 4s (776 kB/s)        &lt;br /&gt;
Selecting previously unselected package python3-distlib.&lt;br /&gt;
(Reading database ... 450690 files and directories currently installed.)&lt;br /&gt;
Preparing to unpack .../0-python3-distlib_0.3.6-1_all.deb ...&lt;br /&gt;
Unpacking python3-distlib (0.3.6-1) ...&lt;br /&gt;
Selecting previously unselected package python3-filelock.&lt;br /&gt;
Preparing to unpack .../1-python3-filelock_3.9.0-1_all.deb ...&lt;br /&gt;
Unpacking python3-filelock (3.9.0-1) ...&lt;br /&gt;
Selecting previously unselected package python3-pip-whl.&lt;br /&gt;
Preparing to unpack .../2-python3-pip-whl_23.0.1+dfsg-1_all.deb ...&lt;br /&gt;
Unpacking python3-pip-whl (23.0.1+dfsg-1) ...&lt;br /&gt;
Selecting previously unselected package python3-platformdirs.&lt;br /&gt;
Preparing to unpack .../3-python3-platformdirs_2.6.0-1_all.deb ...&lt;br /&gt;
Unpacking python3-platformdirs (2.6.0-1) ...&lt;br /&gt;
Selecting previously unselected package python3-setuptools-whl.&lt;br /&gt;
Preparing to unpack .../4-python3-setuptools-whl_66.1.1-1+deb12u2_all.deb ...&lt;br /&gt;
Unpacking python3-setuptools-whl (66.1.1-1+deb12u2) ...&lt;br /&gt;
Selecting previously unselected package python3-wheel-whl.&lt;br /&gt;
Preparing to unpack .../5-python3-wheel-whl_0.38.4-2_all.deb ...&lt;br /&gt;
Unpacking python3-wheel-whl (0.38.4-2) ...&lt;br /&gt;
Selecting previously unselected package python3-virtualenv.&lt;br /&gt;
Preparing to unpack .../6-python3-virtualenv_20.17.1+ds-1_all.deb ...&lt;br /&gt;
Unpacking python3-virtualenv (20.17.1+ds-1) ...&lt;br /&gt;
Setting up python3-setuptools-whl (66.1.1-1+deb12u2) ...&lt;br /&gt;
Setting up python3-filelock (3.9.0-1) ...&lt;br /&gt;
Setting up python3-pip-whl (23.0.1+dfsg-1) ...&lt;br /&gt;
Setting up python3-distlib (0.3.6-1) ...&lt;br /&gt;
Setting up python3-platformdirs (2.6.0-1) ...&lt;br /&gt;
Setting up python3-wheel-whl (0.38.4-2) ...&lt;br /&gt;
Setting up python3-virtualenv (20.17.1+ds-1) ...&lt;br /&gt;
Processing triggers for man-db (2.11.2-2) ...&lt;br /&gt;
Scanning processes...                                                                    &lt;br /&gt;
Scanning linux images...                                                                 &lt;br /&gt;
&lt;br /&gt;
No services need to be restarted.&lt;br /&gt;
&lt;br /&gt;
No containers need to be restarted.&lt;br /&gt;
&lt;br /&gt;
No user sessions are running outdated binaries.&lt;br /&gt;
&lt;br /&gt;
No VM guests are running outdated hypervisor (qemu) binaries on this host.&lt;br /&gt;
user@disp4360:~/sandbox/life-line$ python3 -m virtualenv --python=python3.7 /tmp/virtualenv&lt;br /&gt;
RuntimeError: failed to find interpreter for Builtin discover of python_spec=&#039;python3.7&#039;&lt;br /&gt;
user@disp4360:~/sandbox/life-line$&lt;br /&gt;
&lt;br /&gt;
user@disp4360:~/sandbox/life-line$ python3 -m virtualenv --python=python3 /tmp/virtualenvcreated virtual environment CPython3.11.2.final.0-64 in 248ms&lt;br /&gt;
  creator CPython3Posix(dest=/tmp/virtualenv, clear=False, no_vcs_ignore=False, global=False)&lt;br /&gt;
  seeder FromAppData(download=False, pip=bundle, setuptools=bundle, wheel=bundle, via=copy, app_data_dir=/home/user/.local/share/virtualenv)&lt;br /&gt;
	added seed packages: pip==23.0.1, setuptools==66.1.1, wheel==0.38.4&lt;br /&gt;
  activators BashActivator,CShellActivator,FishActivator,NushellActivator,PowerShellActivator,PythonActivator&lt;br /&gt;
user@disp4360:~/sandbox/life-line$&lt;br /&gt;
&lt;br /&gt;
user@disp4360:~/sandbox/life-line$ source /tmp/virtualenv/bin/activate&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ pip install --user --upgrade reuse&lt;br /&gt;
ERROR: Can not perform a &#039;--user&#039; install. User site-packages are not visible in this virtualenv.&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$&lt;br /&gt;
&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ pip install  --upgrade reuse&lt;br /&gt;
Collecting reuse&lt;br /&gt;
  Downloading reuse-6.2.0.tar.gz (1.6 MB)&lt;br /&gt;
	 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 1.6/1.6 MB 696.8 kB/s eta 0:00:00&lt;br /&gt;
  Installing build dependencies ... done&lt;br /&gt;
  Getting requirements to build wheel ... done&lt;br /&gt;
  Preparing metadata (pyproject.toml) ... done&lt;br /&gt;
Collecting Jinja2&amp;gt;=3.0.0&lt;br /&gt;
  Downloading jinja2-3.1.6-py3-none-any.whl (134 kB)&lt;br /&gt;
	 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 134.9/134.9 kB 576.8 kB/s eta 0:00:00&lt;br /&gt;
Collecting attrs&amp;gt;=23.2&lt;br /&gt;
  Downloading attrs-26.1.0-py3-none-any.whl (67 kB)&lt;br /&gt;
	 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 67.5/67.5 kB 674.1 kB/s eta 0:00:00&lt;br /&gt;
Collecting click&amp;gt;=8.1&lt;br /&gt;
  Downloading click-8.3.3-py3-none-any.whl (110 kB)&lt;br /&gt;
	 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 110.5/110.5 kB 1.1 MB/s eta 0:00:00&lt;br /&gt;
Collecting license-expression&amp;gt;=21.6.14&lt;br /&gt;
  Downloading license_expression-30.4.4-py3-none-any.whl (120 kB)&lt;br /&gt;
	 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 120.6/120.6 kB 1.3 MB/s eta 0:00:00&lt;br /&gt;
Collecting python-debian&amp;gt;=0.1.48&lt;br /&gt;
  Downloading python_debian-1.1.0-py3-none-any.whl (137 kB)&lt;br /&gt;
	 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 138.0/138.0 kB 819.7 kB/s eta 0:00:00&lt;br /&gt;
Collecting python-magic&amp;gt;=0.4.12&lt;br /&gt;
  Downloading python_magic-0.4.27-py2.py3-none-any.whl (13 kB)&lt;br /&gt;
Collecting tomlkit&amp;gt;=0.8&lt;br /&gt;
  Downloading tomlkit-0.14.0-py3-none-any.whl (39 kB)&lt;br /&gt;
Collecting MarkupSafe&amp;gt;=2.0&lt;br /&gt;
  Downloading markupsafe-3.0.3-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (22 kB)&lt;br /&gt;
Collecting boolean.py&amp;gt;=4.0&lt;br /&gt;
  Downloading boolean_py-5.0-py3-none-any.whl (26 kB)&lt;br /&gt;
Collecting charset-normalizer&lt;br /&gt;
  Downloading charset_normalizer-3.4.7-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (214 kB)&lt;br /&gt;
	 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 214.1/214.1 kB 1.3 MB/s eta 0:00:00&lt;br /&gt;
Building wheels for collected packages: reuse&lt;br /&gt;
  Building wheel for reuse (pyproject.toml) ... done&lt;br /&gt;
  Created wheel for reuse: filename=reuse-6.2.0-cp311-cp311-manylinux_2_36_x86_64.whl size=158934 sha256=db5cd3e5984de36238f3ead308c250b12c1cce318d17eb802313e29b25bd28cf&lt;br /&gt;
  Stored in directory: /home/user/.cache/pip/wheels/a0/8e/93/87a9da23115993a12577ff1fc8df222b28bd91e19b9987c529&lt;br /&gt;
Successfully built reuse&lt;br /&gt;
Installing collected packages: boolean.py, tomlkit, python-magic, MarkupSafe, license-expression, click, charset-normalizer, attrs, python-debian, Jinja2, reuse&lt;br /&gt;
Successfully installed Jinja2-3.1.6 MarkupSafe-3.0.3 attrs-26.1.0 boolean.py-5.0 charset-normalizer-3.4.7 click-8.3.3 license-expression-30.4.4 python-debian-1.1.0 python-magic-0.4.27 reuse-6.2.0 tomlkit-0.14.0&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$&lt;br /&gt;
&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ reuse --version&lt;br /&gt;
reuse, version 6.2.0&lt;br /&gt;
&lt;br /&gt;
This program is free software: you can redistribute it and/or modify it under&lt;br /&gt;
the terms of the GNU General Public License as published by the Free Software&lt;br /&gt;
Foundation, either version 3 of the License, or (at your option) any later&lt;br /&gt;
version.&lt;br /&gt;
&lt;br /&gt;
This program is distributed in the hope that it will be useful, but WITHOUT&lt;br /&gt;
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS&lt;br /&gt;
FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.&lt;br /&gt;
&lt;br /&gt;
You should have received a copy of the GNU General Public License along with&lt;br /&gt;
this program. If not, see &amp;lt;https://www.gnu.org/licenses/&amp;gt;.&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ &lt;br /&gt;
&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ reuse convert-dep5&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## no output; but it looked like it worked&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ reuse lint&lt;br /&gt;
# MISSING LICENSES&lt;br /&gt;
&lt;br /&gt;
&#039;AGPL-3.0&#039; found in:&lt;br /&gt;
* docs/buildDocs.sh&lt;br /&gt;
* docs/conf.py&lt;br /&gt;
&#039;CC-BY-SA-4.0&#039; found in:&lt;br /&gt;
* .github/workflows/docs_pages_workflow.yml&lt;br /&gt;
* .gitignore&lt;br /&gt;
* CHANGELOG&lt;br /&gt;
* KEYS&lt;br /&gt;
* README.md&lt;br /&gt;
* docs/.gitignore&lt;br /&gt;
* docs/Makefile&lt;br /&gt;
* docs/_static/custom.css&lt;br /&gt;
* docs/_templates/versions.html&lt;br /&gt;
* docs/attribution.rst&lt;br /&gt;
* docs/build/index.rst&lt;br /&gt;
* docs/build/intake/bom.ods&lt;br /&gt;
* docs/build/intake/bom.rst&lt;br /&gt;
* docs/build/intake/index.rst&lt;br /&gt;
* docs/build/intake/what.rst&lt;br /&gt;
* docs/build/settling-tank/bom.rst&lt;br /&gt;
* docs/build/settling-tank/index.rst&lt;br /&gt;
* docs/build/settling-tank/what.rst&lt;br /&gt;
* docs/changelog.rst&lt;br /&gt;
* docs/conf.py.orig&lt;br /&gt;
* docs/dev/index.rst&lt;br /&gt;
* docs/faq.rst&lt;br /&gt;
* docs/images/eco-libre_logo-2025.08.svg&lt;br /&gt;
* docs/images/eco-libre_text-logo-2025.08.svg&lt;br /&gt;
* docs/images/eco-libre_text-logo-2025.08_500px.png&lt;br /&gt;
* docs/images/life-line_2023.12.jpg&lt;br /&gt;
* docs/images/life-line_2025.10.jpg&lt;br /&gt;
* docs/images/life-line_intake_cleanout-drain.jpg&lt;br /&gt;
* docs/images/life-line_intake_drum.jpg&lt;br /&gt;
* docs/images/life-line_intake_expanded-metal.jpg&lt;br /&gt;
* docs/images/life-line_intake_fine-mesh.jpg&lt;br /&gt;
* docs/images/life-line_intake_outflow.jpg&lt;br /&gt;
* docs/images/life-line_intake_parts.svg&lt;br /&gt;
* docs/images/life-line_intake_turbulence-bar.jpg&lt;br /&gt;
* docs/images/life-line_intake_weir.jpg&lt;br /&gt;
* docs/images/life-line_praxis_boris-plotkin.2024-11.jpg&lt;br /&gt;
* docs/images/life-line_praxis_vegan-beasts_screen.2025-04.jpg&lt;br /&gt;
* docs/images/life-line_praxis_vegan-beasts_weir.2025-04.jpg&lt;br /&gt;
* docs/index.rst&lt;br /&gt;
* docs/introduction/index.rst&lt;br /&gt;
* docs/license.rst&lt;br /&gt;
* docs/locales/es/LC_MESSAGES/autodoc.mo&lt;br /&gt;
* docs/locales/es/LC_MESSAGES/autodoc.po&lt;br /&gt;
* docs/locales/es/LC_MESSAGES/index.mo&lt;br /&gt;
* docs/locales/es/LC_MESSAGES/index.po&lt;br /&gt;
* docs/make.bat&lt;br /&gt;
* docs/praxis/index.rst&lt;br /&gt;
* docs/support.rst&lt;br /&gt;
* docs/theory/index.rst&lt;br /&gt;
&#039;CERN-OHL-S-2.0&#039; found in:&lt;br /&gt;
* intake.FCStd&lt;br /&gt;
&lt;br /&gt;
# SUMMARY&lt;br /&gt;
&lt;br /&gt;
* Bad licenses: 0&lt;br /&gt;
* Deprecated licenses: 0&lt;br /&gt;
* Licenses without file extension: 0&lt;br /&gt;
* Missing licenses: AGPL-3.0, CC-BY-SA-4.0, CERN-OHL-S-2.0&lt;br /&gt;
* Unused licenses: 0&lt;br /&gt;
* Used licenses: AGPL-3.0, CC-BY-SA-4.0, CERN-OHL-S-2.0&lt;br /&gt;
* Read errors: 0&lt;br /&gt;
* Invalid SPDX License Expressions: 0&lt;br /&gt;
* Files with copyright information: 52 / 52&lt;br /&gt;
* Files with license information: 52 / 52&lt;br /&gt;
&lt;br /&gt;
Unfortunately, your project is not compliant with version 3.3 of the REUSE Specification :-(&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# RECOMMENDATIONS&lt;br /&gt;
&lt;br /&gt;
* Fix missing licenses: For at least one of the license identifiers provided by&lt;br /&gt;
  the &#039;SPDX-License-Identifier&#039; tags, there is no corresponding license text&lt;br /&gt;
  file in the &#039;LICENSES&#039; directory. For SPDX license identifiers, you can simply&lt;br /&gt;
  run &#039;reuse download --all&#039; to get any missing ones. For custom licenses&lt;br /&gt;
  (starting with &#039;LicenseRef-&#039;), you need to add these files yourself.&lt;br /&gt;
&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## ok, so it&#039;s just unhappy the licenses are missing; let&#039;s add them with the tool&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ reuse download&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ &lt;br /&gt;
&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ reuse download CC-BY-SA-4.0&lt;br /&gt;
Successfully downloaded LICENSES/CC-BY-SA-4.0.txt.&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$&lt;br /&gt;
&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ ls -lah LICENSES&lt;br /&gt;
total 28K&lt;br /&gt;
drwxr-xr-x 2 user user 4.0K Apr 28 16:43 .&lt;br /&gt;
drwxr-xr-x 7 user user 4.0K Apr 28 16:43 ..&lt;br /&gt;
-rw-r--r-- 1 user user  18K Apr 28 16:43 CC-BY-SA-4.0.txt&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ &lt;br /&gt;
&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ reuse download CERN-OHL-S-2.0&lt;br /&gt;
Successfully downloaded LICENSES/CERN-OHL-S-2.0.txt.&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ &lt;br /&gt;
&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ reuse download AGPL-3.0&lt;br /&gt;
Successfully downloaded LICENSES/AGPL-3.0.txt.&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ &lt;br /&gt;
&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ ls -lah LICENSES&lt;br /&gt;
total 80K&lt;br /&gt;
drwxr-xr-x 2 user user 4.0K Apr 28 16:44 .&lt;br /&gt;
drwxr-xr-x 7 user user 4.0K Apr 28 16:43 ..&lt;br /&gt;
-rw-r--r-- 1 user user  34K Apr 28 16:44 AGPL-3.0.txt&lt;br /&gt;
-rw-r--r-- 1 user user  18K Apr 28 16:43 CC-BY-SA-4.0.txt&lt;br /&gt;
-rw-r--r-- 1 user user  14K Apr 28 16:43 CERN-OHL-S-2.0.txt&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## wut. they said we can&#039;t use AGPL-3.0?&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ reuse lint&lt;br /&gt;
# DEPRECATED LICENSES&lt;br /&gt;
&lt;br /&gt;
The following licenses are deprecated by SPDX:&lt;br /&gt;
* AGPL-3.0&lt;br /&gt;
&lt;br /&gt;
# SUMMARY&lt;br /&gt;
&lt;br /&gt;
* Bad licenses: 0&lt;br /&gt;
* Deprecated licenses: AGPL-3.0&lt;br /&gt;
* Licenses without file extension: 0&lt;br /&gt;
* Missing licenses: 0&lt;br /&gt;
* Unused licenses: 0&lt;br /&gt;
* Used licenses: AGPL-3.0, CC-BY-SA-4.0, CERN-OHL-S-2.0&lt;br /&gt;
* Read errors: 0&lt;br /&gt;
* Invalid SPDX License Expressions: 0&lt;br /&gt;
* Files with copyright information: 52 / 52&lt;br /&gt;
* Files with license information: 52 / 52&lt;br /&gt;
&lt;br /&gt;
Unfortunately, your project is not compliant with version 3.3 of the REUSE Specification :-(&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# RECOMMENDATIONS&lt;br /&gt;
&lt;br /&gt;
* Fix deprecated licenses: At least one of the licenses in the LICENSES&lt;br /&gt;
  directory and/or provided by an &#039;SPDX-License-Identifier&#039; tag or in&lt;br /&gt;
  &#039;.reuse/dep5&#039; has been deprecated by SPDX. The current list and their&lt;br /&gt;
  respective recommended  new identifiers can be found here:&lt;br /&gt;
  &amp;lt;https://spdx.org/licenses/#deprecated&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## ok, apparently they want one of these https://spdx.org/licenses/&lt;br /&gt;
###  AGPL-3.0-only&lt;br /&gt;
###  AGPL-3.0-or-later&lt;br /&gt;
## ugh, they deleted our dep5 file; appraently it puts everything in a REUSE.toml file (there&#039;s no .license files everywhere, which I do like)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ ls -lah .reuse/&lt;br /&gt;
total 8.0K&lt;br /&gt;
drwxr-xr-x 2 user user 4.0K Apr 28 16:34 .&lt;br /&gt;
drwxr-xr-x 7 user user 4.0K Apr 28 16:43 ..&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ &lt;br /&gt;
&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ ls -lah&lt;br /&gt;
total 376K&lt;br /&gt;
drwxr-xr-x  7 user user 4.0K Apr 28 16:43 .&lt;br /&gt;
drwxr-xr-x  3 user user 4.0K Apr 28 16:23 ..&lt;br /&gt;
-rw-r--r--  1 user user  531 Apr 28 16:23 CHANGELOG&lt;br /&gt;
drwxr-xr-x 11 user user 4.0K Apr 28 16:23 docs&lt;br /&gt;
drwxr-xr-x  8 user user 4.0K Apr 28 16:28 .git&lt;br /&gt;
drwxr-xr-x  3 user user 4.0K Apr 28 16:23 .github&lt;br /&gt;
-rw-r--r--  1 user user   44 Apr 28 16:23 .gitignore&lt;br /&gt;
-rw-r--r--  1 user user 221K Apr 28 16:23 intake.FCStd&lt;br /&gt;
-rw-r--r--  1 user user  71K Apr 28 16:23 KEYS&lt;br /&gt;
-rw-r--r--  1 user user  35K Apr 28 16:23 LICENSE&lt;br /&gt;
drwxr-xr-x  2 user user 4.0K Apr 28 16:44 LICENSES&lt;br /&gt;
-rw-r--r--  1 user user 1.3K Apr 28 16:23 README.md&lt;br /&gt;
drwxr-xr-x  2 user user 4.0K Apr 28 16:34 .reuse&lt;br /&gt;
-rw-r--r--  1 user user 1.7K Apr 28 16:34 REUSE.toml&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## oh, this isn&#039;t so bad. I was afriad it would literally list every single file, but instead it more-or-less just adapted what I had for the dep5 format&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ cat REUSE.toml &lt;br /&gt;
version = 1&lt;br /&gt;
SPDX-PackageName = &amp;quot;Eco-Libre Life-Line&amp;quot;&lt;br /&gt;
SPDX-PackageSupplier = &amp;quot;https://eco-libre.org/contact&amp;quot;&lt;br /&gt;
SPDX-PackageDownloadLocation = &amp;quot;https://github.com/Eco-Libre/life-line&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[annotations]]&lt;br /&gt;
path = &amp;quot;**&amp;quot;&lt;br /&gt;
precedence = &amp;quot;aggregate&amp;quot;&lt;br /&gt;
SPDX-FileCopyrightText = [&amp;quot;&amp;quot;, &amp;quot;2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&amp;quot;, &amp;quot;2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&amp;quot;]&lt;br /&gt;
SPDX-License-Identifier = &amp;quot;CC-BY-SA-4.0&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[annotations]]&lt;br /&gt;
path = [&amp;quot;**.FCStd&amp;quot;, &amp;quot;**.scad&amp;quot;, &amp;quot;**.fzz&amp;quot;, &amp;quot;**.blend&amp;quot;, &amp;quot;**.kicad_pcb&amp;quot;, &amp;quot;**.sh3d&amp;quot;, &amp;quot;**.vue&amp;quot;, &amp;quot;**.dxf&amp;quot;, &amp;quot;**.dwg&amp;quot;, &amp;quot;**.bim&amp;quot;, &amp;quot;**.skp&amp;quot;, &amp;quot;**.skb&amp;quot;, &amp;quot;**.max&amp;quot;, &amp;quot;**.3ds&amp;quot;, &amp;quot;**.gto&amp;quot;, &amp;quot;**.pod&amp;quot;, &amp;quot;**.brd&amp;quot;, &amp;quot;**.sch&amp;quot;, &amp;quot;**.3dm&amp;quot;, &amp;quot;**.dwb&amp;quot;, &amp;quot;**.slddrw&amp;quot;, &amp;quot;**.sldasm&amp;quot;]&lt;br /&gt;
precedence = &amp;quot;aggregate&amp;quot;&lt;br /&gt;
SPDX-FileCopyrightText = [&amp;quot;&amp;quot;, &amp;quot;2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&amp;quot;, &amp;quot;2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&amp;quot;]&lt;br /&gt;
SPDX-License-Identifier = &amp;quot;CERN-OHL-S-2.0&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[annotations]]&lt;br /&gt;
path = [&amp;quot;**.c&amp;quot;, &amp;quot;**.cpp&amp;quot;, &amp;quot;**.h&amp;quot;, &amp;quot;**.hpp&amp;quot;, &amp;quot;**.cc&amp;quot;, &amp;quot;**.ino&amp;quot;, &amp;quot;**.pde&amp;quot;, &amp;quot;**.make&amp;quot;, &amp;quot;**.automake&amp;quot;, &amp;quot;**.cmake&amp;quot;, &amp;quot;**.java&amp;quot;, &amp;quot;**.javacc&amp;quot;, &amp;quot;**.rust&amp;quot;, &amp;quot;**.d&amp;quot;, &amp;quot;**.j&amp;quot;, &amp;quot;**.r&amp;quot;, &amp;quot;**.sh&amp;quot;, &amp;quot;**.bash&amp;quot;, &amp;quot;**.zsh&amp;quot;, &amp;quot;**.awk&amp;quot;, &amp;quot;**.tcl&amp;quot;, &amp;quot;**.py&amp;quot;, &amp;quot;**.python&amp;quot;, &amp;quot;**.python2&amp;quot;, &amp;quot;**.python3&amp;quot;, &amp;quot;**.FCMacro&amp;quot;, &amp;quot;**.pl&amp;quot;, &amp;quot;**.perl&amp;quot;, &amp;quot;**.kivy&amp;quot;, &amp;quot;**.qix&amp;quot;, &amp;quot;**.dtd&amp;quot;, &amp;quot;**.shp&amp;quot;, &amp;quot;**.shz&amp;quot;, &amp;quot;**.dbf&amp;quot;, &amp;quot;**.shx&amp;quot;, &amp;quot;**.prj&amp;quot;, &amp;quot;**.kml&amp;quot;, &amp;quot;**.php&amp;quot;, &amp;quot;**.js&amp;quot;, &amp;quot;**.javascript&amp;quot;, &amp;quot;**.typescript&amp;quot;, &amp;quot;**.ruby&amp;quot;, &amp;quot;**.eruby&amp;quot;, &amp;quot;**.cuda&amp;quot;, &amp;quot;**.erlang&amp;quot;, &amp;quot;**.lisp&amp;quot;, &amp;quot;**.lua&amp;quot;, &amp;quot;**.haskell&amp;quot;, &amp;quot;**.go&amp;quot;, &amp;quot;**.autohotkey&amp;quot;, &amp;quot;**.basic&amp;quot;, &amp;quot;**.swift&amp;quot;, &amp;quot;**.vb&amp;quot;, &amp;quot;**.asp&amp;quot;]&lt;br /&gt;
precedence = &amp;quot;aggregate&amp;quot;&lt;br /&gt;
SPDX-FileCopyrightText = [&amp;quot;&amp;quot;, &amp;quot;2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&amp;quot;, &amp;quot;2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&amp;quot;]&lt;br /&gt;
SPDX-License-Identifier = &amp;quot;AGPL-3.0&amp;quot;&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## I edited the file, but the lint still isn&#039;t happy. I guess I have to update the LICENSES dir from AGPL-3.0 to AGPL-3.0-only :/&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ vim REUSE.toml &lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ &lt;br /&gt;
&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ reuse lint&lt;br /&gt;
# DEPRECATED LICENSES&lt;br /&gt;
&lt;br /&gt;
The following licenses are deprecated by SPDX:&lt;br /&gt;
* AGPL-3.0&lt;br /&gt;
&lt;br /&gt;
# MISSING LICENSES&lt;br /&gt;
&lt;br /&gt;
&#039;AGPL-3.0-only&#039; found in:&lt;br /&gt;
* docs/buildDocs.sh&lt;br /&gt;
* docs/conf.py&lt;br /&gt;
&lt;br /&gt;
# UNUSED LICENSES&lt;br /&gt;
&lt;br /&gt;
The following licenses are not used:&lt;br /&gt;
* AGPL-3.0&lt;br /&gt;
&lt;br /&gt;
# SUMMARY&lt;br /&gt;
&lt;br /&gt;
* Bad licenses: 0&lt;br /&gt;
* Deprecated licenses: AGPL-3.0&lt;br /&gt;
* Licenses without file extension: 0&lt;br /&gt;
* Missing licenses: AGPL-3.0-only&lt;br /&gt;
* Unused licenses: AGPL-3.0&lt;br /&gt;
* Used licenses: AGPL-3.0-only, CC-BY-SA-4.0, CERN-OHL-S-2.0&lt;br /&gt;
* Read errors: 0&lt;br /&gt;
* Invalid SPDX License Expressions: 0&lt;br /&gt;
* Files with copyright information: 52 / 52&lt;br /&gt;
* Files with license information: 52 / 52&lt;br /&gt;
&lt;br /&gt;
Unfortunately, your project is not compliant with version 3.3 of the REUSE Specification :-(&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# RECOMMENDATIONS&lt;br /&gt;
&lt;br /&gt;
* Fix deprecated licenses: At least one of the licenses in the LICENSES&lt;br /&gt;
  directory and/or provided by an &#039;SPDX-License-Identifier&#039; tag or in&lt;br /&gt;
  &#039;.reuse/dep5&#039; has been deprecated by SPDX. The current list and their&lt;br /&gt;
  respective recommended  new identifiers can be found here:&lt;br /&gt;
  &amp;lt;https://spdx.org/licenses/#deprecated&amp;gt;&lt;br /&gt;
* Fix missing licenses: For at least one of the license identifiers provided by&lt;br /&gt;
  the &#039;SPDX-License-Identifier&#039; tags, there is no corresponding license text&lt;br /&gt;
  file in the &#039;LICENSES&#039; directory. For SPDX license identifiers, you can simply&lt;br /&gt;
  run &#039;reuse download --all&#039; to get any missing ones. For custom licenses&lt;br /&gt;
  (starting with &#039;LicenseRef-&#039;), you need to add these files yourself.&lt;br /&gt;
* Fix unused licenses: At least one of the license text files in &#039;LICENSES&#039; is&lt;br /&gt;
  not referenced by any file, e.g. by an &#039;SPDX-License-Identifier&#039; tag. Please&lt;br /&gt;
  make sure that you either tag the accordingly licensed files properly, or&lt;br /&gt;
  delete the unused license text if you are sure that no file or code snippet is&lt;br /&gt;
  licensed as such.&lt;br /&gt;
&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## ok, now it&#039;s happy&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ ls -lah LICENSES&lt;br /&gt;
total 80K&lt;br /&gt;
drwxr-xr-x 2 user user 4.0K Apr 28 16:44 .&lt;br /&gt;
drwxr-xr-x 7 user user 4.0K Apr 28 16:50 ..&lt;br /&gt;
-rw-r--r-- 1 user user  34K Apr 28 16:44 AGPL-3.0.txt&lt;br /&gt;
-rw-r--r-- 1 user user  18K Apr 28 16:43 CC-BY-SA-4.0.txt&lt;br /&gt;
-rw-r--r-- 1 user user  14K Apr 28 16:43 CERN-OHL-S-2.0.txt&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ &lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ rm LICENSES/AGPL-3.0.txt &lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ &lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ reuse download AGPL-3.0-only&lt;br /&gt;
Successfully downloaded LICENSES/AGPL-3.0-only.txt.&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ &lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ reuse lint&lt;br /&gt;
# SUMMARY&lt;br /&gt;
&lt;br /&gt;
* Bad licenses: 0&lt;br /&gt;
* Deprecated licenses: 0&lt;br /&gt;
* Licenses without file extension: 0&lt;br /&gt;
* Missing licenses: 0&lt;br /&gt;
* Unused licenses: 0&lt;br /&gt;
* Used licenses: AGPL-3.0-only, CC-BY-SA-4.0, CERN-OHL-S-2.0&lt;br /&gt;
* Read errors: 0&lt;br /&gt;
* Invalid SPDX License Expressions: 0&lt;br /&gt;
* Files with copyright information: 52 / 52&lt;br /&gt;
* Files with license information: 52 / 52&lt;br /&gt;
&lt;br /&gt;
Congratulations! Your project is compliant with version 3.3 of the REUSE Specification :-)&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## anyway, here&#039;s our final file&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ cat REUSE.toml &lt;br /&gt;
version = 1&lt;br /&gt;
SPDX-PackageName = &amp;quot;Eco-Libre Life-Line&amp;quot;&lt;br /&gt;
SPDX-PackageSupplier = &amp;quot;https://eco-libre.org/contact&amp;quot;&lt;br /&gt;
SPDX-PackageDownloadLocation = &amp;quot;https://github.com/Eco-Libre/life-line&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[annotations]]&lt;br /&gt;
path = &amp;quot;**&amp;quot;&lt;br /&gt;
precedence = &amp;quot;aggregate&amp;quot;&lt;br /&gt;
SPDX-FileCopyrightText = [&amp;quot;&amp;quot;, &amp;quot;2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&amp;quot;, &amp;quot;2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&amp;quot;]&lt;br /&gt;
SPDX-License-Identifier = &amp;quot;CC-BY-SA-4.0&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[annotations]]&lt;br /&gt;
path = [&amp;quot;**.FCStd&amp;quot;, &amp;quot;**.scad&amp;quot;, &amp;quot;**.fzz&amp;quot;, &amp;quot;**.blend&amp;quot;, &amp;quot;**.kicad_pcb&amp;quot;, &amp;quot;**.sh3d&amp;quot;, &amp;quot;**.vue&amp;quot;, &amp;quot;**.dxf&amp;quot;, &amp;quot;**.dwg&amp;quot;, &amp;quot;**.bim&amp;quot;, &amp;quot;**.skp&amp;quot;, &amp;quot;**.skb&amp;quot;, &amp;quot;**.max&amp;quot;, &amp;quot;**.3ds&amp;quot;, &amp;quot;**.gto&amp;quot;, &amp;quot;**.pod&amp;quot;, &amp;quot;**.brd&amp;quot;, &amp;quot;**.sch&amp;quot;, &amp;quot;**.3dm&amp;quot;, &amp;quot;**.dwb&amp;quot;, &amp;quot;**.slddrw&amp;quot;, &amp;quot;**.sldasm&amp;quot;]&lt;br /&gt;
precedence = &amp;quot;aggregate&amp;quot;&lt;br /&gt;
SPDX-FileCopyrightText = [&amp;quot;&amp;quot;, &amp;quot;2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&amp;quot;, &amp;quot;2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&amp;quot;]&lt;br /&gt;
SPDX-License-Identifier = &amp;quot;CERN-OHL-S-2.0&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[annotations]]&lt;br /&gt;
path = [&amp;quot;**.c&amp;quot;, &amp;quot;**.cpp&amp;quot;, &amp;quot;**.h&amp;quot;, &amp;quot;**.hpp&amp;quot;, &amp;quot;**.cc&amp;quot;, &amp;quot;**.ino&amp;quot;, &amp;quot;**.pde&amp;quot;, &amp;quot;**.make&amp;quot;, &amp;quot;**.automake&amp;quot;, &amp;quot;**.cmake&amp;quot;, &amp;quot;**.java&amp;quot;, &amp;quot;**.javacc&amp;quot;, &amp;quot;**.rust&amp;quot;, &amp;quot;**.d&amp;quot;, &amp;quot;**.j&amp;quot;, &amp;quot;**.r&amp;quot;, &amp;quot;**.sh&amp;quot;, &amp;quot;**.bash&amp;quot;, &amp;quot;**.zsh&amp;quot;, &amp;quot;**.awk&amp;quot;, &amp;quot;**.tcl&amp;quot;, &amp;quot;**.py&amp;quot;, &amp;quot;**.python&amp;quot;, &amp;quot;**.python2&amp;quot;, &amp;quot;**.python3&amp;quot;, &amp;quot;**.FCMacro&amp;quot;, &amp;quot;**.pl&amp;quot;, &amp;quot;**.perl&amp;quot;, &amp;quot;**.kivy&amp;quot;, &amp;quot;**.qix&amp;quot;, &amp;quot;**.dtd&amp;quot;, &amp;quot;**.shp&amp;quot;, &amp;quot;**.shz&amp;quot;, &amp;quot;**.dbf&amp;quot;, &amp;quot;**.shx&amp;quot;, &amp;quot;**.prj&amp;quot;, &amp;quot;**.kml&amp;quot;, &amp;quot;**.php&amp;quot;, &amp;quot;**.js&amp;quot;, &amp;quot;**.javascript&amp;quot;, &amp;quot;**.typescript&amp;quot;, &amp;quot;**.ruby&amp;quot;, &amp;quot;**.eruby&amp;quot;, &amp;quot;**.cuda&amp;quot;, &amp;quot;**.erlang&amp;quot;, &amp;quot;**.lisp&amp;quot;, &amp;quot;**.lua&amp;quot;, &amp;quot;**.haskell&amp;quot;, &amp;quot;**.go&amp;quot;, &amp;quot;**.autohotkey&amp;quot;, &amp;quot;**.basic&amp;quot;, &amp;quot;**.swift&amp;quot;, &amp;quot;**.vb&amp;quot;, &amp;quot;**.asp&amp;quot;]&lt;br /&gt;
precedence = &amp;quot;aggregate&amp;quot;&lt;br /&gt;
SPDX-FileCopyrightText = [&amp;quot;&amp;quot;, &amp;quot;2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&amp;quot;, &amp;quot;2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&amp;quot;]&lt;br /&gt;
SPDX-License-Identifier = &amp;quot;AGPL-3.0-only&amp;quot;&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## looks like that only created the toml file. None of the files are actually annoated; we do that with `reuse annotate`&lt;br /&gt;
### apparently that command only works for individual files, so I did some find magic&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ find . -type f -exec reuse annotate --copyright --license &#039;{}&#039; \;&lt;br /&gt;
Successfully changed header of docs/license.rst&lt;br /&gt;
Successfully changed header of docs/build/intake/bom.rst&lt;br /&gt;
Successfully changed header of docs/build/intake/index.rst&lt;br /&gt;
Successfully changed header of docs/build/intake/bom.ods.license&lt;br /&gt;
Successfully changed header of docs/build/intake/what.rst&lt;br /&gt;
Successfully changed header of docs/build/index.rst&lt;br /&gt;
Successfully changed header of docs/build/settling-tank/bom.rst&lt;br /&gt;
Successfully changed header of docs/build/settling-tank/index.rst&lt;br /&gt;
Successfully changed header of docs/build/settling-tank/what.rst&lt;br /&gt;
Successfully changed header of docs/support.rst&lt;br /&gt;
Successfully changed header of docs/theory/index.rst&lt;br /&gt;
Successfully changed header of docs/make.bat&lt;br /&gt;
Successfully changed header of docs/buildDocs.sh&lt;br /&gt;
Successfully changed header of docs/images/life-line_intake_cleanout-drain.jpg.license&lt;br /&gt;
Successfully changed header of docs/images/life-line_intake_outflow.jpg.license&lt;br /&gt;
Successfully changed header of docs/images/life-line_2025.10.jpg.license&lt;br /&gt;
Successfully changed header of docs/images/life-line_2023.12.jpg.license&lt;br /&gt;
Successfully changed header of docs/images/life-line_intake_drum.jpg.license&lt;br /&gt;
Successfully changed header of docs/images/life-line_praxis_vegan-beasts_weir.2025-04.jpg.license&lt;br /&gt;
Successfully changed header of docs/images/life-line_praxis_vegan-beasts_screen.2025-04.jpg.license&lt;br /&gt;
Successfully changed header of docs/images/life-line_intake_turbulence-bar.jpg.license&lt;br /&gt;
Successfully changed header of docs/images/life-line_praxis_boris-plotkin.2024-11.jpg.license&lt;br /&gt;
Successfully changed header of docs/images/life-line_intake_fine-mesh.jpg.license&lt;br /&gt;
Successfully changed header of docs/images/eco-libre_logo-2025.08.svg.license&lt;br /&gt;
Successfully changed header of docs/images/eco-libre_text-logo-2025.08.svg.license&lt;br /&gt;
Successfully changed header of docs/images/life-line_intake_weir.jpg.license&lt;br /&gt;
Successfully changed header of docs/images/life-line_intake_parts.svg.license&lt;br /&gt;
Successfully changed header of docs/images/eco-libre_text-logo-2025.08_500px.png.license&lt;br /&gt;
Successfully changed header of docs/images/life-line_intake_expanded-metal.jpg.license&lt;br /&gt;
Successfully changed header of docs/praxis/index.rst&lt;br /&gt;
Successfully changed header of docs/introduction/index.rst&lt;br /&gt;
Successfully changed header of docs/_static/custom.css&lt;br /&gt;
Successfully changed header of docs/index.rst&lt;br /&gt;
Successfully changed header of docs/Makefile&lt;br /&gt;
Usage: reuse annotate [OPTIONS] PATH&lt;br /&gt;
Try &#039;reuse annotate --help&#039; for help.&lt;br /&gt;
&lt;br /&gt;
Error: The following files do not have a recognised file extension. Please use &#039;--style&#039;, &#039;--force-dot-license&#039;, &#039;--fallback-dot-license&#039;, or &#039;--skip-unrecognised&#039;:&lt;br /&gt;
&lt;br /&gt;
docs/conf.py.orig&lt;br /&gt;
Successfully changed header of docs/conf.py&lt;br /&gt;
Successfully changed header of docs/faq.rst&lt;br /&gt;
Successfully changed header of docs/.gitignore&lt;br /&gt;
Successfully changed header of docs/attribution.rst&lt;br /&gt;
Successfully changed header of docs/changelog.rst&lt;br /&gt;
Successfully changed header of docs/_templates/versions.html&lt;br /&gt;
Usage: reuse annotate [OPTIONS] PATH&lt;br /&gt;
Try &#039;reuse annotate --help&#039; for help.&lt;br /&gt;
&lt;br /&gt;
Error: The following files do not have a recognised file extension. Please use &#039;--style&#039;, &#039;--force-dot-license&#039;, &#039;--fallback-dot-license&#039;, or &#039;--skip-unrecognised&#039;:&lt;br /&gt;
&lt;br /&gt;
docs/locales/es/LC_MESSAGES/autodoc.mo&lt;br /&gt;
Successfully changed header of docs/locales/es/LC_MESSAGES/index.po&lt;br /&gt;
Successfully changed header of docs/locales/es/LC_MESSAGES/autodoc.po&lt;br /&gt;
Usage: reuse annotate [OPTIONS] PATH&lt;br /&gt;
Try &#039;reuse annotate --help&#039; for help.&lt;br /&gt;
&lt;br /&gt;
Error: The following files do not have a recognised file extension. Please use &#039;--style&#039;, &#039;--force-dot-license&#039;, &#039;--fallback-dot-license&#039;, or &#039;--skip-unrecognised&#039;:&lt;br /&gt;
&lt;br /&gt;
docs/locales/es/LC_MESSAGES/index.mo&lt;br /&gt;
Successfully changed header of docs/dev/index.rst&lt;br /&gt;
Usage: reuse annotate [OPTIONS] PATH&lt;br /&gt;
Try &#039;reuse annotate --help&#039; for help.&lt;br /&gt;
&lt;br /&gt;
Error: The following files do not have a recognised file extension. Please use &#039;--style&#039;, &#039;--force-dot-license&#039;, &#039;--fallback-dot-license&#039;, or &#039;--skip-unrecognised&#039;:&lt;br /&gt;
&lt;br /&gt;
CHANGELOG&lt;br /&gt;
Usage: reuse annotate [OPTIONS] PATH&lt;br /&gt;
Try &#039;reuse annotate --help&#039; for help.&lt;br /&gt;
&lt;br /&gt;
Error: The following files do not have a recognised file extension. Please use &#039;--style&#039;, &#039;--force-dot-license&#039;, &#039;--fallback-dot-license&#039;, or &#039;--skip-unrecognised&#039;:&lt;br /&gt;
&lt;br /&gt;
LICENSES/CC-BY-SA-4.0.txt&lt;br /&gt;
Usage: reuse annotate [OPTIONS] PATH&lt;br /&gt;
Try &#039;reuse annotate --help&#039; for help.&lt;br /&gt;
&lt;br /&gt;
Error: The following files do not have a recognised file extension. Please use &#039;--style&#039;, &#039;--force-dot-license&#039;, &#039;--fallback-dot-license&#039;, or &#039;--skip-unrecognised&#039;:&lt;br /&gt;
&lt;br /&gt;
LICENSES/CERN-OHL-S-2.0.txt&lt;br /&gt;
Usage: reuse annotate [OPTIONS] PATH&lt;br /&gt;
Try &#039;reuse annotate --help&#039; for help.&lt;br /&gt;
&lt;br /&gt;
Error: The following files do not have a recognised file extension. Please use &#039;--style&#039;, &#039;--force-dot-license&#039;, &#039;--fallback-dot-license&#039;, or &#039;--skip-unrecognised&#039;:&lt;br /&gt;
&lt;br /&gt;
LICENSES/AGPL-3.0-only.txt&lt;br /&gt;
Usage: reuse annotate [OPTIONS] PATH&lt;br /&gt;
Try &#039;reuse annotate --help&#039; for help.&lt;br /&gt;
&lt;br /&gt;
Error: Invalid value for &#039;PATH&#039;: Path &#039;./.git/objects/pack/pack-38957d03ba60a2a9101b19234fac447289823e43.idx&#039; is not writable.&lt;br /&gt;
Usage: reuse annotate [OPTIONS] PATH&lt;br /&gt;
Try &#039;reuse annotate --help&#039; for help.&lt;br /&gt;
&lt;br /&gt;
Error: Invalid value for &#039;PATH&#039;: Path &#039;./.git/objects/pack/pack-38957d03ba60a2a9101b19234fac447289823e43.pack&#039; is not writable.&lt;br /&gt;
Usage: reuse annotate [OPTIONS] PATH&lt;br /&gt;
Try &#039;reuse annotate --help&#039; for help.&lt;br /&gt;
&lt;br /&gt;
Error: The following files do not have a recognised file extension. Please use &#039;--style&#039;, &#039;--force-dot-license&#039;, &#039;--fallback-dot-license&#039;, or &#039;--skip-unrecognised&#039;:&lt;br /&gt;
&lt;br /&gt;
.git/logs/HEAD&lt;br /&gt;
Usage: reuse annotate [OPTIONS] PATH&lt;br /&gt;
Try &#039;reuse annotate --help&#039; for help.&lt;br /&gt;
&lt;br /&gt;
Error: The following files do not have a recognised file extension. Please use &#039;--style&#039;, &#039;--force-dot-license&#039;, &#039;--fallback-dot-license&#039;, or &#039;--skip-unrecognised&#039;:&lt;br /&gt;
&lt;br /&gt;
.git/logs/refs/remotes/origin/HEAD&lt;br /&gt;
Usage: reuse annotate [OPTIONS] PATH&lt;br /&gt;
Try &#039;reuse annotate --help&#039; for help.&lt;br /&gt;
&lt;br /&gt;
Error: The following files do not have a recognised file extension. Please use &#039;--style&#039;, &#039;--force-dot-license&#039;, &#039;--fallback-dot-license&#039;, or &#039;--skip-unrecognised&#039;:&lt;br /&gt;
&lt;br /&gt;
.git/logs/refs/heads/main&lt;br /&gt;
Usage: reuse annotate [OPTIONS] PATH&lt;br /&gt;
Try &#039;reuse annotate --help&#039; for help.&lt;br /&gt;
&lt;br /&gt;
Error: The following files do not have a recognised file extension. Please use &#039;--style&#039;, &#039;--force-dot-license&#039;, &#039;--fallback-dot-license&#039;, or &#039;--skip-unrecognised&#039;:&lt;br /&gt;
&lt;br /&gt;
.git/hooks/pre-push.sample&lt;br /&gt;
Usage: reuse annotate [OPTIONS] PATH&lt;br /&gt;
Try &#039;reuse annotate --help&#039; for help.&lt;br /&gt;
&lt;br /&gt;
Error: The following files do not have a recognised file extension. Please use &#039;--style&#039;, &#039;--force-dot-license&#039;, &#039;--fallback-dot-license&#039;, or &#039;--skip-unrecognised&#039;:&lt;br /&gt;
&lt;br /&gt;
.git/hooks/post-update.sample&lt;br /&gt;
Usage: reuse annotate [OPTIONS] PATH&lt;br /&gt;
Try &#039;reuse annotate --help&#039; for help.&lt;br /&gt;
&lt;br /&gt;
Error: The following files do not have a recognised file extension. Please use &#039;--style&#039;, &#039;--force-dot-license&#039;, &#039;--fallback-dot-license&#039;, or &#039;--skip-unrecognised&#039;:&lt;br /&gt;
&lt;br /&gt;
.git/hooks/pre-rebase.sample&lt;br /&gt;
Usage: reuse annotate [OPTIONS] PATH&lt;br /&gt;
Try &#039;reuse annotate --help&#039; for help.&lt;br /&gt;
&lt;br /&gt;
Error: The following files do not have a recognised file extension. Please use &#039;--style&#039;, &#039;--force-dot-license&#039;, &#039;--fallback-dot-license&#039;, or &#039;--skip-unrecognised&#039;:&lt;br /&gt;
&lt;br /&gt;
.git/hooks/update.sample&lt;br /&gt;
Usage: reuse annotate [OPTIONS] PATH&lt;br /&gt;
Try &#039;reuse annotate --help&#039; for help.&lt;br /&gt;
&lt;br /&gt;
Error: The following files do not have a recognised file extension. Please use &#039;--style&#039;, &#039;--force-dot-license&#039;, &#039;--fallback-dot-license&#039;, or &#039;--skip-unrecognised&#039;:&lt;br /&gt;
&lt;br /&gt;
.git/hooks/push-to-checkout.sample&lt;br /&gt;
Usage: reuse annotate [OPTIONS] PATH&lt;br /&gt;
Try &#039;reuse annotate --help&#039; for help.&lt;br /&gt;
&lt;br /&gt;
Error: The following files do not have a recognised file extension. Please use &#039;--style&#039;, &#039;--force-dot-license&#039;, &#039;--fallback-dot-license&#039;, or &#039;--skip-unrecognised&#039;:&lt;br /&gt;
&lt;br /&gt;
.git/hooks/pre-receive.sample&lt;br /&gt;
Usage: reuse annotate [OPTIONS] PATH&lt;br /&gt;
Try &#039;reuse annotate --help&#039; for help.&lt;br /&gt;
&lt;br /&gt;
Error: The following files do not have a recognised file extension. Please use &#039;--style&#039;, &#039;--force-dot-license&#039;, &#039;--fallback-dot-license&#039;, or &#039;--skip-unrecognised&#039;:&lt;br /&gt;
&lt;br /&gt;
.git/hooks/prepare-commit-msg.sample&lt;br /&gt;
Usage: reuse annotate [OPTIONS] PATH&lt;br /&gt;
Try &#039;reuse annotate --help&#039; for help.&lt;br /&gt;
&lt;br /&gt;
Error: The following files do not have a recognised file extension. Please use &#039;--style&#039;, &#039;--force-dot-license&#039;, &#039;--fallback-dot-license&#039;, or &#039;--skip-unrecognised&#039;:&lt;br /&gt;
&lt;br /&gt;
.git/hooks/applypatch-msg.sample&lt;br /&gt;
Usage: reuse annotate [OPTIONS] PATH&lt;br /&gt;
Try &#039;reuse annotate --help&#039; for help.&lt;br /&gt;
&lt;br /&gt;
Error: The following files do not have a recognised file extension. Please use &#039;--style&#039;, &#039;--force-dot-license&#039;, &#039;--fallback-dot-license&#039;, or &#039;--skip-unrecognised&#039;:&lt;br /&gt;
&lt;br /&gt;
.git/hooks/pre-merge-commit.sample&lt;br /&gt;
Usage: reuse annotate [OPTIONS] PATH&lt;br /&gt;
Try &#039;reuse annotate --help&#039; for help.&lt;br /&gt;
&lt;br /&gt;
Error: The following files do not have a recognised file extension. Please use &#039;--style&#039;, &#039;--force-dot-license&#039;, &#039;--fallback-dot-license&#039;, or &#039;--skip-unrecognised&#039;:&lt;br /&gt;
&lt;br /&gt;
.git/hooks/pre-applypatch.sample&lt;br /&gt;
Usage: reuse annotate [OPTIONS] PATH&lt;br /&gt;
Try &#039;reuse annotate --help&#039; for help.&lt;br /&gt;
&lt;br /&gt;
Error: The following files do not have a recognised file extension. Please use &#039;--style&#039;, &#039;--force-dot-license&#039;, &#039;--fallback-dot-license&#039;, or &#039;--skip-unrecognised&#039;:&lt;br /&gt;
&lt;br /&gt;
.git/hooks/pre-commit.sample&lt;br /&gt;
Usage: reuse annotate [OPTIONS] PATH&lt;br /&gt;
Try &#039;reuse annotate --help&#039; for help.&lt;br /&gt;
&lt;br /&gt;
Error: The following files do not have a recognised file extension. Please use &#039;--style&#039;, &#039;--force-dot-license&#039;, &#039;--fallback-dot-license&#039;, or &#039;--skip-unrecognised&#039;:&lt;br /&gt;
&lt;br /&gt;
.git/hooks/fsmonitor-watchman.sample&lt;br /&gt;
Usage: reuse annotate [OPTIONS] PATH&lt;br /&gt;
Try &#039;reuse annotate --help&#039; for help.&lt;br /&gt;
&lt;br /&gt;
Error: The following files do not have a recognised file extension. Please use &#039;--style&#039;, &#039;--force-dot-license&#039;, &#039;--fallback-dot-license&#039;, or &#039;--skip-unrecognised&#039;:&lt;br /&gt;
&lt;br /&gt;
.git/hooks/commit-msg.sample&lt;br /&gt;
Usage: reuse annotate [OPTIONS] PATH&lt;br /&gt;
Try &#039;reuse annotate --help&#039; for help.&lt;br /&gt;
&lt;br /&gt;
Error: The following files do not have a recognised file extension. Please use &#039;--style&#039;, &#039;--force-dot-license&#039;, &#039;--fallback-dot-license&#039;, or &#039;--skip-unrecognised&#039;:&lt;br /&gt;
&lt;br /&gt;
.git/config&lt;br /&gt;
Usage: reuse annotate [OPTIONS] PATH&lt;br /&gt;
Try &#039;reuse annotate --help&#039; for help.&lt;br /&gt;
&lt;br /&gt;
Error: The following files do not have a recognised file extension. Please use &#039;--style&#039;, &#039;--force-dot-license&#039;, &#039;--fallback-dot-license&#039;, or &#039;--skip-unrecognised&#039;:&lt;br /&gt;
&lt;br /&gt;
.git/HEAD&lt;br /&gt;
Usage: reuse annotate [OPTIONS] PATH&lt;br /&gt;
Try &#039;reuse annotate --help&#039; for help.&lt;br /&gt;
&lt;br /&gt;
Error: The following files do not have a recognised file extension. Please use &#039;--style&#039;, &#039;--force-dot-license&#039;, &#039;--fallback-dot-license&#039;, or &#039;--skip-unrecognised&#039;:&lt;br /&gt;
&lt;br /&gt;
.git/description&lt;br /&gt;
Usage: reuse annotate [OPTIONS] PATH&lt;br /&gt;
Try &#039;reuse annotate --help&#039; for help.&lt;br /&gt;
&lt;br /&gt;
Error: The following files do not have a recognised file extension. Please use &#039;--style&#039;, &#039;--force-dot-license&#039;, &#039;--fallback-dot-license&#039;, or &#039;--skip-unrecognised&#039;:&lt;br /&gt;
&lt;br /&gt;
.git/info/exclude&lt;br /&gt;
Usage: reuse annotate [OPTIONS] PATH&lt;br /&gt;
Try &#039;reuse annotate --help&#039; for help.&lt;br /&gt;
&lt;br /&gt;
Error: The following files do not have a recognised file extension. Please use &#039;--style&#039;, &#039;--force-dot-license&#039;, &#039;--fallback-dot-license&#039;, or &#039;--skip-unrecognised&#039;:&lt;br /&gt;
&lt;br /&gt;
.git/index&lt;br /&gt;
Usage: reuse annotate [OPTIONS] PATH&lt;br /&gt;
Try &#039;reuse annotate --help&#039; for help.&lt;br /&gt;
&lt;br /&gt;
Error: The following files do not have a recognised file extension. Please use &#039;--style&#039;, &#039;--force-dot-license&#039;, &#039;--fallback-dot-license&#039;, or &#039;--skip-unrecognised&#039;:&lt;br /&gt;
&lt;br /&gt;
.git/refs/remotes/origin/HEAD&lt;br /&gt;
Usage: reuse annotate [OPTIONS] PATH&lt;br /&gt;
Try &#039;reuse annotate --help&#039; for help.&lt;br /&gt;
&lt;br /&gt;
Error: The following files do not have a recognised file extension. Please use &#039;--style&#039;, &#039;--force-dot-license&#039;, &#039;--fallback-dot-license&#039;, or &#039;--skip-unrecognised&#039;:&lt;br /&gt;
&lt;br /&gt;
.git/refs/heads/main&lt;br /&gt;
Usage: reuse annotate [OPTIONS] PATH&lt;br /&gt;
Try &#039;reuse annotate --help&#039; for help.&lt;br /&gt;
&lt;br /&gt;
Error: The following files do not have a recognised file extension. Please use &#039;--style&#039;, &#039;--force-dot-license&#039;, &#039;--fallback-dot-license&#039;, or &#039;--skip-unrecognised&#039;:&lt;br /&gt;
&lt;br /&gt;
.git/packed-refs&lt;br /&gt;
Usage: reuse annotate [OPTIONS] PATH&lt;br /&gt;
Try &#039;reuse annotate --help&#039; for help.&lt;br /&gt;
&lt;br /&gt;
Error: The following files do not have a recognised file extension. Please use &#039;--style&#039;, &#039;--force-dot-license&#039;, &#039;--fallback-dot-license&#039;, or &#039;--skip-unrecognised&#039;:&lt;br /&gt;
&lt;br /&gt;
KEYS&lt;br /&gt;
Usage: reuse annotate [OPTIONS] PATH&lt;br /&gt;
Try &#039;reuse annotate --help&#039; for help.&lt;br /&gt;
&lt;br /&gt;
Error: The following files do not have a recognised file extension. Please use &#039;--style&#039;, &#039;--force-dot-license&#039;, &#039;--fallback-dot-license&#039;, or &#039;--skip-unrecognised&#039;:&lt;br /&gt;
&lt;br /&gt;
intake.FCStd&lt;br /&gt;
Successfully changed header of REUSE.toml&lt;br /&gt;
Successfully changed header of .gitignore&lt;br /&gt;
Successfully changed header of README.md&lt;br /&gt;
Successfully changed header of .github/workflows/docs_pages_workflow.yml&lt;br /&gt;
Usage: reuse annotate [OPTIONS] PATH&lt;br /&gt;
Try &#039;reuse annotate --help&#039; for help.&lt;br /&gt;
&lt;br /&gt;
Error: The following files do not have a recognised file extension. Please use &#039;--style&#039;, &#039;--force-dot-license&#039;, &#039;--fallback-dot-license&#039;, or &#039;--skip-unrecognised&#039;:&lt;br /&gt;
&lt;br /&gt;
LICENSE&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## ah fuk, that didn&#039;t do what we wanted at all. I expected it would have pulled the copyright info from the REUSE.toml file. Instead it just took the contents &#039;--license&#039; as the value of the copyright attribute :(&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ head docs/faq.rst &lt;br /&gt;
.. SPDX-FileCopyrightText: 2026 --license&lt;br /&gt;
&lt;br /&gt;
.. _faq:&lt;br /&gt;
&lt;br /&gt;
Frequently Asked Questions&lt;br /&gt;
==========================&lt;br /&gt;
&lt;br /&gt;
.. _faq_follow:&lt;br /&gt;
&lt;br /&gt;
Q: How can I get updates about Eco-Libre?&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## the faq says that we *should* update headers to every file, but it&#039;s not necessary if we use `REUSE.toml` file – as was also indicated with the `reuse lint` output above https://reuse.software/faq/&lt;br /&gt;
## we can, at any time, get a list of every file&#039;s copyright and license using the `reuse spdx` command&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ reuse spdx&lt;br /&gt;
SPDXVersion: SPDX-2.1&lt;br /&gt;
DataLicense: CC0-1.0&lt;br /&gt;
SPDXID: SPDXRef-DOCUMENT&lt;br /&gt;
DocumentName: life-line&lt;br /&gt;
DocumentNamespace: http://spdx.org/spdxdocs/spdx-v2.1-16677618-7d18-4c76-8411-c508a053c01d&lt;br /&gt;
Creator: Person: Anonymous ()&lt;br /&gt;
Creator: Organization: Anonymous ()&lt;br /&gt;
Creator: Tool: reuse-6.2.0&lt;br /&gt;
Created: 2026-04-28T22:19:51Z&lt;br /&gt;
CreatorComment: &amp;lt;text&amp;gt;This document was created automatically using available reuse information consistent with REUSE.&amp;lt;/text&amp;gt;&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-97ed0fdad1415bc2a07967691fb8b548&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-5a39e4fd6c4d6fe353cacabc360bd279&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-25ab5821b678be2b2b12d29b956be405&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-3a1f36e95ccd2fd666e9798d3ac7eb47&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-21b8c0e80d2658f4b88b5a3938551f27&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-1a8de53ae2a6abc46eb8ed1144b7a1f9&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-f9fec76b2bf698c8fb90b872cd0318c1&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-10a5417ebf693664c167892a336585dc&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-3baf92437e62e7b84893396f6d6d2c31&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-120ec97787268d2d531b284f8f238388&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-96f0aa3db80b8611b0cad4fd7f43d887&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-55954c104527c72b6f63da5076e914f7&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-87ca5b46937380db7a2e234fe72b2988&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-ce4d5cb6868565afb76744142953776c&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-7df4243f95862b10bf244e1a932a1305&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-009fc4d41e5673f7da41e8b27bd3ebd6&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-87008e367a587fb44b1e9b7aaa52f6b6&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-c531371aac660823102048108ce60921&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-732742039a9682c0d5bfa8d8845abb5f&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-1228cd07cdef9163c78a4847c409b29e&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-f039812ae7f967b8f08d9147e2fd4153&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-35b1d5815fbbdd7c4356fb3b3cba3b1e&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-c1aae1897500b74ec3aaca84335f882f&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-3598f5057a1cdb741af433a6096d913d&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-c17ac5ff4f166b672e4510ff2c577dbc&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-7b9171fdbbab79cca77d36069477c84a&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-7a9621b85efc539284dde0394be036d8&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-4658cb22cc4a9761f1206a7297889577&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-49300cf0d117ccc668836b524d21d3f9&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-d6b38587054ac699a38698e0eefb93c8&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-49b84e58657e7ccc299f61b0cf539e20&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-39d79d9e7219bdbab89178b7dc21d0da&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-ed584b122f50739f0fda5917ea3f7f59&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-1e2b0fda7ea1435b44332b7c8900d12a&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-2595e40eb2dc20ee8fc015548806efdc&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-fdc6a9c01b345699ecf781d28fa90f5a&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-9cd72e674f0f994995a06528ee25ce2f&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-9cc2a1a37bc4829e8725d74912f56b16&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-e2350358bd19a26c28ac28cc5e18c5a1&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-b33bfd4d5eec5e96e039ec43915bfbf8&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-7015c357dbfa9a8c1900250df442c421&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-4dedfba4994163f7e688743fc42a33d6&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-89b9ed2df6780dc61cffdf6dab799cff&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-eb10117cc0b1fcd44808cc34f4cb1083&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-f1dc0b0fba5c4ce78e065efb774669a8&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-01067d41eee220cdd87bfbf80ea71e87&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-111708d19b33da1a42118224ef69665e&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-472c7aaf2054b6662a0f02656ff453e0&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-f373dac39205edb0975081cc2411a334&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-3d7c4e6cccb3294880a3d23a9edc019c&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-fe7b87a77ea58c18a39d99c8cc4fd9b8&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-8979307823bc12e1df0c4754fb92b50a&lt;br /&gt;
&lt;br /&gt;
FileName: ./.github/workflows/docs_pages_workflow.yml&lt;br /&gt;
SPDXID: SPDXRef-97ed0fdad1415bc2a07967691fb8b548&lt;br /&gt;
FileChecksum: SHA1: 9d6615d72965d4a93b8f7b9eb83b6484b44dee95&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./.gitignore&lt;br /&gt;
SPDXID: SPDXRef-5a39e4fd6c4d6fe353cacabc360bd279&lt;br /&gt;
FileChecksum: SHA1: ac7e0839e77460fca604674fb11218c9fca3a62b&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./CHANGELOG&lt;br /&gt;
SPDXID: SPDXRef-25ab5821b678be2b2b12d29b956be405&lt;br /&gt;
FileChecksum: SHA1: 0d0ca350f7daa0808bebebd0a65784358dfc45c3&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./KEYS&lt;br /&gt;
SPDXID: SPDXRef-3a1f36e95ccd2fd666e9798d3ac7eb47&lt;br /&gt;
FileChecksum: SHA1: f97678ccd0eed19288e1962a838be2f4aa8b7c43&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./README.md&lt;br /&gt;
SPDXID: SPDXRef-21b8c0e80d2658f4b88b5a3938551f27&lt;br /&gt;
FileChecksum: SHA1: 954a6f4347c29a012ef72704606756c843b6a522&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
Copyright (C) 2023 Michael Altfield and the Eco-Libre Team&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./docs/.gitignore&lt;br /&gt;
SPDXID: SPDXRef-1a8de53ae2a6abc46eb8ed1144b7a1f9&lt;br /&gt;
FileChecksum: SHA1: 71683d32ff456772212653e2e836b217c3b7fb73&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./docs/Makefile&lt;br /&gt;
SPDXID: SPDXRef-f9fec76b2bf698c8fb90b872cd0318c1&lt;br /&gt;
FileChecksum: SHA1: 77b7d944eb62d73c1f46a1cfcba1e70e31e4297a&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./docs/_static/custom.css&lt;br /&gt;
SPDXID: SPDXRef-10a5417ebf693664c167892a336585dc&lt;br /&gt;
FileChecksum: SHA1: 6cd536f874aadf0ccc0a0e17ad33f948b4fba44c&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./docs/_templates/versions.html&lt;br /&gt;
SPDXID: SPDXRef-3baf92437e62e7b84893396f6d6d2c31&lt;br /&gt;
FileChecksum: SHA1: 8443bd4bfd306f5b6cf6485e6a6cff5599def6f7&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./docs/attribution.rst&lt;br /&gt;
SPDXID: SPDXRef-120ec97787268d2d531b284f8f238388&lt;br /&gt;
FileChecksum: SHA1: e4b0c037aac62dc9b64293fe57a188f6bf4c5615&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./docs/build/index.rst&lt;br /&gt;
SPDXID: SPDXRef-96f0aa3db80b8611b0cad4fd7f43d887&lt;br /&gt;
FileChecksum: SHA1: 464d9b8ffa36876d3eb0c95a093f4c212d80ff1b&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./docs/build/intake/bom.ods&lt;br /&gt;
SPDXID: SPDXRef-55954c104527c72b6f63da5076e914f7&lt;br /&gt;
FileChecksum: SHA1: 916d43e423eea34a6b63c4cc36190b998b426d85&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2026 --license&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./docs/build/intake/bom.rst&lt;br /&gt;
SPDXID: SPDXRef-87ca5b46937380db7a2e234fe72b2988&lt;br /&gt;
FileChecksum: SHA1: b72018fd716c9cd1f44b96e84a97d7891a9659c2&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./docs/build/intake/index.rst&lt;br /&gt;
SPDXID: SPDXRef-ce4d5cb6868565afb76744142953776c&lt;br /&gt;
FileChecksum: SHA1: 73e83f3d88739f3a711cdc22d05a17e5e46135a0&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./docs/build/intake/what.rst&lt;br /&gt;
SPDXID: SPDXRef-7df4243f95862b10bf244e1a932a1305&lt;br /&gt;
FileChecksum: SHA1: e444a37cc9615febee656e969dac625b9c2014ba&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./docs/build/settling-tank/bom.rst&lt;br /&gt;
SPDXID: SPDXRef-009fc4d41e5673f7da41e8b27bd3ebd6&lt;br /&gt;
FileChecksum: SHA1: e03a27e7d09a23245baa962f0f4ea12fac7ea6d2&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./docs/build/settling-tank/index.rst&lt;br /&gt;
SPDXID: SPDXRef-87008e367a587fb44b1e9b7aaa52f6b6&lt;br /&gt;
FileChecksum: SHA1: f8ff63ef2190341ea2bd810c300d54b83d5d3674&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./docs/build/settling-tank/what.rst&lt;br /&gt;
SPDXID: SPDXRef-c531371aac660823102048108ce60921&lt;br /&gt;
FileChecksum: SHA1: 57a0fa949c5e6e46eca53d0889f152c2962bfa61&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./docs/buildDocs.sh&lt;br /&gt;
SPDXID: SPDXRef-732742039a9682c0d5bfa8d8845abb5f&lt;br /&gt;
FileChecksum: SHA1: befd1b0246b958791ad57f4e18bbba43d8872cd7&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: AGPL-3.0-only&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./docs/changelog.rst&lt;br /&gt;
SPDXID: SPDXRef-1228cd07cdef9163c78a4847c409b29e&lt;br /&gt;
FileChecksum: SHA1: 26793d0a9acc383ba3ccfa7d622b7071db91418e&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./docs/conf.py&lt;br /&gt;
SPDXID: SPDXRef-f039812ae7f967b8f08d9147e2fd4153&lt;br /&gt;
FileChecksum: SHA1: 96026b86d9255c306df4b1fc8b2f5e94cc66c529&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: AGPL-3.0-only&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: &lt;br /&gt;
© &#039; +copyright,&amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./docs/conf.py.orig&lt;br /&gt;
SPDXID: SPDXRef-35b1d5815fbbdd7c4356fb3b3cba3b1e&lt;br /&gt;
FileChecksum: SHA1: 71f3dc660a741b97542c68e32eaa33c80dc42630&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./docs/dev/index.rst&lt;br /&gt;
SPDXID: SPDXRef-c1aae1897500b74ec3aaca84335f882f&lt;br /&gt;
FileChecksum: SHA1: 8075e5fb62dcb27431df32d5928e7561d66a2c46&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./docs/faq.rst&lt;br /&gt;
SPDXID: SPDXRef-3598f5057a1cdb741af433a6096d913d&lt;br /&gt;
FileChecksum: SHA1: f3b1399a843bcd73a4eb67e1fc62a4e090b2377a&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./docs/images/eco-libre_logo-2025.08.svg&lt;br /&gt;
SPDXID: SPDXRef-c17ac5ff4f166b672e4510ff2c577dbc&lt;br /&gt;
FileChecksum: SHA1: d582ec414c54cea2834891d35349c09ae069cbbd&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2026 --license&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./docs/images/eco-libre_text-logo-2025.08.svg&lt;br /&gt;
SPDXID: SPDXRef-7b9171fdbbab79cca77d36069477c84a&lt;br /&gt;
FileChecksum: SHA1: 513c03e164c26e0b35644bee03625b8d343fc49b&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2026 --license&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./docs/images/eco-libre_text-logo-2025.08_500px.png&lt;br /&gt;
SPDXID: SPDXRef-7a9621b85efc539284dde0394be036d8&lt;br /&gt;
FileChecksum: SHA1: de27a5411a683f090c1b543c1e93f8164c4d44cc&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2026 --license&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./docs/images/life-line_2023.12.jpg&lt;br /&gt;
SPDXID: SPDXRef-4658cb22cc4a9761f1206a7297889577&lt;br /&gt;
FileChecksum: SHA1: 8bff1f109f6f7ebc2accd5996d13fb94f7e8939a&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2026 --license&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./docs/images/life-line_2025.10.jpg&lt;br /&gt;
SPDXID: SPDXRef-49300cf0d117ccc668836b524d21d3f9&lt;br /&gt;
FileChecksum: SHA1: af42083713949fb9aac751421fc9a5fc3e794e4d&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2026 --license&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./docs/images/life-line_intake_cleanout-drain.jpg&lt;br /&gt;
SPDXID: SPDXRef-d6b38587054ac699a38698e0eefb93c8&lt;br /&gt;
FileChecksum: SHA1: 2652eedb0face5fececa50537198fc0f3aaf6092&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2026 --license&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./docs/images/life-line_intake_drum.jpg&lt;br /&gt;
SPDXID: SPDXRef-49b84e58657e7ccc299f61b0cf539e20&lt;br /&gt;
FileChecksum: SHA1: e26715adcf558fe12f4eded7308bc1be3e12761c&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2026 --license&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./docs/images/life-line_intake_expanded-metal.jpg&lt;br /&gt;
SPDXID: SPDXRef-39d79d9e7219bdbab89178b7dc21d0da&lt;br /&gt;
FileChecksum: SHA1: 0d0c3398256d96884fcd11daaebc4507b23d7750&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2026 --license&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./docs/images/life-line_intake_fine-mesh.jpg&lt;br /&gt;
SPDXID: SPDXRef-ed584b122f50739f0fda5917ea3f7f59&lt;br /&gt;
FileChecksum: SHA1: 4b3786e5f403c70f9598350c04cf12abb4a790aa&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2026 --license&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./docs/images/life-line_intake_outflow.jpg&lt;br /&gt;
SPDXID: SPDXRef-1e2b0fda7ea1435b44332b7c8900d12a&lt;br /&gt;
FileChecksum: SHA1: 0b7db555483b713324756799e657d2324bdab4f7&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2026 --license&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./docs/images/life-line_intake_parts.svg&lt;br /&gt;
SPDXID: SPDXRef-2595e40eb2dc20ee8fc015548806efdc&lt;br /&gt;
FileChecksum: SHA1: d98da9d0de766b61df6fb0c25f61521a3d26344a&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2026 --license&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./docs/images/life-line_intake_turbulence-bar.jpg&lt;br /&gt;
SPDXID: SPDXRef-fdc6a9c01b345699ecf781d28fa90f5a&lt;br /&gt;
FileChecksum: SHA1: 0f9c8372c9737ad1bac27204292c6aa7e5098813&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2026 --license&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./docs/images/life-line_intake_weir.jpg&lt;br /&gt;
SPDXID: SPDXRef-9cd72e674f0f994995a06528ee25ce2f&lt;br /&gt;
FileChecksum: SHA1: 7f64e42c9fe3b1d2c7d1ae1ece0b55bf544c781a&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2026 --license&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./docs/images/life-line_praxis_boris-plotkin.2024-11.jpg&lt;br /&gt;
SPDXID: SPDXRef-9cc2a1a37bc4829e8725d74912f56b16&lt;br /&gt;
FileChecksum: SHA1: baef65c6984d5b04e1cf44d435f471be0727bfd1&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2026 --license&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./docs/images/life-line_praxis_vegan-beasts_screen.2025-04.jpg&lt;br /&gt;
SPDXID: SPDXRef-e2350358bd19a26c28ac28cc5e18c5a1&lt;br /&gt;
FileChecksum: SHA1: d21be6517081f4f294ed88dca32a920e6bfeaadf&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2026 --license&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./docs/images/life-line_praxis_vegan-beasts_weir.2025-04.jpg&lt;br /&gt;
SPDXID: SPDXRef-b33bfd4d5eec5e96e039ec43915bfbf8&lt;br /&gt;
FileChecksum: SHA1: ba75a617970d7819263e2f21f0d52dcaa61c961c&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2026 --license&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./docs/index.rst&lt;br /&gt;
SPDXID: SPDXRef-7015c357dbfa9a8c1900250df442c421&lt;br /&gt;
FileChecksum: SHA1: e2618dda841766cbd533441dbd21fcfa55e2f119&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./docs/introduction/index.rst&lt;br /&gt;
SPDXID: SPDXRef-4dedfba4994163f7e688743fc42a33d6&lt;br /&gt;
FileChecksum: SHA1: 636e89b3596a43b9ca869502795fdc1956101d1c&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./docs/license.rst&lt;br /&gt;
SPDXID: SPDXRef-89b9ed2df6780dc61cffdf6dab799cff&lt;br /&gt;
FileChecksum: SHA1: c858a38846985c5a96c11c170468688b2860f529&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./docs/locales/es/LC_MESSAGES/autodoc.mo&lt;br /&gt;
SPDXID: SPDXRef-eb10117cc0b1fcd44808cc34f4cb1083&lt;br /&gt;
FileChecksum: SHA1: 3b2fa212f0265c96b1cde5a8cc061cc49385ed96&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./docs/locales/es/LC_MESSAGES/autodoc.po&lt;br /&gt;
SPDXID: SPDXRef-f1dc0b0fba5c4ce78e065efb774669a8&lt;br /&gt;
FileChecksum: SHA1: 58fca147c574cbda23a9c7a5ce420f6385d80ca1&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;Copyright (C) 2020 Michael Altfield&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./docs/locales/es/LC_MESSAGES/index.mo&lt;br /&gt;
SPDXID: SPDXRef-01067d41eee220cdd87bfbf80ea71e87&lt;br /&gt;
FileChecksum: SHA1: f6dda249389c9eb42684431b13c68bbb98530c35&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./docs/locales/es/LC_MESSAGES/index.po&lt;br /&gt;
SPDXID: SPDXRef-111708d19b33da1a42118224ef69665e&lt;br /&gt;
FileChecksum: SHA1: 21c57fcf054a05fcf4e0ef8660a6a38f98239e80&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;Copyright (C) 2020 Michael Altfield&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./docs/make.bat&lt;br /&gt;
SPDXID: SPDXRef-472c7aaf2054b6662a0f02656ff453e0&lt;br /&gt;
FileChecksum: SHA1: 3c504feedb2e1f1e85ed443a4d5aba20bafe0b28&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./docs/praxis/index.rst&lt;br /&gt;
SPDXID: SPDXRef-f373dac39205edb0975081cc2411a334&lt;br /&gt;
FileChecksum: SHA1: 03c98408278e3ebd2cdb61ecae75bd1c52cf4c02&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./docs/support.rst&lt;br /&gt;
SPDXID: SPDXRef-3d7c4e6cccb3294880a3d23a9edc019c&lt;br /&gt;
FileChecksum: SHA1: 3aabd6b0faf44abd22ae7d802d5e2baa988d4eaa&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-Fil&lt;br /&gt;
&lt;br /&gt;
= 2026-04-26 =&lt;br /&gt;
# I started working on writing a privacy policy for wiki.eco-lbre.org&lt;br /&gt;
# I wrote one years ago for OSE. editing history suggests I finished that in Nov 2018 https://wiki.opensourceecology.org/index.php?title=Media-wiki:Privacy_policy&amp;amp;action=history&lt;br /&gt;
# I largely copied it from the Creative Commons Privacy Policy, and I know Marcin made some (very non-gdpr-compliant) changes to it since then (in 2024)&lt;br /&gt;
# so I did diff of the current privacy policy on CC&#039;s website and OSE&#039;s; they had very little in common! https://creativecommons.org/privacy/&lt;br /&gt;
# it looks like CC updated their Privacy Policy in Dec 2019, so unfortuantly about a year after I did my work with it, they changed it almost completely&lt;br /&gt;
# so I&#039;m just going to start fresh with this, and make changes I think necessary&lt;br /&gt;
# I struggled to find the ToS page. It didn&#039;t appear on the special list of  long pages, and nothign returend for a search of &amp;quot;terms of service&amp;quot; – I guess because it&#039;s in the Eco-Libre namespace? I had to search my logs to find it https://wiki.eco-libre.org/wiki/Eco-Libre:Terms_of_Service&lt;br /&gt;
# I think I should change the link in the bottom-left footer from &amp;quot;Privacy Policy&amp;quot; to &amp;quot;Terms of Service&amp;quot; – since the PP is one of the ToS (and not the other way around)&lt;br /&gt;
## here&#039;s the docs on how to change the links in the footer https://www.mediawiki.org/wiki/Manual:Footer&lt;br /&gt;
## I was able to do this by updating the following two pages (one is the hyperlink text and one is the hyperlink article destination)&lt;br /&gt;
### https://wiki.eco-libre.org/wiki/MediaWiki:Privacypage&lt;br /&gt;
### https://wiki.eco-libre.org/wiki/MediaWiki:Privacy&lt;br /&gt;
# I created the Privacy Policy from the CC one, cleaned up the syntax and did my best to replace all the relevant CC stuff to EL https://wiki.eco-libre.org/wiki/Eco-Libre:Privacy_policy&lt;br /&gt;
# the privacy policy references a CoC (Code of Conduct). Ugh, I guess we need one of those too..&lt;br /&gt;
## I wonder if we can say &amp;quot;you must wash your hands with soap and water&amp;quot; and &amp;quot;you must take b12 if you&#039;re vegan&amp;quot; in the CoC. Or is that *another* agreement?&lt;br /&gt;
## probably we should make some CoC that applies to in-person and remote users *and* a separate agreement with that sort of thing, only for live-in guests (maybe call it a &amp;quot;Housing Agreeemnt&amp;quot; or something)&lt;br /&gt;
## here&#039;s the rules from veganism.social&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
	Rule #1No speciesism, animal abuse, carnists, omnivores, vegetarians, or other non-vegans&lt;br /&gt;
	Rule #2Sexually explicit or violent media must be marked as sensitive when posting&lt;br /&gt;
	Rule #3No racism, sexism, homophobia, transphobia, xenophobia, fatphobia, or casteism&lt;br /&gt;
	Rule #4No incitement of violence or promotion of violent ideologies&lt;br /&gt;
	Rule #5No harassment or doxxing of other users&lt;br /&gt;
	Rule #6Do not share intentionally false or misleading information&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## here&#039;s mastodon.energy&#039;s&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
1. Be Nice&lt;br /&gt;
2. Tell the Truth&lt;br /&gt;
3. Be Ethical&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## here&#039;s chaos.social, which is where we have our mastodon now&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Rules&lt;br /&gt;
&lt;br /&gt;
We expect users on chaos.social to adhere to the following rules:&lt;br /&gt;
&lt;br /&gt;
	No content condoning or advocating for the oppression of members of marginalised groups, or general discrimination of groups based on characteristics like gender, race, disabilities, nationality, education, religion etc.&lt;br /&gt;
	No harassment, stalking, mobbing, deadnaming, misgendering, contacting users who have made it clear they do not wish to be contacted.&lt;br /&gt;
	Obviously: no content that is illegal in Germany, no actions intended to damage this instance (performance, reputation, security).&lt;br /&gt;
	No right or alt-right bullshit, Nazi content, conspiracy narratives.&lt;br /&gt;
	No automated accounts (unless approved by the moderators). This includes bots, crossposters, feedposters etc.&lt;br /&gt;
	When posting to the local timeline, provide Content Warnings for violence, sexually explicit content, death/disease, and politics, particularly when negative or controversial (those are the larger categories, a CW might be something like “uspol, elections”).&lt;br /&gt;
	When posting to the local timeline, provide image descriptions.&lt;br /&gt;
	Provide credit for creative works that are not your own. That includes marking AI generated content clearly as such.&lt;br /&gt;
&lt;br /&gt;
Clarification: You post to the local timeline when you give your post “public” visibility. If you don’t want to follow local timeline rules, you can post with visibility “quiet public” (which used to be called “unlisted”) – posts will still be visible to everybody (your followers and everybody else), they just won’t get shown on the local and federated timelines. Boosts also do not appear on the local timeline.&lt;br /&gt;
&lt;br /&gt;
Note that the instance is also subject to our terms and privacy policy.&lt;br /&gt;
Best practices&lt;br /&gt;
&lt;br /&gt;
We ask users on chaos.social to keep the following guidelines in mind, in order to foster a considerate and accessible atmosphere. Forgetting about them is not as serious as breaking the instance rules, but repeated malicious unwillingness to follow the best practices will be considered just like breaking a rule.&lt;br /&gt;
&lt;br /&gt;
	Use content warnings liberally, especially for topics that are potentially disturbing or controversial, or that make life harder for people struggling with addiction or trauma.&lt;br /&gt;
	Don’t be a reply guy – uninvited comments about another user’s personal choices, lifestyle or family are strongly discouraged and may be considered harassment.&lt;br /&gt;
	In discussions, please remain civil, do not insult the people you’re talking to. Don’t escalate.&lt;br /&gt;
&lt;br /&gt;
Enforcement&lt;br /&gt;
&lt;br /&gt;
Rules are only worth as much as their enforcement, so here is what you can expect from the chaos.social moderators (we will publish our moderation guidelines in the future, but here’s the short version):&lt;br /&gt;
&lt;br /&gt;
Breaking these rules can get you kicked off the instance, though unless you’re behaving in bad faith, we will give you several warnings first. Going against the Best Practices can also get you kicked off the instance, but you have to really persistently act against them (and at that point, why are you on chaos.social?).&lt;br /&gt;
&lt;br /&gt;
Please report behaviour that bothers you. We will keep your report confidential.&lt;br /&gt;
&lt;br /&gt;
We run this instance in our spare time, so we can’t respond instantly. We try to react to all reports within a day, but please allow for delays. You can always contact us us in private if you have concerns about moderation. We will not comment in public about individual moderation cases.&lt;br /&gt;
Ultimately,&lt;br /&gt;
&lt;br /&gt;
we (@leah and @rixx) are maintaining this instance on our spare time, hardware and nerves. Don’t push either of those.&lt;br /&gt;
&lt;br /&gt;
The rules are licensed under CC-BY-SA by chaos.social e.V.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
### and this one explicilty says it&#039;s CC-BY-SA, so that&#039;s cool.&lt;br /&gt;
## I guess we&#039;ll copy chaos.socials&#039; since it&#039;s already copyleft&lt;br /&gt;
## ok, here&#039;s what I came-up with&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
By using this website, you agree to the following Code of Conduct:&lt;br /&gt;
&lt;br /&gt;
# Only submit content for which you have the right to submit it under the terms of our copyleft licensing (it must either be created in whole or in part by you or already licensed under a comparable copyleft)&lt;br /&gt;
# No AI content! This is a violation of rule #1.&lt;br /&gt;
# No content condoning or advocating for the oppression of members of marginalised groups, or general discrimination of groups based on characteristics like species, gender, race, disabilities, nationality, education, religion etc.&lt;br /&gt;
# No harassment, stalking, mobbing, deadnaming, misgendering, contacting users who have made it clear they do not wish to be contacted.&lt;br /&gt;
# No content that is illegal in Germany or Ecuador, no actions intended to damage this instance (performance, reputation, security).&lt;br /&gt;
# No pro-fascist or pro-Nazi content&lt;br /&gt;
# Post Content Warnings for violence, sexually explicit content, death and/or disease&lt;br /&gt;
# Whenever possible, provide image descriptions for visually impaired readers&lt;br /&gt;
# No misinformation or disinformaton&lt;br /&gt;
# Provide attribution (credit) for works that are not your own. This should include a name of the original copyright holder and a link to the source.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# now we have a CLA (Community License Agreement), ToS (Terms of Service), PP (Privacy Policy), and CoC (Code of Conduct)&lt;br /&gt;
## so I think we still have just 2 agreeements missing&lt;br /&gt;
### Public Data Agreement&lt;br /&gt;
### In-House Volunteer Agreement&lt;br /&gt;
# I had previously drafted the Public Data Agreeement as followes&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
1. I understand that Eco-Libre will publish all of my work publicly on their website&lt;br /&gt;
2. I understand that, because my work is licensed openly, I cannot request it to be taken down from the Internet&lt;br /&gt;
3. I understand that I have the right to use an alias, so that all of my work can be attributed to an anonymous profile with no PII (publicly identifiable information).&lt;br /&gt;
4. I understand that, if I wish to use an anonymous identity for my public contributions, then I should not use my real name in this application&lt;br /&gt;
5. I understand that currently my name is set to XXXX, and this is the name that will be publicly listed on Eco-Libre&#039;s website associated with all of my contributions&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## I&#039;m actually not fully sure that&#039;s necessary. The PP from CC had a clause&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Eco-Libre Volunteers.&lt;br /&gt;
&lt;br /&gt;
o In connection with you Eco-Libre Volunteer application, we may provide your information to the individuals you’ve selected to vouch for you, and with those reviewing your application, including the Membership Council whose members include people not employed by Eco-Libre and who are located in various countries around the world.&lt;br /&gt;
&lt;br /&gt;
o If you vouch for someone’s application to the Eco-Libre Volunteer program, your information will be shared with those reviewing the application, including the Membership Council, and if you provide a positive vouching statement, that statement will be shared with the applicant if and when they are admitted for membership.&lt;br /&gt;
&lt;br /&gt;
o Once you are an Eco-Libre Volunteer, we may provide you with a public profile page, pre-populated with certain information you provided in your application such as your name, areas of interest, images or other content you upload, which will be publicly displayed to anyone who visits the site. &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## I added a paragraph&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
o   As an Eco-Libre Volunteer, all of your Contributions will be licensed under a copyleft license, and published publicly.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## well, I guess this satisfies the legal requirements, but I do want to make the pseudonym stuff more clear. But I apparently wrote that to go on the application itself. Currently our application process is non-existant: the user just sends and email, we have a call, and we figure it out. I did just add some docs to sign to that process, but we need a more streamlined process: a form&lt;br /&gt;
## it&#039;s on our TODO list to review some wordpress plugins that we can use for building an application process. eventually *that&#039;s* where this text should be copied, and it should reference things like our official Privacy Policy&lt;br /&gt;
# the other thing was our &amp;quot; In-House Volunteer Agreement&amp;quot; which is *really* premature, as we don&#039;t even have housing yet. Nonetheless, I drafted this&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
1. I am at least 15 years old&lt;br /&gt;
2. I sincerely want live a sustainable lifestyle and work on developing tools to help others live sustainably. I understand that volunteering at Eco-Libre is an active experience, not a cheap vacation. &lt;br /&gt;
3. I am ready to participate in the community and share in the daily routine of my hosts, while respecting their living conditions and boundaries.&lt;br /&gt;
4. I will contribute my time to the community the agreed-upon number of hours per week.&lt;br /&gt;
5. I am willing to adapt to a lifestyle that may be different from mine. I will make known to the community any pertinent health conditions (disabilities, addictions...) beforehand.&lt;br /&gt;
6. I have insurance that will cover me for accidents, illness, and liability during my stay. I am aware that Eco-Libre cannot be held responsible for damages and / or losses linked to my stay.&lt;br /&gt;
7. I will prevent the spread of disease by washing my hands with soap and water after using the toilet and before preparing meals&lt;br /&gt;
8. I will only purchase vegan goods (derived from non-animal sources) during my time at Eco-Libre in accordance with the community values of ecological sustainability.&lt;br /&gt;
9. I will supplement my diet by taking vitamin B12&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# I also think that should be included in the online volunteer application form. And probably physically signed by folks who are going to actually come to Ecudaor. But we&#039;re not there yet...&lt;br /&gt;
# anyway, I think we&#039;ve finally satisifed the requrements of (and finished the configuration of) ConfirmAccount!&lt;br /&gt;
# TODO: finish enabling &amp;amp; configuring wiki extensions: DeleteBatch, SmiteSpam, UserMerge, Widgets&lt;br /&gt;
&lt;br /&gt;
= 2026-04-24 =&lt;br /&gt;
# someone answered my &amp;quot;how do I license kdnelive files&amp;quot; here https://opensource.stackexchange.com/a/15747/30915&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
It sounds like your desired outcome is that copies of your mp4 can only be distributed while also sharing the kdenlive source files. You&#039;re correct that CC ShareAlike terms won&#039;t do this. ShareAlike requires that all downstream works that reuse the work be shareable under the same kind of ShareAlike license, but it doesn&#039;t require redistributors to share the underlying source code.&lt;br /&gt;
&lt;br /&gt;
If you do want to require source to accompany your work, this requirement differs from the desires of many artists who choose a CC license: they want their song or image to be shared around without having to be followed by the underlying sound-editor archive or photo-editor layer file. If that actually is what you want, then the GPL is a sensible choice for such a strong requirement, and it is perfectly applicable to non-software works.&lt;br /&gt;
&lt;br /&gt;
 * https://www.gnu.org/licenses/gpl-faq.html#GPLOtherThanSoftware&lt;br /&gt;
&lt;br /&gt;
If you don&#039;t want to impose this requirement, then I think CC BY-SA is still a reasonable choice for the underlying &amp;quot;source code&amp;quot; of your video. The output mp4 is legally derivative of your kdenlive files, so CC BY-SA will ensure that all mp4 files made from (derivatives of) your kdenlive source must also be freely shareable under CC BY-SA, but will not impose source disclosure. Future derivatives of the source kdenlive files will, similarly, have to remain under CC BY-SA even as others change them (but they can be kept secret even when built into a CC BY-SA mp4).&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# I half-decided we should then license all artwork (images made in gimp or inkscape, videos made in kdenlive) under GPL, so the sources would need to be public&lt;br /&gt;
# then I started thinking, hey, maybe our documentation should also be GPL, since sphinx and reST are like sources for PDFs they produce&lt;br /&gt;
# then I realized what that would actually mean. Say we make a video showing the construction of a launch-nest. Say the sources for that video include a camera that was mounted to a post and recording for 8 hours every day over the period of 3 months. Maybe five of them, for differet angles. Once we finally finish producing the video, I&#039;m going to be super relieved when we can delete that enormous source footage. The kdenlive file itself would be fine to release; it&#039;s small. But would we then be forced to indefinitely save and distribute the source video footage, even if it&#039;s a combined 3 TB of 1,000 video files, for a 1 GB finally-rendered mp4?&lt;br /&gt;
# inkscape is easy; the svg literally *is* the source file&lt;br /&gt;
# gimp is somewhere in-between. I typically hang-onto the source images used to make a feature image (sometimes brands, or screenshots or stock copyleft images of forests or whatever) for some number of months. eventually they get deleted. I would love to upload the gimp files, but those might be broken without the source images. Or they just would be too enormous and break git over time.&lt;br /&gt;
# also, if we can&#039;t do it, we can&#039;t expect downstream to do it. imagine we work with some youtuber and demand that the must forever store and publish the sources in order to do a video with us? I think 99% would turn us down, because they know they can&#039;t do that. It&#039;s too expensive and unrealistic.&lt;br /&gt;
# due to this very real logistical problem, I think we should just keep CC BY-SA on media files. We can go above-and-beyond that license and provide kdenlive and gimp files *sometimes*, but we shouldn&#039;t mandate it by using GPL.&lt;br /&gt;
# and, honestly, if downstream just licenses CC BY-SA, that lets us cut that up and use it in future videos. That&#039;s good enough. And appropriate for the (expensive-to-store) medium.&lt;br /&gt;
# ...&lt;br /&gt;
# revisting the DEB5 system, I found an example on another project that I maintain: buskill https://salsa.debian.org/debian/buskill/-/blob/master/debian/copyright?ref_type=heads&lt;br /&gt;
## so our debian maintainer built this. he put a file &#039;copyright&#039; in the root with this contents&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/&lt;br /&gt;
Source: https://github.com/BusKill/buskill-app&lt;br /&gt;
Upstream-Name: buskill&lt;br /&gt;
Upstream-Contact: Michael Altfield &amp;lt;michael@michaelaltfield.net&amp;gt;&lt;br /&gt;
Files:&lt;br /&gt;
 *&lt;br /&gt;
Copyright:&lt;br /&gt;
 2020-2022 Michael Altfield &amp;lt;michael@michaelaltfield.net&amp;gt;&lt;br /&gt;
 2020-2021 Steven Johnson &amp;lt;steven.j2019@protonmail.com&amp;gt;&lt;br /&gt;
License: GPL-3+&lt;br /&gt;
Files:&lt;br /&gt;
 src/fonts/*&lt;br /&gt;
Copyright:&lt;br /&gt;
 2015 Google&lt;br /&gt;
License: Apache-2.0&lt;br /&gt;
 Licensed under the Apache License, Version 2.0 (the &amp;quot;License&amp;quot;);&lt;br /&gt;
 you may not use this file except in compliance with the License.&lt;br /&gt;
 You may obtain a copy of the License at&lt;br /&gt;
 ․&lt;br /&gt;
	https://www.apache.org/licenses/LICENSE-2.0&lt;br /&gt;
 ․&lt;br /&gt;
 Unless required by applicable law or agreed to in writing, software&lt;br /&gt;
 distributed under the License is distributed on an &amp;quot;AS IS&amp;quot; BASIS,&lt;br /&gt;
 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.&lt;br /&gt;
 See the License for the specific language governing permissions and&lt;br /&gt;
 limitations under the License.&lt;br /&gt;
Comment:&lt;br /&gt;
 On Debian systems, the complete text of the Apache License&lt;br /&gt;
 version 2 can be found in &amp;quot;/usr/share/common-licenses/Apache-2.0&amp;quot;.&lt;br /&gt;
Files:&lt;br /&gt;
 src/packages/garden/navigationdrawer/*&lt;br /&gt;
Copyright:&lt;br /&gt;
 2013 Alexander Taylor&lt;br /&gt;
License: MIT&lt;br /&gt;
Files:&lt;br /&gt;
 src/packages/garden/progressspinner/*&lt;br /&gt;
Copyright:&lt;br /&gt;
 2015 Ryan Pessa &amp;lt;dkived@gmail.com&amp;gt;&lt;br /&gt;
License: MIT&lt;br /&gt;
Files:&lt;br /&gt;
 debian/*&lt;br /&gt;
Copyright:&lt;br /&gt;
 2022-2026 Francois Marier &amp;lt;francois@debian.org&amp;gt;&lt;br /&gt;
License: GPL-3+&lt;br /&gt;
License: GPL-3+&lt;br /&gt;
 This package is free software; you can redistribute it and/or modify&lt;br /&gt;
 it under the terms of the GNU General Public License as published by&lt;br /&gt;
 the Free Software Foundation; either version 3 of the License, or&lt;br /&gt;
 (at your option) any later version.&lt;br /&gt;
 .&lt;br /&gt;
 This package is distributed in the hope that it will be useful,&lt;br /&gt;
 but WITHOUT ANY WARRANTY; without even the implied warranty of&lt;br /&gt;
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the&lt;br /&gt;
 GNU General Public License for more details.&lt;br /&gt;
 .&lt;br /&gt;
 You should have received a copy of the GNU General Public License&lt;br /&gt;
 along with this program. If not, see &amp;lt;https://www.gnu.org/licenses/&amp;gt;&lt;br /&gt;
Comment:&lt;br /&gt;
 On Debian systems, the complete text of the GNU General&lt;br /&gt;
 Public License version 3 can be found in &amp;quot;/usr/share/common-licenses/GPL-3&amp;quot;.&lt;br /&gt;
License: MIT&lt;br /&gt;
 Permission is hereby granted, free of charge, to any person obtaining a copy&lt;br /&gt;
 of this software and associated documentation files (the &amp;quot;Software&amp;quot;), to deal&lt;br /&gt;
&lt;br /&gt;
 in the Software without restriction, including without limitation the rights&lt;br /&gt;
 to use, copy, modify, merge, publish, distribute, sublicense, and/or sell&lt;br /&gt;
 copies of the Software, and to permit persons to whom the Software is&lt;br /&gt;
 furnished to do so, subject to the following conditions:&lt;br /&gt;
 .&lt;br /&gt;
 The above copyright notice and this permission notice shall be included in&lt;br /&gt;
 all copies or substantial portions of the Software.&lt;br /&gt;
 .&lt;br /&gt;
 THE SOFTWARE IS PROVIDED &amp;quot;AS IS&amp;quot;, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR&lt;br /&gt;
 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,&lt;br /&gt;
 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE&lt;br /&gt;
 AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER&lt;br /&gt;
 LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,&lt;br /&gt;
 OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN&lt;br /&gt;
 THE SOFTWARE.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# I spent some time trying to craft a &#039;copyright&#039; file that we could use for Eco-Libre&lt;br /&gt;
## one thing that bothers me is that I have so many &#039;Files&#039; stanzas – one for each programming language. I wish I could do something like&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Files:&lt;br /&gt;
 *.py|*.php|*.c&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## there are no examples where a single file stanza has many file paths, but the text of the standard does say they are whitespace-delimited (not pipe-delimited, like I naturally think)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
4. File syntax&lt;br /&gt;
...&lt;br /&gt;
4.2. Whitespace-separated lists&lt;br /&gt;
&lt;br /&gt;
Field values defined as whitespace-separated lists may be on one line or many. Values in the list are separated by one or more whitespace characters (space, tab, or newline). For example, the Files field contains a whitespace-separated list of filename patterns.&lt;br /&gt;
...&lt;br /&gt;
6.9. Files&lt;br /&gt;
&lt;br /&gt;
Whitespace-separated list: list of patterns indicating files covered by the license and copyright specified in this stanza.&lt;br /&gt;
&lt;br /&gt;
Filename patterns in the Files field are specified using a simplified shell glob syntax. Patterns are separated by whitespace. &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## let&#039;s see if I can find any example package that use this whitespace, so I don&#039;t fuck it up&lt;br /&gt;
## looks like debian has a *ton* of these already available on my system&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
user@disp4360:~$ ls /usr/share/doc/*/copyright | head&lt;br /&gt;
/usr/share/doc/acl/copyright&lt;br /&gt;
/usr/share/doc/adduser/copyright&lt;br /&gt;
/usr/share/doc/adwaita-icon-theme/copyright&lt;br /&gt;
/usr/share/doc/alsa-topology-conf/copyright&lt;br /&gt;
/usr/share/doc/alsa-ucm-conf/copyright&lt;br /&gt;
/usr/share/doc/alsa-utils/copyright&lt;br /&gt;
/usr/share/doc/amd64-microcode/copyright&lt;br /&gt;
/usr/share/doc/anacron/copyright&lt;br /&gt;
/usr/share/doc/ansible/copyright&lt;br /&gt;
/usr/share/doc/ansible-core/copyright&lt;br /&gt;
user@disp4360:~$ &lt;br /&gt;
&lt;br /&gt;
user@disp4360:~$ ls /usr/share/doc/*/copyright | wc -l&lt;br /&gt;
2798&lt;br /&gt;
user@disp4360:~$ &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## the very first one has a great example&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
user@disp4360:~$ cat /usr/share/doc/acl/copyright&lt;br /&gt;
Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/&lt;br /&gt;
&lt;br /&gt;
Files:&lt;br /&gt;
 *&lt;br /&gt;
Copyright:&lt;br /&gt;
 Copyright © 2000-2008 Silicon Graphics, Inc.&lt;br /&gt;
 Copyright © 1999-2001,2007-2009 Andreas Gruenbacher&lt;br /&gt;
License: GPL-2+&lt;br /&gt;
 This program is free software: you can redistribute it and/or modify it&lt;br /&gt;
 under the terms of the GNU General Public License as published by&lt;br /&gt;
 the Free Software Foundation, either version 2 of the License, or&lt;br /&gt;
 (at your option) any later version.&lt;br /&gt;
 .&lt;br /&gt;
 This program is distributed in the hope that it will be useful,&lt;br /&gt;
 but WITHOUT ANY WARRANTY; without even the implied warranty of&lt;br /&gt;
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the&lt;br /&gt;
 GNU General Public License for more details.&lt;br /&gt;
 .&lt;br /&gt;
 You should have received a copy of the GNU General Public License&lt;br /&gt;
 along with this program.  If not, see &amp;lt;https://www.gnu.org/licenses/&amp;gt;.&lt;br /&gt;
Comment:&lt;br /&gt;
 On Debian systems, the full text of the GNU General Public License&lt;br /&gt;
 can be found in &#039;/usr/share/common-licenses/GPL-2&#039;.&lt;br /&gt;
&lt;br /&gt;
Files:&lt;br /&gt;
 exports&lt;br /&gt;
 include/*.h&lt;br /&gt;
 libacl/*.c&lt;br /&gt;
 libacl/*.h&lt;br /&gt;
 libmisc/*.c&lt;br /&gt;
 tools/do_set.*&lt;br /&gt;
 tools/parse.*&lt;br /&gt;
 tools/sequence.c&lt;br /&gt;
 tools/setfacl.c&lt;br /&gt;
 tools/user_group.h&lt;br /&gt;
Copyright:&lt;br /&gt;
 Copyright © 2001-2002 Silicon Graphics, Inc.&lt;br /&gt;
 Copyright © 1999-2003,2007,2009,2011 Andreas Gruenbacher&lt;br /&gt;
License: LGPL-2+&lt;br /&gt;
 This program is free software: you can redistribute it and/or modify it&lt;br /&gt;
 under the terms of the GNU Lesser General Public License as published by&lt;br /&gt;
 the Free Software Foundation, either version 2.1 of the License, or&lt;br /&gt;
 (at your option) any later version.&lt;br /&gt;
 .&lt;br /&gt;
 This program is distributed in the hope that it will be useful,&lt;br /&gt;
 but WITHOUT ANY WARRANTY; without even the implied warranty of&lt;br /&gt;
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the&lt;br /&gt;
 GNU Lesser General Public License for more details.&lt;br /&gt;
 .&lt;br /&gt;
 You should have received a copy of the GNU Lesser General Public License&lt;br /&gt;
 along with this program.  If not, see &amp;lt;https://www.gnu.org/licenses/&amp;gt;.&lt;br /&gt;
Comment:&lt;br /&gt;
 On Debian systems, the full text of the GNU Lesser General Public License&lt;br /&gt;
 can be found in &#039;/usr/share/common-licenses/LGPL-2.1&#039;.&lt;br /&gt;
user@disp4360:~$ &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# I also found an example where the whitespace was a space, not a newline + space&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
user@disp4360:~$ cat /usr/share/doc/apparmor/copyright &lt;br /&gt;
Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/&lt;br /&gt;
Upstream-Name: AppArmor&lt;br /&gt;
Upstream-Contact: apparmor@lists.ubuntu.com&lt;br /&gt;
Source: https://launchpad.net/apparmor&lt;br /&gt;
&lt;br /&gt;
Files: *&lt;br /&gt;
Copyright: 1998-2010 Novell/SuSE/Immunix&lt;br /&gt;
		   2008-2014 Canonical Ltd.&lt;br /&gt;
License: GPL-2+&lt;br /&gt;
&lt;br /&gt;
Files: changehat/pam_apparmor/*&lt;br /&gt;
Copyright: 2006 SUSE Linux Products GmbH, Nuernberg, Germany&lt;br /&gt;
		   2002, 2003, 2004 SuSE GmbH Nuernberg, Germany&lt;br /&gt;
		   2002-2006 Novell/SuSE&lt;br /&gt;
		   2010 Canonical Ltd.&lt;br /&gt;
License: BSD-3-clause or GPL-2+&lt;br /&gt;
&lt;br /&gt;
Files: changehat/mod_apparmor/*&lt;br /&gt;
Copyright: 2004-2006 Novell&lt;br /&gt;
		   2014 Canonical Ltd.&lt;br /&gt;
License: LGPL-2.1+&lt;br /&gt;
&lt;br /&gt;
Files: libraries/libapparmor/* parser/libapparmor_re/*&lt;br /&gt;
Copyright: 1999-2008 Novell&lt;br /&gt;
		   2009-2013 Canonical Ltd.&lt;br /&gt;
License: LGPL-2.1+&lt;br /&gt;
&lt;br /&gt;
Files: profiles/apparmor.d/abstractions/mysql&lt;br /&gt;
Copyright: 2002-2006 Novell/SUSE&lt;br /&gt;
		   2013 Christian Boltz&lt;br /&gt;
License: GPL-2&lt;br /&gt;
&lt;br /&gt;
Files: profiles/apparmor.d/usr.sbin.dnsmasq&lt;br /&gt;
Copyright: 2009 John Dong &amp;lt;jdong@ubuntu.com&amp;gt;&lt;br /&gt;
		   2010 Canonical Ltd.&lt;br /&gt;
License: GPL-2&lt;br /&gt;
&lt;br /&gt;
Files: profiles/apparmor.d/sbin.syslog-ng&lt;br /&gt;
Copyright: 2006-2009 Novell/SUSE&lt;br /&gt;
		   2006 Christian Boltz&lt;br /&gt;
		   2010 Canonical Ltd.&lt;br /&gt;
License: GPL-2&lt;br /&gt;
&lt;br /&gt;
Files: profiles/apparmor.d/usr.lib.dovecot.*&lt;br /&gt;
Copyright: 2013 Christian Boltz&lt;br /&gt;
License: GPL-2&lt;br /&gt;
&lt;br /&gt;
Files: profiles/apparmor.d/usr.lib.dovecot.auth&lt;br /&gt;
Copyright: 2013 Christian Boltz&lt;br /&gt;
		   2014 Christian Wittmer&lt;br /&gt;
License: GPL-2&lt;br /&gt;
&lt;br /&gt;
Files: profiles/apparmor.d/usr.lib.dovecot.deliver&lt;br /&gt;
Copyright: 2009 Dulmandakh Sukhbaatar &amp;lt;dulmandakh@gmail.com&amp;gt;&lt;br /&gt;
		   2009-2014 Canonical Ltd.&lt;br /&gt;
		   2011-2013 Christian Boltz&lt;br /&gt;
License: GPL-2&lt;br /&gt;
&lt;br /&gt;
Files: profiles/apparmor.d/usr.lib.dovecot.dovecot-auth&lt;br /&gt;
Copyright: 2009-2013 Canonical Ltd.&lt;br /&gt;
		   2013 Christian Boltz&lt;br /&gt;
License: GPL-2&lt;br /&gt;
&lt;br /&gt;
Files: profiles/apparmor.d/usr.lib.dovecot.imap profiles/apparmor.d/usr.lib.dovecot.pop3&lt;br /&gt;
Copyright: 2009-2010 Canonical Ltd.&lt;br /&gt;
		   2011-2013 Christian Boltz&lt;br /&gt;
License: GPL-2&lt;br /&gt;
&lt;br /&gt;
Files: profiles/apparmor.d/usr.lib.dovecot.imap-login profiles/apparmor.d/usr.lib.dovecot.pop3-login&lt;br /&gt;
Copyright: 2009-2011 Canonical Ltd.&lt;br /&gt;
		   2013 Christian Boltz&lt;br /&gt;
License: GPL-2&lt;br /&gt;
&lt;br /&gt;
Files: profiles/apparmor.d/usr.lib.dovecot.managesieve&lt;br /&gt;
Copyright: 2013 Christian Boltz&lt;br /&gt;
		   2014 Christian Wittmer&lt;br /&gt;
License: GPL-2&lt;br /&gt;
&lt;br /&gt;
Files: profiles/apparmor.d/usr.lib.dovecot.managesieve-login&lt;br /&gt;
Copyright: 2009 Dulmandakh Sukhbaatar &amp;lt;dulmandakh@gmail.com&amp;gt;&lt;br /&gt;
		   2009-2011 Canonical Ltd.&lt;br /&gt;
		   2013 Christian Boltz&lt;br /&gt;
		   2014 Christian Wittmer&lt;br /&gt;
License: GPL-2&lt;br /&gt;
&lt;br /&gt;
Files: profiles/apparmor/profiles/extras/usr.bin.mlmmj-make-ml.sh&lt;br /&gt;
Copyright: 2002-2005 Novell/SUSE&lt;br /&gt;
License: GPL-2&lt;br /&gt;
&lt;br /&gt;
Files: profiles/apparmor/profiles/extras/usr.bin.passwd&lt;br /&gt;
Copyright: 2006 Volker Kuhlmann&lt;br /&gt;
License: GPL-2&lt;br /&gt;
&lt;br /&gt;
Files: debian/*&lt;br /&gt;
Copyright: 2007-2011 Canonical Ltd.&lt;br /&gt;
		   2014-2022 intrigeri&lt;br /&gt;
License: GPL-2&lt;br /&gt;
&lt;br /&gt;
License: BSD-3-clause&lt;br /&gt;
 Redistribution and use in source and binary forms, with or without&lt;br /&gt;
 modification, are permitted provided that the following conditions&lt;br /&gt;
 are met:&lt;br /&gt;
 .&lt;br /&gt;
 1. Redistributions of source code must retain any existing copyright&lt;br /&gt;
	notice, and this entire permission notice in its entirety,&lt;br /&gt;
	including the disclaimer of warranties.&lt;br /&gt;
 .&lt;br /&gt;
 2. Redistributions in binary form must reproduce all prior and current&lt;br /&gt;
	copyright notices, this list of conditions, and the following&lt;br /&gt;
	disclaimer in the documentation and/or other materials provided&lt;br /&gt;
	with the distribution.&lt;br /&gt;
 .&lt;br /&gt;
 3. The name of any author may not be used to endorse or promote&lt;br /&gt;
	products derived from this software without their specific prior&lt;br /&gt;
	written permission.&lt;br /&gt;
&lt;br /&gt;
License: GPL-2&lt;br /&gt;
 This program is free software; you can redistribute it and/or modify&lt;br /&gt;
 it under the terms of the GNU General Public License as published by&lt;br /&gt;
 the Free Software Foundation; version 2 of the License.&lt;br /&gt;
 .&lt;br /&gt;
 This program is distributed in the hope that it will be useful,&lt;br /&gt;
 but WITHOUT ANY WARRANTY; without even the implied warranty of&lt;br /&gt;
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the&lt;br /&gt;
 GNU General Public License for more details.&lt;br /&gt;
 .&lt;br /&gt;
 You should have received a copy of the GNU General Public License along&lt;br /&gt;
 with this program; if not, write to the Free Software Foundation, Inc.,&lt;br /&gt;
 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.&lt;br /&gt;
 .&lt;br /&gt;
 On Debian systems, the complete text of the GNU General&lt;br /&gt;
 Public License can be found in `/usr/share/common-licenses/GPL-2&#039;.&lt;br /&gt;
&lt;br /&gt;
License: GPL-2+&lt;br /&gt;
 This program is free software; you can redistribute it and/or modify&lt;br /&gt;
 it under the terms of the GNU General Public License as published by&lt;br /&gt;
 the Free Software Foundation; either version 2 of the License, or&lt;br /&gt;
 (at your option) any later version.&lt;br /&gt;
 .&lt;br /&gt;
 This program is distributed in the hope that it will be useful,&lt;br /&gt;
 but WITHOUT ANY WARRANTY; without even the implied warranty of&lt;br /&gt;
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the&lt;br /&gt;
 GNU General Public License for more details.&lt;br /&gt;
 .&lt;br /&gt;
 You should have received a copy of the GNU General Public License along&lt;br /&gt;
 with this program; if not, write to the Free Software Foundation, Inc.,&lt;br /&gt;
 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.&lt;br /&gt;
 .&lt;br /&gt;
 On Debian systems, the complete text of the GNU General&lt;br /&gt;
 Public License can be found in `/usr/share/common-licenses/GPL-2&#039;.&lt;br /&gt;
&lt;br /&gt;
License: LGPL-2.1+&lt;br /&gt;
 This library is free software; you can redistribute it and/or&lt;br /&gt;
 modify it under the terms of the GNU Lesser General Public&lt;br /&gt;
 License as published by the Free Software Foundation; either&lt;br /&gt;
 version 2.1 of the License, or (at your option) any later version.&lt;br /&gt;
 .&lt;br /&gt;
 This library is distributed in the hope that it will be useful,&lt;br /&gt;
 but WITHOUT ANY WARRANTY; without even the implied warranty of&lt;br /&gt;
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU&lt;br /&gt;
 Lesser General Public License for more details.&lt;br /&gt;
 .&lt;br /&gt;
 You should have received a copy of the GNU Lesser General Public&lt;br /&gt;
 License along with this library; if not, write to the Free Software&lt;br /&gt;
 Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA&lt;br /&gt;
 .&lt;br /&gt;
 On Debian systems, the complete text of the GNU General&lt;br /&gt;
 Public License can be found in `/usr/share/common-licenses/LGPL-2.1&#039;.&lt;br /&gt;
user@disp4360:~$ &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
## so we already have a &amp;quot;short version&amp;quot; of the license for GPL and CERN. For example&lt;br /&gt;
### GPL&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 This package is free software; you can redistribute it and/or modify&lt;br /&gt;
 it under the terms of the GNU General Public License as published by&lt;br /&gt;
 the Free Software Foundation; either version 3 of the License, or&lt;br /&gt;
 (at your option) any later version.&lt;br /&gt;
 .&lt;br /&gt;
 This package is distributed in the hope that it will be useful,&lt;br /&gt;
 but WITHOUT ANY WARRANTY; without even the implied warranty of&lt;br /&gt;
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the&lt;br /&gt;
 GNU General Public License for more details.&lt;br /&gt;
 .&lt;br /&gt;
 You should have received a copy of the GNU General Public License&lt;br /&gt;
 along with this program. If not, see &amp;lt;https://www.gnu.org/licenses/&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
### CERN&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
You may redistribute and modify this source and make products using it under the terms of the CERN-OHL-S v2 (https://ohwr.org/cern_ohl_s_v2.txt).&lt;br /&gt;
&lt;br /&gt;
This source is distributed WITHOUT ANY EXPRESS OR IMPLIED WARRANTY, INCLUDING OF MERCHANTABILITY, SATISFACTORY QUALITY AND FITNESS FOR A PARTICULAR PURPOSE. Please see the CERN-OHL-S v2 for applicable conditions.&lt;br /&gt;
&lt;br /&gt;
Source location: foundationdevices.com/passport-electronics&lt;br /&gt;
&lt;br /&gt;
As per CERN-OHL-S v2 section 4, should You produce hardware based on this source, You must where practicable and applicable maintain the Source Location visible (1) on the packaging of the hardware, (2) on the circuit board(s) via silkscreen or copper, (3) in any documentation, and (4) on other products you make using this source.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## I was hoping for some sort of equivalent in CC-BY-SA-4.0, but all of these (which were the only ones I found with BY-SA-4.0) had the full text of the license&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
user@disp4360:/usr/share/doc$ grep -irl BY-SA-4.0 /usr/share/doc/*/copyright&lt;br /&gt;
/usr/share/doc/adwaita-icon-theme/copyright&lt;br /&gt;
/usr/share/doc/containerd/copyright&lt;br /&gt;
/usr/share/doc/gimp/copyright&lt;br /&gt;
/usr/share/doc/gimp-data/copyright&lt;br /&gt;
/usr/share/doc/gir1.2-gtk-3.0/copyright&lt;br /&gt;
/usr/share/doc/gtk-update-icon-cache/copyright&lt;br /&gt;
/usr/share/doc/libadwaita-1-0/copyright&lt;br /&gt;
/usr/share/doc/libgimp2.0/copyright&lt;br /&gt;
/usr/share/doc/libgtk-3-0/copyright&lt;br /&gt;
/usr/share/doc/libgtk-3-bin/copyright&lt;br /&gt;
/usr/share/doc/libgtk-3-common/copyright&lt;br /&gt;
/usr/share/doc/libmd4c0/copyright&lt;br /&gt;
/usr/share/doc/libnftables1/copyright&lt;br /&gt;
/usr/share/doc/libwildmidi2/copyright&lt;br /&gt;
/usr/share/doc/mythes-en-us/copyright&lt;br /&gt;
/usr/share/doc/nftables/copyright&lt;br /&gt;
/usr/share/doc/syncthing/copyright&lt;br /&gt;
user@disp4360:/usr/share/doc$ &lt;br /&gt;
user@disp4360:/usr/share/doc$ cat /usr/share/doc/libadwaita-1-0/copyright&lt;br /&gt;
Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/&lt;br /&gt;
Upstream-Name: libadwaita&lt;br /&gt;
Source: https://gitlab.gnome.org/GNOME/libadwaita&lt;br /&gt;
Files-Excluded: doc/libadwaita-1&lt;br /&gt;
Comment: Let&#039;s build the docs from source&lt;br /&gt;
&lt;br /&gt;
Files: *&lt;br /&gt;
Copyright: 2019, Alexander Mikhaylenko &amp;lt;exalm7659@gmail.com&amp;gt;&lt;br /&gt;
  2018, 2019, Zander Brown &amp;lt;zbrown@gnome.org&amp;gt;&lt;br /&gt;
  2017-2021, Purism SPC&lt;br /&gt;
  2016, Endless Mobile Inc.&lt;br /&gt;
  2013, 2019, Red Hat, Inc.&lt;br /&gt;
  1995-1997, Peter Mattis, Spencer Kimball and Josh MacDonald&lt;br /&gt;
  2021, GNOME Foundation&lt;br /&gt;
  2021, Manuel Genovés&lt;br /&gt;
  2021, Nahuel Gomez Castro&lt;br /&gt;
  2021, Maximiliano Sandoval&lt;br /&gt;
  2011, Intel Corporation&lt;br /&gt;
License: LGPL-2.1+&lt;br /&gt;
&lt;br /&gt;
Files: debian/*&lt;br /&gt;
Copyright: 2021, Guido Günther &amp;lt;agx@sigxcpu.org&amp;gt;&lt;br /&gt;
License: GPL-3+&lt;br /&gt;
&lt;br /&gt;
Files:&lt;br /&gt;
 doc/libadwaita-1/*.html&lt;br /&gt;
 doc/libadwaita-1/main.js&lt;br /&gt;
Copyright:&lt;br /&gt;
 2021, GNOME Foundation&lt;br /&gt;
License: Apache-2.0 or GPL-3+&lt;br /&gt;
&lt;br /&gt;
Files:&lt;br /&gt;
 demo/data/org.gnome.Adwaita1.Demo.metainfo.xml.in.in&lt;br /&gt;
Copyright: none&lt;br /&gt;
License: CC0-1.0&lt;br /&gt;
&lt;br /&gt;
Files:&lt;br /&gt;
 demo/data/org.gnome.Adwaita1.Demo.Source.svg&lt;br /&gt;
Copyright:&lt;br /&gt;
 GNOME Design Team&lt;br /&gt;
License: CC-BY-SA-4.0&lt;br /&gt;
&lt;br /&gt;
License: Apache-2.0&lt;br /&gt;
 SPDX license identifier Apache-2.0.&lt;br /&gt;
 .&lt;br /&gt;
 Licensed under the Apache License, Version 2.0 (the &amp;quot;License&amp;quot;);&lt;br /&gt;
 you may not use this file except in compliance with the License.&lt;br /&gt;
 You may obtain a copy of the License at&lt;br /&gt;
 .&lt;br /&gt;
	  http://www.apache.org/licenses/LICENSE-2.0&lt;br /&gt;
 .&lt;br /&gt;
 Unless required by applicable law or agreed to in writing, software&lt;br /&gt;
 distributed under the License is distributed on an &amp;quot;AS IS&amp;quot; BASIS,&lt;br /&gt;
 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.&lt;br /&gt;
 See the License for the specific language governing permissions and&lt;br /&gt;
 limitations under the License.&lt;br /&gt;
 .&lt;br /&gt;
 On Debian systems, a copy of the Apache License version 2.0&lt;br /&gt;
 can be found in /usr/share/common-licenses/Apache-2.0.&lt;br /&gt;
&lt;br /&gt;
License: CC0-1.0&lt;br /&gt;
 SPDX license identifier CC0-1.0.&lt;br /&gt;
 .&lt;br /&gt;
 On Debian systems, a copy of the Creative Commons Zero license, version 1.0&lt;br /&gt;
 can be found in /usr/share/common-licenses/CC0-1.0.&lt;br /&gt;
&lt;br /&gt;
License: CC-BY-SA-4.0&lt;br /&gt;
 http://creativecommons.org/licenses/by-sa/4.0/&lt;br /&gt;
 .&lt;br /&gt;
 Attribution-ShareAlike 4.0 International&lt;br /&gt;
 .&lt;br /&gt;
 =======================================================================&lt;br /&gt;
 .&lt;br /&gt;
 Creative Commons Corporation (&amp;quot;Creative Commons&amp;quot;) is not a law firm and&lt;br /&gt;
 does not provide legal services or legal advice. Distribution of&lt;br /&gt;
 Creative Commons public licenses does not create a lawyer-client or&lt;br /&gt;
 other relationship. Creative Commons makes its licenses and related&lt;br /&gt;
 information available on an &amp;quot;as-is&amp;quot; basis. Creative Commons gives no&lt;br /&gt;
 warranties regarding its licenses, any material licensed under their&lt;br /&gt;
 terms and conditions, or any related information. Creative Commons&lt;br /&gt;
 disclaims all liability for damages resulting from their use to the&lt;br /&gt;
 fullest extent possible.&lt;br /&gt;
 .&lt;br /&gt;
 Using Creative Commons Public Licenses&lt;br /&gt;
 .&lt;br /&gt;
 Creative Commons public licenses provide a standard set of terms and&lt;br /&gt;
 conditions that creators and other rights holders may use to share&lt;br /&gt;
 original works of authorship and other material subject to copyright&lt;br /&gt;
 and certain other rights specified in the public license below. The&lt;br /&gt;
 following considerations are for informational purposes only, are not&lt;br /&gt;
 exhaustive, and do not form part of our licenses.&lt;br /&gt;
 .&lt;br /&gt;
	  Considerations for licensors: Our public licenses are&lt;br /&gt;
	  intended for use by those authorized to give the public&lt;br /&gt;
	  permission to use material in ways otherwise restricted by&lt;br /&gt;
	  copyright and certain other rights. Our licenses are&lt;br /&gt;
	  irrevocable. Licensors should read and understand the terms&lt;br /&gt;
	  and conditions of the license they choose before applying it.&lt;br /&gt;
	  Licensors should also secure all rights necessary before&lt;br /&gt;
	  applying our licenses so that the public can reuse the&lt;br /&gt;
	  material as expected. Licensors should clearly mark any&lt;br /&gt;
	  material not subject to the license. This includes other CC-&lt;br /&gt;
	  licensed material, or material used under an exception or&lt;br /&gt;
	  limitation to copyright. More considerations for licensors:&lt;br /&gt;
	  wiki.creativecommons.org/Considerations_for_licensors&lt;br /&gt;
 .&lt;br /&gt;
	  Considerations for the public: By using one of our public&lt;br /&gt;
	  licenses, a licensor grants the public permission to use the&lt;br /&gt;
	  licensed material under specified terms and conditions. If&lt;br /&gt;
	  the licensor&#039;s permission is not necessary for any reason--for&lt;br /&gt;
	  example, because of any applicable exception or limitation to&lt;br /&gt;
	  copyright--then that use is not regulated by the license. Our&lt;br /&gt;
	  licenses grant only permissions under copyright and certain&lt;br /&gt;
	  other rights that a licensor has authority to grant. Use of&lt;br /&gt;
	  the licensed material may still be restricted for other&lt;br /&gt;
	  reasons, including because others have copyright or other&lt;br /&gt;
	  rights in the material. A licensor may make special requests,&lt;br /&gt;
	  such as asking that all changes be marked or described.&lt;br /&gt;
	  Although not required by our licenses, you are encouraged to&lt;br /&gt;
	  respect those requests where reasonable. More_considerations&lt;br /&gt;
	  for the public:&lt;br /&gt;
	  wiki.creativecommons.org/Considerations_for_licensees&lt;br /&gt;
 .&lt;br /&gt;
 =======================================================================&lt;br /&gt;
 .&lt;br /&gt;
 Creative Commons Attribution-ShareAlike 4.0 International Public&lt;br /&gt;
 License&lt;br /&gt;
 .&lt;br /&gt;
 By exercising the Licensed Rights (defined below), You accept and agree&lt;br /&gt;
 to be bound by the terms and conditions of this Creative Commons&lt;br /&gt;
 Attribution-ShareAlike 4.0 International Public License (&amp;quot;Public&lt;br /&gt;
 License&amp;quot;). To the extent this Public License may be interpreted as a&lt;br /&gt;
 contract, You are granted the Licensed Rights in consideration of Your&lt;br /&gt;
 acceptance of these terms and conditions, and the Licensor grants You&lt;br /&gt;
 such rights in consideration of benefits the Licensor receives from&lt;br /&gt;
 making the Licensed Material available under these terms and&lt;br /&gt;
 conditions.&lt;br /&gt;
 .&lt;br /&gt;
 .&lt;br /&gt;
 Section 1 -- Definitions.&lt;br /&gt;
 .&lt;br /&gt;
   a. Adapted Material means material subject to Copyright and Similar&lt;br /&gt;
	  Rights that is derived from or based upon the Licensed Material&lt;br /&gt;
	  and in which the Licensed Material is translated, altered,&lt;br /&gt;
	  arranged, transformed, or otherwise modified in a manner requiring&lt;br /&gt;
	  permission under the Copyright and Similar Rights held by the&lt;br /&gt;
	  Licensor. For purposes of this Public License, where the Licensed&lt;br /&gt;
	  Material is a musical work, performance, or sound recording,&lt;br /&gt;
	  Adapted Material is always produced where the Licensed Material is&lt;br /&gt;
	  synched in timed relation with a moving image.&lt;br /&gt;
 .&lt;br /&gt;
   b. Adapter&#039;s License means the license You apply to Your Copyright&lt;br /&gt;
	  and Similar Rights in Your contributions to Adapted Material in&lt;br /&gt;
	  accordance with the terms and conditions of this Public License.&lt;br /&gt;
 .&lt;br /&gt;
   c. BY-SA Compatible License means a license listed at&lt;br /&gt;
	  creativecommons.org/compatiblelicenses, approved by Creative&lt;br /&gt;
	  Commons as essentially the equivalent of this Public License.&lt;br /&gt;
 .&lt;br /&gt;
   d. Copyright and Similar Rights means copyright and/or similar rights&lt;br /&gt;
	  closely related to copyright including, without limitation,&lt;br /&gt;
	  performance, broadcast, sound recording, and Sui Generis Database&lt;br /&gt;
	  Rights, without regard to how the rights are labeled or&lt;br /&gt;
	  categorized. For purposes of this Public License, the rights&lt;br /&gt;
	  specified in Section 2(b)(1)-(2) are not Copyright and Similar&lt;br /&gt;
	  Rights.&lt;br /&gt;
 .&lt;br /&gt;
   e. Effective Technological Measures means those measures that, in the&lt;br /&gt;
	  absence of proper authority, may not be circumvented under laws&lt;br /&gt;
	  fulfilling obligations under Article 11 of the WIPO Copyright&lt;br /&gt;
	  Treaty adopted on December 20, 1996, and/or similar international&lt;br /&gt;
	  agreements.&lt;br /&gt;
 .&lt;br /&gt;
   f. Exceptions and Limitations means fair use, fair dealing, and/or&lt;br /&gt;
	  any other exception or limitation to Copyright and Similar Rights&lt;br /&gt;
	  that applies to Your use of the Licensed Material.&lt;br /&gt;
 .&lt;br /&gt;
   g. License Elements means the license attributes listed in the name&lt;br /&gt;
	  of a Creative Commons Public License. The License Elements of this&lt;br /&gt;
	  Public License are Attribution and ShareAlike.&lt;br /&gt;
 .&lt;br /&gt;
   h. Licensed Material means the artistic or literary work, database,&lt;br /&gt;
	  or other material to which the Licensor applied this Public&lt;br /&gt;
	  License.&lt;br /&gt;
 .&lt;br /&gt;
   i. Licensed Rights means the rights granted to You subject to the&lt;br /&gt;
	  terms and conditions of this Public License, which are limited to&lt;br /&gt;
	  all Copyright and Similar Rights that apply to Your use of the&lt;br /&gt;
	  Licensed Material and that the Licensor has authority to license.&lt;br /&gt;
 .&lt;br /&gt;
   j. Licensor means the individual(s) or entity(ies) granting rights&lt;br /&gt;
	  under this Public License.&lt;br /&gt;
 .&lt;br /&gt;
   k. Share means to provide material to the public by any means or&lt;br /&gt;
	  process that requires permission under the Licensed Rights, such&lt;br /&gt;
	  as reproduction, public display, public performance, distribution,&lt;br /&gt;
	  dissemination, communication, or importation, and to make material&lt;br /&gt;
	  available to the public including in ways that members of the&lt;br /&gt;
	  public may access the material from a place and at a time&lt;br /&gt;
	  individually chosen by them.&lt;br /&gt;
 .&lt;br /&gt;
   l. Sui Generis Database Rights means rights other than copyright&lt;br /&gt;
	  resulting from Directive 96/9/EC of the European Parliament and of&lt;br /&gt;
	  the Council of 11 March 1996 on the legal protection of databases,&lt;br /&gt;
	  as amended and/or succeeded, as well as other essentially&lt;br /&gt;
	  equivalent rights anywhere in the world.&lt;br /&gt;
 .&lt;br /&gt;
   m. You means the individual or entity exercising the Licensed Rights&lt;br /&gt;
	  under this Public License. Your has a corresponding meaning.&lt;br /&gt;
 .&lt;br /&gt;
 .&lt;br /&gt;
 Section 2 -- Scope.&lt;br /&gt;
 .&lt;br /&gt;
   a. License grant.&lt;br /&gt;
 .&lt;br /&gt;
		1. Subject to the terms and conditions of this Public License,&lt;br /&gt;
		   the Licensor hereby grants You a worldwide, royalty-free,&lt;br /&gt;
		   non-sublicensable, non-exclusive, irrevocable license to&lt;br /&gt;
		   exercise the Licensed Rights in the Licensed Material to:&lt;br /&gt;
 .&lt;br /&gt;
			 a. reproduce and Share the Licensed Material, in whole or&lt;br /&gt;
				in part; and&lt;br /&gt;
 .&lt;br /&gt;
			 b. produce, reproduce, and Share Adapted Material.&lt;br /&gt;
 .&lt;br /&gt;
		2. Exceptions and Limitations. For the avoidance of doubt, where&lt;br /&gt;
		   Exceptions and Limitations apply to Your use, this Public&lt;br /&gt;
		   License does not apply, and You do not need to comply with&lt;br /&gt;
		   its terms and conditions.&lt;br /&gt;
 .&lt;br /&gt;
		3. Term. The term of this Public License is specified in Section&lt;br /&gt;
		   6(a).&lt;br /&gt;
 .&lt;br /&gt;
		4. Media and formats; technical modifications allowed. The&lt;br /&gt;
		   Licensor authorizes You to exercise the Licensed Rights in&lt;br /&gt;
		   all media and formats whether now known or hereafter created,&lt;br /&gt;
		   and to make technical modifications necessary to do so. The&lt;br /&gt;
		   Licensor waives and/or agrees not to assert any right or&lt;br /&gt;
		   authority to forbid You from making technical modifications&lt;br /&gt;
		   necessary to exercise the Licensed Rights, including&lt;br /&gt;
		   technical modifications necessary to circumvent Effective&lt;br /&gt;
		   Technological Measures. For purposes of this Public License,&lt;br /&gt;
		   simply making modifications authorized by this Section 2(a)&lt;br /&gt;
		   (4) never produces Adapted Material.&lt;br /&gt;
 .&lt;br /&gt;
		5. Downstream recipients.&lt;br /&gt;
 .&lt;br /&gt;
			 a. Offer from the Licensor -- Licensed Material. Every&lt;br /&gt;
				recipient of the Licensed Material automatically&lt;br /&gt;
				receives an offer from the Licensor to exercise the&lt;br /&gt;
				Licensed Rights under the terms and conditions of this&lt;br /&gt;
				Public License.&lt;br /&gt;
 .&lt;br /&gt;
			 b. Additional offer from the Licensor -- Adapted Material.&lt;br /&gt;
				Every recipient of Adapted Material from You&lt;br /&gt;
				automatically receives an offer from the Licensor to&lt;br /&gt;
				exercise the Licensed Rights in the Adapted Material&lt;br /&gt;
				under the conditions of the Adapter&#039;s License You apply.&lt;br /&gt;
 .&lt;br /&gt;
			 c. No downstream restrictions. You may not offer or impose&lt;br /&gt;
				any additional or different terms or conditions on, or&lt;br /&gt;
				apply any Effective Technological Measures to, the&lt;br /&gt;
				Licensed Material if doing so restricts exercise of the&lt;br /&gt;
				Licensed Rights by any recipient of the Licensed&lt;br /&gt;
				Material.&lt;br /&gt;
 .&lt;br /&gt;
		6. No endorsement. Nothing in this Public License constitutes or&lt;br /&gt;
		   may be construed as permission to assert or imply that You&lt;br /&gt;
		   are, or that Your use of the Licensed Material is, connected&lt;br /&gt;
		   with, or sponsored, endorsed, or granted official status by,&lt;br /&gt;
		   the Licensor or others designated to receive attribution as&lt;br /&gt;
		   provided in Section 3(a)(1)(A)(i).&lt;br /&gt;
 .&lt;br /&gt;
   b. Other rights.&lt;br /&gt;
 .&lt;br /&gt;
		1. Moral rights, such as the right of integrity, are not&lt;br /&gt;
		   licensed under this Public License, nor are publicity,&lt;br /&gt;
		   privacy, and/or other similar personality rights; however, to&lt;br /&gt;
		   the extent possible, the Licensor waives and/or agrees not to&lt;br /&gt;
		   assert any such rights held by the Licensor to the limited&lt;br /&gt;
		   extent necessary to allow You to exercise the Licensed&lt;br /&gt;
		   Rights, but not otherwise.&lt;br /&gt;
 .&lt;br /&gt;
		2. Patent and trademark rights are not licensed under this&lt;br /&gt;
		   Public License.&lt;br /&gt;
 .&lt;br /&gt;
		3. To the extent possible, the Licensor waives any right to&lt;br /&gt;
		   collect royalties from You for the exercise of the Licensed&lt;br /&gt;
		   Rights, whether directly or through a collecting society&lt;br /&gt;
		   under any voluntary or waivable statutory or compulsory&lt;br /&gt;
		   licensing scheme. In all other cases the Licensor expressly&lt;br /&gt;
		   reserves any right to collect such royalties.&lt;br /&gt;
 .&lt;br /&gt;
 .&lt;br /&gt;
 Section 3 -- License Conditions.&lt;br /&gt;
 .&lt;br /&gt;
 Your exercise of the Licensed Rights is expressly made subject to the&lt;br /&gt;
 following conditions.&lt;br /&gt;
 .&lt;br /&gt;
   a. Attribution.&lt;br /&gt;
 .&lt;br /&gt;
		1. If You Share the Licensed Material (including in modified&lt;br /&gt;
		   form), You must:&lt;br /&gt;
 .&lt;br /&gt;
			 a. retain the following if it is supplied by the Licensor&lt;br /&gt;
				with the Licensed Material:&lt;br /&gt;
 .&lt;br /&gt;
				  i. identification of the creator(s) of the Licensed&lt;br /&gt;
					 Material and any others designated to receive&lt;br /&gt;
					 attribution, in any reasonable manner requested by&lt;br /&gt;
					 the Licensor (including by pseudonym if&lt;br /&gt;
					 designated);&lt;br /&gt;
 .&lt;br /&gt;
				 ii. a copyright notice;&lt;br /&gt;
 .&lt;br /&gt;
				iii. a notice that refers to this Public License;&lt;br /&gt;
 .&lt;br /&gt;
				 iv. a notice that refers to the disclaimer of&lt;br /&gt;
					 warranties;&lt;br /&gt;
 .&lt;br /&gt;
				  v. a URI or hyperlink to the Licensed Material to the&lt;br /&gt;
					 extent reasonably practicable;&lt;br /&gt;
 .&lt;br /&gt;
			 b. indicate if You modified the Licensed Material and&lt;br /&gt;
				retain an indication of any previous modifications; and&lt;br /&gt;
 .&lt;br /&gt;
			 c. indicate the Licensed Material is licensed under this&lt;br /&gt;
				Public License, and include the text of, or the URI or&lt;br /&gt;
				hyperlink to, this Public License.&lt;br /&gt;
 .&lt;br /&gt;
		2. You may satisfy the conditions in Section 3(a)(1) in any&lt;br /&gt;
		   reasonable manner based on the medium, means, and context in&lt;br /&gt;
		   which You Share the Licensed Material. For example, it may be&lt;br /&gt;
		   reasonable to satisfy the conditions by providing a URI or&lt;br /&gt;
		   hyperlink to a resource that includes the required&lt;br /&gt;
		   information.&lt;br /&gt;
 .&lt;br /&gt;
		3. If requested by the Licensor, You must remove any of the&lt;br /&gt;
		   information required by Section 3(a)(1)(A) to the extent&lt;br /&gt;
		   reasonably practicable.&lt;br /&gt;
 .&lt;br /&gt;
   b. ShareAlike.&lt;br /&gt;
 .&lt;br /&gt;
	  In addition to the conditions in Section 3(a), if You Share&lt;br /&gt;
	  Adapted Material You produce, the following conditions also apply.&lt;br /&gt;
 .&lt;br /&gt;
		1. The Adapter&#039;s License You apply must be a Creative Commons&lt;br /&gt;
		   license with the same License Elements, this version or&lt;br /&gt;
		   later, or a BY-SA Compatible License.&lt;br /&gt;
 .&lt;br /&gt;
		2. You must include the text of, or the URI or hyperlink to, the&lt;br /&gt;
		   Adapter&#039;s License You apply. You may satisfy this condition&lt;br /&gt;
		   in any reasonable manner based on the medium, means, and&lt;br /&gt;
		   context in which You Share Adapted Material.&lt;br /&gt;
 .&lt;br /&gt;
		3. You may not offer or impose any additional or different terms&lt;br /&gt;
		   or conditions on, or apply any Effective Technological&lt;br /&gt;
		   Measures to, Adapted Material that restrict exercise of the&lt;br /&gt;
		   rights granted under the Adapter&#039;s License You apply.&lt;br /&gt;
 .&lt;br /&gt;
 .&lt;br /&gt;
 Section 4 -- Sui Generis Database Rights.&lt;br /&gt;
 .&lt;br /&gt;
 Where the Licensed Rights include Sui Generis Database Rights that&lt;br /&gt;
 apply to Your use of the Licensed Material:&lt;br /&gt;
 .&lt;br /&gt;
   a. for the avoidance of doubt, Section 2(a)(1) grants You the right&lt;br /&gt;
	  to extract, reuse, reproduce, and Share all or a substantial&lt;br /&gt;
	  portion of the contents of the database;&lt;br /&gt;
 .&lt;br /&gt;
   b. if You include all or a substantial portion of the database&lt;br /&gt;
	  contents in a database in which You have Sui Generis Database&lt;br /&gt;
	  Rights, then the database in which You have Sui Generis Database&lt;br /&gt;
	  Rights (but not its individual contents) is Adapted Material,&lt;br /&gt;
 .&lt;br /&gt;
	  including for purposes of Section 3(b); and&lt;br /&gt;
   c. You must comply with the conditions in Section 3(a) if You Share&lt;br /&gt;
	  all or a substantial portion of the contents of the database.&lt;br /&gt;
 .&lt;br /&gt;
 For the avoidance of doubt, this Section 4 supplements and does not&lt;br /&gt;
 replace Your obligations under this Public License where the Licensed&lt;br /&gt;
 Rights include other Copyright and Similar Rights.&lt;br /&gt;
 .&lt;br /&gt;
 .&lt;br /&gt;
 Section 5 -- Disclaimer of Warranties and Limitation of Liability.&lt;br /&gt;
 .&lt;br /&gt;
   a. UNLESS OTHERWISE SEPARATELY UNDERTAKEN BY THE LICENSOR, TO THE&lt;br /&gt;
	  EXTENT POSSIBLE, THE LICENSOR OFFERS THE LICENSED MATERIAL AS-IS&lt;br /&gt;
	  AND AS-AVAILABLE, AND MAKES NO REPRESENTATIONS OR WARRANTIES OF&lt;br /&gt;
	  ANY KIND CONCERNING THE LICENSED MATERIAL, WHETHER EXPRESS,&lt;br /&gt;
	  IMPLIED, STATUTORY, OR OTHER. THIS INCLUDES, WITHOUT LIMITATION,&lt;br /&gt;
	  WARRANTIES OF TITLE, MERCHANTABILITY, FITNESS FOR A PARTICULAR&lt;br /&gt;
	  PURPOSE, NON-INFRINGEMENT, ABSENCE OF LATENT OR OTHER DEFECTS,&lt;br /&gt;
	  ACCURACY, OR THE PRESENCE OR ABSENCE OF ERRORS, WHETHER OR NOT&lt;br /&gt;
	  KNOWN OR DISCOVERABLE. WHERE DISCLAIMERS OF WARRANTIES ARE NOT&lt;br /&gt;
	  ALLOWED IN FULL OR IN PART, THIS DISCLAIMER MAY NOT APPLY TO YOU.&lt;br /&gt;
 .&lt;br /&gt;
   b. TO THE EXTENT POSSIBLE, IN NO EVENT WILL THE LICENSOR BE LIABLE&lt;br /&gt;
	  TO YOU ON ANY LEGAL THEORY (INCLUDING, WITHOUT LIMITATION,&lt;br /&gt;
	  NEGLIGENCE) OR OTHERWISE FOR ANY DIRECT, SPECIAL, INDIRECT,&lt;br /&gt;
	  INCIDENTAL, CONSEQUENTIAL, PUNITIVE, EXEMPLARY, OR OTHER LOSSES,&lt;br /&gt;
	  COSTS, EXPENSES, OR DAMAGES ARISING OUT OF THIS PUBLIC LICENSE OR&lt;br /&gt;
	  USE OF THE LICENSED MATERIAL, EVEN IF THE LICENSOR HAS BEEN&lt;br /&gt;
	  ADVISED OF THE POSSIBILITY OF SUCH LOSSES, COSTS, EXPENSES, OR&lt;br /&gt;
	  DAMAGES. WHERE A LIMITATION OF LIABILITY IS NOT ALLOWED IN FULL OR&lt;br /&gt;
	  IN PART, THIS LIMITATION MAY NOT APPLY TO YOU.&lt;br /&gt;
 .&lt;br /&gt;
   c. The disclaimer of warranties and limitation of liability provided&lt;br /&gt;
	  above shall be interpreted in a manner that, to the extent&lt;br /&gt;
	  possible, most closely approximates an absolute disclaimer and&lt;br /&gt;
	  waiver of all liability.&lt;br /&gt;
 .&lt;br /&gt;
 .&lt;br /&gt;
 Section 6 -- Term and Termination.&lt;br /&gt;
 .&lt;br /&gt;
   a. This Public License applies for the term of the Copyright and&lt;br /&gt;
	  Similar Rights licensed here. However, if You fail to comply with&lt;br /&gt;
	  this Public License, then Your rights under this Public License&lt;br /&gt;
	  terminate automatically.&lt;br /&gt;
 .&lt;br /&gt;
   b. Where Your right to use the Licensed Material has terminated under&lt;br /&gt;
	  Section 6(a), it reinstates:&lt;br /&gt;
 .&lt;br /&gt;
		1. automatically as of the date the violation is cured, provided&lt;br /&gt;
		   it is cured within 30 days of Your discovery of the&lt;br /&gt;
		   violation; or&lt;br /&gt;
 .&lt;br /&gt;
		2. upon express reinstatement by the Licensor.&lt;br /&gt;
 .&lt;br /&gt;
	  For the avoidance of doubt, this Section 6(b) does not affect any&lt;br /&gt;
	  right the Licensor may have to seek remedies for Your violations&lt;br /&gt;
	  of this Public License.&lt;br /&gt;
 .&lt;br /&gt;
   c. For the avoidance of doubt, the Licensor may also offer the&lt;br /&gt;
	  Licensed Material under separate terms or conditions or stop&lt;br /&gt;
	  distributing the Licensed Material at any time; however, doing so&lt;br /&gt;
	  will not terminate this Public License.&lt;br /&gt;
 .&lt;br /&gt;
   d. Sections 1, 5, 6, 7, and 8 survive termination of this Public&lt;br /&gt;
	  License.&lt;br /&gt;
 .&lt;br /&gt;
 .&lt;br /&gt;
 Section 7 -- Other Terms and Conditions.&lt;br /&gt;
 .&lt;br /&gt;
   a. The Licensor shall not be bound by any additional or different&lt;br /&gt;
	  terms or conditions communicated by You unless expressly agreed.&lt;br /&gt;
 .&lt;br /&gt;
   b. Any arrangements, understandings, or agreements regarding the&lt;br /&gt;
	  Licensed Material not stated herein are separate from and&lt;br /&gt;
	  independent of the terms and conditions of this Public License.&lt;br /&gt;
 .&lt;br /&gt;
 .&lt;br /&gt;
 Section 8 -- Interpretation.&lt;br /&gt;
 .&lt;br /&gt;
   a. For the avoidance of doubt, this Public License does not, and&lt;br /&gt;
	  shall not be interpreted to, reduce, limit, restrict, or impose&lt;br /&gt;
	  conditions on any use of the Licensed Material that could lawfully&lt;br /&gt;
	  be made without permission under this Public License.&lt;br /&gt;
 .&lt;br /&gt;
   b. To the extent possible, if any provision of this Public License is&lt;br /&gt;
	  deemed unenforceable, it shall be automatically reformed to the&lt;br /&gt;
	  minimum extent necessary to make it enforceable. If the provision&lt;br /&gt;
	  cannot be reformed, it shall be severed from this Public License&lt;br /&gt;
	  without affecting the enforceability of the remaining terms and&lt;br /&gt;
	  conditions.&lt;br /&gt;
 .&lt;br /&gt;
   c. No term or condition of this Public License will be waived and no&lt;br /&gt;
	  failure to comply consented to unless expressly agreed to by the&lt;br /&gt;
	  Licensor.&lt;br /&gt;
 .&lt;br /&gt;
   d. Nothing in this Public License constitutes or may be interpreted&lt;br /&gt;
	  as a limitation upon, or waiver of, any privileges and immunities&lt;br /&gt;
	  that apply to the Licensor or You, including from the legal&lt;br /&gt;
	  processes of any jurisdiction or authority.&lt;br /&gt;
 .&lt;br /&gt;
 .&lt;br /&gt;
 =======================================================================&lt;br /&gt;
 .&lt;br /&gt;
 Creative Commons is not a party to its public&lt;br /&gt;
 licenses. Notwithstanding, Creative Commons may elect to apply one of&lt;br /&gt;
 its public licenses to material it publishes and in those instances&lt;br /&gt;
 will be considered the “Licensor.” The text of the Creative Commons&lt;br /&gt;
 public licenses is dedicated to the public domain under the CC0 Public&lt;br /&gt;
 Domain Dedication. Except for the limited purpose of indicating that&lt;br /&gt;
 material is shared under a Creative Commons public license or as&lt;br /&gt;
 otherwise permitted by the Creative Commons policies published at&lt;br /&gt;
 creativecommons.org/policies, Creative Commons does not authorize the&lt;br /&gt;
 use of the trademark &amp;quot;Creative Commons&amp;quot; or any other trademark or logo&lt;br /&gt;
 of Creative Commons without its prior written consent including,&lt;br /&gt;
 without limitation, in connection with any unauthorized modifications&lt;br /&gt;
 to any of its public licenses or any other arrangements,&lt;br /&gt;
 understandings, or agreements concerning use of licensed material. For&lt;br /&gt;
 the avoidance of doubt, this paragraph does not form part of the&lt;br /&gt;
 public licenses.&lt;br /&gt;
 .&lt;br /&gt;
 Creative Commons may be contacted at creativecommons.org.&lt;br /&gt;
&lt;br /&gt;
License: GPL-3+&lt;br /&gt;
 This package is free software; you can redistribute it and/or modify&lt;br /&gt;
 it under the terms of the GNU General Public License as published by&lt;br /&gt;
 the Free Software Foundation; either version 3 of the License, or&lt;br /&gt;
 (at your option) any later version.&lt;br /&gt;
 .&lt;br /&gt;
 This package is distributed in the hope that it will be useful,&lt;br /&gt;
 but WITHOUT ANY WARRANTY; without even the implied warranty of&lt;br /&gt;
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the&lt;br /&gt;
 GNU General Public License for more details.&lt;br /&gt;
 .&lt;br /&gt;
 You should have received a copy of the GNU General Public License&lt;br /&gt;
 along with this program. If not, see &amp;lt;https://www.gnu.org/licenses/&amp;gt;&lt;br /&gt;
 .&lt;br /&gt;
 On Debian systems, the complete text of the GNU General&lt;br /&gt;
 Public License version 3 can be found in &amp;quot;/usr/share/common-licenses/GPL-3&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
License: LGPL-2.1+&lt;br /&gt;
 This library is free software; you can redistribute it and/or&lt;br /&gt;
 modify it under the terms of the GNU Lesser General Public&lt;br /&gt;
 License as published by the Free Software Foundation; either&lt;br /&gt;
 version 2.1 of the License, or (at your option) any later version.&lt;br /&gt;
 .&lt;br /&gt;
 This library is distributed in the hope that it will be useful,&lt;br /&gt;
 but WITHOUT ANY WARRANTY; without even the implied warranty of&lt;br /&gt;
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU&lt;br /&gt;
 Lesser General Public License for more details.&lt;br /&gt;
 .&lt;br /&gt;
 You should have received a copy of the GNU Lesser General Public License&lt;br /&gt;
 along with this library. If not, see &amp;lt;https://www.gnu.org/licenses/&amp;gt;&lt;br /&gt;
 .&lt;br /&gt;
 On Debian systems, the complete text of the GNU Lesser General&lt;br /&gt;
 Public License version 3 can be found in &amp;quot;/usr/share/common-licenses/LGPL-2.1&amp;quot;.&lt;br /&gt;
user@disp4360:/usr/share/doc$ &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## that&#039;s a big annoying, but I guess we can live with it&lt;br /&gt;
## they also apparently put a dot (.) on every double-newline in a single indented stanza. I guess that&#039;s to not break the syntax of &amp;quot;two newlines becomes a new stanaza&amp;quot;. So I&#039;ll adopt that for the CERN License snippet.&lt;br /&gt;
## I grepd all the &amp;quot;Files&amp;quot; lines in all the systems, and generated a reasonably complete list of all programming language source files&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Files:&lt;br /&gt;
 *.c *.cpp *.h *.hpp&lt;br /&gt;
 *.py *.pl *.go&lt;br /&gt;
 *.dtd&lt;br /&gt;
 *.html *.css *.js *.xml&lt;br /&gt;
Copyright:&lt;br /&gt;
 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
License: AGPL-3.0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## .dtd came up a few times. something related to gis, I think. I added a few more gis formats&lt;br /&gt;
## per https://docs.qgis.org/3.44/en/docs/user_manual/managing_data_source/supported_data.html&lt;br /&gt;
## and https://gis.stackexchange.com/questions/392708/list-of-data-file-formats-supported-in-qgis-including-read-write-support&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Files:&lt;br /&gt;
 *.c *.cpp *.h *.hpp&lt;br /&gt;
 *.py *.pl *.go&lt;br /&gt;
 *.qix *.dtd *.shp *.shz *.dbf *.shx *.prj *.kml&lt;br /&gt;
 *.html *.css *.js *.xml&lt;br /&gt;
Copyright:&lt;br /&gt;
 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
License: AGPL-3.0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## Another thing I can do is to check some syntax highlighers, which have some logic to auto-detect code syntax based on filename. That would be a great list of code-specific filenames&lt;br /&gt;
### here&#039;s the one we use as a wordpress plugin for eco-libre.org https://wordpress.org/plugins/syntaxhighlighter/&lt;br /&gt;
### code is here https://github.com/Automattic/syntaxhighlighter&lt;br /&gt;
### here&#039;s the block where they map languages to file extensions https://github.com/Automattic/syntaxhighlighter/blob/61fd26c64d019641db143e90e05b0eb9a4a57d62/syntaxhighlighter.php#L181-L246&lt;br /&gt;
### oh crap, those are aliases, not file extensions. maybe I should check something like notepad++ or vim&lt;br /&gt;
### we can get 694 file types from vim with this crazy command https://vi.stackexchange.com/a/14980&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
user@disp4360:/usr/share/vim/vim90$ find syntax ftplugin -iname &#039;*.vim&#039; -exec basename -s .vim {} + | sort -u | wc -l&lt;br /&gt;
694&lt;br /&gt;
user@disp4360:/usr/share/vim/vim90$ &lt;br /&gt;
&lt;br /&gt;
user@disp4360:/usr/share/vim/vim90$ find syntax ftplugin -iname &#039;*.vim&#039; -exec basename -s .vim {} + | sort -u | xargs&lt;br /&gt;
2html 8th a2ps a65 aap abap abaqus abc abel acedb ada aflex ahdl aidl alsaconf amiga aml ampl ant antlr apache apachestyle aptconf arch arduino art asciidoc asm asm68k asmh8300 asn aspperl aspvbs asterisk asteriskvm atlas autodoc autohotkey autoit automake ave avra awk ayacc b baan bash basic bc bdf bib bindzone bitbake blank bsdl bst btm bzl bzr c cabal cabalconfig cabalproject calendar catalog cdl cdrdaoconf cdrtoc cf cfg ch chaiscript change changelog chaskell chatito cheetah chicken chill chordpro cl clean clipper clojure cmake cmod cmusrc cobol coco colortest conaryrecipe conf config confini context context-data-context context-data-interfaces context-data-metafun context-data-tex cpp crm crontab cs csc csdl csh csp css cterm ctrlh cucumber cuda cupl cuplsim cvs cvsrc cweb cynlib cynpp d dart datascript dcd dcl debchangelog debcontrol debcopyright debsources def denyhosts dep3patch desc desktop dictconf dictdconf diff dircolors dirpager diva django dns dnsmasq docbk docbksgml docbkxml dockerfile dosbatch dosini dot doxygen dracula dsl dtd dtml dtrace dts dune dylan dylanintr dylanlid ecd edif editorconfig eiffel elf elinks elixir elm elmfilt erlang eruby esmtprc esqlc esterel eterm euphoria3 euphoria4 eviews exim expect exports falcon fan fasm fdcc fennel fetchmail fgl fish flexwiki focexec form forth fortran foxpro fpcmake framescript freebasic fstab fvwm fvwm2m4 gdb gdmo gdresource gdscript gdshader gedcom gemtext gift git gitattributes gitcommit gitconfig gitignore gitolite gitrebase gitsendemail gkrellmrc gnash gnuplot go godoc gp gpg gprof grads gretl groff groovy group grub gsp gtkrc gvpr gyp haml hamster hare haskell haste hastepreproc hb heex help help_ru hercules hex hgcommit hgcommitDiff hitest hlsplaylist hog hollywood hostconf hostsaccess html htmlcheetah htmldjango htmlm4 htmlos i3config ia64 ibasic icemenu icon idl idlang indent inform initex initng inittab ipfilter ishd iss ist j jal jam jargon java javacc javascript javascriptreact jess jgraph jovial jproperties json jsonc jsonnet jsp julia kconfig kivy kix krl kscript kwt lace latte lc ld ldapconf ldif less lex lftp lhaskell libao lifelines lilo limits liquid lisp lite litestep logcheck loginaccess logindefs logtalk lotos lout lpc lprolog lscript lsl lss lua lynx lyrics m3build m3quake m4 mail mailaliases mailcap make mallard man manconf manual maple markdown masm mason master matlab maxima mel mermaid meson messages mf mgl mgp mib mix mma mmix mmp modconf model modsim3 modula2 modula3 monk moo mp mplayerconf mrxvtrc msidl msmessages msql mupad murphi mush muttrc mysql n1ql named nanorc nasm nastran natural ncf neomuttrc netrc netrw nginx ninja nix nosyntax nqc nroff nsis obj objc objcpp obse ocaml occam octave omnimark opam openroad openscad openvpn opl ora pamconf pamenv papp pascal passwd pbtxt pcap pccts pdf perl pf pfmain php phtml pic pike pilrc pine pinfo plaintex pli plm plp plsql po pod poefilter poke postscr pov povini ppd ppwiz prescribe privoxy procmail progress prolog promela proto protocols ps1 ps1xml psf psl ptcap purifylog pyrex python python2 qb64 qf quake quarto r racc racket radiance raku raml ratpoison rc rcs rcslog readline rebol redif registry rego remind resolv reva rexx rhelp rib rmd rnc rng rnoweb robots routeros rpcgen rpl rrst rst rtf ruby rust samba sas sass sather sbt scala scdoc scheme scilab screen scss sd sdc sdl sed sendpr sensors services setserial sexplib sgml sgmldecl sgmllnx sh sicad sieve sil simula sinda sindacmp sindaout sisu skill sl slang slice slpconf slpreg slpspi slrnrc slrnsc sm smarty smcl smil smith sml snnsnet snnspat snnsres snobol4 solidity solution spec specman spice splint spup spyce sql sqlanywhere sqlforms sqlhana sqlinformix sqlj sqloracle sqr squid squirrel srec srt ssa sshconfig sshdconfig st stata stp strace structurizr sudoers svg svn swayconfig swift swiftgyb syncolor synload syntax sysctl systemd systemverilog tads tags tak takcmp takout tap tar taskdata taskedit tasm tcl tcsh template teraterm terminfo tex texinfo texmf text tf tidy tilde tli tmux toml tpp trasys treetop trustees tsalt tsscl tssgm tssop tt2 tt2html tt2js typescript typescriptcommon typescriptreact uc udevconf udevperm udevrules uil updatedb upstart upstreamdat upstreaminstalllog upstreamlog upstreamrpt usserverlog usw2kagtlog valgrind vb vdf vera verilog verilogams vgrindefs vhdl vim viminfo virata vmasm voscm vrml vroom vsejcl vue wast wdiff wdl web webmacro wget wget2 whitespace winbatch wml wsh wsml wvdial xbl xdefaults xf86conf xhtml xinetd xkb xmath xml xmodmap xpm xpm2 xquery xs xsd xslt xxd yacc yaml z8a zig zimbu zir zsh&lt;br /&gt;
user@disp4360:/usr/share/vim/vim90$ &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
### so I definitely don&#039;t want all of those. for example, .po files are not code.&lt;br /&gt;
## I decided to remove html and css from the list, as those are markup and not code. but js should remain.&lt;br /&gt;
## I reduced the vim list to the following&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
user@disp4360:~$ cat filetypes1.txt &lt;br /&gt;
autohotkey&lt;br /&gt;
automake&lt;br /&gt;
awk&lt;br /&gt;
bash&lt;br /&gt;
basic&lt;br /&gt;
cmake&lt;br /&gt;
cuda&lt;br /&gt;
d&lt;br /&gt;
erlang&lt;br /&gt;
eruby&lt;br /&gt;
haskell&lt;br /&gt;
j&lt;br /&gt;
java&lt;br /&gt;
javacc&lt;br /&gt;
javascript&lt;br /&gt;
javascriptreact&lt;br /&gt;
kivy&lt;br /&gt;
lisp&lt;br /&gt;
lua&lt;br /&gt;
make&lt;br /&gt;
perl&lt;br /&gt;
r&lt;br /&gt;
ruby&lt;br /&gt;
rust&lt;br /&gt;
sh&lt;br /&gt;
swift&lt;br /&gt;
tcl&lt;br /&gt;
typescript&lt;br /&gt;
vb&lt;br /&gt;
zsh&lt;br /&gt;
user@disp4360:~$ &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## fun fact, autohotkey was the first &amp;quot;language&amp;quot; I learned – which I used to script my windows computer to feed my fish and collect their pooped-out gold in some video game, wayy back when I was  kid &amp;amp; before I used Linux. It&#039;s a cool way to automate GUI macros on Windows (which is otherwise a PIA to automate, by (terrible) design.&lt;br /&gt;
## I merged this into our copyright file.  I also added asp.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Files:&lt;br /&gt;
 *.c *.cpp *.h *.hpp *.make *.automake *.cmake&lt;br /&gt;
 *.java *.javacc *.rust&lt;br /&gt;
 *.d *.j *.r&lt;br /&gt;
 *.sh *.bash *.zsh *.awk *.tcl&lt;br /&gt;
 *.py *.python *.python2 *.python3 *.pl *.perl *.kivy&lt;br /&gt;
 *.qix *.dtd *.shp *.shz *.dbf *.shx *.prj *.kml&lt;br /&gt;
 *.php *.js *.javascript *.typescript&lt;br /&gt;
 *.ruby *.eruby *.cuda *.erlang *.lisp *.lua *.haskell *.go&lt;br /&gt;
 *.autohotkey *.basic *.swift *.vb *.asp&lt;br /&gt;
Copyright:&lt;br /&gt;
 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
License: AGPL-3.0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## let&#039;s also add exceptions for the CERN-licensed files&lt;br /&gt;
## I hope we never use tools like AutoCAD, but it&#039;s likely that someone will design something in AutoCAD and copyleft it. Then we&#039;ll be able to use that in one of our projects, but where we redesign it in FreeCAD. In that case, we still might want to include the source AutoCAD DXF file in our repo, and license it properly (though, if that happens, we&#039;d probably need to update the copyright file to whatever license they use; unless they happen to use the same CERN strong license as us)&lt;br /&gt;
## I added scad. And .vue was one from vim.&lt;br /&gt;
## bibliocad lists wg, bim, skp, max, and 3ds https://www.bibliocad.com/&lt;br /&gt;
## I logged into the OSE wiki and checked all of the files that have been uploaded, and I added a few more: 3dm, fcmacro, ino, fzz, gto, blend, kicad_pcb, sh3d, pod, brd, sch, abp, dwb, cc, skb, sldrw, sldasm, pde&lt;br /&gt;
## note that I&#039;ve *not* put stp, gcode, stl, igs, wrl, wrz, etc files as CERN licensed (so they&#039;d be CC). I&#039;m not sure if that&#039;s the right thing or not.&lt;br /&gt;
### also dia, gan, mpp, mm, svg, jpg, png, jpeg, tiff, bmp, ai, idml, psd, mp4, mp3, webm, wav, kdenlive, xcf, doc, docx, ppt, pptx, xls, odt, ods, odg, numbers, tex, zip, rar, 7z, tar.gz, torrent, etc..&lt;br /&gt;
### there was also some ini config files. I read you can&#039;t license config files. so those will be CC.&lt;br /&gt;
# ok, here&#039;s what I got&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/&lt;br /&gt;
Source: https://github.com/Eco-Libre/life-line&lt;br /&gt;
Upstream-Name: Eco-Libre Life-Line&lt;br /&gt;
Upstream-Contact: https://eco-libre.org/contact&lt;br /&gt;
&lt;br /&gt;
Files:&lt;br /&gt;
 *&lt;br /&gt;
Copyright:&lt;br /&gt;
 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
License: CC-BY-SA-4.0&lt;br /&gt;
&lt;br /&gt;
Files:&lt;br /&gt;
 *.FCStd *.scad *.fzz *.blend *.kicad_pcb *.sh3d&lt;br /&gt;
 *.vue *.dxf *.dwg *.bim *.skp *.skb *.max *.3ds *.gto *.pod *.brd&lt;br /&gt;
 *.sch *.3dm *.dwb *.slddrw *.sldasm&lt;br /&gt;
Copyright:&lt;br /&gt;
 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
License: CERN-OHL-S-2.0&lt;br /&gt;
&lt;br /&gt;
Files:&lt;br /&gt;
 *.c *.cpp *.h *.hpp *.cc *.ino *.pde *.make *.automake *.cmake&lt;br /&gt;
 *.java *.javacc *.rust&lt;br /&gt;
 *.d *.j *.r&lt;br /&gt;
 *.sh *.bash *.zsh *.awk *.tcl&lt;br /&gt;
 *.py *.python *.python2 *.python3 *.FCMacro *.pl *.perl *.kivy&lt;br /&gt;
 *.qix *.dtd *.shp *.shz *.dbf *.shx *.prj *.kml&lt;br /&gt;
 *.php *.js *.javascript *.typescript&lt;br /&gt;
 *.ruby *.eruby *.cuda *.erlang *.lisp *.lua *.haskell *.go&lt;br /&gt;
 *.autohotkey *.basic *.swift *.vb *.asp&lt;br /&gt;
Copyright:&lt;br /&gt;
 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
License: AGPL-3.0&lt;br /&gt;
&lt;br /&gt;
License: AGPL-3.0&lt;br /&gt;
 https://www.gnu.org/licenses/agpl-3.0.html&lt;br /&gt;
 .&lt;br /&gt;
 This program is free software: you can redistribute it and/or modify&lt;br /&gt;
 it under the terms of the GNU Affero General Public License as&lt;br /&gt;
 published by the Free Software Foundation, version 3&lt;br /&gt;
 .&lt;br /&gt;
 This program is distributed in the hope that it will be useful,&lt;br /&gt;
 but WITHOUT ANY WARRANTY; without even the implied warranty of&lt;br /&gt;
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the&lt;br /&gt;
 GNU Affero General Public License for more details.&lt;br /&gt;
 .&lt;br /&gt;
 You should have received a copy of the GNU Affero General Public License&lt;br /&gt;
 along with this program.  If not, see &amp;lt;https://www.gnu.org/licenses/&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
License: CERN-OHL-S-2.0&lt;br /&gt;
 https://ohwr.org/cern_ohl_s_v2.txt&lt;br /&gt;
 .&lt;br /&gt;
 You may redistribute and modify this source and make products using &lt;br /&gt;
 it under the terms of the CERN-OHL-S v2 &lt;br /&gt;
 (https://ohwr.org/cern_ohl_s_v2.txt).&lt;br /&gt;
 .&lt;br /&gt;
 This source is distributed WITHOUT ANY EXPRESS OR IMPLIED WARRANTY, &lt;br /&gt;
 INCLUDING OF MERCHANTABILITY, SATISFACTORY QUALITY AND FITNESS FOR A &lt;br /&gt;
 PARTICULAR PURPOSE. Please see the CERN-OHL-S v2 for applicable &lt;br /&gt;
 conditions.&lt;br /&gt;
 .&lt;br /&gt;
 Source location: eco-libre.org/p/&lt;br /&gt;
 .&lt;br /&gt;
 As per CERN-OHL-S v2 section 4, should You produce hardware based on &lt;br /&gt;
 this source, You must where practicable and applicable maintain the &lt;br /&gt;
 Source Location visible (1) on the packaging of the hardware, (2) on &lt;br /&gt;
 the circuit board(s) via silkscreen or copper, (3) in any &lt;br /&gt;
 documentation, and (4) on other products you make using this source.&lt;br /&gt;
&lt;br /&gt;
License: CC-BY-SA-4.0&lt;br /&gt;
 http://creativecommons.org/licenses/by-sa/4.0/&lt;br /&gt;
 .&lt;br /&gt;
 Attribution-ShareAlike 4.0 International&lt;br /&gt;
 .&lt;br /&gt;
 =======================================================================&lt;br /&gt;
 .&lt;br /&gt;
 Creative Commons Corporation (&amp;quot;Creative Commons&amp;quot;) is not a law firm and&lt;br /&gt;
 does not provide legal services or legal advice. Distribution of&lt;br /&gt;
 Creative Commons public licenses does not create a lawyer-client or&lt;br /&gt;
 other relationship. Creative Commons makes its licenses and related&lt;br /&gt;
 information available on an &amp;quot;as-is&amp;quot; basis. Creative Commons gives no&lt;br /&gt;
 warranties regarding its licenses, any material licensed under their&lt;br /&gt;
 terms and conditions, or any related information. Creative Commons&lt;br /&gt;
 disclaims all liability for damages resulting from their use to the&lt;br /&gt;
 fullest extent possible.&lt;br /&gt;
 .&lt;br /&gt;
 Using Creative Commons Public Licenses&lt;br /&gt;
 .&lt;br /&gt;
 Creative Commons public licenses provide a standard set of terms and&lt;br /&gt;
 conditions that creators and other rights holders may use to share&lt;br /&gt;
 original works of authorship and other material subject to copyright&lt;br /&gt;
 and certain other rights specified in the public license below. The&lt;br /&gt;
 following considerations are for informational purposes only, are not&lt;br /&gt;
 exhaustive, and do not form part of our licenses.&lt;br /&gt;
 .&lt;br /&gt;
	  Considerations for licensors: Our public licenses are&lt;br /&gt;
	  intended for use by those authorized to give the public&lt;br /&gt;
	  permission to use material in ways otherwise restricted by&lt;br /&gt;
	  copyright and certain other rights. Our licenses are&lt;br /&gt;
	  irrevocable. Licensors should read and understand the terms&lt;br /&gt;
	  and conditions of the license they choose before applying it.&lt;br /&gt;
	  Licensors should also secure all rights necessary before&lt;br /&gt;
	  applying our licenses so that the public can reuse the&lt;br /&gt;
	  material as expected. Licensors should clearly mark any&lt;br /&gt;
	  material not subject to the license. This includes other CC-&lt;br /&gt;
	  licensed material, or material used under an exception or&lt;br /&gt;
	  limitation to copyright. More considerations for licensors:&lt;br /&gt;
	  wiki.creativecommons.org/Considerations_for_licensors&lt;br /&gt;
 .&lt;br /&gt;
	  Considerations for the public: By using one of our public&lt;br /&gt;
	  licenses, a licensor grants the public permission to use the&lt;br /&gt;
	  licensed material under specified terms and conditions. If&lt;br /&gt;
	  the licensor&#039;s permission is not necessary for any reason--for&lt;br /&gt;
	  example, because of any applicable exception or limitation to&lt;br /&gt;
	  copyright--then that use is not regulated by the license. Our&lt;br /&gt;
	  licenses grant only permissions under copyright and certain&lt;br /&gt;
	  other rights that a licensor has authority to grant. Use of&lt;br /&gt;
	  the licensed material may still be restricted for other&lt;br /&gt;
	  reasons, including because others have copyright or other&lt;br /&gt;
	  rights in the material. A licensor may make special requests,&lt;br /&gt;
	  such as asking that all changes be marked or described.&lt;br /&gt;
	  Although not required by our licenses, you are encouraged to&lt;br /&gt;
	  respect those requests where reasonable. More_considerations&lt;br /&gt;
	  for the public:&lt;br /&gt;
	  wiki.creativecommons.org/Considerations_for_licensees&lt;br /&gt;
 .&lt;br /&gt;
 =======================================================================&lt;br /&gt;
 .&lt;br /&gt;
 Creative Commons Attribution-ShareAlike 4.0 International Public&lt;br /&gt;
 License&lt;br /&gt;
 .&lt;br /&gt;
 By exercising the Licensed Rights (defined below), You accept and agree&lt;br /&gt;
 to be bound by the terms and conditions of this Creative Commons&lt;br /&gt;
 Attribution-ShareAlike 4.0 International Public License (&amp;quot;Public&lt;br /&gt;
 License&amp;quot;). To the extent this Public License may be interpreted as a&lt;br /&gt;
 contract, You are granted the Licensed Rights in consideration of Your&lt;br /&gt;
 acceptance of these terms and conditions, and the Licensor grants You&lt;br /&gt;
 such rights in consideration of benefits the Licensor receives from&lt;br /&gt;
 making the Licensed Material available under these terms and&lt;br /&gt;
 conditions.&lt;br /&gt;
 .&lt;br /&gt;
 .&lt;br /&gt;
 Section 1 -- Definitions.&lt;br /&gt;
 .&lt;br /&gt;
   a. Adapted Material means material subject to Copyright and Similar&lt;br /&gt;
	  Rights that is derived from or based upon the Licensed Material&lt;br /&gt;
	  and in which the Licensed Material is translated, altered,&lt;br /&gt;
	  arranged, transformed, or otherwise modified in a manner requiring&lt;br /&gt;
	  permission under the Copyright and Similar Rights held by the&lt;br /&gt;
	  Licensor. For purposes of this Public License, where the Licensed&lt;br /&gt;
	  Material is a musical work, performance, or sound recording,&lt;br /&gt;
	  Adapted Material is always produced where the Licensed Material is&lt;br /&gt;
	  synched in timed relation with a moving image.&lt;br /&gt;
 .&lt;br /&gt;
   b. Adapter&#039;s License means the license You apply to Your Copyright&lt;br /&gt;
	  and Similar Rights in Your contributions to Adapted Material in&lt;br /&gt;
	  accordance with the terms and conditions of this Public License.&lt;br /&gt;
 .&lt;br /&gt;
   c. BY-SA Compatible License means a license listed at&lt;br /&gt;
	  creativecommons.org/compatiblelicenses, approved by Creative&lt;br /&gt;
	  Commons as essentially the equivalent of this Public License.&lt;br /&gt;
 .&lt;br /&gt;
   d. Copyright and Similar Rights means copyright and/or similar rights&lt;br /&gt;
	  closely related to copyright including, without limitation,&lt;br /&gt;
	  performance, broadcast, sound recording, and Sui Generis Database&lt;br /&gt;
	  Rights, without regard to how the rights are labeled or&lt;br /&gt;
	  categorized. For purposes of this Public License, the rights&lt;br /&gt;
	  specified in Section 2(b)(1)-(2) are not Copyright and Similar&lt;br /&gt;
	  Rights.&lt;br /&gt;
 .&lt;br /&gt;
   e. Effective Technological Measures means those measures that, in the&lt;br /&gt;
	  absence of proper authority, may not be circumvented under laws&lt;br /&gt;
	  fulfilling obligations under Article 11 of the WIPO Copyright&lt;br /&gt;
	  Treaty adopted on December 20, 1996, and/or similar international&lt;br /&gt;
	  agreements.&lt;br /&gt;
 .&lt;br /&gt;
   f. Exceptions and Limitations means fair use, fair dealing, and/or&lt;br /&gt;
	  any other exception or limitation to Copyright and Similar Rights&lt;br /&gt;
	  that applies to Your use of the Licensed Material.&lt;br /&gt;
 .&lt;br /&gt;
   g. License Elements means the license attributes listed in the name&lt;br /&gt;
	  of a Creative Commons Public License. The License Elements of this&lt;br /&gt;
	  Public License are Attribution and ShareAlike.&lt;br /&gt;
 .&lt;br /&gt;
   h. Licensed Material means the artistic or literary work, database,&lt;br /&gt;
	  or other material to which the Licensor applied this Public&lt;br /&gt;
	  License.&lt;br /&gt;
 .&lt;br /&gt;
   i. Licensed Rights means the rights granted to You subject to the&lt;br /&gt;
	  terms and conditions of this Public License, which are limited to&lt;br /&gt;
	  all Copyright and Similar Rights that apply to Your use of the&lt;br /&gt;
	  Licensed Material and that the Licensor has authority to license.&lt;br /&gt;
 .&lt;br /&gt;
   j. Licensor means the individual(s) or entity(ies) granting rights&lt;br /&gt;
	  under this Public License.&lt;br /&gt;
 .&lt;br /&gt;
   k. Share means to provide material to the public by any means or&lt;br /&gt;
	  process that requires permission under the Licensed Rights, such&lt;br /&gt;
	  as reproduction, public display, public performance, distribution,&lt;br /&gt;
	  dissemination, communication, or importation, and to make material&lt;br /&gt;
	  available to the public including in ways that members of the&lt;br /&gt;
	  public may access the material from a place and at a time&lt;br /&gt;
	  individually chosen by them.&lt;br /&gt;
 .&lt;br /&gt;
   l. Sui Generis Database Rights means rights other than copyright&lt;br /&gt;
	  resulting from Directive 96/9/EC of the European Parliament and of&lt;br /&gt;
	  the Council of 11 March 1996 on the legal protection of databases,&lt;br /&gt;
	  as amended and/or succeeded, as well as other essentially&lt;br /&gt;
	  equivalent rights anywhere in the world.&lt;br /&gt;
 .&lt;br /&gt;
   m. You means the individual or entity exercising the Licensed Rights&lt;br /&gt;
	  under this Public License. Your has a corresponding meaning.&lt;br /&gt;
 .&lt;br /&gt;
 .&lt;br /&gt;
 Section 2 -- Scope.&lt;br /&gt;
 .&lt;br /&gt;
   a. License grant.&lt;br /&gt;
 .&lt;br /&gt;
		1. Subject to the terms and conditions of this Public License,&lt;br /&gt;
		   the Licensor hereby grants You a worldwide, royalty-free,&lt;br /&gt;
		   non-sublicensable, non-exclusive, irrevocable license to&lt;br /&gt;
		   exercise the Licensed Rights in the Licensed Material to:&lt;br /&gt;
 .&lt;br /&gt;
			 a. reproduce and Share the Licensed Material, in whole or&lt;br /&gt;
				in part; and&lt;br /&gt;
 .&lt;br /&gt;
			 b. produce, reproduce, and Share Adapted Material.&lt;br /&gt;
 .&lt;br /&gt;
		2. Exceptions and Limitations. For the avoidance of doubt, where&lt;br /&gt;
		   Exceptions and Limitations apply to Your use, this Public&lt;br /&gt;
		   License does not apply, and You do not need to comply with&lt;br /&gt;
		   its terms and conditions.&lt;br /&gt;
 .&lt;br /&gt;
		3. Term. The term of this Public License is specified in Section&lt;br /&gt;
		   6(a).&lt;br /&gt;
 .&lt;br /&gt;
		4. Media and formats; technical modifications allowed. The&lt;br /&gt;
		   Licensor authorizes You to exercise the Licensed Rights in&lt;br /&gt;
		   all media and formats whether now known or hereafter created,&lt;br /&gt;
		   and to make technical modifications necessary to do so. The&lt;br /&gt;
		   Licensor waives and/or agrees not to assert any right or&lt;br /&gt;
		   authority to forbid You from making technical modifications&lt;br /&gt;
		   necessary to exercise the Licensed Rights, including&lt;br /&gt;
		   technical modifications necessary to circumvent Effective&lt;br /&gt;
		   Technological Measures. For purposes of this Public License,&lt;br /&gt;
		   simply making modifications authorized by this Section 2(a)&lt;br /&gt;
		   (4) never produces Adapted Material.&lt;br /&gt;
 .&lt;br /&gt;
		5. Downstream recipients.&lt;br /&gt;
 .&lt;br /&gt;
			 a. Offer from the Licensor -- Licensed Material. Every&lt;br /&gt;
				recipient of the Licensed Material automatically&lt;br /&gt;
				receives an offer from the Licensor to exercise the&lt;br /&gt;
				Licensed Rights under the terms and conditions of this&lt;br /&gt;
				Public License.&lt;br /&gt;
 .&lt;br /&gt;
			 b. Additional offer from the Licensor -- Adapted Material.&lt;br /&gt;
				Every recipient of Adapted Material from You&lt;br /&gt;
				automatically receives an offer from the Licensor to&lt;br /&gt;
				exercise the Licensed Rights in the Adapted Material&lt;br /&gt;
				under the conditions of the Adapter&#039;s License You apply.&lt;br /&gt;
 .&lt;br /&gt;
			 c. No downstream restrictions. You may not offer or impose&lt;br /&gt;
				any additional or different terms or conditions on, or&lt;br /&gt;
				apply any Effective Technological Measures to, the&lt;br /&gt;
				Licensed Material if doing so restricts exercise of the&lt;br /&gt;
				Licensed Rights by any recipient of the Licensed&lt;br /&gt;
				Material.&lt;br /&gt;
 .&lt;br /&gt;
		6. No endorsement. Nothing in this Public License constitutes or&lt;br /&gt;
		   may be construed as permission to assert or imply that You&lt;br /&gt;
		   are, or that Your use of the Licensed Material is, connected&lt;br /&gt;
		   with, or sponsored, endorsed, or granted official status by,&lt;br /&gt;
		   the Licensor or others designated to receiv&lt;br /&gt;
&lt;br /&gt;
= 2026-04-23 =&lt;br /&gt;
# I&#039;ve been thinking about chaning our licensing, to something like this&lt;br /&gt;
## All hardware designs are licened under CERN-OHL-S-2.0 &lt;br /&gt;
## All code is licened under AGPL-3.0&lt;br /&gt;
## Everything else (art, documentation, etc) are CC BY-SA&lt;br /&gt;
# here&#039;s the design rational for the cern license (the s means strongly reciprocal, which is what we want) https://gitlab.com/ohwr/project/cernohl/-/wikis/uploads/0be6f561d2b4a686c5765c74be32daf9/CERN_OHL_rationale.pdf&lt;br /&gt;
# apparently creative commons license aren&#039;t OSI approved — only because they don&#039;t work for sourcecode https://opensource.stackexchange.com/questions/5021/osi-approved-license-similar-to-cc-by-sa-4-0&lt;br /&gt;
## by CC BY-SA (without NC or ND) are recommended by OSHWA for things like art and docs https://oshwa.org/resources/sharing-best-practices/&lt;br /&gt;
## hah, the footer of the OSI website (opensource.org) says that the contents of the website are licened CC BY – even though it&#039;s not OSI approved. That&#039;s a good enough endorsement for me&lt;br /&gt;
# oh, I found a CERN Discourse forum https://forums.ohwr.org/c/cernohl/53&lt;br /&gt;
## I never did get a response from OSHWA from my toot about their recommended CLAs https://chaos.social/@ecolibre/116444933464052302&lt;br /&gt;
## da fuk. the &amp;quot;register&amp;quot; button redirects to gitlab?&lt;br /&gt;
### ugh, it&#039;s some SSO OAuth (OpenID Connect). I don&#039;t trust that&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
OHWR Forum is requesting access to your account on GitLab.com.&lt;br /&gt;
 Make sure you trust OHWR Forum before authorizing.&lt;br /&gt;
&lt;br /&gt;
Vasco Guita added this OAuth application over 1 year ago. You will be redirected to forums.ohwr.org after authorizing.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
### I decllined it, and chose to create a new github account that&#039;s specific to these oshwa forums, and nothing else&lt;br /&gt;
## ok I asked about the triple-licensing here https://forums.ohwr.org/t/possible-to-triple-license-cern-ohl-s-2-0-agpl-3-0-cc-by-sa/849882&lt;br /&gt;
## ugh, the license of the licnese itself is CC BY-ND 4.0 :( https://gitlab.com/ohwr/project/cernohl/-/wikis/faq#q-i-am-using-one-of-variants-of-cern-ohl-v2-what-is-the-licence-of-the-licence-text-itself&lt;br /&gt;
### I have no intention to change it, but it would be nice if we had the abilty to add, idk, footnotes or page numbers or any trivial change if we needed&lt;br /&gt;
# hmm...the faq on the cern license say that it&#039;s *not* compatible with GPL https://gitlab.com/ohwr/project/cernohl/-/wikis/faq#q-is-cern-ohl-s-compatible-with-gpl&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Q: Is CERN-OHL-S compatible with GPL?&lt;br /&gt;
A: No...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## so we can&#039;t just license everything under both, I guess. But we might be able to specify that the hardware designs are CERN and any software is GPL, still&lt;br /&gt;
# here&#039;s a good example usage; they have the full license in LICENSE file, but they also have a &amp;quot;License Notice&amp;quot; section of their README.mde with the following https://github.com/Foundation-Devices/passport-electronics&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
You may redistribute and modify this source and make products using it under the terms of the CERN-OHL-S v2 (https://ohwr.org/cern_ohl_s_v2.txt).&lt;br /&gt;
&lt;br /&gt;
This source is distributed WITHOUT ANY EXPRESS OR IMPLIED WARRANTY, INCLUDING OF MERCHANTABILITY, SATISFACTORY QUALITY AND FITNESS FOR A PARTICULAR PURPOSE. Please see the CERN-OHL-S v2 for applicable conditions.&lt;br /&gt;
&lt;br /&gt;
Source location: foundationdevices.com/passport-electronics&lt;br /&gt;
&lt;br /&gt;
As per CERN-OHL-S v2 section 4, should You produce hardware based on this source, You must where practicable and applicable maintain the Source Location visible (1) on the packaging of the hardware, (2) on the circuit board(s) via silkscreen or copper, (3) in any documentation, and (4) on other products you make using this source.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## I especially like the &amp;quot;Source location&amp;quot; part. We can use https://eco-libre.org/p (which is our &amp;quot;projects&amp;quot; page, indended to have one page per project – each with a *very* short summary, link to the *real* docs (currently on github, but that may change to codeberg – which is why we have this simple project page on our own infra), and a list of articles that are tagged with the project&#039;s name.&lt;br /&gt;
### currently we only have one example for life-line https://www.eco-libre.org/p/life-line/ – but, again, we&#039;d want to just link to eco-libre.org/p/ so we can have a boilerplate copy-pasta for all repo&#039;s README.md files&lt;br /&gt;
# there&#039;s a 6-page guide on how to use the CERN license here https://gitlab.com/ohwr/project/cernohl/-/wikis/uploads/cf37727497ca2b5295a7ab83a40fcf5a/cern_ohl_s_v2_user_guide.pdf&lt;br /&gt;
## cool, they do recommend using git. something I advocated-for (and never really got traction-on) at OSE&lt;br /&gt;
## interesting, they recommend we create a CHANGES file, because the license requires downstream modifications to be clearly documented. And by creating a blank file, it&#039;s where they should write their downstream changes.&lt;br /&gt;
## oh wow, they specifically mention FCStd files. So the writers of this license had FreeCAD in mind. Cool!&lt;br /&gt;
## they reference SPDX standard by resue.software https://reuse.software/tutorial/&lt;br /&gt;
### apparently this is a standardized way to indicate licenses of files that are machine-readable. Because, of course there is a standard for that.&lt;br /&gt;
### interesting, they advocate for a folder LICENSES instead of a file LICENSE. that would be better for us, if we&#039;re using three.&lt;br /&gt;
### ok, apparently SPDX is a distinct product from the Linux Foundation https://spdx.org/&lt;br /&gt;
### they say all of these are valid ways to declare copyright; I like it&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2019 Jane Doe &amp;lt;jane@example.com&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: © 2019 John Doe &amp;lt;john@example.com&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: Contributors to Example Project &amp;lt;https://project.example.com&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Alice Hack and (other) contributors to Project X &amp;lt;https://git.example.com/alicehack/projectx/CONTRIBUTORS.md&amp;gt;&lt;br /&gt;
SPDX-SnippetCopyrightText: (C) Example Cooperative &amp;lt;info@coop.example.com&amp;gt;&lt;br /&gt;
© Example Corporation &amp;lt;https://corp.example.com&amp;gt;&lt;br /&gt;
Copyright 2016, 2018-2019 Joe Anybody&lt;br /&gt;
Copyright (c) Alice, some rights reserved&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
#### I especially like line 4. I think I&#039;d use that. So it would be my name, all contributors, and a link to the Attribution section of the docs&lt;br /&gt;
### they also clarify that the copyright line can omit the year or include a range, the current year, or the original year. I always thought the first year that we did a single commit was best, and they had a link to an article that argues this too. I like that. https://matija.suklje.name/how-and-why-to-properly-write-copyright-statements-in-your-code&lt;br /&gt;
### they have a section on license compatiblity https://reuse.software/faq/#license-compatibility&lt;br /&gt;
#### apparently GPL isn&#039;t compatible with lots of license, because it says you can&#039;t add restrictions to it. that would make it incompatible with CC NC licenses, for example.&lt;br /&gt;
### god, both CERN and reuse.software want us to add comments or a cooresponding &#039;&amp;lt;file&amp;gt;.license&#039; file to *every* file to indicate its license. I was hoping instead that we could just put text that says &amp;quot;hardware files are CERN and software is GPL&amp;quot; but idk if that&#039;ll work :/&lt;br /&gt;
#### they have an &amp;quot;eaiser&amp;quot; method of defining a REUSE.toml file – but that&#039;s per-dir. So I&#039;d have to put all software in one dir and all CAD files in another dir. I guess that would work, but eventually someone will probably break it due to human error and volunteer chaos https://reuse.software/faq/#license-compatibility&lt;br /&gt;
## the faq had said they were going to apply to the FSF, but fsf.org has no mention of the CERN OHL&lt;br /&gt;
### this thread goes into some detail on why they &amp;quot;gave up&amp;quot; on GPL compatibility https://forums.ohwr.org/t/concerns-on-the-impact-of-ohl-on-gpl-community/848400&lt;br /&gt;
#### also some good history on the OHL from Javier Serrano at CERN. He said he gave a presentation on why using GPL was good for hardware, but after the Q&amp;amp;A he realized it wasn&#039;t. That was in 2015 at ORConf.&lt;br /&gt;
#### that thread linked to another cool open hardware forum. GOSH! https://forum.openhardware.science/&lt;br /&gt;
### here&#039;s the thread where CERN applied for OHL to be covered by OSI (which it got) https://lists.opensource.org/pipermail/license-review_lists.opensource.org/2020-June/004892.html&lt;br /&gt;
## back to the usage guide on CERN OHL, they also mention Debian&#039;s DEP5. DEP5 used to be supported by reuse.software, but it was deprecated&lt;br /&gt;
### DEP-5 is another machine-readable copyright/license standard, currently documented here https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/&lt;br /&gt;
#### man, I don&#039;t know which I like better: human-readable legaleze (well, readable only to a subset of superhumans) or machine-readable complexity&lt;br /&gt;
#### they use machine-readable license shortcodes, which are defined by spdx here https://spdx.org/licenses/&lt;br /&gt;
#### so we want&lt;br /&gt;
##### CERN-OHL-S-2.0&lt;br /&gt;
##### AGPL-3.0-or-later&lt;br /&gt;
##### CC-BY-SA-4.0&lt;br /&gt;
#### curiously, only two of the CC licenses are marked as &amp;quot;FSF libre&amp;quot; = CC-BY-4.0 and CC-BY-SA-4.0. None are &amp;quot;OSI Approved&amp;quot; (but see above because OSI uses them for docs!)&lt;br /&gt;
#### hah, cern is the opposite. their 2.0 OHLs are &amp;quot;OSI approved&amp;quot; but not &amp;quot;FSF libre&amp;quot;&lt;br /&gt;
#### the AGPL-3.0-or-later (or -only) is both &amp;quot;OSI approved&amp;quot; *and* &amp;quot;FSF libre&amp;quot; huh&lt;br /&gt;
### anyway, the DEP5 has a similar system to define regex-like globs of files under different licenses&lt;br /&gt;
### the end of the spec includes a &amp;quot;complex&amp;quot; example&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/&lt;br /&gt;
Source: https://www.example.com/code/venus&lt;br /&gt;
Upstream-Name: Planet Venus&lt;br /&gt;
Upstream-Contact: John Doe &amp;lt;jdoe@example.com&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Files:&lt;br /&gt;
 *&lt;br /&gt;
Copyright: 2008, John Doe &amp;lt;jdoe@example.com&amp;gt;&lt;br /&gt;
		   2007, Jane Smith &amp;lt;jsmith@example.org&amp;gt;&lt;br /&gt;
		   2007, Joe Average &amp;lt;joe@example.org&amp;gt;&lt;br /&gt;
		   2007, J. Random User &amp;lt;jr@users.example.com&amp;gt;&lt;br /&gt;
License: PSF-2&lt;br /&gt;
&lt;br /&gt;
Files:&lt;br /&gt;
 debian/*&lt;br /&gt;
Copyright: 2008, Dan Developer &amp;lt;dan@debian.example.com&amp;gt;&lt;br /&gt;
License: permissive&lt;br /&gt;
 Copying and distribution of this package, with or without modification,&lt;br /&gt;
 are permitted in any medium without royalty provided the copyright notice&lt;br /&gt;
 and this notice are preserved.&lt;br /&gt;
&lt;br /&gt;
Files:&lt;br /&gt;
 debian/patches/theme-diveintomark.patch&lt;br /&gt;
Copyright: 2008, Joe Hacker &amp;lt;hack@example.org&amp;gt;&lt;br /&gt;
License: GPL-2+&lt;br /&gt;
&lt;br /&gt;
Files:&lt;br /&gt;
 planet/vendor/compat_logging/*&lt;br /&gt;
Copyright: 2002, Mark Smith &amp;lt;msmith@example.org&amp;gt;&lt;br /&gt;
License: MIT&lt;br /&gt;
 [LICENSE TEXT]&lt;br /&gt;
&lt;br /&gt;
Files:&lt;br /&gt;
 planet/vendor/httplib2/*&lt;br /&gt;
Copyright: 2006, John Brown &amp;lt;brown@example.org&amp;gt;&lt;br /&gt;
License: MIT2&lt;br /&gt;
 Unspecified MIT style license.&lt;br /&gt;
&lt;br /&gt;
Files:&lt;br /&gt;
 planet/vendor/feedparser.py&lt;br /&gt;
Copyright: 2007, Mike Smith &amp;lt;mike@example.org&amp;gt;&lt;br /&gt;
License: PSF-2&lt;br /&gt;
&lt;br /&gt;
Files:&lt;br /&gt;
 planet/vendor/htmltmpl.py&lt;br /&gt;
Copyright: 2004, Thomas Brown &amp;lt;coder@example.org&amp;gt;&lt;br /&gt;
License: GPL-2+&lt;br /&gt;
&lt;br /&gt;
License: PSF-2&lt;br /&gt;
 [LICENSE TEXT]&lt;br /&gt;
&lt;br /&gt;
License: GPL-2+&lt;br /&gt;
 This program is free software; you can redistribute it and/or modify&lt;br /&gt;
 it under the terms of the GNU General Public License as published by&lt;br /&gt;
 the Free Software Foundation; either version 2 of the License, or&lt;br /&gt;
 (at your option) any later version.&lt;br /&gt;
 .&lt;br /&gt;
 This program is distributed in the hope that it will be useful,&lt;br /&gt;
 but WITHOUT ANY WARRANTY; without even the implied warranty of&lt;br /&gt;
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the&lt;br /&gt;
 GNU General Public License for more details.&lt;br /&gt;
 .&lt;br /&gt;
 You should have received a copy of the GNU General Public License&lt;br /&gt;
 along with this package; if not, see &amp;amp;lt;https://www.gnu.org/licenses/&amp;amp;gt;.&lt;br /&gt;
Comment:&lt;br /&gt;
 On Debian systems, the full text of the GNU General Public License&lt;br /&gt;
 version 2 can be found in the file &#039;/usr/share/common-licenses/GPL-2&#039;.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
### I was wondering if I could match all files of a given type at any depth, and it looks like this is accounted-for&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Patterns match pathnames that start at the root of the source tree. Thus, “Makefile.in” matches only the file at the root of the tree, but “*/Makefile.in” matches at any depth.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
### oh, it also says globs include slashes&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Only the wildcards * and ? apply; the former matches any number of characters (including none), the latter a single character. Both match slashes (/) and leading dots, unlike shell globs. The pattern *.in therefore matches any file whose name ends in .in anywhere in the source tree, not just at the top level.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
### so I could do something like&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Files:&lt;br /&gt;
 *&lt;br /&gt;
Copyright: 2023 Michael Altfield and Eco-Libre&lt;br /&gt;
License: CC-BY-SA-4.0&lt;br /&gt;
&lt;br /&gt;
Files:&lt;br /&gt;
 *.FCStd&lt;br /&gt;
Copyright: 2023 Michael Altfield and Eco-Libre&lt;br /&gt;
License: CERN-OHL-S-2.0&lt;br /&gt;
&lt;br /&gt;
Files:&lt;br /&gt;
 *.py&lt;br /&gt;
Copyright: 2023 Michael Altfield and Eco-Libre&lt;br /&gt;
License: AGPL-3.0-or-later&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
### but then it&#039;s not clear which overrrides the others&lt;br /&gt;
### oh, it says the last one that matches applies. So I did that perfect&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Multiple Files stanzas are allowed. The last stanza that matches a particular file applies to it. More general stanzas should therefore be given first, followed by more specific overrides.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
### honestly, that seems like the perfect happy-medium. It&#039;s less to maintain (or for maintainers to screw-up) than .license files everywhere (per REUSE). so it&#039;s more long-term durable. I just need to think of all possible file extensions for code that we&#039;ll use (it&#039;ll be more than just .py files, I&#039;m sure) and hardware files (stl would be CC, so that&#039;s caught by the first one but OpenSCAD could foreseably be one)&lt;br /&gt;
### hmm...I wonder how kdenlive files should be licensed. It&#039;s used to make media, but not the media itself.&lt;br /&gt;
### I asked my question on Stack Exchange too https://opensource.stackexchange.com/questions/15745/possible-to-triple-license-cern-ohl-s-2-0-agpl-3-0-cc-by-sa&lt;br /&gt;
### I also asked about kdenlive files here https://opensource.stackexchange.com/questions/15746/best-libre-license-for-kdenlive-files&lt;br /&gt;
## back to the usage guide of the CERN OHL. they do say you should use the SPDX headers, but that&#039;s REUSE – not DEP5&lt;br /&gt;
## they also recommend adding a &amp;quot;+&amp;quot; for &amp;quot;-or-later&amp;quot;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
CERN-OHL-S-2.0+&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## but I guess I have to place trust in FSF and/or CERN that they won&#039;t become evil and fuck-up future licenses to be not-libre. hmm. imagine if they got bought-out by John Deere.. Yeah, it&#039;s probably better to pin to the current version, and just do the copyright transfer in the CLA. Then we can control the license, and change it if we ever discover some new tech that necessitates changes to a new license&lt;br /&gt;
## for the copyright, they suggest &amp;quot;and others&amp;quot; – that might be better than just &amp;quot;and contributors to Eco-Libre&amp;quot;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Suggestion: You can optionally include a copyright notice to be printed&lt;br /&gt;
on the Product (remember you must keep intact any Notices in the source,&lt;br /&gt;
though). If you do, and your design includes part of other designs, you&lt;br /&gt;
should at least acknowledge the work is not all your own by using e.g.&lt;br /&gt;
Copyright c 2020 Sam Smith and others. In any case, do not include the&lt;br /&gt;
CERN logo.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# well we&#039;ll see if I got any answers on the forums&lt;br /&gt;
# in the meantime, I want to finish my CLA agreements&lt;br /&gt;
# yesterday I made a very slick looking libreoffice document with the individual CLA, but I realized today that it would be better if I could store it in reST and generate the PDF using sphinx or pandoc&lt;br /&gt;
## so, yeah, it would absolutely be better, but I really think I&#039;m letting perfect be the enemy of the good here. I&#039;m already spending weeks just to finish the ConfirmAccount extension on the wiki – just because I didn&#039;t have a Terms of Service, which sent me down this rabbit hole.&lt;br /&gt;
## I&#039;m going to make the reST -&amp;gt; PDF part a TODO. The libreoffice file is currently 64 KB and the PDF is 95 KB. I&#039;ll probably have maybe 4-10x that, as I add a corporate CLA and also some other less-important agreements for volunteers (I agree not to use AI. I agree to follow the CoC. Etc)&lt;br /&gt;
## oh wtf. I finished making the libreoffice for the corporate version of the contract (it&#039;s called &amp;quot;entity&amp;quot;) but the only difference in the file&#039;s contents is literally the subtitle&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Individual Contributor Exclusive License Agreement&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Entity Contributor Exclusive License Agreement&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## I also diff&#039;d the html version, just in-case it was a bug. same thing&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;h2 id=&amp;quot;tmp-subtitle&amp;quot;&amp;gt;&amp;lt;span id=&amp;quot;tmp-contributor-type&amp;quot;&amp;gt;Individual&amp;lt;/span&amp;gt; Contributor &amp;lt;span id=&amp;quot;tmp-contributor-exclusivity-1&amp;quot; class=&amp;quot;tmp-contributor-exclusivity-1&amp;quot;&amp;gt;Exclusive&amp;lt;/span&amp;gt; License Agreement&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;h2 id=&amp;quot;tmp-subtitle&amp;quot;&amp;gt;&amp;lt;span id=&amp;quot;tmp-contributor-type&amp;quot;&amp;gt;Entity&amp;lt;/span&amp;gt; Contributor &amp;lt;span id=&amp;quot;tmp-contributor-exclusivity-1&amp;quot; class=&amp;quot;tmp-contributor-exclusivity-1&amp;quot;&amp;gt;Exclusive&amp;lt;/span&amp;gt; License Agreement&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## maybe there would be differences if I chose a different patent option?&lt;br /&gt;
# idk, but I guess I only need one doc...&lt;br /&gt;
# TODO: finish the CLA docs in LibreOffice, put them on github somewhere, then do the other volunteer agreements, and then sign them myself&lt;br /&gt;
&lt;br /&gt;
= 2026-04-22 =&lt;br /&gt;
# picking up where we left-off yesterday, we&#039;re looking at examples of open-source CLAs&lt;br /&gt;
# Ideally we want a simple one for the wiki an a strong legal one for future volunteers to sign&lt;br /&gt;
# OpenJS has these https://openjsf.org/cla&lt;br /&gt;
## indivdual https://images.prismic.io/openjsf/4c740999-4bd7-4f69-8c4a-b80db0919690_OpenJS-Foundation-ICLA-2020-09-23.pdf&lt;br /&gt;
## corporate https://images.prismic.io/openjsf/7f4dc103-c6cf-41ab-a2e8-42248e8a45f2_OpenJS-Foundation-CCLA-2020-09-23.pdf&lt;br /&gt;
## they say they were made by the Linux Foundation&#039;s EasyCLA tool https://easycla.lfx.linuxfoundation.org/#/&lt;br /&gt;
### oh, we saw that one yesterday; it&#039;s authalled :/&lt;br /&gt;
# CNCF (kubernetes) also uses EasyCLA, which is apparently integrated into GitHub https://github.com/kubernetes/community/blob/main/CLA.md&lt;br /&gt;
# OpenBMC has these two; no idea what the doc&#039;s license is &lt;br /&gt;
## individual https://github.com/kubernetes/community/blob/main/CLA.md&lt;br /&gt;
## corporate https://drive.google.com/file/d/1d-2M8ng_Dl2j1odsvZ8o1QHAdHB-pNSH/edit&lt;br /&gt;
# here&#039;s python&#039;s; the license is unsaid https://www.python.org/psf/contrib/&lt;br /&gt;
# Apollo&#039;s derived its from Apache&#039;s https://contribute.apollographql.com/&lt;br /&gt;
# here&#039;s microsoft&#039;s https://opensource.microsoft.com/cla/&lt;br /&gt;
## actual doc is here; it&#039;s CC0 https://opensource.microsoft.com/pdf/microsoft-contribution-license-agreement.pdf&lt;br /&gt;
## it&#039;s pretty software focused, but I like that it&#039;s licensed openly&lt;br /&gt;
## it&#039;s also only good for individual contributions&lt;br /&gt;
# here&#039;s a short &amp;amp; sweet one by musescore, but it&#039;s not clear how it&#039;s licensed https://musescore.org/en/cla&lt;br /&gt;
# here&#039;s openmediavault&#039;s https://www.openmediavault.org/contributoragreement.html&lt;br /&gt;
## doc is actually here; it&#039;s derived from apache&#039;s CLA https://www.openmediavault.org/wp-content/uploads/2013/12/oca.pdf&lt;br /&gt;
# the link to openstack (openinfra) was bad; looks like they replaced their CLA with the Linux Foundation&#039;s DOC https://www.openmediavault.org/wp-content/uploads/2013/12/oca.pdf&lt;br /&gt;
# puppet uses this CLA Assistant one, based on Apache&#039;s https://cla-assistant.io/puppetlabs/&lt;br /&gt;
# sangoma uses this one, also using CLA Assistant, but it doesn&#039;t mention apache https://web.archive.org/web/20230429235353/https://oss-cla.sangoma.com/asterisk/asterisk&lt;br /&gt;
# the W3C&#039;s looks pretty good, and specifc to them https://www.w3.org/community/about/process/cla/&lt;br /&gt;
## the license isn&#039;t explicilty stated, but the footer says it&#039;s website contents is licensed by, uh, their own &amp;quot;document license - 2023 version&amp;quot; https://www.w3.org/copyright/document-license-2023/&lt;br /&gt;
# here&#039;s one by zed; it&#039;s not clear how the text is licensed https://zed.dev/cla&lt;br /&gt;
# KDE announced theirs here https://ev.kde.org/2008/08/22/2008-08-22-fsfe-welcomes-kde-s-fiduciary-license-agreement/&lt;br /&gt;
## actual doc about the FLA is here https://ev.kde.org/rules/fla/&lt;br /&gt;
## actual doc is here&lt;br /&gt;
### individuals https://ev.kde.org/resources/FLA-2.0-individual.pdf&lt;br /&gt;
### companies https://ev.kde.org/resources/FLA-2.0-entity.pdf&lt;br /&gt;
## they seem pretty good, albeit they&#039;re very focused on software (not hardware)&lt;br /&gt;
## it says it&#039;s based on this https://contributoragreements.org/&lt;br /&gt;
### and that site&#039;s footer says its contents is CC BY-SA 4.0. Perfect.&lt;br /&gt;
## I went through their CLA Chooser generator/wizard https://contributoragreements.org/ca-cla-chooser/#&lt;br /&gt;
# that spat-out two, one for individual and one for corporate&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
	Fiduciary License Agreement 2.0&lt;br /&gt;
	based on the&lt;br /&gt;
	Individual Contributor Exclusive License Agreement&lt;br /&gt;
	(including the Traditional Patent License OPTION)&lt;br /&gt;
&lt;br /&gt;
	Thank you for your interest in contributing to Eco-Libre&#039;s ____________________ (&amp;quot;We&amp;quot; or &amp;quot;Us&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
	The purpose of this contributor agreement (&amp;quot;Agreement&amp;quot;) is to clarify and document the rights granted by contributors to Us. To make this document effective, please follow the instructions at ____________________.&lt;br /&gt;
	Preamble&lt;br /&gt;
&lt;br /&gt;
	Software is deeply embedded in all aspects of our lives and it is important that it empower, rather than restrict us. Free Software gives everybody the rights to use, understand, adapt and share software. These rights help support other fundamental freedoms like freedom of speech, press and privacy.&lt;br /&gt;
&lt;br /&gt;
	Development of Free Software can follow many patterns. In some cases whole development is handled by a sole programmer or a small group of people. But usually, the creation and maintenance of software is a complex process that requires the contribution of many individuals. This also affects who owns the rights to the software. In the latter case, rights in software are owned jointly by a great number of individuals.&lt;br /&gt;
&lt;br /&gt;
	To tackle this issue some projects require a full copyright assignment to be signed by all contributors. The problem with such assignments is that they often lack checks and balances that would protect the contributors from potential abuse of power from the new copyright holder.&lt;br /&gt;
&lt;br /&gt;
	FSFE’s Fiduciary License Agreement (FLA) was created by the Free Software Foundation Europe e.V. with just that in mind – to concentrate all deciding power within one entity and prevent fragmentation of rights on one hand, while on the other preventing that single entity from abusing its power. The main aim is to ensure that the software covered under the FLA will forever remain Free Software.&lt;br /&gt;
&lt;br /&gt;
	This process only serves for the transfer of economic rights. So-called moral rights (e.g. authors right to be identified as author) remain with the original author(s) and are inalienable.&lt;br /&gt;
	How to use this FLA&lt;br /&gt;
&lt;br /&gt;
	If You are an employee and have created the Contribution as part of your employment, You need to have Your employer approve this Agreement. If You do not own the Copyright in Your Contribution, any other author of the Contribution should also sign this. In any event, please contact Us at https://www.eco-libre.org/contact.&lt;br /&gt;
	Definitions&lt;br /&gt;
&lt;br /&gt;
	&amp;quot;You&amp;quot; means the individual Copyright owner who Submits a Contribution to Us; or&lt;br /&gt;
&lt;br /&gt;
	if the Copyright in the Contribution is held by a Legal Entity and the Contribution is being Submitted to Us on behalf of such Legal Entity, &amp;quot;You&amp;quot; means such Legal Entity.&lt;br /&gt;
&lt;br /&gt;
	&amp;quot;Contribution&amp;quot; means any original work of authorship, including any original modifications or additions to an existing work of authorship, Submitted for inclusion into Material by You to Us, in which you own the Copyright.&lt;br /&gt;
&lt;br /&gt;
	&amp;quot;Copyright&amp;quot; means all rights protecting works of authorship, including copyright, moral and neighboring rights, as appropriate, for the full term of their existence.&lt;br /&gt;
&lt;br /&gt;
	&amp;quot;Material&amp;quot; means the software and/or documentation of ____________________ that we make available to third parties.&lt;br /&gt;
&lt;br /&gt;
	&amp;quot;Submit&amp;quot; means any act by which a Contribution is transferred to Us by You by means of tangible or intangible media, including but not limited to electronic mailing lists, source code control systems, and issue tracking systems, but excluding any transfer that is conspicuously marked or otherwise designated in writing by You as &amp;quot;Not a Contribution.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
	&amp;quot;Documentation&amp;quot; means any non-software portion of a Contribution.&lt;br /&gt;
	License grant&lt;br /&gt;
	Copyright license to Us&lt;br /&gt;
&lt;br /&gt;
	Subject to the terms and conditions of this Agreement, You hereby grant to Us a worldwide, royalty-free, exclusive, perpetual and irrevocable (except as stated in Section &amp;quot;Term&amp;quot;) license, with the right to transfer an unlimited number of non-exclusive licenses or to grant sublicenses to third parties, under the Copyright covering the Contribution to use the Contribution by all means, including, but not limited to:&lt;br /&gt;
		publish the Contribution,&lt;br /&gt;
		modify the Contribution,&lt;br /&gt;
		prepare derivative works based upon or containing the Contribution and/or to combine the Contribution with other Materials,&lt;br /&gt;
		reproduce the Contribution in original or modified form,&lt;br /&gt;
		distribute, to make the Contribution available to the public, display and publicly perform the Contribution in original or modified form.&lt;br /&gt;
	Moral rights&lt;br /&gt;
&lt;br /&gt;
	Moral Rights remain unaffected to the extent they are recognized and not waivable by applicable law. Notwithstanding, You may add your name to the attribution mechanism customary used in the Materials you Contribute to, such as the header of the source code files of Your Contribution, and We will respect this attribution when using Your Contribution.&lt;br /&gt;
	Copyright license back to You&lt;br /&gt;
&lt;br /&gt;
	Upon such grant of rights to Us, We immediately grant to You a worldwide, royalty-free, non-exclusive, perpetual and irrevocable license, with the right to transfer an unlimited number of non-exclusive licenses or to grant sublicenses to third parties, under the Copyright covering the Contribution to use the Contribution by all means, including, but not limited to:&lt;br /&gt;
		publish the Contribution,&lt;br /&gt;
		modify the Contribution,&lt;br /&gt;
		prepare derivative works based upon or containing the Contribution and/or to combine the Contribution with other Materials,&lt;br /&gt;
		reproduce the Contribution in original or modified form,&lt;br /&gt;
		distribute, to make the Contribution available to the public, display and publicly perform the Contribution in original or modified form.&lt;br /&gt;
&lt;br /&gt;
	This license back is limited to the Contribution and does not provide any rights to the Material.&lt;br /&gt;
	Patents&lt;br /&gt;
	Patent license&lt;br /&gt;
&lt;br /&gt;
	Subject to the terms and conditions of this Agreement You hereby grant to Us and to recipients of Materials distributed by Us a worldwide, royalty-free, non-exclusive, perpetual and irrevocable (except as stated in Subsection &amp;quot;Revocation of patent license&amp;quot;) patent license, with the right to transfer an unlimited number of non-exclusive licenses or to grant sublicenses to third parties, to make, have made, use, sell, offer for sale, import and otherwise transfer the Contribution and the Contribution in combination with any Material (and portions of such combination). This license applies to all patents owned or controlled by You, whether already acquired or hereafter acquired, that would be infringed by making, having made, using, selling, offering for sale, importing or otherwise transferring of Your Contribution(s) alone or by combination of Your Contribution(s) with any Material.&lt;br /&gt;
	Revocation of patent license&lt;br /&gt;
&lt;br /&gt;
	You reserve the right to revoke the patent license stated in Subsection &amp;quot;Patent license&amp;quot; if We make any infringement claim that is targeted at your Contribution and not asserted for a Defensive Purpose. An assertion of claims of the Patents shall be considered for a &amp;quot;Defensive Purpose&amp;quot; if the claims are asserted against an entity that has filed, maintained, threatened, or voluntarily participated in a patent infringement lawsuit against Us or any of Our licensees.&lt;br /&gt;
	License obligations by Us&lt;br /&gt;
&lt;br /&gt;
	We may, but are under no obligation to, include the Contribution You Submitted to Us into the Material.&lt;br /&gt;
&lt;br /&gt;
	We agree to (sub)license the Contribution or any Materials containing, based on or derived from your Contribution under the terms of any licenses that qualify as [Free Software](https://www.gnu.org/philosophy/free-sw.html) as defined by the Free Software Foundation and at the same time qualify as [Open Source](https://opensource.org/osd) as defined by the Open Source Initiative. For clarification, should we make available any Material under a non-free or non-open license, we must make a version of such Material available under a free and open license too.&lt;br /&gt;
&lt;br /&gt;
	More specifically and in strict accordance with the above paragraph, we agree to (sub)license the Contribution or any Materials containing, based on or derived from the Contribution only under the terms of the following license(s) GPL-3.0, MIT (including any right to adopt any future version of a license if permitted), whereby any non-free or non-open licenses need to be listed as well.&lt;br /&gt;
&lt;br /&gt;
	We agree to license patents owned or controlled by You only to the extent necessary to (sub)license Your Contribution(s) and the combination of Your Contribution(s) with the Material under the terms of any licenses the Free Software Foundation classifies as Free Software licenses and which are approved by the Open Source Initiative as Open Source licenses..&lt;br /&gt;
	Disclaimer&lt;br /&gt;
	**We acknowledge that you provide the Contribution &amp;quot;as is&amp;quot;.** **More particularly, You disclaim all express or implied warranties including, without limitation, any implied warranty of satisfactory quality, fitness for a particular purpose and non-infringement. To the extent that any such warranties cannot be disclaimed, such warranty is limited in duration and extent to the minimum period and extent permitted by law.**&lt;br /&gt;
	Consequential damage waiver&lt;br /&gt;
&lt;br /&gt;
	**To the maximum extent permitted by applicable law, in no event will You or We be liable for any loss of profits, loss of anticipated savings, loss of data, indirect, special, incidental, consequential and exemplary damages arising out of this Agreement regardless of the legal or equitable theory (contract, tort or otherwise) upon which the claim is based.**&lt;br /&gt;
	Approximation of disclaimer and damage waiver&lt;br /&gt;
&lt;br /&gt;
	**If the disclaimer and damage waiver mentioned in Subsection &amp;quot;Disclaimer of warranty&amp;quot; and Section &amp;quot;Consequential damage waiver&amp;quot; cannot be given legal effect under applicable local law, reviewing courts shall apply local law that most closely approximates an absolute waiver of all civil or contractual liability in connection with the Contribution.**&lt;br /&gt;
	Term&lt;br /&gt;
&lt;br /&gt;
	This Agreement shall come into effect upon Your acceptance of the terms and conditions.&lt;br /&gt;
&lt;br /&gt;
	This Agreement shall apply for the term of the copyright and patents licensed here. However, You shall have the right to terminate the Agreement if We do not fulfill the obligations as set forth in Section &amp;quot;License obligations by Us&amp;quot;. Such termination must be made in writing.&lt;br /&gt;
&lt;br /&gt;
	In the event of a termination of this Agreement Sections &amp;quot;Disclaimer&amp;quot;, &amp;quot;Term&amp;quot; and &amp;quot;Miscellaneous&amp;quot; shall survive such termination and shall remain in full force thereafter. For the avoidance of doubt, Free and Open Source Software (sub)licenses that have already been granted for Contributions at the date of the termination shall remain in full force after the termination of this Agreement.&lt;br /&gt;
	Miscellaneous&lt;br /&gt;
&lt;br /&gt;
	This Agreement and all disputes, claims, actions, suits or other proceedings arising out of this agreement or relating in any way to it shall be governed by the laws of Ecuador excluding its private international law provisions.&lt;br /&gt;
&lt;br /&gt;
	This Agreement sets out the entire agreement between You and Us for Your Contributions to Us and overrides all other agreements or understandings.&lt;br /&gt;
&lt;br /&gt;
	In case of Your death, this agreement shall continue with Your heirs. In case of more than one heir, all heirs must exercise their rights through a commonly authorized person.&lt;br /&gt;
&lt;br /&gt;
	If any provision of this Agreement is found void and unenforceable, such provision will be replaced to the extent possible with a provision that comes closest to the meaning of the original provision and that is enforceable. The terms and conditions set forth in this Agreement shall apply notwithstanding any failure of essential purpose of this Agreement or any limited remedy to the maximum extent possible under law.&lt;br /&gt;
&lt;br /&gt;
	You agree to notify Us of any facts or circumstances of which you become aware that would make Your representations under this Agreement inaccurate in any respect.&lt;br /&gt;
	You&lt;br /&gt;
	Date:	&lt;br /&gt;
	Name:	&lt;br /&gt;
	Title:	&lt;br /&gt;
	Address:	&lt;br /&gt;
	Us&lt;br /&gt;
	Date:	&lt;br /&gt;
	Name:	&lt;br /&gt;
	Title:	&lt;br /&gt;
	Address:	&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
	Fiduciary License Agreement 2.0&lt;br /&gt;
	based on the&lt;br /&gt;
	Entity Contributor Exclusive License Agreement&lt;br /&gt;
	(including the Traditional Patent License OPTION)&lt;br /&gt;
&lt;br /&gt;
	Thank you for your interest in contributing to Eco-Libre&#039;s ____________________ (&amp;quot;We&amp;quot; or &amp;quot;Us&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
	The purpose of this contributor agreement (&amp;quot;Agreement&amp;quot;) is to clarify and document the rights granted by contributors to Us. To make this document effective, please follow the instructions at ____________________.&lt;br /&gt;
	Preamble&lt;br /&gt;
&lt;br /&gt;
	Software is deeply embedded in all aspects of our lives and it is important that it empower, rather than restrict us. Free Software gives everybody the rights to use, understand, adapt and share software. These rights help support other fundamental freedoms like freedom of speech, press and privacy.&lt;br /&gt;
&lt;br /&gt;
	Development of Free Software can follow many patterns. In some cases whole development is handled by a sole programmer or a small group of people. But usually, the creation and maintenance of software is a complex process that requires the contribution of many individuals. This also affects who owns the rights to the software. In the latter case, rights in software are owned jointly by a great number of individuals.&lt;br /&gt;
&lt;br /&gt;
	To tackle this issue some projects require a full copyright assignment to be signed by all contributors. The problem with such assignments is that they often lack checks and balances that would protect the contributors from potential abuse of power from the new copyright holder.&lt;br /&gt;
&lt;br /&gt;
	FSFE’s Fiduciary License Agreement (FLA) was created by the Free Software Foundation Europe e.V. with just that in mind – to concentrate all deciding power within one entity and prevent fragmentation of rights on one hand, while on the other preventing that single entity from abusing its power. The main aim is to ensure that the software covered under the FLA will forever remain Free Software.&lt;br /&gt;
&lt;br /&gt;
	This process only serves for the transfer of economic rights. So-called moral rights (e.g. authors right to be identified as author) remain with the original author(s) and are inalienable.&lt;br /&gt;
	How to use this FLA&lt;br /&gt;
&lt;br /&gt;
	If You are an employee and have created the Contribution as part of your employment, You need to have Your employer approve this Agreement. If You do not own the Copyright in Your Contribution, any other author of the Contribution should also sign this. In any event, please contact Us at https://www.eco-libre.org/contact.&lt;br /&gt;
	Definitions&lt;br /&gt;
&lt;br /&gt;
	&amp;quot;You&amp;quot; means the individual Copyright owner who Submits a Contribution to Us; or&lt;br /&gt;
&lt;br /&gt;
	if the Copyright in the Contribution is held by a Legal Entity and the Contribution is being Submitted to Us on behalf of such Legal Entity, &amp;quot;You&amp;quot; means such Legal Entity.&lt;br /&gt;
&lt;br /&gt;
	&amp;quot;Contribution&amp;quot; means any original work of authorship, including any original modifications or additions to an existing work of authorship, Submitted for inclusion into Material by You to Us, in which you own the Copyright.&lt;br /&gt;
&lt;br /&gt;
	&amp;quot;Copyright&amp;quot; means all rights protecting works of authorship, including copyright, moral and neighboring rights, as appropriate, for the full term of their existence.&lt;br /&gt;
&lt;br /&gt;
	&amp;quot;Material&amp;quot; means the software and/or documentation of ____________________ that we make available to third parties.&lt;br /&gt;
&lt;br /&gt;
	&amp;quot;Submit&amp;quot; means any act by which a Contribution is transferred to Us by You by means of tangible or intangible media, including but not limited to electronic mailing lists, source code control systems, and issue tracking systems, but excluding any transfer that is conspicuously marked or otherwise designated in writing by You as &amp;quot;Not a Contribution.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
	&amp;quot;Documentation&amp;quot; means any non-software portion of a Contribution.&lt;br /&gt;
	License grant&lt;br /&gt;
	Copyright license to Us&lt;br /&gt;
&lt;br /&gt;
	Subject to the terms and conditions of this Agreement, You hereby grant to Us a worldwide, royalty-free, exclusive, perpetual and irrevocable (except as stated in Section &amp;quot;Term&amp;quot;) license, with the right to transfer an unlimited number of non-exclusive licenses or to grant sublicenses to third parties, under the Copyright covering the Contribution to use the Contribution by all means, including, but not limited to:&lt;br /&gt;
		publish the Contribution,&lt;br /&gt;
		modify the Contribution,&lt;br /&gt;
		prepare derivative works based upon or containing the Contribution and/or to combine the Contribution with other Materials,&lt;br /&gt;
		reproduce the Contribution in original or modified form,&lt;br /&gt;
		distribute, to make the Contribution available to the public, display and publicly perform the Contribution in original or modified form.&lt;br /&gt;
	Moral rights&lt;br /&gt;
&lt;br /&gt;
	Moral Rights remain unaffected to the extent they are recognized and not waivable by applicable law. Notwithstanding, You may add your name to the attribution mechanism customary used in the Materials you Contribute to, such as the header of the source code files of Your Contribution, and We will respect this attribution when using Your Contribution.&lt;br /&gt;
	Copyright license back to You&lt;br /&gt;
&lt;br /&gt;
	Upon such grant of rights to Us, We immediately grant to You a worldwide, royalty-free, non-exclusive, perpetual and irrevocable license, with the right to transfer an unlimited number of non-exclusive licenses or to grant sublicenses to third parties, under the Copyright covering the Contribution to use the Contribution by all means, including, but not limited to:&lt;br /&gt;
		publish the Contribution,&lt;br /&gt;
		modify the Contribution,&lt;br /&gt;
		prepare derivative works based upon or containing the Contribution and/or to combine the Contribution with other Materials,&lt;br /&gt;
		reproduce the Contribution in original or modified form,&lt;br /&gt;
		distribute, to make the Contribution available to the public, display and publicly perform the Contribution in original or modified form.&lt;br /&gt;
&lt;br /&gt;
	This license back is limited to the Contribution and does not provide any rights to the Material.&lt;br /&gt;
	Patents&lt;br /&gt;
	Patent license&lt;br /&gt;
&lt;br /&gt;
	Subject to the terms and conditions of this Agreement You hereby grant to Us and to recipients of Materials distributed by Us a worldwide, royalty-free, non-exclusive, perpetual and irrevocable (except as stated in Subsection &amp;quot;Revocation of patent license&amp;quot;) patent license, with the right to transfer an unlimited number of non-exclusive licenses or to grant sublicenses to third parties, to make, have made, use, sell, offer for sale, import and otherwise transfer the Contribution and the Contribution in combination with any Material (and portions of such combination). This license applies to all patents owned or controlled by You, whether already acquired or hereafter acquired, that would be infringed by making, having made, using, selling, offering for sale, importing or otherwise transferring of Your Contribution(s) alone or by combination of Your Contribution(s) with any Material.&lt;br /&gt;
	Revocation of patent license&lt;br /&gt;
&lt;br /&gt;
	You reserve the right to revoke the patent license stated in Subsection &amp;quot;Patent license&amp;quot; if We make any infringement claim that is targeted at your Contribution and not asserted for a Defensive Purpose. An assertion of claims of the Patents shall be considered for a &amp;quot;Defensive Purpose&amp;quot; if the claims are asserted against an entity that has filed, maintained, threatened, or voluntarily participated in a patent infringement lawsuit against Us or any of Our licensees.&lt;br /&gt;
	License obligations by Us&lt;br /&gt;
&lt;br /&gt;
	We may, but are under no obligation to, include the Contribution You Submitted to Us into the Material.&lt;br /&gt;
&lt;br /&gt;
	We agree to (sub)license the Contribution or any Materials containing, based on or derived from your Contribution under the terms of any licenses that qualify as [Free Software](https://www.gnu.org/philosophy/free-sw.html) as defined by the Free Software Foundation and at the same time qualify as [Open Source](https://opensource.org/osd) as defined by the Open Source Initiative. For clarification, should we make available any Material under a non-free or non-open license, we must make a version of such Material available under a free and open license too.&lt;br /&gt;
&lt;br /&gt;
	More specifically and in strict accordance with the above paragraph, we agree to (sub)license the Contribution or any Materials containing, based on or derived from the Contribution only under the terms of the following license(s) GPL-3.0, MIT (including any right to adopt any future version of a license if permitted), whereby any non-free or non-open licenses need to be listed as well.&lt;br /&gt;
&lt;br /&gt;
	We agree to license patents owned or controlled by You only to the extent necessary to (sub)license Your Contribution(s) and the combination of Your Contribution(s) with the Material under the terms of any licenses the Free Software Foundation classifies as Free Software licenses and which are approved by the Open Source Initiative as Open Source licenses..&lt;br /&gt;
	Disclaimer&lt;br /&gt;
	**We acknowledge that you provide the Contribution &amp;quot;as is&amp;quot;.** **More particularly, You disclaim all express or implied warranties including, without limitation, any implied warranty of satisfactory quality, fitness for a particular purpose and non-infringement. To the extent that any such warranties cannot be disclaimed, such warranty is limited in duration and extent to the minimum period and extent permitted by law.**&lt;br /&gt;
	Consequential damage waiver&lt;br /&gt;
&lt;br /&gt;
	**To the maximum extent permitted by applicable law, in no event will You or We be liable for any loss of profits, loss of anticipated savings, loss of data, indirect, special, incidental, consequential and exemplary damages arising out of this Agreement regardless of the legal or equitable theory (contract, tort or otherwise) upon which the claim is based.**&lt;br /&gt;
	Approximation of disclaimer and damage waiver&lt;br /&gt;
&lt;br /&gt;
	**If the disclaimer and damage waiver mentioned in Subsection &amp;quot;Disclaimer of warranty&amp;quot; and Section &amp;quot;Consequential damage waiver&amp;quot; cannot be given legal effect under applicable local law, reviewing courts shall apply local law that most closely approximates an absolute waiver of all civil or contractual liability in connection with the Contribution.**&lt;br /&gt;
	Term&lt;br /&gt;
&lt;br /&gt;
	This Agreement shall come into effect upon Your acceptance of the terms and conditions.&lt;br /&gt;
&lt;br /&gt;
	This Agreement shall apply for the term of the copyright and patents licensed here. However, You shall have the right to terminate the Agreement if We do not fulfill the obligations as set forth in Section &amp;quot;License obligations by Us&amp;quot;. Such termination must be made in writing.&lt;br /&gt;
&lt;br /&gt;
	In the event of a termination of this Agreement Sections &amp;quot;Disclaimer&amp;quot;, &amp;quot;Term&amp;quot; and &amp;quot;Miscellaneous&amp;quot; shall survive such termination and shall remain in full force thereafter. For the avoidance of doubt, Free and Open Source Software (sub)licenses that have already been granted for Contributions at the date of the termination shall remain in full force after the termination of this Agreement.&lt;br /&gt;
	Miscellaneous&lt;br /&gt;
&lt;br /&gt;
	This Agreement and all disputes, claims, actions, suits or other proceedings arising out of this agreement or relating in any way to it shall be governed by the laws of Ecuador excluding its private international law provisions.&lt;br /&gt;
&lt;br /&gt;
	This Agreement sets out the entire agreement between You and Us for Your Contributions to Us and overrides all other agreements or understandings.&lt;br /&gt;
&lt;br /&gt;
	In case of Your death, this agreement shall continue with Your heirs. In case of more than one heir, all heirs must exercise their rights through a commonly authorized person.&lt;br /&gt;
&lt;br /&gt;
	If any provision of this Agreement is found void and unenforceable, such provision will be replaced to the extent possible with a provision that comes closest to the meaning of the original provision and that is enforceable. The terms and conditions set forth in this Agreement shall apply notwithstanding any failure of essential purpose of this Agreement or any limited remedy to the maximum extent possible under law.&lt;br /&gt;
&lt;br /&gt;
	You agree to notify Us of any facts or circumstances of which you become aware that would make Your representations under this Agreement inaccurate in any respect.&lt;br /&gt;
	You&lt;br /&gt;
	Date:	&lt;br /&gt;
	Name:	&lt;br /&gt;
	Title:	&lt;br /&gt;
	Address:	&lt;br /&gt;
	Us&lt;br /&gt;
	Date:	&lt;br /&gt;
	Name:	&lt;br /&gt;
	Title:	&lt;br /&gt;
	Address:	&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## the generator didn&#039;t let me choose &amp;quot;CC BY-SA&amp;quot; as one of the licnese, so I chose &amp;quot;MIT&amp;quot; so we could find/replace it later&lt;br /&gt;
# oh, if I change the first page&#039;s option to &amp;quot;let me do what I want&amp;quot; then the second page has an option to include CC BY-SA. that changed it to:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	Contributor Agreement&lt;br /&gt;
	Individual Contributor Exclusive License Agreement&lt;br /&gt;
	(including the Traditional Patent License OPTION)&lt;br /&gt;
&lt;br /&gt;
	Thank you for your interest in contributing to Eco-Libre&#039;s ____________________ (&amp;quot;We&amp;quot; or &amp;quot;Us&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
	The purpose of this contributor agreement (&amp;quot;Agreement&amp;quot;) is to clarify and document the rights granted by contributors to Us. To make this document effective, please follow the instructions at ____________________.&lt;br /&gt;
	How to use this Contributor Agreement&lt;br /&gt;
&lt;br /&gt;
	If You are an employee and have created the Contribution as part of your employment, You need to have Your employer approve this Agreement. If You do not own the Copyright in Your Contribution, any other author of the Contribution should also sign this. In any event, please contact Us at https://www.eco-libre.org/contact.&lt;br /&gt;
	Definitions&lt;br /&gt;
&lt;br /&gt;
	&amp;quot;You&amp;quot; means the individual Copyright owner who Submits a Contribution to Us; or&lt;br /&gt;
&lt;br /&gt;
	if the Copyright in the Contribution is held by a Legal Entity and the Contribution is being Submitted to Us on behalf of such Legal Entity, &amp;quot;You&amp;quot; means such Legal Entity.&lt;br /&gt;
&lt;br /&gt;
	&amp;quot;Contribution&amp;quot; means any original work of authorship, including any original modifications or additions to an existing work of authorship, Submitted for inclusion into Material by You to Us, in which you own the Copyright.&lt;br /&gt;
&lt;br /&gt;
	&amp;quot;Copyright&amp;quot; means all rights protecting works of authorship, including copyright, moral and neighboring rights, as appropriate, for the full term of their existence.&lt;br /&gt;
&lt;br /&gt;
	&amp;quot;Material&amp;quot; means the software and/or documentation of ____________________ that we make available to third parties.&lt;br /&gt;
&lt;br /&gt;
	&amp;quot;Submit&amp;quot; means any act by which a Contribution is transferred to Us by You by means of tangible or intangible media, including but not limited to electronic mailing lists, source code control systems, and issue tracking systems, but excluding any transfer that is conspicuously marked or otherwise designated in writing by You as &amp;quot;Not a Contribution.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
	&amp;quot;Documentation&amp;quot; means any non-software portion of a Contribution.&lt;br /&gt;
	License grant&lt;br /&gt;
	Copyright license to Us&lt;br /&gt;
&lt;br /&gt;
	Subject to the terms and conditions of this Agreement, You hereby grant to Us a worldwide, royalty-free, exclusive, perpetual and irrevocable (except as stated in Section &amp;quot;Term&amp;quot;) license, with the right to transfer an unlimited number of non-exclusive licenses or to grant sublicenses to third parties, under the Copyright covering the Contribution to use the Contribution by all means, including, but not limited to:&lt;br /&gt;
		publish the Contribution,&lt;br /&gt;
		modify the Contribution,&lt;br /&gt;
		prepare derivative works based upon or containing the Contribution and/or to combine the Contribution with other Materials,&lt;br /&gt;
		reproduce the Contribution in original or modified form,&lt;br /&gt;
		distribute, to make the Contribution available to the public, display and publicly perform the Contribution in original or modified form.&lt;br /&gt;
	Moral rights&lt;br /&gt;
&lt;br /&gt;
	Moral Rights remain unaffected to the extent they are recognized and not waivable by applicable law. Notwithstanding, You may add your name to the attribution mechanism customary used in the Materials you Contribute to, such as the header of the source code files of Your Contribution, and We will respect this attribution when using Your Contribution.&lt;br /&gt;
	Copyright license back to You&lt;br /&gt;
&lt;br /&gt;
	Upon such grant of rights to Us, We immediately grant to You a worldwide, royalty-free, non-exclusive, perpetual and irrevocable license, with the right to transfer an unlimited number of non-exclusive licenses or to grant sublicenses to third parties, under the Copyright covering the Contribution to use the Contribution by all means, including, but not limited to:&lt;br /&gt;
		publish the Contribution,&lt;br /&gt;
		modify the Contribution,&lt;br /&gt;
		prepare derivative works based upon or containing the Contribution and/or to combine the Contribution with other Materials,&lt;br /&gt;
		reproduce the Contribution in original or modified form,&lt;br /&gt;
		distribute, to make the Contribution available to the public, display and publicly perform the Contribution in original or modified form.&lt;br /&gt;
&lt;br /&gt;
	This license back is limited to the Contribution and does not provide any rights to the Material.&lt;br /&gt;
	Patents&lt;br /&gt;
	Patent license&lt;br /&gt;
&lt;br /&gt;
	Subject to the terms and conditions of this Agreement You hereby grant to Us and to recipients of Materials distributed by Us a worldwide, royalty-free, non-exclusive, perpetual and irrevocable (except as stated in Subsection &amp;quot;Revocation of patent license&amp;quot;) patent license, with the right to transfer an unlimited number of non-exclusive licenses or to grant sublicenses to third parties, to make, have made, use, sell, offer for sale, import and otherwise transfer the Contribution and the Contribution in combination with any Material (and portions of such combination). This license applies to all patents owned or controlled by You, whether already acquired or hereafter acquired, that would be infringed by making, having made, using, selling, offering for sale, importing or otherwise transferring of Your Contribution(s) alone or by combination of Your Contribution(s) with any Material.&lt;br /&gt;
	Revocation of patent license&lt;br /&gt;
&lt;br /&gt;
	You reserve the right to revoke the patent license stated in Subsection &amp;quot;Patent license&amp;quot; if We make any infringement claim that is targeted at your Contribution and not asserted for a Defensive Purpose. An assertion of claims of the Patents shall be considered for a &amp;quot;Defensive Purpose&amp;quot; if the claims are asserted against an entity that has filed, maintained, threatened, or voluntarily participated in a patent infringement lawsuit against Us or any of Our licensees.&lt;br /&gt;
	License obligations by Us&lt;br /&gt;
&lt;br /&gt;
	We may, but are under no obligation to, include the Contribution You Submitted to Us into the Material.&lt;br /&gt;
&lt;br /&gt;
	We agree to license the Contribution only under the terms of the following license(s) GPL-3.0 (including any right to adopt any future version of a license if permitted), whereby any non-free or non-open licenses need to be listed as well.&lt;br /&gt;
&lt;br /&gt;
	In addition, We may use the following licenses for Documentation in the Contribution: CC-BY-SA-4.0 (including any right to adopt any future version of a license).&lt;br /&gt;
&lt;br /&gt;
	We agree to license patents owned or controlled by You only to the extent necessary to (sub)license Your Contribution(s) and the combination of Your Contribution(s) with the Material under the terms of the following GPL-3.0 license(s).&lt;br /&gt;
	Disclaimer&lt;br /&gt;
	**We acknowledge that you provide the Contribution &amp;quot;as is&amp;quot;.** **More particularly, You disclaim all express or implied warranties including, without limitation, any implied warranty of satisfactory quality, fitness for a particular purpose and non-infringement. To the extent that any such warranties cannot be disclaimed, such warranty is limited in duration and extent to the minimum period and extent permitted by law.**&lt;br /&gt;
	Consequential damage waiver&lt;br /&gt;
&lt;br /&gt;
	**To the maximum extent permitted by applicable law, in no event will You or We be liable for any loss of profits, loss of anticipated savings, loss of data, indirect, special, incidental, consequential and exemplary damages arising out of this Agreement regardless of the legal or equitable theory (contract, tort or otherwise) upon which the claim is based.**&lt;br /&gt;
	Approximation of disclaimer and damage waiver&lt;br /&gt;
&lt;br /&gt;
	**If the disclaimer and damage waiver mentioned in Subsection &amp;quot;Disclaimer of warranty&amp;quot; and Section &amp;quot;Consequential damage waiver&amp;quot; cannot be given legal effect under applicable local law, reviewing courts shall apply local law that most closely approximates an absolute waiver of all civil or contractual liability in connection with the Contribution.**&lt;br /&gt;
	Term&lt;br /&gt;
&lt;br /&gt;
	This Agreement shall come into effect upon Your acceptance of the terms and conditions.&lt;br /&gt;
&lt;br /&gt;
	This Agreement shall apply for the term of the copyright and patents licensed here. However, You shall have the right to terminate the Agreement if We do not fulfill the obligations as set forth in Section &amp;quot;License obligations by Us&amp;quot;. Such termination must be made in writing.&lt;br /&gt;
&lt;br /&gt;
	In the event of a termination of this Agreement Sections &amp;quot;Disclaimer&amp;quot;, &amp;quot;Term&amp;quot; and &amp;quot;Miscellaneous&amp;quot; shall survive such termination and shall remain in full force thereafter. For the avoidance of doubt, Free and Open Source Software (sub)licenses that have already been granted for Contributions at the date of the termination shall remain in full force after the termination of this Agreement.&lt;br /&gt;
	Miscellaneous&lt;br /&gt;
&lt;br /&gt;
	This Agreement and all disputes, claims, actions, suits or other proceedings arising out of this agreement or relating in any way to it shall be governed by the laws of Ecuador excluding its private international law provisions.&lt;br /&gt;
&lt;br /&gt;
	This Agreement sets out the entire agreement between You and Us for Your Contributions to Us and overrides all other agreements or understandings.&lt;br /&gt;
&lt;br /&gt;
	In case of Your death, this agreement shall continue with Your heirs. In case of more than one heir, all heirs must exercise their rights through a commonly authorized person.&lt;br /&gt;
&lt;br /&gt;
	If any provision of this Agreement is found void and unenforceable, such provision will be replaced to the extent possible with a provision that comes closest to the meaning of the original provision and that is enforceable. The terms and conditions set forth in this Agreement shall apply notwithstanding any failure of essential purpose of this Agreement or any limited remedy to the maximum extent possible under law.&lt;br /&gt;
&lt;br /&gt;
	You agree to notify Us of any facts or circumstances of which you become aware that would make Your representations under this Agreement inaccurate in any respect.&lt;br /&gt;
	You&lt;br /&gt;
	Date:	&lt;br /&gt;
	Name:	&lt;br /&gt;
	Title:	&lt;br /&gt;
	Address:	&lt;br /&gt;
	Us&lt;br /&gt;
	Date:	&lt;br /&gt;
	Name:	&lt;br /&gt;
	Title:	&lt;br /&gt;
	Address:	&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
	Contributor Agreement&lt;br /&gt;
	Entity Contributor Exclusive License Agreement&lt;br /&gt;
	(including the Traditional Patent License OPTION)&lt;br /&gt;
&lt;br /&gt;
	Thank you for your interest in contributing to Eco-Libre&#039;s ____________________ (&amp;quot;We&amp;quot; or &amp;quot;Us&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
	The purpose of this contributor agreement (&amp;quot;Agreement&amp;quot;) is to clarify and document the rights granted by contributors to Us. To make this document effective, please follow the instructions at ____________________.&lt;br /&gt;
	How to use this Contributor Agreement&lt;br /&gt;
&lt;br /&gt;
	If You are an employee and have created the Contribution as part of your employment, You need to have Your employer approve this Agreement. If You do not own the Copyright in Your Contribution, any other author of the Contribution should also sign this. In any event, please contact Us at https://www.eco-libre.org/contact.&lt;br /&gt;
	Definitions&lt;br /&gt;
&lt;br /&gt;
	&amp;quot;You&amp;quot; means the individual Copyright owner who Submits a Contribution to Us; or&lt;br /&gt;
&lt;br /&gt;
	if the Copyright in the Contribution is held by a Legal Entity and the Contribution is being Submitted to Us on behalf of such Legal Entity, &amp;quot;You&amp;quot; means such Legal Entity.&lt;br /&gt;
&lt;br /&gt;
	&amp;quot;Contribution&amp;quot; means any original work of authorship, including any original modifications or additions to an existing work of authorship, Submitted for inclusion into Material by You to Us, in which you own the Copyright.&lt;br /&gt;
&lt;br /&gt;
	&amp;quot;Copyright&amp;quot; means all rights protecting works of authorship, including copyright, moral and neighboring rights, as appropriate, for the full term of their existence.&lt;br /&gt;
&lt;br /&gt;
	&amp;quot;Material&amp;quot; means the software and/or documentation of ____________________ that we make available to third parties.&lt;br /&gt;
&lt;br /&gt;
	&amp;quot;Submit&amp;quot; means any act by which a Contribution is transferred to Us by You by means of tangible or intangible media, including but not limited to electronic mailing lists, source code control systems, and issue tracking systems, but excluding any transfer that is conspicuously marked or otherwise designated in writing by You as &amp;quot;Not a Contribution.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
	&amp;quot;Documentation&amp;quot; means any non-software portion of a Contribution.&lt;br /&gt;
	License grant&lt;br /&gt;
	Copyright license to Us&lt;br /&gt;
&lt;br /&gt;
	Subject to the terms and conditions of this Agreement, You hereby grant to Us a worldwide, royalty-free, exclusive, perpetual and irrevocable (except as stated in Section &amp;quot;Term&amp;quot;) license, with the right to transfer an unlimited number of non-exclusive licenses or to grant sublicenses to third parties, under the Copyright covering the Contribution to use the Contribution by all means, including, but not limited to:&lt;br /&gt;
		publish the Contribution,&lt;br /&gt;
		modify the Contribution,&lt;br /&gt;
		prepare derivative works based upon or containing the Contribution and/or to combine the Contribution with other Materials,&lt;br /&gt;
		reproduce the Contribution in original or modified form,&lt;br /&gt;
		distribute, to make the Contribution available to the public, display and publicly perform the Contribution in original or modified form.&lt;br /&gt;
	Moral rights&lt;br /&gt;
&lt;br /&gt;
	Moral Rights remain unaffected to the extent they are recognized and not waivable by applicable law. Notwithstanding, You may add your name to the attribution mechanism customary used in the Materials you Contribute to, such as the header of the source code files of Your Contribution, and We will respect this attribution when using Your Contribution.&lt;br /&gt;
	Copyright license back to You&lt;br /&gt;
&lt;br /&gt;
	Upon such grant of rights to Us, We immediately grant to You a worldwide, royalty-free, non-exclusive, perpetual and irrevocable license, with the right to transfer an unlimited number of non-exclusive licenses or to grant sublicenses to third parties, under the Copyright covering the Contribution to use the Contribution by all means, including, but not limited to:&lt;br /&gt;
		publish the Contribution,&lt;br /&gt;
		modify the Contribution,&lt;br /&gt;
		prepare derivative works based upon or containing the Contribution and/or to combine the Contribution with other Materials,&lt;br /&gt;
		reproduce the Contribution in original or modified form,&lt;br /&gt;
		distribute, to make the Contribution available to the public, display and publicly perform the Contribution in original or modified form.&lt;br /&gt;
&lt;br /&gt;
	This license back is limited to the Contribution and does not provide any rights to the Material.&lt;br /&gt;
	Patents&lt;br /&gt;
	Patent license&lt;br /&gt;
&lt;br /&gt;
	Subject to the terms and conditions of this Agreement You hereby grant to Us and to recipients of Materials distributed by Us a worldwide, royalty-free, non-exclusive, perpetual and irrevocable (except as stated in Subsection &amp;quot;Revocation of patent license&amp;quot;) patent license, with the right to transfer an unlimited number of non-exclusive licenses or to grant sublicenses to third parties, to make, have made, use, sell, offer for sale, import and otherwise transfer the Contribution and the Contribution in combination with any Material (and portions of such combination). This license applies to all patents owned or controlled by You, whether already acquired or hereafter acquired, that would be infringed by making, having made, using, selling, offering for sale, importing or otherwise transferring of Your Contribution(s) alone or by combination of Your Contribution(s) with any Material.&lt;br /&gt;
	Revocation of patent license&lt;br /&gt;
&lt;br /&gt;
	You reserve the right to revoke the patent license stated in Subsection &amp;quot;Patent license&amp;quot; if We make any infringement claim that is targeted at your Contribution and not asserted for a Defensive Purpose. An assertion of claims of the Patents shall be considered for a &amp;quot;Defensive Purpose&amp;quot; if the claims are asserted against an entity that has filed, maintained, threatened, or voluntarily participated in a patent infringement lawsuit against Us or any of Our licensees.&lt;br /&gt;
	License obligations by Us&lt;br /&gt;
&lt;br /&gt;
	We may, but are under no obligation to, include the Contribution You Submitted to Us into the Material.&lt;br /&gt;
&lt;br /&gt;
	We agree to license the Contribution only under the terms of the following license(s) GPL-3.0 (including any right to adopt any future version of a license if permitted), whereby any non-free or non-open licenses need to be listed as well.&lt;br /&gt;
&lt;br /&gt;
	In addition, We may use the following licenses for Documentation in the Contribution: CC-BY-SA-4.0 (including any right to adopt any future version of a license).&lt;br /&gt;
&lt;br /&gt;
	We agree to license patents owned or controlled by You only to the extent necessary to (sub)license Your Contribution(s) and the combination of Your Contribution(s) with the Material under the terms of the following GPL-3.0 license(s).&lt;br /&gt;
	Disclaimer&lt;br /&gt;
	**We acknowledge that you provide the Contribution &amp;quot;as is&amp;quot;.** **More particularly, You disclaim all express or implied warranties including, without limitation, any implied warranty of satisfactory quality, fitness for a particular purpose and non-infringement. To the extent that any such warranties cannot be disclaimed, such warranty is limited in duration and extent to the minimum period and extent permitted by law.**&lt;br /&gt;
	Consequential damage waiver&lt;br /&gt;
&lt;br /&gt;
	**To the maximum extent permitted by applicable law, in no event will You or We be liable for any loss of profits, loss of anticipated savings, loss of data, indirect, special, incidental, consequential and exemplary damages arising out of this Agreement regardless of the legal or equitable theory (contract, tort or otherwise) upon which the claim is based.**&lt;br /&gt;
	Approximation of disclaimer and damage waiver&lt;br /&gt;
&lt;br /&gt;
	**If the disclaimer and damage waiver mentioned in Subsection &amp;quot;Disclaimer of warranty&amp;quot; and Section &amp;quot;Consequential damage waiver&amp;quot; cannot be given legal effect under applicable local law, reviewing courts shall apply local law that most closely approximates an absolute waiver of all civil or contractual liability in connection with the Contribution.**&lt;br /&gt;
	Term&lt;br /&gt;
&lt;br /&gt;
	This Agreement shall come into effect upon Your acceptance of the terms and conditions.&lt;br /&gt;
&lt;br /&gt;
	This Agreement shall apply for the term of the copyright and patents licensed here. However, You shall have the right to terminate the Agreement if We do not fulfill the obligations as set forth in Section &amp;quot;License obligations by Us&amp;quot;. Such termination must be made in writing.&lt;br /&gt;
&lt;br /&gt;
	In the event of a termination of this Agreement Sections &amp;quot;Disclaimer&amp;quot;, &amp;quot;Term&amp;quot; and &amp;quot;Miscellaneous&amp;quot; shall survive such termination and shall remain in full force thereafter. For the avoidance of doubt, Free and Open Source Software (sub)licenses that have already been granted for Contributions at the date of the termination shall remain in full force after the termination of this Agreement.&lt;br /&gt;
	Miscellaneous&lt;br /&gt;
&lt;br /&gt;
	This Agreement and all disputes, claims, actions, suits or other proceedings arising out of this agreement or relating in any way to it shall be governed by the laws of Ecuador excluding its private international law provisions.&lt;br /&gt;
&lt;br /&gt;
	This Agreement sets out the entire agreement between You and Us for Your Contributions to Us and overrides all other agreements or understandings.&lt;br /&gt;
&lt;br /&gt;
	In case of Your death, this agreement shall continue with Your heirs. In case of more than one heir, all heirs must exercise their rights through a commonly authorized person.&lt;br /&gt;
&lt;br /&gt;
	If any provision of this Agreement is found void and unenforceable, such provision will be replaced to the extent possible with a provision that comes closest to the meaning of the original provision and that is enforceable. The terms and conditions set forth in this Agreement shall apply notwithstanding any failure of essential purpose of this Agreement or any limited remedy to the maximum extent possible under law.&lt;br /&gt;
&lt;br /&gt;
	You agree to notify Us of any facts or circumstances of which you become aware that would make Your representations under this Agreement inaccurate in any respect.&lt;br /&gt;
	You&lt;br /&gt;
	Date:	&lt;br /&gt;
	Name:	&lt;br /&gt;
	Title:	&lt;br /&gt;
	Address:	&lt;br /&gt;
	Us&lt;br /&gt;
	Date:	&lt;br /&gt;
	Name:	&lt;br /&gt;
	Title:	&lt;br /&gt;
	Address:	&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# well, I&#039;m still not sure what to use. In the meantime, I went ahead and updated the wiki ToS to include an unaltered version of the Linux Foundation&#039;s DCO https://wiki.eco-libre.org/wiki/Eco-Libre:Terms_of_Service&lt;br /&gt;
## I also added a section on the license, because the DCO (which I can&#039;t edit) referes to &amp;quot;the open source license indicated in the file&amp;quot;&lt;br /&gt;
## alright, that&#039;s a placeholder. I&#039;ll wait to see if we get a response from the home automation folks and/or the OSHWA.&lt;br /&gt;
# oh, TIL that OSE *does* use CERN OHL-S-2.0 for hardware files https://wiki.opensourceecology.org/wiki/OSE_License_for_Distributive_Economics&lt;br /&gt;
## but their wiki is a mess. it says dual-licensed under the GNU Free Documentation License and CC BY-SA on this page https://wiki.opensourceecology.org/wiki/Media-wiki:Copyright&lt;br /&gt;
## while this page says just CC BY-SA for wiki and design files, CERN OHL-S-2.0 for hardware files, and GPL v3 for code https://wiki.opensourceecology.org/wiki/OSE_License_for_Distributive_Economics&lt;br /&gt;
## there&#039;s a section on CAs, which just says that we need a paper with NAME OF PERSON and SPECIFIED DATE https://wiki.opensourceecology.org/wiki/OSE_License_for_Distributive_Economics&lt;br /&gt;
## looks like they started working on a &amp;quot;distributed enterprise license&amp;quot; – but I can&#039;t find anything but a sketch outline&lt;br /&gt;
### https://wiki.opensourceecology.org/wiki/OSE_License_for_Distributive_Enterprise&lt;br /&gt;
### https://wiki.opensourceecology.org/wiki/OSE_License_for_Distributive_Economics_-_Requirements&lt;br /&gt;
## ah ha! apparently Marcin&#039;s legal advisor volunteer person suggested https://contributoragreements.org per https://wiki.opensourceecology.org/wiki/Contributor_Agreement&lt;br /&gt;
# alright, I think I&#039;ll do one of the contributoragreements.org developed above. I&#039;ll draft it into a nice-looking odt -&amp;gt; pdf and upload it to opensign. then we&#039;ll be ready to accept volunteer contributions to our repos &amp;amp; wiki, like, very legally sound &lt;br /&gt;
&lt;br /&gt;
= 2026-04-21 =&lt;br /&gt;
# I published and did the social media marketing for our announcement that we&#039;re accepting tax-deductable donations via raft today https://www.eco-libre.org/raft-2026/&lt;br /&gt;
# I, again, was unable to post to our X account.&lt;br /&gt;
## even though I enter the correct password, they demand an OTP sent to the email address used when the account was registered&lt;br /&gt;
## I guess they fired all the ex-twitter engineers with a brain, because they can&#039;t see that their emails are bouncing?&lt;br /&gt;
## I, maybe the 3rd or 4th time, told them that tutanota deleted our email address. And asked them to update the email address to one @eco-libre.org, which is pretty easy for a junior engineer to authenticate, since it&#039;s literally the domain assoaciated with our account. Auth done. QED. Here&#039;s their response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Reply above this line.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Hello,&lt;br /&gt;
&lt;br /&gt;
We=E2=80=99re writing to let you know that we=E2=80=99re unable to verify y=&lt;br /&gt;
ou as the account owner. We know this is disappointing to hear, but we can=&lt;br /&gt;
=E2=80=99t assist you further with accessing your account.&lt;br /&gt;
&lt;br /&gt;
If you know which email address or phone number is associated with the acco=&lt;br /&gt;
unt, and you no longer have access to that email or connected phone number,=&lt;br /&gt;
 please contact your service provider for assistance.&lt;br /&gt;
&lt;br /&gt;
For privacy reasons, we can=E2=80=99t provide any information about this ac=&lt;br /&gt;
count=E2=80=99s registered email address or phone number&lt;br /&gt;
&lt;br /&gt;
We understand it=E2=80=99s frustrating to get locked out of an account, but=&lt;br /&gt;
 we have these policies to protect accounts and private data. We appreciate=&lt;br /&gt;
 your understanding.&lt;br /&gt;
&lt;br /&gt;
You=E2=80=99re more than welcome to create a new account to get back onto X=&lt;br /&gt;
.&lt;br /&gt;
&lt;br /&gt;
Please do not respond to this email as replies to this account are not moni=&lt;br /&gt;
tored.&lt;br /&gt;
&lt;br /&gt;
Thanks,&lt;br /&gt;
X Support&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## So, fuck X. This is why we shouldn&#039;t use corporate, non-federated social media.&lt;br /&gt;
## oh, and I was also unable to log into reddit. Similar issue. I get this, just for a GET on /login – before they even asked me for creds!&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
You&#039;ve been blocked by network security.&lt;br /&gt;
If you think you&#039;ve been blocked by mistake, file a ticket below and we&#039;ll look into it.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# again, this is why we use better non-corportate social media. Now on lemmy!&lt;br /&gt;
## https://chaos.social/@ecolibre/116443354810130299&lt;br /&gt;
## https://slrpnk.net/post/36851013&lt;br /&gt;
# woah, mastodon has a new link under the post that says &amp;quot;More from Eco-Libre Team&amp;quot; which links here https://mastodon.social/@eco-libre@www.eco-libre.org&lt;br /&gt;
## that&#039;s, uhh, our wordpress site&#039;s ActivityPub plugins&#039; actor! The one that I couldn&#039;t finish setting-up due to the 5xx error (see previous log entries)&lt;br /&gt;
## so i guess it&#039;s working under defaults&lt;br /&gt;
## as I found before, it doesn&#039;t show previous content until after you subscribe, so the page on mastodon doesn&#039;t even show today&#039;s post :(&lt;br /&gt;
## I&#039;m thinking the best way to use this is to not really advertise wordpress as an endpoint. But, rather, to just setup our other federated-service-x-native account to subscribe and auto-boost our wordpress posts. That way we don&#039;t even have to login to mastodon or lemmy or whatever else. We can just automate the distribution from wordpress via ActivityPub to all our other federated social media accounts.&lt;br /&gt;
## anyway, I subscribed to @eco-libre@www.eco-libre.org from my personal mastodon account and our eco-libre mastodon account. let&#039;s see what that looks like over time.&lt;br /&gt;
# I logged-into our raft (private) discourse to ask if they have a mastodon account https://raft.talk/t/following-raft-on-the-fediverse/45/1&lt;br /&gt;
## I also followd-up with a thread in which I asked about a vector logo. Nathan (founder) said they don&#039;t have one, so I spent about an hour generating a few different decent-looking vectors from the png using inkscape&#039;s Trace Bitmap tool, and shared it – so others can have it in the future https://raft.talk/t/raft-logo-vector-svg/31/3&lt;br /&gt;
## I also realized that I had started (but not finished) asking the community for advice on how to get volunteers from &amp;quot;volutneer social year&amp;quot; programs like the Freiwilliges Soziales Jahr in Germany or the European Solidarity Corps or the US Peace Corps. So I finished that https://raft.talk/t/getting-state-sponsored-volunteers-voluntary-social-year/46&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Does anyone have experience here in getting volunteers via State-sponsored programs, like the US Peace Core, Germany&#039;s Voluntary Social Year (Freiwilliges Soziales Jahr), or the EU Solidarity Corps?&lt;br /&gt;
&lt;br /&gt;
 * https://en.wikipedia.org/wiki/Voluntary_social_year&lt;br /&gt;
 * https://en.wikipedia.org/wiki/European_Solidarity_Corps&lt;br /&gt;
&lt;br /&gt;
I&#039;ve met a *lot* of Germans (and one person from Liechtenstein!) who took their [gap year](https://en.wikipedia.org/wiki/Gap_year) off to go abroad and help some cool non-profit.&lt;br /&gt;
&lt;br /&gt;
Our project&#039;s mission is to develop and document [open-source appropriate technology](https://en.wikipedia.org/wiki/Open-source_appropriate_technology) to enfranchise sustainable communities&#039; human rights. And we need volunteers!&lt;br /&gt;
&lt;br /&gt;
I&#039;m wondering if anyone else here has experience satisfying the requirements of such orgs, so that we can get listed in their &amp;quot;directory of cool nonprofits abroad&amp;quot; that their want-to-be-volunteers will see (and can apply-to).&lt;br /&gt;
&lt;br /&gt;
I imagine that one key requirement is met by us being able to provide Raft&#039;s IRS Determination Letter. What else do we need to do? Where do we apply?&lt;br /&gt;
&lt;br /&gt;
Can anyone with experience provide tips (or a link to a guide?) on how to get volunteers abroad doing a &amp;quot;voluntary social year&amp;quot;?&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# ...&lt;br /&gt;
# back to Terms of Use, which is where we left-off on the wiki&#039;s config of ConfirmAccount extension&lt;br /&gt;
## honestly, we probably should write a ToS for all volunteers, which extends beyond just the wiki&lt;br /&gt;
## I have already drafted (not yet published) some agreements for volunteers, but we haven&#039;t had any in-person volunteers that required us to use it&lt;br /&gt;
## so, I guess, we need distinct agreements for people who volunteer remotely vs volunteer in-person&lt;br /&gt;
## in any case, even in-person volunteers are going to start remotely &amp;gt;99% of the time, so we should probably figure out some system for them to &amp;quot;sign a document&amp;quot; such that a copy gets sent to them and stored with us&lt;br /&gt;
## the first thing that comes to the top of my head is copyleft. We need folks to agree that all of their contributions to Eco-Libre will be copyleft under dual license of CC BY-SA and GNU GPL.&lt;br /&gt;
## can I find some libre service that&#039;s like docusign for this? https://alternativeto.net/software/docusign/&lt;br /&gt;
### DocuSeal https://www.docuseal.com&lt;br /&gt;
#### + free cloud account (limited to 10 field types and 10 requests emails per month)&lt;br /&gt;
#### + self-hostable https://github.com/docusealco/docuseal&lt;br /&gt;
#### - docker https://www.docuseal.com/install&lt;br /&gt;
#### - even self -hosted solution has usage limits without buying a license https://www.docuseal.com/pricing&lt;br /&gt;
### OpenSign https://www.opensignlabs.com&lt;br /&gt;
#### + free cloud account (limited to 14 field types)&lt;br /&gt;
#### + self hostable https://www.docuseal.com&lt;br /&gt;
#### - docker https://docs.opensignlabs.com/docs/category/docker&lt;br /&gt;
#### + self-hosted doesn&#039;t appear to have any restrictions&lt;br /&gt;
### Documenso https://docs.opensignlabs.com/docs/category/docker&lt;br /&gt;
#### + free cloud account (limited to 5 documents per month) https://documenso.com/pricing&lt;br /&gt;
#### + self-hostable https://github.com/documenso/documenso&lt;br /&gt;
#### - docker https://docs.documenso.com/docs/self-hosting/deployment&lt;br /&gt;
#### + baremetal (non-docker) installation is documented https://github.com/documenso/documenso&lt;br /&gt;
#### - it&#039;s nodejs w/ npm&lt;br /&gt;
### LibreSign https://libresign.coop/&lt;br /&gt;
#### - no free cloud plan https://libresign.coop/pricing/&lt;br /&gt;
#### + self-hostable https://github.com/LibreSign/libresign&lt;br /&gt;
#### - no docs for self-hosting? installtion guide?&lt;br /&gt;
#### + github says it&#039;s a nextcloud app&lt;br /&gt;
## well, of thse, I think OpenSign or DDocumenso are the best options. my biggest concern is: can we export everything from the site, if they ever eliminate their free plan (or we outgrow them)?&lt;br /&gt;
## let&#039;s create accounts with both and get a feel for it&lt;br /&gt;
### well, shit, the signup page for documenso included their &amp;quot;sign here&amp;quot; digital field. It was so shitty, it nearly crashed my browser. so let&#039;s try open sign instead.&lt;br /&gt;
## ugh, OpenSign requires a phone number on sign-up&lt;br /&gt;
### ugh, password policy is dumb. it rejected a &amp;gt;50 char password because it requires a special symbol. makes me question their security. fortunately, these documents would need to be public, anyway.&lt;br /&gt;
### it accepted a bullshit phone number. good&lt;br /&gt;
### I immediately went to settings&lt;br /&gt;
#### I changed the document download filename format to include the date. It always bothers me when documents aren&#039;t dated in the filename..&lt;br /&gt;
#### I changed the date format to YYYY-MM-DD – iso format, sortable, and no ambiguity&lt;br /&gt;
#### In the setting&#039;s &amp;quot;widgets&amp;quot; tab, I also set the date to YYYY-MM-DD&lt;br /&gt;
#### In the settings&#039; &amp;quot;security&amp;quot; tab, I setup TOTP 2FA&lt;br /&gt;
### I went to my &amp;quot;profile&amp;quot;&lt;br /&gt;
#### It said my email wasn&#039;t verified. I never got an email *to* verify. I clicked the &amp;quot;Verify&amp;quot; button&lt;br /&gt;
##### gross. it sent an email with an OTP. the email had text/plain, but the only contents was &amp;quot;otp email&amp;quot;. I had to dig through some html to find the code.&lt;br /&gt;
# I clicked around in OpenSign. I expected there would be some place where I could type a document, but it only allows me to upload a pdf, jpg, png, jpeg, or docx. whey not OpenOffice (LibreOffice)? Hmm.&lt;br /&gt;
# not sure how this translates into being able to add input fields.&lt;br /&gt;
# using libreoffice, I created a test document with the contents&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
I agree not to act like an evil corporation.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# I exported it as a pdf, and uploaded it as a new &amp;quot;template&amp;quot; to opensign&lt;br /&gt;
## there&#039;s a lot of settings you can make&lt;br /&gt;
### you can change it so that everyone can sign at once, or (the default) has the intended party sign, then I sign. But I&#039;m not sure if I will *want* Eco-Libre to sign these documents at all?&lt;br /&gt;
### you can set the number of days that the person has to sign. it defaults to 15.&lt;br /&gt;
### you can add a bcc&lt;br /&gt;
### you can make the &amp;quot;certification pdf&amp;quot; merged into the signed document. well, apparently only if you pay for an upgrade. whatever.&lt;br /&gt;
### ah man, there&#039;s a cool feature that requries an OTP from the email address, but it requires upgrade&lt;br /&gt;
### you can specify a &amp;quot;redirect url&amp;quot; which is blank by default. I guess that&#039;s where they get sent after signing. That&#039;s cool. I could have it redirect to a &amp;quot;thank you; here&#039;s the next steps&amp;quot; doc. I set it to &#039;https://eco-libre.github.io/volunteer-test/&#039;&lt;br /&gt;
#### I&#039;m beginning to wonder if I shouldn&#039;t have made a repo named &#039;volunteer-test&#039; but instead made one named &#039;volunteer-onboarding&#039; in-which the volunteer test was only one section. hmm.&lt;br /&gt;
### the only other thing I could change was the pen ink colors. here in Ecuador, everything should be blue. so I disabled black and red.&lt;br /&gt;
## ok, after I click &amp;quot;next&amp;quot; I can decorate the page with a bunch of widgets. note that I cannot edit the text&lt;br /&gt;
### you can add a &amp;quot;role&amp;quot; for someone to sign. I just want one = the volunteer. So I added one named &amp;quot;Volunteer&amp;quot;&lt;br /&gt;
### I clicked the &amp;quot;Signature&amp;quot; widget, and a blue box popped-up on the bottom of the page&lt;br /&gt;
#### I hovered over it with my mouse, and a &amp;quot;gear&amp;quot; &amp;quot;person&amp;quot; &amp;quot;copy&amp;quot; and &amp;quot;trash&amp;quot; icons appeared.&lt;br /&gt;
#### I clicked the gear, and it let me choose the type of signatures accepted (draw, typed, upload, or default), and a &amp;quot;hint&amp;quot;&lt;br /&gt;
#### I clicked the &amp;quot;person&amp;quot; and it let me choose someone from contacts. I&#039;m creating a template, so that doesn&#039;t make sense (unless we had, like, *me* signing every document – which I don&#039;t think we&#039;ll do). So I left that empty&lt;br /&gt;
### there&#039;s a &amp;quot;text input widget&amp;quot;, which I guess is how I would let someone enter their name. I can make it optional, required, or read-only (relavant for the other &amp;quot;default value&amp;quot; option). I can change the font size and font color. So, I guess, the idea is that I would have left a blank space in the pdf, and later decorated it with this widget. I&#039;ll do that for the next test.&lt;br /&gt;
### there&#039;s a &amp;quot;image&amp;quot; widget – as in, the user can upload an image (I guess useful for profile photos)&lt;br /&gt;
### there&#039;s also widgets for stamp, initials, number, name, job title, company, email, date, cells, checkbox, dropdown, and radio button&lt;br /&gt;
### I dropped the &amp;quot;name&amp;quot; widget randomly near the top. So now I have two: name &amp;amp; signature.&lt;br /&gt;
### I saved the template&lt;br /&gt;
### I went back and edited it. I realized there&#039;s an option &amp;quot;prefiil by owner&amp;quot; vs &amp;quot;volunteer&amp;quot;. apparently I can add the name and stuff before I send it out. I left it at &amp;quot;volunteer&amp;quot;&lt;br /&gt;
## there was an option to make the template public, but I don&#039;t have a public profile. I went to edit my profile, but the box for entering my username for the public profile is grey-out. Unlike other places, it doesn&#039;t say &amp;quot;upgrade now&amp;quot; so idk wtf is going on&lt;br /&gt;
### after making it public, it gave me some js to embed the document. oh, so this is so that I can embed the docs on my own site. well, that&#039;s kinda cool. but I really don&#039;t want to embed a third party javascript.&lt;br /&gt;
## anyway, back to &amp;quot;manage templates&amp;quot;&lt;br /&gt;
### I tried to edit the template again, but it gave me an error&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
You cannot edit a public template directly. To make changes, the template will be set to private, and you&#039;ll need to make it public again afterward. Do you want to continue?&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
### so I unchecked &amp;quot;public&amp;quot; and edited it&lt;br /&gt;
### I added a &amp;quot;date&amp;quot; widget. I set it to &amp;quot;signing date&amp;quot; and &amp;quot;read only&amp;quot; and &amp;quot;required&amp;quot; and placed it just above the signature&lt;br /&gt;
## I went back to &amp;quot;manage templates&amp;quot; and clicked the &amp;quot;+ use&amp;quot; button.&lt;br /&gt;
### it gave me a drop down menu of our contacts, but it&#039;s empty. so I pressed the red &amp;quot;+&amp;quot; button to add a new contact&lt;br /&gt;
### I added a contact named &amp;quot;Michael Altfield&amp;quot; and my email address. then I selected this contact and clicked &amp;quot;next&amp;quot;&lt;br /&gt;
### It asked &amp;quot; Are you sure you want to send out this document for signatures?&amp;quot; and I clicked &amp;quot;Send&amp;quot;&lt;br /&gt;
### I immediately got an email. Again, the shitty email plaintext contetns was just &amp;quot;mail&amp;quot; and I had to read-through the html to find a encoding-broken link :/&lt;br /&gt;
#### I created a bug report for them to fix the `text/plain` content type of emails here https://github.com/OpenSignLabs/OpenSign/issues/2156&lt;br /&gt;
### using some mutt scripting fuckery, I&#039;m able to extract the URLs. But I can&#039;t figure out which one is to go to the document. Two of the four are both to &amp;quot;click.opensignlabs.com. the first one appears to go to a login page, and the second one doesn&#039;t. I tried the second one&lt;br /&gt;
#### wtf, that link brought me to a single dark page with a single dead pixel in the center of the screen.&lt;br /&gt;
### ok, looks like the first link (with the login that I was trying to avoid) is a button that says &amp;quot;sign here&amp;quot;&lt;br /&gt;
### ohhh, and the other one is an image. I guess it&#039;s a tracking pixel. that explains it.&lt;br /&gt;
### back in my admin dashboard, under Documents -&amp;gt; In-Progress, I can see Michael Altfield has &amp;quot;Yet to sign&amp;quot;&lt;br /&gt;
### If I click on &amp;quot;sent&amp;quot; then there&#039;s a section &amp;quot;viewed on&amp;quot; and &amp;quot;signed on&amp;quot; that are both &amp;quot;-&amp;quot; – so I guess that tracking pixel didn&#039;t really work, huh..&lt;br /&gt;
### fine, I went to the first link&lt;br /&gt;
#### oh, awesome, it didn&#039;t make me login! It redirected me to the document. perfect! It popped-up a modal that said&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
I confirm that I have read and understood the Electronic Record and Signature Disclosure and consent to use electronic records and signatures.&lt;br /&gt;
Note: Agreeing to this does not mean you are signing the document immediately. This only allows you to review the document electronically. You will have the opportunity to read it in full and decide whether to sign it afterward.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
### I clicked &amp;quot;I confirm &amp;amp; agree to continue&amp;quot;&lt;br /&gt;
### it did the whole modal popup &amp;quot;guide&amp;quot; thing, which was an option I could have disabled. basically it said to type my name (which was, cool, auto-completed to &amp;quot;Michael Altfield&amp;quot;), listed the signers (just me), and then highlighted the widgets at the bottom (date and sig), then told me how to zoom-in, then highlighted the &amp;quot;you&#039;re done&amp;quot; buttons = &amp;quot;decline&amp;quot; &amp;quot;download&amp;quot; or &amp;quot;finish&amp;quot;&lt;br /&gt;
### it let me change my name, but I should probably make that read-only now that I know it auto-completes with the name from the contacts&lt;br /&gt;
### it wouldn&#039;t let me change the date, which it autocompletd to today&lt;br /&gt;
### it did let me click on the signature widget, which opened a modal with a box where I could draw my nanme. I did that. It was fast, wayy better than Documenso – no issues here with the browser crashing&lt;br /&gt;
### alternatively, I could click &amp;quot;type&amp;quot; and it displayed my name in some cursive fonts, which I could choose-from. and there was an option to upload image.&lt;br /&gt;
### I chose draw and did my signature and clicked next. very fast.&lt;br /&gt;
### it asked if I&#039;m sure I want to finish the doc. I clicked &amp;quot;Review&amp;quot;&lt;br /&gt;
### then I clicked the &amp;quot;finish&amp;quot; button at the top&lt;br /&gt;
### it said this&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Document signed&lt;br /&gt;
Congratulations! 🎉 This document has been successfully signed by all participants!&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
### and there was a countdown to redirect. in 3 seconds, the browser redirected to here. perfect! https://eco-libre.github.io/volunteer-test/en/main/&lt;br /&gt;
### back in the opensign admin dashboard, the row is absent from &amp;quot;Documents -&amp;gt; in progress&amp;quot;. I found it in &amp;quot;documents -&amp;gt; completed&amp;quot;&lt;br /&gt;
### I clicked the &amp;quot;eye&amp;quot; next to the document, and it showed me the document, including the signature that I left in the other browser. I can also click &amp;quot;print&amp;quot; or &amp;quot;certifiacte&amp;quot; or &amp;quot;download&amp;quot;&lt;br /&gt;
#### &amp;quot;print&amp;quot; does what you&#039;d expect. I can print or use the browser&#039;s &amp;quot;save to pdf&amp;quot; of the document, which includes the signature&lt;br /&gt;
#### &amp;quot;certifiacte&amp;quot; opens some legal-looking pdf (something similar to docusign) with a some metadata, including a sah256 hash, ip address of both document issuer (me) and the signer (also me, but different IP because Tor). And it includes an image of the drawn signature.&lt;br /&gt;
#### &amp;quot;download&amp;quot; then lets me choose if i want the download pdf or downlaod pdf + certifiate. I chose both.&lt;br /&gt;
##### lol that failed. the browser didn&#039;t let me download both&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Something went wrong, refreshing this page may solve this issue&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
#### I tried just &amp;quot;downlaod pdf&amp;quot;&lt;br /&gt;
##### that gave me the document, plus the signature and other &amp;quot;widgets&amp;quot; filled-out, plus the following in the top-left&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
OpenSign™ DocumentId: pS5lEdCyIp&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
##### I guess that&#039;s something like their observatory. they said I can turn it off only if I have a paid plan. But it&#039;s probably necessary for them as a thrid party to confirm the signature.&lt;br /&gt;
#### anyway, I tested the hash on the file that I downloaded&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[user@disp6411 Downloads]$ sha256sum Test\ Agreement\ -\ REDACTED@eco-libre.org\ -\ 21-Apr-2026\ 04_01\ PM.pdf &lt;br /&gt;
569152424a49024297f4bb550291036896de3189e70efb1fee6a9e39333bbe77  Test Agreement - REDACTED@eco-libre.org - 21-Apr-2026 04_01 PM.pdf&lt;br /&gt;
[user@disp6411 Downloads]$ &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
#### I wanted to confirm that matches the certificate, but when I clicked &amp;quot;certificate&amp;quot; again, I got a permissions issue!&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;Error&amp;gt;&lt;br /&gt;
&amp;lt;Code&amp;gt;AccessDenied&amp;lt;/Code&amp;gt;&lt;br /&gt;
&amp;lt;Message&amp;gt;Request has expired.&amp;lt;/Message&amp;gt;&lt;br /&gt;
&amp;lt;Resource&amp;gt;&lt;br /&gt;
legadratw3d/460246e423800b30c50c967ef6157248_certificate.pdf&lt;br /&gt;
&amp;lt;/Resource&amp;gt;&lt;br /&gt;
&amp;lt;RequestId&amp;gt;not available&amp;lt;/RequestId&amp;gt;&lt;br /&gt;
&amp;lt;/Error&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
### fortunately I still had it open in another tab, and I copied this from it&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Generated On 2026-04-21, 15:56:29 GMT -05:00&lt;br /&gt;
Certificate of Completion&lt;br /&gt;
Summary&lt;br /&gt;
Document Id : pS5lEdCyIp&lt;br /&gt;
Document Name : Test Agreement&lt;br /&gt;
Document hash (sha256) : 569152424a49024297f4bb550291036896de3189e70efb1fee6a9e39333bbe77&lt;br /&gt;
Organization : Eco-Libre&lt;br /&gt;
Created on : 2026-04-21, 15:25:55 GMT -05:00&lt;br /&gt;
Completed on : 2026-04-21, 15:56:29 GMT -05:00&lt;br /&gt;
Signers : 1&lt;br /&gt;
Document originator&lt;br /&gt;
Name : Eco-Libre&lt;br /&gt;
Email : REDACTED@eco-libre.org&lt;br /&gt;
IP address : 94.185.80.231&lt;br /&gt;
Signer 1&lt;br /&gt;
Name : Michael Altfield&lt;br /&gt;
Email : REDACTED@eco-libre.org&lt;br /&gt;
Viewed on : 2026-04-21, 15:50:32 GMT -05:00&lt;br /&gt;
Signed on : 2026-04-21, 15:56:29 GMT -05:00&lt;br /&gt;
IP address : 2001:67c:e60:c0c:192:42:116:52&lt;br /&gt;
Signature :&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
### so the hashes do match; that&#039;s cool&lt;br /&gt;
### but will I be able to view the certificates in the future?!?&lt;br /&gt;
### I went back to the admin dashboard -&amp;gt; documents -&amp;gt; completed -&amp;gt; (eye icon) -&amp;gt; certificate&lt;br /&gt;
#### ok, that worked. I can pull it up again.&lt;br /&gt;
### curiously it still says I&#039;ve sent 0/15 emails this month&lt;br /&gt;
#### oh, I refrehed the page. now it says 1/15.&lt;br /&gt;
### I also see that my admin email got an email with an attachment titled &amp;quot;Test Agreement -&lt;br /&gt;
 REDACTED@eco-libre.org - 22-Apr-2026 02:26 AM.pdf&amp;quot; – so I guess it did email it to me&lt;br /&gt;
#### oh, awesome, there&#039;s also an attachment named &amp;quot;certificate.pdf&amp;quot;&lt;br /&gt;
#### the email is 83 KB + 139 KB for the two attachments, so that&#039;s reasonable. and that eliminates a lot of fear around exports. we&#039;ll have this data forever if we keep this email account&#039;s forever (or setup an automated backup process)&lt;br /&gt;
### there&#039;s also this &amp;quot;open sign drive&amp;quot; thing. I wasn&#039;t sure if this was an opt-in or pro feature&lt;br /&gt;
#### looks like the signed document is there too. it&#039;s just called &amp;quot;Test Agreement&amp;quot; – which isn&#039;t very nice, but I can see the &amp;quot;Created date&amp;quot; – which should be good enough.&lt;br /&gt;
## ok, I think we have a solution! this definitely meets our needs – unless/until we get &amp;gt;=6 volunteers per month (if we have them sign two documents each)&lt;br /&gt;
# I spent some time designing a letterhead in LibreOffice&lt;br /&gt;
# looks like what we want is a Contributor License Agreement https://en.wikipedia.org/wiki/Contributor_license_agreement&lt;br /&gt;
# looks like a lot of projects just use the CLA assistant tool on gthub https://cla-assistant.io/&lt;br /&gt;
## that&#039;s kinda cool, but I honestly don&#039;t know how long we&#039;ll be on github. If it&#039;s tied to an issue (and not something actually in git), it&#039;ll be hard to move to codeberg in the future&lt;br /&gt;
## still, I like the tl;dr CLA; short &amp;amp; sweet (maybe too much so) https://gist.github.com/waldyrious/e50feec13683e565769fbd58ce503d4e&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
## tldr-pages contributor agreement&lt;br /&gt;
&lt;br /&gt;
(1) I assert that any past, present and future contributions I make to the tldr-pages project are my own work, and that I have the right to license them.&lt;br /&gt;
&lt;br /&gt;
(2) I agree to license all my contributions to the tldr-pages project under the terms of the license included in the tldr-pages repository I’m contributing to.&lt;br /&gt;
&lt;br /&gt;
(3) I grant the tldr-pages organization a license to distribute my contributions under any open content license compliant with the Open Definition [a], or any open source software license approved by the Open Source Initiative [b], as applicable.&lt;br /&gt;
&lt;br /&gt;
a. http://opendefinition.org/licenses&lt;br /&gt;
&lt;br /&gt;
b. https://opensource.org/licenses/alphabetical&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# apparently Connonical created a project called Harmony for the purpose of making contributor agreements https://www.harmonyagreements.org/&lt;br /&gt;
## apparently these things are more complicated between individuals vs other entities. it&#039;s possible we&#039;ll work with for-profit companies in the future, and for that it&#039;d be good if we were setup to accept both&lt;br /&gt;
## ugh, there&#039;s also a distinction between a &amp;quot;license&amp;quot; and a &amp;quot;assignment&amp;quot;&lt;br /&gt;
### I skimmed their guide, but I couldn&#039;t understand the difference between these two https://www.harmonyagreements.org/guide&lt;br /&gt;
# fedora project also has one, with an emphasis on *not* taking the copyright away from the user (some controversy about copyright transfer in different CLAs – such as from for-profit companies that later fork &amp;amp; lock-up their user-contributed content under a different, less-permisive license (though I really don&#039;t understand how that&#039;s possible if we use a CC SA license) https://docs.fedoraproject.org/en-US/legal/fpca/&lt;br /&gt;
## oh, fedora uses MIT license --which is probably why they need to add all that&lt;br /&gt;
# apahce has one https://www.apache.org/licenses/contributor-agreements.html#clas&lt;br /&gt;
## cool, they accept signing with gpg :D&lt;br /&gt;
# Element (the matrix client) which uses AGPL has a pretty good document, which is 3 pages long https://static.element.io/legal/contributor-license-agreement.pdf&lt;br /&gt;
# a lot of these are kinda software heavy. I wonder if there&#039;s any good OSHW orgs that we can try?&lt;br /&gt;
## I checked OSHWA, but didn&#039;t see a boilerplate CLA that we could copy https://oshwa.org/&lt;br /&gt;
### they did have a CoC. Jesus, how many policies do we need to make? https://oshwa.org/resources/how-to-write-a-code-of-conduct/&lt;br /&gt;
### I publicy tooted @oshwassociation@mastodon.social if they had something to recommend https://chaos.social/@ecolibre/116444933464052302&lt;br /&gt;
### hmm...here they recommend CERN OHL v2 instead of CC BY-SA, if we&#039;re using something like STL files that are generated from CAD design https://oshwa.org/resources/sharing-best-practices/&lt;br /&gt;
## CERN does have some does on CLAs https://ospo.docs.cern.ch/howtos/signing-CLA-DCO/&lt;br /&gt;
## CERN links to this short one, from the Linux Foundation https://developercertificate.org/&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Developer Certificate of Origin&lt;br /&gt;
Version 1.1&lt;br /&gt;
&lt;br /&gt;
Copyright (C) 2004, 2006 The Linux Foundation and its contributors.&lt;br /&gt;
&lt;br /&gt;
Everyone is permitted to copy and distribute verbatim copies of this&lt;br /&gt;
license document, but changing it is not allowed.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Developer&#039;s Certificate of Origin 1.1&lt;br /&gt;
&lt;br /&gt;
By making a contribution to this project, I certify that:&lt;br /&gt;
&lt;br /&gt;
(a) The contribution was created in whole or in part by me and I&lt;br /&gt;
	have the right to submit it under the open source license&lt;br /&gt;
	indicated in the file; or&lt;br /&gt;
&lt;br /&gt;
(b) The contribution is based upon previous work that, to the best&lt;br /&gt;
	of my knowledge, is covered under an appropriate open source&lt;br /&gt;
	license and I have the right under that license to submit that&lt;br /&gt;
	work with modifications, whether created in whole or in part&lt;br /&gt;
	by me, under the same open source license (unless I am&lt;br /&gt;
	permitted to submit under a different license), as indicated&lt;br /&gt;
	in the file; or&lt;br /&gt;
&lt;br /&gt;
(c) The contribution was provided directly to me by some other&lt;br /&gt;
	person who certified (a), (b) or (c) and I have not modified&lt;br /&gt;
	it.&lt;br /&gt;
&lt;br /&gt;
(d) I understand and agree that this project and the contribution&lt;br /&gt;
	are public and that a record of the contribution (including all&lt;br /&gt;
	personal information I submit with it, including my sign-off) is&lt;br /&gt;
	maintained indefinitely and may be redistributed consistent with&lt;br /&gt;
	this project or the open source license(s) involved.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# ok, I think I&#039;m muddling two things here&lt;br /&gt;
## I think the wiki&#039;s TOS should be simpler. If I require all wiki users to become volunteers first, and the volunteer onboarding requires the signing of documents, then the real legal stuff should be in the documents.&lt;br /&gt;
## for now, let&#039;s just do the bullet point thing on the wiki ToS. And I&#039;ll wait to hear back from OSHWA about the CLA for a *proper* leagl document later – maybe TODO when we actually get another volunteer application..&lt;br /&gt;
# I set the ToS to the DCO from the linux foundation https://wiki.eco-libre.org/wiki/Eco-Libre:Terms_of_Service&lt;br /&gt;
## ah crap, I just realized that it says &amp;quot;changing it is not allowed&amp;quot;. I already changed it by removing the Linux Foundation from the name (I moved it to the bottom in an &amp;quot;attribution&amp;quot; section, which is another change! damn ND licenses! I&#039;ll have to find something else)&lt;br /&gt;
# I want to use the tl;dr gist, but it&#039;s not licensed! https://gist.github.com/waldyrious/e50feec13683e565769fbd58ce503d4e#file-tldr-pages-cla-md&lt;br /&gt;
## the profile of the author says they&#039;re a wikipedian and anarchist, so they&#039;ll probably be down to license it openly&lt;br /&gt;
## I asked here https://gist.github.com/waldyrious/e50feec13683e565769fbd58ce503d4e?permalink_comment_id=6112400#gistcomment-6112400&lt;br /&gt;
# another issue with a lot of these CLAs is that they&#039;re pretty old, and don&#039;t touch on AI.&lt;br /&gt;
## I&#039;m thinking we should have a policy that forbids contributions from Eco-Libre volunteers that do any research or design work with AI, since it presents serious legal issues around copyrights. I really do want 100% of our work to be very CC BY-SA. With nothing to muddle the waters. We&#039;re doing this designs ourselves to build an open-source commons, built only individual human contributions and only other openly-licensed works&lt;br /&gt;
## clojure already addressed this in their CLA (they just call it CA = Contributor Agreement) https://clojure.org/dev/contributor_agreement&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
No Generated Code&lt;br /&gt;
&lt;br /&gt;
Clojure’s code is written and reviewed by humans. Code generated by a large language model or similar technology, such as Anthropic’s Claude, GitHub/Microsoft’s Copilot, OpenAI’s ChatGPT, Facebook/Meta’s Code Llama et al, is not compliant with the covenants and representations of Clojure’s Contributor’s Agreement, and is thus not acceptable as code for Clojure.&lt;br /&gt;
&lt;br /&gt;
An exception may be made for human written generators whose source code is contributed along with the patch&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## I don&#039;t like that exception. The source code doesn&#039;t just need to be submitted along with the patch. the whole training set data needs to be submitted along with the patch, which is practically impossible.&lt;br /&gt;
## weird, they call it the &amp;quot;Rich Hickey Contributor Agreement&amp;quot; https://na1.documents.adobe.com/public/esignWidget?wid=CBFCIBAA3AAABLblqZhCSXRbJ7T5RGvmMvmpg3CzvkF_RcpWXMnGWW_W9340ztJ3-ChQ0m18hA-d06ufD8Yk*&lt;br /&gt;
### oh good, the document itself is CC BY-SA&lt;br /&gt;
## the source for it was oracle&#039;s OCA https://www.oracle.com/technetwork/oca-faq-405384.pdf&lt;br /&gt;
### yeah, the second-to-last FAQ question says that the OCA is CC BY-SA &lt;br /&gt;
### looks like neither of them mention AI in the document itself :/&lt;br /&gt;
### maybe I don&#039;t like the RHCA contents, but I do really like the header and footer and how clearly it&#039;s licened itself as CC BY-SA&lt;br /&gt;
# the linux foundation has a CLA generator, but it&#039;s authwalled :( https://easycla.lfx.linuxfoundation.org/#/&lt;br /&gt;
# cyanogenmod&#039;s is pretty nice; not too long. unfortunately the license isn&#039;t clear https://web.archive.org/web/20160308140334/http://review.cyanogenmod.org/static/cla_individual.html&lt;br /&gt;
# same for Discourse; it&#039;s about 7 paragraph bullet points long. unfortuantely the license isn&#039;t clear https://cla-assistant.io/discourse/discourse&lt;br /&gt;
## apparently it&#039;s an apache license https://github.com/cla-assistant/cla-assistant/blob/main/LICENSE&lt;br /&gt;
# django has two: indivdual and corproate. apparently adapted from apache&#039;s (so likely licensed under apache, but I should confirm&lt;br /&gt;
## https://media.djangoproject.com/foundation/icla.pdf&lt;br /&gt;
## https://media.djangoproject.com/foundation/icla.pdf&lt;br /&gt;
# evil corps like meta and google have CLAs, but I doubt they&#039;re licensed openly&lt;br /&gt;
## https://code.facebook.com/cla/individual&lt;br /&gt;
## https://cla.developers.google.com/about/google-individual?csw=1&lt;br /&gt;
# here&#039;s hashicorp&#039;s. I don&#039;t think it&#039;s licensed openly https://www.hashicorp.com/en/cla&lt;br /&gt;
# Here&#039;s Hoe Assistant https://www.home-assistant.io/blog/2017/01/21/home-assistant-governance/&lt;br /&gt;
## apparently Matthew Garret convinced them to change their CLA from GitHub&#039;s to this one https://www.home-assistant.io/blog/2017/01/21/home-assistant-governance/&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
By making a contribution to this project, I certify that:&lt;br /&gt;
&lt;br /&gt;
(a) The contribution was created in whole or in part by me and I&lt;br /&gt;
	have the right to submit it under the Apache 2.0 license; or&lt;br /&gt;
&lt;br /&gt;
(b) The contribution is based upon previous work that, to the best&lt;br /&gt;
	of my knowledge, is covered under an appropriate open source&lt;br /&gt;
	license and I have the right under that license to submit that&lt;br /&gt;
	work with modifications, whether created in whole or in part&lt;br /&gt;
	by me, under the Apache 2.0 license; or&lt;br /&gt;
&lt;br /&gt;
(c) The contribution was provided directly to me by some other&lt;br /&gt;
	person who certified (a), (b) or (c) and I have not modified&lt;br /&gt;
	it.&lt;br /&gt;
&lt;br /&gt;
(d) I understand and agree that this project and the contribution&lt;br /&gt;
	are public and that a record of the contribution (including all&lt;br /&gt;
	personal information I submit with it) is maintained indefinitely&lt;br /&gt;
	and may be redistributed consistent with this project or the open&lt;br /&gt;
	source license(s) involved.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## is it just me, or does that look like the one from the Linux Foundation, except it was modified to have the section saying &amp;quot;you can&#039;t modify this&amp;quot; removed. Hmm./.&lt;br /&gt;
## yeah, they say that in attribtuion&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
The text of this license is available under the Creative Commons Attribution-ShareAlike 3.0 Unported License. It is based on the Linux Developer Certificate Of Origin, but is modified to explicitly use the Apache 2.0 license and not mention sign-off.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## idk, maybe they got explicit permission from the Linux Foundation to modify it and re-license it CC BY-SA?&lt;br /&gt;
## I asked them if they got permission and to publish proof, so we could do the same https://github.com/home-assistant/home-assistant.io/issues/44892&lt;br /&gt;
&lt;br /&gt;
= 2026-04-20 =&lt;br /&gt;
# I got a link from a friend from a pretty cool sounding similar project https://projectkamp.com/&lt;br /&gt;
## sounds like they have similar ideas as Eco-Libre, except they already bought land already&lt;br /&gt;
## They claim to use CC BY-SA to license all their works, but their videos are not marked as-such on YouTube. And, because YouTube is trash, I can&#039;t view their videos  https://academy.projectkamp.com/start/intro/#open-source--license&lt;br /&gt;
## I wanted to email them to update the license on their YouTube videos (so, at least, they could be archived on archive.org and uploaded to PeerTube, etc), but I couldn&#039;t find their email https://projectkamp.com/faq.html&lt;br /&gt;
## Their footer says they&#039;re part of One Army (along with, eg Precious Plastic), so I emailed One Army asking for the email address of Project Kamp https://www.onearmy.earth/&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Hello,&lt;br /&gt;
&lt;br /&gt;
Can you please tell me the email address of Project Kamp?&lt;br /&gt;
&lt;br /&gt;
I&#039;m looking to get in contact with Project Kamp over email, but I couldn&#039;t find a way to email them from their website:&lt;br /&gt;
&lt;br /&gt;
 * https://projectkamp.com/faq.html&lt;br /&gt;
&lt;br /&gt;
Please send me the email address for Project Kamp.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Thank you,&lt;br /&gt;
&lt;br /&gt;
Michael Altfield&lt;br /&gt;
https://www.michaelaltfield.net&lt;br /&gt;
PGP Fingerprint: 0465 E42F 7120 6785 E972  644C FE1B 8449 4E64 0D41&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## TODO: add Project Kamp to our &#039;common-files&#039; repo&#039;s docs as a &amp;quot;Similar Project&amp;quot;&lt;br /&gt;
# ...&lt;br /&gt;
# Tomorrow we&#039;re publishing our partnership with Raft Foundation, so we can accept tax-deductable donations https://www.eco-libre.org/raft-2026/&lt;br /&gt;
# Some weeks ago I did updates of wordpress, including adding new plugins. One of them was ActivityPub&lt;br /&gt;
# I enabled ActivityPub, but the Settings page gives me a &amp;quot;504 Gateway Time-out&amp;quot; error from nginx https://www.eco-libre.org/wp-admin/options-general.php?page=activitypub&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;head&amp;gt;&amp;lt;title&amp;gt;504 Gateway Time-out&amp;lt;/title&amp;gt;&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;h1&amp;gt;504 Gateway Time-out&amp;lt;/h1&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&amp;lt;center&amp;gt;nginx&amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## here&#039;s the error.log entry for nginx&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
2026/04/20 17:37:36 [error] 1992101#1992101: *2507383 upstream timed out (110: Connection timed out) while reading response header from upstream, client: 64.42.180.66, server: www.eco-libre.org, request: &amp;quot;GET /wp-admin/options-general.php?page=activitypub HTTP/1.1&amp;quot;, upstream: &amp;quot;http://127.0.0.1:6081/wp-admin/options-general.php?page=activitypub&amp;quot;, host: &amp;quot;www.eco-libre.org&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## and here&#039;s the apache logs&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
==&amp;gt; www.eco-libre.org/access.log &amp;lt;==&lt;br /&gt;
64.42.180.66 - - [20/Apr/2026:17:54:54 +0000] &amp;quot;POST /wp-admin/admin-ajax.php HTTP/1.1&amp;quot; 200 792 &amp;quot;https://www.eco-libre.org/wp-admin/plugins.php?plugin_status=all&amp;amp;paged=1&amp;amp;s&amp;quot; &amp;quot;Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.0.0 Safari/537.36&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==&amp;gt; www.eco-libre.org/error.log &amp;lt;==&lt;br /&gt;
[Mon Apr 20 17:55:23.176842 2026] [proxy_fcgi:error] [pid 526343:tid 526374] (70007)The timeout specified has expired: [client 64.42.180.66:0] AH01075: Error dispatching request to : (polling)&lt;br /&gt;
&lt;br /&gt;
==&amp;gt; www.eco-libre.org/access.log &amp;lt;==&lt;br /&gt;
64.42.180.66 - - [20/Apr/2026:17:54:23 +0000] &amp;quot;GET /wp-admin/options-general.php?page=activitypub HTTP/1.1&amp;quot; 504 467 &amp;quot;-&amp;quot; &amp;quot;Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.0.0 Safari/537.36&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## I don&#039;t know what&#039;s wrong, and that&#039;s not enough to debug it. I tested ActivityPub on another site, and the config page had no issues. But I ended-up not finishing its setup because I wanted the actor URL to use the naked domain, and I&#039;m still waiting to hear back on that https://github.com/Automattic/wordpress-activitypub/issues/3164&lt;br /&gt;
# anyway, I wrote a newsletter, scheduled it to go out for tomorrow at 15:00 UTC&lt;br /&gt;
# I also wrote the update for Open Collective&lt;br /&gt;
# I put the &amp;quot;Donate&amp;quot; page in the menu bar&lt;br /&gt;
## on mobile, this made the top navbar spill over into a second row, so I moved &amp;quot;Contact&amp;quot; under &amp;quot;Join Us&amp;quot;&lt;br /&gt;
### to make up for this, I started creating footer areas&lt;br /&gt;
### the theme supports three footers. one on the left, center, and right&lt;br /&gt;
### I put copyright &amp;amp; copyleft info on the right footer&lt;br /&gt;
### I put social media icons in the middle footer&lt;br /&gt;
### I put a &amp;quot;Contact&amp;quot; link on the left footer&lt;br /&gt;
## As I was styling the left footer, I stopped being able to update it suddenly. I kept getting error&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
There was an error. Could not get a valid response from the server.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## closer inspection of the networking tab of the browsers debugger showed an error when doing an OPTIONS request&lt;br /&gt;
## well, that&#039;s probably because (for security) we block all but GET POST and HEAD&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
if ($request_method !~ ^(GET|HEAD|POST)$ ) {&lt;br /&gt;
   # note: 444 is a meta code; it doesn&#039;t return anything, actually&lt;br /&gt;
   #       it just logs, drops, &amp;amp; closes the connection (useful&lt;br /&gt;
   #       against malware)&lt;br /&gt;
   return 444;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## well, fuck, our widgets are bricked&lt;br /&gt;
## I asked about this here https://wordpress.org/support/topic/configure-wordpress-to-never-use-options-requests/&lt;br /&gt;
## as a workaround, I found that I *can* edit these footer widgets from the theme -&amp;gt; customize -&amp;gt; widgets section of the site – which sends POST as expected https://www.eco-libre.org/wp-admin/customize.php?return=%2Fwp-admin%2Fwidgets.php&lt;br /&gt;
# I realized that I can&#039;t post to lemmy anymore, because our sdf instance has been down since 2026-04-07&lt;br /&gt;
# I went ahead and created an accout request on the solar punk instance https://slrpnk.net/&lt;br /&gt;
## if we&#039;re accepted, I&#039;d also like to create a community specific to Eco-Libre &lt;br /&gt;
# I also created one on lemmy.vg&lt;br /&gt;
&lt;br /&gt;
= 2026-04-19 =&lt;br /&gt;
# I failed to login to the wiki today. I got error&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[REDACTED] 2026-04-19 20:34:48: Fatal exception of type &amp;quot;DomainException&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# exception.log seems to suggest that I set a bad config for the password policy yesterday&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
==&amp;gt; exception.log &amp;lt;==&lt;br /&gt;
2026-04-19 20:36:27 mail wiki_el_db-rHb3: [REDACTED] /index.php?title=Special:UserLogin&amp;amp;returnto=MediaWiki&lt;br /&gt;
%3ARequestaccount-agree   DomainException: Invalid password policy config. No check defined for &#039;PasswordCannotMatchUsername&#039;&lt;br /&gt;
.&lt;br /&gt;
#0 /usr/share/mediawiki/includes/password/UserPasswordPolicy.php(88): MediaWiki\Password\UserPasswordPolicy-&amp;gt;checkPolicies()&lt;br /&gt;
#1 /usr/share/mediawiki/includes/user/User.php(995): MediaWiki\Password\UserPasswordPolicy-&amp;gt;checkUserPassword()&lt;br /&gt;
#2 /usr/share/mediawiki/includes/auth/AbstractPasswordPrimaryAuthenticationProvider.php(114): MediaWiki\User\User-&amp;gt;checkPassw&lt;br /&gt;
ordValidity()&lt;br /&gt;
#3 /usr/share/mediawiki/includes/auth/AbstractTemporaryPasswordPrimaryAuthenticationProvider.php(155): MediaWiki\Auth\Abstrac&lt;br /&gt;
tPasswordPrimaryAuthenticationProvider-&amp;gt;checkPasswordValidity()&lt;br /&gt;
#4 /usr/share/mediawiki/includes/auth/AuthManager.php(625): MediaWiki\Auth\AbstractTemporaryPasswordPrimaryAuthenticationProv&lt;br /&gt;
ider-&amp;gt;beginPrimaryAuthentication()&lt;br /&gt;
#5 /usr/share/mediawiki/includes/auth/AuthManager.php(535): MediaWiki\Auth\AuthManager-&amp;gt;continueAuthentication()&lt;br /&gt;
#6 /usr/share/mediawiki/includes/specialpage/AuthManagerSpecialPage.php(390): MediaWiki\Auth\AuthManager-&amp;gt;beginAuthentication&lt;br /&gt;
()&lt;br /&gt;
#7 /usr/share/mediawiki/includes/specialpage/AuthManagerSpecialPage.php(524): MediaWiki\SpecialPage\AuthManagerSpecialPage-&amp;gt;performAuthenticationStep()&lt;br /&gt;
#8 [internal function]: MediaWiki\SpecialPage\AuthManagerSpecialPage-&amp;gt;handleFormSubmit()&lt;br /&gt;
#9 /usr/share/mediawiki/includes/htmlform/HTMLForm.php(822): call_user_func()&lt;br /&gt;
#10 /usr/share/mediawiki/includes/specialpage/AuthManagerSpecialPage.php(455): MediaWiki\HTMLForm\HTMLForm-&amp;gt;trySubmit()&lt;br /&gt;
#11 /usr/share/mediawiki/includes/specialpage/LoginSignupSpecialPage.php(403): MediaWiki\SpecialPage\AuthManagerSpecialPage-&amp;gt;trySubmit()&lt;br /&gt;
#12 /usr/share/mediawiki/includes/specialpage/SpecialPage.php(728): MediaWiki\SpecialPage\LoginSignupSpecialPage-&amp;gt;execute()&lt;br /&gt;
#13 /usr/share/mediawiki/includes/specialpage/SpecialPageFactory.php(1717): MediaWiki\SpecialPage\SpecialPage-&amp;gt;run()&lt;br /&gt;
#14 /usr/share/mediawiki/includes/actions/ActionEntryPoint.php(505): MediaWiki\SpecialPage\SpecialPageFactory-&amp;gt;executePath()&lt;br /&gt;
#15 /usr/share/mediawiki/includes/actions/ActionEntryPoint.php(147): MediaWiki\Actions\ActionEntryPoint-&amp;gt;performRequest()&lt;br /&gt;
#16 /usr/share/mediawiki/includes/MediaWikiEntryPoint.php(200): MediaWiki\Actions\ActionEntryPoint-&amp;gt;execute()&lt;br /&gt;
#17 /usr/share/mediawiki/index.php(58): MediaWiki\MediaWikiEntryPoint-&amp;gt;run()&lt;br /&gt;
#18 {main}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# here&#039;s what we have&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$wgPasswordPolicy[&#039;policies&#039;][&#039;default&#039;][&#039;PasswordCannotMatchUsername&#039;] = true;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# but the docs suggest there&#039;s an additioanl array needed for &amp;quot;value&amp;quot;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$wgPasswordPolicy[&#039;policies&#039;][&#039;default&#039;][&#039;PasswordCannotMatchUsername&#039;][&#039;value&#039;] = false;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# if I expand &amp;quot;Older Versions&amp;quot; then the &#039;PasswordCannotMatchUsername&#039; disappears from mediawiki &amp;gt;1.37. The docs still say it&#039;s an option, but I didn&#039;t find it in our files https://www.mediawiki.org/wiki/Manual:$wgPasswordPolicy#Default&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@mail:/var/www/html/wiki.eco-libre.org# grep -irl PasswordCannotMatchUsername *&lt;br /&gt;
LocalSettings.20260419.php&lt;br /&gt;
LocalSettings.php&lt;br /&gt;
root@mail:/var/www/html/wiki.eco-libre.org# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# it does appear that &#039;PasswordCannotBeSubstringInUsername&#039; is available. let&#039;s use that instead.&lt;br /&gt;
# ugh, next attempt gives another failure&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
==&amp;gt; exception.log &amp;lt;==&lt;br /&gt;
2026-04-19 21:04:26 mail wiki_el_db-rHb3: [REDACTED] /index.php?title=Special:UserLogin&amp;amp;returnto=MediaWiki&lt;br /&gt;
%3ARequestaccount-agree   DomainException: Invalid password policy config. No check defined for &#039;PasswordCannotBePopular&#039;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# I removed this; I guess we&#039;re supposed to use &#039;PasswordNotInCommonList&#039;, which we already use.&lt;br /&gt;
# ok, that worked. I&#039;m able to login-in. here&#039;s the final&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# PASSWORD POLICIES&lt;br /&gt;
&lt;br /&gt;
$wgPasswordPolicy[&#039;policies&#039;][&#039;default&#039;][&#039;MinimalPasswordLength&#039;] = 10;&lt;br /&gt;
$wgPasswordPolicy[&#039;policies&#039;][&#039;default&#039;][&#039;PasswordCannotBeSubstringInUsername&#039;][&#039;value&#039;] = true;&lt;br /&gt;
$wgPasswordPolicy[&#039;policies&#039;][&#039;default&#039;][&#039;PasswordNotInCommonList&#039;] = true;&lt;br /&gt;
&lt;br /&gt;
$wgPasswordPolicy[&#039;policies&#039;][&#039;sysop&#039;][&#039;MinimalPasswordLength&#039;] = 20;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# now that I can login, I was going to change the text that appears on the Request Account page https://wiki.eco-libre.org/wiki/MediaWiki:Requestaccount-text&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Complete and submit the following form to request a user account.&lt;br /&gt;
&lt;br /&gt;
Make sure that you first read the Terms of Service before requesting an account.&lt;br /&gt;
&lt;br /&gt;
Once the account is approved, you will be emailed a notification message and the account will be usable at login. &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## my intention was to add a notebox to highlight that the user would need to first complete the Eco-Libre Volunteer Test (https://eco-libre.github.io/volunteer-test/) before their new wiki account would be approve, and tell them to contact us (https://eco-libre.org/contact/)&lt;br /&gt;
## unforutnately, the notebox template doesn&#039;t exist!&lt;br /&gt;
## I found the docs on templates, and it says there&#039;s no way to import a bunch of standard templates https://www.mediawiki.org/wiki/Help:Templates&lt;br /&gt;
## this third-party guide says we can make the export/import (eg from Wikipedia) of a mass of templates easier with the Scribunto extension https://www.ryadel.com/en/how-to-add-wikipedia-mbox-templates-to-your-own-mediawiki/&lt;br /&gt;
## this extension ships with core mediawiki, it seems&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@mail:/var/www/html/wiki.eco-libre.org# ls htdocs/extensions/&lt;br /&gt;
AbuseFilter     ConfirmEdit      InputBox          Nuke             ReplaceText            TemplateData    Widgets&lt;br /&gt;
CategoryTree    DeleteBatch      Interwiki         OATHAuth         Scribunto              TextExtracts    WikiEditor&lt;br /&gt;
Cite            DiscussionTools  Linter            PageImages       SecureLinkFixer        Thanks&lt;br /&gt;
CiteThisPage    Echo             LoginNotify       ParserFunctions  SmiteSpam              TitleBlacklist&lt;br /&gt;
CodeEditor      Gadgets          Math              PdfHandler       SpamBlacklist          UserMerge&lt;br /&gt;
ConfirmAccount  ImageMap         MultimediaViewer  Poem             SyntaxHighlight_GeSHi  VisualEditor&lt;br /&gt;
root@mail:/var/www/html/wiki.eco-libre.org# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# TODO: finish installing Scribunto, then do a mass-export &amp;amp; mass-import of common templates from Wikipedia. Then finish configuring [[&#039;&#039;MediaWiki:Requestaccount-text&#039;&#039;]]&lt;br /&gt;
# I thought that, maybe, a lower hanging fruit would be to implement the Privacy Policy, but I realized that page actually requires the user to accept the Terms of Service, not the Privacy Policy&lt;br /&gt;
## OSE appears to have never set a ToS (And I created the Privacy Policy, largely based on the creative commons&#039; privacy policy https://wiki.opensourceecology.org/wiki/Terms_of_Service&lt;br /&gt;
## The wikipedia Terms of Service is actually named Terms of Use, and it&#039;s pretty specific to Wikipedia (including their mission, etc). In it, it references the Privacy Policy https://foundation.wikimedia.org/wiki/Policy:Terms_of_Use/en&lt;br /&gt;
## Appropedia doesn&#039;t appear to have a page dedicated to ToS (or ToU) or Privacy Policy. Instead, it&#039;s just on one page named Policies https://www.appropedia.org/Appropedia:Policies&lt;br /&gt;
&lt;br /&gt;
= 2026-04-18 =&lt;br /&gt;
# continuing where I left off yes terday to fix mediawiki after the unattended-upgrade deleted our LocalSettings.php file&lt;br /&gt;
# I need to push-out a new php.ini config (with ansible) to include /etc/mediawiki/ in the open_basedir setting&lt;br /&gt;
# ansible is broken suddenly; it says it can&#039;t find python&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
fatal: [michaelaltfield.net]: UNREACHABLE! =&amp;gt; {&amp;quot;changed&amp;quot;: false, &amp;quot;msg&amp;quot;: &amp;quot;EOF on stream; last 100 lines received:\nbash: line 1: /usr/bin/python: No such file or directory&amp;quot;, &amp;quot;unreachable&amp;quot;: true}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# well, idk, did debian remove a symlink from python to python3?&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@mail:/var/lib/mediawiki# ls -lah /usr/bin/python&lt;br /&gt;
ls: cannot access &#039;/usr/bin/python&#039;: No such file or directory&lt;br /&gt;
root@mail:/var/lib/mediawiki# ls -lah /usr/bin/python3&lt;br /&gt;
lrwxrwxrwx 1 root root 10 Jun 30  2025 /usr/bin/python3 -&amp;gt; python3.13&lt;br /&gt;
root@mail:/var/lib/mediawiki# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# looks like there&#039;s a var I can set for this named ansible_python_interpreter, but it&#039;s only available in python &amp;gt;= 2.2.0 https://stackoverflow.com/a/41431540&lt;br /&gt;
# and we only have ansible v2.14.18, installed in apt on debian 12 on my client machine&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ dpkg -l | grep -i ansible&lt;br /&gt;
ii  ansible                                       7.7.0+dfsg-3+deb12u1                     all          Configuration management, deployment, and task execution system&lt;br /&gt;
ii  ansible-core                                  2.14.18-0+deb12u2                        all          Configuration management, deployment, and task execution system&lt;br /&gt;
ii  ansible-mitogen                               0.3.3-9+deb12u1                          all          Fast connection strategy for Ansible&lt;br /&gt;
$&lt;br /&gt;
&lt;br /&gt;
$ cat /etc/issue&lt;br /&gt;
Debian GNU/Linux 12 \n \l&lt;br /&gt;
&lt;br /&gt;
$ &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# looks like debian 13 only has ansible core v2.18, so that won&#039;t help https://packages.debian.org/trixie/ansible&lt;br /&gt;
# fuck it, I just created a symlink. maybe it&#039;ll get deleted a and I&#039;ll have to recreate it again. maybe not&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@mail:/var/lib/mediawiki# ln -s /usr/bin/python3 /usr/bin/python&lt;br /&gt;
root@mail:/var/lib/mediawiki# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# ok, that fixed ansible, and I was able to push-out the udpdated php.ini file&lt;br /&gt;
# restarted php&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@mail:/var/lib/mediawiki# systemctl restart php8.4-fpm&lt;br /&gt;
root@mail:/var/lib/mediawiki# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# ...aaaand the wiki is fixed&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[user@disp3459 ~]$ curl -IL https://wiki.eco-libre.org/&lt;br /&gt;
HTTP/1.1 301 Moved Permanently&lt;br /&gt;
Server: nginx&lt;br /&gt;
Date: Sat, 18 Apr 2026 17:38:39 GMT&lt;br /&gt;
Content-Type: text/html; charset=UTF-8&lt;br /&gt;
Content-Length: 0&lt;br /&gt;
Connection: keep-alive&lt;br /&gt;
X-Content-Type-Options: nosniff&lt;br /&gt;
Vary: Accept-Encoding,Cookie&lt;br /&gt;
Expires: Thu, 01 Jan 1970 00:00:00 GMT&lt;br /&gt;
Cache-Control: private, must-revalidate, max-age=0&lt;br /&gt;
X-Request-Id: REDACTED&lt;br /&gt;
X-Frame-Options: SAMEORIGIN&lt;br /&gt;
Last-Modified: Sat, 18 Apr 2026 17:38:06 GMT&lt;br /&gt;
Location: https://wiki.eco-libre.org/wiki/Main_Page&lt;br /&gt;
X-Content-Type-Options: nosniff&lt;br /&gt;
X-XSS-Protection: 1; mode=block&lt;br /&gt;
X-Frame-Options: deny&lt;br /&gt;
Referrer-Policy: strict-origin&lt;br /&gt;
X-Varnish: 6288299 13705059&lt;br /&gt;
Age: 33&lt;br /&gt;
Via: 1.1 mail (Varnish/7.7)&lt;br /&gt;
Strict-Transport-Security: max-age=86400;includeSubDomains&lt;br /&gt;
&lt;br /&gt;
HTTP/1.1 200 OK&lt;br /&gt;
Server: nginx&lt;br /&gt;
Date: Sat, 18 Apr 2026 17:38:40 GMT&lt;br /&gt;
Content-Type: text/html; charset=UTF-8&lt;br /&gt;
Content-Length: 15926&lt;br /&gt;
Connection: keep-alive&lt;br /&gt;
X-Content-Type-Options: nosniff&lt;br /&gt;
Content-language: en&lt;br /&gt;
Vary: Accept-Encoding,Cookie&lt;br /&gt;
Expires: Thu, 01 Jan 1970 00:00:00 GMT&lt;br /&gt;
Cache-Control: private, must-revalidate, max-age=0&lt;br /&gt;
X-Request-Id: REDACTED&lt;br /&gt;
X-Frame-Options: SAMEORIGIN&lt;br /&gt;
Last-Modified: Sat, 18 Apr 2026 01:16:13 GMT&lt;br /&gt;
X-Mod-Pagespeed: Powered By mod_pagespeed&lt;br /&gt;
X-Content-Type-Options: nosniff&lt;br /&gt;
X-XSS-Protection: 1; mode=block&lt;br /&gt;
X-Frame-Options: deny&lt;br /&gt;
Referrer-Policy: strict-origin&lt;br /&gt;
X-Varnish: 18702490 13705062&lt;br /&gt;
Age: 31&lt;br /&gt;
Via: 1.1 mail (Varnish/7.7)&lt;br /&gt;
Accept-Ranges: bytes&lt;br /&gt;
Strict-Transport-Security: max-age=86400;includeSubDomains&lt;br /&gt;
&lt;br /&gt;
[user@disp3459 ~]$ &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# ...&lt;br /&gt;
# alright, now let&#039;s try to install &amp;amp; configure all the 3TOFU&#039;d extensions&lt;br /&gt;
# we have 6 new extensions to install&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@mail:/var/tmp/mediawiki/extensions.2026-03-29# ls&lt;br /&gt;
ConfirmAccount-REL1_43-38c4602.tar.gz  extensions.txt  OATHAuth-REL1_43-015a49e.tar.gz   UserMerge-REL1_43-27425da.tar.gz&lt;br /&gt;
DeleteBatch-REL1_43-b3b052b.tar.gz     info.txt        SmiteSpam-REL1_43-483b81b.tar.gz  Widgets-REL1_43-60a09f0.tar.gz&lt;br /&gt;
root@mail:/var/tmp/mediawiki/extensions.2026-03-29# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# I extracted them&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@mail:/var/tmp/mediawiki/extensions.2026-03-29# for file in $(ls *.tar.gz); do tar -xvf $file; done.&lt;br /&gt;
...&lt;br /&gt;
Widgets/vendor/smarty/smarty/CHANGELOG.md&lt;br /&gt;
Widgets/COPYING&lt;br /&gt;
root@mail:/var/tmp/mediawiki/extensions.2026-03-29#&lt;br /&gt;
&lt;br /&gt;
root@mail:/var/tmp/mediawiki/extensions.2026-03-29# ls&lt;br /&gt;
ConfirmAccount                         info.txt                          UserMerge&lt;br /&gt;
ConfirmAccount-REL1_43-38c4602.tar.gz  OATHAuth                          UserMerge-REL1_43-27425da.tar.gz&lt;br /&gt;
DeleteBatch                            OATHAuth-REL1_43-015a49e.tar.gz   Widgets&lt;br /&gt;
DeleteBatch-REL1_43-b3b052b.tar.gz     SmiteSpam                         Widgets-REL1_43-60a09f0.tar.gz&lt;br /&gt;
extensions.txt                         SmiteSpam-REL1_43-483b81b.tar.gz&lt;br /&gt;
root@mail:/var/tmp/mediawiki/extensions.2026-03-29# &lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# let&#039;s start with OATHAuth, which is probably the most important (for security)&lt;br /&gt;
# oh wait, we already have OATHAuth??&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@mail:/var/tmp/mediawiki/extensions.2026-03-29# ls /var/www/html/wiki.eco-libre.org/htdocs/extensions/&lt;br /&gt;
AbuseFilter   ConfirmEdit      InputBox     MultimediaViewer  PdfHandler       SpamBlacklist          TitleBlacklist&lt;br /&gt;
CategoryTree  DiscussionTools  Interwiki    Nuke              Poem             SyntaxHighlight_GeSHi  VisualEditor&lt;br /&gt;
Cite          Echo             Linter       OATHAuth          ReplaceText      TemplateData           WikiEditor&lt;br /&gt;
CiteThisPage  Gadgets          LoginNotify  PageImages        Scribunto        TextExtracts&lt;br /&gt;
CodeEditor    ImageMap         Math         ParserFunctions   SecureLinkFixer  Thanks&lt;br /&gt;
root@mail:/var/tmp/mediawiki/extensions.2026-03-29# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# ugh, yeah, this syas it has been inclued in MediaWiki core since v1.31 https://www.mediawiki.org/wiki/Extension:OATHAuth&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
This extension comes with MediaWiki 1.31 and later, so you do not need to download it. The remaining configuration instructions must still be followed.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# well, maybe that&#039;s why it got updated so much. anyway, that&#039;s better; we get it directly from apt&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@mail:/var/tmp/mediawiki/extensions.2026-03-29# dpkg -l | grep -i mediawiki&lt;br /&gt;
ii  mediawiki                         1:1.43.8+dfsg-1~deb13u1                 all          website engine for collaborative work&lt;br /&gt;
ii  mediawiki-classes                 1:1.43.8+dfsg-1~deb13u1                 all          website engine for collaborative work - standalone classes&lt;br /&gt;
root@mail:/var/tmp/mediawiki/extensions.2026-03-29# &lt;br /&gt;
&lt;br /&gt;
root@mail:/var/tmp/mediawiki/extensions.2026-03-29# dpkg-query -L mediawiki | grep -i oathauth | head&lt;br /&gt;
/usr/share/mediawiki/extensions-core/OATHAuth&lt;br /&gt;
/usr/share/mediawiki/extensions-core/OATHAuth/COPYING&lt;br /&gt;
/usr/share/mediawiki/extensions-core/OATHAuth/OATHAuth.alias.php&lt;br /&gt;
/usr/share/mediawiki/extensions-core/OATHAuth/ServiceWiring.php&lt;br /&gt;
/usr/share/mediawiki/extensions-core/OATHAuth/composer.json&lt;br /&gt;
/usr/share/mediawiki/extensions-core/OATHAuth/extension.json&lt;br /&gt;
/usr/share/mediawiki/extensions-core/OATHAuth/i18n&lt;br /&gt;
/usr/share/mediawiki/extensions-core/OATHAuth/i18n/ang.json&lt;br /&gt;
/usr/share/mediawiki/extensions-core/OATHAuth/i18n/api&lt;br /&gt;
/usr/share/mediawiki/extensions-core/OATHAuth/i18n/api/ar.json&lt;br /&gt;
root@mail:/var/tmp/mediawiki/extensions.2026-03-29# &lt;br /&gt;
&lt;br /&gt;
root@mail:/var/tmp/mediawiki/extensions.2026-03-29# dpkg-query -L mediawiki | grep -i oathauth | tail&lt;br /&gt;
/usr/share/mediawiki/extensions-core/OATHAuth/src/OATHAuth.php&lt;br /&gt;
/usr/share/mediawiki/extensions-core/OATHAuth/src/OATHAuthModuleRegistry.php&lt;br /&gt;
/usr/share/mediawiki/extensions-core/OATHAuth/src/OATHAuthServices.php&lt;br /&gt;
/usr/share/mediawiki/extensions-core/OATHAuth/src/OATHUser.php&lt;br /&gt;
/usr/share/mediawiki/extensions-core/OATHAuth/src/OATHUserRepository.php&lt;br /&gt;
/usr/share/mediawiki/extensions-core/OATHAuth/src/Special&lt;br /&gt;
/usr/share/mediawiki/extensions-core/OATHAuth/src/Special/DisableOATHForUser.php&lt;br /&gt;
/usr/share/mediawiki/extensions-core/OATHAuth/src/Special/OATHManage.php&lt;br /&gt;
/usr/share/mediawiki/extensions-core/OATHAuth/src/Special/VerifyOATHForUser.php&lt;br /&gt;
/var/lib/mediawiki/extensions/OATHAuth&lt;br /&gt;
root@mail:/var/tmp/mediawiki/extensions.2026-03-29# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# I wonder if there&#039;s any others we get? looks like it&#039;s only this one&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@mail:/var/tmp/mediawiki/extensions.2026-03-29# ls /usr/share/mediawiki/extensions-core | grep -iE &#039;ConfirmAccount|SmiteSpam|DeleteBatch|UserMerge|Widgets|OATHAuth&#039;&lt;br /&gt;
OATHAuth&lt;br /&gt;
root@mail:/var/tmp/mediawiki/extensions.2026-03-29# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# just another quick check – none of these are in apt either&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@mail:/var/tmp/mediawiki/extensions.2026-03-29# apt-cache search mediawiki | grep -i extension&lt;br /&gt;
libreoffice-wiki-publisher - LibreOffice extension for working with MediaWiki articles&lt;br /&gt;
mediawiki-extension-codemirror - Syntax highlighting in MediaWiki&#039;s wikitext editor&lt;br /&gt;
mediawiki-extension-youtube - Embed YouTube and other videos into MediaWiki pages&lt;br /&gt;
php-luasandbox - PHP extension that provides a sandboxed Lua environment&lt;br /&gt;
php-wmerrors - PHP extension that enhances and customizes handling of PHP errors&lt;br /&gt;
root@mail:/var/tmp/mediawiki/extensions.2026-03-29# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# anyway, back to OATHAuth&lt;br /&gt;
## it says to enable caching&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
It is strongly recommended to setup caching when using OATHAuth.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# I confirmed that we already have cachign setup with APC&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@mail:/var/www/html/wiki.eco-libre.org# grep -ir cache LocalSettings.php &lt;br /&gt;
$wgMainCacheType = CACHE_ACCEL;&lt;br /&gt;
$wgMemCachedServers = [];&lt;br /&gt;
## Set $wgCacheDirectory to a writable directory on the web server&lt;br /&gt;
#$wgCacheDirectory = &amp;quot;$IP/cache&amp;quot;;&lt;br /&gt;
$wgCacheDirectory = &amp;quot;/var/www/html/wiki.eco-libre.org/cache&amp;quot;;&lt;br /&gt;
root@mail:/var/www/html/wiki.eco-libre.org# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
### CACHE_ACCEL means APC, which is the recommended option for single-server wikis, per the official mediawiki docs on performance tuning https://www.mediawiki.org/wiki/Manual:Performance_tuning#Single_web_server&lt;br /&gt;
### it also says to ue varnish. check&lt;br /&gt;
### it also says to use php-fpm w/ event MPM (instead of mod_php with prefork MPM), which we changed-to last month. check.&lt;br /&gt;
## our notes from OSE had the following options https://wiki.opensourceecology.org/wiki/CHG-2025-XX-XX_migrate_wiki_to_hetzner3&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
wfLoadExtension( &#039;OATHAuth&#039; );&lt;br /&gt;
&lt;br /&gt;
# Relaxed mode with +/- 4 minutes time drift tolerance. This is important or users will complain and/or disable 2FA entirely&lt;br /&gt;
# The security consequences are small. The usability benefits are huge.&lt;br /&gt;
$wgOATHAuthWindowRadius = 8;&lt;br /&gt;
&lt;br /&gt;
# make admins require 2FA&lt;br /&gt;
$wgOATHRequiredForGroups = [&#039;sysop&#039;, &#039;interface-admin&#039;, &#039;bureaucrat&#039;, &#039;suppress&#039;, &#039;widgeteditor&#039; ];&lt;br /&gt;
&lt;br /&gt;
# make &#039;powerful&#039; rights require 2FA&lt;br /&gt;
$wgOATHExclusiveRights =  [ &#039;apihighlimits&#039;, &#039;applychangetags&#039;, &#039;autoconfirmed&#039;, &#039;autopatrol&#039;, &#039;bigdelete&#039;, &#039;block&#039;, &#039;blockemail&#039;, &#039;bot&#039;, &#039;changetags&#039;, &#039;createaccount&#039;, &#039;createtalk&#039;, &#039;delete&#039;, &#039;deletechangetags&#039;, &#039;deletedhistory&#039;, &#039;deletedtext&#039;, &#039;deletelogentry&#039;, &#039;deleterevision&#039;, &#039;editcontentmodel&#039;, &#039;editinterface&#039;, &#039;editprotected&#039;, &#039;editsemiprotected&#039;, &#039;editsitecss&#039;, &#039;editsitejs&#039;, &#039;editsitejson&#039;, &#039;editusercss&#039;, &#039;edituserjs&#039;, &#039;edituserjson&#039;, &#039;hideuser&#039;, &#039;import&#039;, &#039;importupload&#039;, &#039;ipblock-exempt&#039;, &#039;managechangetags&#039;, &#039;markbotedits&#039;, &#039;mergehistory&#039;, &#039;move-categorypages&#039;, &#039;move-rootuserpages&#039;, &#039;move-subpages&#039;, &#039;nominornewtalk&#039;, &#039;noratelimit&#039;, &#039;patrol&#039;, &#039;protect&#039;, &#039;renameuser&#039;, &#039;reupload-shared&#039;, &#039;sendemail&#039;, &#039;suppressionlog&#039;, &#039;suppressredirect&#039;, &#039;suppressrevision&#039;, &#039;unblockself&#039;, &#039;unwatchedpages&#039;, &#039;userrights&#039;, ];&lt;br /&gt;
&lt;br /&gt;
# full list for reference (taken from htdocs/includes/MainConfigSchema.php) https://www.mediawiki.org/wiki/Extension:OATHAuth#Configuration&lt;br /&gt;
#$wgOATHExclusiveRights =  [ &#039;apihighlimits&#039;, &#039;applychangetags&#039;, &#039;autoconfirmed&#039;, &#039;autopatrol&#039;, &#039;bigdelete&#039;, &#039;block&#039;, &#039;blockemail&#039;, &#039;bot&#039;, &#039;browsearchive&#039;, &#039;changetags&#039;, &#039;createaccount&#039;, &#039;createpage&#039;, &#039;createtalk&#039;, &#039;delete&#039;, &#039;deletechangetags&#039;, &#039;deletedhistory&#039;, &#039;deletedtext&#039;, &#039;deletelogentry&#039;, &#039;deleterevision&#039;, &#039;edit&#039;, &#039;editcontentmodel&#039;, &#039;editinterface&#039;, &#039;editmyoptions&#039;, &#039;editmyprivateinfo&#039;, &#039;editmyusercss&#039;, &#039;editmyuserjs&#039;, &#039;editmyuserjson&#039;, &#039;editmyuserjsredirect&#039;, &#039;editmywatchlist&#039;, &#039;editprotected&#039;, &#039;editsemiprotected&#039;, &#039;editsitecss&#039;, &#039;editsitejs&#039;, &#039;editsitejson&#039;, &#039;editusercss&#039;, &#039;edituserjs&#039;, &#039;edituserjson&#039;, &#039;hideuser&#039;, &#039;import&#039;, &#039;importupload&#039;, &#039;ipblock-exempt&#039;, &#039;managechangetags&#039;, &#039;markbotedits&#039;, &#039;mergehistory&#039;, &#039;minoredit&#039;, &#039;move&#039;, &#039;move-categorypages&#039;, &#039;movefile&#039;, &#039;move-rootuserpages&#039;, &#039;move-subpages&#039;, &#039;nominornewtalk&#039;, &#039;noratelimit&#039;, &#039;patrol&#039;, &#039;protect&#039;, &#039;read&#039;, &#039;renameuser&#039;, &#039;reupload&#039;, &#039;reupload-shared&#039;, &#039;rollback&#039;, &#039;sendemail&#039;, &#039;suppressionlog&#039;, &#039;suppressredirect&#039;, &#039;suppressrevision&#039;, &#039;unblockself&#039;, &#039;undelete&#039;, &#039;unwatchedpages&#039;, &#039;upload&#039;, &#039;userrights&#039;, &#039;viewmyprivateinfo&#039;, &#039;viewmywatchlist&#039;, &#039;viewsuppressed&#039; ];&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
### I strongly agree with the relaxed window of codes&lt;br /&gt;
### I guess that list of requirements is good&lt;br /&gt;
### the other two are no longer listed on the wiki, but I guess they&#039;re good ?&lt;br /&gt;
## the docs show an additional option = $wgOATHSecretKey, used for encrypting the secret keys in the db. it suggests this command to generate it https://www.mediawiki.org/wiki/Extension:OATHAuth&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
hexdump -vn32 -e&#039;8/8 &amp;quot;%08X&amp;quot; &amp;quot;\n&amp;quot;&#039; /dev/urandom&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
### says it&#039;s only available since 1.45. I&#039;m not sure if that&#039;s the mediawiki version or the extension version.&lt;br /&gt;
### oh, I guess it&#039;s mediawiki, since they ship together. We&#039;re running 1.43.8, so I guess we can&#039;t use it yet https://wiki.eco-libre.org/wiki/Special:Version&lt;br /&gt;
### well, I guess let&#039;s define it. then it&#039;ll automatically start to use it when we upgrade to the next LTS. I think.&lt;br /&gt;
## ok, here&#039;s what I added&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@mail:/var/www/html/wiki.eco-libre.org# diff LocalSettings.20260418.php LocalSettings.php &lt;br /&gt;
220a221,240&lt;br /&gt;
&amp;gt; &lt;br /&gt;
&amp;gt; # configure OATHAuth for MFA (2FA). See also:&lt;br /&gt;
&amp;gt; # * https://www.mediawiki.org/wiki/Extension:OATHAuth&lt;br /&gt;
&amp;gt; # * https://wiki.eco-libre.org/wiki/Maltfield_Log/2026&lt;br /&gt;
&amp;gt; wfLoadExtension( &#039;OATHAuth&#039; );&lt;br /&gt;
&amp;gt; &lt;br /&gt;
&amp;gt; # Relaxed mode with +/- 4 minutes time drift tolerance. This is important or users will complain and/or disable 2FA entirely&lt;br /&gt;
&amp;gt; # The security consequences are small. The usability benefits are huge.&lt;br /&gt;
&amp;gt; $wgOATHAuthWindowRadius = 8;&lt;br /&gt;
&amp;gt; &lt;br /&gt;
&amp;gt; # make admins require 2FA&lt;br /&gt;
&amp;gt; $wgOATHRequiredForGroups = [&#039;sysop&#039;, &#039;interface-admin&#039;, &#039;bureaucrat&#039;, &#039;suppress&#039;, &#039;widgeteditor&#039; ];&lt;br /&gt;
&amp;gt; &lt;br /&gt;
&amp;gt; # make &#039;powerful&#039; rights require 2FA&lt;br /&gt;
&amp;gt; $wgOATHExclusiveRights =  [ &#039;apihighlimits&#039;, &#039;applychangetags&#039;, &#039;autoconfirmed&#039;, &#039;autopatrol&#039;, &#039;bigdelete&#039;, &#039;block&#039;, &#039;blockemail&#039;, &#039;bot&#039;, &#039;changetags&#039;, &#039;createaccount&#039;, &#039;createtalk&#039;, &#039;delete&#039;, &#039;deletechangetags&#039;, &#039;deletedhistory&#039;, &#039;deletedtext&#039;, &#039;deletelogentry&#039;, &#039;deleterevision&#039;, &#039;editcontentmodel&#039;, &#039;editinterface&#039;, &#039;editprotected&#039;, &#039;editsemiprotected&#039;, &#039;editsitecss&#039;, &#039;editsitejs&#039;, &#039;editsitejson&#039;, &#039;editusercss&#039;, &#039;edituserjs&#039;, &#039;edituserjson&#039;, &#039;hideuser&#039;, &#039;import&#039;, &#039;importupload&#039;, &#039;ipblock-exempt&#039;, &#039;managechangetags&#039;, &#039;markbotedits&#039;, &#039;mergehistory&#039;, &#039;move-categorypages&#039;, &#039;move-rootuserpages&#039;, &#039;move-subpages&#039;, &#039;nominornewtalk&#039;, &#039;noratelimit&#039;, &#039;patrol&#039;, &#039;protect&#039;, &#039;renameuser&#039;, &#039;reupload-shared&#039;, &#039;sendemail&#039;, &#039;suppressionlog&#039;, &#039;suppressredirect&#039;, &#039;suppressrevision&#039;, &#039;unblockself&#039;, &#039;unwatchedpages&#039;, &#039;userrights&#039;, ];&lt;br /&gt;
&amp;gt; &lt;br /&gt;
&amp;gt; # full list for reference (taken from htdocs/includes/MainConfigSchema.php) https://www.mediawiki.org/wiki/Extension:OATHAuth#Configuration&lt;br /&gt;
&amp;gt; #$wgOATHExclusiveRights =  [ &#039;apihighlimits&#039;, &#039;applychangetags&#039;, &#039;autoconfirmed&#039;, &#039;autopatrol&#039;, &#039;bigdelete&#039;, &#039;block&#039;, &#039;blockemail&#039;, &#039;bot&#039;, &#039;browsearchive&#039;, &#039;changetags&#039;, &#039;createaccount&#039;, &#039;createpage&#039;, &#039;createtalk&#039;, &#039;delete&#039;, &#039;deletechangetags&#039;, &#039;deletedhistory&#039;, &#039;deletedtext&#039;, &#039;deletelogentry&#039;, &#039;deleterevision&#039;, &#039;edit&#039;, &#039;editcontentmodel&#039;, &#039;editinterface&#039;, &#039;editmyoptions&#039;, &#039;editmyprivateinfo&#039;, &#039;editmyusercss&#039;, &#039;editmyuserjs&#039;, &#039;editmyuserjson&#039;, &#039;editmyuserjsredirect&#039;, &#039;editmywatchlist&#039;, &#039;editprotected&#039;, &#039;editsemiprotected&#039;, &#039;editsitecss&#039;, &#039;editsitejs&#039;, &#039;editsitejson&#039;, &#039;editusercss&#039;, &#039;edituserjs&#039;, &#039;edituserjson&#039;, &#039;hideuser&#039;, &#039;import&#039;, &#039;importupload&#039;, &#039;ipblock-exempt&#039;, &#039;managechangetags&#039;, &#039;markbotedits&#039;, &#039;mergehistory&#039;, &#039;minoredit&#039;, &#039;move&#039;, &#039;move-categorypages&#039;, &#039;movefile&#039;, &#039;move-rootuserpages&#039;, &#039;move-subpages&#039;, &#039;nominornewtalk&#039;, &#039;noratelimit&#039;, &#039;patrol&#039;, &#039;protect&#039;, &#039;read&#039;, &#039;renameuser&#039;, &#039;reupload&#039;, &#039;reupload-shared&#039;, &#039;rollback&#039;, &#039;sendemail&#039;, &#039;suppressionlog&#039;, &#039;suppressredirect&#039;, &#039;suppressrevision&#039;, &#039;unblockself&#039;, &#039;undelete&#039;, &#039;unwatchedpages&#039;, &#039;upload&#039;, &#039;userrights&#039;, &#039;viewmyprivateinfo&#039;, &#039;viewmywatchlist&#039;, &#039;viewsuppressed&#039; ];&lt;br /&gt;
&amp;gt; &lt;br /&gt;
&amp;gt; $wgOATHSecretKey=&#039;REDACTED&#039;;&lt;br /&gt;
root@mail:/var/www/html/wiki.eco-libre.org# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## ok, now let&#039;s update the db&lt;br /&gt;
### oh, this failed. we need to use the special privliged db user, since we hardened the normal db user&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@mail:/var/www/html/wiki.eco-libre.org# sudo -u www-data php /usr/share/mediawiki/maintenance/run.php update&lt;br /&gt;
MediaWiki 1.43.8 Updater&lt;br /&gt;
&lt;br /&gt;
Your composer.lock file is up to date with current dependencies!&lt;br /&gt;
Going to run database updates for wiki_el_db-rHb3&lt;br /&gt;
Depending on the size of your database this may take a while!&lt;br /&gt;
Abort with control-c in the next five seconds (skip this countdown with --quick) ...0&lt;br /&gt;
Updating category collations...&lt;br /&gt;
Selecting next 100 pages from cl_from = 0... processing... 0 done.&lt;br /&gt;
0 rows processed&lt;br /&gt;
...done.&lt;br /&gt;
Modifying rd_title field of table redirect...Wikimedia\Rdbms\DBQueryError from line 1198 of /usr/share/mediawiki/includes/libs/rdbms/database/Database.php: Error 1142: ALTER command denied to user &#039;wiki_el_user&#039;@&#039;localhost&#039; for table `wiki_el_db`.`rHb3redirect`&lt;br /&gt;
Function: Wikimedia\Rdbms\Database::sourceFile( /usr/share/mediawiki/maintenance/archives/patch-redirect-rd_title-varbinary.sql )&lt;br /&gt;
Query: ALTER TABLE `rHb3redirect` MODIFY rd_title VARBINARY(255) NOT NULL default &#039;&#039;,&lt;br /&gt;
 MODIFY rd_fragment VARBINARY(255) default NULL&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#0 /usr/share/mediawiki/includes/libs/rdbms/database/Database.php(1182): Wikimedia\Rdbms\Database-&amp;gt;getQueryException()&lt;br /&gt;
#1 /usr/share/mediawiki/includes/libs/rdbms/database/Database.php(1156): Wikimedia\Rdbms\Database-&amp;gt;getQueryExceptionAndLog()&lt;br /&gt;
#2 /usr/share/mediawiki/includes/libs/rdbms/database/Database.php(647): Wikimedia\Rdbms\Database-&amp;gt;reportQueryError()&lt;br /&gt;
#3 /usr/share/mediawiki/includes/libs/rdbms/database/Database.php(2791): Wikimedia\Rdbms\Database-&amp;gt;query()&lt;br /&gt;
#4 /usr/share/mediawiki/includes/libs/rdbms/database/Database.php(2729): Wikimedia\Rdbms\Database-&amp;gt;sourceStream()&lt;br /&gt;
#5 /usr/share/mediawiki/includes/libs/rdbms/database/DBConnRef.php(127): Wikimedia\Rdbms\Database-&amp;gt;sourceFile()&lt;br /&gt;
#6 /usr/share/mediawiki/includes/libs/rdbms/database/DBConnRef.php(799): Wikimedia\Rdbms\DBConnRef-&amp;gt;__call()&lt;br /&gt;
#7 /usr/share/mediawiki/includes/installer/DatabaseUpdater.php(797): Wikimedia\Rdbms\DBConnRef-&amp;gt;sourceFile()&lt;br /&gt;
#8 /usr/share/mediawiki/includes/installer/DatabaseUpdater.php(1074): MediaWiki\Installer\DatabaseUpdater-&amp;gt;applyPatch()&lt;br /&gt;
#9 /usr/share/mediawiki/includes/installer/DatabaseUpdater.php(595): MediaWiki\Installer\DatabaseUpdater-&amp;gt;modifyField()&lt;br /&gt;
#10 /usr/share/mediawiki/includes/installer/DatabaseUpdater.php(548): MediaWiki\Installer\DatabaseUpdater-&amp;gt;runUpdates()&lt;br /&gt;
#11 /usr/share/mediawiki/maintenance/update.php(195): MediaWiki\Installer\DatabaseUpdater-&amp;gt;doUpdates()&lt;br /&gt;
#12 /usr/share/mediawiki/maintenance/includes/MaintenanceRunner.php(703): UpdateMediaWiki-&amp;gt;execute()&lt;br /&gt;
#13 /usr/share/mediawiki/maintenance/run.php(51): MediaWiki\Maintenance\MaintenanceRunner-&amp;gt;run()&lt;br /&gt;
#14 {main}&lt;br /&gt;
root@mail:/var/www/html/wiki.eco-libre.org# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# alright, this worked&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@mail:/var/www/html/wiki.eco-libre.org# sudo -u www-data php /usr/share/mediawiki/maintenance/run.php update --dbuser wiki_el_superuser --dbpass REDACTED&lt;br /&gt;
...&lt;br /&gt;
done.&lt;br /&gt;
Purging caches...done.&lt;br /&gt;
&lt;br /&gt;
Done in 8.3 s.&lt;br /&gt;
root@mail:/var/www/html/wiki.eco-libre.org# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## after that, I tried to login. it worked&lt;br /&gt;
## I expected to be sent to some 2fa registration page, but that didn&#039;t happen. it was just like any normal login&lt;br /&gt;
## I went to special pages to see if I could get it to yell at me to enable 2fa, but that didn&#039;t happen&lt;br /&gt;
### I only see the following bold options on /wiki/Special:SpecialPages (usually admin page). I wonder if this is a subset because the others are just hidden since I don&#039;t have 2FA setup? https://wiki.eco-libre.org/wiki/Special:SpecialPages&lt;br /&gt;
#### Manage Two-Factor Authentication, Watchlist, Upload file, Change content model of a page&lt;br /&gt;
## anyway, I went to &amp;quot;Manage Two-factor authentication&amp;quot; https://wiki.eco-libre.org/wiki/Special:AccountSecurity&lt;br /&gt;
## I clicked the &amp;quot;Enable&amp;quot; button under TOTP&lt;br /&gt;
## I scanned the code. It entered it in my TOTP app as &amp;quot;Eco-Libre&amp;quot; – that&#039;s not ideal. It should say &amp;quot;Eco-Libre Wiki&amp;quot;&lt;br /&gt;
## So I updated the LocalSettings.php config with&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# This is the name that the entry will have in the user&#039;s TOTP app&lt;br /&gt;
$wgOATHAuthAccountPrefix=&#039;Eco-Libre Wiki&#039;;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## anyway, I was able to finish the 2FA enrollment process&lt;br /&gt;
## I went back to SpecialPages, and already I see a *ton* more SpecialPages in bold. So it looks like that restriction worked. Currently I have access to&lt;br /&gt;
### Unwateched pages, Block user, Create account, Delete user contributions, Disable user&#039;s two-factor authentication, Rename user, Unblock user, Verify two-factor authentication status, Watchlist, Upload file, Replace text, Change content model of a page, Import pages, Mass delete, Merge page histories, and View deleted pages.&lt;br /&gt;
## I also have a notifcation &amp;quot;Two-factor authenication has been enabeld on your account. If you did not do this, your account may have been comprimised.&amp;quot;&lt;br /&gt;
## I logged-out&lt;br /&gt;
## I logged-in.&lt;br /&gt;
### First I teted it with 6 zeros (bullshit code), and it rejected it&lt;br /&gt;
### next I entered the real OTP from my app; it worked&lt;br /&gt;
## ok, this extension is done.&lt;br /&gt;
# ...&lt;br /&gt;
# probably the next-most important one is ConfirmAccount.&lt;br /&gt;
## Honestly I don&#039;t know if I&#039;ll use this, as I decided it&#039;s better to raise the barrier of entry on the wiki to users that have passed the Eco-Libre test (which is itself very accessible, but it does allow for a onboarding &amp;amp; alignment process that should eliminate spam issues that most wikis have)&lt;br /&gt;
## perhaps if I can set it up to email the applicant a link to the &amp;quot;volunteer test&amp;quot; docs, that would be helpful to funnel wiki users into the proper volunteer join workflow..&lt;br /&gt;
# first let me copy the extensions; I ran these commands to put them in-place (yet still deactivated)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
rsync -av --progress ./ConfirmAccount /var/www/html/wiki.eco-libre.org/htdocs/extensions/&lt;br /&gt;
rsync -av --progress ./SmiteSpam /var/www/html/wiki.eco-libre.org/htdocs/extensions/&lt;br /&gt;
rsync -av --progress ./DeleteBatch /var/www/html/wiki.eco-libre.org/htdocs/extensions/&lt;br /&gt;
rsync -av --progress ./UserMerge /var/www/html/wiki.eco-libre.org/htdocs/extensions/&lt;br /&gt;
rsync -av --progress ./Widgets /var/www/html/wiki.eco-libre.org/htdocs/extensions/&lt;br /&gt;
rsync -av --progress ./OATHAuth /var/www/html/wiki.eco-libre.org/htdocs/extensions/&lt;br /&gt;
fix_web_permissions.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## that finished&lt;br /&gt;
# ok, here&#039;s the ConfirmAccount https://www.mediawiki.org/wiki/Extension:ConfirmAccount&lt;br /&gt;
## hmmm...it says we should use cache type CACHE_DB https://www.mediawiki.org/wiki/Extension:ConfirmAccount#Installation&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
wfLoadExtension( &#039;ConfirmAccount&#039; );&lt;br /&gt;
$wgSessionCacheType = CACHE_DB; // Avoids stale session state across requests.&lt;br /&gt;
$wgGroupPermissions[&#039;*&#039;][&#039;createaccount&#039;] = false; // REQUIRED to enforce account requests&lt;br /&gt;
$wgGroupPermissions[&#039;bureaucrat&#039;][&#039;createaccount&#039;] = true; // Optional to allow account creation by this trusted user group&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
#### I can&#039;t find elsewhere that says this specific cache type is requried. We&#039;re using APC, which I think is supposed to be more preformant than &lt;br /&gt;
### I checked the OSE LocalSettings.php config, and it also uses ConfirmAccount *and* CACHE_ACCEL (APC), so surely it&#039;s fine&lt;br /&gt;
### but it also used a bunch of other optimiazations, some of which are necessary for varnish caching&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#################&lt;br /&gt;
# VARNISH CACHE #&lt;br /&gt;
#################&lt;br /&gt;
&lt;br /&gt;
# note that these are named &amp;quot;squid&amp;quot; for historical reasons: wikipedia used to&lt;br /&gt;
# use squid, now they use varnish. They say &amp;quot;squid,&amp;quot; but also apply to varnish&lt;br /&gt;
# * https://www.mediawiki.org/wiki/Manual:Configuration_settings#Squid&lt;br /&gt;
&lt;br /&gt;
# See this guide for more info:&lt;br /&gt;
#  * https://www.mediawiki.org/wiki/Manual:Varnish_caching&lt;br /&gt;
&lt;br /&gt;
#$wgUseSquid = true;&lt;br /&gt;
#$wgSquidServers = array(&#039;opensourceecology.org&#039;);&lt;br /&gt;
#$wgSquidServersNoPurge = array(&#039;127.0.0.1&#039;);&lt;br /&gt;
&lt;br /&gt;
$wgUseSquid = true;&lt;br /&gt;
$wgSquidServers = array( &#039;127.0.0.1:6081&#039; );&lt;br /&gt;
$wgUsePrivateIPs = true;&lt;br /&gt;
&lt;br /&gt;
#################&lt;br /&gt;
# OPTIMIZATIONS #&lt;br /&gt;
#################&lt;br /&gt;
&lt;br /&gt;
# See these links for more info:&lt;br /&gt;
#  * https://www.mediawiki.org/wiki/Manual:Performance_tuning&lt;br /&gt;
#  * https://www.mediawiki.org/wiki/Manual:Caching&lt;br /&gt;
#  * https://www.mediawiki.org/wiki/User:Aaron_Schulz/How_to_make_MediaWiki_fast&lt;br /&gt;
&lt;br /&gt;
# INTERNAL MEDIAWIKI CACHE OPTIONS (DISTINCT FROM VARNISH)&lt;br /&gt;
&lt;br /&gt;
# MainCache and MessageCache should use APCU per Aaron Schulz&lt;br /&gt;
$wgMainCacheType = CACHE_ACCEL;&lt;br /&gt;
&lt;br /&gt;
# note that if message cache uses the db (per defaults), then it may make every&lt;br /&gt;
# page load include a db change, which causes mediawiki to emmit a set-cookie&lt;br /&gt;
# for cpPosTime. The cookie&#039;s presence coming from the backend causes varnish&lt;br /&gt;
# not to cache the page (rightfully so), and the result is that varnish (which&lt;br /&gt;
# is our most important cache) is rendered useless. For more info, see:&lt;br /&gt;
#  * https://www.mediawiki.org/wiki/Topic:U9fys4phj04a85vu&lt;br /&gt;
#  * https://wiki.opensourceecology.org/wiki/Maltfield_log_2018#Thr_Mar_15.2C_2018&lt;br /&gt;
$wgMessageCacheType = CACHE_ACCEL;&lt;br /&gt;
$wgUseLocalMessageCache = true;&lt;br /&gt;
&lt;br /&gt;
# Parser Cache should still use the DB per Aaron Schulz&lt;br /&gt;
$wgParserCacheType = CACHE_DB;&lt;br /&gt;
&lt;br /&gt;
# enable caching navigation sidebar per Aaron Schulz&lt;br /&gt;
$wgEnableSidebarCache = true;&lt;br /&gt;
&lt;br /&gt;
# cache interface messages to files in this directory per Aaron Schulz&lt;br /&gt;
# note that this should be outside the docroot!&lt;br /&gt;
$wgCacheDirectory = &amp;quot;$IP/../cache&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
# OTHER OPTIMIZATIONS&lt;br /&gt;
&lt;br /&gt;
# decrease db-heavy features per Aaron Schulz&lt;br /&gt;
$wgMiserMode = true;&lt;br /&gt;
&lt;br /&gt;
# Causes serious encoding problems&lt;br /&gt;
$wgUseGzip = false;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## I added this to our LocalSettings.php, except I hard-coded the wgCacheDirectory to &#039;/var/www/html/wiki.eco-libre.org/cache&#039;&lt;br /&gt;
## here&#039;s the ConfirmAccounts-related (and ConfirmEdit-related) config from OSE&#039;s LocalSettings.php&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# ConfirmAccount&lt;br /&gt;
# This extension and directory requires an admin to confirm a user before their &lt;br /&gt;
account is created&lt;br /&gt;
&lt;br /&gt;
require_once &amp;quot;$IP/extensions/ConfirmAccount/ConfirmAccount.php&amp;quot;;&lt;br /&gt;
$wgFileStore[&#039;accountreqs&#039;] = &amp;quot;$IP/images/ConfirmAccount&amp;quot;;&lt;br /&gt;
$wgFileStore[&#039;accountcreds&#039;] = &amp;quot;$IP/images/ConfirmAccount&amp;quot;;&lt;br /&gt;
$wgConfirmAccountContact = &#039;REDACTED@opensourceecology.org&#039;;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# ConfirmEdit&lt;br /&gt;
# reCaptcha settings and keys&lt;br /&gt;
&lt;br /&gt;
wfLoadExtensions([ &#039;ConfirmEdit&#039;, &#039;ConfirmEdit/ReCaptcha&#039; ]);&lt;br /&gt;
#$wgCaptchaClass = &#039;ReCaptcha&#039;;&lt;br /&gt;
$wgCaptchaClass = &#039;SimpleCaptcha&#039;;&lt;br /&gt;
#$wgCaptchaClass = &#039;QuestyCaptcha&#039;;&lt;br /&gt;
&lt;br /&gt;
#$wgReCaptchaPublicKey = &#039;REDACTED&#039;;&lt;br /&gt;
#$wgReCaptchaPrivateKey = &#039;REDACTED&#039;;&lt;br /&gt;
$wgReCaptchaPublicKey = &#039;REDACTED&#039;;&lt;br /&gt;
$wgReCaptchaPrivateKey = &#039;REDACTED&#039;;&lt;br /&gt;
&lt;br /&gt;
# https://www.google.com/recaptcha/admin/site?siteid=REDACTED - old style&lt;br /&gt;
#$recaptcha_public_key = &#039;REDACTED&#039;;&lt;br /&gt;
#$recaptcha_private_key = &#039;REDACTED&#039;;&lt;br /&gt;
&lt;br /&gt;
$wgGroupPermissions[&#039;*&#039;            ][&#039;skipcaptcha&#039;] = false;&lt;br /&gt;
$wgGroupPermissions[&#039;user&#039;         ][&#039;skipcaptcha&#039;] = true;&lt;br /&gt;
$wgGroupPermissions[&#039;autoconfirmed&#039;][&#039;skipcaptcha&#039;] = true;&lt;br /&gt;
$wgGroupPermissions[&#039;bot&#039;          ][&#039;skipcaptcha&#039;] = true; // registered bots&lt;br /&gt;
$wgGroupPermissions[&#039;sysop&#039;        ][&#039;skipcaptcha&#039;] = true;&lt;br /&gt;
&lt;br /&gt;
# Allow admins to approve (and unapprove) users via Special:UserRights&lt;br /&gt;
$wgAddGroups[&#039;sysop&#039;][&#039;approved&#039;] = true;&lt;br /&gt;
$wgRemoveGroups[&#039;sysop&#039;][&#039;approved&#039;] = true;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## of note is that I was planning on moving OSE from recaptcha to FancyCaptcha https://wiki.opensourceecology.org/wiki/CHG-2025-XX-XX_migrate_wiki_to_hetzner3&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# re-enable ConfirmEdit and switch to FancyCaption&lt;br /&gt;
grep &#039;FancyCaptcha&#039; ${vhostDir}/LocalSettings.php || perl -0777 -pi -e &amp;quot;s%\\\$wgCaptchaClass = &#039;SimpleCaptcha&#039;;%\#\\\$wgCaptchaClass = &#039;SimpleCaptcha&#039;;\n\nwfLoadExtensions([ &#039;ConfirmEdit&#039;, &#039;ConfirmEdit/FancyCaptcha&#039; ]);\n\\\$wgCaptchaDirectory = &#039;/var/www/html/wiki.opensourceecology.org/htdocs/images/captcha/&#039;;\n\\\$wgCaptchaSecret = &#039;$wgCaptchaSecret&#039;;\n%igs&amp;quot; ${vhostDir}/LocalSettings.php&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## oh shit, there&#039;s a known issue with ConfirmAccounts that it doesn&#039;t work at all on mediawiki v1.43. it was opened a year ago X_x https://www.mediawiki.org/wiki/Extension:ConfirmAccount#Known_issues&lt;br /&gt;
### well, hopefully that gets fixed before we upgrade to the latest LTS?&lt;br /&gt;
## ok, I&#039;m just going to add this to LocalSettings.php&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# configure ConfirmAccount. See also:&lt;br /&gt;
# * https://www.mediawiki.org/wiki/Extension:ConfirmAccount&lt;br /&gt;
# * https://wiki.eco-libre.org/wiki/Maltfield_Log/2026&lt;br /&gt;
wfLoadExtension( &#039;ConfirmAccount&#039; );&lt;br /&gt;
&lt;br /&gt;
# REQUIRED to enforce account requests&lt;br /&gt;
$wgGroupPermissions[&#039;*&#039;][&#039;createaccount&#039;] = false;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## and, per the wiki extensions&#039; page, I ran the update script&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@mail:/var/www/html/wiki.eco-libre.org# sudo -u www-data php /usr/share/mediawiki/maintenance/run.php update --dbuser wiki_el_superuser --dbpass REDACTED&lt;br /&gt;
...&lt;br /&gt;
...Update &#039;MediaWiki\Maintenance\FixAutoblockLogTitles&#039; already logged as completed. Use --force to run it again.&lt;br /&gt;
Purging caches...done.&lt;br /&gt;
&lt;br /&gt;
Done in 2.2 s.&lt;br /&gt;
root@mail:/var/www/html/wiki.eco-libre.org# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## I went to the SpecialPages, I now see &amp;quot;ConfirmAccounts Requests&amp;quot; https://wiki.eco-libre.org/wiki/Special:ConfirmAccounts&lt;br /&gt;
## Now, in a tor browser where I&#039;m *not* logged-in, I can click on &amp;quot;Anonymous&amp;quot; in the top-right and click on &amp;quot;Request account&amp;quot; https://wiki.eco-libre.org/wiki/Special:RequestAccount&lt;br /&gt;
## there&#039;s this weird thing that people have to agree to the ToS *and* that their real name is real.&lt;br /&gt;
### that first one is reasonable (though we haven&#039;t written a ToS yet)&lt;br /&gt;
### that second one is dumb. why wouldn&#039;t we let users contribute anonymously?&lt;br /&gt;
#### so I edited the LocalSettings.php with this&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# we let folks contribute under pseudonyms &lt;br /&gt;
$wgConfirmAccountRequestFormItems = [&lt;br /&gt;
   &#039;UserName&#039;        =&amp;gt; [ &#039;enabled&#039; =&amp;gt; true ],&lt;br /&gt;
   &#039;RealName&#039;        =&amp;gt; [ &#039;enabled&#039; =&amp;gt; false ],&lt;br /&gt;
   &#039;Biography&#039;       =&amp;gt; [ &#039;enabled&#039; =&amp;gt; false, &#039;minWords&#039; =&amp;gt; 50 ],&lt;br /&gt;
   &#039;AreasOfInterest&#039; =&amp;gt; [ &#039;enabled&#039; =&amp;gt; true ],&lt;br /&gt;
   &#039;CV&#039;              =&amp;gt; [ &#039;enabled&#039; =&amp;gt; true ],&lt;br /&gt;
   &#039;Notes&#039;           =&amp;gt; [ &#039;enabled&#039; =&amp;gt; true ],&lt;br /&gt;
   &#039;Links&#039;           =&amp;gt; [ &#039;enabled&#039; =&amp;gt; true ],&lt;br /&gt;
   &#039;TermsOfService&#039;  =&amp;gt; [ &#039;enabled&#039; =&amp;gt; true ],&lt;br /&gt;
 ];&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## ugh, it still has the same text about the &amp;quot;Real Name&amp;quot; – even after we disabled it&lt;br /&gt;
## looks like I need to create a wiki arrticle with the text that I want here https://wiki.eco-libre.org/wiki/MediaWiki:Requestaccount-text&lt;br /&gt;
### so the default text for this article is&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&#039;Complete and submit the following form to request a user account&#039;.&lt;br /&gt;
&lt;br /&gt;
Make sure that you first read the Terms of Service before requesting an account.&lt;br /&gt;
&lt;br /&gt;
Once the account is approved, you will be emailed a notification message and the account will be usable at login.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
### what I want is the &amp;quot;accept&amp;quot; text, which replaces this&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
I have read and agree to abide by the Terms of Service of Eco-Libre. The name I have specified under &amp;quot;Real name&amp;quot; is in fact my own real name.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
### here&#039;s a list of all the system messages, according to the extensions wiki page https://www.mediawiki.org/wiki/Extension:ConfirmAccount#Minimal&lt;br /&gt;
#### requestaccount-text, requestaccount-notes, requestaccount-ext-text, requestaccount-acc-text&lt;br /&gt;
##### this is not it https://wiki.eco-libre.org/wiki/MediaWiki:Requestaccount-acc-text&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
A confirmation message will be sent to your email address once you submit this request. The address will not be published. Please respond by clicking on the confirmation link provided by the email. Finally, your password will be emailed to you when your account is created. &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
#### nor this https://wiki.eco-libre.org/wiki/MediaWiki:Requestaccount-ext-text&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
The following information is kept private and will only be used for this request. You may want to list contacts such a phone number to aid in identify confirmation. &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
### I just searched the string, and found this&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@mail:/var/www/html/wiki.eco-libre.org# grep -irl &#039;is in fact my own real name&#039; *&lt;br /&gt;
cache/l10n_cache-en.cdb&lt;br /&gt;
htdocs/extensions/ConfirmAccount/i18n/requestaccount/en.json&lt;br /&gt;
root@mail:/var/www/html/wiki.eco-libre.org# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
#### so it looks like we need to edit one of these&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@mail:/var/www/html/wiki.eco-libre.org# grep -i &#039;real name&#039; htdocs/extensions/ConfirmAccount/i18n/requestaccount/en.json&lt;br /&gt;
		&amp;quot;requestaccount-real&amp;quot;: &amp;quot;Real name (optional):&amp;quot;,&lt;br /&gt;
		&amp;quot;requestaccount-real-i&amp;quot;: &amp;quot;Real name is optional. If you choose to provide it, this will be used for giving the user attribution for their work.&amp;quot;,&lt;br /&gt;
		&amp;quot;requestaccount-same&amp;quot;: &amp;quot;(same as real name below)&amp;quot;,&lt;br /&gt;
		&amp;quot;requestaccount-agree&amp;quot;: &amp;quot;You must certify that your real name is correct and that you agree to our Terms of Service.&amp;quot;,&lt;br /&gt;
		&amp;quot;requestaccount-tos&amp;quot;: &amp;quot;I have read and agree to abide by the [[{{MediaWiki:Requestaccount-page}}|Terms of Service]] of {{SITENAME}}.\nThe name I have specified under \&amp;quot;Real name\&amp;quot; is in fact my own real name.&amp;quot;,&lt;br /&gt;
root@mail:/var/www/html/wiki.eco-libre.org# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
#### I edited these two pages&lt;br /&gt;
##### https://wiki.eco-libre.org/wiki/MediaWiki:Requestaccount-tos&lt;br /&gt;
##### https://wiki.eco-libre.org/wiki/MediaWiki:Requestaccount-agree&lt;br /&gt;
### that worked; the agree text changed when I refresh the RequsetAccount form in tor browser&lt;br /&gt;
### I entered the min inforamtion, and got this response&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Your account request has been sent and is now pending review. A confirmation email has been sent to your email address.&lt;br /&gt;
&lt;br /&gt;
Return to Main Page.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
#### curiously, that means it didn&#039;t force me to enter a CV, bio, or the list of websites&lt;br /&gt;
#### I also got an email from noreply@eco-libre.org. It just basically asked me to click an email. Good GDPR compliance.&lt;br /&gt;
##### wait, I refreshed the special page as admin. it shows-up for review. so I guess not GDPR compliant :(&lt;br /&gt;
##### also the ip address listed is 127.0.0.1. Perhaps I need to configure MediaWiki to process X-Forwarded-For headers&lt;br /&gt;
### I changed &#039;false&#039; to &#039;true&#039; for the biography; now it appears again&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$wgConfirmAccountRequestFormItems = [&lt;br /&gt;
   &#039;UserName&#039;        =&amp;gt; [ &#039;enabled&#039; =&amp;gt; true ],&lt;br /&gt;
   &#039;RealName&#039;        =&amp;gt; [ &#039;enabled&#039; =&amp;gt; false ],&lt;br /&gt;
   &#039;Biography&#039;       =&amp;gt; [ &#039;enabled&#039; =&amp;gt; true, &#039;minWords&#039; =&amp;gt; 50 ],&lt;br /&gt;
   &#039;AreasOfInterest&#039; =&amp;gt; [ &#039;enabled&#039; =&amp;gt; true ],&lt;br /&gt;
   &#039;CV&#039;              =&amp;gt; [ &#039;enabled&#039; =&amp;gt; true ],&lt;br /&gt;
   &#039;Notes&#039;           =&amp;gt; [ &#039;enabled&#039; =&amp;gt; true ],&lt;br /&gt;
   &#039;Links&#039;           =&amp;gt; [ &#039;enabled&#039; =&amp;gt; true ],&lt;br /&gt;
   &#039;TermsOfService&#039;  =&amp;gt; [ &#039;enabled&#039; =&amp;gt; true ],&lt;br /&gt;
 ];&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## the workflow is for, after being approved, the system emails the passowrd. that&#039;s not very secure. we should, at least, make sure to require the user to change their password on first login&lt;br /&gt;
### I was looking for a way to force users to change their password on first login, but I first found this in the OSE config&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#############&lt;br /&gt;
# HARDENING #&lt;br /&gt;
#############&lt;br /&gt;
&lt;br /&gt;
$wgSecureLogin = true;&lt;br /&gt;
$wgSecretKey = &#039;REDACTED&#039;;&lt;br /&gt;
&lt;br /&gt;
# PASSWORD POLICIES&lt;br /&gt;
&lt;br /&gt;
$wgPasswordPolicy[&#039;policies&#039;][&#039;default&#039;][&#039;MinimalPasswordLength&#039;] = 10;&lt;br /&gt;
$wgPasswordPolicy[&#039;policies&#039;][&#039;default&#039;][&#039;PasswordCannotBePopular&#039;] = PHP_INT_MAX;&lt;br /&gt;
$wgPasswordPolicy[&#039;policies&#039;][&#039;default&#039;][&#039;PasswordCannotMatchUsername&#039;] = true;&lt;br /&gt;
&lt;br /&gt;
$wgPasswordPolicy[&#039;policies&#039;][&#039;sysop&#039;][&#039;MinimalPasswordLength&#039;] = 20&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
### I added this to stack exchange https://webapps.stackexchange.com/questions/182290/how-to-force-new-users-to-reset-their-password-mediawiki&lt;br /&gt;
# TODO: figure-out how to force new users to change their password, if it was auto-generated by mediawiki&lt;br /&gt;
# TODO: create ToS page https://wiki.eco-libre.org/wiki/Eco-Libre:Terms_of_Service&lt;br /&gt;
# TODO: figure-out how to make mediawiki see the IP as X-Forwarded-For (to play nice with nginx-&amp;gt;varnish-&amp;gt;apache)&lt;br /&gt;
# TODO: finish activating &amp;amp; configuring the remaining &amp;quot;new&amp;quot; extensions&lt;br /&gt;
&lt;br /&gt;
= 2026-04-17 =&lt;br /&gt;
# shit, we&#039;re getting a 500 error on the wiki today&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[user@disp3459 ~]$ curl -iL https://wiki.eco-libre.org&lt;br /&gt;
HTTP/1.1 500 Internal Server Error&lt;br /&gt;
Server: nginx&lt;br /&gt;
Date: Sat, 18 Apr 2026 00:57:02 GMT&lt;br /&gt;
Content-Type: text/html; charset=UTF-8&lt;br /&gt;
Content-Length: 0&lt;br /&gt;
Connection: keep-alive&lt;br /&gt;
X-Content-Type-Options: nosniff&lt;br /&gt;
Expires: Thu, 19 Nov 1981 08:52:00 GMT&lt;br /&gt;
Cache-Control: no-store, no-cache, must-revalidate&lt;br /&gt;
Pragma: no-cache&lt;br /&gt;
X-Request-Id: REDACTED&lt;br /&gt;
X-Frame-Options: SAMEORIGIN&lt;br /&gt;
Set-Cookie: mw_installer_session=REDACTED; path=/; secure; HttpOnly; SameSite=Strict;HttpOnly;Secure&lt;br /&gt;
X-Content-Type-Options: nosniff&lt;br /&gt;
X-XSS-Protection: 1; mode=block&lt;br /&gt;
X-Frame-Options: deny&lt;br /&gt;
Referrer-Policy: strict-origin&lt;br /&gt;
X-Varnish: 18804052&lt;br /&gt;
Age: 0&lt;br /&gt;
Via: 1.1 mail (Varnish/7.7)&lt;br /&gt;
&lt;br /&gt;
[user@disp3459 ~]$ &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# looks like open_basedir?&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Sat Apr 18 00:59:28.202275 2026] [proxy_fcgi:error] [pid 3214280:tid 3214323] [client 127.0.0.1:0] AH01071: Got error &#039;PHP message: PHP Warning:  is_readable(): open_basedir restriction in effect. File(/usr/share/mediawiki/LocalSettings.php) is not within the allowed path(s): (...) in /usr/share/mediawiki/includes/Output/NoLocalSettings.php on line 59; PHP message: PHP Fatal error:  Uncaught Error: Call to undefined function Wikimedia\\ObjectCache\\ini_set() in /usr/share/mediawiki/includes/libs/objectcache/APCUBagOStuff.php:55\nStack trace:\n#0 /usr/share/mediawiki/includes/utils/FileContentsHasher.php(37): Wikimedia\\ObjectCache\\APCUBagOStuff-&amp;gt;construct()\n#1 /usr/share/mediawiki/includes/utils/FileContentsHasher.php(47): FileContentsHasher-&amp;gt;construct()\n#2 /usr/share/mediawiki/includes/utils/FileContentsHasher.php(93): FileContentsHasher::singleton()\n#3 /usr/share/mediawiki/includes/Html/TemplateParser.php(271): FileContentsHasher::getFileContentsHash()\n#4 /usr/share/mediawiki/includes/Html/TemplateParser.php(173): MediaWiki\\Html\\TemplateParser-&amp;gt;compile()\n#5 /usr/share/mediawiki/includes/Html/TemplateParser.php(296): MediaWiki\\Html\\TemplateParser-&amp;gt;getTemplate()\n#6 /usr/share/mediawiki/includes/Output/NoLocalSettings.php(54): MediaWiki\\Html\\TemplateParser-&amp;gt;processTemplate()\n#7 /usr/share/mediawiki/includes/WebStart.php(51): require_once(&#039;...&#039;)\n#8...&#039;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# it&#039;s just a symlink to a symlink to a non-existant file. is that the issue?&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@mail:/usr/share/mediawiki/includes/libs/rdbms/database# ls -lah /usr/share/mediawiki/LocalSettings.php&lt;br /&gt;
lrwxrwxrwx 1 root root 36 Apr 10 22:17 /usr/share/mediawiki/LocalSettings.php -&amp;gt; /var/lib/mediawiki/LocalSettings.php&lt;br /&gt;
root@mail:/usr/share/mediawiki/includes/libs/rdbms/database# ls -lah /var/lib/mediawiki/LocalSettings.php&lt;br /&gt;
lrwxrwxrwx 1 root root 32 Apr 10 22:17 /var/lib/mediawiki/LocalSettings.php -&amp;gt; /etc/mediawiki/LocalSettings.php&lt;br /&gt;
root@mail:/usr/share/mediawiki/includes/libs/rdbms/database# ls -lah /etc/mediawiki/LocalSettings.php&lt;br /&gt;
ls: cannot access &#039;/etc/mediawiki/LocalSettings.php&#039;: No such file or directory&lt;br /&gt;
root@mail:/usr/share/mediawiki/includes/libs/rdbms/database# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# wtf. the file is here, but it&#039;s not here?&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@mail:/var/lib/mediawiki# ls LocalSettings.php &lt;br /&gt;
LocalSettings.php&lt;br /&gt;
root@mail:/var/lib/mediawiki# cat LocalSettings.php &lt;br /&gt;
cat: LocalSettings.php: No such file or directory&lt;br /&gt;
root@mail:/var/lib/mediawiki# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# oh, it&#039;s because it&#039;s a symlink&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@mail:/var/lib/mediawiki# ls -lah /var/www/html/wiki.eco-libre.org/htdocs/LocalSettings.php &lt;br /&gt;
lrwxrwxrwx 1 root root 32 Apr 10 22:17 /var/www/html/wiki.eco-libre.org/htdocs/LocalSettings.php -&amp;gt; /etc/mediawiki/LocalSettings.php&lt;br /&gt;
root@mail:/var/lib/mediawiki# cat /var/www/html/wiki.eco-libre.org/htdocs/LocalSettings.php &lt;br /&gt;
cat: /var/www/html/wiki.eco-libre.org/htdocs/LocalSettings.php: No such file or directory&lt;br /&gt;
root@mail:/var/lib/mediawiki# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# that definitely was a file before. I set it to just require() the real file from one dir up (outside the docroot). but why is it gone now? could it have been deleted by a security upgrade in apt? unattended-upgrades perhaps?&lt;br /&gt;
## well, that&#039;s a match&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@mail:/var/log/unattended-upgrades# grep -irl mediawiki *&lt;br /&gt;
unattended-upgrades-dpkg.log&lt;br /&gt;
unattended-upgrades.log&lt;br /&gt;
root@mail:/var/log/unattended-upgrades# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# yeah, it looks like we upgraded on 2026-04-13. That was Monday. Today is Friday.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@mail:/var/log/unattended-upgrades# grep -ir mediawiki *&lt;br /&gt;
unattended-upgrades-dpkg.log:Preparing to unpack .../mediawiki_1%3a1.43.8+dfsg-1~deb13u1_all.deb ...&lt;br /&gt;
unattended-upgrades-dpkg.log:Unpacking mediawiki (1:1.43.8+dfsg-1~deb13u1) over (1:1.43.6+dfsg-1~deb13u1) ...&lt;br /&gt;
unattended-upgrades-dpkg.log:Preparing to unpack .../mediawiki-classes_1%3a1.43.8+dfsg-1~deb13u1_all.deb ...&lt;br /&gt;
unattended-upgrades-dpkg.log:Unpacking mediawiki-classes (1:1.43.8+dfsg-1~deb13u1) over (1:1.43.6+dfsg-1~deb13u1) ...&lt;br /&gt;
unattended-upgrades-dpkg.log:Setting up mediawiki-classes (1:1.43.8+dfsg-1~deb13u1) ...&lt;br /&gt;
unattended-upgrades-dpkg.log:Setting up mediawiki (1:1.43.8+dfsg-1~deb13u1) ...&lt;br /&gt;
unattended-upgrades-dpkg.log:apache2_invoke mediawiki: already enabled&lt;br /&gt;
unattended-upgrades-dpkg.log:mediawiki-jobrunner.service is a disabled or a static unit not running, not starting it.&lt;br /&gt;
unattended-upgrades.log:2026-04-13 06:07:02,546 INFO Packages that will be upgraded: mediawiki mediawiki-classes&lt;br /&gt;
root@mail:/var/log/unattended-upgrades# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# mediawiki announced two releases on 2026-04-01. One was a normal maintenance release (1.43.8). One was a security release (1.43.7)&lt;br /&gt;
## https://lists.wikimedia.org/hyperkitty/list/mediawiki-announce@lists.wikimedia.org/thread/DIBLSBHISKX6NFRUFNOGZRVW42E7R2QP/&lt;br /&gt;
## https://lists.wikimedia.org/hyperkitty/list/mediawiki-announce@lists.wikimedia.org/thread/6VW6OGVSC7LO3QUMBEZOPQFYYOFDJ452/&lt;br /&gt;
# well, it&#039;s good that we confirmed that securty updates are getting automatically installed.&lt;br /&gt;
# ok, well, obviously we need to follow the debian-way and put the LocalSettings.php file in /etc/.\&lt;br /&gt;
## I did that&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@mail:/var/lib/mediawiki# cat /etc/mediawiki/LocalSettings.php&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
# including separate file that contains the database password so that it is not stored within the document root.&lt;br /&gt;
# For more info see:&lt;br /&gt;
#  * https://tech.michaelaltfield.net/2020/02/14/phplist-hardening-security/&lt;br /&gt;
#  * https://www.mediawiki.org/wiki/Manual:Security&lt;br /&gt;
#  * https://wiki.r00tedvw.com/index.php/Mediawiki/Hardening&lt;br /&gt;
 &lt;br /&gt;
#$docRoot = dirname( $_SERVER[&#039;DOCUMENT_ROOT&#039;] );&lt;br /&gt;
#require_once &amp;quot;$docRoot/LocalSettings.php&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
# docRoot didn&#039;t work for all of:&lt;br /&gt;
#  1. php-fpm (the normal website)&lt;br /&gt;
#  2. cli&lt;br /&gt;
#  3. the fact that we&#039;re in /var/lib/mediawiki due to debian&#039;s install symlink&lt;br /&gt;
#&lt;br /&gt;
# ...so I&#039;m just hardcoding the path to LocalSettings.php, so it always works!&lt;br /&gt;
&lt;br /&gt;
require_once( &amp;quot;/var/www/html/wiki.eco-libre.org/LocalSettings.php&amp;quot; );&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
root@mail:/var/lib/mediawiki# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# I tried the site; it&#039;s still broken&lt;br /&gt;
# I cleared varnish cache; it&#039;s still broken&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@mail:/var/lib/mediawiki# varnishadm &#039;ban req.url ~ &amp;quot;.&amp;quot;&#039;&lt;br /&gt;
&lt;br /&gt;
root@mail:/var/lib/mediawiki# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# yeah, I think the problem is that I never added /etc/mediawiki into the basedir, because I wasn&#039;t using it there. Ugh.&lt;br /&gt;
# I don&#039;t like doing this, but there&#039;s nothing else there. should be fine&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@mail:/var/lib/mediawiki# ls -lah /etc/mediawiki/&lt;br /&gt;
total 20K&lt;br /&gt;
drwxr-xr-x   2 root root 4,0K Apr 18 01:16 .&lt;br /&gt;
drwxr-xr-x 120 root root  12K Apr 17 20:30 ..&lt;br /&gt;
-rw-r--r--   1 root root  741 Apr 18 01:16 LocalSettings.php&lt;br /&gt;
root@mail:/var/lib/mediawiki# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= 2026-04-14 =&lt;br /&gt;
# Appropedia responded to me, indicating that they use Vector 2022 skin, with these config options https://wordpress.org/support/topic/support-for-automatic-exchange-rates-wp_http_block_external-2/#&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
:wfLoadSkin( &#039;Vector&#039; );&lt;br /&gt;
:$wgDefaultSkin = &#039;vector-2022&#039;;&lt;br /&gt;
:$wgSkipSkins[] = &#039;vector&#039;; // Disable old Vector&lt;br /&gt;
:$wgVectorResponsive = true;&lt;br /&gt;
:$wgVectorMaxWidthOptions[&#039;exclude&#039;][&#039;mainpage&#039;] = false;&lt;br /&gt;
:$wgVectorNightMode[&#039;logged_out&#039;] = true;&lt;br /&gt;
:$wgDefaultUserOptions[&#039;vector-main-menu-pinned&#039;] = 0;&lt;br /&gt;
:$wgDefaultUserOptions[&#039;vector-page-tools-pinned&#039;] = 0;&lt;br /&gt;
:$wgDefaultUserOptions[&#039;vector-appearance-pinned&#039;] = 0;&lt;br /&gt;
:$wgDefaultUserOptions[&#039;vector-toc-pinned&#039;] = 0;&lt;br /&gt;
:$wgDefaultUserOptions[&#039;vector-font-size&#039;] = 1;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# they said they use this extension for &amp;quot;read mode&amp;quot; which they developed themselves https://www.mediawiki.org/wiki/Extension:ReadMode&lt;br /&gt;
&lt;br /&gt;
= 2026-04-13 =&lt;br /&gt;
# Here&#039;s TOFU 3/3 (Tor, exit in The Netherlands)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
The Netherlands&lt;br /&gt;
	  Congratulations. This browser is configured to use Tor.&lt;br /&gt;
2026-04-13&lt;br /&gt;
######################################################################### 100.0%&lt;br /&gt;
2026-04-13&lt;br /&gt;
14M	OATHAuth-REL1_43-015a49e.tar.gz&lt;br /&gt;
9ee56e843931edd87b631b264d680e9f8d77f18b5ffdbc18b9a4f5b15330878e  OATHAuth-REL1_43-015a49e.tar.gz&lt;br /&gt;
user@host:/tmp/user/1000/tmp.eIvrMPff3B$ &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= 2026-04-10 =&lt;br /&gt;
# Here&#039;s TOFU 2/3 (VPN, exit in US)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
United States&lt;br /&gt;
2026-04-10&lt;br /&gt;
######################################################################### 100.0%&lt;br /&gt;
2026-04-10&lt;br /&gt;
14M	OATHAuth-REL1_43-015a49e.tar.gz&lt;br /&gt;
9ee56e843931edd87b631b264d680e9f8d77f18b5ffdbc18b9a4f5b15330878e  OATHAuth-REL1_43-015a49e.tar.gz&lt;br /&gt;
user@disp5712:/tmp/tmp.oTeGPpTCzP$ &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# finally, they all match! great, that&#039;s our last extension&lt;br /&gt;
&lt;br /&gt;
= 2026-04-09 =&lt;br /&gt;
# Here&#039;s TOFU 3/3 (ISP, exit in Ecuador)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Ecuador&lt;br /&gt;
2026-04-09&lt;br /&gt;
######################################################################### 100.0%&lt;br /&gt;
2026-04-09&lt;br /&gt;
4.0K	OATHAuth-REL1_43-967ccd4.tar.gz&lt;br /&gt;
8351c0267c2cd7866ff04c04261f06cd75af9a7130aac848ca43fd047404e229  OATHAuth-REL1_43-967ccd4.tar.gz&lt;br /&gt;
user@disp7124:/tmp/tmp.wlx3U02c6r$ &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# fuck, it&#039;s already unavailable; says &#039;libraryupgrader&#039; from 3 hours ago &amp;gt;:0&lt;br /&gt;
# let&#039;s try again&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
REMOTE_FILES=&amp;quot;https://extdist.wmflabs.org/dist/extensions/OATHAuth-REL1_43-015a49e.tar.gz&amp;quot;&lt;br /&gt;
&lt;br /&gt;
CURL=&amp;quot;/usr/bin/curl --retry 5 --retry-all-errors&amp;quot;&lt;br /&gt;
PYTHON=&amp;quot;/usr/bin/python3&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# in tails, we must torify&lt;br /&gt;
if [[ &amp;quot;`whoami`&amp;quot; == &amp;quot;amnesia&amp;quot; ]] ; then&lt;br /&gt;
	CURL=&amp;quot;/usr/bin/torify ${CURL}&amp;quot;&lt;br /&gt;
	PYTHON=&amp;quot;/usr/bin/torify ${PYTHON}&amp;quot;&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
tmpDir=`mktemp -d`&lt;br /&gt;
pushd &amp;quot;${tmpDir}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# first get some info about our internet connection&lt;br /&gt;
${CURL} -s https://ifconfig.co/country | head -n1&lt;br /&gt;
${CURL} -s https://check.torproject.org | grep Congratulations | head -n1&lt;br /&gt;
&lt;br /&gt;
# and today&#039;s date&lt;br /&gt;
date -u +&amp;quot;%Y-%m-%d&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# get the file&lt;br /&gt;
for file in ${REMOTE_FILES}; do&lt;br /&gt;
	${CURL} --progress-bar -O ${file}&lt;br /&gt;
done&lt;br /&gt;
&lt;br /&gt;
# checksum&lt;br /&gt;
date -u +&amp;quot;%Y-%m-%d&amp;quot;&lt;br /&gt;
du -sh *&lt;br /&gt;
sha256sum *&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# Here&#039;s TOFU 1/3 (ISP, exit in Ecuador)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Ecuador&lt;br /&gt;
2026-04-09&lt;br /&gt;
######################################################################### 100.0%&lt;br /&gt;
2026-04-09&lt;br /&gt;
14M	OATHAuth-REL1_43-015a49e.tar.gz&lt;br /&gt;
9ee56e843931edd87b631b264d680e9f8d77f18b5ffdbc18b9a4f5b15330878e  OATHAuth-REL1_43-015a49e.tar.gz&lt;br /&gt;
user@disp7124:/tmp/tmp.rGKb4qtHLX$ &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= 2026-04-08 =&lt;br /&gt;
# Here&#039;s TOFU 2/3 (VPN, exit in UK)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
United Kingdom&lt;br /&gt;
2026-04-08&lt;br /&gt;
############################################################################## 100.0%&lt;br /&gt;
2026-04-08&lt;br /&gt;
14M	OATHAuth-REL1_43-967ccd4.tar.gz&lt;br /&gt;
5992bf6044ba5bd6404d51ec5bef936e6eb724576a2003fc176648c7fcf9c6b7  OATHAuth-REL1_43-967ccd4.tar.gz&lt;br /&gt;
user@disp6902:/tmp/tmp.KDMVCsn1cU$ &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= 2026-04-07 =&lt;br /&gt;
# here&#039;s TOFU 3/3 (Tor, exit in The Netherlands)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
The Netherlands&lt;br /&gt;
	  Congratulations. This browser is configured to use Tor.&lt;br /&gt;
2026-04-07&lt;br /&gt;
####################################################################### 100.0%&lt;br /&gt;
####################################################################### 100.0%&lt;br /&gt;
####################################################################### 100.0%&lt;br /&gt;
2026-04-07&lt;br /&gt;
448K	ConfirmAccount-REL1_43-38c4602.tar.gz&lt;br /&gt;
124K	DeleteBatch-REL1_43-b3b052b.tar.gz&lt;br /&gt;
4.0K	OATHAuth-REL1_43-2cdbefb.tar.gz&lt;br /&gt;
95b2bc67977c22d069867a7225aa1a9720b7593ed5ab49aa27cc293f01b2e2bb  ConfirmAccount-REL1_43-38c4602.tar.gz&lt;br /&gt;
d1e7c01cf709f2b57137bb3d76f73b4e8fd36ce57c12b750b04fe20ffce9be61  DeleteBatch-REL1_43-b3b052b.tar.gz&lt;br /&gt;
8351c0267c2cd7866ff04c04261f06cd75af9a7130aac848ca43fd047404e229  OATHAuth-REL1_43-2cdbefb.tar.gz&lt;br /&gt;
user@host:/tmp/user/1000/tmp.qw9hrOvh3l$ &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# ok, well, we&#039;re 2/3 for that one. ConfirmAccount and DeleteBatch both have the same on all 3 TOFUs.&lt;br /&gt;
## But OATHAuth must have had a new release, because it&#039;s now 404&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
user@host:/tmp/user/1000/tmp.qw9hrOvh3l$ cat OATHAuth-REL1_43-2cdbefb.tar.gz &lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;head&amp;gt;&amp;lt;title&amp;gt;404 Not Found&amp;lt;/title&amp;gt;&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;h1&amp;gt;404 Not Found&amp;lt;/h1&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&amp;lt;center&amp;gt;nginx/1.18.0&amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
user@host:/tmp/user/1000/tmp.qw9hrOvh3l$ &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# I checked the changelog. looks like this extension is getting updated almost every 1-2 days from &amp;quot;Translation updater bot&amp;quot; – that&#039;s terrible. We need three consecutive days of no changes for 3TOFU https://www.mediawiki.org/wiki/Extension:OATHAuth&lt;br /&gt;
## hmm, well, if I look back further, there was a gap of 2 months before the update 6 days ago. So there certainly is *some* stability.&lt;br /&gt;
## also, that was *all* commits. This one limits to just the 1.43 branch, which is what we want https://gerrit.wikimedia.org/r/plugins/gitiles/mediawiki/extensions/OATHAuth/+log/refs/heads/REL1_43&lt;br /&gt;
### hmm, that one shows the last update was 10 hours ago, and the one before that was 2 months ago (Jan 22). That would be fine, but didn&#039;t we have two consecutive 3TOFUs fail on us?&lt;br /&gt;
### oh, wait, woah. the commits are out of order! First it shows &amp;quot;10 hours ago&amp;quot; and then &amp;quot;2 months ago&amp;quot; and then &amp;quot;7 days ago&amp;quot; wtf!&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
gerrit.wikimedia.org / mediawiki / extensions / OATHAuth / refs/heads/REL1_43&lt;br /&gt;
&lt;br /&gt;
	967ccd4 Localisation updates from https://translatewiki.net. by Translation updater bot · 10 hours ago REL1_43&lt;br /&gt;
	2cdbefb SECURITY: Don&#039;t leak user&#039;s lack of 2FA to other users by Roan Kattouw · 2 months ago&lt;br /&gt;
	bfcd5cf Localisation updates from https://translatewiki.net. by Translation updater bot · 7 days ago&lt;br /&gt;
	d8e7578 build: Updating npm dependencies by libraryupgrader · 12 days ago&lt;br /&gt;
	be14e83 Localisation updates from https://translatewiki.net. by Translation updater bot · 2 weeks ago&lt;br /&gt;
	77c70f5 build: Updating flatted to 3.4.2 by libraryupgrader · 3 weeks ago&lt;br /&gt;
	87d04d4 Localisation updates from https://translatewiki.net. by Translation updater bot · 3 weeks ago&lt;br /&gt;
	8e176b2 Localisation updates from https://translatewiki.net. by Translation updater bot · 4 weeks ago&lt;br /&gt;
	14596de Localisation updates from https://translatewiki.net. by Translation updater bot · 5 weeks ago&lt;br /&gt;
	8c7891a build: Updating ajv to 6.14.0, 8.18.0 by libraryupgrader · 6 weeks ago&lt;br /&gt;
	0406194 Localisation updates from https://translatewiki.net. by Translation updater bot · 6 weeks ago&lt;br /&gt;
	4c94235 Localisation updates from https://translatewiki.net. by Translation updater bot · 7 weeks ago&lt;br /&gt;
	7d0b2d7 Localisation updates from https://translatewiki.net. by Translation updater bot · 8 weeks ago&lt;br /&gt;
	a896cff Localisation updates from https://translatewiki.net. by Translation updater bot · 9 weeks ago&lt;br /&gt;
	b8e8afa Localisation updates from https://translatewiki.net. by Translation updater bot · 2 months ago&lt;br /&gt;
	4b3cb73 build: Updating lodash to 4.17.23 by libraryupgrader · 2 months ago&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# well, it looks like the translator bot runs once per week. so we should have 6 days before that one changes again..&lt;br /&gt;
# anyway, here&#039;s our (hopefully last) 3TOFU script, just for OATHAuth&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
REMOTE_FILES=&amp;quot;https://extdist.wmflabs.org/dist/extensions/OATHAuth-REL1_43-967ccd4.tar.gz&amp;quot;&lt;br /&gt;
&lt;br /&gt;
CURL=&amp;quot;/usr/bin/curl --retry 5 --retry-all-errors&amp;quot;&lt;br /&gt;
PYTHON=&amp;quot;/usr/bin/python3&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# in tails, we must torify&lt;br /&gt;
if [[ &amp;quot;`whoami`&amp;quot; == &amp;quot;amnesia&amp;quot; ]] ; then&lt;br /&gt;
	CURL=&amp;quot;/usr/bin/torify ${CURL}&amp;quot;&lt;br /&gt;
	PYTHON=&amp;quot;/usr/bin/torify ${PYTHON}&amp;quot;&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
tmpDir=`mktemp -d`&lt;br /&gt;
pushd &amp;quot;${tmpDir}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# first get some info about our internet connection&lt;br /&gt;
${CURL} -s https://ifconfig.co/country | head -n1&lt;br /&gt;
${CURL} -s https://check.torproject.org | grep Congratulations | head -n1&lt;br /&gt;
&lt;br /&gt;
# and today&#039;s date&lt;br /&gt;
date -u +&amp;quot;%Y-%m-%d&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# get the file&lt;br /&gt;
for file in ${REMOTE_FILES}; do&lt;br /&gt;
	${CURL} --progress-bar -O ${file}&lt;br /&gt;
done&lt;br /&gt;
&lt;br /&gt;
# checksum&lt;br /&gt;
date -u +&amp;quot;%Y-%m-%d&amp;quot;&lt;br /&gt;
du -sh *&lt;br /&gt;
sha256sum *&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# and TOFU 1/3 (Tor, exit in The Netherlands)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
The Netherlands&lt;br /&gt;
	  Congratulations. This browser is configured to use Tor.&lt;br /&gt;
2026-04-07&lt;br /&gt;
####################################################################### 100.0%&lt;br /&gt;
2026-04-07&lt;br /&gt;
14M	OATHAuth-REL1_43-967ccd4.tar.gz&lt;br /&gt;
5992bf6044ba5bd6404d51ec5bef936e6eb724576a2003fc176648c7fcf9c6b7  OATHAuth-REL1_43-967ccd4.tar.gz&lt;br /&gt;
user@host:/tmp/user/1000/tmp.RBxv6XdjXd$ &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= 2026-04-06 =&lt;br /&gt;
# here&#039;s TOFU 2/3 (VPN, exit in Germany)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Germany&lt;br /&gt;
2026-04-06&lt;br /&gt;
#################################################################################### 100.0%&lt;br /&gt;
#################################################################################### 100.0%&lt;br /&gt;
#################################################################################### 100.0%&lt;br /&gt;
2026-04-06&lt;br /&gt;
448K	ConfirmAccount-REL1_43-38c4602.tar.gz&lt;br /&gt;
124K	DeleteBatch-REL1_43-b3b052b.tar.gz&lt;br /&gt;
14M	OATHAuth-REL1_43-2cdbefb.tar.gz&lt;br /&gt;
95b2bc67977c22d069867a7225aa1a9720b7593ed5ab49aa27cc293f01b2e2bb  ConfirmAccount-REL1_43-38c4602.tar.gz&lt;br /&gt;
d1e7c01cf709f2b57137bb3d76f73b4e8fd36ce57c12b750b04fe20ffce9be61  DeleteBatch-REL1_43-b3b052b.tar.gz&lt;br /&gt;
f71115af96a1ed5297d8d56f56683635b7c9e0b8b32151b184feea1fbec3350a  OATHAuth-REL1_43-2cdbefb.tar.gz&lt;br /&gt;
user@disp8963:/tmp/tmp.JNwdKPbQIW$ &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= 2026-04-01 =&lt;br /&gt;
# continuing with the wiki setup today&lt;br /&gt;
# I saw our db partition reached 90%. It&#039;s been growing slowly, but adding mediawiki to the server didn&#039;t help, so I spent some time expanding the disks. Now we&#039;re down to 48% usage on the db partition, and everything else is hovering around 60% used, +/- 5%&lt;br /&gt;
# here&#039;s our last TOFU on the mediawiki extensions&lt;br /&gt;
## TOFU 3/3 (ISP, exit in Ecuador)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Ecuador&lt;br /&gt;
2026-04-01&lt;br /&gt;
######################################################################### 100.0%&lt;br /&gt;
######################################################################### 100.0%&lt;br /&gt;
######################################################################### 100.0%&lt;br /&gt;
######################################################################### 100.0%&lt;br /&gt;
######################################################################### 100.0%&lt;br /&gt;
######################################################################### 100.0%&lt;br /&gt;
2026-04-01&lt;br /&gt;
4.0K	ConfirmAccount-REL1_43-9cc1a82.tar.gz&lt;br /&gt;
4.0K	DeleteBatch-REL1_43-24a81e4.tar.gz&lt;br /&gt;
4.0K	OATHAuth-REL1_43-d8e7578.tar.gz&lt;br /&gt;
108K	SmiteSpam-REL1_43-483b81b.tar.gz&lt;br /&gt;
140K	UserMerge-REL1_43-27425da.tar.gz&lt;br /&gt;
492K	Widgets-REL1_43-60a09f0.tar.gz&lt;br /&gt;
8351c0267c2cd7866ff04c04261f06cd75af9a7130aac848ca43fd047404e229  ConfirmAccount-REL1_43-9cc1a82.tar.gz&lt;br /&gt;
8351c0267c2cd7866ff04c04261f06cd75af9a7130aac848ca43fd047404e229  DeleteBatch-REL1_43-24a81e4.tar.gz&lt;br /&gt;
8351c0267c2cd7866ff04c04261f06cd75af9a7130aac848ca43fd047404e229  OATHAuth-REL1_43-d8e7578.tar.gz&lt;br /&gt;
997c9edfe7ab78d6e1f1268d48ec19f13d036f584ad54c4281e210940a59f7c9  SmiteSpam-REL1_43-483b81b.tar.gz&lt;br /&gt;
5f28fdf7c0b727d699d42f14073359e13c8db1b2d389d78219845b5912cc0ccc  UserMerge-REL1_43-27425da.tar.gz&lt;br /&gt;
bed64d3c98842f7ec3675e17a24c21fb4720862084857e6834fb7813d14ab865  Widgets-REL1_43-60a09f0.tar.gz&lt;br /&gt;
user@disp7799:/tmp/tmp.YkN2s6MgT6$ &lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# huh, 3TOFU failed for 3/5 of the extensions&lt;br /&gt;
## SmiteSpam, UserMerge, and Widgets matched on all three&lt;br /&gt;
## but ConfirmAccount, DeleteBatch, and OATHAuthOATHAuth diff&#039;d&lt;br /&gt;
# I see that the file size of the three that failed is &amp;quot;4.0K&amp;quot;. that suggests that it didn&#039;t actually download&lt;br /&gt;
# sure enough, they&#039;re 404&#039;d&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
user@disp7799:/tmp/tmp.YkN2s6MgT6$ cat ConfirmAccount-REL1_43-9cc1a82.tar.gz&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;head&amp;gt;&amp;lt;title&amp;gt;404 Not Found&amp;lt;/title&amp;gt;&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;h1&amp;gt;404 Not Found&amp;lt;/h1&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&amp;lt;center&amp;gt;nginx/1.18.0&amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
user@disp7799:/tmp/tmp.YkN2s6MgT6$ &lt;br /&gt;
user@disp7799:/tmp/tmp.YkN2s6MgT6$ cat DeleteBatch-REL1_43-24a81e4.tar.gz&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;head&amp;gt;&amp;lt;title&amp;gt;404 Not Found&amp;lt;/title&amp;gt;&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;h1&amp;gt;404 Not Found&amp;lt;/h1&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&amp;lt;center&amp;gt;nginx/1.18.0&amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
user@disp7799:/tmp/tmp.YkN2s6MgT6$ &lt;br /&gt;
user@disp7799:/tmp/tmp.YkN2s6MgT6$ cat OATHAuth-REL1_43-d8e7578.tar.gz&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;head&amp;gt;&amp;lt;title&amp;gt;404 Not Found&amp;lt;/title&amp;gt;&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;h1&amp;gt;404 Not Found&amp;lt;/h1&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&amp;lt;center&amp;gt;nginx/1.18.0&amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
user@disp7799:/tmp/tmp.YkN2s6MgT6$ &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# if I go to download these plugins again, here&#039;s the URLs I get&lt;br /&gt;
## ConfirmAccount https://www.mediawiki.org/wiki/Extension:ConfirmAccount&lt;br /&gt;
### https://extdist.wmflabs.org/dist/extensions/ConfirmAccount-REL1_43-38c4602.tar.gz&lt;br /&gt;
## DeleteBatch https://www.mediawiki.org/wiki/Extension:ConfirmAccount&lt;br /&gt;
### https://extdist.wmflabs.org/dist/extensions/DeleteBatch-REL1_43-b3b052b.tar.gz&lt;br /&gt;
## OATHAuth https://www.mediawiki.org/wiki/Extension:OATHAuth&lt;br /&gt;
### https://extdist.wmflabs.org/dist/extensions/OATHAuth-REL1_43-2cdbefb.tar.gz&lt;br /&gt;
# here&#039;s our old 3TOFU script, for comparison&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
REMOTE_FILES=&amp;quot;https://extdist.wmflabs.org/dist/extensions/ConfirmAccount-REL1_43-9cc1a82.tar.gz https://extdist.wmflabs.org/dist/extensions/DeleteBatch-REL1_43-24a81e4.tar.gz https://extdist.wmflabs.org/dist/extensions/OATHAuth-REL1_43-d8e7578.tar.gz https://extdist.wmflabs.org/dist/extensions/SmiteSpam-REL1_43-483b81b.tar.gz https://extdist.wmflabs.org/dist/extensions/UserMerge-REL1_43-27425da.tar.gz https://extdist.wmflabs.org/dist/extensions/Widgets-REL1_43-60a09f0.tar.gz&amp;quot;&lt;br /&gt;
&lt;br /&gt;
CURL=&amp;quot;/usr/bin/curl --retry 5 --retry-all-errors&amp;quot;&lt;br /&gt;
PYTHON=&amp;quot;/usr/bin/python3&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# in tails, we must torify&lt;br /&gt;
if [[ &amp;quot;`whoami`&amp;quot; == &amp;quot;amnesia&amp;quot; ]] ; then&lt;br /&gt;
	CURL=&amp;quot;/usr/bin/torify ${CURL}&amp;quot;&lt;br /&gt;
	PYTHON=&amp;quot;/usr/bin/torify ${PYTHON}&amp;quot;&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
tmpDir=`mktemp -d`&lt;br /&gt;
pushd &amp;quot;${tmpDir}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# first get some info about our internet connection&lt;br /&gt;
${CURL} -s https://ifconfig.co/country | head -n1&lt;br /&gt;
${CURL} -s https://check.torproject.org | grep Congratulations | head -n1&lt;br /&gt;
&lt;br /&gt;
# and today&#039;s date&lt;br /&gt;
date -u +&amp;quot;%Y-%m-%d&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# get the file&lt;br /&gt;
for file in ${REMOTE_FILES}; do&lt;br /&gt;
	${CURL} --progress-bar -O ${file}&lt;br /&gt;
done&lt;br /&gt;
&lt;br /&gt;
# checksum&lt;br /&gt;
date -u +&amp;quot;%Y-%m-%d&amp;quot;&lt;br /&gt;
du -sh *&lt;br /&gt;
sha256sum *&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# so, yeah, I guess they delete the old releases when the push a new one? that&#039;s pretty annoying&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
https://extdist.wmflabs.org/dist/extensions/ConfirmAccount-REL1_43-9cc1a82.tar.gz&lt;br /&gt;
https://extdist.wmflabs.org/dist/extensions/ConfirmAccount-REL1_43-38c4602.tar.gz&lt;br /&gt;
&lt;br /&gt;
https://extdist.wmflabs.org/dist/extensions/DeleteBatch-REL1_43-24a81e4.tar.gz&lt;br /&gt;
https://extdist.wmflabs.org/dist/extensions/DeleteBatch-REL1_43-b3b052b.tar.gz&lt;br /&gt;
&lt;br /&gt;
https://extdist.wmflabs.org/dist/extensions/OATHAuth-REL1_43-d8e7578.tar.gz&lt;br /&gt;
https://extdist.wmflabs.org/dist/extensions/OATHAuth-REL1_43-2cdbefb.tar.gz&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# anyway, let&#039;s try it again, and hope we get all three before they push another release in the next ~1 week&lt;br /&gt;
# here&#039;s a new 3TOFU script&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
REMOTE_FILES=&amp;quot;https://extdist.wmflabs.org/dist/extensions/ConfirmAccount-REL1_43-38c4602.tar.gz https://extdist.wmflabs.org/dist/extensions/DeleteBatch-REL1_43-b3b052b.tar.gz https://extdist.wmflabs.org/dist/extensions/OATHAuth-REL1_43-2cdbefb.tar.gz&amp;quot;&lt;br /&gt;
&lt;br /&gt;
CURL=&amp;quot;/usr/bin/curl --retry 5 --retry-all-errors&amp;quot;&lt;br /&gt;
PYTHON=&amp;quot;/usr/bin/python3&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# in tails, we must torify&lt;br /&gt;
if [[ &amp;quot;`whoami`&amp;quot; == &amp;quot;amnesia&amp;quot; ]] ; then&lt;br /&gt;
	CURL=&amp;quot;/usr/bin/torify ${CURL}&amp;quot;&lt;br /&gt;
	PYTHON=&amp;quot;/usr/bin/torify ${PYTHON}&amp;quot;&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
tmpDir=`mktemp -d`&lt;br /&gt;
pushd &amp;quot;${tmpDir}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# first get some info about our internet connection&lt;br /&gt;
${CURL} -s https://ifconfig.co/country | head -n1&lt;br /&gt;
${CURL} -s https://check.torproject.org | grep Congratulations | head -n1&lt;br /&gt;
&lt;br /&gt;
# and today&#039;s date&lt;br /&gt;
date -u +&amp;quot;%Y-%m-%d&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# get the file&lt;br /&gt;
for file in ${REMOTE_FILES}; do&lt;br /&gt;
	${CURL} --progress-bar -O ${file}&lt;br /&gt;
done&lt;br /&gt;
&lt;br /&gt;
# checksum&lt;br /&gt;
date -u +&amp;quot;%Y-%m-%d&amp;quot;&lt;br /&gt;
du -sh *&lt;br /&gt;
sha256sum *&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# And TOFU 1/3 (ISP, exit in Ecuador)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Ecuador&lt;br /&gt;
2026-04-01&lt;br /&gt;
######################################################################### 100.0%&lt;br /&gt;
######################################################################### 100.0%&lt;br /&gt;
######################################################################### 100.0%&lt;br /&gt;
2026-04-01&lt;br /&gt;
448K	ConfirmAccount-REL1_43-38c4602.tar.gz&lt;br /&gt;
124K	DeleteBatch-REL1_43-b3b052b.tar.gz&lt;br /&gt;
14M	OATHAuth-REL1_43-2cdbefb.tar.gz&lt;br /&gt;
95b2bc67977c22d069867a7225aa1a9720b7593ed5ab49aa27cc293f01b2e2bb  ConfirmAccount-REL1_43-38c4602.tar.gz&lt;br /&gt;
d1e7c01cf709f2b57137bb3d76f73b4e8fd36ce57c12b750b04fe20ffce9be61  DeleteBatch-REL1_43-b3b052b.tar.gz&lt;br /&gt;
f71115af96a1ed5297d8d56f56683635b7c9e0b8b32151b184feea1fbec3350a  OATHAuth-REL1_43-2cdbefb.tar.gz&lt;br /&gt;
user@disp7799:/tmp/tmp.oWTEqi2mpP$ &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# and all the files are &amp;gt;4K, so that&#039;s promising.&lt;br /&gt;
# TODO: finish 3TOFU, install &amp;amp; configure extensions&lt;br /&gt;
# ...&lt;br /&gt;
# I also edited some wiki articles, namely&lt;br /&gt;
## this Maltfield_Log and Maltfield_Log/2026&lt;br /&gt;
## the Main_Page&lt;br /&gt;
## the Eco-Libre:About page (from the footer)&lt;br /&gt;
## a Documentation page, which describes what the wiki is for and what it&#039;s not for&lt;br /&gt;
# TOOO: write Eco-Libre:Privacy_policy&lt;br /&gt;
&lt;br /&gt;
= 2026-03-31 =&lt;br /&gt;
Hello World!&lt;br /&gt;
&lt;br /&gt;
# I installed this wiki last week on 2026-03-27&lt;br /&gt;
# since then, I did some hardening and basic setup (skin, logos)&lt;br /&gt;
# today I continued through the process of configuring its built-in plugins&lt;br /&gt;
# I&#039;m still in the process of a 3TOFU on the desired extensions.&lt;br /&gt;
# now I&#039;m finally editing some pages&lt;br /&gt;
# &#039;&#039;&#039;TODO: download, activate, and configure additional extensions&#039;&#039;&#039;&lt;/div&gt;</summary>
		<author><name>Maltfield</name></author>
	</entry>
	<entry>
		<id>https://wiki.eco-libre.org/index.php?title=Maltfield_Log/2026&amp;diff=110</id>
		<title>Maltfield Log/2026</title>
		<link rel="alternate" type="text/html" href="https://wiki.eco-libre.org/index.php?title=Maltfield_Log/2026&amp;diff=110"/>
		<updated>2026-05-05T19:50:56Z</updated>

		<summary type="html">&lt;p&gt;Maltfield: add TOC and header&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is my ([[User:Maltfield|Michael Altfield]]&#039;s) work log from 2026&lt;br /&gt;
&lt;br /&gt;
I intentionally make my log entries &#039;&#039;very&#039;&#039; verbose -- to make future volunteer&#039;s work easier. The more information that is dumped into this log, the more helpful it will be for future volunteers.&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
=See Also=&lt;br /&gt;
# [[Maltfield_Log]]&lt;br /&gt;
# [[User:Maltfield]]&lt;br /&gt;
# [[Special:Contributions/Maltfield]]&lt;br /&gt;
&lt;br /&gt;
== 2026-04-28 ==&lt;br /&gt;
# one of the authors of the CERN OHL license got back to me! https://forums.ohwr.org/t/possible-to-triple-license-cern-ohl-s-2-0-agpl-3-0-cc-by-sa-4-0/849882/6&lt;br /&gt;
# they confirmed what I said: don&#039;t license under 3 licenses, or the person who uses our stuff can choose which license they want. that&#039;s not good.&lt;br /&gt;
# unfortuantely they didn&#039;t comment on my copyright DEP5 file, so I asked them to&lt;br /&gt;
# in the meantime, I did look into REUSE&lt;br /&gt;
## it looked like a big PIA. their demo vid shows you having to define the license of every file. that&#039;s a nightmare.&lt;br /&gt;
## the docs said that there is a &#039;convert dep5&#039;. that would be a lifesaver! https://codeberg.org/fsfe/reuse-tool&lt;br /&gt;
## I installed reuse from apt, but I discovered there is NO &#039;convert-dep5&#039; option :(&lt;br /&gt;
## I tried, instead, to install from pip (very insecure but I did it in a dispVM), and it *does* have the &#039;convert-dep5&#039; command&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
user@disp4360:~/sandbox/life-line$ pip install reuse&lt;br /&gt;
error: externally-managed-environment&lt;br /&gt;
&lt;br /&gt;
× This environment is externally managed&lt;br /&gt;
╰─&amp;gt; To install Python packages system-wide, try apt install&lt;br /&gt;
	python3-xyz, where xyz is the package you are trying to&lt;br /&gt;
	install.&lt;br /&gt;
    &lt;br /&gt;
	If you wish to install a non-Debian-packaged Python package,&lt;br /&gt;
	create a virtual environment using python3 -m venv path/to/venv.&lt;br /&gt;
	Then use path/to/venv/bin/python and path/to/venv/bin/pip. Make&lt;br /&gt;
	sure you have python3-full installed.&lt;br /&gt;
    &lt;br /&gt;
	If you wish to install a non-Debian packaged Python application,&lt;br /&gt;
	it may be easiest to use pipx install xyz, which will manage a&lt;br /&gt;
	virtual environment for you. Make sure you have pipx installed.&lt;br /&gt;
    &lt;br /&gt;
	See /usr/share/doc/python3.11/README.venv for more information.&lt;br /&gt;
&lt;br /&gt;
note: If you believe this is a mistake, please contact your Python installation or OS distribution provider. You can override this, at the risk of breaking your Python installation or OS, by passing --break-system-packages.&lt;br /&gt;
hint: See PEP 668 for the detailed specification.&lt;br /&gt;
user@disp4360:~/sandbox/life-line$&lt;br /&gt;
&lt;br /&gt;
user@disp4360:~/sandbox/life-line$ sudo apt-get install python3-virtualenv&lt;br /&gt;
Reading package lists... Done&lt;br /&gt;
Building dependency tree... Done&lt;br /&gt;
Reading state information... Done&lt;br /&gt;
The following packages were automatically installed and are no longer required:&lt;br /&gt;
  python3-binaryornot python3-boolean python3-debian python3-license-expression&lt;br /&gt;
Use &#039;sudo apt autoremove&#039; to remove them.&lt;br /&gt;
The following additional packages will be installed:&lt;br /&gt;
  python3-distlib python3-filelock python3-pip-whl python3-platformdirs&lt;br /&gt;
  python3-setuptools-whl python3-wheel-whl&lt;br /&gt;
The following NEW packages will be installed:&lt;br /&gt;
  python3-distlib python3-filelock python3-pip-whl python3-platformdirs&lt;br /&gt;
  python3-setuptools-whl python3-virtualenv python3-wheel-whl&lt;br /&gt;
0 upgraded, 7 newly installed, 0 to remove and 59 not upgraded.&lt;br /&gt;
Need to get 3,245 kB of archives.&lt;br /&gt;
After this operation, 4,914 kB of additional disk space will be used.&lt;br /&gt;
Do you want to continue? [Y/n] y&lt;br /&gt;
Get:1 https://deb.debian.org/debian bookworm/main amd64 python3-distlib all 0.3.6-1 [257 kB]&lt;br /&gt;
Get:2 https://deb.debian.org/debian bookworm/main amd64 python3-filelock all 3.9.0-1 [9,460 B]&lt;br /&gt;
Get:3 https://deb.debian.org/debian bookworm/main amd64 python3-pip-whl all 23.0.1+dfsg-1 [1,717 kB]&lt;br /&gt;
Get:4 https://deb.debian.org/debian bookworm/main amd64 python3-platformdirs all 2.6.0-1 [16.3 kB]&lt;br /&gt;
Get:5 https://deb.debian.org/debian bookworm/main amd64 python3-setuptools-whl all 66.1.1-1+deb12u2 [1,112 kB]&lt;br /&gt;
Get:6 https://deb.debian.org/debian bookworm/main amd64 python3-wheel-whl all 0.38.4-2 [38.6 kB]&lt;br /&gt;
Get:7 https://deb.debian.org/debian bookworm/main amd64 python3-virtualenv all 20.17.1+ds-1 [93.9 kB]&lt;br /&gt;
Fetched 3,245 kB in 4s (776 kB/s)        &lt;br /&gt;
Selecting previously unselected package python3-distlib.&lt;br /&gt;
(Reading database ... 450690 files and directories currently installed.)&lt;br /&gt;
Preparing to unpack .../0-python3-distlib_0.3.6-1_all.deb ...&lt;br /&gt;
Unpacking python3-distlib (0.3.6-1) ...&lt;br /&gt;
Selecting previously unselected package python3-filelock.&lt;br /&gt;
Preparing to unpack .../1-python3-filelock_3.9.0-1_all.deb ...&lt;br /&gt;
Unpacking python3-filelock (3.9.0-1) ...&lt;br /&gt;
Selecting previously unselected package python3-pip-whl.&lt;br /&gt;
Preparing to unpack .../2-python3-pip-whl_23.0.1+dfsg-1_all.deb ...&lt;br /&gt;
Unpacking python3-pip-whl (23.0.1+dfsg-1) ...&lt;br /&gt;
Selecting previously unselected package python3-platformdirs.&lt;br /&gt;
Preparing to unpack .../3-python3-platformdirs_2.6.0-1_all.deb ...&lt;br /&gt;
Unpacking python3-platformdirs (2.6.0-1) ...&lt;br /&gt;
Selecting previously unselected package python3-setuptools-whl.&lt;br /&gt;
Preparing to unpack .../4-python3-setuptools-whl_66.1.1-1+deb12u2_all.deb ...&lt;br /&gt;
Unpacking python3-setuptools-whl (66.1.1-1+deb12u2) ...&lt;br /&gt;
Selecting previously unselected package python3-wheel-whl.&lt;br /&gt;
Preparing to unpack .../5-python3-wheel-whl_0.38.4-2_all.deb ...&lt;br /&gt;
Unpacking python3-wheel-whl (0.38.4-2) ...&lt;br /&gt;
Selecting previously unselected package python3-virtualenv.&lt;br /&gt;
Preparing to unpack .../6-python3-virtualenv_20.17.1+ds-1_all.deb ...&lt;br /&gt;
Unpacking python3-virtualenv (20.17.1+ds-1) ...&lt;br /&gt;
Setting up python3-setuptools-whl (66.1.1-1+deb12u2) ...&lt;br /&gt;
Setting up python3-filelock (3.9.0-1) ...&lt;br /&gt;
Setting up python3-pip-whl (23.0.1+dfsg-1) ...&lt;br /&gt;
Setting up python3-distlib (0.3.6-1) ...&lt;br /&gt;
Setting up python3-platformdirs (2.6.0-1) ...&lt;br /&gt;
Setting up python3-wheel-whl (0.38.4-2) ...&lt;br /&gt;
Setting up python3-virtualenv (20.17.1+ds-1) ...&lt;br /&gt;
Processing triggers for man-db (2.11.2-2) ...&lt;br /&gt;
Scanning processes...                                                                    &lt;br /&gt;
Scanning linux images...                                                                 &lt;br /&gt;
&lt;br /&gt;
No services need to be restarted.&lt;br /&gt;
&lt;br /&gt;
No containers need to be restarted.&lt;br /&gt;
&lt;br /&gt;
No user sessions are running outdated binaries.&lt;br /&gt;
&lt;br /&gt;
No VM guests are running outdated hypervisor (qemu) binaries on this host.&lt;br /&gt;
user@disp4360:~/sandbox/life-line$ python3 -m virtualenv --python=python3.7 /tmp/virtualenv&lt;br /&gt;
RuntimeError: failed to find interpreter for Builtin discover of python_spec=&#039;python3.7&#039;&lt;br /&gt;
user@disp4360:~/sandbox/life-line$&lt;br /&gt;
&lt;br /&gt;
user@disp4360:~/sandbox/life-line$ python3 -m virtualenv --python=python3 /tmp/virtualenvcreated virtual environment CPython3.11.2.final.0-64 in 248ms&lt;br /&gt;
  creator CPython3Posix(dest=/tmp/virtualenv, clear=False, no_vcs_ignore=False, global=False)&lt;br /&gt;
  seeder FromAppData(download=False, pip=bundle, setuptools=bundle, wheel=bundle, via=copy, app_data_dir=/home/user/.local/share/virtualenv)&lt;br /&gt;
	added seed packages: pip==23.0.1, setuptools==66.1.1, wheel==0.38.4&lt;br /&gt;
  activators BashActivator,CShellActivator,FishActivator,NushellActivator,PowerShellActivator,PythonActivator&lt;br /&gt;
user@disp4360:~/sandbox/life-line$&lt;br /&gt;
&lt;br /&gt;
user@disp4360:~/sandbox/life-line$ source /tmp/virtualenv/bin/activate&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ pip install --user --upgrade reuse&lt;br /&gt;
ERROR: Can not perform a &#039;--user&#039; install. User site-packages are not visible in this virtualenv.&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$&lt;br /&gt;
&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ pip install  --upgrade reuse&lt;br /&gt;
Collecting reuse&lt;br /&gt;
  Downloading reuse-6.2.0.tar.gz (1.6 MB)&lt;br /&gt;
	 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 1.6/1.6 MB 696.8 kB/s eta 0:00:00&lt;br /&gt;
  Installing build dependencies ... done&lt;br /&gt;
  Getting requirements to build wheel ... done&lt;br /&gt;
  Preparing metadata (pyproject.toml) ... done&lt;br /&gt;
Collecting Jinja2&amp;gt;=3.0.0&lt;br /&gt;
  Downloading jinja2-3.1.6-py3-none-any.whl (134 kB)&lt;br /&gt;
	 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 134.9/134.9 kB 576.8 kB/s eta 0:00:00&lt;br /&gt;
Collecting attrs&amp;gt;=23.2&lt;br /&gt;
  Downloading attrs-26.1.0-py3-none-any.whl (67 kB)&lt;br /&gt;
	 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 67.5/67.5 kB 674.1 kB/s eta 0:00:00&lt;br /&gt;
Collecting click&amp;gt;=8.1&lt;br /&gt;
  Downloading click-8.3.3-py3-none-any.whl (110 kB)&lt;br /&gt;
	 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 110.5/110.5 kB 1.1 MB/s eta 0:00:00&lt;br /&gt;
Collecting license-expression&amp;gt;=21.6.14&lt;br /&gt;
  Downloading license_expression-30.4.4-py3-none-any.whl (120 kB)&lt;br /&gt;
	 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 120.6/120.6 kB 1.3 MB/s eta 0:00:00&lt;br /&gt;
Collecting python-debian&amp;gt;=0.1.48&lt;br /&gt;
  Downloading python_debian-1.1.0-py3-none-any.whl (137 kB)&lt;br /&gt;
	 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 138.0/138.0 kB 819.7 kB/s eta 0:00:00&lt;br /&gt;
Collecting python-magic&amp;gt;=0.4.12&lt;br /&gt;
  Downloading python_magic-0.4.27-py2.py3-none-any.whl (13 kB)&lt;br /&gt;
Collecting tomlkit&amp;gt;=0.8&lt;br /&gt;
  Downloading tomlkit-0.14.0-py3-none-any.whl (39 kB)&lt;br /&gt;
Collecting MarkupSafe&amp;gt;=2.0&lt;br /&gt;
  Downloading markupsafe-3.0.3-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (22 kB)&lt;br /&gt;
Collecting boolean.py&amp;gt;=4.0&lt;br /&gt;
  Downloading boolean_py-5.0-py3-none-any.whl (26 kB)&lt;br /&gt;
Collecting charset-normalizer&lt;br /&gt;
  Downloading charset_normalizer-3.4.7-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (214 kB)&lt;br /&gt;
	 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 214.1/214.1 kB 1.3 MB/s eta 0:00:00&lt;br /&gt;
Building wheels for collected packages: reuse&lt;br /&gt;
  Building wheel for reuse (pyproject.toml) ... done&lt;br /&gt;
  Created wheel for reuse: filename=reuse-6.2.0-cp311-cp311-manylinux_2_36_x86_64.whl size=158934 sha256=db5cd3e5984de36238f3ead308c250b12c1cce318d17eb802313e29b25bd28cf&lt;br /&gt;
  Stored in directory: /home/user/.cache/pip/wheels/a0/8e/93/87a9da23115993a12577ff1fc8df222b28bd91e19b9987c529&lt;br /&gt;
Successfully built reuse&lt;br /&gt;
Installing collected packages: boolean.py, tomlkit, python-magic, MarkupSafe, license-expression, click, charset-normalizer, attrs, python-debian, Jinja2, reuse&lt;br /&gt;
Successfully installed Jinja2-3.1.6 MarkupSafe-3.0.3 attrs-26.1.0 boolean.py-5.0 charset-normalizer-3.4.7 click-8.3.3 license-expression-30.4.4 python-debian-1.1.0 python-magic-0.4.27 reuse-6.2.0 tomlkit-0.14.0&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$&lt;br /&gt;
&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ reuse --version&lt;br /&gt;
reuse, version 6.2.0&lt;br /&gt;
&lt;br /&gt;
This program is free software: you can redistribute it and/or modify it under&lt;br /&gt;
the terms of the GNU General Public License as published by the Free Software&lt;br /&gt;
Foundation, either version 3 of the License, or (at your option) any later&lt;br /&gt;
version.&lt;br /&gt;
&lt;br /&gt;
This program is distributed in the hope that it will be useful, but WITHOUT&lt;br /&gt;
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS&lt;br /&gt;
FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.&lt;br /&gt;
&lt;br /&gt;
You should have received a copy of the GNU General Public License along with&lt;br /&gt;
this program. If not, see &amp;lt;https://www.gnu.org/licenses/&amp;gt;.&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ &lt;br /&gt;
&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ reuse convert-dep5&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## no output; but it looked like it worked&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ reuse lint&lt;br /&gt;
# MISSING LICENSES&lt;br /&gt;
&lt;br /&gt;
&#039;AGPL-3.0&#039; found in:&lt;br /&gt;
* docs/buildDocs.sh&lt;br /&gt;
* docs/conf.py&lt;br /&gt;
&#039;CC-BY-SA-4.0&#039; found in:&lt;br /&gt;
* .github/workflows/docs_pages_workflow.yml&lt;br /&gt;
* .gitignore&lt;br /&gt;
* CHANGELOG&lt;br /&gt;
* KEYS&lt;br /&gt;
* README.md&lt;br /&gt;
* docs/.gitignore&lt;br /&gt;
* docs/Makefile&lt;br /&gt;
* docs/_static/custom.css&lt;br /&gt;
* docs/_templates/versions.html&lt;br /&gt;
* docs/attribution.rst&lt;br /&gt;
* docs/build/index.rst&lt;br /&gt;
* docs/build/intake/bom.ods&lt;br /&gt;
* docs/build/intake/bom.rst&lt;br /&gt;
* docs/build/intake/index.rst&lt;br /&gt;
* docs/build/intake/what.rst&lt;br /&gt;
* docs/build/settling-tank/bom.rst&lt;br /&gt;
* docs/build/settling-tank/index.rst&lt;br /&gt;
* docs/build/settling-tank/what.rst&lt;br /&gt;
* docs/changelog.rst&lt;br /&gt;
* docs/conf.py.orig&lt;br /&gt;
* docs/dev/index.rst&lt;br /&gt;
* docs/faq.rst&lt;br /&gt;
* docs/images/eco-libre_logo-2025.08.svg&lt;br /&gt;
* docs/images/eco-libre_text-logo-2025.08.svg&lt;br /&gt;
* docs/images/eco-libre_text-logo-2025.08_500px.png&lt;br /&gt;
* docs/images/life-line_2023.12.jpg&lt;br /&gt;
* docs/images/life-line_2025.10.jpg&lt;br /&gt;
* docs/images/life-line_intake_cleanout-drain.jpg&lt;br /&gt;
* docs/images/life-line_intake_drum.jpg&lt;br /&gt;
* docs/images/life-line_intake_expanded-metal.jpg&lt;br /&gt;
* docs/images/life-line_intake_fine-mesh.jpg&lt;br /&gt;
* docs/images/life-line_intake_outflow.jpg&lt;br /&gt;
* docs/images/life-line_intake_parts.svg&lt;br /&gt;
* docs/images/life-line_intake_turbulence-bar.jpg&lt;br /&gt;
* docs/images/life-line_intake_weir.jpg&lt;br /&gt;
* docs/images/life-line_praxis_boris-plotkin.2024-11.jpg&lt;br /&gt;
* docs/images/life-line_praxis_vegan-beasts_screen.2025-04.jpg&lt;br /&gt;
* docs/images/life-line_praxis_vegan-beasts_weir.2025-04.jpg&lt;br /&gt;
* docs/index.rst&lt;br /&gt;
* docs/introduction/index.rst&lt;br /&gt;
* docs/license.rst&lt;br /&gt;
* docs/locales/es/LC_MESSAGES/autodoc.mo&lt;br /&gt;
* docs/locales/es/LC_MESSAGES/autodoc.po&lt;br /&gt;
* docs/locales/es/LC_MESSAGES/index.mo&lt;br /&gt;
* docs/locales/es/LC_MESSAGES/index.po&lt;br /&gt;
* docs/make.bat&lt;br /&gt;
* docs/praxis/index.rst&lt;br /&gt;
* docs/support.rst&lt;br /&gt;
* docs/theory/index.rst&lt;br /&gt;
&#039;CERN-OHL-S-2.0&#039; found in:&lt;br /&gt;
* intake.FCStd&lt;br /&gt;
&lt;br /&gt;
# SUMMARY&lt;br /&gt;
&lt;br /&gt;
* Bad licenses: 0&lt;br /&gt;
* Deprecated licenses: 0&lt;br /&gt;
* Licenses without file extension: 0&lt;br /&gt;
* Missing licenses: AGPL-3.0, CC-BY-SA-4.0, CERN-OHL-S-2.0&lt;br /&gt;
* Unused licenses: 0&lt;br /&gt;
* Used licenses: AGPL-3.0, CC-BY-SA-4.0, CERN-OHL-S-2.0&lt;br /&gt;
* Read errors: 0&lt;br /&gt;
* Invalid SPDX License Expressions: 0&lt;br /&gt;
* Files with copyright information: 52 / 52&lt;br /&gt;
* Files with license information: 52 / 52&lt;br /&gt;
&lt;br /&gt;
Unfortunately, your project is not compliant with version 3.3 of the REUSE Specification :-(&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# RECOMMENDATIONS&lt;br /&gt;
&lt;br /&gt;
* Fix missing licenses: For at least one of the license identifiers provided by&lt;br /&gt;
  the &#039;SPDX-License-Identifier&#039; tags, there is no corresponding license text&lt;br /&gt;
  file in the &#039;LICENSES&#039; directory. For SPDX license identifiers, you can simply&lt;br /&gt;
  run &#039;reuse download --all&#039; to get any missing ones. For custom licenses&lt;br /&gt;
  (starting with &#039;LicenseRef-&#039;), you need to add these files yourself.&lt;br /&gt;
&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## ok, so it&#039;s just unhappy the licenses are missing; let&#039;s add them with the tool&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ reuse download&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ &lt;br /&gt;
&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ reuse download CC-BY-SA-4.0&lt;br /&gt;
Successfully downloaded LICENSES/CC-BY-SA-4.0.txt.&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$&lt;br /&gt;
&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ ls -lah LICENSES&lt;br /&gt;
total 28K&lt;br /&gt;
drwxr-xr-x 2 user user 4.0K Apr 28 16:43 .&lt;br /&gt;
drwxr-xr-x 7 user user 4.0K Apr 28 16:43 ..&lt;br /&gt;
-rw-r--r-- 1 user user  18K Apr 28 16:43 CC-BY-SA-4.0.txt&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ &lt;br /&gt;
&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ reuse download CERN-OHL-S-2.0&lt;br /&gt;
Successfully downloaded LICENSES/CERN-OHL-S-2.0.txt.&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ &lt;br /&gt;
&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ reuse download AGPL-3.0&lt;br /&gt;
Successfully downloaded LICENSES/AGPL-3.0.txt.&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ &lt;br /&gt;
&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ ls -lah LICENSES&lt;br /&gt;
total 80K&lt;br /&gt;
drwxr-xr-x 2 user user 4.0K Apr 28 16:44 .&lt;br /&gt;
drwxr-xr-x 7 user user 4.0K Apr 28 16:43 ..&lt;br /&gt;
-rw-r--r-- 1 user user  34K Apr 28 16:44 AGPL-3.0.txt&lt;br /&gt;
-rw-r--r-- 1 user user  18K Apr 28 16:43 CC-BY-SA-4.0.txt&lt;br /&gt;
-rw-r--r-- 1 user user  14K Apr 28 16:43 CERN-OHL-S-2.0.txt&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## wut. they said we can&#039;t use AGPL-3.0?&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ reuse lint&lt;br /&gt;
# DEPRECATED LICENSES&lt;br /&gt;
&lt;br /&gt;
The following licenses are deprecated by SPDX:&lt;br /&gt;
* AGPL-3.0&lt;br /&gt;
&lt;br /&gt;
# SUMMARY&lt;br /&gt;
&lt;br /&gt;
* Bad licenses: 0&lt;br /&gt;
* Deprecated licenses: AGPL-3.0&lt;br /&gt;
* Licenses without file extension: 0&lt;br /&gt;
* Missing licenses: 0&lt;br /&gt;
* Unused licenses: 0&lt;br /&gt;
* Used licenses: AGPL-3.0, CC-BY-SA-4.0, CERN-OHL-S-2.0&lt;br /&gt;
* Read errors: 0&lt;br /&gt;
* Invalid SPDX License Expressions: 0&lt;br /&gt;
* Files with copyright information: 52 / 52&lt;br /&gt;
* Files with license information: 52 / 52&lt;br /&gt;
&lt;br /&gt;
Unfortunately, your project is not compliant with version 3.3 of the REUSE Specification :-(&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# RECOMMENDATIONS&lt;br /&gt;
&lt;br /&gt;
* Fix deprecated licenses: At least one of the licenses in the LICENSES&lt;br /&gt;
  directory and/or provided by an &#039;SPDX-License-Identifier&#039; tag or in&lt;br /&gt;
  &#039;.reuse/dep5&#039; has been deprecated by SPDX. The current list and their&lt;br /&gt;
  respective recommended  new identifiers can be found here:&lt;br /&gt;
  &amp;lt;https://spdx.org/licenses/#deprecated&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## ok, apparently they want one of these https://spdx.org/licenses/&lt;br /&gt;
###  AGPL-3.0-only&lt;br /&gt;
###  AGPL-3.0-or-later&lt;br /&gt;
## ugh, they deleted our dep5 file; appraently it puts everything in a REUSE.toml file (there&#039;s no .license files everywhere, which I do like)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ ls -lah .reuse/&lt;br /&gt;
total 8.0K&lt;br /&gt;
drwxr-xr-x 2 user user 4.0K Apr 28 16:34 .&lt;br /&gt;
drwxr-xr-x 7 user user 4.0K Apr 28 16:43 ..&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ &lt;br /&gt;
&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ ls -lah&lt;br /&gt;
total 376K&lt;br /&gt;
drwxr-xr-x  7 user user 4.0K Apr 28 16:43 .&lt;br /&gt;
drwxr-xr-x  3 user user 4.0K Apr 28 16:23 ..&lt;br /&gt;
-rw-r--r--  1 user user  531 Apr 28 16:23 CHANGELOG&lt;br /&gt;
drwxr-xr-x 11 user user 4.0K Apr 28 16:23 docs&lt;br /&gt;
drwxr-xr-x  8 user user 4.0K Apr 28 16:28 .git&lt;br /&gt;
drwxr-xr-x  3 user user 4.0K Apr 28 16:23 .github&lt;br /&gt;
-rw-r--r--  1 user user   44 Apr 28 16:23 .gitignore&lt;br /&gt;
-rw-r--r--  1 user user 221K Apr 28 16:23 intake.FCStd&lt;br /&gt;
-rw-r--r--  1 user user  71K Apr 28 16:23 KEYS&lt;br /&gt;
-rw-r--r--  1 user user  35K Apr 28 16:23 LICENSE&lt;br /&gt;
drwxr-xr-x  2 user user 4.0K Apr 28 16:44 LICENSES&lt;br /&gt;
-rw-r--r--  1 user user 1.3K Apr 28 16:23 README.md&lt;br /&gt;
drwxr-xr-x  2 user user 4.0K Apr 28 16:34 .reuse&lt;br /&gt;
-rw-r--r--  1 user user 1.7K Apr 28 16:34 REUSE.toml&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## oh, this isn&#039;t so bad. I was afriad it would literally list every single file, but instead it more-or-less just adapted what I had for the dep5 format&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ cat REUSE.toml &lt;br /&gt;
version = 1&lt;br /&gt;
SPDX-PackageName = &amp;quot;Eco-Libre Life-Line&amp;quot;&lt;br /&gt;
SPDX-PackageSupplier = &amp;quot;https://eco-libre.org/contact&amp;quot;&lt;br /&gt;
SPDX-PackageDownloadLocation = &amp;quot;https://github.com/Eco-Libre/life-line&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[annotations]]&lt;br /&gt;
path = &amp;quot;**&amp;quot;&lt;br /&gt;
precedence = &amp;quot;aggregate&amp;quot;&lt;br /&gt;
SPDX-FileCopyrightText = [&amp;quot;&amp;quot;, &amp;quot;2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&amp;quot;, &amp;quot;2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&amp;quot;]&lt;br /&gt;
SPDX-License-Identifier = &amp;quot;CC-BY-SA-4.0&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[annotations]]&lt;br /&gt;
path = [&amp;quot;**.FCStd&amp;quot;, &amp;quot;**.scad&amp;quot;, &amp;quot;**.fzz&amp;quot;, &amp;quot;**.blend&amp;quot;, &amp;quot;**.kicad_pcb&amp;quot;, &amp;quot;**.sh3d&amp;quot;, &amp;quot;**.vue&amp;quot;, &amp;quot;**.dxf&amp;quot;, &amp;quot;**.dwg&amp;quot;, &amp;quot;**.bim&amp;quot;, &amp;quot;**.skp&amp;quot;, &amp;quot;**.skb&amp;quot;, &amp;quot;**.max&amp;quot;, &amp;quot;**.3ds&amp;quot;, &amp;quot;**.gto&amp;quot;, &amp;quot;**.pod&amp;quot;, &amp;quot;**.brd&amp;quot;, &amp;quot;**.sch&amp;quot;, &amp;quot;**.3dm&amp;quot;, &amp;quot;**.dwb&amp;quot;, &amp;quot;**.slddrw&amp;quot;, &amp;quot;**.sldasm&amp;quot;]&lt;br /&gt;
precedence = &amp;quot;aggregate&amp;quot;&lt;br /&gt;
SPDX-FileCopyrightText = [&amp;quot;&amp;quot;, &amp;quot;2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&amp;quot;, &amp;quot;2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&amp;quot;]&lt;br /&gt;
SPDX-License-Identifier = &amp;quot;CERN-OHL-S-2.0&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[annotations]]&lt;br /&gt;
path = [&amp;quot;**.c&amp;quot;, &amp;quot;**.cpp&amp;quot;, &amp;quot;**.h&amp;quot;, &amp;quot;**.hpp&amp;quot;, &amp;quot;**.cc&amp;quot;, &amp;quot;**.ino&amp;quot;, &amp;quot;**.pde&amp;quot;, &amp;quot;**.make&amp;quot;, &amp;quot;**.automake&amp;quot;, &amp;quot;**.cmake&amp;quot;, &amp;quot;**.java&amp;quot;, &amp;quot;**.javacc&amp;quot;, &amp;quot;**.rust&amp;quot;, &amp;quot;**.d&amp;quot;, &amp;quot;**.j&amp;quot;, &amp;quot;**.r&amp;quot;, &amp;quot;**.sh&amp;quot;, &amp;quot;**.bash&amp;quot;, &amp;quot;**.zsh&amp;quot;, &amp;quot;**.awk&amp;quot;, &amp;quot;**.tcl&amp;quot;, &amp;quot;**.py&amp;quot;, &amp;quot;**.python&amp;quot;, &amp;quot;**.python2&amp;quot;, &amp;quot;**.python3&amp;quot;, &amp;quot;**.FCMacro&amp;quot;, &amp;quot;**.pl&amp;quot;, &amp;quot;**.perl&amp;quot;, &amp;quot;**.kivy&amp;quot;, &amp;quot;**.qix&amp;quot;, &amp;quot;**.dtd&amp;quot;, &amp;quot;**.shp&amp;quot;, &amp;quot;**.shz&amp;quot;, &amp;quot;**.dbf&amp;quot;, &amp;quot;**.shx&amp;quot;, &amp;quot;**.prj&amp;quot;, &amp;quot;**.kml&amp;quot;, &amp;quot;**.php&amp;quot;, &amp;quot;**.js&amp;quot;, &amp;quot;**.javascript&amp;quot;, &amp;quot;**.typescript&amp;quot;, &amp;quot;**.ruby&amp;quot;, &amp;quot;**.eruby&amp;quot;, &amp;quot;**.cuda&amp;quot;, &amp;quot;**.erlang&amp;quot;, &amp;quot;**.lisp&amp;quot;, &amp;quot;**.lua&amp;quot;, &amp;quot;**.haskell&amp;quot;, &amp;quot;**.go&amp;quot;, &amp;quot;**.autohotkey&amp;quot;, &amp;quot;**.basic&amp;quot;, &amp;quot;**.swift&amp;quot;, &amp;quot;**.vb&amp;quot;, &amp;quot;**.asp&amp;quot;]&lt;br /&gt;
precedence = &amp;quot;aggregate&amp;quot;&lt;br /&gt;
SPDX-FileCopyrightText = [&amp;quot;&amp;quot;, &amp;quot;2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&amp;quot;, &amp;quot;2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&amp;quot;]&lt;br /&gt;
SPDX-License-Identifier = &amp;quot;AGPL-3.0&amp;quot;&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## I edited the file, but the lint still isn&#039;t happy. I guess I have to update the LICENSES dir from AGPL-3.0 to AGPL-3.0-only :/&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ vim REUSE.toml &lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ &lt;br /&gt;
&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ reuse lint&lt;br /&gt;
# DEPRECATED LICENSES&lt;br /&gt;
&lt;br /&gt;
The following licenses are deprecated by SPDX:&lt;br /&gt;
* AGPL-3.0&lt;br /&gt;
&lt;br /&gt;
# MISSING LICENSES&lt;br /&gt;
&lt;br /&gt;
&#039;AGPL-3.0-only&#039; found in:&lt;br /&gt;
* docs/buildDocs.sh&lt;br /&gt;
* docs/conf.py&lt;br /&gt;
&lt;br /&gt;
# UNUSED LICENSES&lt;br /&gt;
&lt;br /&gt;
The following licenses are not used:&lt;br /&gt;
* AGPL-3.0&lt;br /&gt;
&lt;br /&gt;
# SUMMARY&lt;br /&gt;
&lt;br /&gt;
* Bad licenses: 0&lt;br /&gt;
* Deprecated licenses: AGPL-3.0&lt;br /&gt;
* Licenses without file extension: 0&lt;br /&gt;
* Missing licenses: AGPL-3.0-only&lt;br /&gt;
* Unused licenses: AGPL-3.0&lt;br /&gt;
* Used licenses: AGPL-3.0-only, CC-BY-SA-4.0, CERN-OHL-S-2.0&lt;br /&gt;
* Read errors: 0&lt;br /&gt;
* Invalid SPDX License Expressions: 0&lt;br /&gt;
* Files with copyright information: 52 / 52&lt;br /&gt;
* Files with license information: 52 / 52&lt;br /&gt;
&lt;br /&gt;
Unfortunately, your project is not compliant with version 3.3 of the REUSE Specification :-(&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# RECOMMENDATIONS&lt;br /&gt;
&lt;br /&gt;
* Fix deprecated licenses: At least one of the licenses in the LICENSES&lt;br /&gt;
  directory and/or provided by an &#039;SPDX-License-Identifier&#039; tag or in&lt;br /&gt;
  &#039;.reuse/dep5&#039; has been deprecated by SPDX. The current list and their&lt;br /&gt;
  respective recommended  new identifiers can be found here:&lt;br /&gt;
  &amp;lt;https://spdx.org/licenses/#deprecated&amp;gt;&lt;br /&gt;
* Fix missing licenses: For at least one of the license identifiers provided by&lt;br /&gt;
  the &#039;SPDX-License-Identifier&#039; tags, there is no corresponding license text&lt;br /&gt;
  file in the &#039;LICENSES&#039; directory. For SPDX license identifiers, you can simply&lt;br /&gt;
  run &#039;reuse download --all&#039; to get any missing ones. For custom licenses&lt;br /&gt;
  (starting with &#039;LicenseRef-&#039;), you need to add these files yourself.&lt;br /&gt;
* Fix unused licenses: At least one of the license text files in &#039;LICENSES&#039; is&lt;br /&gt;
  not referenced by any file, e.g. by an &#039;SPDX-License-Identifier&#039; tag. Please&lt;br /&gt;
  make sure that you either tag the accordingly licensed files properly, or&lt;br /&gt;
  delete the unused license text if you are sure that no file or code snippet is&lt;br /&gt;
  licensed as such.&lt;br /&gt;
&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## ok, now it&#039;s happy&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ ls -lah LICENSES&lt;br /&gt;
total 80K&lt;br /&gt;
drwxr-xr-x 2 user user 4.0K Apr 28 16:44 .&lt;br /&gt;
drwxr-xr-x 7 user user 4.0K Apr 28 16:50 ..&lt;br /&gt;
-rw-r--r-- 1 user user  34K Apr 28 16:44 AGPL-3.0.txt&lt;br /&gt;
-rw-r--r-- 1 user user  18K Apr 28 16:43 CC-BY-SA-4.0.txt&lt;br /&gt;
-rw-r--r-- 1 user user  14K Apr 28 16:43 CERN-OHL-S-2.0.txt&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ &lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ rm LICENSES/AGPL-3.0.txt &lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ &lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ reuse download AGPL-3.0-only&lt;br /&gt;
Successfully downloaded LICENSES/AGPL-3.0-only.txt.&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ &lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ reuse lint&lt;br /&gt;
# SUMMARY&lt;br /&gt;
&lt;br /&gt;
* Bad licenses: 0&lt;br /&gt;
* Deprecated licenses: 0&lt;br /&gt;
* Licenses without file extension: 0&lt;br /&gt;
* Missing licenses: 0&lt;br /&gt;
* Unused licenses: 0&lt;br /&gt;
* Used licenses: AGPL-3.0-only, CC-BY-SA-4.0, CERN-OHL-S-2.0&lt;br /&gt;
* Read errors: 0&lt;br /&gt;
* Invalid SPDX License Expressions: 0&lt;br /&gt;
* Files with copyright information: 52 / 52&lt;br /&gt;
* Files with license information: 52 / 52&lt;br /&gt;
&lt;br /&gt;
Congratulations! Your project is compliant with version 3.3 of the REUSE Specification :-)&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## anyway, here&#039;s our final file&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ cat REUSE.toml &lt;br /&gt;
version = 1&lt;br /&gt;
SPDX-PackageName = &amp;quot;Eco-Libre Life-Line&amp;quot;&lt;br /&gt;
SPDX-PackageSupplier = &amp;quot;https://eco-libre.org/contact&amp;quot;&lt;br /&gt;
SPDX-PackageDownloadLocation = &amp;quot;https://github.com/Eco-Libre/life-line&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[annotations]]&lt;br /&gt;
path = &amp;quot;**&amp;quot;&lt;br /&gt;
precedence = &amp;quot;aggregate&amp;quot;&lt;br /&gt;
SPDX-FileCopyrightText = [&amp;quot;&amp;quot;, &amp;quot;2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&amp;quot;, &amp;quot;2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&amp;quot;]&lt;br /&gt;
SPDX-License-Identifier = &amp;quot;CC-BY-SA-4.0&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[annotations]]&lt;br /&gt;
path = [&amp;quot;**.FCStd&amp;quot;, &amp;quot;**.scad&amp;quot;, &amp;quot;**.fzz&amp;quot;, &amp;quot;**.blend&amp;quot;, &amp;quot;**.kicad_pcb&amp;quot;, &amp;quot;**.sh3d&amp;quot;, &amp;quot;**.vue&amp;quot;, &amp;quot;**.dxf&amp;quot;, &amp;quot;**.dwg&amp;quot;, &amp;quot;**.bim&amp;quot;, &amp;quot;**.skp&amp;quot;, &amp;quot;**.skb&amp;quot;, &amp;quot;**.max&amp;quot;, &amp;quot;**.3ds&amp;quot;, &amp;quot;**.gto&amp;quot;, &amp;quot;**.pod&amp;quot;, &amp;quot;**.brd&amp;quot;, &amp;quot;**.sch&amp;quot;, &amp;quot;**.3dm&amp;quot;, &amp;quot;**.dwb&amp;quot;, &amp;quot;**.slddrw&amp;quot;, &amp;quot;**.sldasm&amp;quot;]&lt;br /&gt;
precedence = &amp;quot;aggregate&amp;quot;&lt;br /&gt;
SPDX-FileCopyrightText = [&amp;quot;&amp;quot;, &amp;quot;2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&amp;quot;, &amp;quot;2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&amp;quot;]&lt;br /&gt;
SPDX-License-Identifier = &amp;quot;CERN-OHL-S-2.0&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[annotations]]&lt;br /&gt;
path = [&amp;quot;**.c&amp;quot;, &amp;quot;**.cpp&amp;quot;, &amp;quot;**.h&amp;quot;, &amp;quot;**.hpp&amp;quot;, &amp;quot;**.cc&amp;quot;, &amp;quot;**.ino&amp;quot;, &amp;quot;**.pde&amp;quot;, &amp;quot;**.make&amp;quot;, &amp;quot;**.automake&amp;quot;, &amp;quot;**.cmake&amp;quot;, &amp;quot;**.java&amp;quot;, &amp;quot;**.javacc&amp;quot;, &amp;quot;**.rust&amp;quot;, &amp;quot;**.d&amp;quot;, &amp;quot;**.j&amp;quot;, &amp;quot;**.r&amp;quot;, &amp;quot;**.sh&amp;quot;, &amp;quot;**.bash&amp;quot;, &amp;quot;**.zsh&amp;quot;, &amp;quot;**.awk&amp;quot;, &amp;quot;**.tcl&amp;quot;, &amp;quot;**.py&amp;quot;, &amp;quot;**.python&amp;quot;, &amp;quot;**.python2&amp;quot;, &amp;quot;**.python3&amp;quot;, &amp;quot;**.FCMacro&amp;quot;, &amp;quot;**.pl&amp;quot;, &amp;quot;**.perl&amp;quot;, &amp;quot;**.kivy&amp;quot;, &amp;quot;**.qix&amp;quot;, &amp;quot;**.dtd&amp;quot;, &amp;quot;**.shp&amp;quot;, &amp;quot;**.shz&amp;quot;, &amp;quot;**.dbf&amp;quot;, &amp;quot;**.shx&amp;quot;, &amp;quot;**.prj&amp;quot;, &amp;quot;**.kml&amp;quot;, &amp;quot;**.php&amp;quot;, &amp;quot;**.js&amp;quot;, &amp;quot;**.javascript&amp;quot;, &amp;quot;**.typescript&amp;quot;, &amp;quot;**.ruby&amp;quot;, &amp;quot;**.eruby&amp;quot;, &amp;quot;**.cuda&amp;quot;, &amp;quot;**.erlang&amp;quot;, &amp;quot;**.lisp&amp;quot;, &amp;quot;**.lua&amp;quot;, &amp;quot;**.haskell&amp;quot;, &amp;quot;**.go&amp;quot;, &amp;quot;**.autohotkey&amp;quot;, &amp;quot;**.basic&amp;quot;, &amp;quot;**.swift&amp;quot;, &amp;quot;**.vb&amp;quot;, &amp;quot;**.asp&amp;quot;]&lt;br /&gt;
precedence = &amp;quot;aggregate&amp;quot;&lt;br /&gt;
SPDX-FileCopyrightText = [&amp;quot;&amp;quot;, &amp;quot;2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&amp;quot;, &amp;quot;2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&amp;quot;]&lt;br /&gt;
SPDX-License-Identifier = &amp;quot;AGPL-3.0-only&amp;quot;&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## looks like that only created the toml file. None of the files are actually annoated; we do that with `reuse annotate`&lt;br /&gt;
### apparently that command only works for individual files, so I did some find magic&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ find . -type f -exec reuse annotate --copyright --license &#039;{}&#039; \;&lt;br /&gt;
Successfully changed header of docs/license.rst&lt;br /&gt;
Successfully changed header of docs/build/intake/bom.rst&lt;br /&gt;
Successfully changed header of docs/build/intake/index.rst&lt;br /&gt;
Successfully changed header of docs/build/intake/bom.ods.license&lt;br /&gt;
Successfully changed header of docs/build/intake/what.rst&lt;br /&gt;
Successfully changed header of docs/build/index.rst&lt;br /&gt;
Successfully changed header of docs/build/settling-tank/bom.rst&lt;br /&gt;
Successfully changed header of docs/build/settling-tank/index.rst&lt;br /&gt;
Successfully changed header of docs/build/settling-tank/what.rst&lt;br /&gt;
Successfully changed header of docs/support.rst&lt;br /&gt;
Successfully changed header of docs/theory/index.rst&lt;br /&gt;
Successfully changed header of docs/make.bat&lt;br /&gt;
Successfully changed header of docs/buildDocs.sh&lt;br /&gt;
Successfully changed header of docs/images/life-line_intake_cleanout-drain.jpg.license&lt;br /&gt;
Successfully changed header of docs/images/life-line_intake_outflow.jpg.license&lt;br /&gt;
Successfully changed header of docs/images/life-line_2025.10.jpg.license&lt;br /&gt;
Successfully changed header of docs/images/life-line_2023.12.jpg.license&lt;br /&gt;
Successfully changed header of docs/images/life-line_intake_drum.jpg.license&lt;br /&gt;
Successfully changed header of docs/images/life-line_praxis_vegan-beasts_weir.2025-04.jpg.license&lt;br /&gt;
Successfully changed header of docs/images/life-line_praxis_vegan-beasts_screen.2025-04.jpg.license&lt;br /&gt;
Successfully changed header of docs/images/life-line_intake_turbulence-bar.jpg.license&lt;br /&gt;
Successfully changed header of docs/images/life-line_praxis_boris-plotkin.2024-11.jpg.license&lt;br /&gt;
Successfully changed header of docs/images/life-line_intake_fine-mesh.jpg.license&lt;br /&gt;
Successfully changed header of docs/images/eco-libre_logo-2025.08.svg.license&lt;br /&gt;
Successfully changed header of docs/images/eco-libre_text-logo-2025.08.svg.license&lt;br /&gt;
Successfully changed header of docs/images/life-line_intake_weir.jpg.license&lt;br /&gt;
Successfully changed header of docs/images/life-line_intake_parts.svg.license&lt;br /&gt;
Successfully changed header of docs/images/eco-libre_text-logo-2025.08_500px.png.license&lt;br /&gt;
Successfully changed header of docs/images/life-line_intake_expanded-metal.jpg.license&lt;br /&gt;
Successfully changed header of docs/praxis/index.rst&lt;br /&gt;
Successfully changed header of docs/introduction/index.rst&lt;br /&gt;
Successfully changed header of docs/_static/custom.css&lt;br /&gt;
Successfully changed header of docs/index.rst&lt;br /&gt;
Successfully changed header of docs/Makefile&lt;br /&gt;
Usage: reuse annotate [OPTIONS] PATH&lt;br /&gt;
Try &#039;reuse annotate --help&#039; for help.&lt;br /&gt;
&lt;br /&gt;
Error: The following files do not have a recognised file extension. Please use &#039;--style&#039;, &#039;--force-dot-license&#039;, &#039;--fallback-dot-license&#039;, or &#039;--skip-unrecognised&#039;:&lt;br /&gt;
&lt;br /&gt;
docs/conf.py.orig&lt;br /&gt;
Successfully changed header of docs/conf.py&lt;br /&gt;
Successfully changed header of docs/faq.rst&lt;br /&gt;
Successfully changed header of docs/.gitignore&lt;br /&gt;
Successfully changed header of docs/attribution.rst&lt;br /&gt;
Successfully changed header of docs/changelog.rst&lt;br /&gt;
Successfully changed header of docs/_templates/versions.html&lt;br /&gt;
Usage: reuse annotate [OPTIONS] PATH&lt;br /&gt;
Try &#039;reuse annotate --help&#039; for help.&lt;br /&gt;
&lt;br /&gt;
Error: The following files do not have a recognised file extension. Please use &#039;--style&#039;, &#039;--force-dot-license&#039;, &#039;--fallback-dot-license&#039;, or &#039;--skip-unrecognised&#039;:&lt;br /&gt;
&lt;br /&gt;
docs/locales/es/LC_MESSAGES/autodoc.mo&lt;br /&gt;
Successfully changed header of docs/locales/es/LC_MESSAGES/index.po&lt;br /&gt;
Successfully changed header of docs/locales/es/LC_MESSAGES/autodoc.po&lt;br /&gt;
Usage: reuse annotate [OPTIONS] PATH&lt;br /&gt;
Try &#039;reuse annotate --help&#039; for help.&lt;br /&gt;
&lt;br /&gt;
Error: The following files do not have a recognised file extension. Please use &#039;--style&#039;, &#039;--force-dot-license&#039;, &#039;--fallback-dot-license&#039;, or &#039;--skip-unrecognised&#039;:&lt;br /&gt;
&lt;br /&gt;
docs/locales/es/LC_MESSAGES/index.mo&lt;br /&gt;
Successfully changed header of docs/dev/index.rst&lt;br /&gt;
Usage: reuse annotate [OPTIONS] PATH&lt;br /&gt;
Try &#039;reuse annotate --help&#039; for help.&lt;br /&gt;
&lt;br /&gt;
Error: The following files do not have a recognised file extension. Please use &#039;--style&#039;, &#039;--force-dot-license&#039;, &#039;--fallback-dot-license&#039;, or &#039;--skip-unrecognised&#039;:&lt;br /&gt;
&lt;br /&gt;
CHANGELOG&lt;br /&gt;
Usage: reuse annotate [OPTIONS] PATH&lt;br /&gt;
Try &#039;reuse annotate --help&#039; for help.&lt;br /&gt;
&lt;br /&gt;
Error: The following files do not have a recognised file extension. Please use &#039;--style&#039;, &#039;--force-dot-license&#039;, &#039;--fallback-dot-license&#039;, or &#039;--skip-unrecognised&#039;:&lt;br /&gt;
&lt;br /&gt;
LICENSES/CC-BY-SA-4.0.txt&lt;br /&gt;
Usage: reuse annotate [OPTIONS] PATH&lt;br /&gt;
Try &#039;reuse annotate --help&#039; for help.&lt;br /&gt;
&lt;br /&gt;
Error: The following files do not have a recognised file extension. Please use &#039;--style&#039;, &#039;--force-dot-license&#039;, &#039;--fallback-dot-license&#039;, or &#039;--skip-unrecognised&#039;:&lt;br /&gt;
&lt;br /&gt;
LICENSES/CERN-OHL-S-2.0.txt&lt;br /&gt;
Usage: reuse annotate [OPTIONS] PATH&lt;br /&gt;
Try &#039;reuse annotate --help&#039; for help.&lt;br /&gt;
&lt;br /&gt;
Error: The following files do not have a recognised file extension. Please use &#039;--style&#039;, &#039;--force-dot-license&#039;, &#039;--fallback-dot-license&#039;, or &#039;--skip-unrecognised&#039;:&lt;br /&gt;
&lt;br /&gt;
LICENSES/AGPL-3.0-only.txt&lt;br /&gt;
Usage: reuse annotate [OPTIONS] PATH&lt;br /&gt;
Try &#039;reuse annotate --help&#039; for help.&lt;br /&gt;
&lt;br /&gt;
Error: Invalid value for &#039;PATH&#039;: Path &#039;./.git/objects/pack/pack-38957d03ba60a2a9101b19234fac447289823e43.idx&#039; is not writable.&lt;br /&gt;
Usage: reuse annotate [OPTIONS] PATH&lt;br /&gt;
Try &#039;reuse annotate --help&#039; for help.&lt;br /&gt;
&lt;br /&gt;
Error: Invalid value for &#039;PATH&#039;: Path &#039;./.git/objects/pack/pack-38957d03ba60a2a9101b19234fac447289823e43.pack&#039; is not writable.&lt;br /&gt;
Usage: reuse annotate [OPTIONS] PATH&lt;br /&gt;
Try &#039;reuse annotate --help&#039; for help.&lt;br /&gt;
&lt;br /&gt;
Error: The following files do not have a recognised file extension. Please use &#039;--style&#039;, &#039;--force-dot-license&#039;, &#039;--fallback-dot-license&#039;, or &#039;--skip-unrecognised&#039;:&lt;br /&gt;
&lt;br /&gt;
.git/logs/HEAD&lt;br /&gt;
Usage: reuse annotate [OPTIONS] PATH&lt;br /&gt;
Try &#039;reuse annotate --help&#039; for help.&lt;br /&gt;
&lt;br /&gt;
Error: The following files do not have a recognised file extension. Please use &#039;--style&#039;, &#039;--force-dot-license&#039;, &#039;--fallback-dot-license&#039;, or &#039;--skip-unrecognised&#039;:&lt;br /&gt;
&lt;br /&gt;
.git/logs/refs/remotes/origin/HEAD&lt;br /&gt;
Usage: reuse annotate [OPTIONS] PATH&lt;br /&gt;
Try &#039;reuse annotate --help&#039; for help.&lt;br /&gt;
&lt;br /&gt;
Error: The following files do not have a recognised file extension. Please use &#039;--style&#039;, &#039;--force-dot-license&#039;, &#039;--fallback-dot-license&#039;, or &#039;--skip-unrecognised&#039;:&lt;br /&gt;
&lt;br /&gt;
.git/logs/refs/heads/main&lt;br /&gt;
Usage: reuse annotate [OPTIONS] PATH&lt;br /&gt;
Try &#039;reuse annotate --help&#039; for help.&lt;br /&gt;
&lt;br /&gt;
Error: The following files do not have a recognised file extension. Please use &#039;--style&#039;, &#039;--force-dot-license&#039;, &#039;--fallback-dot-license&#039;, or &#039;--skip-unrecognised&#039;:&lt;br /&gt;
&lt;br /&gt;
.git/hooks/pre-push.sample&lt;br /&gt;
Usage: reuse annotate [OPTIONS] PATH&lt;br /&gt;
Try &#039;reuse annotate --help&#039; for help.&lt;br /&gt;
&lt;br /&gt;
Error: The following files do not have a recognised file extension. Please use &#039;--style&#039;, &#039;--force-dot-license&#039;, &#039;--fallback-dot-license&#039;, or &#039;--skip-unrecognised&#039;:&lt;br /&gt;
&lt;br /&gt;
.git/hooks/post-update.sample&lt;br /&gt;
Usage: reuse annotate [OPTIONS] PATH&lt;br /&gt;
Try &#039;reuse annotate --help&#039; for help.&lt;br /&gt;
&lt;br /&gt;
Error: The following files do not have a recognised file extension. Please use &#039;--style&#039;, &#039;--force-dot-license&#039;, &#039;--fallback-dot-license&#039;, or &#039;--skip-unrecognised&#039;:&lt;br /&gt;
&lt;br /&gt;
.git/hooks/pre-rebase.sample&lt;br /&gt;
Usage: reuse annotate [OPTIONS] PATH&lt;br /&gt;
Try &#039;reuse annotate --help&#039; for help.&lt;br /&gt;
&lt;br /&gt;
Error: The following files do not have a recognised file extension. Please use &#039;--style&#039;, &#039;--force-dot-license&#039;, &#039;--fallback-dot-license&#039;, or &#039;--skip-unrecognised&#039;:&lt;br /&gt;
&lt;br /&gt;
.git/hooks/update.sample&lt;br /&gt;
Usage: reuse annotate [OPTIONS] PATH&lt;br /&gt;
Try &#039;reuse annotate --help&#039; for help.&lt;br /&gt;
&lt;br /&gt;
Error: The following files do not have a recognised file extension. Please use &#039;--style&#039;, &#039;--force-dot-license&#039;, &#039;--fallback-dot-license&#039;, or &#039;--skip-unrecognised&#039;:&lt;br /&gt;
&lt;br /&gt;
.git/hooks/push-to-checkout.sample&lt;br /&gt;
Usage: reuse annotate [OPTIONS] PATH&lt;br /&gt;
Try &#039;reuse annotate --help&#039; for help.&lt;br /&gt;
&lt;br /&gt;
Error: The following files do not have a recognised file extension. Please use &#039;--style&#039;, &#039;--force-dot-license&#039;, &#039;--fallback-dot-license&#039;, or &#039;--skip-unrecognised&#039;:&lt;br /&gt;
&lt;br /&gt;
.git/hooks/pre-receive.sample&lt;br /&gt;
Usage: reuse annotate [OPTIONS] PATH&lt;br /&gt;
Try &#039;reuse annotate --help&#039; for help.&lt;br /&gt;
&lt;br /&gt;
Error: The following files do not have a recognised file extension. Please use &#039;--style&#039;, &#039;--force-dot-license&#039;, &#039;--fallback-dot-license&#039;, or &#039;--skip-unrecognised&#039;:&lt;br /&gt;
&lt;br /&gt;
.git/hooks/prepare-commit-msg.sample&lt;br /&gt;
Usage: reuse annotate [OPTIONS] PATH&lt;br /&gt;
Try &#039;reuse annotate --help&#039; for help.&lt;br /&gt;
&lt;br /&gt;
Error: The following files do not have a recognised file extension. Please use &#039;--style&#039;, &#039;--force-dot-license&#039;, &#039;--fallback-dot-license&#039;, or &#039;--skip-unrecognised&#039;:&lt;br /&gt;
&lt;br /&gt;
.git/hooks/applypatch-msg.sample&lt;br /&gt;
Usage: reuse annotate [OPTIONS] PATH&lt;br /&gt;
Try &#039;reuse annotate --help&#039; for help.&lt;br /&gt;
&lt;br /&gt;
Error: The following files do not have a recognised file extension. Please use &#039;--style&#039;, &#039;--force-dot-license&#039;, &#039;--fallback-dot-license&#039;, or &#039;--skip-unrecognised&#039;:&lt;br /&gt;
&lt;br /&gt;
.git/hooks/pre-merge-commit.sample&lt;br /&gt;
Usage: reuse annotate [OPTIONS] PATH&lt;br /&gt;
Try &#039;reuse annotate --help&#039; for help.&lt;br /&gt;
&lt;br /&gt;
Error: The following files do not have a recognised file extension. Please use &#039;--style&#039;, &#039;--force-dot-license&#039;, &#039;--fallback-dot-license&#039;, or &#039;--skip-unrecognised&#039;:&lt;br /&gt;
&lt;br /&gt;
.git/hooks/pre-applypatch.sample&lt;br /&gt;
Usage: reuse annotate [OPTIONS] PATH&lt;br /&gt;
Try &#039;reuse annotate --help&#039; for help.&lt;br /&gt;
&lt;br /&gt;
Error: The following files do not have a recognised file extension. Please use &#039;--style&#039;, &#039;--force-dot-license&#039;, &#039;--fallback-dot-license&#039;, or &#039;--skip-unrecognised&#039;:&lt;br /&gt;
&lt;br /&gt;
.git/hooks/pre-commit.sample&lt;br /&gt;
Usage: reuse annotate [OPTIONS] PATH&lt;br /&gt;
Try &#039;reuse annotate --help&#039; for help.&lt;br /&gt;
&lt;br /&gt;
Error: The following files do not have a recognised file extension. Please use &#039;--style&#039;, &#039;--force-dot-license&#039;, &#039;--fallback-dot-license&#039;, or &#039;--skip-unrecognised&#039;:&lt;br /&gt;
&lt;br /&gt;
.git/hooks/fsmonitor-watchman.sample&lt;br /&gt;
Usage: reuse annotate [OPTIONS] PATH&lt;br /&gt;
Try &#039;reuse annotate --help&#039; for help.&lt;br /&gt;
&lt;br /&gt;
Error: The following files do not have a recognised file extension. Please use &#039;--style&#039;, &#039;--force-dot-license&#039;, &#039;--fallback-dot-license&#039;, or &#039;--skip-unrecognised&#039;:&lt;br /&gt;
&lt;br /&gt;
.git/hooks/commit-msg.sample&lt;br /&gt;
Usage: reuse annotate [OPTIONS] PATH&lt;br /&gt;
Try &#039;reuse annotate --help&#039; for help.&lt;br /&gt;
&lt;br /&gt;
Error: The following files do not have a recognised file extension. Please use &#039;--style&#039;, &#039;--force-dot-license&#039;, &#039;--fallback-dot-license&#039;, or &#039;--skip-unrecognised&#039;:&lt;br /&gt;
&lt;br /&gt;
.git/config&lt;br /&gt;
Usage: reuse annotate [OPTIONS] PATH&lt;br /&gt;
Try &#039;reuse annotate --help&#039; for help.&lt;br /&gt;
&lt;br /&gt;
Error: The following files do not have a recognised file extension. Please use &#039;--style&#039;, &#039;--force-dot-license&#039;, &#039;--fallback-dot-license&#039;, or &#039;--skip-unrecognised&#039;:&lt;br /&gt;
&lt;br /&gt;
.git/HEAD&lt;br /&gt;
Usage: reuse annotate [OPTIONS] PATH&lt;br /&gt;
Try &#039;reuse annotate --help&#039; for help.&lt;br /&gt;
&lt;br /&gt;
Error: The following files do not have a recognised file extension. Please use &#039;--style&#039;, &#039;--force-dot-license&#039;, &#039;--fallback-dot-license&#039;, or &#039;--skip-unrecognised&#039;:&lt;br /&gt;
&lt;br /&gt;
.git/description&lt;br /&gt;
Usage: reuse annotate [OPTIONS] PATH&lt;br /&gt;
Try &#039;reuse annotate --help&#039; for help.&lt;br /&gt;
&lt;br /&gt;
Error: The following files do not have a recognised file extension. Please use &#039;--style&#039;, &#039;--force-dot-license&#039;, &#039;--fallback-dot-license&#039;, or &#039;--skip-unrecognised&#039;:&lt;br /&gt;
&lt;br /&gt;
.git/info/exclude&lt;br /&gt;
Usage: reuse annotate [OPTIONS] PATH&lt;br /&gt;
Try &#039;reuse annotate --help&#039; for help.&lt;br /&gt;
&lt;br /&gt;
Error: The following files do not have a recognised file extension. Please use &#039;--style&#039;, &#039;--force-dot-license&#039;, &#039;--fallback-dot-license&#039;, or &#039;--skip-unrecognised&#039;:&lt;br /&gt;
&lt;br /&gt;
.git/index&lt;br /&gt;
Usage: reuse annotate [OPTIONS] PATH&lt;br /&gt;
Try &#039;reuse annotate --help&#039; for help.&lt;br /&gt;
&lt;br /&gt;
Error: The following files do not have a recognised file extension. Please use &#039;--style&#039;, &#039;--force-dot-license&#039;, &#039;--fallback-dot-license&#039;, or &#039;--skip-unrecognised&#039;:&lt;br /&gt;
&lt;br /&gt;
.git/refs/remotes/origin/HEAD&lt;br /&gt;
Usage: reuse annotate [OPTIONS] PATH&lt;br /&gt;
Try &#039;reuse annotate --help&#039; for help.&lt;br /&gt;
&lt;br /&gt;
Error: The following files do not have a recognised file extension. Please use &#039;--style&#039;, &#039;--force-dot-license&#039;, &#039;--fallback-dot-license&#039;, or &#039;--skip-unrecognised&#039;:&lt;br /&gt;
&lt;br /&gt;
.git/refs/heads/main&lt;br /&gt;
Usage: reuse annotate [OPTIONS] PATH&lt;br /&gt;
Try &#039;reuse annotate --help&#039; for help.&lt;br /&gt;
&lt;br /&gt;
Error: The following files do not have a recognised file extension. Please use &#039;--style&#039;, &#039;--force-dot-license&#039;, &#039;--fallback-dot-license&#039;, or &#039;--skip-unrecognised&#039;:&lt;br /&gt;
&lt;br /&gt;
.git/packed-refs&lt;br /&gt;
Usage: reuse annotate [OPTIONS] PATH&lt;br /&gt;
Try &#039;reuse annotate --help&#039; for help.&lt;br /&gt;
&lt;br /&gt;
Error: The following files do not have a recognised file extension. Please use &#039;--style&#039;, &#039;--force-dot-license&#039;, &#039;--fallback-dot-license&#039;, or &#039;--skip-unrecognised&#039;:&lt;br /&gt;
&lt;br /&gt;
KEYS&lt;br /&gt;
Usage: reuse annotate [OPTIONS] PATH&lt;br /&gt;
Try &#039;reuse annotate --help&#039; for help.&lt;br /&gt;
&lt;br /&gt;
Error: The following files do not have a recognised file extension. Please use &#039;--style&#039;, &#039;--force-dot-license&#039;, &#039;--fallback-dot-license&#039;, or &#039;--skip-unrecognised&#039;:&lt;br /&gt;
&lt;br /&gt;
intake.FCStd&lt;br /&gt;
Successfully changed header of REUSE.toml&lt;br /&gt;
Successfully changed header of .gitignore&lt;br /&gt;
Successfully changed header of README.md&lt;br /&gt;
Successfully changed header of .github/workflows/docs_pages_workflow.yml&lt;br /&gt;
Usage: reuse annotate [OPTIONS] PATH&lt;br /&gt;
Try &#039;reuse annotate --help&#039; for help.&lt;br /&gt;
&lt;br /&gt;
Error: The following files do not have a recognised file extension. Please use &#039;--style&#039;, &#039;--force-dot-license&#039;, &#039;--fallback-dot-license&#039;, or &#039;--skip-unrecognised&#039;:&lt;br /&gt;
&lt;br /&gt;
LICENSE&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## ah fuk, that didn&#039;t do what we wanted at all. I expected it would have pulled the copyright info from the REUSE.toml file. Instead it just took the contents &#039;--license&#039; as the value of the copyright attribute :(&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ head docs/faq.rst &lt;br /&gt;
.. SPDX-FileCopyrightText: 2026 --license&lt;br /&gt;
&lt;br /&gt;
.. _faq:&lt;br /&gt;
&lt;br /&gt;
Frequently Asked Questions&lt;br /&gt;
==========================&lt;br /&gt;
&lt;br /&gt;
.. _faq_follow:&lt;br /&gt;
&lt;br /&gt;
Q: How can I get updates about Eco-Libre?&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## the faq says that we *should* update headers to every file, but it&#039;s not necessary if we use `REUSE.toml` file – as was also indicated with the `reuse lint` output above https://reuse.software/faq/&lt;br /&gt;
## we can, at any time, get a list of every file&#039;s copyright and license using the `reuse spdx` command&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ reuse spdx&lt;br /&gt;
SPDXVersion: SPDX-2.1&lt;br /&gt;
DataLicense: CC0-1.0&lt;br /&gt;
SPDXID: SPDXRef-DOCUMENT&lt;br /&gt;
DocumentName: life-line&lt;br /&gt;
DocumentNamespace: http://spdx.org/spdxdocs/spdx-v2.1-16677618-7d18-4c76-8411-c508a053c01d&lt;br /&gt;
Creator: Person: Anonymous ()&lt;br /&gt;
Creator: Organization: Anonymous ()&lt;br /&gt;
Creator: Tool: reuse-6.2.0&lt;br /&gt;
Created: 2026-04-28T22:19:51Z&lt;br /&gt;
CreatorComment: &amp;lt;text&amp;gt;This document was created automatically using available reuse information consistent with REUSE.&amp;lt;/text&amp;gt;&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-97ed0fdad1415bc2a07967691fb8b548&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-5a39e4fd6c4d6fe353cacabc360bd279&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-25ab5821b678be2b2b12d29b956be405&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-3a1f36e95ccd2fd666e9798d3ac7eb47&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-21b8c0e80d2658f4b88b5a3938551f27&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-1a8de53ae2a6abc46eb8ed1144b7a1f9&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-f9fec76b2bf698c8fb90b872cd0318c1&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-10a5417ebf693664c167892a336585dc&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-3baf92437e62e7b84893396f6d6d2c31&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-120ec97787268d2d531b284f8f238388&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-96f0aa3db80b8611b0cad4fd7f43d887&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-55954c104527c72b6f63da5076e914f7&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-87ca5b46937380db7a2e234fe72b2988&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-ce4d5cb6868565afb76744142953776c&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-7df4243f95862b10bf244e1a932a1305&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-009fc4d41e5673f7da41e8b27bd3ebd6&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-87008e367a587fb44b1e9b7aaa52f6b6&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-c531371aac660823102048108ce60921&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-732742039a9682c0d5bfa8d8845abb5f&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-1228cd07cdef9163c78a4847c409b29e&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-f039812ae7f967b8f08d9147e2fd4153&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-35b1d5815fbbdd7c4356fb3b3cba3b1e&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-c1aae1897500b74ec3aaca84335f882f&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-3598f5057a1cdb741af433a6096d913d&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-c17ac5ff4f166b672e4510ff2c577dbc&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-7b9171fdbbab79cca77d36069477c84a&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-7a9621b85efc539284dde0394be036d8&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-4658cb22cc4a9761f1206a7297889577&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-49300cf0d117ccc668836b524d21d3f9&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-d6b38587054ac699a38698e0eefb93c8&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-49b84e58657e7ccc299f61b0cf539e20&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-39d79d9e7219bdbab89178b7dc21d0da&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-ed584b122f50739f0fda5917ea3f7f59&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-1e2b0fda7ea1435b44332b7c8900d12a&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-2595e40eb2dc20ee8fc015548806efdc&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-fdc6a9c01b345699ecf781d28fa90f5a&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-9cd72e674f0f994995a06528ee25ce2f&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-9cc2a1a37bc4829e8725d74912f56b16&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-e2350358bd19a26c28ac28cc5e18c5a1&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-b33bfd4d5eec5e96e039ec43915bfbf8&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-7015c357dbfa9a8c1900250df442c421&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-4dedfba4994163f7e688743fc42a33d6&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-89b9ed2df6780dc61cffdf6dab799cff&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-eb10117cc0b1fcd44808cc34f4cb1083&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-f1dc0b0fba5c4ce78e065efb774669a8&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-01067d41eee220cdd87bfbf80ea71e87&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-111708d19b33da1a42118224ef69665e&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-472c7aaf2054b6662a0f02656ff453e0&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-f373dac39205edb0975081cc2411a334&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-3d7c4e6cccb3294880a3d23a9edc019c&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-fe7b87a77ea58c18a39d99c8cc4fd9b8&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-8979307823bc12e1df0c4754fb92b50a&lt;br /&gt;
&lt;br /&gt;
FileName: ./.github/workflows/docs_pages_workflow.yml&lt;br /&gt;
SPDXID: SPDXRef-97ed0fdad1415bc2a07967691fb8b548&lt;br /&gt;
FileChecksum: SHA1: 9d6615d72965d4a93b8f7b9eb83b6484b44dee95&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./.gitignore&lt;br /&gt;
SPDXID: SPDXRef-5a39e4fd6c4d6fe353cacabc360bd279&lt;br /&gt;
FileChecksum: SHA1: ac7e0839e77460fca604674fb11218c9fca3a62b&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./CHANGELOG&lt;br /&gt;
SPDXID: SPDXRef-25ab5821b678be2b2b12d29b956be405&lt;br /&gt;
FileChecksum: SHA1: 0d0ca350f7daa0808bebebd0a65784358dfc45c3&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./KEYS&lt;br /&gt;
SPDXID: SPDXRef-3a1f36e95ccd2fd666e9798d3ac7eb47&lt;br /&gt;
FileChecksum: SHA1: f97678ccd0eed19288e1962a838be2f4aa8b7c43&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./README.md&lt;br /&gt;
SPDXID: SPDXRef-21b8c0e80d2658f4b88b5a3938551f27&lt;br /&gt;
FileChecksum: SHA1: 954a6f4347c29a012ef72704606756c843b6a522&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
Copyright (C) 2023 Michael Altfield and the Eco-Libre Team&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./docs/.gitignore&lt;br /&gt;
SPDXID: SPDXRef-1a8de53ae2a6abc46eb8ed1144b7a1f9&lt;br /&gt;
FileChecksum: SHA1: 71683d32ff456772212653e2e836b217c3b7fb73&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./docs/Makefile&lt;br /&gt;
SPDXID: SPDXRef-f9fec76b2bf698c8fb90b872cd0318c1&lt;br /&gt;
FileChecksum: SHA1: 77b7d944eb62d73c1f46a1cfcba1e70e31e4297a&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./docs/_static/custom.css&lt;br /&gt;
SPDXID: SPDXRef-10a5417ebf693664c167892a336585dc&lt;br /&gt;
FileChecksum: SHA1: 6cd536f874aadf0ccc0a0e17ad33f948b4fba44c&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./docs/_templates/versions.html&lt;br /&gt;
SPDXID: SPDXRef-3baf92437e62e7b84893396f6d6d2c31&lt;br /&gt;
FileChecksum: SHA1: 8443bd4bfd306f5b6cf6485e6a6cff5599def6f7&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./docs/attribution.rst&lt;br /&gt;
SPDXID: SPDXRef-120ec97787268d2d531b284f8f238388&lt;br /&gt;
FileChecksum: SHA1: e4b0c037aac62dc9b64293fe57a188f6bf4c5615&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./docs/build/index.rst&lt;br /&gt;
SPDXID: SPDXRef-96f0aa3db80b8611b0cad4fd7f43d887&lt;br /&gt;
FileChecksum: SHA1: 464d9b8ffa36876d3eb0c95a093f4c212d80ff1b&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./docs/build/intake/bom.ods&lt;br /&gt;
SPDXID: SPDXRef-55954c104527c72b6f63da5076e914f7&lt;br /&gt;
FileChecksum: SHA1: 916d43e423eea34a6b63c4cc36190b998b426d85&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2026 --license&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./docs/build/intake/bom.rst&lt;br /&gt;
SPDXID: SPDXRef-87ca5b46937380db7a2e234fe72b2988&lt;br /&gt;
FileChecksum: SHA1: b72018fd716c9cd1f44b96e84a97d7891a9659c2&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./docs/build/intake/index.rst&lt;br /&gt;
SPDXID: SPDXRef-ce4d5cb6868565afb76744142953776c&lt;br /&gt;
FileChecksum: SHA1: 73e83f3d88739f3a711cdc22d05a17e5e46135a0&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./docs/build/intake/what.rst&lt;br /&gt;
SPDXID: SPDXRef-7df4243f95862b10bf244e1a932a1305&lt;br /&gt;
FileChecksum: SHA1: e444a37cc9615febee656e969dac625b9c2014ba&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./docs/build/settling-tank/bom.rst&lt;br /&gt;
SPDXID: SPDXRef-009fc4d41e5673f7da41e8b27bd3ebd6&lt;br /&gt;
FileChecksum: SHA1: e03a27e7d09a23245baa962f0f4ea12fac7ea6d2&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./docs/build/settling-tank/index.rst&lt;br /&gt;
SPDXID: SPDXRef-87008e367a587fb44b1e9b7aaa52f6b6&lt;br /&gt;
FileChecksum: SHA1: f8ff63ef2190341ea2bd810c300d54b83d5d3674&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./docs/build/settling-tank/what.rst&lt;br /&gt;
SPDXID: SPDXRef-c531371aac660823102048108ce60921&lt;br /&gt;
FileChecksum: SHA1: 57a0fa949c5e6e46eca53d0889f152c2962bfa61&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./docs/buildDocs.sh&lt;br /&gt;
SPDXID: SPDXRef-732742039a9682c0d5bfa8d8845abb5f&lt;br /&gt;
FileChecksum: SHA1: befd1b0246b958791ad57f4e18bbba43d8872cd7&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: AGPL-3.0-only&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./docs/changelog.rst&lt;br /&gt;
SPDXID: SPDXRef-1228cd07cdef9163c78a4847c409b29e&lt;br /&gt;
FileChecksum: SHA1: 26793d0a9acc383ba3ccfa7d622b7071db91418e&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./docs/conf.py&lt;br /&gt;
SPDXID: SPDXRef-f039812ae7f967b8f08d9147e2fd4153&lt;br /&gt;
FileChecksum: SHA1: 96026b86d9255c306df4b1fc8b2f5e94cc66c529&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: AGPL-3.0-only&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: &lt;br /&gt;
© &#039; +copyright,&amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./docs/conf.py.orig&lt;br /&gt;
SPDXID: SPDXRef-35b1d5815fbbdd7c4356fb3b3cba3b1e&lt;br /&gt;
FileChecksum: SHA1: 71f3dc660a741b97542c68e32eaa33c80dc42630&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./docs/dev/index.rst&lt;br /&gt;
SPDXID: SPDXRef-c1aae1897500b74ec3aaca84335f882f&lt;br /&gt;
FileChecksum: SHA1: 8075e5fb62dcb27431df32d5928e7561d66a2c46&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./docs/faq.rst&lt;br /&gt;
SPDXID: SPDXRef-3598f5057a1cdb741af433a6096d913d&lt;br /&gt;
FileChecksum: SHA1: f3b1399a843bcd73a4eb67e1fc62a4e090b2377a&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./docs/images/eco-libre_logo-2025.08.svg&lt;br /&gt;
SPDXID: SPDXRef-c17ac5ff4f166b672e4510ff2c577dbc&lt;br /&gt;
FileChecksum: SHA1: d582ec414c54cea2834891d35349c09ae069cbbd&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2026 --license&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./docs/images/eco-libre_text-logo-2025.08.svg&lt;br /&gt;
SPDXID: SPDXRef-7b9171fdbbab79cca77d36069477c84a&lt;br /&gt;
FileChecksum: SHA1: 513c03e164c26e0b35644bee03625b8d343fc49b&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2026 --license&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./docs/images/eco-libre_text-logo-2025.08_500px.png&lt;br /&gt;
SPDXID: SPDXRef-7a9621b85efc539284dde0394be036d8&lt;br /&gt;
FileChecksum: SHA1: de27a5411a683f090c1b543c1e93f8164c4d44cc&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2026 --license&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./docs/images/life-line_2023.12.jpg&lt;br /&gt;
SPDXID: SPDXRef-4658cb22cc4a9761f1206a7297889577&lt;br /&gt;
FileChecksum: SHA1: 8bff1f109f6f7ebc2accd5996d13fb94f7e8939a&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2026 --license&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./docs/images/life-line_2025.10.jpg&lt;br /&gt;
SPDXID: SPDXRef-49300cf0d117ccc668836b524d21d3f9&lt;br /&gt;
FileChecksum: SHA1: af42083713949fb9aac751421fc9a5fc3e794e4d&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2026 --license&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./docs/images/life-line_intake_cleanout-drain.jpg&lt;br /&gt;
SPDXID: SPDXRef-d6b38587054ac699a38698e0eefb93c8&lt;br /&gt;
FileChecksum: SHA1: 2652eedb0face5fececa50537198fc0f3aaf6092&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2026 --license&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./docs/images/life-line_intake_drum.jpg&lt;br /&gt;
SPDXID: SPDXRef-49b84e58657e7ccc299f61b0cf539e20&lt;br /&gt;
FileChecksum: SHA1: e26715adcf558fe12f4eded7308bc1be3e12761c&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2026 --license&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./docs/images/life-line_intake_expanded-metal.jpg&lt;br /&gt;
SPDXID: SPDXRef-39d79d9e7219bdbab89178b7dc21d0da&lt;br /&gt;
FileChecksum: SHA1: 0d0c3398256d96884fcd11daaebc4507b23d7750&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2026 --license&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./docs/images/life-line_intake_fine-mesh.jpg&lt;br /&gt;
SPDXID: SPDXRef-ed584b122f50739f0fda5917ea3f7f59&lt;br /&gt;
FileChecksum: SHA1: 4b3786e5f403c70f9598350c04cf12abb4a790aa&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2026 --license&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./docs/images/life-line_intake_outflow.jpg&lt;br /&gt;
SPDXID: SPDXRef-1e2b0fda7ea1435b44332b7c8900d12a&lt;br /&gt;
FileChecksum: SHA1: 0b7db555483b713324756799e657d2324bdab4f7&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2026 --license&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./docs/images/life-line_intake_parts.svg&lt;br /&gt;
SPDXID: SPDXRef-2595e40eb2dc20ee8fc015548806efdc&lt;br /&gt;
FileChecksum: SHA1: d98da9d0de766b61df6fb0c25f61521a3d26344a&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2026 --license&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./docs/images/life-line_intake_turbulence-bar.jpg&lt;br /&gt;
SPDXID: SPDXRef-fdc6a9c01b345699ecf781d28fa90f5a&lt;br /&gt;
FileChecksum: SHA1: 0f9c8372c9737ad1bac27204292c6aa7e5098813&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2026 --license&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./docs/images/life-line_intake_weir.jpg&lt;br /&gt;
SPDXID: SPDXRef-9cd72e674f0f994995a06528ee25ce2f&lt;br /&gt;
FileChecksum: SHA1: 7f64e42c9fe3b1d2c7d1ae1ece0b55bf544c781a&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2026 --license&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./docs/images/life-line_praxis_boris-plotkin.2024-11.jpg&lt;br /&gt;
SPDXID: SPDXRef-9cc2a1a37bc4829e8725d74912f56b16&lt;br /&gt;
FileChecksum: SHA1: baef65c6984d5b04e1cf44d435f471be0727bfd1&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2026 --license&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./docs/images/life-line_praxis_vegan-beasts_screen.2025-04.jpg&lt;br /&gt;
SPDXID: SPDXRef-e2350358bd19a26c28ac28cc5e18c5a1&lt;br /&gt;
FileChecksum: SHA1: d21be6517081f4f294ed88dca32a920e6bfeaadf&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2026 --license&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./docs/images/life-line_praxis_vegan-beasts_weir.2025-04.jpg&lt;br /&gt;
SPDXID: SPDXRef-b33bfd4d5eec5e96e039ec43915bfbf8&lt;br /&gt;
FileChecksum: SHA1: ba75a617970d7819263e2f21f0d52dcaa61c961c&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2026 --license&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./docs/index.rst&lt;br /&gt;
SPDXID: SPDXRef-7015c357dbfa9a8c1900250df442c421&lt;br /&gt;
FileChecksum: SHA1: e2618dda841766cbd533441dbd21fcfa55e2f119&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./docs/introduction/index.rst&lt;br /&gt;
SPDXID: SPDXRef-4dedfba4994163f7e688743fc42a33d6&lt;br /&gt;
FileChecksum: SHA1: 636e89b3596a43b9ca869502795fdc1956101d1c&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./docs/license.rst&lt;br /&gt;
SPDXID: SPDXRef-89b9ed2df6780dc61cffdf6dab799cff&lt;br /&gt;
FileChecksum: SHA1: c858a38846985c5a96c11c170468688b2860f529&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./docs/locales/es/LC_MESSAGES/autodoc.mo&lt;br /&gt;
SPDXID: SPDXRef-eb10117cc0b1fcd44808cc34f4cb1083&lt;br /&gt;
FileChecksum: SHA1: 3b2fa212f0265c96b1cde5a8cc061cc49385ed96&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./docs/locales/es/LC_MESSAGES/autodoc.po&lt;br /&gt;
SPDXID: SPDXRef-f1dc0b0fba5c4ce78e065efb774669a8&lt;br /&gt;
FileChecksum: SHA1: 58fca147c574cbda23a9c7a5ce420f6385d80ca1&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;Copyright (C) 2020 Michael Altfield&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./docs/locales/es/LC_MESSAGES/index.mo&lt;br /&gt;
SPDXID: SPDXRef-01067d41eee220cdd87bfbf80ea71e87&lt;br /&gt;
FileChecksum: SHA1: f6dda249389c9eb42684431b13c68bbb98530c35&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./docs/locales/es/LC_MESSAGES/index.po&lt;br /&gt;
SPDXID: SPDXRef-111708d19b33da1a42118224ef69665e&lt;br /&gt;
FileChecksum: SHA1: 21c57fcf054a05fcf4e0ef8660a6a38f98239e80&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;Copyright (C) 2020 Michael Altfield&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./docs/make.bat&lt;br /&gt;
SPDXID: SPDXRef-472c7aaf2054b6662a0f02656ff453e0&lt;br /&gt;
FileChecksum: SHA1: 3c504feedb2e1f1e85ed443a4d5aba20bafe0b28&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./docs/praxis/index.rst&lt;br /&gt;
SPDXID: SPDXRef-f373dac39205edb0975081cc2411a334&lt;br /&gt;
FileChecksum: SHA1: 03c98408278e3ebd2cdb61ecae75bd1c52cf4c02&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./docs/support.rst&lt;br /&gt;
SPDXID: SPDXRef-3d7c4e6cccb3294880a3d23a9edc019c&lt;br /&gt;
FileChecksum: SHA1: 3aabd6b0faf44abd22ae7d802d5e2baa988d4eaa&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-Fil&lt;br /&gt;
&lt;br /&gt;
== 2026-04-26 ==&lt;br /&gt;
# I started working on writing a privacy policy for wiki.eco-lbre.org&lt;br /&gt;
# I wrote one years ago for OSE. editing history suggests I finished that in Nov 2018 https://wiki.opensourceecology.org/index.php?title=Media-wiki:Privacy_policy&amp;amp;action=history&lt;br /&gt;
# I largely copied it from the Creative Commons Privacy Policy, and I know Marcin made some (very non-gdpr-compliant) changes to it since then (in 2024)&lt;br /&gt;
# so I did diff of the current privacy policy on CC&#039;s website and OSE&#039;s; they had very little in common! https://creativecommons.org/privacy/&lt;br /&gt;
# it looks like CC updated their Privacy Policy in Dec 2019, so unfortuantly about a year after I did my work with it, they changed it almost completely&lt;br /&gt;
# so I&#039;m just going to start fresh with this, and make changes I think necessary&lt;br /&gt;
# I struggled to find the ToS page. It didn&#039;t appear on the special list of  long pages, and nothign returend for a search of &amp;quot;terms of service&amp;quot; – I guess because it&#039;s in the Eco-Libre namespace? I had to search my logs to find it https://wiki.eco-libre.org/wiki/Eco-Libre:Terms_of_Service&lt;br /&gt;
# I think I should change the link in the bottom-left footer from &amp;quot;Privacy Policy&amp;quot; to &amp;quot;Terms of Service&amp;quot; – since the PP is one of the ToS (and not the other way around)&lt;br /&gt;
## here&#039;s the docs on how to change the links in the footer https://www.mediawiki.org/wiki/Manual:Footer&lt;br /&gt;
## I was able to do this by updating the following two pages (one is the hyperlink text and one is the hyperlink article destination)&lt;br /&gt;
### https://wiki.eco-libre.org/wiki/MediaWiki:Privacypage&lt;br /&gt;
### https://wiki.eco-libre.org/wiki/MediaWiki:Privacy&lt;br /&gt;
# I created the Privacy Policy from the CC one, cleaned up the syntax and did my best to replace all the relevant CC stuff to EL https://wiki.eco-libre.org/wiki/Eco-Libre:Privacy_policy&lt;br /&gt;
# the privacy policy references a CoC (Code of Conduct). Ugh, I guess we need one of those too..&lt;br /&gt;
## I wonder if we can say &amp;quot;you must wash your hands with soap and water&amp;quot; and &amp;quot;you must take b12 if you&#039;re vegan&amp;quot; in the CoC. Or is that *another* agreement?&lt;br /&gt;
## probably we should make some CoC that applies to in-person and remote users *and* a separate agreement with that sort of thing, only for live-in guests (maybe call it a &amp;quot;Housing Agreeemnt&amp;quot; or something)&lt;br /&gt;
## here&#039;s the rules from veganism.social&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
	Rule #1No speciesism, animal abuse, carnists, omnivores, vegetarians, or other non-vegans&lt;br /&gt;
	Rule #2Sexually explicit or violent media must be marked as sensitive when posting&lt;br /&gt;
	Rule #3No racism, sexism, homophobia, transphobia, xenophobia, fatphobia, or casteism&lt;br /&gt;
	Rule #4No incitement of violence or promotion of violent ideologies&lt;br /&gt;
	Rule #5No harassment or doxxing of other users&lt;br /&gt;
	Rule #6Do not share intentionally false or misleading information&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## here&#039;s mastodon.energy&#039;s&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
1. Be Nice&lt;br /&gt;
2. Tell the Truth&lt;br /&gt;
3. Be Ethical&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## here&#039;s chaos.social, which is where we have our mastodon now&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Rules&lt;br /&gt;
&lt;br /&gt;
We expect users on chaos.social to adhere to the following rules:&lt;br /&gt;
&lt;br /&gt;
	No content condoning or advocating for the oppression of members of marginalised groups, or general discrimination of groups based on characteristics like gender, race, disabilities, nationality, education, religion etc.&lt;br /&gt;
	No harassment, stalking, mobbing, deadnaming, misgendering, contacting users who have made it clear they do not wish to be contacted.&lt;br /&gt;
	Obviously: no content that is illegal in Germany, no actions intended to damage this instance (performance, reputation, security).&lt;br /&gt;
	No right or alt-right bullshit, Nazi content, conspiracy narratives.&lt;br /&gt;
	No automated accounts (unless approved by the moderators). This includes bots, crossposters, feedposters etc.&lt;br /&gt;
	When posting to the local timeline, provide Content Warnings for violence, sexually explicit content, death/disease, and politics, particularly when negative or controversial (those are the larger categories, a CW might be something like “uspol, elections”).&lt;br /&gt;
	When posting to the local timeline, provide image descriptions.&lt;br /&gt;
	Provide credit for creative works that are not your own. That includes marking AI generated content clearly as such.&lt;br /&gt;
&lt;br /&gt;
Clarification: You post to the local timeline when you give your post “public” visibility. If you don’t want to follow local timeline rules, you can post with visibility “quiet public” (which used to be called “unlisted”) – posts will still be visible to everybody (your followers and everybody else), they just won’t get shown on the local and federated timelines. Boosts also do not appear on the local timeline.&lt;br /&gt;
&lt;br /&gt;
Note that the instance is also subject to our terms and privacy policy.&lt;br /&gt;
Best practices&lt;br /&gt;
&lt;br /&gt;
We ask users on chaos.social to keep the following guidelines in mind, in order to foster a considerate and accessible atmosphere. Forgetting about them is not as serious as breaking the instance rules, but repeated malicious unwillingness to follow the best practices will be considered just like breaking a rule.&lt;br /&gt;
&lt;br /&gt;
	Use content warnings liberally, especially for topics that are potentially disturbing or controversial, or that make life harder for people struggling with addiction or trauma.&lt;br /&gt;
	Don’t be a reply guy – uninvited comments about another user’s personal choices, lifestyle or family are strongly discouraged and may be considered harassment.&lt;br /&gt;
	In discussions, please remain civil, do not insult the people you’re talking to. Don’t escalate.&lt;br /&gt;
&lt;br /&gt;
Enforcement&lt;br /&gt;
&lt;br /&gt;
Rules are only worth as much as their enforcement, so here is what you can expect from the chaos.social moderators (we will publish our moderation guidelines in the future, but here’s the short version):&lt;br /&gt;
&lt;br /&gt;
Breaking these rules can get you kicked off the instance, though unless you’re behaving in bad faith, we will give you several warnings first. Going against the Best Practices can also get you kicked off the instance, but you have to really persistently act against them (and at that point, why are you on chaos.social?).&lt;br /&gt;
&lt;br /&gt;
Please report behaviour that bothers you. We will keep your report confidential.&lt;br /&gt;
&lt;br /&gt;
We run this instance in our spare time, so we can’t respond instantly. We try to react to all reports within a day, but please allow for delays. You can always contact us us in private if you have concerns about moderation. We will not comment in public about individual moderation cases.&lt;br /&gt;
Ultimately,&lt;br /&gt;
&lt;br /&gt;
we (@leah and @rixx) are maintaining this instance on our spare time, hardware and nerves. Don’t push either of those.&lt;br /&gt;
&lt;br /&gt;
The rules are licensed under CC-BY-SA by chaos.social e.V.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
### and this one explicilty says it&#039;s CC-BY-SA, so that&#039;s cool.&lt;br /&gt;
## I guess we&#039;ll copy chaos.socials&#039; since it&#039;s already copyleft&lt;br /&gt;
## ok, here&#039;s what I came-up with&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
By using this website, you agree to the following Code of Conduct:&lt;br /&gt;
&lt;br /&gt;
# Only submit content for which you have the right to submit it under the terms of our copyleft licensing (it must either be created in whole or in part by you or already licensed under a comparable copyleft)&lt;br /&gt;
# No AI content! This is a violation of rule #1.&lt;br /&gt;
# No content condoning or advocating for the oppression of members of marginalised groups, or general discrimination of groups based on characteristics like species, gender, race, disabilities, nationality, education, religion etc.&lt;br /&gt;
# No harassment, stalking, mobbing, deadnaming, misgendering, contacting users who have made it clear they do not wish to be contacted.&lt;br /&gt;
# No content that is illegal in Germany or Ecuador, no actions intended to damage this instance (performance, reputation, security).&lt;br /&gt;
# No pro-fascist or pro-Nazi content&lt;br /&gt;
# Post Content Warnings for violence, sexually explicit content, death and/or disease&lt;br /&gt;
# Whenever possible, provide image descriptions for visually impaired readers&lt;br /&gt;
# No misinformation or disinformaton&lt;br /&gt;
# Provide attribution (credit) for works that are not your own. This should include a name of the original copyright holder and a link to the source.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# now we have a CLA (Community License Agreement), ToS (Terms of Service), PP (Privacy Policy), and CoC (Code of Conduct)&lt;br /&gt;
## so I think we still have just 2 agreeements missing&lt;br /&gt;
### Public Data Agreement&lt;br /&gt;
### In-House Volunteer Agreement&lt;br /&gt;
# I had previously drafted the Public Data Agreeement as followes&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
1. I understand that Eco-Libre will publish all of my work publicly on their website&lt;br /&gt;
2. I understand that, because my work is licensed openly, I cannot request it to be taken down from the Internet&lt;br /&gt;
3. I understand that I have the right to use an alias, so that all of my work can be attributed to an anonymous profile with no PII (publicly identifiable information).&lt;br /&gt;
4. I understand that, if I wish to use an anonymous identity for my public contributions, then I should not use my real name in this application&lt;br /&gt;
5. I understand that currently my name is set to XXXX, and this is the name that will be publicly listed on Eco-Libre&#039;s website associated with all of my contributions&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## I&#039;m actually not fully sure that&#039;s necessary. The PP from CC had a clause&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Eco-Libre Volunteers.&lt;br /&gt;
&lt;br /&gt;
o In connection with you Eco-Libre Volunteer application, we may provide your information to the individuals you’ve selected to vouch for you, and with those reviewing your application, including the Membership Council whose members include people not employed by Eco-Libre and who are located in various countries around the world.&lt;br /&gt;
&lt;br /&gt;
o If you vouch for someone’s application to the Eco-Libre Volunteer program, your information will be shared with those reviewing the application, including the Membership Council, and if you provide a positive vouching statement, that statement will be shared with the applicant if and when they are admitted for membership.&lt;br /&gt;
&lt;br /&gt;
o Once you are an Eco-Libre Volunteer, we may provide you with a public profile page, pre-populated with certain information you provided in your application such as your name, areas of interest, images or other content you upload, which will be publicly displayed to anyone who visits the site. &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## I added a paragraph&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
o   As an Eco-Libre Volunteer, all of your Contributions will be licensed under a copyleft license, and published publicly.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## well, I guess this satisfies the legal requirements, but I do want to make the pseudonym stuff more clear. But I apparently wrote that to go on the application itself. Currently our application process is non-existant: the user just sends and email, we have a call, and we figure it out. I did just add some docs to sign to that process, but we need a more streamlined process: a form&lt;br /&gt;
## it&#039;s on our TODO list to review some wordpress plugins that we can use for building an application process. eventually *that&#039;s* where this text should be copied, and it should reference things like our official Privacy Policy&lt;br /&gt;
# the other thing was our &amp;quot; In-House Volunteer Agreement&amp;quot; which is *really* premature, as we don&#039;t even have housing yet. Nonetheless, I drafted this&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
1. I am at least 15 years old&lt;br /&gt;
2. I sincerely want live a sustainable lifestyle and work on developing tools to help others live sustainably. I understand that volunteering at Eco-Libre is an active experience, not a cheap vacation. &lt;br /&gt;
3. I am ready to participate in the community and share in the daily routine of my hosts, while respecting their living conditions and boundaries.&lt;br /&gt;
4. I will contribute my time to the community the agreed-upon number of hours per week.&lt;br /&gt;
5. I am willing to adapt to a lifestyle that may be different from mine. I will make known to the community any pertinent health conditions (disabilities, addictions...) beforehand.&lt;br /&gt;
6. I have insurance that will cover me for accidents, illness, and liability during my stay. I am aware that Eco-Libre cannot be held responsible for damages and / or losses linked to my stay.&lt;br /&gt;
7. I will prevent the spread of disease by washing my hands with soap and water after using the toilet and before preparing meals&lt;br /&gt;
8. I will only purchase vegan goods (derived from non-animal sources) during my time at Eco-Libre in accordance with the community values of ecological sustainability.&lt;br /&gt;
9. I will supplement my diet by taking vitamin B12&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# I also think that should be included in the online volunteer application form. And probably physically signed by folks who are going to actually come to Ecudaor. But we&#039;re not there yet...&lt;br /&gt;
# anyway, I think we&#039;ve finally satisifed the requrements of (and finished the configuration of) ConfirmAccount!&lt;br /&gt;
# TODO: finish enabling &amp;amp; configuring wiki extensions: DeleteBatch, SmiteSpam, UserMerge, Widgets&lt;br /&gt;
&lt;br /&gt;
== 2026-04-24 ==&lt;br /&gt;
# someone answered my &amp;quot;how do I license kdnelive files&amp;quot; here https://opensource.stackexchange.com/a/15747/30915&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
It sounds like your desired outcome is that copies of your mp4 can only be distributed while also sharing the kdenlive source files. You&#039;re correct that CC ShareAlike terms won&#039;t do this. ShareAlike requires that all downstream works that reuse the work be shareable under the same kind of ShareAlike license, but it doesn&#039;t require redistributors to share the underlying source code.&lt;br /&gt;
&lt;br /&gt;
If you do want to require source to accompany your work, this requirement differs from the desires of many artists who choose a CC license: they want their song or image to be shared around without having to be followed by the underlying sound-editor archive or photo-editor layer file. If that actually is what you want, then the GPL is a sensible choice for such a strong requirement, and it is perfectly applicable to non-software works.&lt;br /&gt;
&lt;br /&gt;
 * https://www.gnu.org/licenses/gpl-faq.html#GPLOtherThanSoftware&lt;br /&gt;
&lt;br /&gt;
If you don&#039;t want to impose this requirement, then I think CC BY-SA is still a reasonable choice for the underlying &amp;quot;source code&amp;quot; of your video. The output mp4 is legally derivative of your kdenlive files, so CC BY-SA will ensure that all mp4 files made from (derivatives of) your kdenlive source must also be freely shareable under CC BY-SA, but will not impose source disclosure. Future derivatives of the source kdenlive files will, similarly, have to remain under CC BY-SA even as others change them (but they can be kept secret even when built into a CC BY-SA mp4).&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# I half-decided we should then license all artwork (images made in gimp or inkscape, videos made in kdenlive) under GPL, so the sources would need to be public&lt;br /&gt;
# then I started thinking, hey, maybe our documentation should also be GPL, since sphinx and reST are like sources for PDFs they produce&lt;br /&gt;
# then I realized what that would actually mean. Say we make a video showing the construction of a launch-nest. Say the sources for that video include a camera that was mounted to a post and recording for 8 hours every day over the period of 3 months. Maybe five of them, for differet angles. Once we finally finish producing the video, I&#039;m going to be super relieved when we can delete that enormous source footage. The kdenlive file itself would be fine to release; it&#039;s small. But would we then be forced to indefinitely save and distribute the source video footage, even if it&#039;s a combined 3 TB of 1,000 video files, for a 1 GB finally-rendered mp4?&lt;br /&gt;
# inkscape is easy; the svg literally *is* the source file&lt;br /&gt;
# gimp is somewhere in-between. I typically hang-onto the source images used to make a feature image (sometimes brands, or screenshots or stock copyleft images of forests or whatever) for some number of months. eventually they get deleted. I would love to upload the gimp files, but those might be broken without the source images. Or they just would be too enormous and break git over time.&lt;br /&gt;
# also, if we can&#039;t do it, we can&#039;t expect downstream to do it. imagine we work with some youtuber and demand that the must forever store and publish the sources in order to do a video with us? I think 99% would turn us down, because they know they can&#039;t do that. It&#039;s too expensive and unrealistic.&lt;br /&gt;
# due to this very real logistical problem, I think we should just keep CC BY-SA on media files. We can go above-and-beyond that license and provide kdenlive and gimp files *sometimes*, but we shouldn&#039;t mandate it by using GPL.&lt;br /&gt;
# and, honestly, if downstream just licenses CC BY-SA, that lets us cut that up and use it in future videos. That&#039;s good enough. And appropriate for the (expensive-to-store) medium.&lt;br /&gt;
# ...&lt;br /&gt;
# revisting the DEB5 system, I found an example on another project that I maintain: buskill https://salsa.debian.org/debian/buskill/-/blob/master/debian/copyright?ref_type=heads&lt;br /&gt;
## so our debian maintainer built this. he put a file &#039;copyright&#039; in the root with this contents&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/&lt;br /&gt;
Source: https://github.com/BusKill/buskill-app&lt;br /&gt;
Upstream-Name: buskill&lt;br /&gt;
Upstream-Contact: Michael Altfield &amp;lt;michael@michaelaltfield.net&amp;gt;&lt;br /&gt;
Files:&lt;br /&gt;
 *&lt;br /&gt;
Copyright:&lt;br /&gt;
 2020-2022 Michael Altfield &amp;lt;michael@michaelaltfield.net&amp;gt;&lt;br /&gt;
 2020-2021 Steven Johnson &amp;lt;steven.j2019@protonmail.com&amp;gt;&lt;br /&gt;
License: GPL-3+&lt;br /&gt;
Files:&lt;br /&gt;
 src/fonts/*&lt;br /&gt;
Copyright:&lt;br /&gt;
 2015 Google&lt;br /&gt;
License: Apache-2.0&lt;br /&gt;
 Licensed under the Apache License, Version 2.0 (the &amp;quot;License&amp;quot;);&lt;br /&gt;
 you may not use this file except in compliance with the License.&lt;br /&gt;
 You may obtain a copy of the License at&lt;br /&gt;
 ․&lt;br /&gt;
	https://www.apache.org/licenses/LICENSE-2.0&lt;br /&gt;
 ․&lt;br /&gt;
 Unless required by applicable law or agreed to in writing, software&lt;br /&gt;
 distributed under the License is distributed on an &amp;quot;AS IS&amp;quot; BASIS,&lt;br /&gt;
 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.&lt;br /&gt;
 See the License for the specific language governing permissions and&lt;br /&gt;
 limitations under the License.&lt;br /&gt;
Comment:&lt;br /&gt;
 On Debian systems, the complete text of the Apache License&lt;br /&gt;
 version 2 can be found in &amp;quot;/usr/share/common-licenses/Apache-2.0&amp;quot;.&lt;br /&gt;
Files:&lt;br /&gt;
 src/packages/garden/navigationdrawer/*&lt;br /&gt;
Copyright:&lt;br /&gt;
 2013 Alexander Taylor&lt;br /&gt;
License: MIT&lt;br /&gt;
Files:&lt;br /&gt;
 src/packages/garden/progressspinner/*&lt;br /&gt;
Copyright:&lt;br /&gt;
 2015 Ryan Pessa &amp;lt;dkived@gmail.com&amp;gt;&lt;br /&gt;
License: MIT&lt;br /&gt;
Files:&lt;br /&gt;
 debian/*&lt;br /&gt;
Copyright:&lt;br /&gt;
 2022-2026 Francois Marier &amp;lt;francois@debian.org&amp;gt;&lt;br /&gt;
License: GPL-3+&lt;br /&gt;
License: GPL-3+&lt;br /&gt;
 This package is free software; you can redistribute it and/or modify&lt;br /&gt;
 it under the terms of the GNU General Public License as published by&lt;br /&gt;
 the Free Software Foundation; either version 3 of the License, or&lt;br /&gt;
 (at your option) any later version.&lt;br /&gt;
 .&lt;br /&gt;
 This package is distributed in the hope that it will be useful,&lt;br /&gt;
 but WITHOUT ANY WARRANTY; without even the implied warranty of&lt;br /&gt;
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the&lt;br /&gt;
 GNU General Public License for more details.&lt;br /&gt;
 .&lt;br /&gt;
 You should have received a copy of the GNU General Public License&lt;br /&gt;
 along with this program. If not, see &amp;lt;https://www.gnu.org/licenses/&amp;gt;&lt;br /&gt;
Comment:&lt;br /&gt;
 On Debian systems, the complete text of the GNU General&lt;br /&gt;
 Public License version 3 can be found in &amp;quot;/usr/share/common-licenses/GPL-3&amp;quot;.&lt;br /&gt;
License: MIT&lt;br /&gt;
 Permission is hereby granted, free of charge, to any person obtaining a copy&lt;br /&gt;
 of this software and associated documentation files (the &amp;quot;Software&amp;quot;), to deal&lt;br /&gt;
&lt;br /&gt;
 in the Software without restriction, including without limitation the rights&lt;br /&gt;
 to use, copy, modify, merge, publish, distribute, sublicense, and/or sell&lt;br /&gt;
 copies of the Software, and to permit persons to whom the Software is&lt;br /&gt;
 furnished to do so, subject to the following conditions:&lt;br /&gt;
 .&lt;br /&gt;
 The above copyright notice and this permission notice shall be included in&lt;br /&gt;
 all copies or substantial portions of the Software.&lt;br /&gt;
 .&lt;br /&gt;
 THE SOFTWARE IS PROVIDED &amp;quot;AS IS&amp;quot;, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR&lt;br /&gt;
 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,&lt;br /&gt;
 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE&lt;br /&gt;
 AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER&lt;br /&gt;
 LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,&lt;br /&gt;
 OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN&lt;br /&gt;
 THE SOFTWARE.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# I spent some time trying to craft a &#039;copyright&#039; file that we could use for Eco-Libre&lt;br /&gt;
## one thing that bothers me is that I have so many &#039;Files&#039; stanzas – one for each programming language. I wish I could do something like&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Files:&lt;br /&gt;
 *.py|*.php|*.c&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## there are no examples where a single file stanza has many file paths, but the text of the standard does say they are whitespace-delimited (not pipe-delimited, like I naturally think)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
4. File syntax&lt;br /&gt;
...&lt;br /&gt;
4.2. Whitespace-separated lists&lt;br /&gt;
&lt;br /&gt;
Field values defined as whitespace-separated lists may be on one line or many. Values in the list are separated by one or more whitespace characters (space, tab, or newline). For example, the Files field contains a whitespace-separated list of filename patterns.&lt;br /&gt;
...&lt;br /&gt;
6.9. Files&lt;br /&gt;
&lt;br /&gt;
Whitespace-separated list: list of patterns indicating files covered by the license and copyright specified in this stanza.&lt;br /&gt;
&lt;br /&gt;
Filename patterns in the Files field are specified using a simplified shell glob syntax. Patterns are separated by whitespace. &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## let&#039;s see if I can find any example package that use this whitespace, so I don&#039;t fuck it up&lt;br /&gt;
## looks like debian has a *ton* of these already available on my system&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
user@disp4360:~$ ls /usr/share/doc/*/copyright | head&lt;br /&gt;
/usr/share/doc/acl/copyright&lt;br /&gt;
/usr/share/doc/adduser/copyright&lt;br /&gt;
/usr/share/doc/adwaita-icon-theme/copyright&lt;br /&gt;
/usr/share/doc/alsa-topology-conf/copyright&lt;br /&gt;
/usr/share/doc/alsa-ucm-conf/copyright&lt;br /&gt;
/usr/share/doc/alsa-utils/copyright&lt;br /&gt;
/usr/share/doc/amd64-microcode/copyright&lt;br /&gt;
/usr/share/doc/anacron/copyright&lt;br /&gt;
/usr/share/doc/ansible/copyright&lt;br /&gt;
/usr/share/doc/ansible-core/copyright&lt;br /&gt;
user@disp4360:~$ &lt;br /&gt;
&lt;br /&gt;
user@disp4360:~$ ls /usr/share/doc/*/copyright | wc -l&lt;br /&gt;
2798&lt;br /&gt;
user@disp4360:~$ &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## the very first one has a great example&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
user@disp4360:~$ cat /usr/share/doc/acl/copyright&lt;br /&gt;
Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/&lt;br /&gt;
&lt;br /&gt;
Files:&lt;br /&gt;
 *&lt;br /&gt;
Copyright:&lt;br /&gt;
 Copyright © 2000-2008 Silicon Graphics, Inc.&lt;br /&gt;
 Copyright © 1999-2001,2007-2009 Andreas Gruenbacher&lt;br /&gt;
License: GPL-2+&lt;br /&gt;
 This program is free software: you can redistribute it and/or modify it&lt;br /&gt;
 under the terms of the GNU General Public License as published by&lt;br /&gt;
 the Free Software Foundation, either version 2 of the License, or&lt;br /&gt;
 (at your option) any later version.&lt;br /&gt;
 .&lt;br /&gt;
 This program is distributed in the hope that it will be useful,&lt;br /&gt;
 but WITHOUT ANY WARRANTY; without even the implied warranty of&lt;br /&gt;
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the&lt;br /&gt;
 GNU General Public License for more details.&lt;br /&gt;
 .&lt;br /&gt;
 You should have received a copy of the GNU General Public License&lt;br /&gt;
 along with this program.  If not, see &amp;lt;https://www.gnu.org/licenses/&amp;gt;.&lt;br /&gt;
Comment:&lt;br /&gt;
 On Debian systems, the full text of the GNU General Public License&lt;br /&gt;
 can be found in &#039;/usr/share/common-licenses/GPL-2&#039;.&lt;br /&gt;
&lt;br /&gt;
Files:&lt;br /&gt;
 exports&lt;br /&gt;
 include/*.h&lt;br /&gt;
 libacl/*.c&lt;br /&gt;
 libacl/*.h&lt;br /&gt;
 libmisc/*.c&lt;br /&gt;
 tools/do_set.*&lt;br /&gt;
 tools/parse.*&lt;br /&gt;
 tools/sequence.c&lt;br /&gt;
 tools/setfacl.c&lt;br /&gt;
 tools/user_group.h&lt;br /&gt;
Copyright:&lt;br /&gt;
 Copyright © 2001-2002 Silicon Graphics, Inc.&lt;br /&gt;
 Copyright © 1999-2003,2007,2009,2011 Andreas Gruenbacher&lt;br /&gt;
License: LGPL-2+&lt;br /&gt;
 This program is free software: you can redistribute it and/or modify it&lt;br /&gt;
 under the terms of the GNU Lesser General Public License as published by&lt;br /&gt;
 the Free Software Foundation, either version 2.1 of the License, or&lt;br /&gt;
 (at your option) any later version.&lt;br /&gt;
 .&lt;br /&gt;
 This program is distributed in the hope that it will be useful,&lt;br /&gt;
 but WITHOUT ANY WARRANTY; without even the implied warranty of&lt;br /&gt;
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the&lt;br /&gt;
 GNU Lesser General Public License for more details.&lt;br /&gt;
 .&lt;br /&gt;
 You should have received a copy of the GNU Lesser General Public License&lt;br /&gt;
 along with this program.  If not, see &amp;lt;https://www.gnu.org/licenses/&amp;gt;.&lt;br /&gt;
Comment:&lt;br /&gt;
 On Debian systems, the full text of the GNU Lesser General Public License&lt;br /&gt;
 can be found in &#039;/usr/share/common-licenses/LGPL-2.1&#039;.&lt;br /&gt;
user@disp4360:~$ &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# I also found an example where the whitespace was a space, not a newline + space&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
user@disp4360:~$ cat /usr/share/doc/apparmor/copyright &lt;br /&gt;
Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/&lt;br /&gt;
Upstream-Name: AppArmor&lt;br /&gt;
Upstream-Contact: apparmor@lists.ubuntu.com&lt;br /&gt;
Source: https://launchpad.net/apparmor&lt;br /&gt;
&lt;br /&gt;
Files: *&lt;br /&gt;
Copyright: 1998-2010 Novell/SuSE/Immunix&lt;br /&gt;
		   2008-2014 Canonical Ltd.&lt;br /&gt;
License: GPL-2+&lt;br /&gt;
&lt;br /&gt;
Files: changehat/pam_apparmor/*&lt;br /&gt;
Copyright: 2006 SUSE Linux Products GmbH, Nuernberg, Germany&lt;br /&gt;
		   2002, 2003, 2004 SuSE GmbH Nuernberg, Germany&lt;br /&gt;
		   2002-2006 Novell/SuSE&lt;br /&gt;
		   2010 Canonical Ltd.&lt;br /&gt;
License: BSD-3-clause or GPL-2+&lt;br /&gt;
&lt;br /&gt;
Files: changehat/mod_apparmor/*&lt;br /&gt;
Copyright: 2004-2006 Novell&lt;br /&gt;
		   2014 Canonical Ltd.&lt;br /&gt;
License: LGPL-2.1+&lt;br /&gt;
&lt;br /&gt;
Files: libraries/libapparmor/* parser/libapparmor_re/*&lt;br /&gt;
Copyright: 1999-2008 Novell&lt;br /&gt;
		   2009-2013 Canonical Ltd.&lt;br /&gt;
License: LGPL-2.1+&lt;br /&gt;
&lt;br /&gt;
Files: profiles/apparmor.d/abstractions/mysql&lt;br /&gt;
Copyright: 2002-2006 Novell/SUSE&lt;br /&gt;
		   2013 Christian Boltz&lt;br /&gt;
License: GPL-2&lt;br /&gt;
&lt;br /&gt;
Files: profiles/apparmor.d/usr.sbin.dnsmasq&lt;br /&gt;
Copyright: 2009 John Dong &amp;lt;jdong@ubuntu.com&amp;gt;&lt;br /&gt;
		   2010 Canonical Ltd.&lt;br /&gt;
License: GPL-2&lt;br /&gt;
&lt;br /&gt;
Files: profiles/apparmor.d/sbin.syslog-ng&lt;br /&gt;
Copyright: 2006-2009 Novell/SUSE&lt;br /&gt;
		   2006 Christian Boltz&lt;br /&gt;
		   2010 Canonical Ltd.&lt;br /&gt;
License: GPL-2&lt;br /&gt;
&lt;br /&gt;
Files: profiles/apparmor.d/usr.lib.dovecot.*&lt;br /&gt;
Copyright: 2013 Christian Boltz&lt;br /&gt;
License: GPL-2&lt;br /&gt;
&lt;br /&gt;
Files: profiles/apparmor.d/usr.lib.dovecot.auth&lt;br /&gt;
Copyright: 2013 Christian Boltz&lt;br /&gt;
		   2014 Christian Wittmer&lt;br /&gt;
License: GPL-2&lt;br /&gt;
&lt;br /&gt;
Files: profiles/apparmor.d/usr.lib.dovecot.deliver&lt;br /&gt;
Copyright: 2009 Dulmandakh Sukhbaatar &amp;lt;dulmandakh@gmail.com&amp;gt;&lt;br /&gt;
		   2009-2014 Canonical Ltd.&lt;br /&gt;
		   2011-2013 Christian Boltz&lt;br /&gt;
License: GPL-2&lt;br /&gt;
&lt;br /&gt;
Files: profiles/apparmor.d/usr.lib.dovecot.dovecot-auth&lt;br /&gt;
Copyright: 2009-2013 Canonical Ltd.&lt;br /&gt;
		   2013 Christian Boltz&lt;br /&gt;
License: GPL-2&lt;br /&gt;
&lt;br /&gt;
Files: profiles/apparmor.d/usr.lib.dovecot.imap profiles/apparmor.d/usr.lib.dovecot.pop3&lt;br /&gt;
Copyright: 2009-2010 Canonical Ltd.&lt;br /&gt;
		   2011-2013 Christian Boltz&lt;br /&gt;
License: GPL-2&lt;br /&gt;
&lt;br /&gt;
Files: profiles/apparmor.d/usr.lib.dovecot.imap-login profiles/apparmor.d/usr.lib.dovecot.pop3-login&lt;br /&gt;
Copyright: 2009-2011 Canonical Ltd.&lt;br /&gt;
		   2013 Christian Boltz&lt;br /&gt;
License: GPL-2&lt;br /&gt;
&lt;br /&gt;
Files: profiles/apparmor.d/usr.lib.dovecot.managesieve&lt;br /&gt;
Copyright: 2013 Christian Boltz&lt;br /&gt;
		   2014 Christian Wittmer&lt;br /&gt;
License: GPL-2&lt;br /&gt;
&lt;br /&gt;
Files: profiles/apparmor.d/usr.lib.dovecot.managesieve-login&lt;br /&gt;
Copyright: 2009 Dulmandakh Sukhbaatar &amp;lt;dulmandakh@gmail.com&amp;gt;&lt;br /&gt;
		   2009-2011 Canonical Ltd.&lt;br /&gt;
		   2013 Christian Boltz&lt;br /&gt;
		   2014 Christian Wittmer&lt;br /&gt;
License: GPL-2&lt;br /&gt;
&lt;br /&gt;
Files: profiles/apparmor/profiles/extras/usr.bin.mlmmj-make-ml.sh&lt;br /&gt;
Copyright: 2002-2005 Novell/SUSE&lt;br /&gt;
License: GPL-2&lt;br /&gt;
&lt;br /&gt;
Files: profiles/apparmor/profiles/extras/usr.bin.passwd&lt;br /&gt;
Copyright: 2006 Volker Kuhlmann&lt;br /&gt;
License: GPL-2&lt;br /&gt;
&lt;br /&gt;
Files: debian/*&lt;br /&gt;
Copyright: 2007-2011 Canonical Ltd.&lt;br /&gt;
		   2014-2022 intrigeri&lt;br /&gt;
License: GPL-2&lt;br /&gt;
&lt;br /&gt;
License: BSD-3-clause&lt;br /&gt;
 Redistribution and use in source and binary forms, with or without&lt;br /&gt;
 modification, are permitted provided that the following conditions&lt;br /&gt;
 are met:&lt;br /&gt;
 .&lt;br /&gt;
 1. Redistributions of source code must retain any existing copyright&lt;br /&gt;
	notice, and this entire permission notice in its entirety,&lt;br /&gt;
	including the disclaimer of warranties.&lt;br /&gt;
 .&lt;br /&gt;
 2. Redistributions in binary form must reproduce all prior and current&lt;br /&gt;
	copyright notices, this list of conditions, and the following&lt;br /&gt;
	disclaimer in the documentation and/or other materials provided&lt;br /&gt;
	with the distribution.&lt;br /&gt;
 .&lt;br /&gt;
 3. The name of any author may not be used to endorse or promote&lt;br /&gt;
	products derived from this software without their specific prior&lt;br /&gt;
	written permission.&lt;br /&gt;
&lt;br /&gt;
License: GPL-2&lt;br /&gt;
 This program is free software; you can redistribute it and/or modify&lt;br /&gt;
 it under the terms of the GNU General Public License as published by&lt;br /&gt;
 the Free Software Foundation; version 2 of the License.&lt;br /&gt;
 .&lt;br /&gt;
 This program is distributed in the hope that it will be useful,&lt;br /&gt;
 but WITHOUT ANY WARRANTY; without even the implied warranty of&lt;br /&gt;
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the&lt;br /&gt;
 GNU General Public License for more details.&lt;br /&gt;
 .&lt;br /&gt;
 You should have received a copy of the GNU General Public License along&lt;br /&gt;
 with this program; if not, write to the Free Software Foundation, Inc.,&lt;br /&gt;
 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.&lt;br /&gt;
 .&lt;br /&gt;
 On Debian systems, the complete text of the GNU General&lt;br /&gt;
 Public License can be found in `/usr/share/common-licenses/GPL-2&#039;.&lt;br /&gt;
&lt;br /&gt;
License: GPL-2+&lt;br /&gt;
 This program is free software; you can redistribute it and/or modify&lt;br /&gt;
 it under the terms of the GNU General Public License as published by&lt;br /&gt;
 the Free Software Foundation; either version 2 of the License, or&lt;br /&gt;
 (at your option) any later version.&lt;br /&gt;
 .&lt;br /&gt;
 This program is distributed in the hope that it will be useful,&lt;br /&gt;
 but WITHOUT ANY WARRANTY; without even the implied warranty of&lt;br /&gt;
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the&lt;br /&gt;
 GNU General Public License for more details.&lt;br /&gt;
 .&lt;br /&gt;
 You should have received a copy of the GNU General Public License along&lt;br /&gt;
 with this program; if not, write to the Free Software Foundation, Inc.,&lt;br /&gt;
 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.&lt;br /&gt;
 .&lt;br /&gt;
 On Debian systems, the complete text of the GNU General&lt;br /&gt;
 Public License can be found in `/usr/share/common-licenses/GPL-2&#039;.&lt;br /&gt;
&lt;br /&gt;
License: LGPL-2.1+&lt;br /&gt;
 This library is free software; you can redistribute it and/or&lt;br /&gt;
 modify it under the terms of the GNU Lesser General Public&lt;br /&gt;
 License as published by the Free Software Foundation; either&lt;br /&gt;
 version 2.1 of the License, or (at your option) any later version.&lt;br /&gt;
 .&lt;br /&gt;
 This library is distributed in the hope that it will be useful,&lt;br /&gt;
 but WITHOUT ANY WARRANTY; without even the implied warranty of&lt;br /&gt;
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU&lt;br /&gt;
 Lesser General Public License for more details.&lt;br /&gt;
 .&lt;br /&gt;
 You should have received a copy of the GNU Lesser General Public&lt;br /&gt;
 License along with this library; if not, write to the Free Software&lt;br /&gt;
 Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA&lt;br /&gt;
 .&lt;br /&gt;
 On Debian systems, the complete text of the GNU General&lt;br /&gt;
 Public License can be found in `/usr/share/common-licenses/LGPL-2.1&#039;.&lt;br /&gt;
user@disp4360:~$ &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
## so we already have a &amp;quot;short version&amp;quot; of the license for GPL and CERN. For example&lt;br /&gt;
### GPL&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 This package is free software; you can redistribute it and/or modify&lt;br /&gt;
 it under the terms of the GNU General Public License as published by&lt;br /&gt;
 the Free Software Foundation; either version 3 of the License, or&lt;br /&gt;
 (at your option) any later version.&lt;br /&gt;
 .&lt;br /&gt;
 This package is distributed in the hope that it will be useful,&lt;br /&gt;
 but WITHOUT ANY WARRANTY; without even the implied warranty of&lt;br /&gt;
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the&lt;br /&gt;
 GNU General Public License for more details.&lt;br /&gt;
 .&lt;br /&gt;
 You should have received a copy of the GNU General Public License&lt;br /&gt;
 along with this program. If not, see &amp;lt;https://www.gnu.org/licenses/&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
### CERN&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
You may redistribute and modify this source and make products using it under the terms of the CERN-OHL-S v2 (https://ohwr.org/cern_ohl_s_v2.txt).&lt;br /&gt;
&lt;br /&gt;
This source is distributed WITHOUT ANY EXPRESS OR IMPLIED WARRANTY, INCLUDING OF MERCHANTABILITY, SATISFACTORY QUALITY AND FITNESS FOR A PARTICULAR PURPOSE. Please see the CERN-OHL-S v2 for applicable conditions.&lt;br /&gt;
&lt;br /&gt;
Source location: foundationdevices.com/passport-electronics&lt;br /&gt;
&lt;br /&gt;
As per CERN-OHL-S v2 section 4, should You produce hardware based on this source, You must where practicable and applicable maintain the Source Location visible (1) on the packaging of the hardware, (2) on the circuit board(s) via silkscreen or copper, (3) in any documentation, and (4) on other products you make using this source.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## I was hoping for some sort of equivalent in CC-BY-SA-4.0, but all of these (which were the only ones I found with BY-SA-4.0) had the full text of the license&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
user@disp4360:/usr/share/doc$ grep -irl BY-SA-4.0 /usr/share/doc/*/copyright&lt;br /&gt;
/usr/share/doc/adwaita-icon-theme/copyright&lt;br /&gt;
/usr/share/doc/containerd/copyright&lt;br /&gt;
/usr/share/doc/gimp/copyright&lt;br /&gt;
/usr/share/doc/gimp-data/copyright&lt;br /&gt;
/usr/share/doc/gir1.2-gtk-3.0/copyright&lt;br /&gt;
/usr/share/doc/gtk-update-icon-cache/copyright&lt;br /&gt;
/usr/share/doc/libadwaita-1-0/copyright&lt;br /&gt;
/usr/share/doc/libgimp2.0/copyright&lt;br /&gt;
/usr/share/doc/libgtk-3-0/copyright&lt;br /&gt;
/usr/share/doc/libgtk-3-bin/copyright&lt;br /&gt;
/usr/share/doc/libgtk-3-common/copyright&lt;br /&gt;
/usr/share/doc/libmd4c0/copyright&lt;br /&gt;
/usr/share/doc/libnftables1/copyright&lt;br /&gt;
/usr/share/doc/libwildmidi2/copyright&lt;br /&gt;
/usr/share/doc/mythes-en-us/copyright&lt;br /&gt;
/usr/share/doc/nftables/copyright&lt;br /&gt;
/usr/share/doc/syncthing/copyright&lt;br /&gt;
user@disp4360:/usr/share/doc$ &lt;br /&gt;
user@disp4360:/usr/share/doc$ cat /usr/share/doc/libadwaita-1-0/copyright&lt;br /&gt;
Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/&lt;br /&gt;
Upstream-Name: libadwaita&lt;br /&gt;
Source: https://gitlab.gnome.org/GNOME/libadwaita&lt;br /&gt;
Files-Excluded: doc/libadwaita-1&lt;br /&gt;
Comment: Let&#039;s build the docs from source&lt;br /&gt;
&lt;br /&gt;
Files: *&lt;br /&gt;
Copyright: 2019, Alexander Mikhaylenko &amp;lt;exalm7659@gmail.com&amp;gt;&lt;br /&gt;
  2018, 2019, Zander Brown &amp;lt;zbrown@gnome.org&amp;gt;&lt;br /&gt;
  2017-2021, Purism SPC&lt;br /&gt;
  2016, Endless Mobile Inc.&lt;br /&gt;
  2013, 2019, Red Hat, Inc.&lt;br /&gt;
  1995-1997, Peter Mattis, Spencer Kimball and Josh MacDonald&lt;br /&gt;
  2021, GNOME Foundation&lt;br /&gt;
  2021, Manuel Genovés&lt;br /&gt;
  2021, Nahuel Gomez Castro&lt;br /&gt;
  2021, Maximiliano Sandoval&lt;br /&gt;
  2011, Intel Corporation&lt;br /&gt;
License: LGPL-2.1+&lt;br /&gt;
&lt;br /&gt;
Files: debian/*&lt;br /&gt;
Copyright: 2021, Guido Günther &amp;lt;agx@sigxcpu.org&amp;gt;&lt;br /&gt;
License: GPL-3+&lt;br /&gt;
&lt;br /&gt;
Files:&lt;br /&gt;
 doc/libadwaita-1/*.html&lt;br /&gt;
 doc/libadwaita-1/main.js&lt;br /&gt;
Copyright:&lt;br /&gt;
 2021, GNOME Foundation&lt;br /&gt;
License: Apache-2.0 or GPL-3+&lt;br /&gt;
&lt;br /&gt;
Files:&lt;br /&gt;
 demo/data/org.gnome.Adwaita1.Demo.metainfo.xml.in.in&lt;br /&gt;
Copyright: none&lt;br /&gt;
License: CC0-1.0&lt;br /&gt;
&lt;br /&gt;
Files:&lt;br /&gt;
 demo/data/org.gnome.Adwaita1.Demo.Source.svg&lt;br /&gt;
Copyright:&lt;br /&gt;
 GNOME Design Team&lt;br /&gt;
License: CC-BY-SA-4.0&lt;br /&gt;
&lt;br /&gt;
License: Apache-2.0&lt;br /&gt;
 SPDX license identifier Apache-2.0.&lt;br /&gt;
 .&lt;br /&gt;
 Licensed under the Apache License, Version 2.0 (the &amp;quot;License&amp;quot;);&lt;br /&gt;
 you may not use this file except in compliance with the License.&lt;br /&gt;
 You may obtain a copy of the License at&lt;br /&gt;
 .&lt;br /&gt;
	  http://www.apache.org/licenses/LICENSE-2.0&lt;br /&gt;
 .&lt;br /&gt;
 Unless required by applicable law or agreed to in writing, software&lt;br /&gt;
 distributed under the License is distributed on an &amp;quot;AS IS&amp;quot; BASIS,&lt;br /&gt;
 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.&lt;br /&gt;
 See the License for the specific language governing permissions and&lt;br /&gt;
 limitations under the License.&lt;br /&gt;
 .&lt;br /&gt;
 On Debian systems, a copy of the Apache License version 2.0&lt;br /&gt;
 can be found in /usr/share/common-licenses/Apache-2.0.&lt;br /&gt;
&lt;br /&gt;
License: CC0-1.0&lt;br /&gt;
 SPDX license identifier CC0-1.0.&lt;br /&gt;
 .&lt;br /&gt;
 On Debian systems, a copy of the Creative Commons Zero license, version 1.0&lt;br /&gt;
 can be found in /usr/share/common-licenses/CC0-1.0.&lt;br /&gt;
&lt;br /&gt;
License: CC-BY-SA-4.0&lt;br /&gt;
 http://creativecommons.org/licenses/by-sa/4.0/&lt;br /&gt;
 .&lt;br /&gt;
 Attribution-ShareAlike 4.0 International&lt;br /&gt;
 .&lt;br /&gt;
 =======================================================================&lt;br /&gt;
 .&lt;br /&gt;
 Creative Commons Corporation (&amp;quot;Creative Commons&amp;quot;) is not a law firm and&lt;br /&gt;
 does not provide legal services or legal advice. Distribution of&lt;br /&gt;
 Creative Commons public licenses does not create a lawyer-client or&lt;br /&gt;
 other relationship. Creative Commons makes its licenses and related&lt;br /&gt;
 information available on an &amp;quot;as-is&amp;quot; basis. Creative Commons gives no&lt;br /&gt;
 warranties regarding its licenses, any material licensed under their&lt;br /&gt;
 terms and conditions, or any related information. Creative Commons&lt;br /&gt;
 disclaims all liability for damages resulting from their use to the&lt;br /&gt;
 fullest extent possible.&lt;br /&gt;
 .&lt;br /&gt;
 Using Creative Commons Public Licenses&lt;br /&gt;
 .&lt;br /&gt;
 Creative Commons public licenses provide a standard set of terms and&lt;br /&gt;
 conditions that creators and other rights holders may use to share&lt;br /&gt;
 original works of authorship and other material subject to copyright&lt;br /&gt;
 and certain other rights specified in the public license below. The&lt;br /&gt;
 following considerations are for informational purposes only, are not&lt;br /&gt;
 exhaustive, and do not form part of our licenses.&lt;br /&gt;
 .&lt;br /&gt;
	  Considerations for licensors: Our public licenses are&lt;br /&gt;
	  intended for use by those authorized to give the public&lt;br /&gt;
	  permission to use material in ways otherwise restricted by&lt;br /&gt;
	  copyright and certain other rights. Our licenses are&lt;br /&gt;
	  irrevocable. Licensors should read and understand the terms&lt;br /&gt;
	  and conditions of the license they choose before applying it.&lt;br /&gt;
	  Licensors should also secure all rights necessary before&lt;br /&gt;
	  applying our licenses so that the public can reuse the&lt;br /&gt;
	  material as expected. Licensors should clearly mark any&lt;br /&gt;
	  material not subject to the license. This includes other CC-&lt;br /&gt;
	  licensed material, or material used under an exception or&lt;br /&gt;
	  limitation to copyright. More considerations for licensors:&lt;br /&gt;
	  wiki.creativecommons.org/Considerations_for_licensors&lt;br /&gt;
 .&lt;br /&gt;
	  Considerations for the public: By using one of our public&lt;br /&gt;
	  licenses, a licensor grants the public permission to use the&lt;br /&gt;
	  licensed material under specified terms and conditions. If&lt;br /&gt;
	  the licensor&#039;s permission is not necessary for any reason--for&lt;br /&gt;
	  example, because of any applicable exception or limitation to&lt;br /&gt;
	  copyright--then that use is not regulated by the license. Our&lt;br /&gt;
	  licenses grant only permissions under copyright and certain&lt;br /&gt;
	  other rights that a licensor has authority to grant. Use of&lt;br /&gt;
	  the licensed material may still be restricted for other&lt;br /&gt;
	  reasons, including because others have copyright or other&lt;br /&gt;
	  rights in the material. A licensor may make special requests,&lt;br /&gt;
	  such as asking that all changes be marked or described.&lt;br /&gt;
	  Although not required by our licenses, you are encouraged to&lt;br /&gt;
	  respect those requests where reasonable. More_considerations&lt;br /&gt;
	  for the public:&lt;br /&gt;
	  wiki.creativecommons.org/Considerations_for_licensees&lt;br /&gt;
 .&lt;br /&gt;
 =======================================================================&lt;br /&gt;
 .&lt;br /&gt;
 Creative Commons Attribution-ShareAlike 4.0 International Public&lt;br /&gt;
 License&lt;br /&gt;
 .&lt;br /&gt;
 By exercising the Licensed Rights (defined below), You accept and agree&lt;br /&gt;
 to be bound by the terms and conditions of this Creative Commons&lt;br /&gt;
 Attribution-ShareAlike 4.0 International Public License (&amp;quot;Public&lt;br /&gt;
 License&amp;quot;). To the extent this Public License may be interpreted as a&lt;br /&gt;
 contract, You are granted the Licensed Rights in consideration of Your&lt;br /&gt;
 acceptance of these terms and conditions, and the Licensor grants You&lt;br /&gt;
 such rights in consideration of benefits the Licensor receives from&lt;br /&gt;
 making the Licensed Material available under these terms and&lt;br /&gt;
 conditions.&lt;br /&gt;
 .&lt;br /&gt;
 .&lt;br /&gt;
 Section 1 -- Definitions.&lt;br /&gt;
 .&lt;br /&gt;
   a. Adapted Material means material subject to Copyright and Similar&lt;br /&gt;
	  Rights that is derived from or based upon the Licensed Material&lt;br /&gt;
	  and in which the Licensed Material is translated, altered,&lt;br /&gt;
	  arranged, transformed, or otherwise modified in a manner requiring&lt;br /&gt;
	  permission under the Copyright and Similar Rights held by the&lt;br /&gt;
	  Licensor. For purposes of this Public License, where the Licensed&lt;br /&gt;
	  Material is a musical work, performance, or sound recording,&lt;br /&gt;
	  Adapted Material is always produced where the Licensed Material is&lt;br /&gt;
	  synched in timed relation with a moving image.&lt;br /&gt;
 .&lt;br /&gt;
   b. Adapter&#039;s License means the license You apply to Your Copyright&lt;br /&gt;
	  and Similar Rights in Your contributions to Adapted Material in&lt;br /&gt;
	  accordance with the terms and conditions of this Public License.&lt;br /&gt;
 .&lt;br /&gt;
   c. BY-SA Compatible License means a license listed at&lt;br /&gt;
	  creativecommons.org/compatiblelicenses, approved by Creative&lt;br /&gt;
	  Commons as essentially the equivalent of this Public License.&lt;br /&gt;
 .&lt;br /&gt;
   d. Copyright and Similar Rights means copyright and/or similar rights&lt;br /&gt;
	  closely related to copyright including, without limitation,&lt;br /&gt;
	  performance, broadcast, sound recording, and Sui Generis Database&lt;br /&gt;
	  Rights, without regard to how the rights are labeled or&lt;br /&gt;
	  categorized. For purposes of this Public License, the rights&lt;br /&gt;
	  specified in Section 2(b)(1)-(2) are not Copyright and Similar&lt;br /&gt;
	  Rights.&lt;br /&gt;
 .&lt;br /&gt;
   e. Effective Technological Measures means those measures that, in the&lt;br /&gt;
	  absence of proper authority, may not be circumvented under laws&lt;br /&gt;
	  fulfilling obligations under Article 11 of the WIPO Copyright&lt;br /&gt;
	  Treaty adopted on December 20, 1996, and/or similar international&lt;br /&gt;
	  agreements.&lt;br /&gt;
 .&lt;br /&gt;
   f. Exceptions and Limitations means fair use, fair dealing, and/or&lt;br /&gt;
	  any other exception or limitation to Copyright and Similar Rights&lt;br /&gt;
	  that applies to Your use of the Licensed Material.&lt;br /&gt;
 .&lt;br /&gt;
   g. License Elements means the license attributes listed in the name&lt;br /&gt;
	  of a Creative Commons Public License. The License Elements of this&lt;br /&gt;
	  Public License are Attribution and ShareAlike.&lt;br /&gt;
 .&lt;br /&gt;
   h. Licensed Material means the artistic or literary work, database,&lt;br /&gt;
	  or other material to which the Licensor applied this Public&lt;br /&gt;
	  License.&lt;br /&gt;
 .&lt;br /&gt;
   i. Licensed Rights means the rights granted to You subject to the&lt;br /&gt;
	  terms and conditions of this Public License, which are limited to&lt;br /&gt;
	  all Copyright and Similar Rights that apply to Your use of the&lt;br /&gt;
	  Licensed Material and that the Licensor has authority to license.&lt;br /&gt;
 .&lt;br /&gt;
   j. Licensor means the individual(s) or entity(ies) granting rights&lt;br /&gt;
	  under this Public License.&lt;br /&gt;
 .&lt;br /&gt;
   k. Share means to provide material to the public by any means or&lt;br /&gt;
	  process that requires permission under the Licensed Rights, such&lt;br /&gt;
	  as reproduction, public display, public performance, distribution,&lt;br /&gt;
	  dissemination, communication, or importation, and to make material&lt;br /&gt;
	  available to the public including in ways that members of the&lt;br /&gt;
	  public may access the material from a place and at a time&lt;br /&gt;
	  individually chosen by them.&lt;br /&gt;
 .&lt;br /&gt;
   l. Sui Generis Database Rights means rights other than copyright&lt;br /&gt;
	  resulting from Directive 96/9/EC of the European Parliament and of&lt;br /&gt;
	  the Council of 11 March 1996 on the legal protection of databases,&lt;br /&gt;
	  as amended and/or succeeded, as well as other essentially&lt;br /&gt;
	  equivalent rights anywhere in the world.&lt;br /&gt;
 .&lt;br /&gt;
   m. You means the individual or entity exercising the Licensed Rights&lt;br /&gt;
	  under this Public License. Your has a corresponding meaning.&lt;br /&gt;
 .&lt;br /&gt;
 .&lt;br /&gt;
 Section 2 -- Scope.&lt;br /&gt;
 .&lt;br /&gt;
   a. License grant.&lt;br /&gt;
 .&lt;br /&gt;
		1. Subject to the terms and conditions of this Public License,&lt;br /&gt;
		   the Licensor hereby grants You a worldwide, royalty-free,&lt;br /&gt;
		   non-sublicensable, non-exclusive, irrevocable license to&lt;br /&gt;
		   exercise the Licensed Rights in the Licensed Material to:&lt;br /&gt;
 .&lt;br /&gt;
			 a. reproduce and Share the Licensed Material, in whole or&lt;br /&gt;
				in part; and&lt;br /&gt;
 .&lt;br /&gt;
			 b. produce, reproduce, and Share Adapted Material.&lt;br /&gt;
 .&lt;br /&gt;
		2. Exceptions and Limitations. For the avoidance of doubt, where&lt;br /&gt;
		   Exceptions and Limitations apply to Your use, this Public&lt;br /&gt;
		   License does not apply, and You do not need to comply with&lt;br /&gt;
		   its terms and conditions.&lt;br /&gt;
 .&lt;br /&gt;
		3. Term. The term of this Public License is specified in Section&lt;br /&gt;
		   6(a).&lt;br /&gt;
 .&lt;br /&gt;
		4. Media and formats; technical modifications allowed. The&lt;br /&gt;
		   Licensor authorizes You to exercise the Licensed Rights in&lt;br /&gt;
		   all media and formats whether now known or hereafter created,&lt;br /&gt;
		   and to make technical modifications necessary to do so. The&lt;br /&gt;
		   Licensor waives and/or agrees not to assert any right or&lt;br /&gt;
		   authority to forbid You from making technical modifications&lt;br /&gt;
		   necessary to exercise the Licensed Rights, including&lt;br /&gt;
		   technical modifications necessary to circumvent Effective&lt;br /&gt;
		   Technological Measures. For purposes of this Public License,&lt;br /&gt;
		   simply making modifications authorized by this Section 2(a)&lt;br /&gt;
		   (4) never produces Adapted Material.&lt;br /&gt;
 .&lt;br /&gt;
		5. Downstream recipients.&lt;br /&gt;
 .&lt;br /&gt;
			 a. Offer from the Licensor -- Licensed Material. Every&lt;br /&gt;
				recipient of the Licensed Material automatically&lt;br /&gt;
				receives an offer from the Licensor to exercise the&lt;br /&gt;
				Licensed Rights under the terms and conditions of this&lt;br /&gt;
				Public License.&lt;br /&gt;
 .&lt;br /&gt;
			 b. Additional offer from the Licensor -- Adapted Material.&lt;br /&gt;
				Every recipient of Adapted Material from You&lt;br /&gt;
				automatically receives an offer from the Licensor to&lt;br /&gt;
				exercise the Licensed Rights in the Adapted Material&lt;br /&gt;
				under the conditions of the Adapter&#039;s License You apply.&lt;br /&gt;
 .&lt;br /&gt;
			 c. No downstream restrictions. You may not offer or impose&lt;br /&gt;
				any additional or different terms or conditions on, or&lt;br /&gt;
				apply any Effective Technological Measures to, the&lt;br /&gt;
				Licensed Material if doing so restricts exercise of the&lt;br /&gt;
				Licensed Rights by any recipient of the Licensed&lt;br /&gt;
				Material.&lt;br /&gt;
 .&lt;br /&gt;
		6. No endorsement. Nothing in this Public License constitutes or&lt;br /&gt;
		   may be construed as permission to assert or imply that You&lt;br /&gt;
		   are, or that Your use of the Licensed Material is, connected&lt;br /&gt;
		   with, or sponsored, endorsed, or granted official status by,&lt;br /&gt;
		   the Licensor or others designated to receive attribution as&lt;br /&gt;
		   provided in Section 3(a)(1)(A)(i).&lt;br /&gt;
 .&lt;br /&gt;
   b. Other rights.&lt;br /&gt;
 .&lt;br /&gt;
		1. Moral rights, such as the right of integrity, are not&lt;br /&gt;
		   licensed under this Public License, nor are publicity,&lt;br /&gt;
		   privacy, and/or other similar personality rights; however, to&lt;br /&gt;
		   the extent possible, the Licensor waives and/or agrees not to&lt;br /&gt;
		   assert any such rights held by the Licensor to the limited&lt;br /&gt;
		   extent necessary to allow You to exercise the Licensed&lt;br /&gt;
		   Rights, but not otherwise.&lt;br /&gt;
 .&lt;br /&gt;
		2. Patent and trademark rights are not licensed under this&lt;br /&gt;
		   Public License.&lt;br /&gt;
 .&lt;br /&gt;
		3. To the extent possible, the Licensor waives any right to&lt;br /&gt;
		   collect royalties from You for the exercise of the Licensed&lt;br /&gt;
		   Rights, whether directly or through a collecting society&lt;br /&gt;
		   under any voluntary or waivable statutory or compulsory&lt;br /&gt;
		   licensing scheme. In all other cases the Licensor expressly&lt;br /&gt;
		   reserves any right to collect such royalties.&lt;br /&gt;
 .&lt;br /&gt;
 .&lt;br /&gt;
 Section 3 -- License Conditions.&lt;br /&gt;
 .&lt;br /&gt;
 Your exercise of the Licensed Rights is expressly made subject to the&lt;br /&gt;
 following conditions.&lt;br /&gt;
 .&lt;br /&gt;
   a. Attribution.&lt;br /&gt;
 .&lt;br /&gt;
		1. If You Share the Licensed Material (including in modified&lt;br /&gt;
		   form), You must:&lt;br /&gt;
 .&lt;br /&gt;
			 a. retain the following if it is supplied by the Licensor&lt;br /&gt;
				with the Licensed Material:&lt;br /&gt;
 .&lt;br /&gt;
				  i. identification of the creator(s) of the Licensed&lt;br /&gt;
					 Material and any others designated to receive&lt;br /&gt;
					 attribution, in any reasonable manner requested by&lt;br /&gt;
					 the Licensor (including by pseudonym if&lt;br /&gt;
					 designated);&lt;br /&gt;
 .&lt;br /&gt;
				 ii. a copyright notice;&lt;br /&gt;
 .&lt;br /&gt;
				iii. a notice that refers to this Public License;&lt;br /&gt;
 .&lt;br /&gt;
				 iv. a notice that refers to the disclaimer of&lt;br /&gt;
					 warranties;&lt;br /&gt;
 .&lt;br /&gt;
				  v. a URI or hyperlink to the Licensed Material to the&lt;br /&gt;
					 extent reasonably practicable;&lt;br /&gt;
 .&lt;br /&gt;
			 b. indicate if You modified the Licensed Material and&lt;br /&gt;
				retain an indication of any previous modifications; and&lt;br /&gt;
 .&lt;br /&gt;
			 c. indicate the Licensed Material is licensed under this&lt;br /&gt;
				Public License, and include the text of, or the URI or&lt;br /&gt;
				hyperlink to, this Public License.&lt;br /&gt;
 .&lt;br /&gt;
		2. You may satisfy the conditions in Section 3(a)(1) in any&lt;br /&gt;
		   reasonable manner based on the medium, means, and context in&lt;br /&gt;
		   which You Share the Licensed Material. For example, it may be&lt;br /&gt;
		   reasonable to satisfy the conditions by providing a URI or&lt;br /&gt;
		   hyperlink to a resource that includes the required&lt;br /&gt;
		   information.&lt;br /&gt;
 .&lt;br /&gt;
		3. If requested by the Licensor, You must remove any of the&lt;br /&gt;
		   information required by Section 3(a)(1)(A) to the extent&lt;br /&gt;
		   reasonably practicable.&lt;br /&gt;
 .&lt;br /&gt;
   b. ShareAlike.&lt;br /&gt;
 .&lt;br /&gt;
	  In addition to the conditions in Section 3(a), if You Share&lt;br /&gt;
	  Adapted Material You produce, the following conditions also apply.&lt;br /&gt;
 .&lt;br /&gt;
		1. The Adapter&#039;s License You apply must be a Creative Commons&lt;br /&gt;
		   license with the same License Elements, this version or&lt;br /&gt;
		   later, or a BY-SA Compatible License.&lt;br /&gt;
 .&lt;br /&gt;
		2. You must include the text of, or the URI or hyperlink to, the&lt;br /&gt;
		   Adapter&#039;s License You apply. You may satisfy this condition&lt;br /&gt;
		   in any reasonable manner based on the medium, means, and&lt;br /&gt;
		   context in which You Share Adapted Material.&lt;br /&gt;
 .&lt;br /&gt;
		3. You may not offer or impose any additional or different terms&lt;br /&gt;
		   or conditions on, or apply any Effective Technological&lt;br /&gt;
		   Measures to, Adapted Material that restrict exercise of the&lt;br /&gt;
		   rights granted under the Adapter&#039;s License You apply.&lt;br /&gt;
 .&lt;br /&gt;
 .&lt;br /&gt;
 Section 4 -- Sui Generis Database Rights.&lt;br /&gt;
 .&lt;br /&gt;
 Where the Licensed Rights include Sui Generis Database Rights that&lt;br /&gt;
 apply to Your use of the Licensed Material:&lt;br /&gt;
 .&lt;br /&gt;
   a. for the avoidance of doubt, Section 2(a)(1) grants You the right&lt;br /&gt;
	  to extract, reuse, reproduce, and Share all or a substantial&lt;br /&gt;
	  portion of the contents of the database;&lt;br /&gt;
 .&lt;br /&gt;
   b. if You include all or a substantial portion of the database&lt;br /&gt;
	  contents in a database in which You have Sui Generis Database&lt;br /&gt;
	  Rights, then the database in which You have Sui Generis Database&lt;br /&gt;
	  Rights (but not its individual contents) is Adapted Material,&lt;br /&gt;
 .&lt;br /&gt;
	  including for purposes of Section 3(b); and&lt;br /&gt;
   c. You must comply with the conditions in Section 3(a) if You Share&lt;br /&gt;
	  all or a substantial portion of the contents of the database.&lt;br /&gt;
 .&lt;br /&gt;
 For the avoidance of doubt, this Section 4 supplements and does not&lt;br /&gt;
 replace Your obligations under this Public License where the Licensed&lt;br /&gt;
 Rights include other Copyright and Similar Rights.&lt;br /&gt;
 .&lt;br /&gt;
 .&lt;br /&gt;
 Section 5 -- Disclaimer of Warranties and Limitation of Liability.&lt;br /&gt;
 .&lt;br /&gt;
   a. UNLESS OTHERWISE SEPARATELY UNDERTAKEN BY THE LICENSOR, TO THE&lt;br /&gt;
	  EXTENT POSSIBLE, THE LICENSOR OFFERS THE LICENSED MATERIAL AS-IS&lt;br /&gt;
	  AND AS-AVAILABLE, AND MAKES NO REPRESENTATIONS OR WARRANTIES OF&lt;br /&gt;
	  ANY KIND CONCERNING THE LICENSED MATERIAL, WHETHER EXPRESS,&lt;br /&gt;
	  IMPLIED, STATUTORY, OR OTHER. THIS INCLUDES, WITHOUT LIMITATION,&lt;br /&gt;
	  WARRANTIES OF TITLE, MERCHANTABILITY, FITNESS FOR A PARTICULAR&lt;br /&gt;
	  PURPOSE, NON-INFRINGEMENT, ABSENCE OF LATENT OR OTHER DEFECTS,&lt;br /&gt;
	  ACCURACY, OR THE PRESENCE OR ABSENCE OF ERRORS, WHETHER OR NOT&lt;br /&gt;
	  KNOWN OR DISCOVERABLE. WHERE DISCLAIMERS OF WARRANTIES ARE NOT&lt;br /&gt;
	  ALLOWED IN FULL OR IN PART, THIS DISCLAIMER MAY NOT APPLY TO YOU.&lt;br /&gt;
 .&lt;br /&gt;
   b. TO THE EXTENT POSSIBLE, IN NO EVENT WILL THE LICENSOR BE LIABLE&lt;br /&gt;
	  TO YOU ON ANY LEGAL THEORY (INCLUDING, WITHOUT LIMITATION,&lt;br /&gt;
	  NEGLIGENCE) OR OTHERWISE FOR ANY DIRECT, SPECIAL, INDIRECT,&lt;br /&gt;
	  INCIDENTAL, CONSEQUENTIAL, PUNITIVE, EXEMPLARY, OR OTHER LOSSES,&lt;br /&gt;
	  COSTS, EXPENSES, OR DAMAGES ARISING OUT OF THIS PUBLIC LICENSE OR&lt;br /&gt;
	  USE OF THE LICENSED MATERIAL, EVEN IF THE LICENSOR HAS BEEN&lt;br /&gt;
	  ADVISED OF THE POSSIBILITY OF SUCH LOSSES, COSTS, EXPENSES, OR&lt;br /&gt;
	  DAMAGES. WHERE A LIMITATION OF LIABILITY IS NOT ALLOWED IN FULL OR&lt;br /&gt;
	  IN PART, THIS LIMITATION MAY NOT APPLY TO YOU.&lt;br /&gt;
 .&lt;br /&gt;
   c. The disclaimer of warranties and limitation of liability provided&lt;br /&gt;
	  above shall be interpreted in a manner that, to the extent&lt;br /&gt;
	  possible, most closely approximates an absolute disclaimer and&lt;br /&gt;
	  waiver of all liability.&lt;br /&gt;
 .&lt;br /&gt;
 .&lt;br /&gt;
 Section 6 -- Term and Termination.&lt;br /&gt;
 .&lt;br /&gt;
   a. This Public License applies for the term of the Copyright and&lt;br /&gt;
	  Similar Rights licensed here. However, if You fail to comply with&lt;br /&gt;
	  this Public License, then Your rights under this Public License&lt;br /&gt;
	  terminate automatically.&lt;br /&gt;
 .&lt;br /&gt;
   b. Where Your right to use the Licensed Material has terminated under&lt;br /&gt;
	  Section 6(a), it reinstates:&lt;br /&gt;
 .&lt;br /&gt;
		1. automatically as of the date the violation is cured, provided&lt;br /&gt;
		   it is cured within 30 days of Your discovery of the&lt;br /&gt;
		   violation; or&lt;br /&gt;
 .&lt;br /&gt;
		2. upon express reinstatement by the Licensor.&lt;br /&gt;
 .&lt;br /&gt;
	  For the avoidance of doubt, this Section 6(b) does not affect any&lt;br /&gt;
	  right the Licensor may have to seek remedies for Your violations&lt;br /&gt;
	  of this Public License.&lt;br /&gt;
 .&lt;br /&gt;
   c. For the avoidance of doubt, the Licensor may also offer the&lt;br /&gt;
	  Licensed Material under separate terms or conditions or stop&lt;br /&gt;
	  distributing the Licensed Material at any time; however, doing so&lt;br /&gt;
	  will not terminate this Public License.&lt;br /&gt;
 .&lt;br /&gt;
   d. Sections 1, 5, 6, 7, and 8 survive termination of this Public&lt;br /&gt;
	  License.&lt;br /&gt;
 .&lt;br /&gt;
 .&lt;br /&gt;
 Section 7 -- Other Terms and Conditions.&lt;br /&gt;
 .&lt;br /&gt;
   a. The Licensor shall not be bound by any additional or different&lt;br /&gt;
	  terms or conditions communicated by You unless expressly agreed.&lt;br /&gt;
 .&lt;br /&gt;
   b. Any arrangements, understandings, or agreements regarding the&lt;br /&gt;
	  Licensed Material not stated herein are separate from and&lt;br /&gt;
	  independent of the terms and conditions of this Public License.&lt;br /&gt;
 .&lt;br /&gt;
 .&lt;br /&gt;
 Section 8 -- Interpretation.&lt;br /&gt;
 .&lt;br /&gt;
   a. For the avoidance of doubt, this Public License does not, and&lt;br /&gt;
	  shall not be interpreted to, reduce, limit, restrict, or impose&lt;br /&gt;
	  conditions on any use of the Licensed Material that could lawfully&lt;br /&gt;
	  be made without permission under this Public License.&lt;br /&gt;
 .&lt;br /&gt;
   b. To the extent possible, if any provision of this Public License is&lt;br /&gt;
	  deemed unenforceable, it shall be automatically reformed to the&lt;br /&gt;
	  minimum extent necessary to make it enforceable. If the provision&lt;br /&gt;
	  cannot be reformed, it shall be severed from this Public License&lt;br /&gt;
	  without affecting the enforceability of the remaining terms and&lt;br /&gt;
	  conditions.&lt;br /&gt;
 .&lt;br /&gt;
   c. No term or condition of this Public License will be waived and no&lt;br /&gt;
	  failure to comply consented to unless expressly agreed to by the&lt;br /&gt;
	  Licensor.&lt;br /&gt;
 .&lt;br /&gt;
   d. Nothing in this Public License constitutes or may be interpreted&lt;br /&gt;
	  as a limitation upon, or waiver of, any privileges and immunities&lt;br /&gt;
	  that apply to the Licensor or You, including from the legal&lt;br /&gt;
	  processes of any jurisdiction or authority.&lt;br /&gt;
 .&lt;br /&gt;
 .&lt;br /&gt;
 =======================================================================&lt;br /&gt;
 .&lt;br /&gt;
 Creative Commons is not a party to its public&lt;br /&gt;
 licenses. Notwithstanding, Creative Commons may elect to apply one of&lt;br /&gt;
 its public licenses to material it publishes and in those instances&lt;br /&gt;
 will be considered the “Licensor.” The text of the Creative Commons&lt;br /&gt;
 public licenses is dedicated to the public domain under the CC0 Public&lt;br /&gt;
 Domain Dedication. Except for the limited purpose of indicating that&lt;br /&gt;
 material is shared under a Creative Commons public license or as&lt;br /&gt;
 otherwise permitted by the Creative Commons policies published at&lt;br /&gt;
 creativecommons.org/policies, Creative Commons does not authorize the&lt;br /&gt;
 use of the trademark &amp;quot;Creative Commons&amp;quot; or any other trademark or logo&lt;br /&gt;
 of Creative Commons without its prior written consent including,&lt;br /&gt;
 without limitation, in connection with any unauthorized modifications&lt;br /&gt;
 to any of its public licenses or any other arrangements,&lt;br /&gt;
 understandings, or agreements concerning use of licensed material. For&lt;br /&gt;
 the avoidance of doubt, this paragraph does not form part of the&lt;br /&gt;
 public licenses.&lt;br /&gt;
 .&lt;br /&gt;
 Creative Commons may be contacted at creativecommons.org.&lt;br /&gt;
&lt;br /&gt;
License: GPL-3+&lt;br /&gt;
 This package is free software; you can redistribute it and/or modify&lt;br /&gt;
 it under the terms of the GNU General Public License as published by&lt;br /&gt;
 the Free Software Foundation; either version 3 of the License, or&lt;br /&gt;
 (at your option) any later version.&lt;br /&gt;
 .&lt;br /&gt;
 This package is distributed in the hope that it will be useful,&lt;br /&gt;
 but WITHOUT ANY WARRANTY; without even the implied warranty of&lt;br /&gt;
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the&lt;br /&gt;
 GNU General Public License for more details.&lt;br /&gt;
 .&lt;br /&gt;
 You should have received a copy of the GNU General Public License&lt;br /&gt;
 along with this program. If not, see &amp;lt;https://www.gnu.org/licenses/&amp;gt;&lt;br /&gt;
 .&lt;br /&gt;
 On Debian systems, the complete text of the GNU General&lt;br /&gt;
 Public License version 3 can be found in &amp;quot;/usr/share/common-licenses/GPL-3&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
License: LGPL-2.1+&lt;br /&gt;
 This library is free software; you can redistribute it and/or&lt;br /&gt;
 modify it under the terms of the GNU Lesser General Public&lt;br /&gt;
 License as published by the Free Software Foundation; either&lt;br /&gt;
 version 2.1 of the License, or (at your option) any later version.&lt;br /&gt;
 .&lt;br /&gt;
 This library is distributed in the hope that it will be useful,&lt;br /&gt;
 but WITHOUT ANY WARRANTY; without even the implied warranty of&lt;br /&gt;
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU&lt;br /&gt;
 Lesser General Public License for more details.&lt;br /&gt;
 .&lt;br /&gt;
 You should have received a copy of the GNU Lesser General Public License&lt;br /&gt;
 along with this library. If not, see &amp;lt;https://www.gnu.org/licenses/&amp;gt;&lt;br /&gt;
 .&lt;br /&gt;
 On Debian systems, the complete text of the GNU Lesser General&lt;br /&gt;
 Public License version 3 can be found in &amp;quot;/usr/share/common-licenses/LGPL-2.1&amp;quot;.&lt;br /&gt;
user@disp4360:/usr/share/doc$ &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## that&#039;s a big annoying, but I guess we can live with it&lt;br /&gt;
## they also apparently put a dot (.) on every double-newline in a single indented stanza. I guess that&#039;s to not break the syntax of &amp;quot;two newlines becomes a new stanaza&amp;quot;. So I&#039;ll adopt that for the CERN License snippet.&lt;br /&gt;
## I grepd all the &amp;quot;Files&amp;quot; lines in all the systems, and generated a reasonably complete list of all programming language source files&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Files:&lt;br /&gt;
 *.c *.cpp *.h *.hpp&lt;br /&gt;
 *.py *.pl *.go&lt;br /&gt;
 *.dtd&lt;br /&gt;
 *.html *.css *.js *.xml&lt;br /&gt;
Copyright:&lt;br /&gt;
 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
License: AGPL-3.0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## .dtd came up a few times. something related to gis, I think. I added a few more gis formats&lt;br /&gt;
## per https://docs.qgis.org/3.44/en/docs/user_manual/managing_data_source/supported_data.html&lt;br /&gt;
## and https://gis.stackexchange.com/questions/392708/list-of-data-file-formats-supported-in-qgis-including-read-write-support&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Files:&lt;br /&gt;
 *.c *.cpp *.h *.hpp&lt;br /&gt;
 *.py *.pl *.go&lt;br /&gt;
 *.qix *.dtd *.shp *.shz *.dbf *.shx *.prj *.kml&lt;br /&gt;
 *.html *.css *.js *.xml&lt;br /&gt;
Copyright:&lt;br /&gt;
 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
License: AGPL-3.0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## Another thing I can do is to check some syntax highlighers, which have some logic to auto-detect code syntax based on filename. That would be a great list of code-specific filenames&lt;br /&gt;
### here&#039;s the one we use as a wordpress plugin for eco-libre.org https://wordpress.org/plugins/syntaxhighlighter/&lt;br /&gt;
### code is here https://github.com/Automattic/syntaxhighlighter&lt;br /&gt;
### here&#039;s the block where they map languages to file extensions https://github.com/Automattic/syntaxhighlighter/blob/61fd26c64d019641db143e90e05b0eb9a4a57d62/syntaxhighlighter.php#L181-L246&lt;br /&gt;
### oh crap, those are aliases, not file extensions. maybe I should check something like notepad++ or vim&lt;br /&gt;
### we can get 694 file types from vim with this crazy command https://vi.stackexchange.com/a/14980&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
user@disp4360:/usr/share/vim/vim90$ find syntax ftplugin -iname &#039;*.vim&#039; -exec basename -s .vim {} + | sort -u | wc -l&lt;br /&gt;
694&lt;br /&gt;
user@disp4360:/usr/share/vim/vim90$ &lt;br /&gt;
&lt;br /&gt;
user@disp4360:/usr/share/vim/vim90$ find syntax ftplugin -iname &#039;*.vim&#039; -exec basename -s .vim {} + | sort -u | xargs&lt;br /&gt;
2html 8th a2ps a65 aap abap abaqus abc abel acedb ada aflex ahdl aidl alsaconf amiga aml ampl ant antlr apache apachestyle aptconf arch arduino art asciidoc asm asm68k asmh8300 asn aspperl aspvbs asterisk asteriskvm atlas autodoc autohotkey autoit automake ave avra awk ayacc b baan bash basic bc bdf bib bindzone bitbake blank bsdl bst btm bzl bzr c cabal cabalconfig cabalproject calendar catalog cdl cdrdaoconf cdrtoc cf cfg ch chaiscript change changelog chaskell chatito cheetah chicken chill chordpro cl clean clipper clojure cmake cmod cmusrc cobol coco colortest conaryrecipe conf config confini context context-data-context context-data-interfaces context-data-metafun context-data-tex cpp crm crontab cs csc csdl csh csp css cterm ctrlh cucumber cuda cupl cuplsim cvs cvsrc cweb cynlib cynpp d dart datascript dcd dcl debchangelog debcontrol debcopyright debsources def denyhosts dep3patch desc desktop dictconf dictdconf diff dircolors dirpager diva django dns dnsmasq docbk docbksgml docbkxml dockerfile dosbatch dosini dot doxygen dracula dsl dtd dtml dtrace dts dune dylan dylanintr dylanlid ecd edif editorconfig eiffel elf elinks elixir elm elmfilt erlang eruby esmtprc esqlc esterel eterm euphoria3 euphoria4 eviews exim expect exports falcon fan fasm fdcc fennel fetchmail fgl fish flexwiki focexec form forth fortran foxpro fpcmake framescript freebasic fstab fvwm fvwm2m4 gdb gdmo gdresource gdscript gdshader gedcom gemtext gift git gitattributes gitcommit gitconfig gitignore gitolite gitrebase gitsendemail gkrellmrc gnash gnuplot go godoc gp gpg gprof grads gretl groff groovy group grub gsp gtkrc gvpr gyp haml hamster hare haskell haste hastepreproc hb heex help help_ru hercules hex hgcommit hgcommitDiff hitest hlsplaylist hog hollywood hostconf hostsaccess html htmlcheetah htmldjango htmlm4 htmlos i3config ia64 ibasic icemenu icon idl idlang indent inform initex initng inittab ipfilter ishd iss ist j jal jam jargon java javacc javascript javascriptreact jess jgraph jovial jproperties json jsonc jsonnet jsp julia kconfig kivy kix krl kscript kwt lace latte lc ld ldapconf ldif less lex lftp lhaskell libao lifelines lilo limits liquid lisp lite litestep logcheck loginaccess logindefs logtalk lotos lout lpc lprolog lscript lsl lss lua lynx lyrics m3build m3quake m4 mail mailaliases mailcap make mallard man manconf manual maple markdown masm mason master matlab maxima mel mermaid meson messages mf mgl mgp mib mix mma mmix mmp modconf model modsim3 modula2 modula3 monk moo mp mplayerconf mrxvtrc msidl msmessages msql mupad murphi mush muttrc mysql n1ql named nanorc nasm nastran natural ncf neomuttrc netrc netrw nginx ninja nix nosyntax nqc nroff nsis obj objc objcpp obse ocaml occam octave omnimark opam openroad openscad openvpn opl ora pamconf pamenv papp pascal passwd pbtxt pcap pccts pdf perl pf pfmain php phtml pic pike pilrc pine pinfo plaintex pli plm plp plsql po pod poefilter poke postscr pov povini ppd ppwiz prescribe privoxy procmail progress prolog promela proto protocols ps1 ps1xml psf psl ptcap purifylog pyrex python python2 qb64 qf quake quarto r racc racket radiance raku raml ratpoison rc rcs rcslog readline rebol redif registry rego remind resolv reva rexx rhelp rib rmd rnc rng rnoweb robots routeros rpcgen rpl rrst rst rtf ruby rust samba sas sass sather sbt scala scdoc scheme scilab screen scss sd sdc sdl sed sendpr sensors services setserial sexplib sgml sgmldecl sgmllnx sh sicad sieve sil simula sinda sindacmp sindaout sisu skill sl slang slice slpconf slpreg slpspi slrnrc slrnsc sm smarty smcl smil smith sml snnsnet snnspat snnsres snobol4 solidity solution spec specman spice splint spup spyce sql sqlanywhere sqlforms sqlhana sqlinformix sqlj sqloracle sqr squid squirrel srec srt ssa sshconfig sshdconfig st stata stp strace structurizr sudoers svg svn swayconfig swift swiftgyb syncolor synload syntax sysctl systemd systemverilog tads tags tak takcmp takout tap tar taskdata taskedit tasm tcl tcsh template teraterm terminfo tex texinfo texmf text tf tidy tilde tli tmux toml tpp trasys treetop trustees tsalt tsscl tssgm tssop tt2 tt2html tt2js typescript typescriptcommon typescriptreact uc udevconf udevperm udevrules uil updatedb upstart upstreamdat upstreaminstalllog upstreamlog upstreamrpt usserverlog usw2kagtlog valgrind vb vdf vera verilog verilogams vgrindefs vhdl vim viminfo virata vmasm voscm vrml vroom vsejcl vue wast wdiff wdl web webmacro wget wget2 whitespace winbatch wml wsh wsml wvdial xbl xdefaults xf86conf xhtml xinetd xkb xmath xml xmodmap xpm xpm2 xquery xs xsd xslt xxd yacc yaml z8a zig zimbu zir zsh&lt;br /&gt;
user@disp4360:/usr/share/vim/vim90$ &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
### so I definitely don&#039;t want all of those. for example, .po files are not code.&lt;br /&gt;
## I decided to remove html and css from the list, as those are markup and not code. but js should remain.&lt;br /&gt;
## I reduced the vim list to the following&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
user@disp4360:~$ cat filetypes1.txt &lt;br /&gt;
autohotkey&lt;br /&gt;
automake&lt;br /&gt;
awk&lt;br /&gt;
bash&lt;br /&gt;
basic&lt;br /&gt;
cmake&lt;br /&gt;
cuda&lt;br /&gt;
d&lt;br /&gt;
erlang&lt;br /&gt;
eruby&lt;br /&gt;
haskell&lt;br /&gt;
j&lt;br /&gt;
java&lt;br /&gt;
javacc&lt;br /&gt;
javascript&lt;br /&gt;
javascriptreact&lt;br /&gt;
kivy&lt;br /&gt;
lisp&lt;br /&gt;
lua&lt;br /&gt;
make&lt;br /&gt;
perl&lt;br /&gt;
r&lt;br /&gt;
ruby&lt;br /&gt;
rust&lt;br /&gt;
sh&lt;br /&gt;
swift&lt;br /&gt;
tcl&lt;br /&gt;
typescript&lt;br /&gt;
vb&lt;br /&gt;
zsh&lt;br /&gt;
user@disp4360:~$ &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## fun fact, autohotkey was the first &amp;quot;language&amp;quot; I learned – which I used to script my windows computer to feed my fish and collect their pooped-out gold in some video game, wayy back when I was  kid &amp;amp; before I used Linux. It&#039;s a cool way to automate GUI macros on Windows (which is otherwise a PIA to automate, by (terrible) design.&lt;br /&gt;
## I merged this into our copyright file.  I also added asp.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Files:&lt;br /&gt;
 *.c *.cpp *.h *.hpp *.make *.automake *.cmake&lt;br /&gt;
 *.java *.javacc *.rust&lt;br /&gt;
 *.d *.j *.r&lt;br /&gt;
 *.sh *.bash *.zsh *.awk *.tcl&lt;br /&gt;
 *.py *.python *.python2 *.python3 *.pl *.perl *.kivy&lt;br /&gt;
 *.qix *.dtd *.shp *.shz *.dbf *.shx *.prj *.kml&lt;br /&gt;
 *.php *.js *.javascript *.typescript&lt;br /&gt;
 *.ruby *.eruby *.cuda *.erlang *.lisp *.lua *.haskell *.go&lt;br /&gt;
 *.autohotkey *.basic *.swift *.vb *.asp&lt;br /&gt;
Copyright:&lt;br /&gt;
 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
License: AGPL-3.0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## let&#039;s also add exceptions for the CERN-licensed files&lt;br /&gt;
## I hope we never use tools like AutoCAD, but it&#039;s likely that someone will design something in AutoCAD and copyleft it. Then we&#039;ll be able to use that in one of our projects, but where we redesign it in FreeCAD. In that case, we still might want to include the source AutoCAD DXF file in our repo, and license it properly (though, if that happens, we&#039;d probably need to update the copyright file to whatever license they use; unless they happen to use the same CERN strong license as us)&lt;br /&gt;
## I added scad. And .vue was one from vim.&lt;br /&gt;
## bibliocad lists wg, bim, skp, max, and 3ds https://www.bibliocad.com/&lt;br /&gt;
## I logged into the OSE wiki and checked all of the files that have been uploaded, and I added a few more: 3dm, fcmacro, ino, fzz, gto, blend, kicad_pcb, sh3d, pod, brd, sch, abp, dwb, cc, skb, sldrw, sldasm, pde&lt;br /&gt;
## note that I&#039;ve *not* put stp, gcode, stl, igs, wrl, wrz, etc files as CERN licensed (so they&#039;d be CC). I&#039;m not sure if that&#039;s the right thing or not.&lt;br /&gt;
### also dia, gan, mpp, mm, svg, jpg, png, jpeg, tiff, bmp, ai, idml, psd, mp4, mp3, webm, wav, kdenlive, xcf, doc, docx, ppt, pptx, xls, odt, ods, odg, numbers, tex, zip, rar, 7z, tar.gz, torrent, etc..&lt;br /&gt;
### there was also some ini config files. I read you can&#039;t license config files. so those will be CC.&lt;br /&gt;
# ok, here&#039;s what I got&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/&lt;br /&gt;
Source: https://github.com/Eco-Libre/life-line&lt;br /&gt;
Upstream-Name: Eco-Libre Life-Line&lt;br /&gt;
Upstream-Contact: https://eco-libre.org/contact&lt;br /&gt;
&lt;br /&gt;
Files:&lt;br /&gt;
 *&lt;br /&gt;
Copyright:&lt;br /&gt;
 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
License: CC-BY-SA-4.0&lt;br /&gt;
&lt;br /&gt;
Files:&lt;br /&gt;
 *.FCStd *.scad *.fzz *.blend *.kicad_pcb *.sh3d&lt;br /&gt;
 *.vue *.dxf *.dwg *.bim *.skp *.skb *.max *.3ds *.gto *.pod *.brd&lt;br /&gt;
 *.sch *.3dm *.dwb *.slddrw *.sldasm&lt;br /&gt;
Copyright:&lt;br /&gt;
 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
License: CERN-OHL-S-2.0&lt;br /&gt;
&lt;br /&gt;
Files:&lt;br /&gt;
 *.c *.cpp *.h *.hpp *.cc *.ino *.pde *.make *.automake *.cmake&lt;br /&gt;
 *.java *.javacc *.rust&lt;br /&gt;
 *.d *.j *.r&lt;br /&gt;
 *.sh *.bash *.zsh *.awk *.tcl&lt;br /&gt;
 *.py *.python *.python2 *.python3 *.FCMacro *.pl *.perl *.kivy&lt;br /&gt;
 *.qix *.dtd *.shp *.shz *.dbf *.shx *.prj *.kml&lt;br /&gt;
 *.php *.js *.javascript *.typescript&lt;br /&gt;
 *.ruby *.eruby *.cuda *.erlang *.lisp *.lua *.haskell *.go&lt;br /&gt;
 *.autohotkey *.basic *.swift *.vb *.asp&lt;br /&gt;
Copyright:&lt;br /&gt;
 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
License: AGPL-3.0&lt;br /&gt;
&lt;br /&gt;
License: AGPL-3.0&lt;br /&gt;
 https://www.gnu.org/licenses/agpl-3.0.html&lt;br /&gt;
 .&lt;br /&gt;
 This program is free software: you can redistribute it and/or modify&lt;br /&gt;
 it under the terms of the GNU Affero General Public License as&lt;br /&gt;
 published by the Free Software Foundation, version 3&lt;br /&gt;
 .&lt;br /&gt;
 This program is distributed in the hope that it will be useful,&lt;br /&gt;
 but WITHOUT ANY WARRANTY; without even the implied warranty of&lt;br /&gt;
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the&lt;br /&gt;
 GNU Affero General Public License for more details.&lt;br /&gt;
 .&lt;br /&gt;
 You should have received a copy of the GNU Affero General Public License&lt;br /&gt;
 along with this program.  If not, see &amp;lt;https://www.gnu.org/licenses/&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
License: CERN-OHL-S-2.0&lt;br /&gt;
 https://ohwr.org/cern_ohl_s_v2.txt&lt;br /&gt;
 .&lt;br /&gt;
 You may redistribute and modify this source and make products using &lt;br /&gt;
 it under the terms of the CERN-OHL-S v2 &lt;br /&gt;
 (https://ohwr.org/cern_ohl_s_v2.txt).&lt;br /&gt;
 .&lt;br /&gt;
 This source is distributed WITHOUT ANY EXPRESS OR IMPLIED WARRANTY, &lt;br /&gt;
 INCLUDING OF MERCHANTABILITY, SATISFACTORY QUALITY AND FITNESS FOR A &lt;br /&gt;
 PARTICULAR PURPOSE. Please see the CERN-OHL-S v2 for applicable &lt;br /&gt;
 conditions.&lt;br /&gt;
 .&lt;br /&gt;
 Source location: eco-libre.org/p/&lt;br /&gt;
 .&lt;br /&gt;
 As per CERN-OHL-S v2 section 4, should You produce hardware based on &lt;br /&gt;
 this source, You must where practicable and applicable maintain the &lt;br /&gt;
 Source Location visible (1) on the packaging of the hardware, (2) on &lt;br /&gt;
 the circuit board(s) via silkscreen or copper, (3) in any &lt;br /&gt;
 documentation, and (4) on other products you make using this source.&lt;br /&gt;
&lt;br /&gt;
License: CC-BY-SA-4.0&lt;br /&gt;
 http://creativecommons.org/licenses/by-sa/4.0/&lt;br /&gt;
 .&lt;br /&gt;
 Attribution-ShareAlike 4.0 International&lt;br /&gt;
 .&lt;br /&gt;
 =======================================================================&lt;br /&gt;
 .&lt;br /&gt;
 Creative Commons Corporation (&amp;quot;Creative Commons&amp;quot;) is not a law firm and&lt;br /&gt;
 does not provide legal services or legal advice. Distribution of&lt;br /&gt;
 Creative Commons public licenses does not create a lawyer-client or&lt;br /&gt;
 other relationship. Creative Commons makes its licenses and related&lt;br /&gt;
 information available on an &amp;quot;as-is&amp;quot; basis. Creative Commons gives no&lt;br /&gt;
 warranties regarding its licenses, any material licensed under their&lt;br /&gt;
 terms and conditions, or any related information. Creative Commons&lt;br /&gt;
 disclaims all liability for damages resulting from their use to the&lt;br /&gt;
 fullest extent possible.&lt;br /&gt;
 .&lt;br /&gt;
 Using Creative Commons Public Licenses&lt;br /&gt;
 .&lt;br /&gt;
 Creative Commons public licenses provide a standard set of terms and&lt;br /&gt;
 conditions that creators and other rights holders may use to share&lt;br /&gt;
 original works of authorship and other material subject to copyright&lt;br /&gt;
 and certain other rights specified in the public license below. The&lt;br /&gt;
 following considerations are for informational purposes only, are not&lt;br /&gt;
 exhaustive, and do not form part of our licenses.&lt;br /&gt;
 .&lt;br /&gt;
	  Considerations for licensors: Our public licenses are&lt;br /&gt;
	  intended for use by those authorized to give the public&lt;br /&gt;
	  permission to use material in ways otherwise restricted by&lt;br /&gt;
	  copyright and certain other rights. Our licenses are&lt;br /&gt;
	  irrevocable. Licensors should read and understand the terms&lt;br /&gt;
	  and conditions of the license they choose before applying it.&lt;br /&gt;
	  Licensors should also secure all rights necessary before&lt;br /&gt;
	  applying our licenses so that the public can reuse the&lt;br /&gt;
	  material as expected. Licensors should clearly mark any&lt;br /&gt;
	  material not subject to the license. This includes other CC-&lt;br /&gt;
	  licensed material, or material used under an exception or&lt;br /&gt;
	  limitation to copyright. More considerations for licensors:&lt;br /&gt;
	  wiki.creativecommons.org/Considerations_for_licensors&lt;br /&gt;
 .&lt;br /&gt;
	  Considerations for the public: By using one of our public&lt;br /&gt;
	  licenses, a licensor grants the public permission to use the&lt;br /&gt;
	  licensed material under specified terms and conditions. If&lt;br /&gt;
	  the licensor&#039;s permission is not necessary for any reason--for&lt;br /&gt;
	  example, because of any applicable exception or limitation to&lt;br /&gt;
	  copyright--then that use is not regulated by the license. Our&lt;br /&gt;
	  licenses grant only permissions under copyright and certain&lt;br /&gt;
	  other rights that a licensor has authority to grant. Use of&lt;br /&gt;
	  the licensed material may still be restricted for other&lt;br /&gt;
	  reasons, including because others have copyright or other&lt;br /&gt;
	  rights in the material. A licensor may make special requests,&lt;br /&gt;
	  such as asking that all changes be marked or described.&lt;br /&gt;
	  Although not required by our licenses, you are encouraged to&lt;br /&gt;
	  respect those requests where reasonable. More_considerations&lt;br /&gt;
	  for the public:&lt;br /&gt;
	  wiki.creativecommons.org/Considerations_for_licensees&lt;br /&gt;
 .&lt;br /&gt;
 =======================================================================&lt;br /&gt;
 .&lt;br /&gt;
 Creative Commons Attribution-ShareAlike 4.0 International Public&lt;br /&gt;
 License&lt;br /&gt;
 .&lt;br /&gt;
 By exercising the Licensed Rights (defined below), You accept and agree&lt;br /&gt;
 to be bound by the terms and conditions of this Creative Commons&lt;br /&gt;
 Attribution-ShareAlike 4.0 International Public License (&amp;quot;Public&lt;br /&gt;
 License&amp;quot;). To the extent this Public License may be interpreted as a&lt;br /&gt;
 contract, You are granted the Licensed Rights in consideration of Your&lt;br /&gt;
 acceptance of these terms and conditions, and the Licensor grants You&lt;br /&gt;
 such rights in consideration of benefits the Licensor receives from&lt;br /&gt;
 making the Licensed Material available under these terms and&lt;br /&gt;
 conditions.&lt;br /&gt;
 .&lt;br /&gt;
 .&lt;br /&gt;
 Section 1 -- Definitions.&lt;br /&gt;
 .&lt;br /&gt;
   a. Adapted Material means material subject to Copyright and Similar&lt;br /&gt;
	  Rights that is derived from or based upon the Licensed Material&lt;br /&gt;
	  and in which the Licensed Material is translated, altered,&lt;br /&gt;
	  arranged, transformed, or otherwise modified in a manner requiring&lt;br /&gt;
	  permission under the Copyright and Similar Rights held by the&lt;br /&gt;
	  Licensor. For purposes of this Public License, where the Licensed&lt;br /&gt;
	  Material is a musical work, performance, or sound recording,&lt;br /&gt;
	  Adapted Material is always produced where the Licensed Material is&lt;br /&gt;
	  synched in timed relation with a moving image.&lt;br /&gt;
 .&lt;br /&gt;
   b. Adapter&#039;s License means the license You apply to Your Copyright&lt;br /&gt;
	  and Similar Rights in Your contributions to Adapted Material in&lt;br /&gt;
	  accordance with the terms and conditions of this Public License.&lt;br /&gt;
 .&lt;br /&gt;
   c. BY-SA Compatible License means a license listed at&lt;br /&gt;
	  creativecommons.org/compatiblelicenses, approved by Creative&lt;br /&gt;
	  Commons as essentially the equivalent of this Public License.&lt;br /&gt;
 .&lt;br /&gt;
   d. Copyright and Similar Rights means copyright and/or similar rights&lt;br /&gt;
	  closely related to copyright including, without limitation,&lt;br /&gt;
	  performance, broadcast, sound recording, and Sui Generis Database&lt;br /&gt;
	  Rights, without regard to how the rights are labeled or&lt;br /&gt;
	  categorized. For purposes of this Public License, the rights&lt;br /&gt;
	  specified in Section 2(b)(1)-(2) are not Copyright and Similar&lt;br /&gt;
	  Rights.&lt;br /&gt;
 .&lt;br /&gt;
   e. Effective Technological Measures means those measures that, in the&lt;br /&gt;
	  absence of proper authority, may not be circumvented under laws&lt;br /&gt;
	  fulfilling obligations under Article 11 of the WIPO Copyright&lt;br /&gt;
	  Treaty adopted on December 20, 1996, and/or similar international&lt;br /&gt;
	  agreements.&lt;br /&gt;
 .&lt;br /&gt;
   f. Exceptions and Limitations means fair use, fair dealing, and/or&lt;br /&gt;
	  any other exception or limitation to Copyright and Similar Rights&lt;br /&gt;
	  that applies to Your use of the Licensed Material.&lt;br /&gt;
 .&lt;br /&gt;
   g. License Elements means the license attributes listed in the name&lt;br /&gt;
	  of a Creative Commons Public License. The License Elements of this&lt;br /&gt;
	  Public License are Attribution and ShareAlike.&lt;br /&gt;
 .&lt;br /&gt;
   h. Licensed Material means the artistic or literary work, database,&lt;br /&gt;
	  or other material to which the Licensor applied this Public&lt;br /&gt;
	  License.&lt;br /&gt;
 .&lt;br /&gt;
   i. Licensed Rights means the rights granted to You subject to the&lt;br /&gt;
	  terms and conditions of this Public License, which are limited to&lt;br /&gt;
	  all Copyright and Similar Rights that apply to Your use of the&lt;br /&gt;
	  Licensed Material and that the Licensor has authority to license.&lt;br /&gt;
 .&lt;br /&gt;
   j. Licensor means the individual(s) or entity(ies) granting rights&lt;br /&gt;
	  under this Public License.&lt;br /&gt;
 .&lt;br /&gt;
   k. Share means to provide material to the public by any means or&lt;br /&gt;
	  process that requires permission under the Licensed Rights, such&lt;br /&gt;
	  as reproduction, public display, public performance, distribution,&lt;br /&gt;
	  dissemination, communication, or importation, and to make material&lt;br /&gt;
	  available to the public including in ways that members of the&lt;br /&gt;
	  public may access the material from a place and at a time&lt;br /&gt;
	  individually chosen by them.&lt;br /&gt;
 .&lt;br /&gt;
   l. Sui Generis Database Rights means rights other than copyright&lt;br /&gt;
	  resulting from Directive 96/9/EC of the European Parliament and of&lt;br /&gt;
	  the Council of 11 March 1996 on the legal protection of databases,&lt;br /&gt;
	  as amended and/or succeeded, as well as other essentially&lt;br /&gt;
	  equivalent rights anywhere in the world.&lt;br /&gt;
 .&lt;br /&gt;
   m. You means the individual or entity exercising the Licensed Rights&lt;br /&gt;
	  under this Public License. Your has a corresponding meaning.&lt;br /&gt;
 .&lt;br /&gt;
 .&lt;br /&gt;
 Section 2 -- Scope.&lt;br /&gt;
 .&lt;br /&gt;
   a. License grant.&lt;br /&gt;
 .&lt;br /&gt;
		1. Subject to the terms and conditions of this Public License,&lt;br /&gt;
		   the Licensor hereby grants You a worldwide, royalty-free,&lt;br /&gt;
		   non-sublicensable, non-exclusive, irrevocable license to&lt;br /&gt;
		   exercise the Licensed Rights in the Licensed Material to:&lt;br /&gt;
 .&lt;br /&gt;
			 a. reproduce and Share the Licensed Material, in whole or&lt;br /&gt;
				in part; and&lt;br /&gt;
 .&lt;br /&gt;
			 b. produce, reproduce, and Share Adapted Material.&lt;br /&gt;
 .&lt;br /&gt;
		2. Exceptions and Limitations. For the avoidance of doubt, where&lt;br /&gt;
		   Exceptions and Limitations apply to Your use, this Public&lt;br /&gt;
		   License does not apply, and You do not need to comply with&lt;br /&gt;
		   its terms and conditions.&lt;br /&gt;
 .&lt;br /&gt;
		3. Term. The term of this Public License is specified in Section&lt;br /&gt;
		   6(a).&lt;br /&gt;
 .&lt;br /&gt;
		4. Media and formats; technical modifications allowed. The&lt;br /&gt;
		   Licensor authorizes You to exercise the Licensed Rights in&lt;br /&gt;
		   all media and formats whether now known or hereafter created,&lt;br /&gt;
		   and to make technical modifications necessary to do so. The&lt;br /&gt;
		   Licensor waives and/or agrees not to assert any right or&lt;br /&gt;
		   authority to forbid You from making technical modifications&lt;br /&gt;
		   necessary to exercise the Licensed Rights, including&lt;br /&gt;
		   technical modifications necessary to circumvent Effective&lt;br /&gt;
		   Technological Measures. For purposes of this Public License,&lt;br /&gt;
		   simply making modifications authorized by this Section 2(a)&lt;br /&gt;
		   (4) never produces Adapted Material.&lt;br /&gt;
 .&lt;br /&gt;
		5. Downstream recipients.&lt;br /&gt;
 .&lt;br /&gt;
			 a. Offer from the Licensor -- Licensed Material. Every&lt;br /&gt;
				recipient of the Licensed Material automatically&lt;br /&gt;
				receives an offer from the Licensor to exercise the&lt;br /&gt;
				Licensed Rights under the terms and conditions of this&lt;br /&gt;
				Public License.&lt;br /&gt;
 .&lt;br /&gt;
			 b. Additional offer from the Licensor -- Adapted Material.&lt;br /&gt;
				Every recipient of Adapted Material from You&lt;br /&gt;
				automatically receives an offer from the Licensor to&lt;br /&gt;
				exercise the Licensed Rights in the Adapted Material&lt;br /&gt;
				under the conditions of the Adapter&#039;s License You apply.&lt;br /&gt;
 .&lt;br /&gt;
			 c. No downstream restrictions. You may not offer or impose&lt;br /&gt;
				any additional or different terms or conditions on, or&lt;br /&gt;
				apply any Effective Technological Measures to, the&lt;br /&gt;
				Licensed Material if doing so restricts exercise of the&lt;br /&gt;
				Licensed Rights by any recipient of the Licensed&lt;br /&gt;
				Material.&lt;br /&gt;
 .&lt;br /&gt;
		6. No endorsement. Nothing in this Public License constitutes or&lt;br /&gt;
		   may be construed as permission to assert or imply that You&lt;br /&gt;
		   are, or that Your use of the Licensed Material is, connected&lt;br /&gt;
		   with, or sponsored, endorsed, or granted official status by,&lt;br /&gt;
		   the Licensor or others designated to receiv&lt;br /&gt;
&lt;br /&gt;
== 2026-04-23 ==&lt;br /&gt;
# I&#039;ve been thinking about chaning our licensing, to something like this&lt;br /&gt;
## All hardware designs are licened under CERN-OHL-S-2.0 &lt;br /&gt;
## All code is licened under AGPL-3.0&lt;br /&gt;
## Everything else (art, documentation, etc) are CC BY-SA&lt;br /&gt;
# here&#039;s the design rational for the cern license (the s means strongly reciprocal, which is what we want) https://gitlab.com/ohwr/project/cernohl/-/wikis/uploads/0be6f561d2b4a686c5765c74be32daf9/CERN_OHL_rationale.pdf&lt;br /&gt;
# apparently creative commons license aren&#039;t OSI approved — only because they don&#039;t work for sourcecode https://opensource.stackexchange.com/questions/5021/osi-approved-license-similar-to-cc-by-sa-4-0&lt;br /&gt;
## by CC BY-SA (without NC or ND) are recommended by OSHWA for things like art and docs https://oshwa.org/resources/sharing-best-practices/&lt;br /&gt;
## hah, the footer of the OSI website (opensource.org) says that the contents of the website are licened CC BY – even though it&#039;s not OSI approved. That&#039;s a good enough endorsement for me&lt;br /&gt;
# oh, I found a CERN Discourse forum https://forums.ohwr.org/c/cernohl/53&lt;br /&gt;
## I never did get a response from OSHWA from my toot about their recommended CLAs https://chaos.social/@ecolibre/116444933464052302&lt;br /&gt;
## da fuk. the &amp;quot;register&amp;quot; button redirects to gitlab?&lt;br /&gt;
### ugh, it&#039;s some SSO OAuth (OpenID Connect). I don&#039;t trust that&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
OHWR Forum is requesting access to your account on GitLab.com.&lt;br /&gt;
 Make sure you trust OHWR Forum before authorizing.&lt;br /&gt;
&lt;br /&gt;
Vasco Guita added this OAuth application over 1 year ago. You will be redirected to forums.ohwr.org after authorizing.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
### I decllined it, and chose to create a new github account that&#039;s specific to these oshwa forums, and nothing else&lt;br /&gt;
## ok I asked about the triple-licensing here https://forums.ohwr.org/t/possible-to-triple-license-cern-ohl-s-2-0-agpl-3-0-cc-by-sa/849882&lt;br /&gt;
## ugh, the license of the licnese itself is CC BY-ND 4.0 :( https://gitlab.com/ohwr/project/cernohl/-/wikis/faq#q-i-am-using-one-of-variants-of-cern-ohl-v2-what-is-the-licence-of-the-licence-text-itself&lt;br /&gt;
### I have no intention to change it, but it would be nice if we had the abilty to add, idk, footnotes or page numbers or any trivial change if we needed&lt;br /&gt;
# hmm...the faq on the cern license say that it&#039;s *not* compatible with GPL https://gitlab.com/ohwr/project/cernohl/-/wikis/faq#q-is-cern-ohl-s-compatible-with-gpl&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Q: Is CERN-OHL-S compatible with GPL?&lt;br /&gt;
A: No...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## so we can&#039;t just license everything under both, I guess. But we might be able to specify that the hardware designs are CERN and any software is GPL, still&lt;br /&gt;
# here&#039;s a good example usage; they have the full license in LICENSE file, but they also have a &amp;quot;License Notice&amp;quot; section of their README.mde with the following https://github.com/Foundation-Devices/passport-electronics&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
You may redistribute and modify this source and make products using it under the terms of the CERN-OHL-S v2 (https://ohwr.org/cern_ohl_s_v2.txt).&lt;br /&gt;
&lt;br /&gt;
This source is distributed WITHOUT ANY EXPRESS OR IMPLIED WARRANTY, INCLUDING OF MERCHANTABILITY, SATISFACTORY QUALITY AND FITNESS FOR A PARTICULAR PURPOSE. Please see the CERN-OHL-S v2 for applicable conditions.&lt;br /&gt;
&lt;br /&gt;
Source location: foundationdevices.com/passport-electronics&lt;br /&gt;
&lt;br /&gt;
As per CERN-OHL-S v2 section 4, should You produce hardware based on this source, You must where practicable and applicable maintain the Source Location visible (1) on the packaging of the hardware, (2) on the circuit board(s) via silkscreen or copper, (3) in any documentation, and (4) on other products you make using this source.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## I especially like the &amp;quot;Source location&amp;quot; part. We can use https://eco-libre.org/p (which is our &amp;quot;projects&amp;quot; page, indended to have one page per project – each with a *very* short summary, link to the *real* docs (currently on github, but that may change to codeberg – which is why we have this simple project page on our own infra), and a list of articles that are tagged with the project&#039;s name.&lt;br /&gt;
### currently we only have one example for life-line https://www.eco-libre.org/p/life-line/ – but, again, we&#039;d want to just link to eco-libre.org/p/ so we can have a boilerplate copy-pasta for all repo&#039;s README.md files&lt;br /&gt;
# there&#039;s a 6-page guide on how to use the CERN license here https://gitlab.com/ohwr/project/cernohl/-/wikis/uploads/cf37727497ca2b5295a7ab83a40fcf5a/cern_ohl_s_v2_user_guide.pdf&lt;br /&gt;
## cool, they do recommend using git. something I advocated-for (and never really got traction-on) at OSE&lt;br /&gt;
## interesting, they recommend we create a CHANGES file, because the license requires downstream modifications to be clearly documented. And by creating a blank file, it&#039;s where they should write their downstream changes.&lt;br /&gt;
## oh wow, they specifically mention FCStd files. So the writers of this license had FreeCAD in mind. Cool!&lt;br /&gt;
## they reference SPDX standard by resue.software https://reuse.software/tutorial/&lt;br /&gt;
### apparently this is a standardized way to indicate licenses of files that are machine-readable. Because, of course there is a standard for that.&lt;br /&gt;
### interesting, they advocate for a folder LICENSES instead of a file LICENSE. that would be better for us, if we&#039;re using three.&lt;br /&gt;
### ok, apparently SPDX is a distinct product from the Linux Foundation https://spdx.org/&lt;br /&gt;
### they say all of these are valid ways to declare copyright; I like it&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2019 Jane Doe &amp;lt;jane@example.com&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: © 2019 John Doe &amp;lt;john@example.com&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: Contributors to Example Project &amp;lt;https://project.example.com&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Alice Hack and (other) contributors to Project X &amp;lt;https://git.example.com/alicehack/projectx/CONTRIBUTORS.md&amp;gt;&lt;br /&gt;
SPDX-SnippetCopyrightText: (C) Example Cooperative &amp;lt;info@coop.example.com&amp;gt;&lt;br /&gt;
© Example Corporation &amp;lt;https://corp.example.com&amp;gt;&lt;br /&gt;
Copyright 2016, 2018-2019 Joe Anybody&lt;br /&gt;
Copyright (c) Alice, some rights reserved&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
#### I especially like line 4. I think I&#039;d use that. So it would be my name, all contributors, and a link to the Attribution section of the docs&lt;br /&gt;
### they also clarify that the copyright line can omit the year or include a range, the current year, or the original year. I always thought the first year that we did a single commit was best, and they had a link to an article that argues this too. I like that. https://matija.suklje.name/how-and-why-to-properly-write-copyright-statements-in-your-code&lt;br /&gt;
### they have a section on license compatiblity https://reuse.software/faq/#license-compatibility&lt;br /&gt;
#### apparently GPL isn&#039;t compatible with lots of license, because it says you can&#039;t add restrictions to it. that would make it incompatible with CC NC licenses, for example.&lt;br /&gt;
### god, both CERN and reuse.software want us to add comments or a cooresponding &#039;&amp;lt;file&amp;gt;.license&#039; file to *every* file to indicate its license. I was hoping instead that we could just put text that says &amp;quot;hardware files are CERN and software is GPL&amp;quot; but idk if that&#039;ll work :/&lt;br /&gt;
#### they have an &amp;quot;eaiser&amp;quot; method of defining a REUSE.toml file – but that&#039;s per-dir. So I&#039;d have to put all software in one dir and all CAD files in another dir. I guess that would work, but eventually someone will probably break it due to human error and volunteer chaos https://reuse.software/faq/#license-compatibility&lt;br /&gt;
## the faq had said they were going to apply to the FSF, but fsf.org has no mention of the CERN OHL&lt;br /&gt;
### this thread goes into some detail on why they &amp;quot;gave up&amp;quot; on GPL compatibility https://forums.ohwr.org/t/concerns-on-the-impact-of-ohl-on-gpl-community/848400&lt;br /&gt;
#### also some good history on the OHL from Javier Serrano at CERN. He said he gave a presentation on why using GPL was good for hardware, but after the Q&amp;amp;A he realized it wasn&#039;t. That was in 2015 at ORConf.&lt;br /&gt;
#### that thread linked to another cool open hardware forum. GOSH! https://forum.openhardware.science/&lt;br /&gt;
### here&#039;s the thread where CERN applied for OHL to be covered by OSI (which it got) https://lists.opensource.org/pipermail/license-review_lists.opensource.org/2020-June/004892.html&lt;br /&gt;
## back to the usage guide on CERN OHL, they also mention Debian&#039;s DEP5. DEP5 used to be supported by reuse.software, but it was deprecated&lt;br /&gt;
### DEP-5 is another machine-readable copyright/license standard, currently documented here https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/&lt;br /&gt;
#### man, I don&#039;t know which I like better: human-readable legaleze (well, readable only to a subset of superhumans) or machine-readable complexity&lt;br /&gt;
#### they use machine-readable license shortcodes, which are defined by spdx here https://spdx.org/licenses/&lt;br /&gt;
#### so we want&lt;br /&gt;
##### CERN-OHL-S-2.0&lt;br /&gt;
##### AGPL-3.0-or-later&lt;br /&gt;
##### CC-BY-SA-4.0&lt;br /&gt;
#### curiously, only two of the CC licenses are marked as &amp;quot;FSF libre&amp;quot; = CC-BY-4.0 and CC-BY-SA-4.0. None are &amp;quot;OSI Approved&amp;quot; (but see above because OSI uses them for docs!)&lt;br /&gt;
#### hah, cern is the opposite. their 2.0 OHLs are &amp;quot;OSI approved&amp;quot; but not &amp;quot;FSF libre&amp;quot;&lt;br /&gt;
#### the AGPL-3.0-or-later (or -only) is both &amp;quot;OSI approved&amp;quot; *and* &amp;quot;FSF libre&amp;quot; huh&lt;br /&gt;
### anyway, the DEP5 has a similar system to define regex-like globs of files under different licenses&lt;br /&gt;
### the end of the spec includes a &amp;quot;complex&amp;quot; example&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/&lt;br /&gt;
Source: https://www.example.com/code/venus&lt;br /&gt;
Upstream-Name: Planet Venus&lt;br /&gt;
Upstream-Contact: John Doe &amp;lt;jdoe@example.com&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Files:&lt;br /&gt;
 *&lt;br /&gt;
Copyright: 2008, John Doe &amp;lt;jdoe@example.com&amp;gt;&lt;br /&gt;
		   2007, Jane Smith &amp;lt;jsmith@example.org&amp;gt;&lt;br /&gt;
		   2007, Joe Average &amp;lt;joe@example.org&amp;gt;&lt;br /&gt;
		   2007, J. Random User &amp;lt;jr@users.example.com&amp;gt;&lt;br /&gt;
License: PSF-2&lt;br /&gt;
&lt;br /&gt;
Files:&lt;br /&gt;
 debian/*&lt;br /&gt;
Copyright: 2008, Dan Developer &amp;lt;dan@debian.example.com&amp;gt;&lt;br /&gt;
License: permissive&lt;br /&gt;
 Copying and distribution of this package, with or without modification,&lt;br /&gt;
 are permitted in any medium without royalty provided the copyright notice&lt;br /&gt;
 and this notice are preserved.&lt;br /&gt;
&lt;br /&gt;
Files:&lt;br /&gt;
 debian/patches/theme-diveintomark.patch&lt;br /&gt;
Copyright: 2008, Joe Hacker &amp;lt;hack@example.org&amp;gt;&lt;br /&gt;
License: GPL-2+&lt;br /&gt;
&lt;br /&gt;
Files:&lt;br /&gt;
 planet/vendor/compat_logging/*&lt;br /&gt;
Copyright: 2002, Mark Smith &amp;lt;msmith@example.org&amp;gt;&lt;br /&gt;
License: MIT&lt;br /&gt;
 [LICENSE TEXT]&lt;br /&gt;
&lt;br /&gt;
Files:&lt;br /&gt;
 planet/vendor/httplib2/*&lt;br /&gt;
Copyright: 2006, John Brown &amp;lt;brown@example.org&amp;gt;&lt;br /&gt;
License: MIT2&lt;br /&gt;
 Unspecified MIT style license.&lt;br /&gt;
&lt;br /&gt;
Files:&lt;br /&gt;
 planet/vendor/feedparser.py&lt;br /&gt;
Copyright: 2007, Mike Smith &amp;lt;mike@example.org&amp;gt;&lt;br /&gt;
License: PSF-2&lt;br /&gt;
&lt;br /&gt;
Files:&lt;br /&gt;
 planet/vendor/htmltmpl.py&lt;br /&gt;
Copyright: 2004, Thomas Brown &amp;lt;coder@example.org&amp;gt;&lt;br /&gt;
License: GPL-2+&lt;br /&gt;
&lt;br /&gt;
License: PSF-2&lt;br /&gt;
 [LICENSE TEXT]&lt;br /&gt;
&lt;br /&gt;
License: GPL-2+&lt;br /&gt;
 This program is free software; you can redistribute it and/or modify&lt;br /&gt;
 it under the terms of the GNU General Public License as published by&lt;br /&gt;
 the Free Software Foundation; either version 2 of the License, or&lt;br /&gt;
 (at your option) any later version.&lt;br /&gt;
 .&lt;br /&gt;
 This program is distributed in the hope that it will be useful,&lt;br /&gt;
 but WITHOUT ANY WARRANTY; without even the implied warranty of&lt;br /&gt;
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the&lt;br /&gt;
 GNU General Public License for more details.&lt;br /&gt;
 .&lt;br /&gt;
 You should have received a copy of the GNU General Public License&lt;br /&gt;
 along with this package; if not, see &amp;amp;lt;https://www.gnu.org/licenses/&amp;amp;gt;.&lt;br /&gt;
Comment:&lt;br /&gt;
 On Debian systems, the full text of the GNU General Public License&lt;br /&gt;
 version 2 can be found in the file &#039;/usr/share/common-licenses/GPL-2&#039;.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
### I was wondering if I could match all files of a given type at any depth, and it looks like this is accounted-for&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Patterns match pathnames that start at the root of the source tree. Thus, “Makefile.in” matches only the file at the root of the tree, but “*/Makefile.in” matches at any depth.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
### oh, it also says globs include slashes&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Only the wildcards * and ? apply; the former matches any number of characters (including none), the latter a single character. Both match slashes (/) and leading dots, unlike shell globs. The pattern *.in therefore matches any file whose name ends in .in anywhere in the source tree, not just at the top level.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
### so I could do something like&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Files:&lt;br /&gt;
 *&lt;br /&gt;
Copyright: 2023 Michael Altfield and Eco-Libre&lt;br /&gt;
License: CC-BY-SA-4.0&lt;br /&gt;
&lt;br /&gt;
Files:&lt;br /&gt;
 *.FCStd&lt;br /&gt;
Copyright: 2023 Michael Altfield and Eco-Libre&lt;br /&gt;
License: CERN-OHL-S-2.0&lt;br /&gt;
&lt;br /&gt;
Files:&lt;br /&gt;
 *.py&lt;br /&gt;
Copyright: 2023 Michael Altfield and Eco-Libre&lt;br /&gt;
License: AGPL-3.0-or-later&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
### but then it&#039;s not clear which overrrides the others&lt;br /&gt;
### oh, it says the last one that matches applies. So I did that perfect&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Multiple Files stanzas are allowed. The last stanza that matches a particular file applies to it. More general stanzas should therefore be given first, followed by more specific overrides.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
### honestly, that seems like the perfect happy-medium. It&#039;s less to maintain (or for maintainers to screw-up) than .license files everywhere (per REUSE). so it&#039;s more long-term durable. I just need to think of all possible file extensions for code that we&#039;ll use (it&#039;ll be more than just .py files, I&#039;m sure) and hardware files (stl would be CC, so that&#039;s caught by the first one but OpenSCAD could foreseably be one)&lt;br /&gt;
### hmm...I wonder how kdenlive files should be licensed. It&#039;s used to make media, but not the media itself.&lt;br /&gt;
### I asked my question on Stack Exchange too https://opensource.stackexchange.com/questions/15745/possible-to-triple-license-cern-ohl-s-2-0-agpl-3-0-cc-by-sa&lt;br /&gt;
### I also asked about kdenlive files here https://opensource.stackexchange.com/questions/15746/best-libre-license-for-kdenlive-files&lt;br /&gt;
## back to the usage guide of the CERN OHL. they do say you should use the SPDX headers, but that&#039;s REUSE – not DEP5&lt;br /&gt;
## they also recommend adding a &amp;quot;+&amp;quot; for &amp;quot;-or-later&amp;quot;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
CERN-OHL-S-2.0+&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## but I guess I have to place trust in FSF and/or CERN that they won&#039;t become evil and fuck-up future licenses to be not-libre. hmm. imagine if they got bought-out by John Deere.. Yeah, it&#039;s probably better to pin to the current version, and just do the copyright transfer in the CLA. Then we can control the license, and change it if we ever discover some new tech that necessitates changes to a new license&lt;br /&gt;
## for the copyright, they suggest &amp;quot;and others&amp;quot; – that might be better than just &amp;quot;and contributors to Eco-Libre&amp;quot;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Suggestion: You can optionally include a copyright notice to be printed&lt;br /&gt;
on the Product (remember you must keep intact any Notices in the source,&lt;br /&gt;
though). If you do, and your design includes part of other designs, you&lt;br /&gt;
should at least acknowledge the work is not all your own by using e.g.&lt;br /&gt;
Copyright c 2020 Sam Smith and others. In any case, do not include the&lt;br /&gt;
CERN logo.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# well we&#039;ll see if I got any answers on the forums&lt;br /&gt;
# in the meantime, I want to finish my CLA agreements&lt;br /&gt;
# yesterday I made a very slick looking libreoffice document with the individual CLA, but I realized today that it would be better if I could store it in reST and generate the PDF using sphinx or pandoc&lt;br /&gt;
## so, yeah, it would absolutely be better, but I really think I&#039;m letting perfect be the enemy of the good here. I&#039;m already spending weeks just to finish the ConfirmAccount extension on the wiki – just because I didn&#039;t have a Terms of Service, which sent me down this rabbit hole.&lt;br /&gt;
## I&#039;m going to make the reST -&amp;gt; PDF part a TODO. The libreoffice file is currently 64 KB and the PDF is 95 KB. I&#039;ll probably have maybe 4-10x that, as I add a corporate CLA and also some other less-important agreements for volunteers (I agree not to use AI. I agree to follow the CoC. Etc)&lt;br /&gt;
## oh wtf. I finished making the libreoffice for the corporate version of the contract (it&#039;s called &amp;quot;entity&amp;quot;) but the only difference in the file&#039;s contents is literally the subtitle&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Individual Contributor Exclusive License Agreement&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Entity Contributor Exclusive License Agreement&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## I also diff&#039;d the html version, just in-case it was a bug. same thing&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;h2 id=&amp;quot;tmp-subtitle&amp;quot;&amp;gt;&amp;lt;span id=&amp;quot;tmp-contributor-type&amp;quot;&amp;gt;Individual&amp;lt;/span&amp;gt; Contributor &amp;lt;span id=&amp;quot;tmp-contributor-exclusivity-1&amp;quot; class=&amp;quot;tmp-contributor-exclusivity-1&amp;quot;&amp;gt;Exclusive&amp;lt;/span&amp;gt; License Agreement&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;h2 id=&amp;quot;tmp-subtitle&amp;quot;&amp;gt;&amp;lt;span id=&amp;quot;tmp-contributor-type&amp;quot;&amp;gt;Entity&amp;lt;/span&amp;gt; Contributor &amp;lt;span id=&amp;quot;tmp-contributor-exclusivity-1&amp;quot; class=&amp;quot;tmp-contributor-exclusivity-1&amp;quot;&amp;gt;Exclusive&amp;lt;/span&amp;gt; License Agreement&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## maybe there would be differences if I chose a different patent option?&lt;br /&gt;
# idk, but I guess I only need one doc...&lt;br /&gt;
# TODO: finish the CLA docs in LibreOffice, put them on github somewhere, then do the other volunteer agreements, and then sign them myself&lt;br /&gt;
&lt;br /&gt;
== 2026-04-22 ==&lt;br /&gt;
# picking up where we left-off yesterday, we&#039;re looking at examples of open-source CLAs&lt;br /&gt;
# Ideally we want a simple one for the wiki an a strong legal one for future volunteers to sign&lt;br /&gt;
# OpenJS has these https://openjsf.org/cla&lt;br /&gt;
## indivdual https://images.prismic.io/openjsf/4c740999-4bd7-4f69-8c4a-b80db0919690_OpenJS-Foundation-ICLA-2020-09-23.pdf&lt;br /&gt;
## corporate https://images.prismic.io/openjsf/7f4dc103-c6cf-41ab-a2e8-42248e8a45f2_OpenJS-Foundation-CCLA-2020-09-23.pdf&lt;br /&gt;
## they say they were made by the Linux Foundation&#039;s EasyCLA tool https://easycla.lfx.linuxfoundation.org/#/&lt;br /&gt;
### oh, we saw that one yesterday; it&#039;s authalled :/&lt;br /&gt;
# CNCF (kubernetes) also uses EasyCLA, which is apparently integrated into GitHub https://github.com/kubernetes/community/blob/main/CLA.md&lt;br /&gt;
# OpenBMC has these two; no idea what the doc&#039;s license is &lt;br /&gt;
## individual https://github.com/kubernetes/community/blob/main/CLA.md&lt;br /&gt;
## corporate https://drive.google.com/file/d/1d-2M8ng_Dl2j1odsvZ8o1QHAdHB-pNSH/edit&lt;br /&gt;
# here&#039;s python&#039;s; the license is unsaid https://www.python.org/psf/contrib/&lt;br /&gt;
# Apollo&#039;s derived its from Apache&#039;s https://contribute.apollographql.com/&lt;br /&gt;
# here&#039;s microsoft&#039;s https://opensource.microsoft.com/cla/&lt;br /&gt;
## actual doc is here; it&#039;s CC0 https://opensource.microsoft.com/pdf/microsoft-contribution-license-agreement.pdf&lt;br /&gt;
## it&#039;s pretty software focused, but I like that it&#039;s licensed openly&lt;br /&gt;
## it&#039;s also only good for individual contributions&lt;br /&gt;
# here&#039;s a short &amp;amp; sweet one by musescore, but it&#039;s not clear how it&#039;s licensed https://musescore.org/en/cla&lt;br /&gt;
# here&#039;s openmediavault&#039;s https://www.openmediavault.org/contributoragreement.html&lt;br /&gt;
## doc is actually here; it&#039;s derived from apache&#039;s CLA https://www.openmediavault.org/wp-content/uploads/2013/12/oca.pdf&lt;br /&gt;
# the link to openstack (openinfra) was bad; looks like they replaced their CLA with the Linux Foundation&#039;s DOC https://www.openmediavault.org/wp-content/uploads/2013/12/oca.pdf&lt;br /&gt;
# puppet uses this CLA Assistant one, based on Apache&#039;s https://cla-assistant.io/puppetlabs/&lt;br /&gt;
# sangoma uses this one, also using CLA Assistant, but it doesn&#039;t mention apache https://web.archive.org/web/20230429235353/https://oss-cla.sangoma.com/asterisk/asterisk&lt;br /&gt;
# the W3C&#039;s looks pretty good, and specifc to them https://www.w3.org/community/about/process/cla/&lt;br /&gt;
## the license isn&#039;t explicilty stated, but the footer says it&#039;s website contents is licensed by, uh, their own &amp;quot;document license - 2023 version&amp;quot; https://www.w3.org/copyright/document-license-2023/&lt;br /&gt;
# here&#039;s one by zed; it&#039;s not clear how the text is licensed https://zed.dev/cla&lt;br /&gt;
# KDE announced theirs here https://ev.kde.org/2008/08/22/2008-08-22-fsfe-welcomes-kde-s-fiduciary-license-agreement/&lt;br /&gt;
## actual doc about the FLA is here https://ev.kde.org/rules/fla/&lt;br /&gt;
## actual doc is here&lt;br /&gt;
### individuals https://ev.kde.org/resources/FLA-2.0-individual.pdf&lt;br /&gt;
### companies https://ev.kde.org/resources/FLA-2.0-entity.pdf&lt;br /&gt;
## they seem pretty good, albeit they&#039;re very focused on software (not hardware)&lt;br /&gt;
## it says it&#039;s based on this https://contributoragreements.org/&lt;br /&gt;
### and that site&#039;s footer says its contents is CC BY-SA 4.0. Perfect.&lt;br /&gt;
## I went through their CLA Chooser generator/wizard https://contributoragreements.org/ca-cla-chooser/#&lt;br /&gt;
# that spat-out two, one for individual and one for corporate&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
	Fiduciary License Agreement 2.0&lt;br /&gt;
	based on the&lt;br /&gt;
	Individual Contributor Exclusive License Agreement&lt;br /&gt;
	(including the Traditional Patent License OPTION)&lt;br /&gt;
&lt;br /&gt;
	Thank you for your interest in contributing to Eco-Libre&#039;s ____________________ (&amp;quot;We&amp;quot; or &amp;quot;Us&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
	The purpose of this contributor agreement (&amp;quot;Agreement&amp;quot;) is to clarify and document the rights granted by contributors to Us. To make this document effective, please follow the instructions at ____________________.&lt;br /&gt;
	Preamble&lt;br /&gt;
&lt;br /&gt;
	Software is deeply embedded in all aspects of our lives and it is important that it empower, rather than restrict us. Free Software gives everybody the rights to use, understand, adapt and share software. These rights help support other fundamental freedoms like freedom of speech, press and privacy.&lt;br /&gt;
&lt;br /&gt;
	Development of Free Software can follow many patterns. In some cases whole development is handled by a sole programmer or a small group of people. But usually, the creation and maintenance of software is a complex process that requires the contribution of many individuals. This also affects who owns the rights to the software. In the latter case, rights in software are owned jointly by a great number of individuals.&lt;br /&gt;
&lt;br /&gt;
	To tackle this issue some projects require a full copyright assignment to be signed by all contributors. The problem with such assignments is that they often lack checks and balances that would protect the contributors from potential abuse of power from the new copyright holder.&lt;br /&gt;
&lt;br /&gt;
	FSFE’s Fiduciary License Agreement (FLA) was created by the Free Software Foundation Europe e.V. with just that in mind – to concentrate all deciding power within one entity and prevent fragmentation of rights on one hand, while on the other preventing that single entity from abusing its power. The main aim is to ensure that the software covered under the FLA will forever remain Free Software.&lt;br /&gt;
&lt;br /&gt;
	This process only serves for the transfer of economic rights. So-called moral rights (e.g. authors right to be identified as author) remain with the original author(s) and are inalienable.&lt;br /&gt;
	How to use this FLA&lt;br /&gt;
&lt;br /&gt;
	If You are an employee and have created the Contribution as part of your employment, You need to have Your employer approve this Agreement. If You do not own the Copyright in Your Contribution, any other author of the Contribution should also sign this. In any event, please contact Us at https://www.eco-libre.org/contact.&lt;br /&gt;
	Definitions&lt;br /&gt;
&lt;br /&gt;
	&amp;quot;You&amp;quot; means the individual Copyright owner who Submits a Contribution to Us; or&lt;br /&gt;
&lt;br /&gt;
	if the Copyright in the Contribution is held by a Legal Entity and the Contribution is being Submitted to Us on behalf of such Legal Entity, &amp;quot;You&amp;quot; means such Legal Entity.&lt;br /&gt;
&lt;br /&gt;
	&amp;quot;Contribution&amp;quot; means any original work of authorship, including any original modifications or additions to an existing work of authorship, Submitted for inclusion into Material by You to Us, in which you own the Copyright.&lt;br /&gt;
&lt;br /&gt;
	&amp;quot;Copyright&amp;quot; means all rights protecting works of authorship, including copyright, moral and neighboring rights, as appropriate, for the full term of their existence.&lt;br /&gt;
&lt;br /&gt;
	&amp;quot;Material&amp;quot; means the software and/or documentation of ____________________ that we make available to third parties.&lt;br /&gt;
&lt;br /&gt;
	&amp;quot;Submit&amp;quot; means any act by which a Contribution is transferred to Us by You by means of tangible or intangible media, including but not limited to electronic mailing lists, source code control systems, and issue tracking systems, but excluding any transfer that is conspicuously marked or otherwise designated in writing by You as &amp;quot;Not a Contribution.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
	&amp;quot;Documentation&amp;quot; means any non-software portion of a Contribution.&lt;br /&gt;
	License grant&lt;br /&gt;
	Copyright license to Us&lt;br /&gt;
&lt;br /&gt;
	Subject to the terms and conditions of this Agreement, You hereby grant to Us a worldwide, royalty-free, exclusive, perpetual and irrevocable (except as stated in Section &amp;quot;Term&amp;quot;) license, with the right to transfer an unlimited number of non-exclusive licenses or to grant sublicenses to third parties, under the Copyright covering the Contribution to use the Contribution by all means, including, but not limited to:&lt;br /&gt;
		publish the Contribution,&lt;br /&gt;
		modify the Contribution,&lt;br /&gt;
		prepare derivative works based upon or containing the Contribution and/or to combine the Contribution with other Materials,&lt;br /&gt;
		reproduce the Contribution in original or modified form,&lt;br /&gt;
		distribute, to make the Contribution available to the public, display and publicly perform the Contribution in original or modified form.&lt;br /&gt;
	Moral rights&lt;br /&gt;
&lt;br /&gt;
	Moral Rights remain unaffected to the extent they are recognized and not waivable by applicable law. Notwithstanding, You may add your name to the attribution mechanism customary used in the Materials you Contribute to, such as the header of the source code files of Your Contribution, and We will respect this attribution when using Your Contribution.&lt;br /&gt;
	Copyright license back to You&lt;br /&gt;
&lt;br /&gt;
	Upon such grant of rights to Us, We immediately grant to You a worldwide, royalty-free, non-exclusive, perpetual and irrevocable license, with the right to transfer an unlimited number of non-exclusive licenses or to grant sublicenses to third parties, under the Copyright covering the Contribution to use the Contribution by all means, including, but not limited to:&lt;br /&gt;
		publish the Contribution,&lt;br /&gt;
		modify the Contribution,&lt;br /&gt;
		prepare derivative works based upon or containing the Contribution and/or to combine the Contribution with other Materials,&lt;br /&gt;
		reproduce the Contribution in original or modified form,&lt;br /&gt;
		distribute, to make the Contribution available to the public, display and publicly perform the Contribution in original or modified form.&lt;br /&gt;
&lt;br /&gt;
	This license back is limited to the Contribution and does not provide any rights to the Material.&lt;br /&gt;
	Patents&lt;br /&gt;
	Patent license&lt;br /&gt;
&lt;br /&gt;
	Subject to the terms and conditions of this Agreement You hereby grant to Us and to recipients of Materials distributed by Us a worldwide, royalty-free, non-exclusive, perpetual and irrevocable (except as stated in Subsection &amp;quot;Revocation of patent license&amp;quot;) patent license, with the right to transfer an unlimited number of non-exclusive licenses or to grant sublicenses to third parties, to make, have made, use, sell, offer for sale, import and otherwise transfer the Contribution and the Contribution in combination with any Material (and portions of such combination). This license applies to all patents owned or controlled by You, whether already acquired or hereafter acquired, that would be infringed by making, having made, using, selling, offering for sale, importing or otherwise transferring of Your Contribution(s) alone or by combination of Your Contribution(s) with any Material.&lt;br /&gt;
	Revocation of patent license&lt;br /&gt;
&lt;br /&gt;
	You reserve the right to revoke the patent license stated in Subsection &amp;quot;Patent license&amp;quot; if We make any infringement claim that is targeted at your Contribution and not asserted for a Defensive Purpose. An assertion of claims of the Patents shall be considered for a &amp;quot;Defensive Purpose&amp;quot; if the claims are asserted against an entity that has filed, maintained, threatened, or voluntarily participated in a patent infringement lawsuit against Us or any of Our licensees.&lt;br /&gt;
	License obligations by Us&lt;br /&gt;
&lt;br /&gt;
	We may, but are under no obligation to, include the Contribution You Submitted to Us into the Material.&lt;br /&gt;
&lt;br /&gt;
	We agree to (sub)license the Contribution or any Materials containing, based on or derived from your Contribution under the terms of any licenses that qualify as [Free Software](https://www.gnu.org/philosophy/free-sw.html) as defined by the Free Software Foundation and at the same time qualify as [Open Source](https://opensource.org/osd) as defined by the Open Source Initiative. For clarification, should we make available any Material under a non-free or non-open license, we must make a version of such Material available under a free and open license too.&lt;br /&gt;
&lt;br /&gt;
	More specifically and in strict accordance with the above paragraph, we agree to (sub)license the Contribution or any Materials containing, based on or derived from the Contribution only under the terms of the following license(s) GPL-3.0, MIT (including any right to adopt any future version of a license if permitted), whereby any non-free or non-open licenses need to be listed as well.&lt;br /&gt;
&lt;br /&gt;
	We agree to license patents owned or controlled by You only to the extent necessary to (sub)license Your Contribution(s) and the combination of Your Contribution(s) with the Material under the terms of any licenses the Free Software Foundation classifies as Free Software licenses and which are approved by the Open Source Initiative as Open Source licenses..&lt;br /&gt;
	Disclaimer&lt;br /&gt;
	**We acknowledge that you provide the Contribution &amp;quot;as is&amp;quot;.** **More particularly, You disclaim all express or implied warranties including, without limitation, any implied warranty of satisfactory quality, fitness for a particular purpose and non-infringement. To the extent that any such warranties cannot be disclaimed, such warranty is limited in duration and extent to the minimum period and extent permitted by law.**&lt;br /&gt;
	Consequential damage waiver&lt;br /&gt;
&lt;br /&gt;
	**To the maximum extent permitted by applicable law, in no event will You or We be liable for any loss of profits, loss of anticipated savings, loss of data, indirect, special, incidental, consequential and exemplary damages arising out of this Agreement regardless of the legal or equitable theory (contract, tort or otherwise) upon which the claim is based.**&lt;br /&gt;
	Approximation of disclaimer and damage waiver&lt;br /&gt;
&lt;br /&gt;
	**If the disclaimer and damage waiver mentioned in Subsection &amp;quot;Disclaimer of warranty&amp;quot; and Section &amp;quot;Consequential damage waiver&amp;quot; cannot be given legal effect under applicable local law, reviewing courts shall apply local law that most closely approximates an absolute waiver of all civil or contractual liability in connection with the Contribution.**&lt;br /&gt;
	Term&lt;br /&gt;
&lt;br /&gt;
	This Agreement shall come into effect upon Your acceptance of the terms and conditions.&lt;br /&gt;
&lt;br /&gt;
	This Agreement shall apply for the term of the copyright and patents licensed here. However, You shall have the right to terminate the Agreement if We do not fulfill the obligations as set forth in Section &amp;quot;License obligations by Us&amp;quot;. Such termination must be made in writing.&lt;br /&gt;
&lt;br /&gt;
	In the event of a termination of this Agreement Sections &amp;quot;Disclaimer&amp;quot;, &amp;quot;Term&amp;quot; and &amp;quot;Miscellaneous&amp;quot; shall survive such termination and shall remain in full force thereafter. For the avoidance of doubt, Free and Open Source Software (sub)licenses that have already been granted for Contributions at the date of the termination shall remain in full force after the termination of this Agreement.&lt;br /&gt;
	Miscellaneous&lt;br /&gt;
&lt;br /&gt;
	This Agreement and all disputes, claims, actions, suits or other proceedings arising out of this agreement or relating in any way to it shall be governed by the laws of Ecuador excluding its private international law provisions.&lt;br /&gt;
&lt;br /&gt;
	This Agreement sets out the entire agreement between You and Us for Your Contributions to Us and overrides all other agreements or understandings.&lt;br /&gt;
&lt;br /&gt;
	In case of Your death, this agreement shall continue with Your heirs. In case of more than one heir, all heirs must exercise their rights through a commonly authorized person.&lt;br /&gt;
&lt;br /&gt;
	If any provision of this Agreement is found void and unenforceable, such provision will be replaced to the extent possible with a provision that comes closest to the meaning of the original provision and that is enforceable. The terms and conditions set forth in this Agreement shall apply notwithstanding any failure of essential purpose of this Agreement or any limited remedy to the maximum extent possible under law.&lt;br /&gt;
&lt;br /&gt;
	You agree to notify Us of any facts or circumstances of which you become aware that would make Your representations under this Agreement inaccurate in any respect.&lt;br /&gt;
	You&lt;br /&gt;
	Date:	&lt;br /&gt;
	Name:	&lt;br /&gt;
	Title:	&lt;br /&gt;
	Address:	&lt;br /&gt;
	Us&lt;br /&gt;
	Date:	&lt;br /&gt;
	Name:	&lt;br /&gt;
	Title:	&lt;br /&gt;
	Address:	&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
	Fiduciary License Agreement 2.0&lt;br /&gt;
	based on the&lt;br /&gt;
	Entity Contributor Exclusive License Agreement&lt;br /&gt;
	(including the Traditional Patent License OPTION)&lt;br /&gt;
&lt;br /&gt;
	Thank you for your interest in contributing to Eco-Libre&#039;s ____________________ (&amp;quot;We&amp;quot; or &amp;quot;Us&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
	The purpose of this contributor agreement (&amp;quot;Agreement&amp;quot;) is to clarify and document the rights granted by contributors to Us. To make this document effective, please follow the instructions at ____________________.&lt;br /&gt;
	Preamble&lt;br /&gt;
&lt;br /&gt;
	Software is deeply embedded in all aspects of our lives and it is important that it empower, rather than restrict us. Free Software gives everybody the rights to use, understand, adapt and share software. These rights help support other fundamental freedoms like freedom of speech, press and privacy.&lt;br /&gt;
&lt;br /&gt;
	Development of Free Software can follow many patterns. In some cases whole development is handled by a sole programmer or a small group of people. But usually, the creation and maintenance of software is a complex process that requires the contribution of many individuals. This also affects who owns the rights to the software. In the latter case, rights in software are owned jointly by a great number of individuals.&lt;br /&gt;
&lt;br /&gt;
	To tackle this issue some projects require a full copyright assignment to be signed by all contributors. The problem with such assignments is that they often lack checks and balances that would protect the contributors from potential abuse of power from the new copyright holder.&lt;br /&gt;
&lt;br /&gt;
	FSFE’s Fiduciary License Agreement (FLA) was created by the Free Software Foundation Europe e.V. with just that in mind – to concentrate all deciding power within one entity and prevent fragmentation of rights on one hand, while on the other preventing that single entity from abusing its power. The main aim is to ensure that the software covered under the FLA will forever remain Free Software.&lt;br /&gt;
&lt;br /&gt;
	This process only serves for the transfer of economic rights. So-called moral rights (e.g. authors right to be identified as author) remain with the original author(s) and are inalienable.&lt;br /&gt;
	How to use this FLA&lt;br /&gt;
&lt;br /&gt;
	If You are an employee and have created the Contribution as part of your employment, You need to have Your employer approve this Agreement. If You do not own the Copyright in Your Contribution, any other author of the Contribution should also sign this. In any event, please contact Us at https://www.eco-libre.org/contact.&lt;br /&gt;
	Definitions&lt;br /&gt;
&lt;br /&gt;
	&amp;quot;You&amp;quot; means the individual Copyright owner who Submits a Contribution to Us; or&lt;br /&gt;
&lt;br /&gt;
	if the Copyright in the Contribution is held by a Legal Entity and the Contribution is being Submitted to Us on behalf of such Legal Entity, &amp;quot;You&amp;quot; means such Legal Entity.&lt;br /&gt;
&lt;br /&gt;
	&amp;quot;Contribution&amp;quot; means any original work of authorship, including any original modifications or additions to an existing work of authorship, Submitted for inclusion into Material by You to Us, in which you own the Copyright.&lt;br /&gt;
&lt;br /&gt;
	&amp;quot;Copyright&amp;quot; means all rights protecting works of authorship, including copyright, moral and neighboring rights, as appropriate, for the full term of their existence.&lt;br /&gt;
&lt;br /&gt;
	&amp;quot;Material&amp;quot; means the software and/or documentation of ____________________ that we make available to third parties.&lt;br /&gt;
&lt;br /&gt;
	&amp;quot;Submit&amp;quot; means any act by which a Contribution is transferred to Us by You by means of tangible or intangible media, including but not limited to electronic mailing lists, source code control systems, and issue tracking systems, but excluding any transfer that is conspicuously marked or otherwise designated in writing by You as &amp;quot;Not a Contribution.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
	&amp;quot;Documentation&amp;quot; means any non-software portion of a Contribution.&lt;br /&gt;
	License grant&lt;br /&gt;
	Copyright license to Us&lt;br /&gt;
&lt;br /&gt;
	Subject to the terms and conditions of this Agreement, You hereby grant to Us a worldwide, royalty-free, exclusive, perpetual and irrevocable (except as stated in Section &amp;quot;Term&amp;quot;) license, with the right to transfer an unlimited number of non-exclusive licenses or to grant sublicenses to third parties, under the Copyright covering the Contribution to use the Contribution by all means, including, but not limited to:&lt;br /&gt;
		publish the Contribution,&lt;br /&gt;
		modify the Contribution,&lt;br /&gt;
		prepare derivative works based upon or containing the Contribution and/or to combine the Contribution with other Materials,&lt;br /&gt;
		reproduce the Contribution in original or modified form,&lt;br /&gt;
		distribute, to make the Contribution available to the public, display and publicly perform the Contribution in original or modified form.&lt;br /&gt;
	Moral rights&lt;br /&gt;
&lt;br /&gt;
	Moral Rights remain unaffected to the extent they are recognized and not waivable by applicable law. Notwithstanding, You may add your name to the attribution mechanism customary used in the Materials you Contribute to, such as the header of the source code files of Your Contribution, and We will respect this attribution when using Your Contribution.&lt;br /&gt;
	Copyright license back to You&lt;br /&gt;
&lt;br /&gt;
	Upon such grant of rights to Us, We immediately grant to You a worldwide, royalty-free, non-exclusive, perpetual and irrevocable license, with the right to transfer an unlimited number of non-exclusive licenses or to grant sublicenses to third parties, under the Copyright covering the Contribution to use the Contribution by all means, including, but not limited to:&lt;br /&gt;
		publish the Contribution,&lt;br /&gt;
		modify the Contribution,&lt;br /&gt;
		prepare derivative works based upon or containing the Contribution and/or to combine the Contribution with other Materials,&lt;br /&gt;
		reproduce the Contribution in original or modified form,&lt;br /&gt;
		distribute, to make the Contribution available to the public, display and publicly perform the Contribution in original or modified form.&lt;br /&gt;
&lt;br /&gt;
	This license back is limited to the Contribution and does not provide any rights to the Material.&lt;br /&gt;
	Patents&lt;br /&gt;
	Patent license&lt;br /&gt;
&lt;br /&gt;
	Subject to the terms and conditions of this Agreement You hereby grant to Us and to recipients of Materials distributed by Us a worldwide, royalty-free, non-exclusive, perpetual and irrevocable (except as stated in Subsection &amp;quot;Revocation of patent license&amp;quot;) patent license, with the right to transfer an unlimited number of non-exclusive licenses or to grant sublicenses to third parties, to make, have made, use, sell, offer for sale, import and otherwise transfer the Contribution and the Contribution in combination with any Material (and portions of such combination). This license applies to all patents owned or controlled by You, whether already acquired or hereafter acquired, that would be infringed by making, having made, using, selling, offering for sale, importing or otherwise transferring of Your Contribution(s) alone or by combination of Your Contribution(s) with any Material.&lt;br /&gt;
	Revocation of patent license&lt;br /&gt;
&lt;br /&gt;
	You reserve the right to revoke the patent license stated in Subsection &amp;quot;Patent license&amp;quot; if We make any infringement claim that is targeted at your Contribution and not asserted for a Defensive Purpose. An assertion of claims of the Patents shall be considered for a &amp;quot;Defensive Purpose&amp;quot; if the claims are asserted against an entity that has filed, maintained, threatened, or voluntarily participated in a patent infringement lawsuit against Us or any of Our licensees.&lt;br /&gt;
	License obligations by Us&lt;br /&gt;
&lt;br /&gt;
	We may, but are under no obligation to, include the Contribution You Submitted to Us into the Material.&lt;br /&gt;
&lt;br /&gt;
	We agree to (sub)license the Contribution or any Materials containing, based on or derived from your Contribution under the terms of any licenses that qualify as [Free Software](https://www.gnu.org/philosophy/free-sw.html) as defined by the Free Software Foundation and at the same time qualify as [Open Source](https://opensource.org/osd) as defined by the Open Source Initiative. For clarification, should we make available any Material under a non-free or non-open license, we must make a version of such Material available under a free and open license too.&lt;br /&gt;
&lt;br /&gt;
	More specifically and in strict accordance with the above paragraph, we agree to (sub)license the Contribution or any Materials containing, based on or derived from the Contribution only under the terms of the following license(s) GPL-3.0, MIT (including any right to adopt any future version of a license if permitted), whereby any non-free or non-open licenses need to be listed as well.&lt;br /&gt;
&lt;br /&gt;
	We agree to license patents owned or controlled by You only to the extent necessary to (sub)license Your Contribution(s) and the combination of Your Contribution(s) with the Material under the terms of any licenses the Free Software Foundation classifies as Free Software licenses and which are approved by the Open Source Initiative as Open Source licenses..&lt;br /&gt;
	Disclaimer&lt;br /&gt;
	**We acknowledge that you provide the Contribution &amp;quot;as is&amp;quot;.** **More particularly, You disclaim all express or implied warranties including, without limitation, any implied warranty of satisfactory quality, fitness for a particular purpose and non-infringement. To the extent that any such warranties cannot be disclaimed, such warranty is limited in duration and extent to the minimum period and extent permitted by law.**&lt;br /&gt;
	Consequential damage waiver&lt;br /&gt;
&lt;br /&gt;
	**To the maximum extent permitted by applicable law, in no event will You or We be liable for any loss of profits, loss of anticipated savings, loss of data, indirect, special, incidental, consequential and exemplary damages arising out of this Agreement regardless of the legal or equitable theory (contract, tort or otherwise) upon which the claim is based.**&lt;br /&gt;
	Approximation of disclaimer and damage waiver&lt;br /&gt;
&lt;br /&gt;
	**If the disclaimer and damage waiver mentioned in Subsection &amp;quot;Disclaimer of warranty&amp;quot; and Section &amp;quot;Consequential damage waiver&amp;quot; cannot be given legal effect under applicable local law, reviewing courts shall apply local law that most closely approximates an absolute waiver of all civil or contractual liability in connection with the Contribution.**&lt;br /&gt;
	Term&lt;br /&gt;
&lt;br /&gt;
	This Agreement shall come into effect upon Your acceptance of the terms and conditions.&lt;br /&gt;
&lt;br /&gt;
	This Agreement shall apply for the term of the copyright and patents licensed here. However, You shall have the right to terminate the Agreement if We do not fulfill the obligations as set forth in Section &amp;quot;License obligations by Us&amp;quot;. Such termination must be made in writing.&lt;br /&gt;
&lt;br /&gt;
	In the event of a termination of this Agreement Sections &amp;quot;Disclaimer&amp;quot;, &amp;quot;Term&amp;quot; and &amp;quot;Miscellaneous&amp;quot; shall survive such termination and shall remain in full force thereafter. For the avoidance of doubt, Free and Open Source Software (sub)licenses that have already been granted for Contributions at the date of the termination shall remain in full force after the termination of this Agreement.&lt;br /&gt;
	Miscellaneous&lt;br /&gt;
&lt;br /&gt;
	This Agreement and all disputes, claims, actions, suits or other proceedings arising out of this agreement or relating in any way to it shall be governed by the laws of Ecuador excluding its private international law provisions.&lt;br /&gt;
&lt;br /&gt;
	This Agreement sets out the entire agreement between You and Us for Your Contributions to Us and overrides all other agreements or understandings.&lt;br /&gt;
&lt;br /&gt;
	In case of Your death, this agreement shall continue with Your heirs. In case of more than one heir, all heirs must exercise their rights through a commonly authorized person.&lt;br /&gt;
&lt;br /&gt;
	If any provision of this Agreement is found void and unenforceable, such provision will be replaced to the extent possible with a provision that comes closest to the meaning of the original provision and that is enforceable. The terms and conditions set forth in this Agreement shall apply notwithstanding any failure of essential purpose of this Agreement or any limited remedy to the maximum extent possible under law.&lt;br /&gt;
&lt;br /&gt;
	You agree to notify Us of any facts or circumstances of which you become aware that would make Your representations under this Agreement inaccurate in any respect.&lt;br /&gt;
	You&lt;br /&gt;
	Date:	&lt;br /&gt;
	Name:	&lt;br /&gt;
	Title:	&lt;br /&gt;
	Address:	&lt;br /&gt;
	Us&lt;br /&gt;
	Date:	&lt;br /&gt;
	Name:	&lt;br /&gt;
	Title:	&lt;br /&gt;
	Address:	&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## the generator didn&#039;t let me choose &amp;quot;CC BY-SA&amp;quot; as one of the licnese, so I chose &amp;quot;MIT&amp;quot; so we could find/replace it later&lt;br /&gt;
# oh, if I change the first page&#039;s option to &amp;quot;let me do what I want&amp;quot; then the second page has an option to include CC BY-SA. that changed it to:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	Contributor Agreement&lt;br /&gt;
	Individual Contributor Exclusive License Agreement&lt;br /&gt;
	(including the Traditional Patent License OPTION)&lt;br /&gt;
&lt;br /&gt;
	Thank you for your interest in contributing to Eco-Libre&#039;s ____________________ (&amp;quot;We&amp;quot; or &amp;quot;Us&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
	The purpose of this contributor agreement (&amp;quot;Agreement&amp;quot;) is to clarify and document the rights granted by contributors to Us. To make this document effective, please follow the instructions at ____________________.&lt;br /&gt;
	How to use this Contributor Agreement&lt;br /&gt;
&lt;br /&gt;
	If You are an employee and have created the Contribution as part of your employment, You need to have Your employer approve this Agreement. If You do not own the Copyright in Your Contribution, any other author of the Contribution should also sign this. In any event, please contact Us at https://www.eco-libre.org/contact.&lt;br /&gt;
	Definitions&lt;br /&gt;
&lt;br /&gt;
	&amp;quot;You&amp;quot; means the individual Copyright owner who Submits a Contribution to Us; or&lt;br /&gt;
&lt;br /&gt;
	if the Copyright in the Contribution is held by a Legal Entity and the Contribution is being Submitted to Us on behalf of such Legal Entity, &amp;quot;You&amp;quot; means such Legal Entity.&lt;br /&gt;
&lt;br /&gt;
	&amp;quot;Contribution&amp;quot; means any original work of authorship, including any original modifications or additions to an existing work of authorship, Submitted for inclusion into Material by You to Us, in which you own the Copyright.&lt;br /&gt;
&lt;br /&gt;
	&amp;quot;Copyright&amp;quot; means all rights protecting works of authorship, including copyright, moral and neighboring rights, as appropriate, for the full term of their existence.&lt;br /&gt;
&lt;br /&gt;
	&amp;quot;Material&amp;quot; means the software and/or documentation of ____________________ that we make available to third parties.&lt;br /&gt;
&lt;br /&gt;
	&amp;quot;Submit&amp;quot; means any act by which a Contribution is transferred to Us by You by means of tangible or intangible media, including but not limited to electronic mailing lists, source code control systems, and issue tracking systems, but excluding any transfer that is conspicuously marked or otherwise designated in writing by You as &amp;quot;Not a Contribution.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
	&amp;quot;Documentation&amp;quot; means any non-software portion of a Contribution.&lt;br /&gt;
	License grant&lt;br /&gt;
	Copyright license to Us&lt;br /&gt;
&lt;br /&gt;
	Subject to the terms and conditions of this Agreement, You hereby grant to Us a worldwide, royalty-free, exclusive, perpetual and irrevocable (except as stated in Section &amp;quot;Term&amp;quot;) license, with the right to transfer an unlimited number of non-exclusive licenses or to grant sublicenses to third parties, under the Copyright covering the Contribution to use the Contribution by all means, including, but not limited to:&lt;br /&gt;
		publish the Contribution,&lt;br /&gt;
		modify the Contribution,&lt;br /&gt;
		prepare derivative works based upon or containing the Contribution and/or to combine the Contribution with other Materials,&lt;br /&gt;
		reproduce the Contribution in original or modified form,&lt;br /&gt;
		distribute, to make the Contribution available to the public, display and publicly perform the Contribution in original or modified form.&lt;br /&gt;
	Moral rights&lt;br /&gt;
&lt;br /&gt;
	Moral Rights remain unaffected to the extent they are recognized and not waivable by applicable law. Notwithstanding, You may add your name to the attribution mechanism customary used in the Materials you Contribute to, such as the header of the source code files of Your Contribution, and We will respect this attribution when using Your Contribution.&lt;br /&gt;
	Copyright license back to You&lt;br /&gt;
&lt;br /&gt;
	Upon such grant of rights to Us, We immediately grant to You a worldwide, royalty-free, non-exclusive, perpetual and irrevocable license, with the right to transfer an unlimited number of non-exclusive licenses or to grant sublicenses to third parties, under the Copyright covering the Contribution to use the Contribution by all means, including, but not limited to:&lt;br /&gt;
		publish the Contribution,&lt;br /&gt;
		modify the Contribution,&lt;br /&gt;
		prepare derivative works based upon or containing the Contribution and/or to combine the Contribution with other Materials,&lt;br /&gt;
		reproduce the Contribution in original or modified form,&lt;br /&gt;
		distribute, to make the Contribution available to the public, display and publicly perform the Contribution in original or modified form.&lt;br /&gt;
&lt;br /&gt;
	This license back is limited to the Contribution and does not provide any rights to the Material.&lt;br /&gt;
	Patents&lt;br /&gt;
	Patent license&lt;br /&gt;
&lt;br /&gt;
	Subject to the terms and conditions of this Agreement You hereby grant to Us and to recipients of Materials distributed by Us a worldwide, royalty-free, non-exclusive, perpetual and irrevocable (except as stated in Subsection &amp;quot;Revocation of patent license&amp;quot;) patent license, with the right to transfer an unlimited number of non-exclusive licenses or to grant sublicenses to third parties, to make, have made, use, sell, offer for sale, import and otherwise transfer the Contribution and the Contribution in combination with any Material (and portions of such combination). This license applies to all patents owned or controlled by You, whether already acquired or hereafter acquired, that would be infringed by making, having made, using, selling, offering for sale, importing or otherwise transferring of Your Contribution(s) alone or by combination of Your Contribution(s) with any Material.&lt;br /&gt;
	Revocation of patent license&lt;br /&gt;
&lt;br /&gt;
	You reserve the right to revoke the patent license stated in Subsection &amp;quot;Patent license&amp;quot; if We make any infringement claim that is targeted at your Contribution and not asserted for a Defensive Purpose. An assertion of claims of the Patents shall be considered for a &amp;quot;Defensive Purpose&amp;quot; if the claims are asserted against an entity that has filed, maintained, threatened, or voluntarily participated in a patent infringement lawsuit against Us or any of Our licensees.&lt;br /&gt;
	License obligations by Us&lt;br /&gt;
&lt;br /&gt;
	We may, but are under no obligation to, include the Contribution You Submitted to Us into the Material.&lt;br /&gt;
&lt;br /&gt;
	We agree to license the Contribution only under the terms of the following license(s) GPL-3.0 (including any right to adopt any future version of a license if permitted), whereby any non-free or non-open licenses need to be listed as well.&lt;br /&gt;
&lt;br /&gt;
	In addition, We may use the following licenses for Documentation in the Contribution: CC-BY-SA-4.0 (including any right to adopt any future version of a license).&lt;br /&gt;
&lt;br /&gt;
	We agree to license patents owned or controlled by You only to the extent necessary to (sub)license Your Contribution(s) and the combination of Your Contribution(s) with the Material under the terms of the following GPL-3.0 license(s).&lt;br /&gt;
	Disclaimer&lt;br /&gt;
	**We acknowledge that you provide the Contribution &amp;quot;as is&amp;quot;.** **More particularly, You disclaim all express or implied warranties including, without limitation, any implied warranty of satisfactory quality, fitness for a particular purpose and non-infringement. To the extent that any such warranties cannot be disclaimed, such warranty is limited in duration and extent to the minimum period and extent permitted by law.**&lt;br /&gt;
	Consequential damage waiver&lt;br /&gt;
&lt;br /&gt;
	**To the maximum extent permitted by applicable law, in no event will You or We be liable for any loss of profits, loss of anticipated savings, loss of data, indirect, special, incidental, consequential and exemplary damages arising out of this Agreement regardless of the legal or equitable theory (contract, tort or otherwise) upon which the claim is based.**&lt;br /&gt;
	Approximation of disclaimer and damage waiver&lt;br /&gt;
&lt;br /&gt;
	**If the disclaimer and damage waiver mentioned in Subsection &amp;quot;Disclaimer of warranty&amp;quot; and Section &amp;quot;Consequential damage waiver&amp;quot; cannot be given legal effect under applicable local law, reviewing courts shall apply local law that most closely approximates an absolute waiver of all civil or contractual liability in connection with the Contribution.**&lt;br /&gt;
	Term&lt;br /&gt;
&lt;br /&gt;
	This Agreement shall come into effect upon Your acceptance of the terms and conditions.&lt;br /&gt;
&lt;br /&gt;
	This Agreement shall apply for the term of the copyright and patents licensed here. However, You shall have the right to terminate the Agreement if We do not fulfill the obligations as set forth in Section &amp;quot;License obligations by Us&amp;quot;. Such termination must be made in writing.&lt;br /&gt;
&lt;br /&gt;
	In the event of a termination of this Agreement Sections &amp;quot;Disclaimer&amp;quot;, &amp;quot;Term&amp;quot; and &amp;quot;Miscellaneous&amp;quot; shall survive such termination and shall remain in full force thereafter. For the avoidance of doubt, Free and Open Source Software (sub)licenses that have already been granted for Contributions at the date of the termination shall remain in full force after the termination of this Agreement.&lt;br /&gt;
	Miscellaneous&lt;br /&gt;
&lt;br /&gt;
	This Agreement and all disputes, claims, actions, suits or other proceedings arising out of this agreement or relating in any way to it shall be governed by the laws of Ecuador excluding its private international law provisions.&lt;br /&gt;
&lt;br /&gt;
	This Agreement sets out the entire agreement between You and Us for Your Contributions to Us and overrides all other agreements or understandings.&lt;br /&gt;
&lt;br /&gt;
	In case of Your death, this agreement shall continue with Your heirs. In case of more than one heir, all heirs must exercise their rights through a commonly authorized person.&lt;br /&gt;
&lt;br /&gt;
	If any provision of this Agreement is found void and unenforceable, such provision will be replaced to the extent possible with a provision that comes closest to the meaning of the original provision and that is enforceable. The terms and conditions set forth in this Agreement shall apply notwithstanding any failure of essential purpose of this Agreement or any limited remedy to the maximum extent possible under law.&lt;br /&gt;
&lt;br /&gt;
	You agree to notify Us of any facts or circumstances of which you become aware that would make Your representations under this Agreement inaccurate in any respect.&lt;br /&gt;
	You&lt;br /&gt;
	Date:	&lt;br /&gt;
	Name:	&lt;br /&gt;
	Title:	&lt;br /&gt;
	Address:	&lt;br /&gt;
	Us&lt;br /&gt;
	Date:	&lt;br /&gt;
	Name:	&lt;br /&gt;
	Title:	&lt;br /&gt;
	Address:	&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
	Contributor Agreement&lt;br /&gt;
	Entity Contributor Exclusive License Agreement&lt;br /&gt;
	(including the Traditional Patent License OPTION)&lt;br /&gt;
&lt;br /&gt;
	Thank you for your interest in contributing to Eco-Libre&#039;s ____________________ (&amp;quot;We&amp;quot; or &amp;quot;Us&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
	The purpose of this contributor agreement (&amp;quot;Agreement&amp;quot;) is to clarify and document the rights granted by contributors to Us. To make this document effective, please follow the instructions at ____________________.&lt;br /&gt;
	How to use this Contributor Agreement&lt;br /&gt;
&lt;br /&gt;
	If You are an employee and have created the Contribution as part of your employment, You need to have Your employer approve this Agreement. If You do not own the Copyright in Your Contribution, any other author of the Contribution should also sign this. In any event, please contact Us at https://www.eco-libre.org/contact.&lt;br /&gt;
	Definitions&lt;br /&gt;
&lt;br /&gt;
	&amp;quot;You&amp;quot; means the individual Copyright owner who Submits a Contribution to Us; or&lt;br /&gt;
&lt;br /&gt;
	if the Copyright in the Contribution is held by a Legal Entity and the Contribution is being Submitted to Us on behalf of such Legal Entity, &amp;quot;You&amp;quot; means such Legal Entity.&lt;br /&gt;
&lt;br /&gt;
	&amp;quot;Contribution&amp;quot; means any original work of authorship, including any original modifications or additions to an existing work of authorship, Submitted for inclusion into Material by You to Us, in which you own the Copyright.&lt;br /&gt;
&lt;br /&gt;
	&amp;quot;Copyright&amp;quot; means all rights protecting works of authorship, including copyright, moral and neighboring rights, as appropriate, for the full term of their existence.&lt;br /&gt;
&lt;br /&gt;
	&amp;quot;Material&amp;quot; means the software and/or documentation of ____________________ that we make available to third parties.&lt;br /&gt;
&lt;br /&gt;
	&amp;quot;Submit&amp;quot; means any act by which a Contribution is transferred to Us by You by means of tangible or intangible media, including but not limited to electronic mailing lists, source code control systems, and issue tracking systems, but excluding any transfer that is conspicuously marked or otherwise designated in writing by You as &amp;quot;Not a Contribution.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
	&amp;quot;Documentation&amp;quot; means any non-software portion of a Contribution.&lt;br /&gt;
	License grant&lt;br /&gt;
	Copyright license to Us&lt;br /&gt;
&lt;br /&gt;
	Subject to the terms and conditions of this Agreement, You hereby grant to Us a worldwide, royalty-free, exclusive, perpetual and irrevocable (except as stated in Section &amp;quot;Term&amp;quot;) license, with the right to transfer an unlimited number of non-exclusive licenses or to grant sublicenses to third parties, under the Copyright covering the Contribution to use the Contribution by all means, including, but not limited to:&lt;br /&gt;
		publish the Contribution,&lt;br /&gt;
		modify the Contribution,&lt;br /&gt;
		prepare derivative works based upon or containing the Contribution and/or to combine the Contribution with other Materials,&lt;br /&gt;
		reproduce the Contribution in original or modified form,&lt;br /&gt;
		distribute, to make the Contribution available to the public, display and publicly perform the Contribution in original or modified form.&lt;br /&gt;
	Moral rights&lt;br /&gt;
&lt;br /&gt;
	Moral Rights remain unaffected to the extent they are recognized and not waivable by applicable law. Notwithstanding, You may add your name to the attribution mechanism customary used in the Materials you Contribute to, such as the header of the source code files of Your Contribution, and We will respect this attribution when using Your Contribution.&lt;br /&gt;
	Copyright license back to You&lt;br /&gt;
&lt;br /&gt;
	Upon such grant of rights to Us, We immediately grant to You a worldwide, royalty-free, non-exclusive, perpetual and irrevocable license, with the right to transfer an unlimited number of non-exclusive licenses or to grant sublicenses to third parties, under the Copyright covering the Contribution to use the Contribution by all means, including, but not limited to:&lt;br /&gt;
		publish the Contribution,&lt;br /&gt;
		modify the Contribution,&lt;br /&gt;
		prepare derivative works based upon or containing the Contribution and/or to combine the Contribution with other Materials,&lt;br /&gt;
		reproduce the Contribution in original or modified form,&lt;br /&gt;
		distribute, to make the Contribution available to the public, display and publicly perform the Contribution in original or modified form.&lt;br /&gt;
&lt;br /&gt;
	This license back is limited to the Contribution and does not provide any rights to the Material.&lt;br /&gt;
	Patents&lt;br /&gt;
	Patent license&lt;br /&gt;
&lt;br /&gt;
	Subject to the terms and conditions of this Agreement You hereby grant to Us and to recipients of Materials distributed by Us a worldwide, royalty-free, non-exclusive, perpetual and irrevocable (except as stated in Subsection &amp;quot;Revocation of patent license&amp;quot;) patent license, with the right to transfer an unlimited number of non-exclusive licenses or to grant sublicenses to third parties, to make, have made, use, sell, offer for sale, import and otherwise transfer the Contribution and the Contribution in combination with any Material (and portions of such combination). This license applies to all patents owned or controlled by You, whether already acquired or hereafter acquired, that would be infringed by making, having made, using, selling, offering for sale, importing or otherwise transferring of Your Contribution(s) alone or by combination of Your Contribution(s) with any Material.&lt;br /&gt;
	Revocation of patent license&lt;br /&gt;
&lt;br /&gt;
	You reserve the right to revoke the patent license stated in Subsection &amp;quot;Patent license&amp;quot; if We make any infringement claim that is targeted at your Contribution and not asserted for a Defensive Purpose. An assertion of claims of the Patents shall be considered for a &amp;quot;Defensive Purpose&amp;quot; if the claims are asserted against an entity that has filed, maintained, threatened, or voluntarily participated in a patent infringement lawsuit against Us or any of Our licensees.&lt;br /&gt;
	License obligations by Us&lt;br /&gt;
&lt;br /&gt;
	We may, but are under no obligation to, include the Contribution You Submitted to Us into the Material.&lt;br /&gt;
&lt;br /&gt;
	We agree to license the Contribution only under the terms of the following license(s) GPL-3.0 (including any right to adopt any future version of a license if permitted), whereby any non-free or non-open licenses need to be listed as well.&lt;br /&gt;
&lt;br /&gt;
	In addition, We may use the following licenses for Documentation in the Contribution: CC-BY-SA-4.0 (including any right to adopt any future version of a license).&lt;br /&gt;
&lt;br /&gt;
	We agree to license patents owned or controlled by You only to the extent necessary to (sub)license Your Contribution(s) and the combination of Your Contribution(s) with the Material under the terms of the following GPL-3.0 license(s).&lt;br /&gt;
	Disclaimer&lt;br /&gt;
	**We acknowledge that you provide the Contribution &amp;quot;as is&amp;quot;.** **More particularly, You disclaim all express or implied warranties including, without limitation, any implied warranty of satisfactory quality, fitness for a particular purpose and non-infringement. To the extent that any such warranties cannot be disclaimed, such warranty is limited in duration and extent to the minimum period and extent permitted by law.**&lt;br /&gt;
	Consequential damage waiver&lt;br /&gt;
&lt;br /&gt;
	**To the maximum extent permitted by applicable law, in no event will You or We be liable for any loss of profits, loss of anticipated savings, loss of data, indirect, special, incidental, consequential and exemplary damages arising out of this Agreement regardless of the legal or equitable theory (contract, tort or otherwise) upon which the claim is based.**&lt;br /&gt;
	Approximation of disclaimer and damage waiver&lt;br /&gt;
&lt;br /&gt;
	**If the disclaimer and damage waiver mentioned in Subsection &amp;quot;Disclaimer of warranty&amp;quot; and Section &amp;quot;Consequential damage waiver&amp;quot; cannot be given legal effect under applicable local law, reviewing courts shall apply local law that most closely approximates an absolute waiver of all civil or contractual liability in connection with the Contribution.**&lt;br /&gt;
	Term&lt;br /&gt;
&lt;br /&gt;
	This Agreement shall come into effect upon Your acceptance of the terms and conditions.&lt;br /&gt;
&lt;br /&gt;
	This Agreement shall apply for the term of the copyright and patents licensed here. However, You shall have the right to terminate the Agreement if We do not fulfill the obligations as set forth in Section &amp;quot;License obligations by Us&amp;quot;. Such termination must be made in writing.&lt;br /&gt;
&lt;br /&gt;
	In the event of a termination of this Agreement Sections &amp;quot;Disclaimer&amp;quot;, &amp;quot;Term&amp;quot; and &amp;quot;Miscellaneous&amp;quot; shall survive such termination and shall remain in full force thereafter. For the avoidance of doubt, Free and Open Source Software (sub)licenses that have already been granted for Contributions at the date of the termination shall remain in full force after the termination of this Agreement.&lt;br /&gt;
	Miscellaneous&lt;br /&gt;
&lt;br /&gt;
	This Agreement and all disputes, claims, actions, suits or other proceedings arising out of this agreement or relating in any way to it shall be governed by the laws of Ecuador excluding its private international law provisions.&lt;br /&gt;
&lt;br /&gt;
	This Agreement sets out the entire agreement between You and Us for Your Contributions to Us and overrides all other agreements or understandings.&lt;br /&gt;
&lt;br /&gt;
	In case of Your death, this agreement shall continue with Your heirs. In case of more than one heir, all heirs must exercise their rights through a commonly authorized person.&lt;br /&gt;
&lt;br /&gt;
	If any provision of this Agreement is found void and unenforceable, such provision will be replaced to the extent possible with a provision that comes closest to the meaning of the original provision and that is enforceable. The terms and conditions set forth in this Agreement shall apply notwithstanding any failure of essential purpose of this Agreement or any limited remedy to the maximum extent possible under law.&lt;br /&gt;
&lt;br /&gt;
	You agree to notify Us of any facts or circumstances of which you become aware that would make Your representations under this Agreement inaccurate in any respect.&lt;br /&gt;
	You&lt;br /&gt;
	Date:	&lt;br /&gt;
	Name:	&lt;br /&gt;
	Title:	&lt;br /&gt;
	Address:	&lt;br /&gt;
	Us&lt;br /&gt;
	Date:	&lt;br /&gt;
	Name:	&lt;br /&gt;
	Title:	&lt;br /&gt;
	Address:	&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# well, I&#039;m still not sure what to use. In the meantime, I went ahead and updated the wiki ToS to include an unaltered version of the Linux Foundation&#039;s DCO https://wiki.eco-libre.org/wiki/Eco-Libre:Terms_of_Service&lt;br /&gt;
## I also added a section on the license, because the DCO (which I can&#039;t edit) referes to &amp;quot;the open source license indicated in the file&amp;quot;&lt;br /&gt;
## alright, that&#039;s a placeholder. I&#039;ll wait to see if we get a response from the home automation folks and/or the OSHWA.&lt;br /&gt;
# oh, TIL that OSE *does* use CERN OHL-S-2.0 for hardware files https://wiki.opensourceecology.org/wiki/OSE_License_for_Distributive_Economics&lt;br /&gt;
## but their wiki is a mess. it says dual-licensed under the GNU Free Documentation License and CC BY-SA on this page https://wiki.opensourceecology.org/wiki/Media-wiki:Copyright&lt;br /&gt;
## while this page says just CC BY-SA for wiki and design files, CERN OHL-S-2.0 for hardware files, and GPL v3 for code https://wiki.opensourceecology.org/wiki/OSE_License_for_Distributive_Economics&lt;br /&gt;
## there&#039;s a section on CAs, which just says that we need a paper with NAME OF PERSON and SPECIFIED DATE https://wiki.opensourceecology.org/wiki/OSE_License_for_Distributive_Economics&lt;br /&gt;
## looks like they started working on a &amp;quot;distributed enterprise license&amp;quot; – but I can&#039;t find anything but a sketch outline&lt;br /&gt;
### https://wiki.opensourceecology.org/wiki/OSE_License_for_Distributive_Enterprise&lt;br /&gt;
### https://wiki.opensourceecology.org/wiki/OSE_License_for_Distributive_Economics_-_Requirements&lt;br /&gt;
## ah ha! apparently Marcin&#039;s legal advisor volunteer person suggested https://contributoragreements.org per https://wiki.opensourceecology.org/wiki/Contributor_Agreement&lt;br /&gt;
# alright, I think I&#039;ll do one of the contributoragreements.org developed above. I&#039;ll draft it into a nice-looking odt -&amp;gt; pdf and upload it to opensign. then we&#039;ll be ready to accept volunteer contributions to our repos &amp;amp; wiki, like, very legally sound &lt;br /&gt;
&lt;br /&gt;
== 2026-04-21 ==&lt;br /&gt;
# I published and did the social media marketing for our announcement that we&#039;re accepting tax-deductable donations via raft today https://www.eco-libre.org/raft-2026/&lt;br /&gt;
# I, again, was unable to post to our X account.&lt;br /&gt;
## even though I enter the correct password, they demand an OTP sent to the email address used when the account was registered&lt;br /&gt;
## I guess they fired all the ex-twitter engineers with a brain, because they can&#039;t see that their emails are bouncing?&lt;br /&gt;
## I, maybe the 3rd or 4th time, told them that tutanota deleted our email address. And asked them to update the email address to one @eco-libre.org, which is pretty easy for a junior engineer to authenticate, since it&#039;s literally the domain assoaciated with our account. Auth done. QED. Here&#039;s their response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Reply above this line.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Hello,&lt;br /&gt;
&lt;br /&gt;
We=E2=80=99re writing to let you know that we=E2=80=99re unable to verify y=&lt;br /&gt;
ou as the account owner. We know this is disappointing to hear, but we can=&lt;br /&gt;
=E2=80=99t assist you further with accessing your account.&lt;br /&gt;
&lt;br /&gt;
If you know which email address or phone number is associated with the acco=&lt;br /&gt;
unt, and you no longer have access to that email or connected phone number,=&lt;br /&gt;
 please contact your service provider for assistance.&lt;br /&gt;
&lt;br /&gt;
For privacy reasons, we can=E2=80=99t provide any information about this ac=&lt;br /&gt;
count=E2=80=99s registered email address or phone number&lt;br /&gt;
&lt;br /&gt;
We understand it=E2=80=99s frustrating to get locked out of an account, but=&lt;br /&gt;
 we have these policies to protect accounts and private data. We appreciate=&lt;br /&gt;
 your understanding.&lt;br /&gt;
&lt;br /&gt;
You=E2=80=99re more than welcome to create a new account to get back onto X=&lt;br /&gt;
.&lt;br /&gt;
&lt;br /&gt;
Please do not respond to this email as replies to this account are not moni=&lt;br /&gt;
tored.&lt;br /&gt;
&lt;br /&gt;
Thanks,&lt;br /&gt;
X Support&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## So, fuck X. This is why we shouldn&#039;t use corporate, non-federated social media.&lt;br /&gt;
## oh, and I was also unable to log into reddit. Similar issue. I get this, just for a GET on /login – before they even asked me for creds!&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
You&#039;ve been blocked by network security.&lt;br /&gt;
If you think you&#039;ve been blocked by mistake, file a ticket below and we&#039;ll look into it.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# again, this is why we use better non-corportate social media. Now on lemmy!&lt;br /&gt;
## https://chaos.social/@ecolibre/116443354810130299&lt;br /&gt;
## https://slrpnk.net/post/36851013&lt;br /&gt;
# woah, mastodon has a new link under the post that says &amp;quot;More from Eco-Libre Team&amp;quot; which links here https://mastodon.social/@eco-libre@www.eco-libre.org&lt;br /&gt;
## that&#039;s, uhh, our wordpress site&#039;s ActivityPub plugins&#039; actor! The one that I couldn&#039;t finish setting-up due to the 5xx error (see previous log entries)&lt;br /&gt;
## so i guess it&#039;s working under defaults&lt;br /&gt;
## as I found before, it doesn&#039;t show previous content until after you subscribe, so the page on mastodon doesn&#039;t even show today&#039;s post :(&lt;br /&gt;
## I&#039;m thinking the best way to use this is to not really advertise wordpress as an endpoint. But, rather, to just setup our other federated-service-x-native account to subscribe and auto-boost our wordpress posts. That way we don&#039;t even have to login to mastodon or lemmy or whatever else. We can just automate the distribution from wordpress via ActivityPub to all our other federated social media accounts.&lt;br /&gt;
## anyway, I subscribed to @eco-libre@www.eco-libre.org from my personal mastodon account and our eco-libre mastodon account. let&#039;s see what that looks like over time.&lt;br /&gt;
# I logged-into our raft (private) discourse to ask if they have a mastodon account https://raft.talk/t/following-raft-on-the-fediverse/45/1&lt;br /&gt;
## I also followd-up with a thread in which I asked about a vector logo. Nathan (founder) said they don&#039;t have one, so I spent about an hour generating a few different decent-looking vectors from the png using inkscape&#039;s Trace Bitmap tool, and shared it – so others can have it in the future https://raft.talk/t/raft-logo-vector-svg/31/3&lt;br /&gt;
## I also realized that I had started (but not finished) asking the community for advice on how to get volunteers from &amp;quot;volutneer social year&amp;quot; programs like the Freiwilliges Soziales Jahr in Germany or the European Solidarity Corps or the US Peace Corps. So I finished that https://raft.talk/t/getting-state-sponsored-volunteers-voluntary-social-year/46&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Does anyone have experience here in getting volunteers via State-sponsored programs, like the US Peace Core, Germany&#039;s Voluntary Social Year (Freiwilliges Soziales Jahr), or the EU Solidarity Corps?&lt;br /&gt;
&lt;br /&gt;
 * https://en.wikipedia.org/wiki/Voluntary_social_year&lt;br /&gt;
 * https://en.wikipedia.org/wiki/European_Solidarity_Corps&lt;br /&gt;
&lt;br /&gt;
I&#039;ve met a *lot* of Germans (and one person from Liechtenstein!) who took their [gap year](https://en.wikipedia.org/wiki/Gap_year) off to go abroad and help some cool non-profit.&lt;br /&gt;
&lt;br /&gt;
Our project&#039;s mission is to develop and document [open-source appropriate technology](https://en.wikipedia.org/wiki/Open-source_appropriate_technology) to enfranchise sustainable communities&#039; human rights. And we need volunteers!&lt;br /&gt;
&lt;br /&gt;
I&#039;m wondering if anyone else here has experience satisfying the requirements of such orgs, so that we can get listed in their &amp;quot;directory of cool nonprofits abroad&amp;quot; that their want-to-be-volunteers will see (and can apply-to).&lt;br /&gt;
&lt;br /&gt;
I imagine that one key requirement is met by us being able to provide Raft&#039;s IRS Determination Letter. What else do we need to do? Where do we apply?&lt;br /&gt;
&lt;br /&gt;
Can anyone with experience provide tips (or a link to a guide?) on how to get volunteers abroad doing a &amp;quot;voluntary social year&amp;quot;?&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# ...&lt;br /&gt;
# back to Terms of Use, which is where we left-off on the wiki&#039;s config of ConfirmAccount extension&lt;br /&gt;
## honestly, we probably should write a ToS for all volunteers, which extends beyond just the wiki&lt;br /&gt;
## I have already drafted (not yet published) some agreements for volunteers, but we haven&#039;t had any in-person volunteers that required us to use it&lt;br /&gt;
## so, I guess, we need distinct agreements for people who volunteer remotely vs volunteer in-person&lt;br /&gt;
## in any case, even in-person volunteers are going to start remotely &amp;gt;99% of the time, so we should probably figure out some system for them to &amp;quot;sign a document&amp;quot; such that a copy gets sent to them and stored with us&lt;br /&gt;
## the first thing that comes to the top of my head is copyleft. We need folks to agree that all of their contributions to Eco-Libre will be copyleft under dual license of CC BY-SA and GNU GPL.&lt;br /&gt;
## can I find some libre service that&#039;s like docusign for this? https://alternativeto.net/software/docusign/&lt;br /&gt;
### DocuSeal https://www.docuseal.com&lt;br /&gt;
#### + free cloud account (limited to 10 field types and 10 requests emails per month)&lt;br /&gt;
#### + self-hostable https://github.com/docusealco/docuseal&lt;br /&gt;
#### - docker https://www.docuseal.com/install&lt;br /&gt;
#### - even self -hosted solution has usage limits without buying a license https://www.docuseal.com/pricing&lt;br /&gt;
### OpenSign https://www.opensignlabs.com&lt;br /&gt;
#### + free cloud account (limited to 14 field types)&lt;br /&gt;
#### + self hostable https://www.docuseal.com&lt;br /&gt;
#### - docker https://docs.opensignlabs.com/docs/category/docker&lt;br /&gt;
#### + self-hosted doesn&#039;t appear to have any restrictions&lt;br /&gt;
### Documenso https://docs.opensignlabs.com/docs/category/docker&lt;br /&gt;
#### + free cloud account (limited to 5 documents per month) https://documenso.com/pricing&lt;br /&gt;
#### + self-hostable https://github.com/documenso/documenso&lt;br /&gt;
#### - docker https://docs.documenso.com/docs/self-hosting/deployment&lt;br /&gt;
#### + baremetal (non-docker) installation is documented https://github.com/documenso/documenso&lt;br /&gt;
#### - it&#039;s nodejs w/ npm&lt;br /&gt;
### LibreSign https://libresign.coop/&lt;br /&gt;
#### - no free cloud plan https://libresign.coop/pricing/&lt;br /&gt;
#### + self-hostable https://github.com/LibreSign/libresign&lt;br /&gt;
#### - no docs for self-hosting? installtion guide?&lt;br /&gt;
#### + github says it&#039;s a nextcloud app&lt;br /&gt;
## well, of thse, I think OpenSign or DDocumenso are the best options. my biggest concern is: can we export everything from the site, if they ever eliminate their free plan (or we outgrow them)?&lt;br /&gt;
## let&#039;s create accounts with both and get a feel for it&lt;br /&gt;
### well, shit, the signup page for documenso included their &amp;quot;sign here&amp;quot; digital field. It was so shitty, it nearly crashed my browser. so let&#039;s try open sign instead.&lt;br /&gt;
## ugh, OpenSign requires a phone number on sign-up&lt;br /&gt;
### ugh, password policy is dumb. it rejected a &amp;gt;50 char password because it requires a special symbol. makes me question their security. fortunately, these documents would need to be public, anyway.&lt;br /&gt;
### it accepted a bullshit phone number. good&lt;br /&gt;
### I immediately went to settings&lt;br /&gt;
#### I changed the document download filename format to include the date. It always bothers me when documents aren&#039;t dated in the filename..&lt;br /&gt;
#### I changed the date format to YYYY-MM-DD – iso format, sortable, and no ambiguity&lt;br /&gt;
#### In the setting&#039;s &amp;quot;widgets&amp;quot; tab, I also set the date to YYYY-MM-DD&lt;br /&gt;
#### In the settings&#039; &amp;quot;security&amp;quot; tab, I setup TOTP 2FA&lt;br /&gt;
### I went to my &amp;quot;profile&amp;quot;&lt;br /&gt;
#### It said my email wasn&#039;t verified. I never got an email *to* verify. I clicked the &amp;quot;Verify&amp;quot; button&lt;br /&gt;
##### gross. it sent an email with an OTP. the email had text/plain, but the only contents was &amp;quot;otp email&amp;quot;. I had to dig through some html to find the code.&lt;br /&gt;
# I clicked around in OpenSign. I expected there would be some place where I could type a document, but it only allows me to upload a pdf, jpg, png, jpeg, or docx. whey not OpenOffice (LibreOffice)? Hmm.&lt;br /&gt;
# not sure how this translates into being able to add input fields.&lt;br /&gt;
# using libreoffice, I created a test document with the contents&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
I agree not to act like an evil corporation.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# I exported it as a pdf, and uploaded it as a new &amp;quot;template&amp;quot; to opensign&lt;br /&gt;
## there&#039;s a lot of settings you can make&lt;br /&gt;
### you can change it so that everyone can sign at once, or (the default) has the intended party sign, then I sign. But I&#039;m not sure if I will *want* Eco-Libre to sign these documents at all?&lt;br /&gt;
### you can set the number of days that the person has to sign. it defaults to 15.&lt;br /&gt;
### you can add a bcc&lt;br /&gt;
### you can make the &amp;quot;certification pdf&amp;quot; merged into the signed document. well, apparently only if you pay for an upgrade. whatever.&lt;br /&gt;
### ah man, there&#039;s a cool feature that requries an OTP from the email address, but it requires upgrade&lt;br /&gt;
### you can specify a &amp;quot;redirect url&amp;quot; which is blank by default. I guess that&#039;s where they get sent after signing. That&#039;s cool. I could have it redirect to a &amp;quot;thank you; here&#039;s the next steps&amp;quot; doc. I set it to &#039;https://eco-libre.github.io/volunteer-test/&#039;&lt;br /&gt;
#### I&#039;m beginning to wonder if I shouldn&#039;t have made a repo named &#039;volunteer-test&#039; but instead made one named &#039;volunteer-onboarding&#039; in-which the volunteer test was only one section. hmm.&lt;br /&gt;
### the only other thing I could change was the pen ink colors. here in Ecuador, everything should be blue. so I disabled black and red.&lt;br /&gt;
## ok, after I click &amp;quot;next&amp;quot; I can decorate the page with a bunch of widgets. note that I cannot edit the text&lt;br /&gt;
### you can add a &amp;quot;role&amp;quot; for someone to sign. I just want one = the volunteer. So I added one named &amp;quot;Volunteer&amp;quot;&lt;br /&gt;
### I clicked the &amp;quot;Signature&amp;quot; widget, and a blue box popped-up on the bottom of the page&lt;br /&gt;
#### I hovered over it with my mouse, and a &amp;quot;gear&amp;quot; &amp;quot;person&amp;quot; &amp;quot;copy&amp;quot; and &amp;quot;trash&amp;quot; icons appeared.&lt;br /&gt;
#### I clicked the gear, and it let me choose the type of signatures accepted (draw, typed, upload, or default), and a &amp;quot;hint&amp;quot;&lt;br /&gt;
#### I clicked the &amp;quot;person&amp;quot; and it let me choose someone from contacts. I&#039;m creating a template, so that doesn&#039;t make sense (unless we had, like, *me* signing every document – which I don&#039;t think we&#039;ll do). So I left that empty&lt;br /&gt;
### there&#039;s a &amp;quot;text input widget&amp;quot;, which I guess is how I would let someone enter their name. I can make it optional, required, or read-only (relavant for the other &amp;quot;default value&amp;quot; option). I can change the font size and font color. So, I guess, the idea is that I would have left a blank space in the pdf, and later decorated it with this widget. I&#039;ll do that for the next test.&lt;br /&gt;
### there&#039;s a &amp;quot;image&amp;quot; widget – as in, the user can upload an image (I guess useful for profile photos)&lt;br /&gt;
### there&#039;s also widgets for stamp, initials, number, name, job title, company, email, date, cells, checkbox, dropdown, and radio button&lt;br /&gt;
### I dropped the &amp;quot;name&amp;quot; widget randomly near the top. So now I have two: name &amp;amp; signature.&lt;br /&gt;
### I saved the template&lt;br /&gt;
### I went back and edited it. I realized there&#039;s an option &amp;quot;prefiil by owner&amp;quot; vs &amp;quot;volunteer&amp;quot;. apparently I can add the name and stuff before I send it out. I left it at &amp;quot;volunteer&amp;quot;&lt;br /&gt;
## there was an option to make the template public, but I don&#039;t have a public profile. I went to edit my profile, but the box for entering my username for the public profile is grey-out. Unlike other places, it doesn&#039;t say &amp;quot;upgrade now&amp;quot; so idk wtf is going on&lt;br /&gt;
### after making it public, it gave me some js to embed the document. oh, so this is so that I can embed the docs on my own site. well, that&#039;s kinda cool. but I really don&#039;t want to embed a third party javascript.&lt;br /&gt;
## anyway, back to &amp;quot;manage templates&amp;quot;&lt;br /&gt;
### I tried to edit the template again, but it gave me an error&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
You cannot edit a public template directly. To make changes, the template will be set to private, and you&#039;ll need to make it public again afterward. Do you want to continue?&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
### so I unchecked &amp;quot;public&amp;quot; and edited it&lt;br /&gt;
### I added a &amp;quot;date&amp;quot; widget. I set it to &amp;quot;signing date&amp;quot; and &amp;quot;read only&amp;quot; and &amp;quot;required&amp;quot; and placed it just above the signature&lt;br /&gt;
## I went back to &amp;quot;manage templates&amp;quot; and clicked the &amp;quot;+ use&amp;quot; button.&lt;br /&gt;
### it gave me a drop down menu of our contacts, but it&#039;s empty. so I pressed the red &amp;quot;+&amp;quot; button to add a new contact&lt;br /&gt;
### I added a contact named &amp;quot;Michael Altfield&amp;quot; and my email address. then I selected this contact and clicked &amp;quot;next&amp;quot;&lt;br /&gt;
### It asked &amp;quot; Are you sure you want to send out this document for signatures?&amp;quot; and I clicked &amp;quot;Send&amp;quot;&lt;br /&gt;
### I immediately got an email. Again, the shitty email plaintext contetns was just &amp;quot;mail&amp;quot; and I had to read-through the html to find a encoding-broken link :/&lt;br /&gt;
#### I created a bug report for them to fix the `text/plain` content type of emails here https://github.com/OpenSignLabs/OpenSign/issues/2156&lt;br /&gt;
### using some mutt scripting fuckery, I&#039;m able to extract the URLs. But I can&#039;t figure out which one is to go to the document. Two of the four are both to &amp;quot;click.opensignlabs.com. the first one appears to go to a login page, and the second one doesn&#039;t. I tried the second one&lt;br /&gt;
#### wtf, that link brought me to a single dark page with a single dead pixel in the center of the screen.&lt;br /&gt;
### ok, looks like the first link (with the login that I was trying to avoid) is a button that says &amp;quot;sign here&amp;quot;&lt;br /&gt;
### ohhh, and the other one is an image. I guess it&#039;s a tracking pixel. that explains it.&lt;br /&gt;
### back in my admin dashboard, under Documents -&amp;gt; In-Progress, I can see Michael Altfield has &amp;quot;Yet to sign&amp;quot;&lt;br /&gt;
### If I click on &amp;quot;sent&amp;quot; then there&#039;s a section &amp;quot;viewed on&amp;quot; and &amp;quot;signed on&amp;quot; that are both &amp;quot;-&amp;quot; – so I guess that tracking pixel didn&#039;t really work, huh..&lt;br /&gt;
### fine, I went to the first link&lt;br /&gt;
#### oh, awesome, it didn&#039;t make me login! It redirected me to the document. perfect! It popped-up a modal that said&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
I confirm that I have read and understood the Electronic Record and Signature Disclosure and consent to use electronic records and signatures.&lt;br /&gt;
Note: Agreeing to this does not mean you are signing the document immediately. This only allows you to review the document electronically. You will have the opportunity to read it in full and decide whether to sign it afterward.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
### I clicked &amp;quot;I confirm &amp;amp; agree to continue&amp;quot;&lt;br /&gt;
### it did the whole modal popup &amp;quot;guide&amp;quot; thing, which was an option I could have disabled. basically it said to type my name (which was, cool, auto-completed to &amp;quot;Michael Altfield&amp;quot;), listed the signers (just me), and then highlighted the widgets at the bottom (date and sig), then told me how to zoom-in, then highlighted the &amp;quot;you&#039;re done&amp;quot; buttons = &amp;quot;decline&amp;quot; &amp;quot;download&amp;quot; or &amp;quot;finish&amp;quot;&lt;br /&gt;
### it let me change my name, but I should probably make that read-only now that I know it auto-completes with the name from the contacts&lt;br /&gt;
### it wouldn&#039;t let me change the date, which it autocompletd to today&lt;br /&gt;
### it did let me click on the signature widget, which opened a modal with a box where I could draw my nanme. I did that. It was fast, wayy better than Documenso – no issues here with the browser crashing&lt;br /&gt;
### alternatively, I could click &amp;quot;type&amp;quot; and it displayed my name in some cursive fonts, which I could choose-from. and there was an option to upload image.&lt;br /&gt;
### I chose draw and did my signature and clicked next. very fast.&lt;br /&gt;
### it asked if I&#039;m sure I want to finish the doc. I clicked &amp;quot;Review&amp;quot;&lt;br /&gt;
### then I clicked the &amp;quot;finish&amp;quot; button at the top&lt;br /&gt;
### it said this&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Document signed&lt;br /&gt;
Congratulations! 🎉 This document has been successfully signed by all participants!&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
### and there was a countdown to redirect. in 3 seconds, the browser redirected to here. perfect! https://eco-libre.github.io/volunteer-test/en/main/&lt;br /&gt;
### back in the opensign admin dashboard, the row is absent from &amp;quot;Documents -&amp;gt; in progress&amp;quot;. I found it in &amp;quot;documents -&amp;gt; completed&amp;quot;&lt;br /&gt;
### I clicked the &amp;quot;eye&amp;quot; next to the document, and it showed me the document, including the signature that I left in the other browser. I can also click &amp;quot;print&amp;quot; or &amp;quot;certifiacte&amp;quot; or &amp;quot;download&amp;quot;&lt;br /&gt;
#### &amp;quot;print&amp;quot; does what you&#039;d expect. I can print or use the browser&#039;s &amp;quot;save to pdf&amp;quot; of the document, which includes the signature&lt;br /&gt;
#### &amp;quot;certifiacte&amp;quot; opens some legal-looking pdf (something similar to docusign) with a some metadata, including a sah256 hash, ip address of both document issuer (me) and the signer (also me, but different IP because Tor). And it includes an image of the drawn signature.&lt;br /&gt;
#### &amp;quot;download&amp;quot; then lets me choose if i want the download pdf or downlaod pdf + certifiate. I chose both.&lt;br /&gt;
##### lol that failed. the browser didn&#039;t let me download both&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Something went wrong, refreshing this page may solve this issue&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
#### I tried just &amp;quot;downlaod pdf&amp;quot;&lt;br /&gt;
##### that gave me the document, plus the signature and other &amp;quot;widgets&amp;quot; filled-out, plus the following in the top-left&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
OpenSign™ DocumentId: pS5lEdCyIp&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
##### I guess that&#039;s something like their observatory. they said I can turn it off only if I have a paid plan. But it&#039;s probably necessary for them as a thrid party to confirm the signature.&lt;br /&gt;
#### anyway, I tested the hash on the file that I downloaded&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[user@disp6411 Downloads]$ sha256sum Test\ Agreement\ -\ REDACTED@eco-libre.org\ -\ 21-Apr-2026\ 04_01\ PM.pdf &lt;br /&gt;
569152424a49024297f4bb550291036896de3189e70efb1fee6a9e39333bbe77  Test Agreement - REDACTED@eco-libre.org - 21-Apr-2026 04_01 PM.pdf&lt;br /&gt;
[user@disp6411 Downloads]$ &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
#### I wanted to confirm that matches the certificate, but when I clicked &amp;quot;certificate&amp;quot; again, I got a permissions issue!&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;Error&amp;gt;&lt;br /&gt;
&amp;lt;Code&amp;gt;AccessDenied&amp;lt;/Code&amp;gt;&lt;br /&gt;
&amp;lt;Message&amp;gt;Request has expired.&amp;lt;/Message&amp;gt;&lt;br /&gt;
&amp;lt;Resource&amp;gt;&lt;br /&gt;
legadratw3d/460246e423800b30c50c967ef6157248_certificate.pdf&lt;br /&gt;
&amp;lt;/Resource&amp;gt;&lt;br /&gt;
&amp;lt;RequestId&amp;gt;not available&amp;lt;/RequestId&amp;gt;&lt;br /&gt;
&amp;lt;/Error&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
### fortunately I still had it open in another tab, and I copied this from it&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Generated On 2026-04-21, 15:56:29 GMT -05:00&lt;br /&gt;
Certificate of Completion&lt;br /&gt;
Summary&lt;br /&gt;
Document Id : pS5lEdCyIp&lt;br /&gt;
Document Name : Test Agreement&lt;br /&gt;
Document hash (sha256) : 569152424a49024297f4bb550291036896de3189e70efb1fee6a9e39333bbe77&lt;br /&gt;
Organization : Eco-Libre&lt;br /&gt;
Created on : 2026-04-21, 15:25:55 GMT -05:00&lt;br /&gt;
Completed on : 2026-04-21, 15:56:29 GMT -05:00&lt;br /&gt;
Signers : 1&lt;br /&gt;
Document originator&lt;br /&gt;
Name : Eco-Libre&lt;br /&gt;
Email : REDACTED@eco-libre.org&lt;br /&gt;
IP address : 94.185.80.231&lt;br /&gt;
Signer 1&lt;br /&gt;
Name : Michael Altfield&lt;br /&gt;
Email : REDACTED@eco-libre.org&lt;br /&gt;
Viewed on : 2026-04-21, 15:50:32 GMT -05:00&lt;br /&gt;
Signed on : 2026-04-21, 15:56:29 GMT -05:00&lt;br /&gt;
IP address : 2001:67c:e60:c0c:192:42:116:52&lt;br /&gt;
Signature :&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
### so the hashes do match; that&#039;s cool&lt;br /&gt;
### but will I be able to view the certificates in the future?!?&lt;br /&gt;
### I went back to the admin dashboard -&amp;gt; documents -&amp;gt; completed -&amp;gt; (eye icon) -&amp;gt; certificate&lt;br /&gt;
#### ok, that worked. I can pull it up again.&lt;br /&gt;
### curiously it still says I&#039;ve sent 0/15 emails this month&lt;br /&gt;
#### oh, I refrehed the page. now it says 1/15.&lt;br /&gt;
### I also see that my admin email got an email with an attachment titled &amp;quot;Test Agreement -&lt;br /&gt;
 REDACTED@eco-libre.org - 22-Apr-2026 02:26 AM.pdf&amp;quot; – so I guess it did email it to me&lt;br /&gt;
#### oh, awesome, there&#039;s also an attachment named &amp;quot;certificate.pdf&amp;quot;&lt;br /&gt;
#### the email is 83 KB + 139 KB for the two attachments, so that&#039;s reasonable. and that eliminates a lot of fear around exports. we&#039;ll have this data forever if we keep this email account&#039;s forever (or setup an automated backup process)&lt;br /&gt;
### there&#039;s also this &amp;quot;open sign drive&amp;quot; thing. I wasn&#039;t sure if this was an opt-in or pro feature&lt;br /&gt;
#### looks like the signed document is there too. it&#039;s just called &amp;quot;Test Agreement&amp;quot; – which isn&#039;t very nice, but I can see the &amp;quot;Created date&amp;quot; – which should be good enough.&lt;br /&gt;
## ok, I think we have a solution! this definitely meets our needs – unless/until we get &amp;gt;=6 volunteers per month (if we have them sign two documents each)&lt;br /&gt;
# I spent some time designing a letterhead in LibreOffice&lt;br /&gt;
# looks like what we want is a Contributor License Agreement https://en.wikipedia.org/wiki/Contributor_license_agreement&lt;br /&gt;
# looks like a lot of projects just use the CLA assistant tool on gthub https://cla-assistant.io/&lt;br /&gt;
## that&#039;s kinda cool, but I honestly don&#039;t know how long we&#039;ll be on github. If it&#039;s tied to an issue (and not something actually in git), it&#039;ll be hard to move to codeberg in the future&lt;br /&gt;
## still, I like the tl;dr CLA; short &amp;amp; sweet (maybe too much so) https://gist.github.com/waldyrious/e50feec13683e565769fbd58ce503d4e&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
## tldr-pages contributor agreement&lt;br /&gt;
&lt;br /&gt;
(1) I assert that any past, present and future contributions I make to the tldr-pages project are my own work, and that I have the right to license them.&lt;br /&gt;
&lt;br /&gt;
(2) I agree to license all my contributions to the tldr-pages project under the terms of the license included in the tldr-pages repository I’m contributing to.&lt;br /&gt;
&lt;br /&gt;
(3) I grant the tldr-pages organization a license to distribute my contributions under any open content license compliant with the Open Definition [a], or any open source software license approved by the Open Source Initiative [b], as applicable.&lt;br /&gt;
&lt;br /&gt;
a. http://opendefinition.org/licenses&lt;br /&gt;
&lt;br /&gt;
b. https://opensource.org/licenses/alphabetical&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# apparently Connonical created a project called Harmony for the purpose of making contributor agreements https://www.harmonyagreements.org/&lt;br /&gt;
## apparently these things are more complicated between individuals vs other entities. it&#039;s possible we&#039;ll work with for-profit companies in the future, and for that it&#039;d be good if we were setup to accept both&lt;br /&gt;
## ugh, there&#039;s also a distinction between a &amp;quot;license&amp;quot; and a &amp;quot;assignment&amp;quot;&lt;br /&gt;
### I skimmed their guide, but I couldn&#039;t understand the difference between these two https://www.harmonyagreements.org/guide&lt;br /&gt;
# fedora project also has one, with an emphasis on *not* taking the copyright away from the user (some controversy about copyright transfer in different CLAs – such as from for-profit companies that later fork &amp;amp; lock-up their user-contributed content under a different, less-permisive license (though I really don&#039;t understand how that&#039;s possible if we use a CC SA license) https://docs.fedoraproject.org/en-US/legal/fpca/&lt;br /&gt;
## oh, fedora uses MIT license --which is probably why they need to add all that&lt;br /&gt;
# apahce has one https://www.apache.org/licenses/contributor-agreements.html#clas&lt;br /&gt;
## cool, they accept signing with gpg :D&lt;br /&gt;
# Element (the matrix client) which uses AGPL has a pretty good document, which is 3 pages long https://static.element.io/legal/contributor-license-agreement.pdf&lt;br /&gt;
# a lot of these are kinda software heavy. I wonder if there&#039;s any good OSHW orgs that we can try?&lt;br /&gt;
## I checked OSHWA, but didn&#039;t see a boilerplate CLA that we could copy https://oshwa.org/&lt;br /&gt;
### they did have a CoC. Jesus, how many policies do we need to make? https://oshwa.org/resources/how-to-write-a-code-of-conduct/&lt;br /&gt;
### I publicy tooted @oshwassociation@mastodon.social if they had something to recommend https://chaos.social/@ecolibre/116444933464052302&lt;br /&gt;
### hmm...here they recommend CERN OHL v2 instead of CC BY-SA, if we&#039;re using something like STL files that are generated from CAD design https://oshwa.org/resources/sharing-best-practices/&lt;br /&gt;
## CERN does have some does on CLAs https://ospo.docs.cern.ch/howtos/signing-CLA-DCO/&lt;br /&gt;
## CERN links to this short one, from the Linux Foundation https://developercertificate.org/&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Developer Certificate of Origin&lt;br /&gt;
Version 1.1&lt;br /&gt;
&lt;br /&gt;
Copyright (C) 2004, 2006 The Linux Foundation and its contributors.&lt;br /&gt;
&lt;br /&gt;
Everyone is permitted to copy and distribute verbatim copies of this&lt;br /&gt;
license document, but changing it is not allowed.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Developer&#039;s Certificate of Origin 1.1&lt;br /&gt;
&lt;br /&gt;
By making a contribution to this project, I certify that:&lt;br /&gt;
&lt;br /&gt;
(a) The contribution was created in whole or in part by me and I&lt;br /&gt;
	have the right to submit it under the open source license&lt;br /&gt;
	indicated in the file; or&lt;br /&gt;
&lt;br /&gt;
(b) The contribution is based upon previous work that, to the best&lt;br /&gt;
	of my knowledge, is covered under an appropriate open source&lt;br /&gt;
	license and I have the right under that license to submit that&lt;br /&gt;
	work with modifications, whether created in whole or in part&lt;br /&gt;
	by me, under the same open source license (unless I am&lt;br /&gt;
	permitted to submit under a different license), as indicated&lt;br /&gt;
	in the file; or&lt;br /&gt;
&lt;br /&gt;
(c) The contribution was provided directly to me by some other&lt;br /&gt;
	person who certified (a), (b) or (c) and I have not modified&lt;br /&gt;
	it.&lt;br /&gt;
&lt;br /&gt;
(d) I understand and agree that this project and the contribution&lt;br /&gt;
	are public and that a record of the contribution (including all&lt;br /&gt;
	personal information I submit with it, including my sign-off) is&lt;br /&gt;
	maintained indefinitely and may be redistributed consistent with&lt;br /&gt;
	this project or the open source license(s) involved.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# ok, I think I&#039;m muddling two things here&lt;br /&gt;
## I think the wiki&#039;s TOS should be simpler. If I require all wiki users to become volunteers first, and the volunteer onboarding requires the signing of documents, then the real legal stuff should be in the documents.&lt;br /&gt;
## for now, let&#039;s just do the bullet point thing on the wiki ToS. And I&#039;ll wait to hear back from OSHWA about the CLA for a *proper* leagl document later – maybe TODO when we actually get another volunteer application..&lt;br /&gt;
# I set the ToS to the DCO from the linux foundation https://wiki.eco-libre.org/wiki/Eco-Libre:Terms_of_Service&lt;br /&gt;
## ah crap, I just realized that it says &amp;quot;changing it is not allowed&amp;quot;. I already changed it by removing the Linux Foundation from the name (I moved it to the bottom in an &amp;quot;attribution&amp;quot; section, which is another change! damn ND licenses! I&#039;ll have to find something else)&lt;br /&gt;
# I want to use the tl;dr gist, but it&#039;s not licensed! https://gist.github.com/waldyrious/e50feec13683e565769fbd58ce503d4e#file-tldr-pages-cla-md&lt;br /&gt;
## the profile of the author says they&#039;re a wikipedian and anarchist, so they&#039;ll probably be down to license it openly&lt;br /&gt;
## I asked here https://gist.github.com/waldyrious/e50feec13683e565769fbd58ce503d4e?permalink_comment_id=6112400#gistcomment-6112400&lt;br /&gt;
# another issue with a lot of these CLAs is that they&#039;re pretty old, and don&#039;t touch on AI.&lt;br /&gt;
## I&#039;m thinking we should have a policy that forbids contributions from Eco-Libre volunteers that do any research or design work with AI, since it presents serious legal issues around copyrights. I really do want 100% of our work to be very CC BY-SA. With nothing to muddle the waters. We&#039;re doing this designs ourselves to build an open-source commons, built only individual human contributions and only other openly-licensed works&lt;br /&gt;
## clojure already addressed this in their CLA (they just call it CA = Contributor Agreement) https://clojure.org/dev/contributor_agreement&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
No Generated Code&lt;br /&gt;
&lt;br /&gt;
Clojure’s code is written and reviewed by humans. Code generated by a large language model or similar technology, such as Anthropic’s Claude, GitHub/Microsoft’s Copilot, OpenAI’s ChatGPT, Facebook/Meta’s Code Llama et al, is not compliant with the covenants and representations of Clojure’s Contributor’s Agreement, and is thus not acceptable as code for Clojure.&lt;br /&gt;
&lt;br /&gt;
An exception may be made for human written generators whose source code is contributed along with the patch&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## I don&#039;t like that exception. The source code doesn&#039;t just need to be submitted along with the patch. the whole training set data needs to be submitted along with the patch, which is practically impossible.&lt;br /&gt;
## weird, they call it the &amp;quot;Rich Hickey Contributor Agreement&amp;quot; https://na1.documents.adobe.com/public/esignWidget?wid=CBFCIBAA3AAABLblqZhCSXRbJ7T5RGvmMvmpg3CzvkF_RcpWXMnGWW_W9340ztJ3-ChQ0m18hA-d06ufD8Yk*&lt;br /&gt;
### oh good, the document itself is CC BY-SA&lt;br /&gt;
## the source for it was oracle&#039;s OCA https://www.oracle.com/technetwork/oca-faq-405384.pdf&lt;br /&gt;
### yeah, the second-to-last FAQ question says that the OCA is CC BY-SA &lt;br /&gt;
### looks like neither of them mention AI in the document itself :/&lt;br /&gt;
### maybe I don&#039;t like the RHCA contents, but I do really like the header and footer and how clearly it&#039;s licened itself as CC BY-SA&lt;br /&gt;
# the linux foundation has a CLA generator, but it&#039;s authwalled :( https://easycla.lfx.linuxfoundation.org/#/&lt;br /&gt;
# cyanogenmod&#039;s is pretty nice; not too long. unfortunately the license isn&#039;t clear https://web.archive.org/web/20160308140334/http://review.cyanogenmod.org/static/cla_individual.html&lt;br /&gt;
# same for Discourse; it&#039;s about 7 paragraph bullet points long. unfortuantely the license isn&#039;t clear https://cla-assistant.io/discourse/discourse&lt;br /&gt;
## apparently it&#039;s an apache license https://github.com/cla-assistant/cla-assistant/blob/main/LICENSE&lt;br /&gt;
# django has two: indivdual and corproate. apparently adapted from apache&#039;s (so likely licensed under apache, but I should confirm&lt;br /&gt;
## https://media.djangoproject.com/foundation/icla.pdf&lt;br /&gt;
## https://media.djangoproject.com/foundation/icla.pdf&lt;br /&gt;
# evil corps like meta and google have CLAs, but I doubt they&#039;re licensed openly&lt;br /&gt;
## https://code.facebook.com/cla/individual&lt;br /&gt;
## https://cla.developers.google.com/about/google-individual?csw=1&lt;br /&gt;
# here&#039;s hashicorp&#039;s. I don&#039;t think it&#039;s licensed openly https://www.hashicorp.com/en/cla&lt;br /&gt;
# Here&#039;s Hoe Assistant https://www.home-assistant.io/blog/2017/01/21/home-assistant-governance/&lt;br /&gt;
## apparently Matthew Garret convinced them to change their CLA from GitHub&#039;s to this one https://www.home-assistant.io/blog/2017/01/21/home-assistant-governance/&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
By making a contribution to this project, I certify that:&lt;br /&gt;
&lt;br /&gt;
(a) The contribution was created in whole or in part by me and I&lt;br /&gt;
	have the right to submit it under the Apache 2.0 license; or&lt;br /&gt;
&lt;br /&gt;
(b) The contribution is based upon previous work that, to the best&lt;br /&gt;
	of my knowledge, is covered under an appropriate open source&lt;br /&gt;
	license and I have the right under that license to submit that&lt;br /&gt;
	work with modifications, whether created in whole or in part&lt;br /&gt;
	by me, under the Apache 2.0 license; or&lt;br /&gt;
&lt;br /&gt;
(c) The contribution was provided directly to me by some other&lt;br /&gt;
	person who certified (a), (b) or (c) and I have not modified&lt;br /&gt;
	it.&lt;br /&gt;
&lt;br /&gt;
(d) I understand and agree that this project and the contribution&lt;br /&gt;
	are public and that a record of the contribution (including all&lt;br /&gt;
	personal information I submit with it) is maintained indefinitely&lt;br /&gt;
	and may be redistributed consistent with this project or the open&lt;br /&gt;
	source license(s) involved.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## is it just me, or does that look like the one from the Linux Foundation, except it was modified to have the section saying &amp;quot;you can&#039;t modify this&amp;quot; removed. Hmm./.&lt;br /&gt;
## yeah, they say that in attribtuion&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
The text of this license is available under the Creative Commons Attribution-ShareAlike 3.0 Unported License. It is based on the Linux Developer Certificate Of Origin, but is modified to explicitly use the Apache 2.0 license and not mention sign-off.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## idk, maybe they got explicit permission from the Linux Foundation to modify it and re-license it CC BY-SA?&lt;br /&gt;
## I asked them if they got permission and to publish proof, so we could do the same https://github.com/home-assistant/home-assistant.io/issues/44892&lt;br /&gt;
&lt;br /&gt;
== 2026-04-20 ==&lt;br /&gt;
# I got a link from a friend from a pretty cool sounding similar project https://projectkamp.com/&lt;br /&gt;
## sounds like they have similar ideas as Eco-Libre, except they already bought land already&lt;br /&gt;
## They claim to use CC BY-SA to license all their works, but their videos are not marked as-such on YouTube. And, because YouTube is trash, I can&#039;t view their videos  https://academy.projectkamp.com/start/intro/#open-source--license&lt;br /&gt;
## I wanted to email them to update the license on their YouTube videos (so, at least, they could be archived on archive.org and uploaded to PeerTube, etc), but I couldn&#039;t find their email https://projectkamp.com/faq.html&lt;br /&gt;
## Their footer says they&#039;re part of One Army (along with, eg Precious Plastic), so I emailed One Army asking for the email address of Project Kamp https://www.onearmy.earth/&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Hello,&lt;br /&gt;
&lt;br /&gt;
Can you please tell me the email address of Project Kamp?&lt;br /&gt;
&lt;br /&gt;
I&#039;m looking to get in contact with Project Kamp over email, but I couldn&#039;t find a way to email them from their website:&lt;br /&gt;
&lt;br /&gt;
 * https://projectkamp.com/faq.html&lt;br /&gt;
&lt;br /&gt;
Please send me the email address for Project Kamp.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Thank you,&lt;br /&gt;
&lt;br /&gt;
Michael Altfield&lt;br /&gt;
https://www.michaelaltfield.net&lt;br /&gt;
PGP Fingerprint: 0465 E42F 7120 6785 E972  644C FE1B 8449 4E64 0D41&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## TODO: add Project Kamp to our &#039;common-files&#039; repo&#039;s docs as a &amp;quot;Similar Project&amp;quot;&lt;br /&gt;
# ...&lt;br /&gt;
# Tomorrow we&#039;re publishing our partnership with Raft Foundation, so we can accept tax-deductable donations https://www.eco-libre.org/raft-2026/&lt;br /&gt;
# Some weeks ago I did updates of wordpress, including adding new plugins. One of them was ActivityPub&lt;br /&gt;
# I enabled ActivityPub, but the Settings page gives me a &amp;quot;504 Gateway Time-out&amp;quot; error from nginx https://www.eco-libre.org/wp-admin/options-general.php?page=activitypub&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;head&amp;gt;&amp;lt;title&amp;gt;504 Gateway Time-out&amp;lt;/title&amp;gt;&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;h1&amp;gt;504 Gateway Time-out&amp;lt;/h1&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&amp;lt;center&amp;gt;nginx&amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## here&#039;s the error.log entry for nginx&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
2026/04/20 17:37:36 [error] 1992101#1992101: *2507383 upstream timed out (110: Connection timed out) while reading response header from upstream, client: 64.42.180.66, server: www.eco-libre.org, request: &amp;quot;GET /wp-admin/options-general.php?page=activitypub HTTP/1.1&amp;quot;, upstream: &amp;quot;http://127.0.0.1:6081/wp-admin/options-general.php?page=activitypub&amp;quot;, host: &amp;quot;www.eco-libre.org&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## and here&#039;s the apache logs&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
==&amp;gt; www.eco-libre.org/access.log &amp;lt;==&lt;br /&gt;
64.42.180.66 - - [20/Apr/2026:17:54:54 +0000] &amp;quot;POST /wp-admin/admin-ajax.php HTTP/1.1&amp;quot; 200 792 &amp;quot;https://www.eco-libre.org/wp-admin/plugins.php?plugin_status=all&amp;amp;paged=1&amp;amp;s&amp;quot; &amp;quot;Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.0.0 Safari/537.36&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==&amp;gt; www.eco-libre.org/error.log &amp;lt;==&lt;br /&gt;
[Mon Apr 20 17:55:23.176842 2026] [proxy_fcgi:error] [pid 526343:tid 526374] (70007)The timeout specified has expired: [client 64.42.180.66:0] AH01075: Error dispatching request to : (polling)&lt;br /&gt;
&lt;br /&gt;
==&amp;gt; www.eco-libre.org/access.log &amp;lt;==&lt;br /&gt;
64.42.180.66 - - [20/Apr/2026:17:54:23 +0000] &amp;quot;GET /wp-admin/options-general.php?page=activitypub HTTP/1.1&amp;quot; 504 467 &amp;quot;-&amp;quot; &amp;quot;Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.0.0 Safari/537.36&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## I don&#039;t know what&#039;s wrong, and that&#039;s not enough to debug it. I tested ActivityPub on another site, and the config page had no issues. But I ended-up not finishing its setup because I wanted the actor URL to use the naked domain, and I&#039;m still waiting to hear back on that https://github.com/Automattic/wordpress-activitypub/issues/3164&lt;br /&gt;
# anyway, I wrote a newsletter, scheduled it to go out for tomorrow at 15:00 UTC&lt;br /&gt;
# I also wrote the update for Open Collective&lt;br /&gt;
# I put the &amp;quot;Donate&amp;quot; page in the menu bar&lt;br /&gt;
## on mobile, this made the top navbar spill over into a second row, so I moved &amp;quot;Contact&amp;quot; under &amp;quot;Join Us&amp;quot;&lt;br /&gt;
### to make up for this, I started creating footer areas&lt;br /&gt;
### the theme supports three footers. one on the left, center, and right&lt;br /&gt;
### I put copyright &amp;amp; copyleft info on the right footer&lt;br /&gt;
### I put social media icons in the middle footer&lt;br /&gt;
### I put a &amp;quot;Contact&amp;quot; link on the left footer&lt;br /&gt;
## As I was styling the left footer, I stopped being able to update it suddenly. I kept getting error&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
There was an error. Could not get a valid response from the server.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## closer inspection of the networking tab of the browsers debugger showed an error when doing an OPTIONS request&lt;br /&gt;
## well, that&#039;s probably because (for security) we block all but GET POST and HEAD&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
if ($request_method !~ ^(GET|HEAD|POST)$ ) {&lt;br /&gt;
   # note: 444 is a meta code; it doesn&#039;t return anything, actually&lt;br /&gt;
   #       it just logs, drops, &amp;amp; closes the connection (useful&lt;br /&gt;
   #       against malware)&lt;br /&gt;
   return 444;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## well, fuck, our widgets are bricked&lt;br /&gt;
## I asked about this here https://wordpress.org/support/topic/configure-wordpress-to-never-use-options-requests/&lt;br /&gt;
## as a workaround, I found that I *can* edit these footer widgets from the theme -&amp;gt; customize -&amp;gt; widgets section of the site – which sends POST as expected https://www.eco-libre.org/wp-admin/customize.php?return=%2Fwp-admin%2Fwidgets.php&lt;br /&gt;
# I realized that I can&#039;t post to lemmy anymore, because our sdf instance has been down since 2026-04-07&lt;br /&gt;
# I went ahead and created an accout request on the solar punk instance https://slrpnk.net/&lt;br /&gt;
## if we&#039;re accepted, I&#039;d also like to create a community specific to Eco-Libre &lt;br /&gt;
# I also created one on lemmy.vg&lt;br /&gt;
&lt;br /&gt;
== 2026-04-19 ==&lt;br /&gt;
# I failed to login to the wiki today. I got error&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[REDACTED] 2026-04-19 20:34:48: Fatal exception of type &amp;quot;DomainException&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# exception.log seems to suggest that I set a bad config for the password policy yesterday&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
==&amp;gt; exception.log &amp;lt;==&lt;br /&gt;
2026-04-19 20:36:27 mail wiki_el_db-rHb3: [REDACTED] /index.php?title=Special:UserLogin&amp;amp;returnto=MediaWiki&lt;br /&gt;
%3ARequestaccount-agree   DomainException: Invalid password policy config. No check defined for &#039;PasswordCannotMatchUsername&#039;&lt;br /&gt;
.&lt;br /&gt;
#0 /usr/share/mediawiki/includes/password/UserPasswordPolicy.php(88): MediaWiki\Password\UserPasswordPolicy-&amp;gt;checkPolicies()&lt;br /&gt;
#1 /usr/share/mediawiki/includes/user/User.php(995): MediaWiki\Password\UserPasswordPolicy-&amp;gt;checkUserPassword()&lt;br /&gt;
#2 /usr/share/mediawiki/includes/auth/AbstractPasswordPrimaryAuthenticationProvider.php(114): MediaWiki\User\User-&amp;gt;checkPassw&lt;br /&gt;
ordValidity()&lt;br /&gt;
#3 /usr/share/mediawiki/includes/auth/AbstractTemporaryPasswordPrimaryAuthenticationProvider.php(155): MediaWiki\Auth\Abstrac&lt;br /&gt;
tPasswordPrimaryAuthenticationProvider-&amp;gt;checkPasswordValidity()&lt;br /&gt;
#4 /usr/share/mediawiki/includes/auth/AuthManager.php(625): MediaWiki\Auth\AbstractTemporaryPasswordPrimaryAuthenticationProv&lt;br /&gt;
ider-&amp;gt;beginPrimaryAuthentication()&lt;br /&gt;
#5 /usr/share/mediawiki/includes/auth/AuthManager.php(535): MediaWiki\Auth\AuthManager-&amp;gt;continueAuthentication()&lt;br /&gt;
#6 /usr/share/mediawiki/includes/specialpage/AuthManagerSpecialPage.php(390): MediaWiki\Auth\AuthManager-&amp;gt;beginAuthentication&lt;br /&gt;
()&lt;br /&gt;
#7 /usr/share/mediawiki/includes/specialpage/AuthManagerSpecialPage.php(524): MediaWiki\SpecialPage\AuthManagerSpecialPage-&amp;gt;performAuthenticationStep()&lt;br /&gt;
#8 [internal function]: MediaWiki\SpecialPage\AuthManagerSpecialPage-&amp;gt;handleFormSubmit()&lt;br /&gt;
#9 /usr/share/mediawiki/includes/htmlform/HTMLForm.php(822): call_user_func()&lt;br /&gt;
#10 /usr/share/mediawiki/includes/specialpage/AuthManagerSpecialPage.php(455): MediaWiki\HTMLForm\HTMLForm-&amp;gt;trySubmit()&lt;br /&gt;
#11 /usr/share/mediawiki/includes/specialpage/LoginSignupSpecialPage.php(403): MediaWiki\SpecialPage\AuthManagerSpecialPage-&amp;gt;trySubmit()&lt;br /&gt;
#12 /usr/share/mediawiki/includes/specialpage/SpecialPage.php(728): MediaWiki\SpecialPage\LoginSignupSpecialPage-&amp;gt;execute()&lt;br /&gt;
#13 /usr/share/mediawiki/includes/specialpage/SpecialPageFactory.php(1717): MediaWiki\SpecialPage\SpecialPage-&amp;gt;run()&lt;br /&gt;
#14 /usr/share/mediawiki/includes/actions/ActionEntryPoint.php(505): MediaWiki\SpecialPage\SpecialPageFactory-&amp;gt;executePath()&lt;br /&gt;
#15 /usr/share/mediawiki/includes/actions/ActionEntryPoint.php(147): MediaWiki\Actions\ActionEntryPoint-&amp;gt;performRequest()&lt;br /&gt;
#16 /usr/share/mediawiki/includes/MediaWikiEntryPoint.php(200): MediaWiki\Actions\ActionEntryPoint-&amp;gt;execute()&lt;br /&gt;
#17 /usr/share/mediawiki/index.php(58): MediaWiki\MediaWikiEntryPoint-&amp;gt;run()&lt;br /&gt;
#18 {main}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# here&#039;s what we have&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$wgPasswordPolicy[&#039;policies&#039;][&#039;default&#039;][&#039;PasswordCannotMatchUsername&#039;] = true;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# but the docs suggest there&#039;s an additioanl array needed for &amp;quot;value&amp;quot;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$wgPasswordPolicy[&#039;policies&#039;][&#039;default&#039;][&#039;PasswordCannotMatchUsername&#039;][&#039;value&#039;] = false;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# if I expand &amp;quot;Older Versions&amp;quot; then the &#039;PasswordCannotMatchUsername&#039; disappears from mediawiki &amp;gt;1.37. The docs still say it&#039;s an option, but I didn&#039;t find it in our files https://www.mediawiki.org/wiki/Manual:$wgPasswordPolicy#Default&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@mail:/var/www/html/wiki.eco-libre.org# grep -irl PasswordCannotMatchUsername *&lt;br /&gt;
LocalSettings.20260419.php&lt;br /&gt;
LocalSettings.php&lt;br /&gt;
root@mail:/var/www/html/wiki.eco-libre.org# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# it does appear that &#039;PasswordCannotBeSubstringInUsername&#039; is available. let&#039;s use that instead.&lt;br /&gt;
# ugh, next attempt gives another failure&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
==&amp;gt; exception.log &amp;lt;==&lt;br /&gt;
2026-04-19 21:04:26 mail wiki_el_db-rHb3: [REDACTED] /index.php?title=Special:UserLogin&amp;amp;returnto=MediaWiki&lt;br /&gt;
%3ARequestaccount-agree   DomainException: Invalid password policy config. No check defined for &#039;PasswordCannotBePopular&#039;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# I removed this; I guess we&#039;re supposed to use &#039;PasswordNotInCommonList&#039;, which we already use.&lt;br /&gt;
# ok, that worked. I&#039;m able to login-in. here&#039;s the final&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# PASSWORD POLICIES&lt;br /&gt;
&lt;br /&gt;
$wgPasswordPolicy[&#039;policies&#039;][&#039;default&#039;][&#039;MinimalPasswordLength&#039;] = 10;&lt;br /&gt;
$wgPasswordPolicy[&#039;policies&#039;][&#039;default&#039;][&#039;PasswordCannotBeSubstringInUsername&#039;][&#039;value&#039;] = true;&lt;br /&gt;
$wgPasswordPolicy[&#039;policies&#039;][&#039;default&#039;][&#039;PasswordNotInCommonList&#039;] = true;&lt;br /&gt;
&lt;br /&gt;
$wgPasswordPolicy[&#039;policies&#039;][&#039;sysop&#039;][&#039;MinimalPasswordLength&#039;] = 20;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# now that I can login, I was going to change the text that appears on the Request Account page https://wiki.eco-libre.org/wiki/MediaWiki:Requestaccount-text&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Complete and submit the following form to request a user account.&lt;br /&gt;
&lt;br /&gt;
Make sure that you first read the Terms of Service before requesting an account.&lt;br /&gt;
&lt;br /&gt;
Once the account is approved, you will be emailed a notification message and the account will be usable at login. &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## my intention was to add a notebox to highlight that the user would need to first complete the Eco-Libre Volunteer Test (https://eco-libre.github.io/volunteer-test/) before their new wiki account would be approve, and tell them to contact us (https://eco-libre.org/contact/)&lt;br /&gt;
## unforutnately, the notebox template doesn&#039;t exist!&lt;br /&gt;
## I found the docs on templates, and it says there&#039;s no way to import a bunch of standard templates https://www.mediawiki.org/wiki/Help:Templates&lt;br /&gt;
## this third-party guide says we can make the export/import (eg from Wikipedia) of a mass of templates easier with the Scribunto extension https://www.ryadel.com/en/how-to-add-wikipedia-mbox-templates-to-your-own-mediawiki/&lt;br /&gt;
## this extension ships with core mediawiki, it seems&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@mail:/var/www/html/wiki.eco-libre.org# ls htdocs/extensions/&lt;br /&gt;
AbuseFilter     ConfirmEdit      InputBox          Nuke             ReplaceText            TemplateData    Widgets&lt;br /&gt;
CategoryTree    DeleteBatch      Interwiki         OATHAuth         Scribunto              TextExtracts    WikiEditor&lt;br /&gt;
Cite            DiscussionTools  Linter            PageImages       SecureLinkFixer        Thanks&lt;br /&gt;
CiteThisPage    Echo             LoginNotify       ParserFunctions  SmiteSpam              TitleBlacklist&lt;br /&gt;
CodeEditor      Gadgets          Math              PdfHandler       SpamBlacklist          UserMerge&lt;br /&gt;
ConfirmAccount  ImageMap         MultimediaViewer  Poem             SyntaxHighlight_GeSHi  VisualEditor&lt;br /&gt;
root@mail:/var/www/html/wiki.eco-libre.org# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# TODO: finish installing Scribunto, then do a mass-export &amp;amp; mass-import of common templates from Wikipedia. Then finish configuring [[&#039;&#039;MediaWiki:Requestaccount-text&#039;&#039;]]&lt;br /&gt;
# I thought that, maybe, a lower hanging fruit would be to implement the Privacy Policy, but I realized that page actually requires the user to accept the Terms of Service, not the Privacy Policy&lt;br /&gt;
## OSE appears to have never set a ToS (And I created the Privacy Policy, largely based on the creative commons&#039; privacy policy https://wiki.opensourceecology.org/wiki/Terms_of_Service&lt;br /&gt;
## The wikipedia Terms of Service is actually named Terms of Use, and it&#039;s pretty specific to Wikipedia (including their mission, etc). In it, it references the Privacy Policy https://foundation.wikimedia.org/wiki/Policy:Terms_of_Use/en&lt;br /&gt;
## Appropedia doesn&#039;t appear to have a page dedicated to ToS (or ToU) or Privacy Policy. Instead, it&#039;s just on one page named Policies https://www.appropedia.org/Appropedia:Policies&lt;br /&gt;
&lt;br /&gt;
== 2026-04-18 ==&lt;br /&gt;
# continuing where I left off yes terday to fix mediawiki after the unattended-upgrade deleted our LocalSettings.php file&lt;br /&gt;
# I need to push-out a new php.ini config (with ansible) to include /etc/mediawiki/ in the open_basedir setting&lt;br /&gt;
# ansible is broken suddenly; it says it can&#039;t find python&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
fatal: [michaelaltfield.net]: UNREACHABLE! =&amp;gt; {&amp;quot;changed&amp;quot;: false, &amp;quot;msg&amp;quot;: &amp;quot;EOF on stream; last 100 lines received:\nbash: line 1: /usr/bin/python: No such file or directory&amp;quot;, &amp;quot;unreachable&amp;quot;: true}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# well, idk, did debian remove a symlink from python to python3?&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@mail:/var/lib/mediawiki# ls -lah /usr/bin/python&lt;br /&gt;
ls: cannot access &#039;/usr/bin/python&#039;: No such file or directory&lt;br /&gt;
root@mail:/var/lib/mediawiki# ls -lah /usr/bin/python3&lt;br /&gt;
lrwxrwxrwx 1 root root 10 Jun 30  2025 /usr/bin/python3 -&amp;gt; python3.13&lt;br /&gt;
root@mail:/var/lib/mediawiki# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# looks like there&#039;s a var I can set for this named ansible_python_interpreter, but it&#039;s only available in python &amp;gt;= 2.2.0 https://stackoverflow.com/a/41431540&lt;br /&gt;
# and we only have ansible v2.14.18, installed in apt on debian 12 on my client machine&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ dpkg -l | grep -i ansible&lt;br /&gt;
ii  ansible                                       7.7.0+dfsg-3+deb12u1                     all          Configuration management, deployment, and task execution system&lt;br /&gt;
ii  ansible-core                                  2.14.18-0+deb12u2                        all          Configuration management, deployment, and task execution system&lt;br /&gt;
ii  ansible-mitogen                               0.3.3-9+deb12u1                          all          Fast connection strategy for Ansible&lt;br /&gt;
$&lt;br /&gt;
&lt;br /&gt;
$ cat /etc/issue&lt;br /&gt;
Debian GNU/Linux 12 \n \l&lt;br /&gt;
&lt;br /&gt;
$ &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# looks like debian 13 only has ansible core v2.18, so that won&#039;t help https://packages.debian.org/trixie/ansible&lt;br /&gt;
# fuck it, I just created a symlink. maybe it&#039;ll get deleted a and I&#039;ll have to recreate it again. maybe not&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@mail:/var/lib/mediawiki# ln -s /usr/bin/python3 /usr/bin/python&lt;br /&gt;
root@mail:/var/lib/mediawiki# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# ok, that fixed ansible, and I was able to push-out the udpdated php.ini file&lt;br /&gt;
# restarted php&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@mail:/var/lib/mediawiki# systemctl restart php8.4-fpm&lt;br /&gt;
root@mail:/var/lib/mediawiki# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# ...aaaand the wiki is fixed&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[user@disp3459 ~]$ curl -IL https://wiki.eco-libre.org/&lt;br /&gt;
HTTP/1.1 301 Moved Permanently&lt;br /&gt;
Server: nginx&lt;br /&gt;
Date: Sat, 18 Apr 2026 17:38:39 GMT&lt;br /&gt;
Content-Type: text/html; charset=UTF-8&lt;br /&gt;
Content-Length: 0&lt;br /&gt;
Connection: keep-alive&lt;br /&gt;
X-Content-Type-Options: nosniff&lt;br /&gt;
Vary: Accept-Encoding,Cookie&lt;br /&gt;
Expires: Thu, 01 Jan 1970 00:00:00 GMT&lt;br /&gt;
Cache-Control: private, must-revalidate, max-age=0&lt;br /&gt;
X-Request-Id: REDACTED&lt;br /&gt;
X-Frame-Options: SAMEORIGIN&lt;br /&gt;
Last-Modified: Sat, 18 Apr 2026 17:38:06 GMT&lt;br /&gt;
Location: https://wiki.eco-libre.org/wiki/Main_Page&lt;br /&gt;
X-Content-Type-Options: nosniff&lt;br /&gt;
X-XSS-Protection: 1; mode=block&lt;br /&gt;
X-Frame-Options: deny&lt;br /&gt;
Referrer-Policy: strict-origin&lt;br /&gt;
X-Varnish: 6288299 13705059&lt;br /&gt;
Age: 33&lt;br /&gt;
Via: 1.1 mail (Varnish/7.7)&lt;br /&gt;
Strict-Transport-Security: max-age=86400;includeSubDomains&lt;br /&gt;
&lt;br /&gt;
HTTP/1.1 200 OK&lt;br /&gt;
Server: nginx&lt;br /&gt;
Date: Sat, 18 Apr 2026 17:38:40 GMT&lt;br /&gt;
Content-Type: text/html; charset=UTF-8&lt;br /&gt;
Content-Length: 15926&lt;br /&gt;
Connection: keep-alive&lt;br /&gt;
X-Content-Type-Options: nosniff&lt;br /&gt;
Content-language: en&lt;br /&gt;
Vary: Accept-Encoding,Cookie&lt;br /&gt;
Expires: Thu, 01 Jan 1970 00:00:00 GMT&lt;br /&gt;
Cache-Control: private, must-revalidate, max-age=0&lt;br /&gt;
X-Request-Id: REDACTED&lt;br /&gt;
X-Frame-Options: SAMEORIGIN&lt;br /&gt;
Last-Modified: Sat, 18 Apr 2026 01:16:13 GMT&lt;br /&gt;
X-Mod-Pagespeed: Powered By mod_pagespeed&lt;br /&gt;
X-Content-Type-Options: nosniff&lt;br /&gt;
X-XSS-Protection: 1; mode=block&lt;br /&gt;
X-Frame-Options: deny&lt;br /&gt;
Referrer-Policy: strict-origin&lt;br /&gt;
X-Varnish: 18702490 13705062&lt;br /&gt;
Age: 31&lt;br /&gt;
Via: 1.1 mail (Varnish/7.7)&lt;br /&gt;
Accept-Ranges: bytes&lt;br /&gt;
Strict-Transport-Security: max-age=86400;includeSubDomains&lt;br /&gt;
&lt;br /&gt;
[user@disp3459 ~]$ &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# ...&lt;br /&gt;
# alright, now let&#039;s try to install &amp;amp; configure all the 3TOFU&#039;d extensions&lt;br /&gt;
# we have 6 new extensions to install&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@mail:/var/tmp/mediawiki/extensions.2026-03-29# ls&lt;br /&gt;
ConfirmAccount-REL1_43-38c4602.tar.gz  extensions.txt  OATHAuth-REL1_43-015a49e.tar.gz   UserMerge-REL1_43-27425da.tar.gz&lt;br /&gt;
DeleteBatch-REL1_43-b3b052b.tar.gz     info.txt        SmiteSpam-REL1_43-483b81b.tar.gz  Widgets-REL1_43-60a09f0.tar.gz&lt;br /&gt;
root@mail:/var/tmp/mediawiki/extensions.2026-03-29# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# I extracted them&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@mail:/var/tmp/mediawiki/extensions.2026-03-29# for file in $(ls *.tar.gz); do tar -xvf $file; done.&lt;br /&gt;
...&lt;br /&gt;
Widgets/vendor/smarty/smarty/CHANGELOG.md&lt;br /&gt;
Widgets/COPYING&lt;br /&gt;
root@mail:/var/tmp/mediawiki/extensions.2026-03-29#&lt;br /&gt;
&lt;br /&gt;
root@mail:/var/tmp/mediawiki/extensions.2026-03-29# ls&lt;br /&gt;
ConfirmAccount                         info.txt                          UserMerge&lt;br /&gt;
ConfirmAccount-REL1_43-38c4602.tar.gz  OATHAuth                          UserMerge-REL1_43-27425da.tar.gz&lt;br /&gt;
DeleteBatch                            OATHAuth-REL1_43-015a49e.tar.gz   Widgets&lt;br /&gt;
DeleteBatch-REL1_43-b3b052b.tar.gz     SmiteSpam                         Widgets-REL1_43-60a09f0.tar.gz&lt;br /&gt;
extensions.txt                         SmiteSpam-REL1_43-483b81b.tar.gz&lt;br /&gt;
root@mail:/var/tmp/mediawiki/extensions.2026-03-29# &lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# let&#039;s start with OATHAuth, which is probably the most important (for security)&lt;br /&gt;
# oh wait, we already have OATHAuth??&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@mail:/var/tmp/mediawiki/extensions.2026-03-29# ls /var/www/html/wiki.eco-libre.org/htdocs/extensions/&lt;br /&gt;
AbuseFilter   ConfirmEdit      InputBox     MultimediaViewer  PdfHandler       SpamBlacklist          TitleBlacklist&lt;br /&gt;
CategoryTree  DiscussionTools  Interwiki    Nuke              Poem             SyntaxHighlight_GeSHi  VisualEditor&lt;br /&gt;
Cite          Echo             Linter       OATHAuth          ReplaceText      TemplateData           WikiEditor&lt;br /&gt;
CiteThisPage  Gadgets          LoginNotify  PageImages        Scribunto        TextExtracts&lt;br /&gt;
CodeEditor    ImageMap         Math         ParserFunctions   SecureLinkFixer  Thanks&lt;br /&gt;
root@mail:/var/tmp/mediawiki/extensions.2026-03-29# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# ugh, yeah, this syas it has been inclued in MediaWiki core since v1.31 https://www.mediawiki.org/wiki/Extension:OATHAuth&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
This extension comes with MediaWiki 1.31 and later, so you do not need to download it. The remaining configuration instructions must still be followed.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# well, maybe that&#039;s why it got updated so much. anyway, that&#039;s better; we get it directly from apt&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@mail:/var/tmp/mediawiki/extensions.2026-03-29# dpkg -l | grep -i mediawiki&lt;br /&gt;
ii  mediawiki                         1:1.43.8+dfsg-1~deb13u1                 all          website engine for collaborative work&lt;br /&gt;
ii  mediawiki-classes                 1:1.43.8+dfsg-1~deb13u1                 all          website engine for collaborative work - standalone classes&lt;br /&gt;
root@mail:/var/tmp/mediawiki/extensions.2026-03-29# &lt;br /&gt;
&lt;br /&gt;
root@mail:/var/tmp/mediawiki/extensions.2026-03-29# dpkg-query -L mediawiki | grep -i oathauth | head&lt;br /&gt;
/usr/share/mediawiki/extensions-core/OATHAuth&lt;br /&gt;
/usr/share/mediawiki/extensions-core/OATHAuth/COPYING&lt;br /&gt;
/usr/share/mediawiki/extensions-core/OATHAuth/OATHAuth.alias.php&lt;br /&gt;
/usr/share/mediawiki/extensions-core/OATHAuth/ServiceWiring.php&lt;br /&gt;
/usr/share/mediawiki/extensions-core/OATHAuth/composer.json&lt;br /&gt;
/usr/share/mediawiki/extensions-core/OATHAuth/extension.json&lt;br /&gt;
/usr/share/mediawiki/extensions-core/OATHAuth/i18n&lt;br /&gt;
/usr/share/mediawiki/extensions-core/OATHAuth/i18n/ang.json&lt;br /&gt;
/usr/share/mediawiki/extensions-core/OATHAuth/i18n/api&lt;br /&gt;
/usr/share/mediawiki/extensions-core/OATHAuth/i18n/api/ar.json&lt;br /&gt;
root@mail:/var/tmp/mediawiki/extensions.2026-03-29# &lt;br /&gt;
&lt;br /&gt;
root@mail:/var/tmp/mediawiki/extensions.2026-03-29# dpkg-query -L mediawiki | grep -i oathauth | tail&lt;br /&gt;
/usr/share/mediawiki/extensions-core/OATHAuth/src/OATHAuth.php&lt;br /&gt;
/usr/share/mediawiki/extensions-core/OATHAuth/src/OATHAuthModuleRegistry.php&lt;br /&gt;
/usr/share/mediawiki/extensions-core/OATHAuth/src/OATHAuthServices.php&lt;br /&gt;
/usr/share/mediawiki/extensions-core/OATHAuth/src/OATHUser.php&lt;br /&gt;
/usr/share/mediawiki/extensions-core/OATHAuth/src/OATHUserRepository.php&lt;br /&gt;
/usr/share/mediawiki/extensions-core/OATHAuth/src/Special&lt;br /&gt;
/usr/share/mediawiki/extensions-core/OATHAuth/src/Special/DisableOATHForUser.php&lt;br /&gt;
/usr/share/mediawiki/extensions-core/OATHAuth/src/Special/OATHManage.php&lt;br /&gt;
/usr/share/mediawiki/extensions-core/OATHAuth/src/Special/VerifyOATHForUser.php&lt;br /&gt;
/var/lib/mediawiki/extensions/OATHAuth&lt;br /&gt;
root@mail:/var/tmp/mediawiki/extensions.2026-03-29# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# I wonder if there&#039;s any others we get? looks like it&#039;s only this one&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@mail:/var/tmp/mediawiki/extensions.2026-03-29# ls /usr/share/mediawiki/extensions-core | grep -iE &#039;ConfirmAccount|SmiteSpam|DeleteBatch|UserMerge|Widgets|OATHAuth&#039;&lt;br /&gt;
OATHAuth&lt;br /&gt;
root@mail:/var/tmp/mediawiki/extensions.2026-03-29# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# just another quick check – none of these are in apt either&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@mail:/var/tmp/mediawiki/extensions.2026-03-29# apt-cache search mediawiki | grep -i extension&lt;br /&gt;
libreoffice-wiki-publisher - LibreOffice extension for working with MediaWiki articles&lt;br /&gt;
mediawiki-extension-codemirror - Syntax highlighting in MediaWiki&#039;s wikitext editor&lt;br /&gt;
mediawiki-extension-youtube - Embed YouTube and other videos into MediaWiki pages&lt;br /&gt;
php-luasandbox - PHP extension that provides a sandboxed Lua environment&lt;br /&gt;
php-wmerrors - PHP extension that enhances and customizes handling of PHP errors&lt;br /&gt;
root@mail:/var/tmp/mediawiki/extensions.2026-03-29# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# anyway, back to OATHAuth&lt;br /&gt;
## it says to enable caching&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
It is strongly recommended to setup caching when using OATHAuth.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# I confirmed that we already have cachign setup with APC&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@mail:/var/www/html/wiki.eco-libre.org# grep -ir cache LocalSettings.php &lt;br /&gt;
$wgMainCacheType = CACHE_ACCEL;&lt;br /&gt;
$wgMemCachedServers = [];&lt;br /&gt;
## Set $wgCacheDirectory to a writable directory on the web server&lt;br /&gt;
#$wgCacheDirectory = &amp;quot;$IP/cache&amp;quot;;&lt;br /&gt;
$wgCacheDirectory = &amp;quot;/var/www/html/wiki.eco-libre.org/cache&amp;quot;;&lt;br /&gt;
root@mail:/var/www/html/wiki.eco-libre.org# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
### CACHE_ACCEL means APC, which is the recommended option for single-server wikis, per the official mediawiki docs on performance tuning https://www.mediawiki.org/wiki/Manual:Performance_tuning#Single_web_server&lt;br /&gt;
### it also says to ue varnish. check&lt;br /&gt;
### it also says to use php-fpm w/ event MPM (instead of mod_php with prefork MPM), which we changed-to last month. check.&lt;br /&gt;
## our notes from OSE had the following options https://wiki.opensourceecology.org/wiki/CHG-2025-XX-XX_migrate_wiki_to_hetzner3&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
wfLoadExtension( &#039;OATHAuth&#039; );&lt;br /&gt;
&lt;br /&gt;
# Relaxed mode with +/- 4 minutes time drift tolerance. This is important or users will complain and/or disable 2FA entirely&lt;br /&gt;
# The security consequences are small. The usability benefits are huge.&lt;br /&gt;
$wgOATHAuthWindowRadius = 8;&lt;br /&gt;
&lt;br /&gt;
# make admins require 2FA&lt;br /&gt;
$wgOATHRequiredForGroups = [&#039;sysop&#039;, &#039;interface-admin&#039;, &#039;bureaucrat&#039;, &#039;suppress&#039;, &#039;widgeteditor&#039; ];&lt;br /&gt;
&lt;br /&gt;
# make &#039;powerful&#039; rights require 2FA&lt;br /&gt;
$wgOATHExclusiveRights =  [ &#039;apihighlimits&#039;, &#039;applychangetags&#039;, &#039;autoconfirmed&#039;, &#039;autopatrol&#039;, &#039;bigdelete&#039;, &#039;block&#039;, &#039;blockemail&#039;, &#039;bot&#039;, &#039;changetags&#039;, &#039;createaccount&#039;, &#039;createtalk&#039;, &#039;delete&#039;, &#039;deletechangetags&#039;, &#039;deletedhistory&#039;, &#039;deletedtext&#039;, &#039;deletelogentry&#039;, &#039;deleterevision&#039;, &#039;editcontentmodel&#039;, &#039;editinterface&#039;, &#039;editprotected&#039;, &#039;editsemiprotected&#039;, &#039;editsitecss&#039;, &#039;editsitejs&#039;, &#039;editsitejson&#039;, &#039;editusercss&#039;, &#039;edituserjs&#039;, &#039;edituserjson&#039;, &#039;hideuser&#039;, &#039;import&#039;, &#039;importupload&#039;, &#039;ipblock-exempt&#039;, &#039;managechangetags&#039;, &#039;markbotedits&#039;, &#039;mergehistory&#039;, &#039;move-categorypages&#039;, &#039;move-rootuserpages&#039;, &#039;move-subpages&#039;, &#039;nominornewtalk&#039;, &#039;noratelimit&#039;, &#039;patrol&#039;, &#039;protect&#039;, &#039;renameuser&#039;, &#039;reupload-shared&#039;, &#039;sendemail&#039;, &#039;suppressionlog&#039;, &#039;suppressredirect&#039;, &#039;suppressrevision&#039;, &#039;unblockself&#039;, &#039;unwatchedpages&#039;, &#039;userrights&#039;, ];&lt;br /&gt;
&lt;br /&gt;
# full list for reference (taken from htdocs/includes/MainConfigSchema.php) https://www.mediawiki.org/wiki/Extension:OATHAuth#Configuration&lt;br /&gt;
#$wgOATHExclusiveRights =  [ &#039;apihighlimits&#039;, &#039;applychangetags&#039;, &#039;autoconfirmed&#039;, &#039;autopatrol&#039;, &#039;bigdelete&#039;, &#039;block&#039;, &#039;blockemail&#039;, &#039;bot&#039;, &#039;browsearchive&#039;, &#039;changetags&#039;, &#039;createaccount&#039;, &#039;createpage&#039;, &#039;createtalk&#039;, &#039;delete&#039;, &#039;deletechangetags&#039;, &#039;deletedhistory&#039;, &#039;deletedtext&#039;, &#039;deletelogentry&#039;, &#039;deleterevision&#039;, &#039;edit&#039;, &#039;editcontentmodel&#039;, &#039;editinterface&#039;, &#039;editmyoptions&#039;, &#039;editmyprivateinfo&#039;, &#039;editmyusercss&#039;, &#039;editmyuserjs&#039;, &#039;editmyuserjson&#039;, &#039;editmyuserjsredirect&#039;, &#039;editmywatchlist&#039;, &#039;editprotected&#039;, &#039;editsemiprotected&#039;, &#039;editsitecss&#039;, &#039;editsitejs&#039;, &#039;editsitejson&#039;, &#039;editusercss&#039;, &#039;edituserjs&#039;, &#039;edituserjson&#039;, &#039;hideuser&#039;, &#039;import&#039;, &#039;importupload&#039;, &#039;ipblock-exempt&#039;, &#039;managechangetags&#039;, &#039;markbotedits&#039;, &#039;mergehistory&#039;, &#039;minoredit&#039;, &#039;move&#039;, &#039;move-categorypages&#039;, &#039;movefile&#039;, &#039;move-rootuserpages&#039;, &#039;move-subpages&#039;, &#039;nominornewtalk&#039;, &#039;noratelimit&#039;, &#039;patrol&#039;, &#039;protect&#039;, &#039;read&#039;, &#039;renameuser&#039;, &#039;reupload&#039;, &#039;reupload-shared&#039;, &#039;rollback&#039;, &#039;sendemail&#039;, &#039;suppressionlog&#039;, &#039;suppressredirect&#039;, &#039;suppressrevision&#039;, &#039;unblockself&#039;, &#039;undelete&#039;, &#039;unwatchedpages&#039;, &#039;upload&#039;, &#039;userrights&#039;, &#039;viewmyprivateinfo&#039;, &#039;viewmywatchlist&#039;, &#039;viewsuppressed&#039; ];&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
### I strongly agree with the relaxed window of codes&lt;br /&gt;
### I guess that list of requirements is good&lt;br /&gt;
### the other two are no longer listed on the wiki, but I guess they&#039;re good ?&lt;br /&gt;
## the docs show an additional option = $wgOATHSecretKey, used for encrypting the secret keys in the db. it suggests this command to generate it https://www.mediawiki.org/wiki/Extension:OATHAuth&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
hexdump -vn32 -e&#039;8/8 &amp;quot;%08X&amp;quot; &amp;quot;\n&amp;quot;&#039; /dev/urandom&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
### says it&#039;s only available since 1.45. I&#039;m not sure if that&#039;s the mediawiki version or the extension version.&lt;br /&gt;
### oh, I guess it&#039;s mediawiki, since they ship together. We&#039;re running 1.43.8, so I guess we can&#039;t use it yet https://wiki.eco-libre.org/wiki/Special:Version&lt;br /&gt;
### well, I guess let&#039;s define it. then it&#039;ll automatically start to use it when we upgrade to the next LTS. I think.&lt;br /&gt;
## ok, here&#039;s what I added&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@mail:/var/www/html/wiki.eco-libre.org# diff LocalSettings.20260418.php LocalSettings.php &lt;br /&gt;
220a221,240&lt;br /&gt;
&amp;gt; &lt;br /&gt;
&amp;gt; # configure OATHAuth for MFA (2FA). See also:&lt;br /&gt;
&amp;gt; # * https://www.mediawiki.org/wiki/Extension:OATHAuth&lt;br /&gt;
&amp;gt; # * https://wiki.eco-libre.org/wiki/Maltfield_Log/2026&lt;br /&gt;
&amp;gt; wfLoadExtension( &#039;OATHAuth&#039; );&lt;br /&gt;
&amp;gt; &lt;br /&gt;
&amp;gt; # Relaxed mode with +/- 4 minutes time drift tolerance. This is important or users will complain and/or disable 2FA entirely&lt;br /&gt;
&amp;gt; # The security consequences are small. The usability benefits are huge.&lt;br /&gt;
&amp;gt; $wgOATHAuthWindowRadius = 8;&lt;br /&gt;
&amp;gt; &lt;br /&gt;
&amp;gt; # make admins require 2FA&lt;br /&gt;
&amp;gt; $wgOATHRequiredForGroups = [&#039;sysop&#039;, &#039;interface-admin&#039;, &#039;bureaucrat&#039;, &#039;suppress&#039;, &#039;widgeteditor&#039; ];&lt;br /&gt;
&amp;gt; &lt;br /&gt;
&amp;gt; # make &#039;powerful&#039; rights require 2FA&lt;br /&gt;
&amp;gt; $wgOATHExclusiveRights =  [ &#039;apihighlimits&#039;, &#039;applychangetags&#039;, &#039;autoconfirmed&#039;, &#039;autopatrol&#039;, &#039;bigdelete&#039;, &#039;block&#039;, &#039;blockemail&#039;, &#039;bot&#039;, &#039;changetags&#039;, &#039;createaccount&#039;, &#039;createtalk&#039;, &#039;delete&#039;, &#039;deletechangetags&#039;, &#039;deletedhistory&#039;, &#039;deletedtext&#039;, &#039;deletelogentry&#039;, &#039;deleterevision&#039;, &#039;editcontentmodel&#039;, &#039;editinterface&#039;, &#039;editprotected&#039;, &#039;editsemiprotected&#039;, &#039;editsitecss&#039;, &#039;editsitejs&#039;, &#039;editsitejson&#039;, &#039;editusercss&#039;, &#039;edituserjs&#039;, &#039;edituserjson&#039;, &#039;hideuser&#039;, &#039;import&#039;, &#039;importupload&#039;, &#039;ipblock-exempt&#039;, &#039;managechangetags&#039;, &#039;markbotedits&#039;, &#039;mergehistory&#039;, &#039;move-categorypages&#039;, &#039;move-rootuserpages&#039;, &#039;move-subpages&#039;, &#039;nominornewtalk&#039;, &#039;noratelimit&#039;, &#039;patrol&#039;, &#039;protect&#039;, &#039;renameuser&#039;, &#039;reupload-shared&#039;, &#039;sendemail&#039;, &#039;suppressionlog&#039;, &#039;suppressredirect&#039;, &#039;suppressrevision&#039;, &#039;unblockself&#039;, &#039;unwatchedpages&#039;, &#039;userrights&#039;, ];&lt;br /&gt;
&amp;gt; &lt;br /&gt;
&amp;gt; # full list for reference (taken from htdocs/includes/MainConfigSchema.php) https://www.mediawiki.org/wiki/Extension:OATHAuth#Configuration&lt;br /&gt;
&amp;gt; #$wgOATHExclusiveRights =  [ &#039;apihighlimits&#039;, &#039;applychangetags&#039;, &#039;autoconfirmed&#039;, &#039;autopatrol&#039;, &#039;bigdelete&#039;, &#039;block&#039;, &#039;blockemail&#039;, &#039;bot&#039;, &#039;browsearchive&#039;, &#039;changetags&#039;, &#039;createaccount&#039;, &#039;createpage&#039;, &#039;createtalk&#039;, &#039;delete&#039;, &#039;deletechangetags&#039;, &#039;deletedhistory&#039;, &#039;deletedtext&#039;, &#039;deletelogentry&#039;, &#039;deleterevision&#039;, &#039;edit&#039;, &#039;editcontentmodel&#039;, &#039;editinterface&#039;, &#039;editmyoptions&#039;, &#039;editmyprivateinfo&#039;, &#039;editmyusercss&#039;, &#039;editmyuserjs&#039;, &#039;editmyuserjson&#039;, &#039;editmyuserjsredirect&#039;, &#039;editmywatchlist&#039;, &#039;editprotected&#039;, &#039;editsemiprotected&#039;, &#039;editsitecss&#039;, &#039;editsitejs&#039;, &#039;editsitejson&#039;, &#039;editusercss&#039;, &#039;edituserjs&#039;, &#039;edituserjson&#039;, &#039;hideuser&#039;, &#039;import&#039;, &#039;importupload&#039;, &#039;ipblock-exempt&#039;, &#039;managechangetags&#039;, &#039;markbotedits&#039;, &#039;mergehistory&#039;, &#039;minoredit&#039;, &#039;move&#039;, &#039;move-categorypages&#039;, &#039;movefile&#039;, &#039;move-rootuserpages&#039;, &#039;move-subpages&#039;, &#039;nominornewtalk&#039;, &#039;noratelimit&#039;, &#039;patrol&#039;, &#039;protect&#039;, &#039;read&#039;, &#039;renameuser&#039;, &#039;reupload&#039;, &#039;reupload-shared&#039;, &#039;rollback&#039;, &#039;sendemail&#039;, &#039;suppressionlog&#039;, &#039;suppressredirect&#039;, &#039;suppressrevision&#039;, &#039;unblockself&#039;, &#039;undelete&#039;, &#039;unwatchedpages&#039;, &#039;upload&#039;, &#039;userrights&#039;, &#039;viewmyprivateinfo&#039;, &#039;viewmywatchlist&#039;, &#039;viewsuppressed&#039; ];&lt;br /&gt;
&amp;gt; &lt;br /&gt;
&amp;gt; $wgOATHSecretKey=&#039;REDACTED&#039;;&lt;br /&gt;
root@mail:/var/www/html/wiki.eco-libre.org# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## ok, now let&#039;s update the db&lt;br /&gt;
### oh, this failed. we need to use the special privliged db user, since we hardened the normal db user&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@mail:/var/www/html/wiki.eco-libre.org# sudo -u www-data php /usr/share/mediawiki/maintenance/run.php update&lt;br /&gt;
MediaWiki 1.43.8 Updater&lt;br /&gt;
&lt;br /&gt;
Your composer.lock file is up to date with current dependencies!&lt;br /&gt;
Going to run database updates for wiki_el_db-rHb3&lt;br /&gt;
Depending on the size of your database this may take a while!&lt;br /&gt;
Abort with control-c in the next five seconds (skip this countdown with --quick) ...0&lt;br /&gt;
Updating category collations...&lt;br /&gt;
Selecting next 100 pages from cl_from = 0... processing... 0 done.&lt;br /&gt;
0 rows processed&lt;br /&gt;
...done.&lt;br /&gt;
Modifying rd_title field of table redirect...Wikimedia\Rdbms\DBQueryError from line 1198 of /usr/share/mediawiki/includes/libs/rdbms/database/Database.php: Error 1142: ALTER command denied to user &#039;wiki_el_user&#039;@&#039;localhost&#039; for table `wiki_el_db`.`rHb3redirect`&lt;br /&gt;
Function: Wikimedia\Rdbms\Database::sourceFile( /usr/share/mediawiki/maintenance/archives/patch-redirect-rd_title-varbinary.sql )&lt;br /&gt;
Query: ALTER TABLE `rHb3redirect` MODIFY rd_title VARBINARY(255) NOT NULL default &#039;&#039;,&lt;br /&gt;
 MODIFY rd_fragment VARBINARY(255) default NULL&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#0 /usr/share/mediawiki/includes/libs/rdbms/database/Database.php(1182): Wikimedia\Rdbms\Database-&amp;gt;getQueryException()&lt;br /&gt;
#1 /usr/share/mediawiki/includes/libs/rdbms/database/Database.php(1156): Wikimedia\Rdbms\Database-&amp;gt;getQueryExceptionAndLog()&lt;br /&gt;
#2 /usr/share/mediawiki/includes/libs/rdbms/database/Database.php(647): Wikimedia\Rdbms\Database-&amp;gt;reportQueryError()&lt;br /&gt;
#3 /usr/share/mediawiki/includes/libs/rdbms/database/Database.php(2791): Wikimedia\Rdbms\Database-&amp;gt;query()&lt;br /&gt;
#4 /usr/share/mediawiki/includes/libs/rdbms/database/Database.php(2729): Wikimedia\Rdbms\Database-&amp;gt;sourceStream()&lt;br /&gt;
#5 /usr/share/mediawiki/includes/libs/rdbms/database/DBConnRef.php(127): Wikimedia\Rdbms\Database-&amp;gt;sourceFile()&lt;br /&gt;
#6 /usr/share/mediawiki/includes/libs/rdbms/database/DBConnRef.php(799): Wikimedia\Rdbms\DBConnRef-&amp;gt;__call()&lt;br /&gt;
#7 /usr/share/mediawiki/includes/installer/DatabaseUpdater.php(797): Wikimedia\Rdbms\DBConnRef-&amp;gt;sourceFile()&lt;br /&gt;
#8 /usr/share/mediawiki/includes/installer/DatabaseUpdater.php(1074): MediaWiki\Installer\DatabaseUpdater-&amp;gt;applyPatch()&lt;br /&gt;
#9 /usr/share/mediawiki/includes/installer/DatabaseUpdater.php(595): MediaWiki\Installer\DatabaseUpdater-&amp;gt;modifyField()&lt;br /&gt;
#10 /usr/share/mediawiki/includes/installer/DatabaseUpdater.php(548): MediaWiki\Installer\DatabaseUpdater-&amp;gt;runUpdates()&lt;br /&gt;
#11 /usr/share/mediawiki/maintenance/update.php(195): MediaWiki\Installer\DatabaseUpdater-&amp;gt;doUpdates()&lt;br /&gt;
#12 /usr/share/mediawiki/maintenance/includes/MaintenanceRunner.php(703): UpdateMediaWiki-&amp;gt;execute()&lt;br /&gt;
#13 /usr/share/mediawiki/maintenance/run.php(51): MediaWiki\Maintenance\MaintenanceRunner-&amp;gt;run()&lt;br /&gt;
#14 {main}&lt;br /&gt;
root@mail:/var/www/html/wiki.eco-libre.org# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# alright, this worked&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@mail:/var/www/html/wiki.eco-libre.org# sudo -u www-data php /usr/share/mediawiki/maintenance/run.php update --dbuser wiki_el_superuser --dbpass REDACTED&lt;br /&gt;
...&lt;br /&gt;
done.&lt;br /&gt;
Purging caches...done.&lt;br /&gt;
&lt;br /&gt;
Done in 8.3 s.&lt;br /&gt;
root@mail:/var/www/html/wiki.eco-libre.org# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## after that, I tried to login. it worked&lt;br /&gt;
## I expected to be sent to some 2fa registration page, but that didn&#039;t happen. it was just like any normal login&lt;br /&gt;
## I went to special pages to see if I could get it to yell at me to enable 2fa, but that didn&#039;t happen&lt;br /&gt;
### I only see the following bold options on /wiki/Special:SpecialPages (usually admin page). I wonder if this is a subset because the others are just hidden since I don&#039;t have 2FA setup? https://wiki.eco-libre.org/wiki/Special:SpecialPages&lt;br /&gt;
#### Manage Two-Factor Authentication, Watchlist, Upload file, Change content model of a page&lt;br /&gt;
## anyway, I went to &amp;quot;Manage Two-factor authentication&amp;quot; https://wiki.eco-libre.org/wiki/Special:AccountSecurity&lt;br /&gt;
## I clicked the &amp;quot;Enable&amp;quot; button under TOTP&lt;br /&gt;
## I scanned the code. It entered it in my TOTP app as &amp;quot;Eco-Libre&amp;quot; – that&#039;s not ideal. It should say &amp;quot;Eco-Libre Wiki&amp;quot;&lt;br /&gt;
## So I updated the LocalSettings.php config with&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# This is the name that the entry will have in the user&#039;s TOTP app&lt;br /&gt;
$wgOATHAuthAccountPrefix=&#039;Eco-Libre Wiki&#039;;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## anyway, I was able to finish the 2FA enrollment process&lt;br /&gt;
## I went back to SpecialPages, and already I see a *ton* more SpecialPages in bold. So it looks like that restriction worked. Currently I have access to&lt;br /&gt;
### Unwateched pages, Block user, Create account, Delete user contributions, Disable user&#039;s two-factor authentication, Rename user, Unblock user, Verify two-factor authentication status, Watchlist, Upload file, Replace text, Change content model of a page, Import pages, Mass delete, Merge page histories, and View deleted pages.&lt;br /&gt;
## I also have a notifcation &amp;quot;Two-factor authenication has been enabeld on your account. If you did not do this, your account may have been comprimised.&amp;quot;&lt;br /&gt;
## I logged-out&lt;br /&gt;
## I logged-in.&lt;br /&gt;
### First I teted it with 6 zeros (bullshit code), and it rejected it&lt;br /&gt;
### next I entered the real OTP from my app; it worked&lt;br /&gt;
## ok, this extension is done.&lt;br /&gt;
# ...&lt;br /&gt;
# probably the next-most important one is ConfirmAccount.&lt;br /&gt;
## Honestly I don&#039;t know if I&#039;ll use this, as I decided it&#039;s better to raise the barrier of entry on the wiki to users that have passed the Eco-Libre test (which is itself very accessible, but it does allow for a onboarding &amp;amp; alignment process that should eliminate spam issues that most wikis have)&lt;br /&gt;
## perhaps if I can set it up to email the applicant a link to the &amp;quot;volunteer test&amp;quot; docs, that would be helpful to funnel wiki users into the proper volunteer join workflow..&lt;br /&gt;
# first let me copy the extensions; I ran these commands to put them in-place (yet still deactivated)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
rsync -av --progress ./ConfirmAccount /var/www/html/wiki.eco-libre.org/htdocs/extensions/&lt;br /&gt;
rsync -av --progress ./SmiteSpam /var/www/html/wiki.eco-libre.org/htdocs/extensions/&lt;br /&gt;
rsync -av --progress ./DeleteBatch /var/www/html/wiki.eco-libre.org/htdocs/extensions/&lt;br /&gt;
rsync -av --progress ./UserMerge /var/www/html/wiki.eco-libre.org/htdocs/extensions/&lt;br /&gt;
rsync -av --progress ./Widgets /var/www/html/wiki.eco-libre.org/htdocs/extensions/&lt;br /&gt;
rsync -av --progress ./OATHAuth /var/www/html/wiki.eco-libre.org/htdocs/extensions/&lt;br /&gt;
fix_web_permissions.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## that finished&lt;br /&gt;
# ok, here&#039;s the ConfirmAccount https://www.mediawiki.org/wiki/Extension:ConfirmAccount&lt;br /&gt;
## hmmm...it says we should use cache type CACHE_DB https://www.mediawiki.org/wiki/Extension:ConfirmAccount#Installation&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
wfLoadExtension( &#039;ConfirmAccount&#039; );&lt;br /&gt;
$wgSessionCacheType = CACHE_DB; // Avoids stale session state across requests.&lt;br /&gt;
$wgGroupPermissions[&#039;*&#039;][&#039;createaccount&#039;] = false; // REQUIRED to enforce account requests&lt;br /&gt;
$wgGroupPermissions[&#039;bureaucrat&#039;][&#039;createaccount&#039;] = true; // Optional to allow account creation by this trusted user group&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
#### I can&#039;t find elsewhere that says this specific cache type is requried. We&#039;re using APC, which I think is supposed to be more preformant than &lt;br /&gt;
### I checked the OSE LocalSettings.php config, and it also uses ConfirmAccount *and* CACHE_ACCEL (APC), so surely it&#039;s fine&lt;br /&gt;
### but it also used a bunch of other optimiazations, some of which are necessary for varnish caching&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#################&lt;br /&gt;
# VARNISH CACHE #&lt;br /&gt;
#################&lt;br /&gt;
&lt;br /&gt;
# note that these are named &amp;quot;squid&amp;quot; for historical reasons: wikipedia used to&lt;br /&gt;
# use squid, now they use varnish. They say &amp;quot;squid,&amp;quot; but also apply to varnish&lt;br /&gt;
# * https://www.mediawiki.org/wiki/Manual:Configuration_settings#Squid&lt;br /&gt;
&lt;br /&gt;
# See this guide for more info:&lt;br /&gt;
#  * https://www.mediawiki.org/wiki/Manual:Varnish_caching&lt;br /&gt;
&lt;br /&gt;
#$wgUseSquid = true;&lt;br /&gt;
#$wgSquidServers = array(&#039;opensourceecology.org&#039;);&lt;br /&gt;
#$wgSquidServersNoPurge = array(&#039;127.0.0.1&#039;);&lt;br /&gt;
&lt;br /&gt;
$wgUseSquid = true;&lt;br /&gt;
$wgSquidServers = array( &#039;127.0.0.1:6081&#039; );&lt;br /&gt;
$wgUsePrivateIPs = true;&lt;br /&gt;
&lt;br /&gt;
#################&lt;br /&gt;
# OPTIMIZATIONS #&lt;br /&gt;
#################&lt;br /&gt;
&lt;br /&gt;
# See these links for more info:&lt;br /&gt;
#  * https://www.mediawiki.org/wiki/Manual:Performance_tuning&lt;br /&gt;
#  * https://www.mediawiki.org/wiki/Manual:Caching&lt;br /&gt;
#  * https://www.mediawiki.org/wiki/User:Aaron_Schulz/How_to_make_MediaWiki_fast&lt;br /&gt;
&lt;br /&gt;
# INTERNAL MEDIAWIKI CACHE OPTIONS (DISTINCT FROM VARNISH)&lt;br /&gt;
&lt;br /&gt;
# MainCache and MessageCache should use APCU per Aaron Schulz&lt;br /&gt;
$wgMainCacheType = CACHE_ACCEL;&lt;br /&gt;
&lt;br /&gt;
# note that if message cache uses the db (per defaults), then it may make every&lt;br /&gt;
# page load include a db change, which causes mediawiki to emmit a set-cookie&lt;br /&gt;
# for cpPosTime. The cookie&#039;s presence coming from the backend causes varnish&lt;br /&gt;
# not to cache the page (rightfully so), and the result is that varnish (which&lt;br /&gt;
# is our most important cache) is rendered useless. For more info, see:&lt;br /&gt;
#  * https://www.mediawiki.org/wiki/Topic:U9fys4phj04a85vu&lt;br /&gt;
#  * https://wiki.opensourceecology.org/wiki/Maltfield_log_2018#Thr_Mar_15.2C_2018&lt;br /&gt;
$wgMessageCacheType = CACHE_ACCEL;&lt;br /&gt;
$wgUseLocalMessageCache = true;&lt;br /&gt;
&lt;br /&gt;
# Parser Cache should still use the DB per Aaron Schulz&lt;br /&gt;
$wgParserCacheType = CACHE_DB;&lt;br /&gt;
&lt;br /&gt;
# enable caching navigation sidebar per Aaron Schulz&lt;br /&gt;
$wgEnableSidebarCache = true;&lt;br /&gt;
&lt;br /&gt;
# cache interface messages to files in this directory per Aaron Schulz&lt;br /&gt;
# note that this should be outside the docroot!&lt;br /&gt;
$wgCacheDirectory = &amp;quot;$IP/../cache&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
# OTHER OPTIMIZATIONS&lt;br /&gt;
&lt;br /&gt;
# decrease db-heavy features per Aaron Schulz&lt;br /&gt;
$wgMiserMode = true;&lt;br /&gt;
&lt;br /&gt;
# Causes serious encoding problems&lt;br /&gt;
$wgUseGzip = false;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## I added this to our LocalSettings.php, except I hard-coded the wgCacheDirectory to &#039;/var/www/html/wiki.eco-libre.org/cache&#039;&lt;br /&gt;
## here&#039;s the ConfirmAccounts-related (and ConfirmEdit-related) config from OSE&#039;s LocalSettings.php&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# ConfirmAccount&lt;br /&gt;
# This extension and directory requires an admin to confirm a user before their &lt;br /&gt;
account is created&lt;br /&gt;
&lt;br /&gt;
require_once &amp;quot;$IP/extensions/ConfirmAccount/ConfirmAccount.php&amp;quot;;&lt;br /&gt;
$wgFileStore[&#039;accountreqs&#039;] = &amp;quot;$IP/images/ConfirmAccount&amp;quot;;&lt;br /&gt;
$wgFileStore[&#039;accountcreds&#039;] = &amp;quot;$IP/images/ConfirmAccount&amp;quot;;&lt;br /&gt;
$wgConfirmAccountContact = &#039;REDACTED@opensourceecology.org&#039;;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# ConfirmEdit&lt;br /&gt;
# reCaptcha settings and keys&lt;br /&gt;
&lt;br /&gt;
wfLoadExtensions([ &#039;ConfirmEdit&#039;, &#039;ConfirmEdit/ReCaptcha&#039; ]);&lt;br /&gt;
#$wgCaptchaClass = &#039;ReCaptcha&#039;;&lt;br /&gt;
$wgCaptchaClass = &#039;SimpleCaptcha&#039;;&lt;br /&gt;
#$wgCaptchaClass = &#039;QuestyCaptcha&#039;;&lt;br /&gt;
&lt;br /&gt;
#$wgReCaptchaPublicKey = &#039;REDACTED&#039;;&lt;br /&gt;
#$wgReCaptchaPrivateKey = &#039;REDACTED&#039;;&lt;br /&gt;
$wgReCaptchaPublicKey = &#039;REDACTED&#039;;&lt;br /&gt;
$wgReCaptchaPrivateKey = &#039;REDACTED&#039;;&lt;br /&gt;
&lt;br /&gt;
# https://www.google.com/recaptcha/admin/site?siteid=REDACTED - old style&lt;br /&gt;
#$recaptcha_public_key = &#039;REDACTED&#039;;&lt;br /&gt;
#$recaptcha_private_key = &#039;REDACTED&#039;;&lt;br /&gt;
&lt;br /&gt;
$wgGroupPermissions[&#039;*&#039;            ][&#039;skipcaptcha&#039;] = false;&lt;br /&gt;
$wgGroupPermissions[&#039;user&#039;         ][&#039;skipcaptcha&#039;] = true;&lt;br /&gt;
$wgGroupPermissions[&#039;autoconfirmed&#039;][&#039;skipcaptcha&#039;] = true;&lt;br /&gt;
$wgGroupPermissions[&#039;bot&#039;          ][&#039;skipcaptcha&#039;] = true; // registered bots&lt;br /&gt;
$wgGroupPermissions[&#039;sysop&#039;        ][&#039;skipcaptcha&#039;] = true;&lt;br /&gt;
&lt;br /&gt;
# Allow admins to approve (and unapprove) users via Special:UserRights&lt;br /&gt;
$wgAddGroups[&#039;sysop&#039;][&#039;approved&#039;] = true;&lt;br /&gt;
$wgRemoveGroups[&#039;sysop&#039;][&#039;approved&#039;] = true;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## of note is that I was planning on moving OSE from recaptcha to FancyCaptcha https://wiki.opensourceecology.org/wiki/CHG-2025-XX-XX_migrate_wiki_to_hetzner3&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# re-enable ConfirmEdit and switch to FancyCaption&lt;br /&gt;
grep &#039;FancyCaptcha&#039; ${vhostDir}/LocalSettings.php || perl -0777 -pi -e &amp;quot;s%\\\$wgCaptchaClass = &#039;SimpleCaptcha&#039;;%\#\\\$wgCaptchaClass = &#039;SimpleCaptcha&#039;;\n\nwfLoadExtensions([ &#039;ConfirmEdit&#039;, &#039;ConfirmEdit/FancyCaptcha&#039; ]);\n\\\$wgCaptchaDirectory = &#039;/var/www/html/wiki.opensourceecology.org/htdocs/images/captcha/&#039;;\n\\\$wgCaptchaSecret = &#039;$wgCaptchaSecret&#039;;\n%igs&amp;quot; ${vhostDir}/LocalSettings.php&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## oh shit, there&#039;s a known issue with ConfirmAccounts that it doesn&#039;t work at all on mediawiki v1.43. it was opened a year ago X_x https://www.mediawiki.org/wiki/Extension:ConfirmAccount#Known_issues&lt;br /&gt;
### well, hopefully that gets fixed before we upgrade to the latest LTS?&lt;br /&gt;
## ok, I&#039;m just going to add this to LocalSettings.php&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# configure ConfirmAccount. See also:&lt;br /&gt;
# * https://www.mediawiki.org/wiki/Extension:ConfirmAccount&lt;br /&gt;
# * https://wiki.eco-libre.org/wiki/Maltfield_Log/2026&lt;br /&gt;
wfLoadExtension( &#039;ConfirmAccount&#039; );&lt;br /&gt;
&lt;br /&gt;
# REQUIRED to enforce account requests&lt;br /&gt;
$wgGroupPermissions[&#039;*&#039;][&#039;createaccount&#039;] = false;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## and, per the wiki extensions&#039; page, I ran the update script&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@mail:/var/www/html/wiki.eco-libre.org# sudo -u www-data php /usr/share/mediawiki/maintenance/run.php update --dbuser wiki_el_superuser --dbpass REDACTED&lt;br /&gt;
...&lt;br /&gt;
...Update &#039;MediaWiki\Maintenance\FixAutoblockLogTitles&#039; already logged as completed. Use --force to run it again.&lt;br /&gt;
Purging caches...done.&lt;br /&gt;
&lt;br /&gt;
Done in 2.2 s.&lt;br /&gt;
root@mail:/var/www/html/wiki.eco-libre.org# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## I went to the SpecialPages, I now see &amp;quot;ConfirmAccounts Requests&amp;quot; https://wiki.eco-libre.org/wiki/Special:ConfirmAccounts&lt;br /&gt;
## Now, in a tor browser where I&#039;m *not* logged-in, I can click on &amp;quot;Anonymous&amp;quot; in the top-right and click on &amp;quot;Request account&amp;quot; https://wiki.eco-libre.org/wiki/Special:RequestAccount&lt;br /&gt;
## there&#039;s this weird thing that people have to agree to the ToS *and* that their real name is real.&lt;br /&gt;
### that first one is reasonable (though we haven&#039;t written a ToS yet)&lt;br /&gt;
### that second one is dumb. why wouldn&#039;t we let users contribute anonymously?&lt;br /&gt;
#### so I edited the LocalSettings.php with this&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# we let folks contribute under pseudonyms &lt;br /&gt;
$wgConfirmAccountRequestFormItems = [&lt;br /&gt;
   &#039;UserName&#039;        =&amp;gt; [ &#039;enabled&#039; =&amp;gt; true ],&lt;br /&gt;
   &#039;RealName&#039;        =&amp;gt; [ &#039;enabled&#039; =&amp;gt; false ],&lt;br /&gt;
   &#039;Biography&#039;       =&amp;gt; [ &#039;enabled&#039; =&amp;gt; false, &#039;minWords&#039; =&amp;gt; 50 ],&lt;br /&gt;
   &#039;AreasOfInterest&#039; =&amp;gt; [ &#039;enabled&#039; =&amp;gt; true ],&lt;br /&gt;
   &#039;CV&#039;              =&amp;gt; [ &#039;enabled&#039; =&amp;gt; true ],&lt;br /&gt;
   &#039;Notes&#039;           =&amp;gt; [ &#039;enabled&#039; =&amp;gt; true ],&lt;br /&gt;
   &#039;Links&#039;           =&amp;gt; [ &#039;enabled&#039; =&amp;gt; true ],&lt;br /&gt;
   &#039;TermsOfService&#039;  =&amp;gt; [ &#039;enabled&#039; =&amp;gt; true ],&lt;br /&gt;
 ];&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## ugh, it still has the same text about the &amp;quot;Real Name&amp;quot; – even after we disabled it&lt;br /&gt;
## looks like I need to create a wiki arrticle with the text that I want here https://wiki.eco-libre.org/wiki/MediaWiki:Requestaccount-text&lt;br /&gt;
### so the default text for this article is&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&#039;Complete and submit the following form to request a user account&#039;.&lt;br /&gt;
&lt;br /&gt;
Make sure that you first read the Terms of Service before requesting an account.&lt;br /&gt;
&lt;br /&gt;
Once the account is approved, you will be emailed a notification message and the account will be usable at login.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
### what I want is the &amp;quot;accept&amp;quot; text, which replaces this&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
I have read and agree to abide by the Terms of Service of Eco-Libre. The name I have specified under &amp;quot;Real name&amp;quot; is in fact my own real name.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
### here&#039;s a list of all the system messages, according to the extensions wiki page https://www.mediawiki.org/wiki/Extension:ConfirmAccount#Minimal&lt;br /&gt;
#### requestaccount-text, requestaccount-notes, requestaccount-ext-text, requestaccount-acc-text&lt;br /&gt;
##### this is not it https://wiki.eco-libre.org/wiki/MediaWiki:Requestaccount-acc-text&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
A confirmation message will be sent to your email address once you submit this request. The address will not be published. Please respond by clicking on the confirmation link provided by the email. Finally, your password will be emailed to you when your account is created. &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
#### nor this https://wiki.eco-libre.org/wiki/MediaWiki:Requestaccount-ext-text&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
The following information is kept private and will only be used for this request. You may want to list contacts such a phone number to aid in identify confirmation. &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
### I just searched the string, and found this&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@mail:/var/www/html/wiki.eco-libre.org# grep -irl &#039;is in fact my own real name&#039; *&lt;br /&gt;
cache/l10n_cache-en.cdb&lt;br /&gt;
htdocs/extensions/ConfirmAccount/i18n/requestaccount/en.json&lt;br /&gt;
root@mail:/var/www/html/wiki.eco-libre.org# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
#### so it looks like we need to edit one of these&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@mail:/var/www/html/wiki.eco-libre.org# grep -i &#039;real name&#039; htdocs/extensions/ConfirmAccount/i18n/requestaccount/en.json&lt;br /&gt;
		&amp;quot;requestaccount-real&amp;quot;: &amp;quot;Real name (optional):&amp;quot;,&lt;br /&gt;
		&amp;quot;requestaccount-real-i&amp;quot;: &amp;quot;Real name is optional. If you choose to provide it, this will be used for giving the user attribution for their work.&amp;quot;,&lt;br /&gt;
		&amp;quot;requestaccount-same&amp;quot;: &amp;quot;(same as real name below)&amp;quot;,&lt;br /&gt;
		&amp;quot;requestaccount-agree&amp;quot;: &amp;quot;You must certify that your real name is correct and that you agree to our Terms of Service.&amp;quot;,&lt;br /&gt;
		&amp;quot;requestaccount-tos&amp;quot;: &amp;quot;I have read and agree to abide by the [[{{MediaWiki:Requestaccount-page}}|Terms of Service]] of {{SITENAME}}.\nThe name I have specified under \&amp;quot;Real name\&amp;quot; is in fact my own real name.&amp;quot;,&lt;br /&gt;
root@mail:/var/www/html/wiki.eco-libre.org# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
#### I edited these two pages&lt;br /&gt;
##### https://wiki.eco-libre.org/wiki/MediaWiki:Requestaccount-tos&lt;br /&gt;
##### https://wiki.eco-libre.org/wiki/MediaWiki:Requestaccount-agree&lt;br /&gt;
### that worked; the agree text changed when I refresh the RequsetAccount form in tor browser&lt;br /&gt;
### I entered the min inforamtion, and got this response&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Your account request has been sent and is now pending review. A confirmation email has been sent to your email address.&lt;br /&gt;
&lt;br /&gt;
Return to Main Page.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
#### curiously, that means it didn&#039;t force me to enter a CV, bio, or the list of websites&lt;br /&gt;
#### I also got an email from noreply@eco-libre.org. It just basically asked me to click an email. Good GDPR compliance.&lt;br /&gt;
##### wait, I refreshed the special page as admin. it shows-up for review. so I guess not GDPR compliant :(&lt;br /&gt;
##### also the ip address listed is 127.0.0.1. Perhaps I need to configure MediaWiki to process X-Forwarded-For headers&lt;br /&gt;
### I changed &#039;false&#039; to &#039;true&#039; for the biography; now it appears again&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$wgConfirmAccountRequestFormItems = [&lt;br /&gt;
   &#039;UserName&#039;        =&amp;gt; [ &#039;enabled&#039; =&amp;gt; true ],&lt;br /&gt;
   &#039;RealName&#039;        =&amp;gt; [ &#039;enabled&#039; =&amp;gt; false ],&lt;br /&gt;
   &#039;Biography&#039;       =&amp;gt; [ &#039;enabled&#039; =&amp;gt; true, &#039;minWords&#039; =&amp;gt; 50 ],&lt;br /&gt;
   &#039;AreasOfInterest&#039; =&amp;gt; [ &#039;enabled&#039; =&amp;gt; true ],&lt;br /&gt;
   &#039;CV&#039;              =&amp;gt; [ &#039;enabled&#039; =&amp;gt; true ],&lt;br /&gt;
   &#039;Notes&#039;           =&amp;gt; [ &#039;enabled&#039; =&amp;gt; true ],&lt;br /&gt;
   &#039;Links&#039;           =&amp;gt; [ &#039;enabled&#039; =&amp;gt; true ],&lt;br /&gt;
   &#039;TermsOfService&#039;  =&amp;gt; [ &#039;enabled&#039; =&amp;gt; true ],&lt;br /&gt;
 ];&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## the workflow is for, after being approved, the system emails the passowrd. that&#039;s not very secure. we should, at least, make sure to require the user to change their password on first login&lt;br /&gt;
### I was looking for a way to force users to change their password on first login, but I first found this in the OSE config&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#############&lt;br /&gt;
# HARDENING #&lt;br /&gt;
#############&lt;br /&gt;
&lt;br /&gt;
$wgSecureLogin = true;&lt;br /&gt;
$wgSecretKey = &#039;REDACTED&#039;;&lt;br /&gt;
&lt;br /&gt;
# PASSWORD POLICIES&lt;br /&gt;
&lt;br /&gt;
$wgPasswordPolicy[&#039;policies&#039;][&#039;default&#039;][&#039;MinimalPasswordLength&#039;] = 10;&lt;br /&gt;
$wgPasswordPolicy[&#039;policies&#039;][&#039;default&#039;][&#039;PasswordCannotBePopular&#039;] = PHP_INT_MAX;&lt;br /&gt;
$wgPasswordPolicy[&#039;policies&#039;][&#039;default&#039;][&#039;PasswordCannotMatchUsername&#039;] = true;&lt;br /&gt;
&lt;br /&gt;
$wgPasswordPolicy[&#039;policies&#039;][&#039;sysop&#039;][&#039;MinimalPasswordLength&#039;] = 20&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
### I added this to stack exchange https://webapps.stackexchange.com/questions/182290/how-to-force-new-users-to-reset-their-password-mediawiki&lt;br /&gt;
# TODO: figure-out how to force new users to change their password, if it was auto-generated by mediawiki&lt;br /&gt;
# TODO: create ToS page https://wiki.eco-libre.org/wiki/Eco-Libre:Terms_of_Service&lt;br /&gt;
# TODO: figure-out how to make mediawiki see the IP as X-Forwarded-For (to play nice with nginx-&amp;gt;varnish-&amp;gt;apache)&lt;br /&gt;
# TODO: finish activating &amp;amp; configuring the remaining &amp;quot;new&amp;quot; extensions&lt;br /&gt;
&lt;br /&gt;
== 2026-04-17 ==&lt;br /&gt;
# shit, we&#039;re getting a 500 error on the wiki today&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[user@disp3459 ~]$ curl -iL https://wiki.eco-libre.org&lt;br /&gt;
HTTP/1.1 500 Internal Server Error&lt;br /&gt;
Server: nginx&lt;br /&gt;
Date: Sat, 18 Apr 2026 00:57:02 GMT&lt;br /&gt;
Content-Type: text/html; charset=UTF-8&lt;br /&gt;
Content-Length: 0&lt;br /&gt;
Connection: keep-alive&lt;br /&gt;
X-Content-Type-Options: nosniff&lt;br /&gt;
Expires: Thu, 19 Nov 1981 08:52:00 GMT&lt;br /&gt;
Cache-Control: no-store, no-cache, must-revalidate&lt;br /&gt;
Pragma: no-cache&lt;br /&gt;
X-Request-Id: REDACTED&lt;br /&gt;
X-Frame-Options: SAMEORIGIN&lt;br /&gt;
Set-Cookie: mw_installer_session=REDACTED; path=/; secure; HttpOnly; SameSite=Strict;HttpOnly;Secure&lt;br /&gt;
X-Content-Type-Options: nosniff&lt;br /&gt;
X-XSS-Protection: 1; mode=block&lt;br /&gt;
X-Frame-Options: deny&lt;br /&gt;
Referrer-Policy: strict-origin&lt;br /&gt;
X-Varnish: 18804052&lt;br /&gt;
Age: 0&lt;br /&gt;
Via: 1.1 mail (Varnish/7.7)&lt;br /&gt;
&lt;br /&gt;
[user@disp3459 ~]$ &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# looks like open_basedir?&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Sat Apr 18 00:59:28.202275 2026] [proxy_fcgi:error] [pid 3214280:tid 3214323] [client 127.0.0.1:0] AH01071: Got error &#039;PHP message: PHP Warning:  is_readable(): open_basedir restriction in effect. File(/usr/share/mediawiki/LocalSettings.php) is not within the allowed path(s): (...) in /usr/share/mediawiki/includes/Output/NoLocalSettings.php on line 59; PHP message: PHP Fatal error:  Uncaught Error: Call to undefined function Wikimedia\\ObjectCache\\ini_set() in /usr/share/mediawiki/includes/libs/objectcache/APCUBagOStuff.php:55\nStack trace:\n#0 /usr/share/mediawiki/includes/utils/FileContentsHasher.php(37): Wikimedia\\ObjectCache\\APCUBagOStuff-&amp;gt;construct()\n#1 /usr/share/mediawiki/includes/utils/FileContentsHasher.php(47): FileContentsHasher-&amp;gt;construct()\n#2 /usr/share/mediawiki/includes/utils/FileContentsHasher.php(93): FileContentsHasher::singleton()\n#3 /usr/share/mediawiki/includes/Html/TemplateParser.php(271): FileContentsHasher::getFileContentsHash()\n#4 /usr/share/mediawiki/includes/Html/TemplateParser.php(173): MediaWiki\\Html\\TemplateParser-&amp;gt;compile()\n#5 /usr/share/mediawiki/includes/Html/TemplateParser.php(296): MediaWiki\\Html\\TemplateParser-&amp;gt;getTemplate()\n#6 /usr/share/mediawiki/includes/Output/NoLocalSettings.php(54): MediaWiki\\Html\\TemplateParser-&amp;gt;processTemplate()\n#7 /usr/share/mediawiki/includes/WebStart.php(51): require_once(&#039;...&#039;)\n#8...&#039;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# it&#039;s just a symlink to a symlink to a non-existant file. is that the issue?&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@mail:/usr/share/mediawiki/includes/libs/rdbms/database# ls -lah /usr/share/mediawiki/LocalSettings.php&lt;br /&gt;
lrwxrwxrwx 1 root root 36 Apr 10 22:17 /usr/share/mediawiki/LocalSettings.php -&amp;gt; /var/lib/mediawiki/LocalSettings.php&lt;br /&gt;
root@mail:/usr/share/mediawiki/includes/libs/rdbms/database# ls -lah /var/lib/mediawiki/LocalSettings.php&lt;br /&gt;
lrwxrwxrwx 1 root root 32 Apr 10 22:17 /var/lib/mediawiki/LocalSettings.php -&amp;gt; /etc/mediawiki/LocalSettings.php&lt;br /&gt;
root@mail:/usr/share/mediawiki/includes/libs/rdbms/database# ls -lah /etc/mediawiki/LocalSettings.php&lt;br /&gt;
ls: cannot access &#039;/etc/mediawiki/LocalSettings.php&#039;: No such file or directory&lt;br /&gt;
root@mail:/usr/share/mediawiki/includes/libs/rdbms/database# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# wtf. the file is here, but it&#039;s not here?&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@mail:/var/lib/mediawiki# ls LocalSettings.php &lt;br /&gt;
LocalSettings.php&lt;br /&gt;
root@mail:/var/lib/mediawiki# cat LocalSettings.php &lt;br /&gt;
cat: LocalSettings.php: No such file or directory&lt;br /&gt;
root@mail:/var/lib/mediawiki# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# oh, it&#039;s because it&#039;s a symlink&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@mail:/var/lib/mediawiki# ls -lah /var/www/html/wiki.eco-libre.org/htdocs/LocalSettings.php &lt;br /&gt;
lrwxrwxrwx 1 root root 32 Apr 10 22:17 /var/www/html/wiki.eco-libre.org/htdocs/LocalSettings.php -&amp;gt; /etc/mediawiki/LocalSettings.php&lt;br /&gt;
root@mail:/var/lib/mediawiki# cat /var/www/html/wiki.eco-libre.org/htdocs/LocalSettings.php &lt;br /&gt;
cat: /var/www/html/wiki.eco-libre.org/htdocs/LocalSettings.php: No such file or directory&lt;br /&gt;
root@mail:/var/lib/mediawiki# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# that definitely was a file before. I set it to just require() the real file from one dir up (outside the docroot). but why is it gone now? could it have been deleted by a security upgrade in apt? unattended-upgrades perhaps?&lt;br /&gt;
## well, that&#039;s a match&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@mail:/var/log/unattended-upgrades# grep -irl mediawiki *&lt;br /&gt;
unattended-upgrades-dpkg.log&lt;br /&gt;
unattended-upgrades.log&lt;br /&gt;
root@mail:/var/log/unattended-upgrades# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# yeah, it looks like we upgraded on 2026-04-13. That was Monday. Today is Friday.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@mail:/var/log/unattended-upgrades# grep -ir mediawiki *&lt;br /&gt;
unattended-upgrades-dpkg.log:Preparing to unpack .../mediawiki_1%3a1.43.8+dfsg-1~deb13u1_all.deb ...&lt;br /&gt;
unattended-upgrades-dpkg.log:Unpacking mediawiki (1:1.43.8+dfsg-1~deb13u1) over (1:1.43.6+dfsg-1~deb13u1) ...&lt;br /&gt;
unattended-upgrades-dpkg.log:Preparing to unpack .../mediawiki-classes_1%3a1.43.8+dfsg-1~deb13u1_all.deb ...&lt;br /&gt;
unattended-upgrades-dpkg.log:Unpacking mediawiki-classes (1:1.43.8+dfsg-1~deb13u1) over (1:1.43.6+dfsg-1~deb13u1) ...&lt;br /&gt;
unattended-upgrades-dpkg.log:Setting up mediawiki-classes (1:1.43.8+dfsg-1~deb13u1) ...&lt;br /&gt;
unattended-upgrades-dpkg.log:Setting up mediawiki (1:1.43.8+dfsg-1~deb13u1) ...&lt;br /&gt;
unattended-upgrades-dpkg.log:apache2_invoke mediawiki: already enabled&lt;br /&gt;
unattended-upgrades-dpkg.log:mediawiki-jobrunner.service is a disabled or a static unit not running, not starting it.&lt;br /&gt;
unattended-upgrades.log:2026-04-13 06:07:02,546 INFO Packages that will be upgraded: mediawiki mediawiki-classes&lt;br /&gt;
root@mail:/var/log/unattended-upgrades# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# mediawiki announced two releases on 2026-04-01. One was a normal maintenance release (1.43.8). One was a security release (1.43.7)&lt;br /&gt;
## https://lists.wikimedia.org/hyperkitty/list/mediawiki-announce@lists.wikimedia.org/thread/DIBLSBHISKX6NFRUFNOGZRVW42E7R2QP/&lt;br /&gt;
## https://lists.wikimedia.org/hyperkitty/list/mediawiki-announce@lists.wikimedia.org/thread/6VW6OGVSC7LO3QUMBEZOPQFYYOFDJ452/&lt;br /&gt;
# well, it&#039;s good that we confirmed that securty updates are getting automatically installed.&lt;br /&gt;
# ok, well, obviously we need to follow the debian-way and put the LocalSettings.php file in /etc/.\&lt;br /&gt;
## I did that&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@mail:/var/lib/mediawiki# cat /etc/mediawiki/LocalSettings.php&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
# including separate file that contains the database password so that it is not stored within the document root.&lt;br /&gt;
# For more info see:&lt;br /&gt;
#  * https://tech.michaelaltfield.net/2020/02/14/phplist-hardening-security/&lt;br /&gt;
#  * https://www.mediawiki.org/wiki/Manual:Security&lt;br /&gt;
#  * https://wiki.r00tedvw.com/index.php/Mediawiki/Hardening&lt;br /&gt;
 &lt;br /&gt;
#$docRoot = dirname( $_SERVER[&#039;DOCUMENT_ROOT&#039;] );&lt;br /&gt;
#require_once &amp;quot;$docRoot/LocalSettings.php&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
# docRoot didn&#039;t work for all of:&lt;br /&gt;
#  1. php-fpm (the normal website)&lt;br /&gt;
#  2. cli&lt;br /&gt;
#  3. the fact that we&#039;re in /var/lib/mediawiki due to debian&#039;s install symlink&lt;br /&gt;
#&lt;br /&gt;
# ...so I&#039;m just hardcoding the path to LocalSettings.php, so it always works!&lt;br /&gt;
&lt;br /&gt;
require_once( &amp;quot;/var/www/html/wiki.eco-libre.org/LocalSettings.php&amp;quot; );&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
root@mail:/var/lib/mediawiki# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# I tried the site; it&#039;s still broken&lt;br /&gt;
# I cleared varnish cache; it&#039;s still broken&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@mail:/var/lib/mediawiki# varnishadm &#039;ban req.url ~ &amp;quot;.&amp;quot;&#039;&lt;br /&gt;
&lt;br /&gt;
root@mail:/var/lib/mediawiki# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# yeah, I think the problem is that I never added /etc/mediawiki into the basedir, because I wasn&#039;t using it there. Ugh.&lt;br /&gt;
# I don&#039;t like doing this, but there&#039;s nothing else there. should be fine&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@mail:/var/lib/mediawiki# ls -lah /etc/mediawiki/&lt;br /&gt;
total 20K&lt;br /&gt;
drwxr-xr-x   2 root root 4,0K Apr 18 01:16 .&lt;br /&gt;
drwxr-xr-x 120 root root  12K Apr 17 20:30 ..&lt;br /&gt;
-rw-r--r--   1 root root  741 Apr 18 01:16 LocalSettings.php&lt;br /&gt;
root@mail:/var/lib/mediawiki# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 2026-04-14 ==&lt;br /&gt;
# Appropedia responded to me, indicating that they use Vector 2022 skin, with these config options https://wordpress.org/support/topic/support-for-automatic-exchange-rates-wp_http_block_external-2/#&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
:wfLoadSkin( &#039;Vector&#039; );&lt;br /&gt;
:$wgDefaultSkin = &#039;vector-2022&#039;;&lt;br /&gt;
:$wgSkipSkins[] = &#039;vector&#039;; // Disable old Vector&lt;br /&gt;
:$wgVectorResponsive = true;&lt;br /&gt;
:$wgVectorMaxWidthOptions[&#039;exclude&#039;][&#039;mainpage&#039;] = false;&lt;br /&gt;
:$wgVectorNightMode[&#039;logged_out&#039;] = true;&lt;br /&gt;
:$wgDefaultUserOptions[&#039;vector-main-menu-pinned&#039;] = 0;&lt;br /&gt;
:$wgDefaultUserOptions[&#039;vector-page-tools-pinned&#039;] = 0;&lt;br /&gt;
:$wgDefaultUserOptions[&#039;vector-appearance-pinned&#039;] = 0;&lt;br /&gt;
:$wgDefaultUserOptions[&#039;vector-toc-pinned&#039;] = 0;&lt;br /&gt;
:$wgDefaultUserOptions[&#039;vector-font-size&#039;] = 1;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# they said they use this extension for &amp;quot;read mode&amp;quot; which they developed themselves https://www.mediawiki.org/wiki/Extension:ReadMode&lt;br /&gt;
&lt;br /&gt;
== 2026-04-13 ==&lt;br /&gt;
# Here&#039;s TOFU 3/3 (Tor, exit in The Netherlands)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
The Netherlands&lt;br /&gt;
	  Congratulations. This browser is configured to use Tor.&lt;br /&gt;
2026-04-13&lt;br /&gt;
######################################################################### 100.0%&lt;br /&gt;
2026-04-13&lt;br /&gt;
14M	OATHAuth-REL1_43-015a49e.tar.gz&lt;br /&gt;
9ee56e843931edd87b631b264d680e9f8d77f18b5ffdbc18b9a4f5b15330878e  OATHAuth-REL1_43-015a49e.tar.gz&lt;br /&gt;
user@host:/tmp/user/1000/tmp.eIvrMPff3B$ &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 2026-04-10 ==&lt;br /&gt;
# Here&#039;s TOFU 2/3 (VPN, exit in US)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
United States&lt;br /&gt;
2026-04-10&lt;br /&gt;
######################################################################### 100.0%&lt;br /&gt;
2026-04-10&lt;br /&gt;
14M	OATHAuth-REL1_43-015a49e.tar.gz&lt;br /&gt;
9ee56e843931edd87b631b264d680e9f8d77f18b5ffdbc18b9a4f5b15330878e  OATHAuth-REL1_43-015a49e.tar.gz&lt;br /&gt;
user@disp5712:/tmp/tmp.oTeGPpTCzP$ &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# finally, they all match! great, that&#039;s our last extension&lt;br /&gt;
&lt;br /&gt;
== 2026-04-09 ==&lt;br /&gt;
# Here&#039;s TOFU 3/3 (ISP, exit in Ecuador)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Ecuador&lt;br /&gt;
2026-04-09&lt;br /&gt;
######################################################################### 100.0%&lt;br /&gt;
2026-04-09&lt;br /&gt;
4.0K	OATHAuth-REL1_43-967ccd4.tar.gz&lt;br /&gt;
8351c0267c2cd7866ff04c04261f06cd75af9a7130aac848ca43fd047404e229  OATHAuth-REL1_43-967ccd4.tar.gz&lt;br /&gt;
user@disp7124:/tmp/tmp.wlx3U02c6r$ &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# fuck, it&#039;s already unavailable; says &#039;libraryupgrader&#039; from 3 hours ago &amp;gt;:0&lt;br /&gt;
# let&#039;s try again&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
REMOTE_FILES=&amp;quot;https://extdist.wmflabs.org/dist/extensions/OATHAuth-REL1_43-015a49e.tar.gz&amp;quot;&lt;br /&gt;
&lt;br /&gt;
CURL=&amp;quot;/usr/bin/curl --retry 5 --retry-all-errors&amp;quot;&lt;br /&gt;
PYTHON=&amp;quot;/usr/bin/python3&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# in tails, we must torify&lt;br /&gt;
if [[ &amp;quot;`whoami`&amp;quot; == &amp;quot;amnesia&amp;quot; ]] ; then&lt;br /&gt;
	CURL=&amp;quot;/usr/bin/torify ${CURL}&amp;quot;&lt;br /&gt;
	PYTHON=&amp;quot;/usr/bin/torify ${PYTHON}&amp;quot;&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
tmpDir=`mktemp -d`&lt;br /&gt;
pushd &amp;quot;${tmpDir}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# first get some info about our internet connection&lt;br /&gt;
${CURL} -s https://ifconfig.co/country | head -n1&lt;br /&gt;
${CURL} -s https://check.torproject.org | grep Congratulations | head -n1&lt;br /&gt;
&lt;br /&gt;
# and today&#039;s date&lt;br /&gt;
date -u +&amp;quot;%Y-%m-%d&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# get the file&lt;br /&gt;
for file in ${REMOTE_FILES}; do&lt;br /&gt;
	${CURL} --progress-bar -O ${file}&lt;br /&gt;
done&lt;br /&gt;
&lt;br /&gt;
# checksum&lt;br /&gt;
date -u +&amp;quot;%Y-%m-%d&amp;quot;&lt;br /&gt;
du -sh *&lt;br /&gt;
sha256sum *&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# Here&#039;s TOFU 1/3 (ISP, exit in Ecuador)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Ecuador&lt;br /&gt;
2026-04-09&lt;br /&gt;
######################################################################### 100.0%&lt;br /&gt;
2026-04-09&lt;br /&gt;
14M	OATHAuth-REL1_43-015a49e.tar.gz&lt;br /&gt;
9ee56e843931edd87b631b264d680e9f8d77f18b5ffdbc18b9a4f5b15330878e  OATHAuth-REL1_43-015a49e.tar.gz&lt;br /&gt;
user@disp7124:/tmp/tmp.rGKb4qtHLX$ &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 2026-04-08 ==&lt;br /&gt;
# Here&#039;s TOFU 2/3 (VPN, exit in UK)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
United Kingdom&lt;br /&gt;
2026-04-08&lt;br /&gt;
############################################################################## 100.0%&lt;br /&gt;
2026-04-08&lt;br /&gt;
14M	OATHAuth-REL1_43-967ccd4.tar.gz&lt;br /&gt;
5992bf6044ba5bd6404d51ec5bef936e6eb724576a2003fc176648c7fcf9c6b7  OATHAuth-REL1_43-967ccd4.tar.gz&lt;br /&gt;
user@disp6902:/tmp/tmp.KDMVCsn1cU$ &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 2026-04-07 ==&lt;br /&gt;
# here&#039;s TOFU 3/3 (Tor, exit in The Netherlands)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
The Netherlands&lt;br /&gt;
	  Congratulations. This browser is configured to use Tor.&lt;br /&gt;
2026-04-07&lt;br /&gt;
####################################################################### 100.0%&lt;br /&gt;
####################################################################### 100.0%&lt;br /&gt;
####################################################################### 100.0%&lt;br /&gt;
2026-04-07&lt;br /&gt;
448K	ConfirmAccount-REL1_43-38c4602.tar.gz&lt;br /&gt;
124K	DeleteBatch-REL1_43-b3b052b.tar.gz&lt;br /&gt;
4.0K	OATHAuth-REL1_43-2cdbefb.tar.gz&lt;br /&gt;
95b2bc67977c22d069867a7225aa1a9720b7593ed5ab49aa27cc293f01b2e2bb  ConfirmAccount-REL1_43-38c4602.tar.gz&lt;br /&gt;
d1e7c01cf709f2b57137bb3d76f73b4e8fd36ce57c12b750b04fe20ffce9be61  DeleteBatch-REL1_43-b3b052b.tar.gz&lt;br /&gt;
8351c0267c2cd7866ff04c04261f06cd75af9a7130aac848ca43fd047404e229  OATHAuth-REL1_43-2cdbefb.tar.gz&lt;br /&gt;
user@host:/tmp/user/1000/tmp.qw9hrOvh3l$ &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# ok, well, we&#039;re 2/3 for that one. ConfirmAccount and DeleteBatch both have the same on all 3 TOFUs.&lt;br /&gt;
## But OATHAuth must have had a new release, because it&#039;s now 404&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
user@host:/tmp/user/1000/tmp.qw9hrOvh3l$ cat OATHAuth-REL1_43-2cdbefb.tar.gz &lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;head&amp;gt;&amp;lt;title&amp;gt;404 Not Found&amp;lt;/title&amp;gt;&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;h1&amp;gt;404 Not Found&amp;lt;/h1&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&amp;lt;center&amp;gt;nginx/1.18.0&amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
user@host:/tmp/user/1000/tmp.qw9hrOvh3l$ &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# I checked the changelog. looks like this extension is getting updated almost every 1-2 days from &amp;quot;Translation updater bot&amp;quot; – that&#039;s terrible. We need three consecutive days of no changes for 3TOFU https://www.mediawiki.org/wiki/Extension:OATHAuth&lt;br /&gt;
## hmm, well, if I look back further, there was a gap of 2 months before the update 6 days ago. So there certainly is *some* stability.&lt;br /&gt;
## also, that was *all* commits. This one limits to just the 1.43 branch, which is what we want https://gerrit.wikimedia.org/r/plugins/gitiles/mediawiki/extensions/OATHAuth/+log/refs/heads/REL1_43&lt;br /&gt;
### hmm, that one shows the last update was 10 hours ago, and the one before that was 2 months ago (Jan 22). That would be fine, but didn&#039;t we have two consecutive 3TOFUs fail on us?&lt;br /&gt;
### oh, wait, woah. the commits are out of order! First it shows &amp;quot;10 hours ago&amp;quot; and then &amp;quot;2 months ago&amp;quot; and then &amp;quot;7 days ago&amp;quot; wtf!&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
gerrit.wikimedia.org / mediawiki / extensions / OATHAuth / refs/heads/REL1_43&lt;br /&gt;
&lt;br /&gt;
	967ccd4 Localisation updates from https://translatewiki.net. by Translation updater bot · 10 hours ago REL1_43&lt;br /&gt;
	2cdbefb SECURITY: Don&#039;t leak user&#039;s lack of 2FA to other users by Roan Kattouw · 2 months ago&lt;br /&gt;
	bfcd5cf Localisation updates from https://translatewiki.net. by Translation updater bot · 7 days ago&lt;br /&gt;
	d8e7578 build: Updating npm dependencies by libraryupgrader · 12 days ago&lt;br /&gt;
	be14e83 Localisation updates from https://translatewiki.net. by Translation updater bot · 2 weeks ago&lt;br /&gt;
	77c70f5 build: Updating flatted to 3.4.2 by libraryupgrader · 3 weeks ago&lt;br /&gt;
	87d04d4 Localisation updates from https://translatewiki.net. by Translation updater bot · 3 weeks ago&lt;br /&gt;
	8e176b2 Localisation updates from https://translatewiki.net. by Translation updater bot · 4 weeks ago&lt;br /&gt;
	14596de Localisation updates from https://translatewiki.net. by Translation updater bot · 5 weeks ago&lt;br /&gt;
	8c7891a build: Updating ajv to 6.14.0, 8.18.0 by libraryupgrader · 6 weeks ago&lt;br /&gt;
	0406194 Localisation updates from https://translatewiki.net. by Translation updater bot · 6 weeks ago&lt;br /&gt;
	4c94235 Localisation updates from https://translatewiki.net. by Translation updater bot · 7 weeks ago&lt;br /&gt;
	7d0b2d7 Localisation updates from https://translatewiki.net. by Translation updater bot · 8 weeks ago&lt;br /&gt;
	a896cff Localisation updates from https://translatewiki.net. by Translation updater bot · 9 weeks ago&lt;br /&gt;
	b8e8afa Localisation updates from https://translatewiki.net. by Translation updater bot · 2 months ago&lt;br /&gt;
	4b3cb73 build: Updating lodash to 4.17.23 by libraryupgrader · 2 months ago&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# well, it looks like the translator bot runs once per week. so we should have 6 days before that one changes again..&lt;br /&gt;
# anyway, here&#039;s our (hopefully last) 3TOFU script, just for OATHAuth&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
REMOTE_FILES=&amp;quot;https://extdist.wmflabs.org/dist/extensions/OATHAuth-REL1_43-967ccd4.tar.gz&amp;quot;&lt;br /&gt;
&lt;br /&gt;
CURL=&amp;quot;/usr/bin/curl --retry 5 --retry-all-errors&amp;quot;&lt;br /&gt;
PYTHON=&amp;quot;/usr/bin/python3&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# in tails, we must torify&lt;br /&gt;
if [[ &amp;quot;`whoami`&amp;quot; == &amp;quot;amnesia&amp;quot; ]] ; then&lt;br /&gt;
	CURL=&amp;quot;/usr/bin/torify ${CURL}&amp;quot;&lt;br /&gt;
	PYTHON=&amp;quot;/usr/bin/torify ${PYTHON}&amp;quot;&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
tmpDir=`mktemp -d`&lt;br /&gt;
pushd &amp;quot;${tmpDir}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# first get some info about our internet connection&lt;br /&gt;
${CURL} -s https://ifconfig.co/country | head -n1&lt;br /&gt;
${CURL} -s https://check.torproject.org | grep Congratulations | head -n1&lt;br /&gt;
&lt;br /&gt;
# and today&#039;s date&lt;br /&gt;
date -u +&amp;quot;%Y-%m-%d&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# get the file&lt;br /&gt;
for file in ${REMOTE_FILES}; do&lt;br /&gt;
	${CURL} --progress-bar -O ${file}&lt;br /&gt;
done&lt;br /&gt;
&lt;br /&gt;
# checksum&lt;br /&gt;
date -u +&amp;quot;%Y-%m-%d&amp;quot;&lt;br /&gt;
du -sh *&lt;br /&gt;
sha256sum *&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# and TOFU 1/3 (Tor, exit in The Netherlands)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
The Netherlands&lt;br /&gt;
	  Congratulations. This browser is configured to use Tor.&lt;br /&gt;
2026-04-07&lt;br /&gt;
####################################################################### 100.0%&lt;br /&gt;
2026-04-07&lt;br /&gt;
14M	OATHAuth-REL1_43-967ccd4.tar.gz&lt;br /&gt;
5992bf6044ba5bd6404d51ec5bef936e6eb724576a2003fc176648c7fcf9c6b7  OATHAuth-REL1_43-967ccd4.tar.gz&lt;br /&gt;
user@host:/tmp/user/1000/tmp.RBxv6XdjXd$ &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 2026-04-06 ==&lt;br /&gt;
# here&#039;s TOFU 2/3 (VPN, exit in Germany)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Germany&lt;br /&gt;
2026-04-06&lt;br /&gt;
#################################################################################### 100.0%&lt;br /&gt;
#################################################################################### 100.0%&lt;br /&gt;
#################################################################################### 100.0%&lt;br /&gt;
2026-04-06&lt;br /&gt;
448K	ConfirmAccount-REL1_43-38c4602.tar.gz&lt;br /&gt;
124K	DeleteBatch-REL1_43-b3b052b.tar.gz&lt;br /&gt;
14M	OATHAuth-REL1_43-2cdbefb.tar.gz&lt;br /&gt;
95b2bc67977c22d069867a7225aa1a9720b7593ed5ab49aa27cc293f01b2e2bb  ConfirmAccount-REL1_43-38c4602.tar.gz&lt;br /&gt;
d1e7c01cf709f2b57137bb3d76f73b4e8fd36ce57c12b750b04fe20ffce9be61  DeleteBatch-REL1_43-b3b052b.tar.gz&lt;br /&gt;
f71115af96a1ed5297d8d56f56683635b7c9e0b8b32151b184feea1fbec3350a  OATHAuth-REL1_43-2cdbefb.tar.gz&lt;br /&gt;
user@disp8963:/tmp/tmp.JNwdKPbQIW$ &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 2026-04-01 ==&lt;br /&gt;
# continuing with the wiki setup today&lt;br /&gt;
# I saw our db partition reached 90%. It&#039;s been growing slowly, but adding mediawiki to the server didn&#039;t help, so I spent some time expanding the disks. Now we&#039;re down to 48% usage on the db partition, and everything else is hovering around 60% used, +/- 5%&lt;br /&gt;
# here&#039;s our last TOFU on the mediawiki extensions&lt;br /&gt;
## TOFU 3/3 (ISP, exit in Ecuador)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Ecuador&lt;br /&gt;
2026-04-01&lt;br /&gt;
######################################################################### 100.0%&lt;br /&gt;
######################################################################### 100.0%&lt;br /&gt;
######################################################################### 100.0%&lt;br /&gt;
######################################################################### 100.0%&lt;br /&gt;
######################################################################### 100.0%&lt;br /&gt;
######################################################################### 100.0%&lt;br /&gt;
2026-04-01&lt;br /&gt;
4.0K	ConfirmAccount-REL1_43-9cc1a82.tar.gz&lt;br /&gt;
4.0K	DeleteBatch-REL1_43-24a81e4.tar.gz&lt;br /&gt;
4.0K	OATHAuth-REL1_43-d8e7578.tar.gz&lt;br /&gt;
108K	SmiteSpam-REL1_43-483b81b.tar.gz&lt;br /&gt;
140K	UserMerge-REL1_43-27425da.tar.gz&lt;br /&gt;
492K	Widgets-REL1_43-60a09f0.tar.gz&lt;br /&gt;
8351c0267c2cd7866ff04c04261f06cd75af9a7130aac848ca43fd047404e229  ConfirmAccount-REL1_43-9cc1a82.tar.gz&lt;br /&gt;
8351c0267c2cd7866ff04c04261f06cd75af9a7130aac848ca43fd047404e229  DeleteBatch-REL1_43-24a81e4.tar.gz&lt;br /&gt;
8351c0267c2cd7866ff04c04261f06cd75af9a7130aac848ca43fd047404e229  OATHAuth-REL1_43-d8e7578.tar.gz&lt;br /&gt;
997c9edfe7ab78d6e1f1268d48ec19f13d036f584ad54c4281e210940a59f7c9  SmiteSpam-REL1_43-483b81b.tar.gz&lt;br /&gt;
5f28fdf7c0b727d699d42f14073359e13c8db1b2d389d78219845b5912cc0ccc  UserMerge-REL1_43-27425da.tar.gz&lt;br /&gt;
bed64d3c98842f7ec3675e17a24c21fb4720862084857e6834fb7813d14ab865  Widgets-REL1_43-60a09f0.tar.gz&lt;br /&gt;
user@disp7799:/tmp/tmp.YkN2s6MgT6$ &lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# huh, 3TOFU failed for 3/5 of the extensions&lt;br /&gt;
## SmiteSpam, UserMerge, and Widgets matched on all three&lt;br /&gt;
## but ConfirmAccount, DeleteBatch, and OATHAuthOATHAuth diff&#039;d&lt;br /&gt;
# I see that the file size of the three that failed is &amp;quot;4.0K&amp;quot;. that suggests that it didn&#039;t actually download&lt;br /&gt;
# sure enough, they&#039;re 404&#039;d&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
user@disp7799:/tmp/tmp.YkN2s6MgT6$ cat ConfirmAccount-REL1_43-9cc1a82.tar.gz&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;head&amp;gt;&amp;lt;title&amp;gt;404 Not Found&amp;lt;/title&amp;gt;&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;h1&amp;gt;404 Not Found&amp;lt;/h1&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&amp;lt;center&amp;gt;nginx/1.18.0&amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
user@disp7799:/tmp/tmp.YkN2s6MgT6$ &lt;br /&gt;
user@disp7799:/tmp/tmp.YkN2s6MgT6$ cat DeleteBatch-REL1_43-24a81e4.tar.gz&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;head&amp;gt;&amp;lt;title&amp;gt;404 Not Found&amp;lt;/title&amp;gt;&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;h1&amp;gt;404 Not Found&amp;lt;/h1&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&amp;lt;center&amp;gt;nginx/1.18.0&amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
user@disp7799:/tmp/tmp.YkN2s6MgT6$ &lt;br /&gt;
user@disp7799:/tmp/tmp.YkN2s6MgT6$ cat OATHAuth-REL1_43-d8e7578.tar.gz&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;head&amp;gt;&amp;lt;title&amp;gt;404 Not Found&amp;lt;/title&amp;gt;&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;h1&amp;gt;404 Not Found&amp;lt;/h1&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&amp;lt;center&amp;gt;nginx/1.18.0&amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
user@disp7799:/tmp/tmp.YkN2s6MgT6$ &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# if I go to download these plugins again, here&#039;s the URLs I get&lt;br /&gt;
## ConfirmAccount https://www.mediawiki.org/wiki/Extension:ConfirmAccount&lt;br /&gt;
### https://extdist.wmflabs.org/dist/extensions/ConfirmAccount-REL1_43-38c4602.tar.gz&lt;br /&gt;
## DeleteBatch https://www.mediawiki.org/wiki/Extension:ConfirmAccount&lt;br /&gt;
### https://extdist.wmflabs.org/dist/extensions/DeleteBatch-REL1_43-b3b052b.tar.gz&lt;br /&gt;
## OATHAuth https://www.mediawiki.org/wiki/Extension:OATHAuth&lt;br /&gt;
### https://extdist.wmflabs.org/dist/extensions/OATHAuth-REL1_43-2cdbefb.tar.gz&lt;br /&gt;
# here&#039;s our old 3TOFU script, for comparison&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
REMOTE_FILES=&amp;quot;https://extdist.wmflabs.org/dist/extensions/ConfirmAccount-REL1_43-9cc1a82.tar.gz https://extdist.wmflabs.org/dist/extensions/DeleteBatch-REL1_43-24a81e4.tar.gz https://extdist.wmflabs.org/dist/extensions/OATHAuth-REL1_43-d8e7578.tar.gz https://extdist.wmflabs.org/dist/extensions/SmiteSpam-REL1_43-483b81b.tar.gz https://extdist.wmflabs.org/dist/extensions/UserMerge-REL1_43-27425da.tar.gz https://extdist.wmflabs.org/dist/extensions/Widgets-REL1_43-60a09f0.tar.gz&amp;quot;&lt;br /&gt;
&lt;br /&gt;
CURL=&amp;quot;/usr/bin/curl --retry 5 --retry-all-errors&amp;quot;&lt;br /&gt;
PYTHON=&amp;quot;/usr/bin/python3&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# in tails, we must torify&lt;br /&gt;
if [[ &amp;quot;`whoami`&amp;quot; == &amp;quot;amnesia&amp;quot; ]] ; then&lt;br /&gt;
	CURL=&amp;quot;/usr/bin/torify ${CURL}&amp;quot;&lt;br /&gt;
	PYTHON=&amp;quot;/usr/bin/torify ${PYTHON}&amp;quot;&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
tmpDir=`mktemp -d`&lt;br /&gt;
pushd &amp;quot;${tmpDir}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# first get some info about our internet connection&lt;br /&gt;
${CURL} -s https://ifconfig.co/country | head -n1&lt;br /&gt;
${CURL} -s https://check.torproject.org | grep Congratulations | head -n1&lt;br /&gt;
&lt;br /&gt;
# and today&#039;s date&lt;br /&gt;
date -u +&amp;quot;%Y-%m-%d&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# get the file&lt;br /&gt;
for file in ${REMOTE_FILES}; do&lt;br /&gt;
	${CURL} --progress-bar -O ${file}&lt;br /&gt;
done&lt;br /&gt;
&lt;br /&gt;
# checksum&lt;br /&gt;
date -u +&amp;quot;%Y-%m-%d&amp;quot;&lt;br /&gt;
du -sh *&lt;br /&gt;
sha256sum *&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# so, yeah, I guess they delete the old releases when the push a new one? that&#039;s pretty annoying&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
https://extdist.wmflabs.org/dist/extensions/ConfirmAccount-REL1_43-9cc1a82.tar.gz&lt;br /&gt;
https://extdist.wmflabs.org/dist/extensions/ConfirmAccount-REL1_43-38c4602.tar.gz&lt;br /&gt;
&lt;br /&gt;
https://extdist.wmflabs.org/dist/extensions/DeleteBatch-REL1_43-24a81e4.tar.gz&lt;br /&gt;
https://extdist.wmflabs.org/dist/extensions/DeleteBatch-REL1_43-b3b052b.tar.gz&lt;br /&gt;
&lt;br /&gt;
https://extdist.wmflabs.org/dist/extensions/OATHAuth-REL1_43-d8e7578.tar.gz&lt;br /&gt;
https://extdist.wmflabs.org/dist/extensions/OATHAuth-REL1_43-2cdbefb.tar.gz&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# anyway, let&#039;s try it again, and hope we get all three before they push another release in the next ~1 week&lt;br /&gt;
# here&#039;s a new 3TOFU script&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
REMOTE_FILES=&amp;quot;https://extdist.wmflabs.org/dist/extensions/ConfirmAccount-REL1_43-38c4602.tar.gz https://extdist.wmflabs.org/dist/extensions/DeleteBatch-REL1_43-b3b052b.tar.gz https://extdist.wmflabs.org/dist/extensions/OATHAuth-REL1_43-2cdbefb.tar.gz&amp;quot;&lt;br /&gt;
&lt;br /&gt;
CURL=&amp;quot;/usr/bin/curl --retry 5 --retry-all-errors&amp;quot;&lt;br /&gt;
PYTHON=&amp;quot;/usr/bin/python3&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# in tails, we must torify&lt;br /&gt;
if [[ &amp;quot;`whoami`&amp;quot; == &amp;quot;amnesia&amp;quot; ]] ; then&lt;br /&gt;
	CURL=&amp;quot;/usr/bin/torify ${CURL}&amp;quot;&lt;br /&gt;
	PYTHON=&amp;quot;/usr/bin/torify ${PYTHON}&amp;quot;&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
tmpDir=`mktemp -d`&lt;br /&gt;
pushd &amp;quot;${tmpDir}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# first get some info about our internet connection&lt;br /&gt;
${CURL} -s https://ifconfig.co/country | head -n1&lt;br /&gt;
${CURL} -s https://check.torproject.org | grep Congratulations | head -n1&lt;br /&gt;
&lt;br /&gt;
# and today&#039;s date&lt;br /&gt;
date -u +&amp;quot;%Y-%m-%d&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# get the file&lt;br /&gt;
for file in ${REMOTE_FILES}; do&lt;br /&gt;
	${CURL} --progress-bar -O ${file}&lt;br /&gt;
done&lt;br /&gt;
&lt;br /&gt;
# checksum&lt;br /&gt;
date -u +&amp;quot;%Y-%m-%d&amp;quot;&lt;br /&gt;
du -sh *&lt;br /&gt;
sha256sum *&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# And TOFU 1/3 (ISP, exit in Ecuador)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Ecuador&lt;br /&gt;
2026-04-01&lt;br /&gt;
######################################################################### 100.0%&lt;br /&gt;
######################################################################### 100.0%&lt;br /&gt;
######################################################################### 100.0%&lt;br /&gt;
2026-04-01&lt;br /&gt;
448K	ConfirmAccount-REL1_43-38c4602.tar.gz&lt;br /&gt;
124K	DeleteBatch-REL1_43-b3b052b.tar.gz&lt;br /&gt;
14M	OATHAuth-REL1_43-2cdbefb.tar.gz&lt;br /&gt;
95b2bc67977c22d069867a7225aa1a9720b7593ed5ab49aa27cc293f01b2e2bb  ConfirmAccount-REL1_43-38c4602.tar.gz&lt;br /&gt;
d1e7c01cf709f2b57137bb3d76f73b4e8fd36ce57c12b750b04fe20ffce9be61  DeleteBatch-REL1_43-b3b052b.tar.gz&lt;br /&gt;
f71115af96a1ed5297d8d56f56683635b7c9e0b8b32151b184feea1fbec3350a  OATHAuth-REL1_43-2cdbefb.tar.gz&lt;br /&gt;
user@disp7799:/tmp/tmp.oWTEqi2mpP$ &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# and all the files are &amp;gt;4K, so that&#039;s promising.&lt;br /&gt;
# TODO: finish 3TOFU, install &amp;amp; configure extensions&lt;br /&gt;
# ...&lt;br /&gt;
# I also edited some wiki articles, namely&lt;br /&gt;
## this Maltfield_Log and Maltfield_Log/2026&lt;br /&gt;
## the Main_Page&lt;br /&gt;
## the Eco-Libre:About page (from the footer)&lt;br /&gt;
## a Documentation page, which describes what the wiki is for and what it&#039;s not for&lt;br /&gt;
# TOOO: write Eco-Libre:Privacy_policy&lt;br /&gt;
&lt;br /&gt;
== 2026-03-31 ==&lt;br /&gt;
Hello World!&lt;br /&gt;
&lt;br /&gt;
# I installed this wiki last week on 2026-03-27&lt;br /&gt;
# since then, I did some hardening and basic setup (skin, logos)&lt;br /&gt;
# today I continued through the process of configuring its built-in plugins&lt;br /&gt;
# I&#039;m still in the process of a 3TOFU on the desired extensions.&lt;br /&gt;
# now I&#039;m finally editing some pages&lt;br /&gt;
# &#039;&#039;&#039;TODO: download, activate, and configure additional extensions&#039;&#039;&#039;&lt;/div&gt;</summary>
		<author><name>Maltfield</name></author>
	</entry>
	<entry>
		<id>https://wiki.eco-libre.org/index.php?title=Maltfield_Log/2026&amp;diff=109</id>
		<title>Maltfield Log/2026</title>
		<link rel="alternate" type="text/html" href="https://wiki.eco-libre.org/index.php?title=Maltfield_Log/2026&amp;diff=109"/>
		<updated>2026-05-05T19:44:06Z</updated>

		<summary type="html">&lt;p&gt;Maltfield: finished adding log entries for April 2026&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
== 2026-04-28 ==&lt;br /&gt;
# one of the authors of the CERN OHL license got back to me! https://forums.ohwr.org/t/possible-to-triple-license-cern-ohl-s-2-0-agpl-3-0-cc-by-sa-4-0/849882/6&lt;br /&gt;
# they confirmed what I said: don&#039;t license under 3 licenses, or the person who uses our stuff can choose which license they want. that&#039;s not good.&lt;br /&gt;
# unfortuantely they didn&#039;t comment on my copyright DEP5 file, so I asked them to&lt;br /&gt;
# in the meantime, I did look into REUSE&lt;br /&gt;
## it looked like a big PIA. their demo vid shows you having to define the license of every file. that&#039;s a nightmare.&lt;br /&gt;
## the docs said that there is a &#039;convert dep5&#039;. that would be a lifesaver! https://codeberg.org/fsfe/reuse-tool&lt;br /&gt;
## I installed reuse from apt, but I discovered there is NO &#039;convert-dep5&#039; option :(&lt;br /&gt;
## I tried, instead, to install from pip (very insecure but I did it in a dispVM), and it *does* have the &#039;convert-dep5&#039; command&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
user@disp4360:~/sandbox/life-line$ pip install reuse&lt;br /&gt;
error: externally-managed-environment&lt;br /&gt;
&lt;br /&gt;
× This environment is externally managed&lt;br /&gt;
╰─&amp;gt; To install Python packages system-wide, try apt install&lt;br /&gt;
	python3-xyz, where xyz is the package you are trying to&lt;br /&gt;
	install.&lt;br /&gt;
    &lt;br /&gt;
	If you wish to install a non-Debian-packaged Python package,&lt;br /&gt;
	create a virtual environment using python3 -m venv path/to/venv.&lt;br /&gt;
	Then use path/to/venv/bin/python and path/to/venv/bin/pip. Make&lt;br /&gt;
	sure you have python3-full installed.&lt;br /&gt;
    &lt;br /&gt;
	If you wish to install a non-Debian packaged Python application,&lt;br /&gt;
	it may be easiest to use pipx install xyz, which will manage a&lt;br /&gt;
	virtual environment for you. Make sure you have pipx installed.&lt;br /&gt;
    &lt;br /&gt;
	See /usr/share/doc/python3.11/README.venv for more information.&lt;br /&gt;
&lt;br /&gt;
note: If you believe this is a mistake, please contact your Python installation or OS distribution provider. You can override this, at the risk of breaking your Python installation or OS, by passing --break-system-packages.&lt;br /&gt;
hint: See PEP 668 for the detailed specification.&lt;br /&gt;
user@disp4360:~/sandbox/life-line$&lt;br /&gt;
&lt;br /&gt;
user@disp4360:~/sandbox/life-line$ sudo apt-get install python3-virtualenv&lt;br /&gt;
Reading package lists... Done&lt;br /&gt;
Building dependency tree... Done&lt;br /&gt;
Reading state information... Done&lt;br /&gt;
The following packages were automatically installed and are no longer required:&lt;br /&gt;
  python3-binaryornot python3-boolean python3-debian python3-license-expression&lt;br /&gt;
Use &#039;sudo apt autoremove&#039; to remove them.&lt;br /&gt;
The following additional packages will be installed:&lt;br /&gt;
  python3-distlib python3-filelock python3-pip-whl python3-platformdirs&lt;br /&gt;
  python3-setuptools-whl python3-wheel-whl&lt;br /&gt;
The following NEW packages will be installed:&lt;br /&gt;
  python3-distlib python3-filelock python3-pip-whl python3-platformdirs&lt;br /&gt;
  python3-setuptools-whl python3-virtualenv python3-wheel-whl&lt;br /&gt;
0 upgraded, 7 newly installed, 0 to remove and 59 not upgraded.&lt;br /&gt;
Need to get 3,245 kB of archives.&lt;br /&gt;
After this operation, 4,914 kB of additional disk space will be used.&lt;br /&gt;
Do you want to continue? [Y/n] y&lt;br /&gt;
Get:1 https://deb.debian.org/debian bookworm/main amd64 python3-distlib all 0.3.6-1 [257 kB]&lt;br /&gt;
Get:2 https://deb.debian.org/debian bookworm/main amd64 python3-filelock all 3.9.0-1 [9,460 B]&lt;br /&gt;
Get:3 https://deb.debian.org/debian bookworm/main amd64 python3-pip-whl all 23.0.1+dfsg-1 [1,717 kB]&lt;br /&gt;
Get:4 https://deb.debian.org/debian bookworm/main amd64 python3-platformdirs all 2.6.0-1 [16.3 kB]&lt;br /&gt;
Get:5 https://deb.debian.org/debian bookworm/main amd64 python3-setuptools-whl all 66.1.1-1+deb12u2 [1,112 kB]&lt;br /&gt;
Get:6 https://deb.debian.org/debian bookworm/main amd64 python3-wheel-whl all 0.38.4-2 [38.6 kB]&lt;br /&gt;
Get:7 https://deb.debian.org/debian bookworm/main amd64 python3-virtualenv all 20.17.1+ds-1 [93.9 kB]&lt;br /&gt;
Fetched 3,245 kB in 4s (776 kB/s)        &lt;br /&gt;
Selecting previously unselected package python3-distlib.&lt;br /&gt;
(Reading database ... 450690 files and directories currently installed.)&lt;br /&gt;
Preparing to unpack .../0-python3-distlib_0.3.6-1_all.deb ...&lt;br /&gt;
Unpacking python3-distlib (0.3.6-1) ...&lt;br /&gt;
Selecting previously unselected package python3-filelock.&lt;br /&gt;
Preparing to unpack .../1-python3-filelock_3.9.0-1_all.deb ...&lt;br /&gt;
Unpacking python3-filelock (3.9.0-1) ...&lt;br /&gt;
Selecting previously unselected package python3-pip-whl.&lt;br /&gt;
Preparing to unpack .../2-python3-pip-whl_23.0.1+dfsg-1_all.deb ...&lt;br /&gt;
Unpacking python3-pip-whl (23.0.1+dfsg-1) ...&lt;br /&gt;
Selecting previously unselected package python3-platformdirs.&lt;br /&gt;
Preparing to unpack .../3-python3-platformdirs_2.6.0-1_all.deb ...&lt;br /&gt;
Unpacking python3-platformdirs (2.6.0-1) ...&lt;br /&gt;
Selecting previously unselected package python3-setuptools-whl.&lt;br /&gt;
Preparing to unpack .../4-python3-setuptools-whl_66.1.1-1+deb12u2_all.deb ...&lt;br /&gt;
Unpacking python3-setuptools-whl (66.1.1-1+deb12u2) ...&lt;br /&gt;
Selecting previously unselected package python3-wheel-whl.&lt;br /&gt;
Preparing to unpack .../5-python3-wheel-whl_0.38.4-2_all.deb ...&lt;br /&gt;
Unpacking python3-wheel-whl (0.38.4-2) ...&lt;br /&gt;
Selecting previously unselected package python3-virtualenv.&lt;br /&gt;
Preparing to unpack .../6-python3-virtualenv_20.17.1+ds-1_all.deb ...&lt;br /&gt;
Unpacking python3-virtualenv (20.17.1+ds-1) ...&lt;br /&gt;
Setting up python3-setuptools-whl (66.1.1-1+deb12u2) ...&lt;br /&gt;
Setting up python3-filelock (3.9.0-1) ...&lt;br /&gt;
Setting up python3-pip-whl (23.0.1+dfsg-1) ...&lt;br /&gt;
Setting up python3-distlib (0.3.6-1) ...&lt;br /&gt;
Setting up python3-platformdirs (2.6.0-1) ...&lt;br /&gt;
Setting up python3-wheel-whl (0.38.4-2) ...&lt;br /&gt;
Setting up python3-virtualenv (20.17.1+ds-1) ...&lt;br /&gt;
Processing triggers for man-db (2.11.2-2) ...&lt;br /&gt;
Scanning processes...                                                                    &lt;br /&gt;
Scanning linux images...                                                                 &lt;br /&gt;
&lt;br /&gt;
No services need to be restarted.&lt;br /&gt;
&lt;br /&gt;
No containers need to be restarted.&lt;br /&gt;
&lt;br /&gt;
No user sessions are running outdated binaries.&lt;br /&gt;
&lt;br /&gt;
No VM guests are running outdated hypervisor (qemu) binaries on this host.&lt;br /&gt;
user@disp4360:~/sandbox/life-line$ python3 -m virtualenv --python=python3.7 /tmp/virtualenv&lt;br /&gt;
RuntimeError: failed to find interpreter for Builtin discover of python_spec=&#039;python3.7&#039;&lt;br /&gt;
user@disp4360:~/sandbox/life-line$&lt;br /&gt;
&lt;br /&gt;
user@disp4360:~/sandbox/life-line$ python3 -m virtualenv --python=python3 /tmp/virtualenvcreated virtual environment CPython3.11.2.final.0-64 in 248ms&lt;br /&gt;
  creator CPython3Posix(dest=/tmp/virtualenv, clear=False, no_vcs_ignore=False, global=False)&lt;br /&gt;
  seeder FromAppData(download=False, pip=bundle, setuptools=bundle, wheel=bundle, via=copy, app_data_dir=/home/user/.local/share/virtualenv)&lt;br /&gt;
	added seed packages: pip==23.0.1, setuptools==66.1.1, wheel==0.38.4&lt;br /&gt;
  activators BashActivator,CShellActivator,FishActivator,NushellActivator,PowerShellActivator,PythonActivator&lt;br /&gt;
user@disp4360:~/sandbox/life-line$&lt;br /&gt;
&lt;br /&gt;
user@disp4360:~/sandbox/life-line$ source /tmp/virtualenv/bin/activate&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ pip install --user --upgrade reuse&lt;br /&gt;
ERROR: Can not perform a &#039;--user&#039; install. User site-packages are not visible in this virtualenv.&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$&lt;br /&gt;
&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ pip install  --upgrade reuse&lt;br /&gt;
Collecting reuse&lt;br /&gt;
  Downloading reuse-6.2.0.tar.gz (1.6 MB)&lt;br /&gt;
	 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 1.6/1.6 MB 696.8 kB/s eta 0:00:00&lt;br /&gt;
  Installing build dependencies ... done&lt;br /&gt;
  Getting requirements to build wheel ... done&lt;br /&gt;
  Preparing metadata (pyproject.toml) ... done&lt;br /&gt;
Collecting Jinja2&amp;gt;=3.0.0&lt;br /&gt;
  Downloading jinja2-3.1.6-py3-none-any.whl (134 kB)&lt;br /&gt;
	 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 134.9/134.9 kB 576.8 kB/s eta 0:00:00&lt;br /&gt;
Collecting attrs&amp;gt;=23.2&lt;br /&gt;
  Downloading attrs-26.1.0-py3-none-any.whl (67 kB)&lt;br /&gt;
	 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 67.5/67.5 kB 674.1 kB/s eta 0:00:00&lt;br /&gt;
Collecting click&amp;gt;=8.1&lt;br /&gt;
  Downloading click-8.3.3-py3-none-any.whl (110 kB)&lt;br /&gt;
	 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 110.5/110.5 kB 1.1 MB/s eta 0:00:00&lt;br /&gt;
Collecting license-expression&amp;gt;=21.6.14&lt;br /&gt;
  Downloading license_expression-30.4.4-py3-none-any.whl (120 kB)&lt;br /&gt;
	 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 120.6/120.6 kB 1.3 MB/s eta 0:00:00&lt;br /&gt;
Collecting python-debian&amp;gt;=0.1.48&lt;br /&gt;
  Downloading python_debian-1.1.0-py3-none-any.whl (137 kB)&lt;br /&gt;
	 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 138.0/138.0 kB 819.7 kB/s eta 0:00:00&lt;br /&gt;
Collecting python-magic&amp;gt;=0.4.12&lt;br /&gt;
  Downloading python_magic-0.4.27-py2.py3-none-any.whl (13 kB)&lt;br /&gt;
Collecting tomlkit&amp;gt;=0.8&lt;br /&gt;
  Downloading tomlkit-0.14.0-py3-none-any.whl (39 kB)&lt;br /&gt;
Collecting MarkupSafe&amp;gt;=2.0&lt;br /&gt;
  Downloading markupsafe-3.0.3-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (22 kB)&lt;br /&gt;
Collecting boolean.py&amp;gt;=4.0&lt;br /&gt;
  Downloading boolean_py-5.0-py3-none-any.whl (26 kB)&lt;br /&gt;
Collecting charset-normalizer&lt;br /&gt;
  Downloading charset_normalizer-3.4.7-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (214 kB)&lt;br /&gt;
	 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 214.1/214.1 kB 1.3 MB/s eta 0:00:00&lt;br /&gt;
Building wheels for collected packages: reuse&lt;br /&gt;
  Building wheel for reuse (pyproject.toml) ... done&lt;br /&gt;
  Created wheel for reuse: filename=reuse-6.2.0-cp311-cp311-manylinux_2_36_x86_64.whl size=158934 sha256=db5cd3e5984de36238f3ead308c250b12c1cce318d17eb802313e29b25bd28cf&lt;br /&gt;
  Stored in directory: /home/user/.cache/pip/wheels/a0/8e/93/87a9da23115993a12577ff1fc8df222b28bd91e19b9987c529&lt;br /&gt;
Successfully built reuse&lt;br /&gt;
Installing collected packages: boolean.py, tomlkit, python-magic, MarkupSafe, license-expression, click, charset-normalizer, attrs, python-debian, Jinja2, reuse&lt;br /&gt;
Successfully installed Jinja2-3.1.6 MarkupSafe-3.0.3 attrs-26.1.0 boolean.py-5.0 charset-normalizer-3.4.7 click-8.3.3 license-expression-30.4.4 python-debian-1.1.0 python-magic-0.4.27 reuse-6.2.0 tomlkit-0.14.0&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$&lt;br /&gt;
&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ reuse --version&lt;br /&gt;
reuse, version 6.2.0&lt;br /&gt;
&lt;br /&gt;
This program is free software: you can redistribute it and/or modify it under&lt;br /&gt;
the terms of the GNU General Public License as published by the Free Software&lt;br /&gt;
Foundation, either version 3 of the License, or (at your option) any later&lt;br /&gt;
version.&lt;br /&gt;
&lt;br /&gt;
This program is distributed in the hope that it will be useful, but WITHOUT&lt;br /&gt;
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS&lt;br /&gt;
FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.&lt;br /&gt;
&lt;br /&gt;
You should have received a copy of the GNU General Public License along with&lt;br /&gt;
this program. If not, see &amp;lt;https://www.gnu.org/licenses/&amp;gt;.&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ &lt;br /&gt;
&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ reuse convert-dep5&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## no output; but it looked like it worked&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ reuse lint&lt;br /&gt;
# MISSING LICENSES&lt;br /&gt;
&lt;br /&gt;
&#039;AGPL-3.0&#039; found in:&lt;br /&gt;
* docs/buildDocs.sh&lt;br /&gt;
* docs/conf.py&lt;br /&gt;
&#039;CC-BY-SA-4.0&#039; found in:&lt;br /&gt;
* .github/workflows/docs_pages_workflow.yml&lt;br /&gt;
* .gitignore&lt;br /&gt;
* CHANGELOG&lt;br /&gt;
* KEYS&lt;br /&gt;
* README.md&lt;br /&gt;
* docs/.gitignore&lt;br /&gt;
* docs/Makefile&lt;br /&gt;
* docs/_static/custom.css&lt;br /&gt;
* docs/_templates/versions.html&lt;br /&gt;
* docs/attribution.rst&lt;br /&gt;
* docs/build/index.rst&lt;br /&gt;
* docs/build/intake/bom.ods&lt;br /&gt;
* docs/build/intake/bom.rst&lt;br /&gt;
* docs/build/intake/index.rst&lt;br /&gt;
* docs/build/intake/what.rst&lt;br /&gt;
* docs/build/settling-tank/bom.rst&lt;br /&gt;
* docs/build/settling-tank/index.rst&lt;br /&gt;
* docs/build/settling-tank/what.rst&lt;br /&gt;
* docs/changelog.rst&lt;br /&gt;
* docs/conf.py.orig&lt;br /&gt;
* docs/dev/index.rst&lt;br /&gt;
* docs/faq.rst&lt;br /&gt;
* docs/images/eco-libre_logo-2025.08.svg&lt;br /&gt;
* docs/images/eco-libre_text-logo-2025.08.svg&lt;br /&gt;
* docs/images/eco-libre_text-logo-2025.08_500px.png&lt;br /&gt;
* docs/images/life-line_2023.12.jpg&lt;br /&gt;
* docs/images/life-line_2025.10.jpg&lt;br /&gt;
* docs/images/life-line_intake_cleanout-drain.jpg&lt;br /&gt;
* docs/images/life-line_intake_drum.jpg&lt;br /&gt;
* docs/images/life-line_intake_expanded-metal.jpg&lt;br /&gt;
* docs/images/life-line_intake_fine-mesh.jpg&lt;br /&gt;
* docs/images/life-line_intake_outflow.jpg&lt;br /&gt;
* docs/images/life-line_intake_parts.svg&lt;br /&gt;
* docs/images/life-line_intake_turbulence-bar.jpg&lt;br /&gt;
* docs/images/life-line_intake_weir.jpg&lt;br /&gt;
* docs/images/life-line_praxis_boris-plotkin.2024-11.jpg&lt;br /&gt;
* docs/images/life-line_praxis_vegan-beasts_screen.2025-04.jpg&lt;br /&gt;
* docs/images/life-line_praxis_vegan-beasts_weir.2025-04.jpg&lt;br /&gt;
* docs/index.rst&lt;br /&gt;
* docs/introduction/index.rst&lt;br /&gt;
* docs/license.rst&lt;br /&gt;
* docs/locales/es/LC_MESSAGES/autodoc.mo&lt;br /&gt;
* docs/locales/es/LC_MESSAGES/autodoc.po&lt;br /&gt;
* docs/locales/es/LC_MESSAGES/index.mo&lt;br /&gt;
* docs/locales/es/LC_MESSAGES/index.po&lt;br /&gt;
* docs/make.bat&lt;br /&gt;
* docs/praxis/index.rst&lt;br /&gt;
* docs/support.rst&lt;br /&gt;
* docs/theory/index.rst&lt;br /&gt;
&#039;CERN-OHL-S-2.0&#039; found in:&lt;br /&gt;
* intake.FCStd&lt;br /&gt;
&lt;br /&gt;
# SUMMARY&lt;br /&gt;
&lt;br /&gt;
* Bad licenses: 0&lt;br /&gt;
* Deprecated licenses: 0&lt;br /&gt;
* Licenses without file extension: 0&lt;br /&gt;
* Missing licenses: AGPL-3.0, CC-BY-SA-4.0, CERN-OHL-S-2.0&lt;br /&gt;
* Unused licenses: 0&lt;br /&gt;
* Used licenses: AGPL-3.0, CC-BY-SA-4.0, CERN-OHL-S-2.0&lt;br /&gt;
* Read errors: 0&lt;br /&gt;
* Invalid SPDX License Expressions: 0&lt;br /&gt;
* Files with copyright information: 52 / 52&lt;br /&gt;
* Files with license information: 52 / 52&lt;br /&gt;
&lt;br /&gt;
Unfortunately, your project is not compliant with version 3.3 of the REUSE Specification :-(&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# RECOMMENDATIONS&lt;br /&gt;
&lt;br /&gt;
* Fix missing licenses: For at least one of the license identifiers provided by&lt;br /&gt;
  the &#039;SPDX-License-Identifier&#039; tags, there is no corresponding license text&lt;br /&gt;
  file in the &#039;LICENSES&#039; directory. For SPDX license identifiers, you can simply&lt;br /&gt;
  run &#039;reuse download --all&#039; to get any missing ones. For custom licenses&lt;br /&gt;
  (starting with &#039;LicenseRef-&#039;), you need to add these files yourself.&lt;br /&gt;
&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## ok, so it&#039;s just unhappy the licenses are missing; let&#039;s add them with the tool&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ reuse download&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ &lt;br /&gt;
&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ reuse download CC-BY-SA-4.0&lt;br /&gt;
Successfully downloaded LICENSES/CC-BY-SA-4.0.txt.&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$&lt;br /&gt;
&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ ls -lah LICENSES&lt;br /&gt;
total 28K&lt;br /&gt;
drwxr-xr-x 2 user user 4.0K Apr 28 16:43 .&lt;br /&gt;
drwxr-xr-x 7 user user 4.0K Apr 28 16:43 ..&lt;br /&gt;
-rw-r--r-- 1 user user  18K Apr 28 16:43 CC-BY-SA-4.0.txt&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ &lt;br /&gt;
&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ reuse download CERN-OHL-S-2.0&lt;br /&gt;
Successfully downloaded LICENSES/CERN-OHL-S-2.0.txt.&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ &lt;br /&gt;
&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ reuse download AGPL-3.0&lt;br /&gt;
Successfully downloaded LICENSES/AGPL-3.0.txt.&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ &lt;br /&gt;
&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ ls -lah LICENSES&lt;br /&gt;
total 80K&lt;br /&gt;
drwxr-xr-x 2 user user 4.0K Apr 28 16:44 .&lt;br /&gt;
drwxr-xr-x 7 user user 4.0K Apr 28 16:43 ..&lt;br /&gt;
-rw-r--r-- 1 user user  34K Apr 28 16:44 AGPL-3.0.txt&lt;br /&gt;
-rw-r--r-- 1 user user  18K Apr 28 16:43 CC-BY-SA-4.0.txt&lt;br /&gt;
-rw-r--r-- 1 user user  14K Apr 28 16:43 CERN-OHL-S-2.0.txt&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## wut. they said we can&#039;t use AGPL-3.0?&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ reuse lint&lt;br /&gt;
# DEPRECATED LICENSES&lt;br /&gt;
&lt;br /&gt;
The following licenses are deprecated by SPDX:&lt;br /&gt;
* AGPL-3.0&lt;br /&gt;
&lt;br /&gt;
# SUMMARY&lt;br /&gt;
&lt;br /&gt;
* Bad licenses: 0&lt;br /&gt;
* Deprecated licenses: AGPL-3.0&lt;br /&gt;
* Licenses without file extension: 0&lt;br /&gt;
* Missing licenses: 0&lt;br /&gt;
* Unused licenses: 0&lt;br /&gt;
* Used licenses: AGPL-3.0, CC-BY-SA-4.0, CERN-OHL-S-2.0&lt;br /&gt;
* Read errors: 0&lt;br /&gt;
* Invalid SPDX License Expressions: 0&lt;br /&gt;
* Files with copyright information: 52 / 52&lt;br /&gt;
* Files with license information: 52 / 52&lt;br /&gt;
&lt;br /&gt;
Unfortunately, your project is not compliant with version 3.3 of the REUSE Specification :-(&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# RECOMMENDATIONS&lt;br /&gt;
&lt;br /&gt;
* Fix deprecated licenses: At least one of the licenses in the LICENSES&lt;br /&gt;
  directory and/or provided by an &#039;SPDX-License-Identifier&#039; tag or in&lt;br /&gt;
  &#039;.reuse/dep5&#039; has been deprecated by SPDX. The current list and their&lt;br /&gt;
  respective recommended  new identifiers can be found here:&lt;br /&gt;
  &amp;lt;https://spdx.org/licenses/#deprecated&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## ok, apparently they want one of these https://spdx.org/licenses/&lt;br /&gt;
###  AGPL-3.0-only&lt;br /&gt;
###  AGPL-3.0-or-later&lt;br /&gt;
## ugh, they deleted our dep5 file; appraently it puts everything in a REUSE.toml file (there&#039;s no .license files everywhere, which I do like)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ ls -lah .reuse/&lt;br /&gt;
total 8.0K&lt;br /&gt;
drwxr-xr-x 2 user user 4.0K Apr 28 16:34 .&lt;br /&gt;
drwxr-xr-x 7 user user 4.0K Apr 28 16:43 ..&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ &lt;br /&gt;
&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ ls -lah&lt;br /&gt;
total 376K&lt;br /&gt;
drwxr-xr-x  7 user user 4.0K Apr 28 16:43 .&lt;br /&gt;
drwxr-xr-x  3 user user 4.0K Apr 28 16:23 ..&lt;br /&gt;
-rw-r--r--  1 user user  531 Apr 28 16:23 CHANGELOG&lt;br /&gt;
drwxr-xr-x 11 user user 4.0K Apr 28 16:23 docs&lt;br /&gt;
drwxr-xr-x  8 user user 4.0K Apr 28 16:28 .git&lt;br /&gt;
drwxr-xr-x  3 user user 4.0K Apr 28 16:23 .github&lt;br /&gt;
-rw-r--r--  1 user user   44 Apr 28 16:23 .gitignore&lt;br /&gt;
-rw-r--r--  1 user user 221K Apr 28 16:23 intake.FCStd&lt;br /&gt;
-rw-r--r--  1 user user  71K Apr 28 16:23 KEYS&lt;br /&gt;
-rw-r--r--  1 user user  35K Apr 28 16:23 LICENSE&lt;br /&gt;
drwxr-xr-x  2 user user 4.0K Apr 28 16:44 LICENSES&lt;br /&gt;
-rw-r--r--  1 user user 1.3K Apr 28 16:23 README.md&lt;br /&gt;
drwxr-xr-x  2 user user 4.0K Apr 28 16:34 .reuse&lt;br /&gt;
-rw-r--r--  1 user user 1.7K Apr 28 16:34 REUSE.toml&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## oh, this isn&#039;t so bad. I was afriad it would literally list every single file, but instead it more-or-less just adapted what I had for the dep5 format&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ cat REUSE.toml &lt;br /&gt;
version = 1&lt;br /&gt;
SPDX-PackageName = &amp;quot;Eco-Libre Life-Line&amp;quot;&lt;br /&gt;
SPDX-PackageSupplier = &amp;quot;https://eco-libre.org/contact&amp;quot;&lt;br /&gt;
SPDX-PackageDownloadLocation = &amp;quot;https://github.com/Eco-Libre/life-line&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[annotations]]&lt;br /&gt;
path = &amp;quot;**&amp;quot;&lt;br /&gt;
precedence = &amp;quot;aggregate&amp;quot;&lt;br /&gt;
SPDX-FileCopyrightText = [&amp;quot;&amp;quot;, &amp;quot;2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&amp;quot;, &amp;quot;2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&amp;quot;]&lt;br /&gt;
SPDX-License-Identifier = &amp;quot;CC-BY-SA-4.0&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[annotations]]&lt;br /&gt;
path = [&amp;quot;**.FCStd&amp;quot;, &amp;quot;**.scad&amp;quot;, &amp;quot;**.fzz&amp;quot;, &amp;quot;**.blend&amp;quot;, &amp;quot;**.kicad_pcb&amp;quot;, &amp;quot;**.sh3d&amp;quot;, &amp;quot;**.vue&amp;quot;, &amp;quot;**.dxf&amp;quot;, &amp;quot;**.dwg&amp;quot;, &amp;quot;**.bim&amp;quot;, &amp;quot;**.skp&amp;quot;, &amp;quot;**.skb&amp;quot;, &amp;quot;**.max&amp;quot;, &amp;quot;**.3ds&amp;quot;, &amp;quot;**.gto&amp;quot;, &amp;quot;**.pod&amp;quot;, &amp;quot;**.brd&amp;quot;, &amp;quot;**.sch&amp;quot;, &amp;quot;**.3dm&amp;quot;, &amp;quot;**.dwb&amp;quot;, &amp;quot;**.slddrw&amp;quot;, &amp;quot;**.sldasm&amp;quot;]&lt;br /&gt;
precedence = &amp;quot;aggregate&amp;quot;&lt;br /&gt;
SPDX-FileCopyrightText = [&amp;quot;&amp;quot;, &amp;quot;2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&amp;quot;, &amp;quot;2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&amp;quot;]&lt;br /&gt;
SPDX-License-Identifier = &amp;quot;CERN-OHL-S-2.0&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[annotations]]&lt;br /&gt;
path = [&amp;quot;**.c&amp;quot;, &amp;quot;**.cpp&amp;quot;, &amp;quot;**.h&amp;quot;, &amp;quot;**.hpp&amp;quot;, &amp;quot;**.cc&amp;quot;, &amp;quot;**.ino&amp;quot;, &amp;quot;**.pde&amp;quot;, &amp;quot;**.make&amp;quot;, &amp;quot;**.automake&amp;quot;, &amp;quot;**.cmake&amp;quot;, &amp;quot;**.java&amp;quot;, &amp;quot;**.javacc&amp;quot;, &amp;quot;**.rust&amp;quot;, &amp;quot;**.d&amp;quot;, &amp;quot;**.j&amp;quot;, &amp;quot;**.r&amp;quot;, &amp;quot;**.sh&amp;quot;, &amp;quot;**.bash&amp;quot;, &amp;quot;**.zsh&amp;quot;, &amp;quot;**.awk&amp;quot;, &amp;quot;**.tcl&amp;quot;, &amp;quot;**.py&amp;quot;, &amp;quot;**.python&amp;quot;, &amp;quot;**.python2&amp;quot;, &amp;quot;**.python3&amp;quot;, &amp;quot;**.FCMacro&amp;quot;, &amp;quot;**.pl&amp;quot;, &amp;quot;**.perl&amp;quot;, &amp;quot;**.kivy&amp;quot;, &amp;quot;**.qix&amp;quot;, &amp;quot;**.dtd&amp;quot;, &amp;quot;**.shp&amp;quot;, &amp;quot;**.shz&amp;quot;, &amp;quot;**.dbf&amp;quot;, &amp;quot;**.shx&amp;quot;, &amp;quot;**.prj&amp;quot;, &amp;quot;**.kml&amp;quot;, &amp;quot;**.php&amp;quot;, &amp;quot;**.js&amp;quot;, &amp;quot;**.javascript&amp;quot;, &amp;quot;**.typescript&amp;quot;, &amp;quot;**.ruby&amp;quot;, &amp;quot;**.eruby&amp;quot;, &amp;quot;**.cuda&amp;quot;, &amp;quot;**.erlang&amp;quot;, &amp;quot;**.lisp&amp;quot;, &amp;quot;**.lua&amp;quot;, &amp;quot;**.haskell&amp;quot;, &amp;quot;**.go&amp;quot;, &amp;quot;**.autohotkey&amp;quot;, &amp;quot;**.basic&amp;quot;, &amp;quot;**.swift&amp;quot;, &amp;quot;**.vb&amp;quot;, &amp;quot;**.asp&amp;quot;]&lt;br /&gt;
precedence = &amp;quot;aggregate&amp;quot;&lt;br /&gt;
SPDX-FileCopyrightText = [&amp;quot;&amp;quot;, &amp;quot;2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&amp;quot;, &amp;quot;2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&amp;quot;]&lt;br /&gt;
SPDX-License-Identifier = &amp;quot;AGPL-3.0&amp;quot;&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## I edited the file, but the lint still isn&#039;t happy. I guess I have to update the LICENSES dir from AGPL-3.0 to AGPL-3.0-only :/&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ vim REUSE.toml &lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ &lt;br /&gt;
&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ reuse lint&lt;br /&gt;
# DEPRECATED LICENSES&lt;br /&gt;
&lt;br /&gt;
The following licenses are deprecated by SPDX:&lt;br /&gt;
* AGPL-3.0&lt;br /&gt;
&lt;br /&gt;
# MISSING LICENSES&lt;br /&gt;
&lt;br /&gt;
&#039;AGPL-3.0-only&#039; found in:&lt;br /&gt;
* docs/buildDocs.sh&lt;br /&gt;
* docs/conf.py&lt;br /&gt;
&lt;br /&gt;
# UNUSED LICENSES&lt;br /&gt;
&lt;br /&gt;
The following licenses are not used:&lt;br /&gt;
* AGPL-3.0&lt;br /&gt;
&lt;br /&gt;
# SUMMARY&lt;br /&gt;
&lt;br /&gt;
* Bad licenses: 0&lt;br /&gt;
* Deprecated licenses: AGPL-3.0&lt;br /&gt;
* Licenses without file extension: 0&lt;br /&gt;
* Missing licenses: AGPL-3.0-only&lt;br /&gt;
* Unused licenses: AGPL-3.0&lt;br /&gt;
* Used licenses: AGPL-3.0-only, CC-BY-SA-4.0, CERN-OHL-S-2.0&lt;br /&gt;
* Read errors: 0&lt;br /&gt;
* Invalid SPDX License Expressions: 0&lt;br /&gt;
* Files with copyright information: 52 / 52&lt;br /&gt;
* Files with license information: 52 / 52&lt;br /&gt;
&lt;br /&gt;
Unfortunately, your project is not compliant with version 3.3 of the REUSE Specification :-(&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# RECOMMENDATIONS&lt;br /&gt;
&lt;br /&gt;
* Fix deprecated licenses: At least one of the licenses in the LICENSES&lt;br /&gt;
  directory and/or provided by an &#039;SPDX-License-Identifier&#039; tag or in&lt;br /&gt;
  &#039;.reuse/dep5&#039; has been deprecated by SPDX. The current list and their&lt;br /&gt;
  respective recommended  new identifiers can be found here:&lt;br /&gt;
  &amp;lt;https://spdx.org/licenses/#deprecated&amp;gt;&lt;br /&gt;
* Fix missing licenses: For at least one of the license identifiers provided by&lt;br /&gt;
  the &#039;SPDX-License-Identifier&#039; tags, there is no corresponding license text&lt;br /&gt;
  file in the &#039;LICENSES&#039; directory. For SPDX license identifiers, you can simply&lt;br /&gt;
  run &#039;reuse download --all&#039; to get any missing ones. For custom licenses&lt;br /&gt;
  (starting with &#039;LicenseRef-&#039;), you need to add these files yourself.&lt;br /&gt;
* Fix unused licenses: At least one of the license text files in &#039;LICENSES&#039; is&lt;br /&gt;
  not referenced by any file, e.g. by an &#039;SPDX-License-Identifier&#039; tag. Please&lt;br /&gt;
  make sure that you either tag the accordingly licensed files properly, or&lt;br /&gt;
  delete the unused license text if you are sure that no file or code snippet is&lt;br /&gt;
  licensed as such.&lt;br /&gt;
&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## ok, now it&#039;s happy&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ ls -lah LICENSES&lt;br /&gt;
total 80K&lt;br /&gt;
drwxr-xr-x 2 user user 4.0K Apr 28 16:44 .&lt;br /&gt;
drwxr-xr-x 7 user user 4.0K Apr 28 16:50 ..&lt;br /&gt;
-rw-r--r-- 1 user user  34K Apr 28 16:44 AGPL-3.0.txt&lt;br /&gt;
-rw-r--r-- 1 user user  18K Apr 28 16:43 CC-BY-SA-4.0.txt&lt;br /&gt;
-rw-r--r-- 1 user user  14K Apr 28 16:43 CERN-OHL-S-2.0.txt&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ &lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ rm LICENSES/AGPL-3.0.txt &lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ &lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ reuse download AGPL-3.0-only&lt;br /&gt;
Successfully downloaded LICENSES/AGPL-3.0-only.txt.&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ &lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ reuse lint&lt;br /&gt;
# SUMMARY&lt;br /&gt;
&lt;br /&gt;
* Bad licenses: 0&lt;br /&gt;
* Deprecated licenses: 0&lt;br /&gt;
* Licenses without file extension: 0&lt;br /&gt;
* Missing licenses: 0&lt;br /&gt;
* Unused licenses: 0&lt;br /&gt;
* Used licenses: AGPL-3.0-only, CC-BY-SA-4.0, CERN-OHL-S-2.0&lt;br /&gt;
* Read errors: 0&lt;br /&gt;
* Invalid SPDX License Expressions: 0&lt;br /&gt;
* Files with copyright information: 52 / 52&lt;br /&gt;
* Files with license information: 52 / 52&lt;br /&gt;
&lt;br /&gt;
Congratulations! Your project is compliant with version 3.3 of the REUSE Specification :-)&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## anyway, here&#039;s our final file&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ cat REUSE.toml &lt;br /&gt;
version = 1&lt;br /&gt;
SPDX-PackageName = &amp;quot;Eco-Libre Life-Line&amp;quot;&lt;br /&gt;
SPDX-PackageSupplier = &amp;quot;https://eco-libre.org/contact&amp;quot;&lt;br /&gt;
SPDX-PackageDownloadLocation = &amp;quot;https://github.com/Eco-Libre/life-line&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[annotations]]&lt;br /&gt;
path = &amp;quot;**&amp;quot;&lt;br /&gt;
precedence = &amp;quot;aggregate&amp;quot;&lt;br /&gt;
SPDX-FileCopyrightText = [&amp;quot;&amp;quot;, &amp;quot;2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&amp;quot;, &amp;quot;2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&amp;quot;]&lt;br /&gt;
SPDX-License-Identifier = &amp;quot;CC-BY-SA-4.0&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[annotations]]&lt;br /&gt;
path = [&amp;quot;**.FCStd&amp;quot;, &amp;quot;**.scad&amp;quot;, &amp;quot;**.fzz&amp;quot;, &amp;quot;**.blend&amp;quot;, &amp;quot;**.kicad_pcb&amp;quot;, &amp;quot;**.sh3d&amp;quot;, &amp;quot;**.vue&amp;quot;, &amp;quot;**.dxf&amp;quot;, &amp;quot;**.dwg&amp;quot;, &amp;quot;**.bim&amp;quot;, &amp;quot;**.skp&amp;quot;, &amp;quot;**.skb&amp;quot;, &amp;quot;**.max&amp;quot;, &amp;quot;**.3ds&amp;quot;, &amp;quot;**.gto&amp;quot;, &amp;quot;**.pod&amp;quot;, &amp;quot;**.brd&amp;quot;, &amp;quot;**.sch&amp;quot;, &amp;quot;**.3dm&amp;quot;, &amp;quot;**.dwb&amp;quot;, &amp;quot;**.slddrw&amp;quot;, &amp;quot;**.sldasm&amp;quot;]&lt;br /&gt;
precedence = &amp;quot;aggregate&amp;quot;&lt;br /&gt;
SPDX-FileCopyrightText = [&amp;quot;&amp;quot;, &amp;quot;2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&amp;quot;, &amp;quot;2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&amp;quot;]&lt;br /&gt;
SPDX-License-Identifier = &amp;quot;CERN-OHL-S-2.0&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[annotations]]&lt;br /&gt;
path = [&amp;quot;**.c&amp;quot;, &amp;quot;**.cpp&amp;quot;, &amp;quot;**.h&amp;quot;, &amp;quot;**.hpp&amp;quot;, &amp;quot;**.cc&amp;quot;, &amp;quot;**.ino&amp;quot;, &amp;quot;**.pde&amp;quot;, &amp;quot;**.make&amp;quot;, &amp;quot;**.automake&amp;quot;, &amp;quot;**.cmake&amp;quot;, &amp;quot;**.java&amp;quot;, &amp;quot;**.javacc&amp;quot;, &amp;quot;**.rust&amp;quot;, &amp;quot;**.d&amp;quot;, &amp;quot;**.j&amp;quot;, &amp;quot;**.r&amp;quot;, &amp;quot;**.sh&amp;quot;, &amp;quot;**.bash&amp;quot;, &amp;quot;**.zsh&amp;quot;, &amp;quot;**.awk&amp;quot;, &amp;quot;**.tcl&amp;quot;, &amp;quot;**.py&amp;quot;, &amp;quot;**.python&amp;quot;, &amp;quot;**.python2&amp;quot;, &amp;quot;**.python3&amp;quot;, &amp;quot;**.FCMacro&amp;quot;, &amp;quot;**.pl&amp;quot;, &amp;quot;**.perl&amp;quot;, &amp;quot;**.kivy&amp;quot;, &amp;quot;**.qix&amp;quot;, &amp;quot;**.dtd&amp;quot;, &amp;quot;**.shp&amp;quot;, &amp;quot;**.shz&amp;quot;, &amp;quot;**.dbf&amp;quot;, &amp;quot;**.shx&amp;quot;, &amp;quot;**.prj&amp;quot;, &amp;quot;**.kml&amp;quot;, &amp;quot;**.php&amp;quot;, &amp;quot;**.js&amp;quot;, &amp;quot;**.javascript&amp;quot;, &amp;quot;**.typescript&amp;quot;, &amp;quot;**.ruby&amp;quot;, &amp;quot;**.eruby&amp;quot;, &amp;quot;**.cuda&amp;quot;, &amp;quot;**.erlang&amp;quot;, &amp;quot;**.lisp&amp;quot;, &amp;quot;**.lua&amp;quot;, &amp;quot;**.haskell&amp;quot;, &amp;quot;**.go&amp;quot;, &amp;quot;**.autohotkey&amp;quot;, &amp;quot;**.basic&amp;quot;, &amp;quot;**.swift&amp;quot;, &amp;quot;**.vb&amp;quot;, &amp;quot;**.asp&amp;quot;]&lt;br /&gt;
precedence = &amp;quot;aggregate&amp;quot;&lt;br /&gt;
SPDX-FileCopyrightText = [&amp;quot;&amp;quot;, &amp;quot;2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&amp;quot;, &amp;quot;2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&amp;quot;]&lt;br /&gt;
SPDX-License-Identifier = &amp;quot;AGPL-3.0-only&amp;quot;&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## looks like that only created the toml file. None of the files are actually annoated; we do that with `reuse annotate`&lt;br /&gt;
### apparently that command only works for individual files, so I did some find magic&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ find . -type f -exec reuse annotate --copyright --license &#039;{}&#039; \;&lt;br /&gt;
Successfully changed header of docs/license.rst&lt;br /&gt;
Successfully changed header of docs/build/intake/bom.rst&lt;br /&gt;
Successfully changed header of docs/build/intake/index.rst&lt;br /&gt;
Successfully changed header of docs/build/intake/bom.ods.license&lt;br /&gt;
Successfully changed header of docs/build/intake/what.rst&lt;br /&gt;
Successfully changed header of docs/build/index.rst&lt;br /&gt;
Successfully changed header of docs/build/settling-tank/bom.rst&lt;br /&gt;
Successfully changed header of docs/build/settling-tank/index.rst&lt;br /&gt;
Successfully changed header of docs/build/settling-tank/what.rst&lt;br /&gt;
Successfully changed header of docs/support.rst&lt;br /&gt;
Successfully changed header of docs/theory/index.rst&lt;br /&gt;
Successfully changed header of docs/make.bat&lt;br /&gt;
Successfully changed header of docs/buildDocs.sh&lt;br /&gt;
Successfully changed header of docs/images/life-line_intake_cleanout-drain.jpg.license&lt;br /&gt;
Successfully changed header of docs/images/life-line_intake_outflow.jpg.license&lt;br /&gt;
Successfully changed header of docs/images/life-line_2025.10.jpg.license&lt;br /&gt;
Successfully changed header of docs/images/life-line_2023.12.jpg.license&lt;br /&gt;
Successfully changed header of docs/images/life-line_intake_drum.jpg.license&lt;br /&gt;
Successfully changed header of docs/images/life-line_praxis_vegan-beasts_weir.2025-04.jpg.license&lt;br /&gt;
Successfully changed header of docs/images/life-line_praxis_vegan-beasts_screen.2025-04.jpg.license&lt;br /&gt;
Successfully changed header of docs/images/life-line_intake_turbulence-bar.jpg.license&lt;br /&gt;
Successfully changed header of docs/images/life-line_praxis_boris-plotkin.2024-11.jpg.license&lt;br /&gt;
Successfully changed header of docs/images/life-line_intake_fine-mesh.jpg.license&lt;br /&gt;
Successfully changed header of docs/images/eco-libre_logo-2025.08.svg.license&lt;br /&gt;
Successfully changed header of docs/images/eco-libre_text-logo-2025.08.svg.license&lt;br /&gt;
Successfully changed header of docs/images/life-line_intake_weir.jpg.license&lt;br /&gt;
Successfully changed header of docs/images/life-line_intake_parts.svg.license&lt;br /&gt;
Successfully changed header of docs/images/eco-libre_text-logo-2025.08_500px.png.license&lt;br /&gt;
Successfully changed header of docs/images/life-line_intake_expanded-metal.jpg.license&lt;br /&gt;
Successfully changed header of docs/praxis/index.rst&lt;br /&gt;
Successfully changed header of docs/introduction/index.rst&lt;br /&gt;
Successfully changed header of docs/_static/custom.css&lt;br /&gt;
Successfully changed header of docs/index.rst&lt;br /&gt;
Successfully changed header of docs/Makefile&lt;br /&gt;
Usage: reuse annotate [OPTIONS] PATH&lt;br /&gt;
Try &#039;reuse annotate --help&#039; for help.&lt;br /&gt;
&lt;br /&gt;
Error: The following files do not have a recognised file extension. Please use &#039;--style&#039;, &#039;--force-dot-license&#039;, &#039;--fallback-dot-license&#039;, or &#039;--skip-unrecognised&#039;:&lt;br /&gt;
&lt;br /&gt;
docs/conf.py.orig&lt;br /&gt;
Successfully changed header of docs/conf.py&lt;br /&gt;
Successfully changed header of docs/faq.rst&lt;br /&gt;
Successfully changed header of docs/.gitignore&lt;br /&gt;
Successfully changed header of docs/attribution.rst&lt;br /&gt;
Successfully changed header of docs/changelog.rst&lt;br /&gt;
Successfully changed header of docs/_templates/versions.html&lt;br /&gt;
Usage: reuse annotate [OPTIONS] PATH&lt;br /&gt;
Try &#039;reuse annotate --help&#039; for help.&lt;br /&gt;
&lt;br /&gt;
Error: The following files do not have a recognised file extension. Please use &#039;--style&#039;, &#039;--force-dot-license&#039;, &#039;--fallback-dot-license&#039;, or &#039;--skip-unrecognised&#039;:&lt;br /&gt;
&lt;br /&gt;
docs/locales/es/LC_MESSAGES/autodoc.mo&lt;br /&gt;
Successfully changed header of docs/locales/es/LC_MESSAGES/index.po&lt;br /&gt;
Successfully changed header of docs/locales/es/LC_MESSAGES/autodoc.po&lt;br /&gt;
Usage: reuse annotate [OPTIONS] PATH&lt;br /&gt;
Try &#039;reuse annotate --help&#039; for help.&lt;br /&gt;
&lt;br /&gt;
Error: The following files do not have a recognised file extension. Please use &#039;--style&#039;, &#039;--force-dot-license&#039;, &#039;--fallback-dot-license&#039;, or &#039;--skip-unrecognised&#039;:&lt;br /&gt;
&lt;br /&gt;
docs/locales/es/LC_MESSAGES/index.mo&lt;br /&gt;
Successfully changed header of docs/dev/index.rst&lt;br /&gt;
Usage: reuse annotate [OPTIONS] PATH&lt;br /&gt;
Try &#039;reuse annotate --help&#039; for help.&lt;br /&gt;
&lt;br /&gt;
Error: The following files do not have a recognised file extension. Please use &#039;--style&#039;, &#039;--force-dot-license&#039;, &#039;--fallback-dot-license&#039;, or &#039;--skip-unrecognised&#039;:&lt;br /&gt;
&lt;br /&gt;
CHANGELOG&lt;br /&gt;
Usage: reuse annotate [OPTIONS] PATH&lt;br /&gt;
Try &#039;reuse annotate --help&#039; for help.&lt;br /&gt;
&lt;br /&gt;
Error: The following files do not have a recognised file extension. Please use &#039;--style&#039;, &#039;--force-dot-license&#039;, &#039;--fallback-dot-license&#039;, or &#039;--skip-unrecognised&#039;:&lt;br /&gt;
&lt;br /&gt;
LICENSES/CC-BY-SA-4.0.txt&lt;br /&gt;
Usage: reuse annotate [OPTIONS] PATH&lt;br /&gt;
Try &#039;reuse annotate --help&#039; for help.&lt;br /&gt;
&lt;br /&gt;
Error: The following files do not have a recognised file extension. Please use &#039;--style&#039;, &#039;--force-dot-license&#039;, &#039;--fallback-dot-license&#039;, or &#039;--skip-unrecognised&#039;:&lt;br /&gt;
&lt;br /&gt;
LICENSES/CERN-OHL-S-2.0.txt&lt;br /&gt;
Usage: reuse annotate [OPTIONS] PATH&lt;br /&gt;
Try &#039;reuse annotate --help&#039; for help.&lt;br /&gt;
&lt;br /&gt;
Error: The following files do not have a recognised file extension. Please use &#039;--style&#039;, &#039;--force-dot-license&#039;, &#039;--fallback-dot-license&#039;, or &#039;--skip-unrecognised&#039;:&lt;br /&gt;
&lt;br /&gt;
LICENSES/AGPL-3.0-only.txt&lt;br /&gt;
Usage: reuse annotate [OPTIONS] PATH&lt;br /&gt;
Try &#039;reuse annotate --help&#039; for help.&lt;br /&gt;
&lt;br /&gt;
Error: Invalid value for &#039;PATH&#039;: Path &#039;./.git/objects/pack/pack-38957d03ba60a2a9101b19234fac447289823e43.idx&#039; is not writable.&lt;br /&gt;
Usage: reuse annotate [OPTIONS] PATH&lt;br /&gt;
Try &#039;reuse annotate --help&#039; for help.&lt;br /&gt;
&lt;br /&gt;
Error: Invalid value for &#039;PATH&#039;: Path &#039;./.git/objects/pack/pack-38957d03ba60a2a9101b19234fac447289823e43.pack&#039; is not writable.&lt;br /&gt;
Usage: reuse annotate [OPTIONS] PATH&lt;br /&gt;
Try &#039;reuse annotate --help&#039; for help.&lt;br /&gt;
&lt;br /&gt;
Error: The following files do not have a recognised file extension. Please use &#039;--style&#039;, &#039;--force-dot-license&#039;, &#039;--fallback-dot-license&#039;, or &#039;--skip-unrecognised&#039;:&lt;br /&gt;
&lt;br /&gt;
.git/logs/HEAD&lt;br /&gt;
Usage: reuse annotate [OPTIONS] PATH&lt;br /&gt;
Try &#039;reuse annotate --help&#039; for help.&lt;br /&gt;
&lt;br /&gt;
Error: The following files do not have a recognised file extension. Please use &#039;--style&#039;, &#039;--force-dot-license&#039;, &#039;--fallback-dot-license&#039;, or &#039;--skip-unrecognised&#039;:&lt;br /&gt;
&lt;br /&gt;
.git/logs/refs/remotes/origin/HEAD&lt;br /&gt;
Usage: reuse annotate [OPTIONS] PATH&lt;br /&gt;
Try &#039;reuse annotate --help&#039; for help.&lt;br /&gt;
&lt;br /&gt;
Error: The following files do not have a recognised file extension. Please use &#039;--style&#039;, &#039;--force-dot-license&#039;, &#039;--fallback-dot-license&#039;, or &#039;--skip-unrecognised&#039;:&lt;br /&gt;
&lt;br /&gt;
.git/logs/refs/heads/main&lt;br /&gt;
Usage: reuse annotate [OPTIONS] PATH&lt;br /&gt;
Try &#039;reuse annotate --help&#039; for help.&lt;br /&gt;
&lt;br /&gt;
Error: The following files do not have a recognised file extension. Please use &#039;--style&#039;, &#039;--force-dot-license&#039;, &#039;--fallback-dot-license&#039;, or &#039;--skip-unrecognised&#039;:&lt;br /&gt;
&lt;br /&gt;
.git/hooks/pre-push.sample&lt;br /&gt;
Usage: reuse annotate [OPTIONS] PATH&lt;br /&gt;
Try &#039;reuse annotate --help&#039; for help.&lt;br /&gt;
&lt;br /&gt;
Error: The following files do not have a recognised file extension. Please use &#039;--style&#039;, &#039;--force-dot-license&#039;, &#039;--fallback-dot-license&#039;, or &#039;--skip-unrecognised&#039;:&lt;br /&gt;
&lt;br /&gt;
.git/hooks/post-update.sample&lt;br /&gt;
Usage: reuse annotate [OPTIONS] PATH&lt;br /&gt;
Try &#039;reuse annotate --help&#039; for help.&lt;br /&gt;
&lt;br /&gt;
Error: The following files do not have a recognised file extension. Please use &#039;--style&#039;, &#039;--force-dot-license&#039;, &#039;--fallback-dot-license&#039;, or &#039;--skip-unrecognised&#039;:&lt;br /&gt;
&lt;br /&gt;
.git/hooks/pre-rebase.sample&lt;br /&gt;
Usage: reuse annotate [OPTIONS] PATH&lt;br /&gt;
Try &#039;reuse annotate --help&#039; for help.&lt;br /&gt;
&lt;br /&gt;
Error: The following files do not have a recognised file extension. Please use &#039;--style&#039;, &#039;--force-dot-license&#039;, &#039;--fallback-dot-license&#039;, or &#039;--skip-unrecognised&#039;:&lt;br /&gt;
&lt;br /&gt;
.git/hooks/update.sample&lt;br /&gt;
Usage: reuse annotate [OPTIONS] PATH&lt;br /&gt;
Try &#039;reuse annotate --help&#039; for help.&lt;br /&gt;
&lt;br /&gt;
Error: The following files do not have a recognised file extension. Please use &#039;--style&#039;, &#039;--force-dot-license&#039;, &#039;--fallback-dot-license&#039;, or &#039;--skip-unrecognised&#039;:&lt;br /&gt;
&lt;br /&gt;
.git/hooks/push-to-checkout.sample&lt;br /&gt;
Usage: reuse annotate [OPTIONS] PATH&lt;br /&gt;
Try &#039;reuse annotate --help&#039; for help.&lt;br /&gt;
&lt;br /&gt;
Error: The following files do not have a recognised file extension. Please use &#039;--style&#039;, &#039;--force-dot-license&#039;, &#039;--fallback-dot-license&#039;, or &#039;--skip-unrecognised&#039;:&lt;br /&gt;
&lt;br /&gt;
.git/hooks/pre-receive.sample&lt;br /&gt;
Usage: reuse annotate [OPTIONS] PATH&lt;br /&gt;
Try &#039;reuse annotate --help&#039; for help.&lt;br /&gt;
&lt;br /&gt;
Error: The following files do not have a recognised file extension. Please use &#039;--style&#039;, &#039;--force-dot-license&#039;, &#039;--fallback-dot-license&#039;, or &#039;--skip-unrecognised&#039;:&lt;br /&gt;
&lt;br /&gt;
.git/hooks/prepare-commit-msg.sample&lt;br /&gt;
Usage: reuse annotate [OPTIONS] PATH&lt;br /&gt;
Try &#039;reuse annotate --help&#039; for help.&lt;br /&gt;
&lt;br /&gt;
Error: The following files do not have a recognised file extension. Please use &#039;--style&#039;, &#039;--force-dot-license&#039;, &#039;--fallback-dot-license&#039;, or &#039;--skip-unrecognised&#039;:&lt;br /&gt;
&lt;br /&gt;
.git/hooks/applypatch-msg.sample&lt;br /&gt;
Usage: reuse annotate [OPTIONS] PATH&lt;br /&gt;
Try &#039;reuse annotate --help&#039; for help.&lt;br /&gt;
&lt;br /&gt;
Error: The following files do not have a recognised file extension. Please use &#039;--style&#039;, &#039;--force-dot-license&#039;, &#039;--fallback-dot-license&#039;, or &#039;--skip-unrecognised&#039;:&lt;br /&gt;
&lt;br /&gt;
.git/hooks/pre-merge-commit.sample&lt;br /&gt;
Usage: reuse annotate [OPTIONS] PATH&lt;br /&gt;
Try &#039;reuse annotate --help&#039; for help.&lt;br /&gt;
&lt;br /&gt;
Error: The following files do not have a recognised file extension. Please use &#039;--style&#039;, &#039;--force-dot-license&#039;, &#039;--fallback-dot-license&#039;, or &#039;--skip-unrecognised&#039;:&lt;br /&gt;
&lt;br /&gt;
.git/hooks/pre-applypatch.sample&lt;br /&gt;
Usage: reuse annotate [OPTIONS] PATH&lt;br /&gt;
Try &#039;reuse annotate --help&#039; for help.&lt;br /&gt;
&lt;br /&gt;
Error: The following files do not have a recognised file extension. Please use &#039;--style&#039;, &#039;--force-dot-license&#039;, &#039;--fallback-dot-license&#039;, or &#039;--skip-unrecognised&#039;:&lt;br /&gt;
&lt;br /&gt;
.git/hooks/pre-commit.sample&lt;br /&gt;
Usage: reuse annotate [OPTIONS] PATH&lt;br /&gt;
Try &#039;reuse annotate --help&#039; for help.&lt;br /&gt;
&lt;br /&gt;
Error: The following files do not have a recognised file extension. Please use &#039;--style&#039;, &#039;--force-dot-license&#039;, &#039;--fallback-dot-license&#039;, or &#039;--skip-unrecognised&#039;:&lt;br /&gt;
&lt;br /&gt;
.git/hooks/fsmonitor-watchman.sample&lt;br /&gt;
Usage: reuse annotate [OPTIONS] PATH&lt;br /&gt;
Try &#039;reuse annotate --help&#039; for help.&lt;br /&gt;
&lt;br /&gt;
Error: The following files do not have a recognised file extension. Please use &#039;--style&#039;, &#039;--force-dot-license&#039;, &#039;--fallback-dot-license&#039;, or &#039;--skip-unrecognised&#039;:&lt;br /&gt;
&lt;br /&gt;
.git/hooks/commit-msg.sample&lt;br /&gt;
Usage: reuse annotate [OPTIONS] PATH&lt;br /&gt;
Try &#039;reuse annotate --help&#039; for help.&lt;br /&gt;
&lt;br /&gt;
Error: The following files do not have a recognised file extension. Please use &#039;--style&#039;, &#039;--force-dot-license&#039;, &#039;--fallback-dot-license&#039;, or &#039;--skip-unrecognised&#039;:&lt;br /&gt;
&lt;br /&gt;
.git/config&lt;br /&gt;
Usage: reuse annotate [OPTIONS] PATH&lt;br /&gt;
Try &#039;reuse annotate --help&#039; for help.&lt;br /&gt;
&lt;br /&gt;
Error: The following files do not have a recognised file extension. Please use &#039;--style&#039;, &#039;--force-dot-license&#039;, &#039;--fallback-dot-license&#039;, or &#039;--skip-unrecognised&#039;:&lt;br /&gt;
&lt;br /&gt;
.git/HEAD&lt;br /&gt;
Usage: reuse annotate [OPTIONS] PATH&lt;br /&gt;
Try &#039;reuse annotate --help&#039; for help.&lt;br /&gt;
&lt;br /&gt;
Error: The following files do not have a recognised file extension. Please use &#039;--style&#039;, &#039;--force-dot-license&#039;, &#039;--fallback-dot-license&#039;, or &#039;--skip-unrecognised&#039;:&lt;br /&gt;
&lt;br /&gt;
.git/description&lt;br /&gt;
Usage: reuse annotate [OPTIONS] PATH&lt;br /&gt;
Try &#039;reuse annotate --help&#039; for help.&lt;br /&gt;
&lt;br /&gt;
Error: The following files do not have a recognised file extension. Please use &#039;--style&#039;, &#039;--force-dot-license&#039;, &#039;--fallback-dot-license&#039;, or &#039;--skip-unrecognised&#039;:&lt;br /&gt;
&lt;br /&gt;
.git/info/exclude&lt;br /&gt;
Usage: reuse annotate [OPTIONS] PATH&lt;br /&gt;
Try &#039;reuse annotate --help&#039; for help.&lt;br /&gt;
&lt;br /&gt;
Error: The following files do not have a recognised file extension. Please use &#039;--style&#039;, &#039;--force-dot-license&#039;, &#039;--fallback-dot-license&#039;, or &#039;--skip-unrecognised&#039;:&lt;br /&gt;
&lt;br /&gt;
.git/index&lt;br /&gt;
Usage: reuse annotate [OPTIONS] PATH&lt;br /&gt;
Try &#039;reuse annotate --help&#039; for help.&lt;br /&gt;
&lt;br /&gt;
Error: The following files do not have a recognised file extension. Please use &#039;--style&#039;, &#039;--force-dot-license&#039;, &#039;--fallback-dot-license&#039;, or &#039;--skip-unrecognised&#039;:&lt;br /&gt;
&lt;br /&gt;
.git/refs/remotes/origin/HEAD&lt;br /&gt;
Usage: reuse annotate [OPTIONS] PATH&lt;br /&gt;
Try &#039;reuse annotate --help&#039; for help.&lt;br /&gt;
&lt;br /&gt;
Error: The following files do not have a recognised file extension. Please use &#039;--style&#039;, &#039;--force-dot-license&#039;, &#039;--fallback-dot-license&#039;, or &#039;--skip-unrecognised&#039;:&lt;br /&gt;
&lt;br /&gt;
.git/refs/heads/main&lt;br /&gt;
Usage: reuse annotate [OPTIONS] PATH&lt;br /&gt;
Try &#039;reuse annotate --help&#039; for help.&lt;br /&gt;
&lt;br /&gt;
Error: The following files do not have a recognised file extension. Please use &#039;--style&#039;, &#039;--force-dot-license&#039;, &#039;--fallback-dot-license&#039;, or &#039;--skip-unrecognised&#039;:&lt;br /&gt;
&lt;br /&gt;
.git/packed-refs&lt;br /&gt;
Usage: reuse annotate [OPTIONS] PATH&lt;br /&gt;
Try &#039;reuse annotate --help&#039; for help.&lt;br /&gt;
&lt;br /&gt;
Error: The following files do not have a recognised file extension. Please use &#039;--style&#039;, &#039;--force-dot-license&#039;, &#039;--fallback-dot-license&#039;, or &#039;--skip-unrecognised&#039;:&lt;br /&gt;
&lt;br /&gt;
KEYS&lt;br /&gt;
Usage: reuse annotate [OPTIONS] PATH&lt;br /&gt;
Try &#039;reuse annotate --help&#039; for help.&lt;br /&gt;
&lt;br /&gt;
Error: The following files do not have a recognised file extension. Please use &#039;--style&#039;, &#039;--force-dot-license&#039;, &#039;--fallback-dot-license&#039;, or &#039;--skip-unrecognised&#039;:&lt;br /&gt;
&lt;br /&gt;
intake.FCStd&lt;br /&gt;
Successfully changed header of REUSE.toml&lt;br /&gt;
Successfully changed header of .gitignore&lt;br /&gt;
Successfully changed header of README.md&lt;br /&gt;
Successfully changed header of .github/workflows/docs_pages_workflow.yml&lt;br /&gt;
Usage: reuse annotate [OPTIONS] PATH&lt;br /&gt;
Try &#039;reuse annotate --help&#039; for help.&lt;br /&gt;
&lt;br /&gt;
Error: The following files do not have a recognised file extension. Please use &#039;--style&#039;, &#039;--force-dot-license&#039;, &#039;--fallback-dot-license&#039;, or &#039;--skip-unrecognised&#039;:&lt;br /&gt;
&lt;br /&gt;
LICENSE&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## ah fuk, that didn&#039;t do what we wanted at all. I expected it would have pulled the copyright info from the REUSE.toml file. Instead it just took the contents &#039;--license&#039; as the value of the copyright attribute :(&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ head docs/faq.rst &lt;br /&gt;
.. SPDX-FileCopyrightText: 2026 --license&lt;br /&gt;
&lt;br /&gt;
.. _faq:&lt;br /&gt;
&lt;br /&gt;
Frequently Asked Questions&lt;br /&gt;
==========================&lt;br /&gt;
&lt;br /&gt;
.. _faq_follow:&lt;br /&gt;
&lt;br /&gt;
Q: How can I get updates about Eco-Libre?&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## the faq says that we *should* update headers to every file, but it&#039;s not necessary if we use `REUSE.toml` file – as was also indicated with the `reuse lint` output above https://reuse.software/faq/&lt;br /&gt;
## we can, at any time, get a list of every file&#039;s copyright and license using the `reuse spdx` command&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
(virtualenv) user@disp4360:~/sandbox/life-line$ reuse spdx&lt;br /&gt;
SPDXVersion: SPDX-2.1&lt;br /&gt;
DataLicense: CC0-1.0&lt;br /&gt;
SPDXID: SPDXRef-DOCUMENT&lt;br /&gt;
DocumentName: life-line&lt;br /&gt;
DocumentNamespace: http://spdx.org/spdxdocs/spdx-v2.1-16677618-7d18-4c76-8411-c508a053c01d&lt;br /&gt;
Creator: Person: Anonymous ()&lt;br /&gt;
Creator: Organization: Anonymous ()&lt;br /&gt;
Creator: Tool: reuse-6.2.0&lt;br /&gt;
Created: 2026-04-28T22:19:51Z&lt;br /&gt;
CreatorComment: &amp;lt;text&amp;gt;This document was created automatically using available reuse information consistent with REUSE.&amp;lt;/text&amp;gt;&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-97ed0fdad1415bc2a07967691fb8b548&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-5a39e4fd6c4d6fe353cacabc360bd279&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-25ab5821b678be2b2b12d29b956be405&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-3a1f36e95ccd2fd666e9798d3ac7eb47&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-21b8c0e80d2658f4b88b5a3938551f27&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-1a8de53ae2a6abc46eb8ed1144b7a1f9&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-f9fec76b2bf698c8fb90b872cd0318c1&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-10a5417ebf693664c167892a336585dc&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-3baf92437e62e7b84893396f6d6d2c31&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-120ec97787268d2d531b284f8f238388&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-96f0aa3db80b8611b0cad4fd7f43d887&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-55954c104527c72b6f63da5076e914f7&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-87ca5b46937380db7a2e234fe72b2988&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-ce4d5cb6868565afb76744142953776c&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-7df4243f95862b10bf244e1a932a1305&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-009fc4d41e5673f7da41e8b27bd3ebd6&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-87008e367a587fb44b1e9b7aaa52f6b6&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-c531371aac660823102048108ce60921&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-732742039a9682c0d5bfa8d8845abb5f&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-1228cd07cdef9163c78a4847c409b29e&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-f039812ae7f967b8f08d9147e2fd4153&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-35b1d5815fbbdd7c4356fb3b3cba3b1e&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-c1aae1897500b74ec3aaca84335f882f&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-3598f5057a1cdb741af433a6096d913d&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-c17ac5ff4f166b672e4510ff2c577dbc&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-7b9171fdbbab79cca77d36069477c84a&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-7a9621b85efc539284dde0394be036d8&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-4658cb22cc4a9761f1206a7297889577&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-49300cf0d117ccc668836b524d21d3f9&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-d6b38587054ac699a38698e0eefb93c8&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-49b84e58657e7ccc299f61b0cf539e20&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-39d79d9e7219bdbab89178b7dc21d0da&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-ed584b122f50739f0fda5917ea3f7f59&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-1e2b0fda7ea1435b44332b7c8900d12a&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-2595e40eb2dc20ee8fc015548806efdc&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-fdc6a9c01b345699ecf781d28fa90f5a&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-9cd72e674f0f994995a06528ee25ce2f&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-9cc2a1a37bc4829e8725d74912f56b16&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-e2350358bd19a26c28ac28cc5e18c5a1&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-b33bfd4d5eec5e96e039ec43915bfbf8&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-7015c357dbfa9a8c1900250df442c421&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-4dedfba4994163f7e688743fc42a33d6&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-89b9ed2df6780dc61cffdf6dab799cff&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-eb10117cc0b1fcd44808cc34f4cb1083&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-f1dc0b0fba5c4ce78e065efb774669a8&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-01067d41eee220cdd87bfbf80ea71e87&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-111708d19b33da1a42118224ef69665e&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-472c7aaf2054b6662a0f02656ff453e0&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-f373dac39205edb0975081cc2411a334&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-3d7c4e6cccb3294880a3d23a9edc019c&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-fe7b87a77ea58c18a39d99c8cc4fd9b8&lt;br /&gt;
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-8979307823bc12e1df0c4754fb92b50a&lt;br /&gt;
&lt;br /&gt;
FileName: ./.github/workflows/docs_pages_workflow.yml&lt;br /&gt;
SPDXID: SPDXRef-97ed0fdad1415bc2a07967691fb8b548&lt;br /&gt;
FileChecksum: SHA1: 9d6615d72965d4a93b8f7b9eb83b6484b44dee95&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./.gitignore&lt;br /&gt;
SPDXID: SPDXRef-5a39e4fd6c4d6fe353cacabc360bd279&lt;br /&gt;
FileChecksum: SHA1: ac7e0839e77460fca604674fb11218c9fca3a62b&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./CHANGELOG&lt;br /&gt;
SPDXID: SPDXRef-25ab5821b678be2b2b12d29b956be405&lt;br /&gt;
FileChecksum: SHA1: 0d0ca350f7daa0808bebebd0a65784358dfc45c3&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./KEYS&lt;br /&gt;
SPDXID: SPDXRef-3a1f36e95ccd2fd666e9798d3ac7eb47&lt;br /&gt;
FileChecksum: SHA1: f97678ccd0eed19288e1962a838be2f4aa8b7c43&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./README.md&lt;br /&gt;
SPDXID: SPDXRef-21b8c0e80d2658f4b88b5a3938551f27&lt;br /&gt;
FileChecksum: SHA1: 954a6f4347c29a012ef72704606756c843b6a522&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
Copyright (C) 2023 Michael Altfield and the Eco-Libre Team&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./docs/.gitignore&lt;br /&gt;
SPDXID: SPDXRef-1a8de53ae2a6abc46eb8ed1144b7a1f9&lt;br /&gt;
FileChecksum: SHA1: 71683d32ff456772212653e2e836b217c3b7fb73&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./docs/Makefile&lt;br /&gt;
SPDXID: SPDXRef-f9fec76b2bf698c8fb90b872cd0318c1&lt;br /&gt;
FileChecksum: SHA1: 77b7d944eb62d73c1f46a1cfcba1e70e31e4297a&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./docs/_static/custom.css&lt;br /&gt;
SPDXID: SPDXRef-10a5417ebf693664c167892a336585dc&lt;br /&gt;
FileChecksum: SHA1: 6cd536f874aadf0ccc0a0e17ad33f948b4fba44c&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./docs/_templates/versions.html&lt;br /&gt;
SPDXID: SPDXRef-3baf92437e62e7b84893396f6d6d2c31&lt;br /&gt;
FileChecksum: SHA1: 8443bd4bfd306f5b6cf6485e6a6cff5599def6f7&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./docs/attribution.rst&lt;br /&gt;
SPDXID: SPDXRef-120ec97787268d2d531b284f8f238388&lt;br /&gt;
FileChecksum: SHA1: e4b0c037aac62dc9b64293fe57a188f6bf4c5615&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./docs/build/index.rst&lt;br /&gt;
SPDXID: SPDXRef-96f0aa3db80b8611b0cad4fd7f43d887&lt;br /&gt;
FileChecksum: SHA1: 464d9b8ffa36876d3eb0c95a093f4c212d80ff1b&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./docs/build/intake/bom.ods&lt;br /&gt;
SPDXID: SPDXRef-55954c104527c72b6f63da5076e914f7&lt;br /&gt;
FileChecksum: SHA1: 916d43e423eea34a6b63c4cc36190b998b426d85&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2026 --license&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./docs/build/intake/bom.rst&lt;br /&gt;
SPDXID: SPDXRef-87ca5b46937380db7a2e234fe72b2988&lt;br /&gt;
FileChecksum: SHA1: b72018fd716c9cd1f44b96e84a97d7891a9659c2&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./docs/build/intake/index.rst&lt;br /&gt;
SPDXID: SPDXRef-ce4d5cb6868565afb76744142953776c&lt;br /&gt;
FileChecksum: SHA1: 73e83f3d88739f3a711cdc22d05a17e5e46135a0&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./docs/build/intake/what.rst&lt;br /&gt;
SPDXID: SPDXRef-7df4243f95862b10bf244e1a932a1305&lt;br /&gt;
FileChecksum: SHA1: e444a37cc9615febee656e969dac625b9c2014ba&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./docs/build/settling-tank/bom.rst&lt;br /&gt;
SPDXID: SPDXRef-009fc4d41e5673f7da41e8b27bd3ebd6&lt;br /&gt;
FileChecksum: SHA1: e03a27e7d09a23245baa962f0f4ea12fac7ea6d2&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./docs/build/settling-tank/index.rst&lt;br /&gt;
SPDXID: SPDXRef-87008e367a587fb44b1e9b7aaa52f6b6&lt;br /&gt;
FileChecksum: SHA1: f8ff63ef2190341ea2bd810c300d54b83d5d3674&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./docs/build/settling-tank/what.rst&lt;br /&gt;
SPDXID: SPDXRef-c531371aac660823102048108ce60921&lt;br /&gt;
FileChecksum: SHA1: 57a0fa949c5e6e46eca53d0889f152c2962bfa61&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./docs/buildDocs.sh&lt;br /&gt;
SPDXID: SPDXRef-732742039a9682c0d5bfa8d8845abb5f&lt;br /&gt;
FileChecksum: SHA1: befd1b0246b958791ad57f4e18bbba43d8872cd7&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: AGPL-3.0-only&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./docs/changelog.rst&lt;br /&gt;
SPDXID: SPDXRef-1228cd07cdef9163c78a4847c409b29e&lt;br /&gt;
FileChecksum: SHA1: 26793d0a9acc383ba3ccfa7d622b7071db91418e&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./docs/conf.py&lt;br /&gt;
SPDXID: SPDXRef-f039812ae7f967b8f08d9147e2fd4153&lt;br /&gt;
FileChecksum: SHA1: 96026b86d9255c306df4b1fc8b2f5e94cc66c529&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: AGPL-3.0-only&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: &lt;br /&gt;
© &#039; +copyright,&amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./docs/conf.py.orig&lt;br /&gt;
SPDXID: SPDXRef-35b1d5815fbbdd7c4356fb3b3cba3b1e&lt;br /&gt;
FileChecksum: SHA1: 71f3dc660a741b97542c68e32eaa33c80dc42630&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./docs/dev/index.rst&lt;br /&gt;
SPDXID: SPDXRef-c1aae1897500b74ec3aaca84335f882f&lt;br /&gt;
FileChecksum: SHA1: 8075e5fb62dcb27431df32d5928e7561d66a2c46&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./docs/faq.rst&lt;br /&gt;
SPDXID: SPDXRef-3598f5057a1cdb741af433a6096d913d&lt;br /&gt;
FileChecksum: SHA1: f3b1399a843bcd73a4eb67e1fc62a4e090b2377a&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./docs/images/eco-libre_logo-2025.08.svg&lt;br /&gt;
SPDXID: SPDXRef-c17ac5ff4f166b672e4510ff2c577dbc&lt;br /&gt;
FileChecksum: SHA1: d582ec414c54cea2834891d35349c09ae069cbbd&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2026 --license&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./docs/images/eco-libre_text-logo-2025.08.svg&lt;br /&gt;
SPDXID: SPDXRef-7b9171fdbbab79cca77d36069477c84a&lt;br /&gt;
FileChecksum: SHA1: 513c03e164c26e0b35644bee03625b8d343fc49b&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2026 --license&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./docs/images/eco-libre_text-logo-2025.08_500px.png&lt;br /&gt;
SPDXID: SPDXRef-7a9621b85efc539284dde0394be036d8&lt;br /&gt;
FileChecksum: SHA1: de27a5411a683f090c1b543c1e93f8164c4d44cc&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2026 --license&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./docs/images/life-line_2023.12.jpg&lt;br /&gt;
SPDXID: SPDXRef-4658cb22cc4a9761f1206a7297889577&lt;br /&gt;
FileChecksum: SHA1: 8bff1f109f6f7ebc2accd5996d13fb94f7e8939a&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2026 --license&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./docs/images/life-line_2025.10.jpg&lt;br /&gt;
SPDXID: SPDXRef-49300cf0d117ccc668836b524d21d3f9&lt;br /&gt;
FileChecksum: SHA1: af42083713949fb9aac751421fc9a5fc3e794e4d&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2026 --license&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./docs/images/life-line_intake_cleanout-drain.jpg&lt;br /&gt;
SPDXID: SPDXRef-d6b38587054ac699a38698e0eefb93c8&lt;br /&gt;
FileChecksum: SHA1: 2652eedb0face5fececa50537198fc0f3aaf6092&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2026 --license&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./docs/images/life-line_intake_drum.jpg&lt;br /&gt;
SPDXID: SPDXRef-49b84e58657e7ccc299f61b0cf539e20&lt;br /&gt;
FileChecksum: SHA1: e26715adcf558fe12f4eded7308bc1be3e12761c&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2026 --license&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./docs/images/life-line_intake_expanded-metal.jpg&lt;br /&gt;
SPDXID: SPDXRef-39d79d9e7219bdbab89178b7dc21d0da&lt;br /&gt;
FileChecksum: SHA1: 0d0c3398256d96884fcd11daaebc4507b23d7750&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2026 --license&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./docs/images/life-line_intake_fine-mesh.jpg&lt;br /&gt;
SPDXID: SPDXRef-ed584b122f50739f0fda5917ea3f7f59&lt;br /&gt;
FileChecksum: SHA1: 4b3786e5f403c70f9598350c04cf12abb4a790aa&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2026 --license&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./docs/images/life-line_intake_outflow.jpg&lt;br /&gt;
SPDXID: SPDXRef-1e2b0fda7ea1435b44332b7c8900d12a&lt;br /&gt;
FileChecksum: SHA1: 0b7db555483b713324756799e657d2324bdab4f7&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2026 --license&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./docs/images/life-line_intake_parts.svg&lt;br /&gt;
SPDXID: SPDXRef-2595e40eb2dc20ee8fc015548806efdc&lt;br /&gt;
FileChecksum: SHA1: d98da9d0de766b61df6fb0c25f61521a3d26344a&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2026 --license&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./docs/images/life-line_intake_turbulence-bar.jpg&lt;br /&gt;
SPDXID: SPDXRef-fdc6a9c01b345699ecf781d28fa90f5a&lt;br /&gt;
FileChecksum: SHA1: 0f9c8372c9737ad1bac27204292c6aa7e5098813&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2026 --license&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./docs/images/life-line_intake_weir.jpg&lt;br /&gt;
SPDXID: SPDXRef-9cd72e674f0f994995a06528ee25ce2f&lt;br /&gt;
FileChecksum: SHA1: 7f64e42c9fe3b1d2c7d1ae1ece0b55bf544c781a&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2026 --license&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./docs/images/life-line_praxis_boris-plotkin.2024-11.jpg&lt;br /&gt;
SPDXID: SPDXRef-9cc2a1a37bc4829e8725d74912f56b16&lt;br /&gt;
FileChecksum: SHA1: baef65c6984d5b04e1cf44d435f471be0727bfd1&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2026 --license&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./docs/images/life-line_praxis_vegan-beasts_screen.2025-04.jpg&lt;br /&gt;
SPDXID: SPDXRef-e2350358bd19a26c28ac28cc5e18c5a1&lt;br /&gt;
FileChecksum: SHA1: d21be6517081f4f294ed88dca32a920e6bfeaadf&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2026 --license&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./docs/images/life-line_praxis_vegan-beasts_weir.2025-04.jpg&lt;br /&gt;
SPDXID: SPDXRef-b33bfd4d5eec5e96e039ec43915bfbf8&lt;br /&gt;
FileChecksum: SHA1: ba75a617970d7819263e2f21f0d52dcaa61c961c&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2026 --license&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./docs/index.rst&lt;br /&gt;
SPDXID: SPDXRef-7015c357dbfa9a8c1900250df442c421&lt;br /&gt;
FileChecksum: SHA1: e2618dda841766cbd533441dbd21fcfa55e2f119&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./docs/introduction/index.rst&lt;br /&gt;
SPDXID: SPDXRef-4dedfba4994163f7e688743fc42a33d6&lt;br /&gt;
FileChecksum: SHA1: 636e89b3596a43b9ca869502795fdc1956101d1c&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./docs/license.rst&lt;br /&gt;
SPDXID: SPDXRef-89b9ed2df6780dc61cffdf6dab799cff&lt;br /&gt;
FileChecksum: SHA1: c858a38846985c5a96c11c170468688b2860f529&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./docs/locales/es/LC_MESSAGES/autodoc.mo&lt;br /&gt;
SPDXID: SPDXRef-eb10117cc0b1fcd44808cc34f4cb1083&lt;br /&gt;
FileChecksum: SHA1: 3b2fa212f0265c96b1cde5a8cc061cc49385ed96&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./docs/locales/es/LC_MESSAGES/autodoc.po&lt;br /&gt;
SPDXID: SPDXRef-f1dc0b0fba5c4ce78e065efb774669a8&lt;br /&gt;
FileChecksum: SHA1: 58fca147c574cbda23a9c7a5ce420f6385d80ca1&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;Copyright (C) 2020 Michael Altfield&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./docs/locales/es/LC_MESSAGES/index.mo&lt;br /&gt;
SPDXID: SPDXRef-01067d41eee220cdd87bfbf80ea71e87&lt;br /&gt;
FileChecksum: SHA1: f6dda249389c9eb42684431b13c68bbb98530c35&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./docs/locales/es/LC_MESSAGES/index.po&lt;br /&gt;
SPDXID: SPDXRef-111708d19b33da1a42118224ef69665e&lt;br /&gt;
FileChecksum: SHA1: 21c57fcf054a05fcf4e0ef8660a6a38f98239e80&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;Copyright (C) 2020 Michael Altfield&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./docs/make.bat&lt;br /&gt;
SPDXID: SPDXRef-472c7aaf2054b6662a0f02656ff453e0&lt;br /&gt;
FileChecksum: SHA1: 3c504feedb2e1f1e85ed443a4d5aba20bafe0b28&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./docs/praxis/index.rst&lt;br /&gt;
SPDXID: SPDXRef-f373dac39205edb0975081cc2411a334&lt;br /&gt;
FileChecksum: SHA1: 03c98408278e3ebd2cdb61ecae75bd1c52cf4c02&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: &amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FileName: ./docs/support.rst&lt;br /&gt;
SPDXID: SPDXRef-3d7c4e6cccb3294880a3d23a9edc019c&lt;br /&gt;
FileChecksum: SHA1: 3aabd6b0faf44abd22ae7d802d5e2baa988d4eaa&lt;br /&gt;
LicenseConcluded: NOASSERTION&lt;br /&gt;
LicenseInfoInFile: CC-BY-SA-4.0&lt;br /&gt;
FileCopyrightText: &amp;lt;text&amp;gt;SPDX-FileCopyrightText: 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
SPDX-Fil&lt;br /&gt;
&lt;br /&gt;
== 2026-04-26 ==&lt;br /&gt;
# I started working on writing a privacy policy for wiki.eco-lbre.org&lt;br /&gt;
# I wrote one years ago for OSE. editing history suggests I finished that in Nov 2018 https://wiki.opensourceecology.org/index.php?title=Media-wiki:Privacy_policy&amp;amp;action=history&lt;br /&gt;
# I largely copied it from the Creative Commons Privacy Policy, and I know Marcin made some (very non-gdpr-compliant) changes to it since then (in 2024)&lt;br /&gt;
# so I did diff of the current privacy policy on CC&#039;s website and OSE&#039;s; they had very little in common! https://creativecommons.org/privacy/&lt;br /&gt;
# it looks like CC updated their Privacy Policy in Dec 2019, so unfortuantly about a year after I did my work with it, they changed it almost completely&lt;br /&gt;
# so I&#039;m just going to start fresh with this, and make changes I think necessary&lt;br /&gt;
# I struggled to find the ToS page. It didn&#039;t appear on the special list of  long pages, and nothign returend for a search of &amp;quot;terms of service&amp;quot; – I guess because it&#039;s in the Eco-Libre namespace? I had to search my logs to find it https://wiki.eco-libre.org/wiki/Eco-Libre:Terms_of_Service&lt;br /&gt;
# I think I should change the link in the bottom-left footer from &amp;quot;Privacy Policy&amp;quot; to &amp;quot;Terms of Service&amp;quot; – since the PP is one of the ToS (and not the other way around)&lt;br /&gt;
## here&#039;s the docs on how to change the links in the footer https://www.mediawiki.org/wiki/Manual:Footer&lt;br /&gt;
## I was able to do this by updating the following two pages (one is the hyperlink text and one is the hyperlink article destination)&lt;br /&gt;
### https://wiki.eco-libre.org/wiki/MediaWiki:Privacypage&lt;br /&gt;
### https://wiki.eco-libre.org/wiki/MediaWiki:Privacy&lt;br /&gt;
# I created the Privacy Policy from the CC one, cleaned up the syntax and did my best to replace all the relevant CC stuff to EL https://wiki.eco-libre.org/wiki/Eco-Libre:Privacy_policy&lt;br /&gt;
# the privacy policy references a CoC (Code of Conduct). Ugh, I guess we need one of those too..&lt;br /&gt;
## I wonder if we can say &amp;quot;you must wash your hands with soap and water&amp;quot; and &amp;quot;you must take b12 if you&#039;re vegan&amp;quot; in the CoC. Or is that *another* agreement?&lt;br /&gt;
## probably we should make some CoC that applies to in-person and remote users *and* a separate agreement with that sort of thing, only for live-in guests (maybe call it a &amp;quot;Housing Agreeemnt&amp;quot; or something)&lt;br /&gt;
## here&#039;s the rules from veganism.social&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
	Rule #1No speciesism, animal abuse, carnists, omnivores, vegetarians, or other non-vegans&lt;br /&gt;
	Rule #2Sexually explicit or violent media must be marked as sensitive when posting&lt;br /&gt;
	Rule #3No racism, sexism, homophobia, transphobia, xenophobia, fatphobia, or casteism&lt;br /&gt;
	Rule #4No incitement of violence or promotion of violent ideologies&lt;br /&gt;
	Rule #5No harassment or doxxing of other users&lt;br /&gt;
	Rule #6Do not share intentionally false or misleading information&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## here&#039;s mastodon.energy&#039;s&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
1. Be Nice&lt;br /&gt;
2. Tell the Truth&lt;br /&gt;
3. Be Ethical&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## here&#039;s chaos.social, which is where we have our mastodon now&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Rules&lt;br /&gt;
&lt;br /&gt;
We expect users on chaos.social to adhere to the following rules:&lt;br /&gt;
&lt;br /&gt;
	No content condoning or advocating for the oppression of members of marginalised groups, or general discrimination of groups based on characteristics like gender, race, disabilities, nationality, education, religion etc.&lt;br /&gt;
	No harassment, stalking, mobbing, deadnaming, misgendering, contacting users who have made it clear they do not wish to be contacted.&lt;br /&gt;
	Obviously: no content that is illegal in Germany, no actions intended to damage this instance (performance, reputation, security).&lt;br /&gt;
	No right or alt-right bullshit, Nazi content, conspiracy narratives.&lt;br /&gt;
	No automated accounts (unless approved by the moderators). This includes bots, crossposters, feedposters etc.&lt;br /&gt;
	When posting to the local timeline, provide Content Warnings for violence, sexually explicit content, death/disease, and politics, particularly when negative or controversial (those are the larger categories, a CW might be something like “uspol, elections”).&lt;br /&gt;
	When posting to the local timeline, provide image descriptions.&lt;br /&gt;
	Provide credit for creative works that are not your own. That includes marking AI generated content clearly as such.&lt;br /&gt;
&lt;br /&gt;
Clarification: You post to the local timeline when you give your post “public” visibility. If you don’t want to follow local timeline rules, you can post with visibility “quiet public” (which used to be called “unlisted”) – posts will still be visible to everybody (your followers and everybody else), they just won’t get shown on the local and federated timelines. Boosts also do not appear on the local timeline.&lt;br /&gt;
&lt;br /&gt;
Note that the instance is also subject to our terms and privacy policy.&lt;br /&gt;
Best practices&lt;br /&gt;
&lt;br /&gt;
We ask users on chaos.social to keep the following guidelines in mind, in order to foster a considerate and accessible atmosphere. Forgetting about them is not as serious as breaking the instance rules, but repeated malicious unwillingness to follow the best practices will be considered just like breaking a rule.&lt;br /&gt;
&lt;br /&gt;
	Use content warnings liberally, especially for topics that are potentially disturbing or controversial, or that make life harder for people struggling with addiction or trauma.&lt;br /&gt;
	Don’t be a reply guy – uninvited comments about another user’s personal choices, lifestyle or family are strongly discouraged and may be considered harassment.&lt;br /&gt;
	In discussions, please remain civil, do not insult the people you’re talking to. Don’t escalate.&lt;br /&gt;
&lt;br /&gt;
Enforcement&lt;br /&gt;
&lt;br /&gt;
Rules are only worth as much as their enforcement, so here is what you can expect from the chaos.social moderators (we will publish our moderation guidelines in the future, but here’s the short version):&lt;br /&gt;
&lt;br /&gt;
Breaking these rules can get you kicked off the instance, though unless you’re behaving in bad faith, we will give you several warnings first. Going against the Best Practices can also get you kicked off the instance, but you have to really persistently act against them (and at that point, why are you on chaos.social?).&lt;br /&gt;
&lt;br /&gt;
Please report behaviour that bothers you. We will keep your report confidential.&lt;br /&gt;
&lt;br /&gt;
We run this instance in our spare time, so we can’t respond instantly. We try to react to all reports within a day, but please allow for delays. You can always contact us us in private if you have concerns about moderation. We will not comment in public about individual moderation cases.&lt;br /&gt;
Ultimately,&lt;br /&gt;
&lt;br /&gt;
we (@leah and @rixx) are maintaining this instance on our spare time, hardware and nerves. Don’t push either of those.&lt;br /&gt;
&lt;br /&gt;
The rules are licensed under CC-BY-SA by chaos.social e.V.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
### and this one explicilty says it&#039;s CC-BY-SA, so that&#039;s cool.&lt;br /&gt;
## I guess we&#039;ll copy chaos.socials&#039; since it&#039;s already copyleft&lt;br /&gt;
## ok, here&#039;s what I came-up with&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
By using this website, you agree to the following Code of Conduct:&lt;br /&gt;
&lt;br /&gt;
# Only submit content for which you have the right to submit it under the terms of our copyleft licensing (it must either be created in whole or in part by you or already licensed under a comparable copyleft)&lt;br /&gt;
# No AI content! This is a violation of rule #1.&lt;br /&gt;
# No content condoning or advocating for the oppression of members of marginalised groups, or general discrimination of groups based on characteristics like species, gender, race, disabilities, nationality, education, religion etc.&lt;br /&gt;
# No harassment, stalking, mobbing, deadnaming, misgendering, contacting users who have made it clear they do not wish to be contacted.&lt;br /&gt;
# No content that is illegal in Germany or Ecuador, no actions intended to damage this instance (performance, reputation, security).&lt;br /&gt;
# No pro-fascist or pro-Nazi content&lt;br /&gt;
# Post Content Warnings for violence, sexually explicit content, death and/or disease&lt;br /&gt;
# Whenever possible, provide image descriptions for visually impaired readers&lt;br /&gt;
# No misinformation or disinformaton&lt;br /&gt;
# Provide attribution (credit) for works that are not your own. This should include a name of the original copyright holder and a link to the source.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# now we have a CLA (Community License Agreement), ToS (Terms of Service), PP (Privacy Policy), and CoC (Code of Conduct)&lt;br /&gt;
## so I think we still have just 2 agreeements missing&lt;br /&gt;
### Public Data Agreement&lt;br /&gt;
### In-House Volunteer Agreement&lt;br /&gt;
# I had previously drafted the Public Data Agreeement as followes&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
1. I understand that Eco-Libre will publish all of my work publicly on their website&lt;br /&gt;
2. I understand that, because my work is licensed openly, I cannot request it to be taken down from the Internet&lt;br /&gt;
3. I understand that I have the right to use an alias, so that all of my work can be attributed to an anonymous profile with no PII (publicly identifiable information).&lt;br /&gt;
4. I understand that, if I wish to use an anonymous identity for my public contributions, then I should not use my real name in this application&lt;br /&gt;
5. I understand that currently my name is set to XXXX, and this is the name that will be publicly listed on Eco-Libre&#039;s website associated with all of my contributions&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## I&#039;m actually not fully sure that&#039;s necessary. The PP from CC had a clause&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Eco-Libre Volunteers.&lt;br /&gt;
&lt;br /&gt;
o In connection with you Eco-Libre Volunteer application, we may provide your information to the individuals you’ve selected to vouch for you, and with those reviewing your application, including the Membership Council whose members include people not employed by Eco-Libre and who are located in various countries around the world.&lt;br /&gt;
&lt;br /&gt;
o If you vouch for someone’s application to the Eco-Libre Volunteer program, your information will be shared with those reviewing the application, including the Membership Council, and if you provide a positive vouching statement, that statement will be shared with the applicant if and when they are admitted for membership.&lt;br /&gt;
&lt;br /&gt;
o Once you are an Eco-Libre Volunteer, we may provide you with a public profile page, pre-populated with certain information you provided in your application such as your name, areas of interest, images or other content you upload, which will be publicly displayed to anyone who visits the site. &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## I added a paragraph&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
o   As an Eco-Libre Volunteer, all of your Contributions will be licensed under a copyleft license, and published publicly.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## well, I guess this satisfies the legal requirements, but I do want to make the pseudonym stuff more clear. But I apparently wrote that to go on the application itself. Currently our application process is non-existant: the user just sends and email, we have a call, and we figure it out. I did just add some docs to sign to that process, but we need a more streamlined process: a form&lt;br /&gt;
## it&#039;s on our TODO list to review some wordpress plugins that we can use for building an application process. eventually *that&#039;s* where this text should be copied, and it should reference things like our official Privacy Policy&lt;br /&gt;
# the other thing was our &amp;quot; In-House Volunteer Agreement&amp;quot; which is *really* premature, as we don&#039;t even have housing yet. Nonetheless, I drafted this&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
1. I am at least 15 years old&lt;br /&gt;
2. I sincerely want live a sustainable lifestyle and work on developing tools to help others live sustainably. I understand that volunteering at Eco-Libre is an active experience, not a cheap vacation. &lt;br /&gt;
3. I am ready to participate in the community and share in the daily routine of my hosts, while respecting their living conditions and boundaries.&lt;br /&gt;
4. I will contribute my time to the community the agreed-upon number of hours per week.&lt;br /&gt;
5. I am willing to adapt to a lifestyle that may be different from mine. I will make known to the community any pertinent health conditions (disabilities, addictions...) beforehand.&lt;br /&gt;
6. I have insurance that will cover me for accidents, illness, and liability during my stay. I am aware that Eco-Libre cannot be held responsible for damages and / or losses linked to my stay.&lt;br /&gt;
7. I will prevent the spread of disease by washing my hands with soap and water after using the toilet and before preparing meals&lt;br /&gt;
8. I will only purchase vegan goods (derived from non-animal sources) during my time at Eco-Libre in accordance with the community values of ecological sustainability.&lt;br /&gt;
9. I will supplement my diet by taking vitamin B12&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# I also think that should be included in the online volunteer application form. And probably physically signed by folks who are going to actually come to Ecudaor. But we&#039;re not there yet...&lt;br /&gt;
# anyway, I think we&#039;ve finally satisifed the requrements of (and finished the configuration of) ConfirmAccount!&lt;br /&gt;
# TODO: finish enabling &amp;amp; configuring wiki extensions: DeleteBatch, SmiteSpam, UserMerge, Widgets&lt;br /&gt;
&lt;br /&gt;
== 2026-04-24 ==&lt;br /&gt;
# someone answered my &amp;quot;how do I license kdnelive files&amp;quot; here https://opensource.stackexchange.com/a/15747/30915&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
It sounds like your desired outcome is that copies of your mp4 can only be distributed while also sharing the kdenlive source files. You&#039;re correct that CC ShareAlike terms won&#039;t do this. ShareAlike requires that all downstream works that reuse the work be shareable under the same kind of ShareAlike license, but it doesn&#039;t require redistributors to share the underlying source code.&lt;br /&gt;
&lt;br /&gt;
If you do want to require source to accompany your work, this requirement differs from the desires of many artists who choose a CC license: they want their song or image to be shared around without having to be followed by the underlying sound-editor archive or photo-editor layer file. If that actually is what you want, then the GPL is a sensible choice for such a strong requirement, and it is perfectly applicable to non-software works.&lt;br /&gt;
&lt;br /&gt;
 * https://www.gnu.org/licenses/gpl-faq.html#GPLOtherThanSoftware&lt;br /&gt;
&lt;br /&gt;
If you don&#039;t want to impose this requirement, then I think CC BY-SA is still a reasonable choice for the underlying &amp;quot;source code&amp;quot; of your video. The output mp4 is legally derivative of your kdenlive files, so CC BY-SA will ensure that all mp4 files made from (derivatives of) your kdenlive source must also be freely shareable under CC BY-SA, but will not impose source disclosure. Future derivatives of the source kdenlive files will, similarly, have to remain under CC BY-SA even as others change them (but they can be kept secret even when built into a CC BY-SA mp4).&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# I half-decided we should then license all artwork (images made in gimp or inkscape, videos made in kdenlive) under GPL, so the sources would need to be public&lt;br /&gt;
# then I started thinking, hey, maybe our documentation should also be GPL, since sphinx and reST are like sources for PDFs they produce&lt;br /&gt;
# then I realized what that would actually mean. Say we make a video showing the construction of a launch-nest. Say the sources for that video include a camera that was mounted to a post and recording for 8 hours every day over the period of 3 months. Maybe five of them, for differet angles. Once we finally finish producing the video, I&#039;m going to be super relieved when we can delete that enormous source footage. The kdenlive file itself would be fine to release; it&#039;s small. But would we then be forced to indefinitely save and distribute the source video footage, even if it&#039;s a combined 3 TB of 1,000 video files, for a 1 GB finally-rendered mp4?&lt;br /&gt;
# inkscape is easy; the svg literally *is* the source file&lt;br /&gt;
# gimp is somewhere in-between. I typically hang-onto the source images used to make a feature image (sometimes brands, or screenshots or stock copyleft images of forests or whatever) for some number of months. eventually they get deleted. I would love to upload the gimp files, but those might be broken without the source images. Or they just would be too enormous and break git over time.&lt;br /&gt;
# also, if we can&#039;t do it, we can&#039;t expect downstream to do it. imagine we work with some youtuber and demand that the must forever store and publish the sources in order to do a video with us? I think 99% would turn us down, because they know they can&#039;t do that. It&#039;s too expensive and unrealistic.&lt;br /&gt;
# due to this very real logistical problem, I think we should just keep CC BY-SA on media files. We can go above-and-beyond that license and provide kdenlive and gimp files *sometimes*, but we shouldn&#039;t mandate it by using GPL.&lt;br /&gt;
# and, honestly, if downstream just licenses CC BY-SA, that lets us cut that up and use it in future videos. That&#039;s good enough. And appropriate for the (expensive-to-store) medium.&lt;br /&gt;
# ...&lt;br /&gt;
# revisting the DEB5 system, I found an example on another project that I maintain: buskill https://salsa.debian.org/debian/buskill/-/blob/master/debian/copyright?ref_type=heads&lt;br /&gt;
## so our debian maintainer built this. he put a file &#039;copyright&#039; in the root with this contents&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/&lt;br /&gt;
Source: https://github.com/BusKill/buskill-app&lt;br /&gt;
Upstream-Name: buskill&lt;br /&gt;
Upstream-Contact: Michael Altfield &amp;lt;michael@michaelaltfield.net&amp;gt;&lt;br /&gt;
Files:&lt;br /&gt;
 *&lt;br /&gt;
Copyright:&lt;br /&gt;
 2020-2022 Michael Altfield &amp;lt;michael@michaelaltfield.net&amp;gt;&lt;br /&gt;
 2020-2021 Steven Johnson &amp;lt;steven.j2019@protonmail.com&amp;gt;&lt;br /&gt;
License: GPL-3+&lt;br /&gt;
Files:&lt;br /&gt;
 src/fonts/*&lt;br /&gt;
Copyright:&lt;br /&gt;
 2015 Google&lt;br /&gt;
License: Apache-2.0&lt;br /&gt;
 Licensed under the Apache License, Version 2.0 (the &amp;quot;License&amp;quot;);&lt;br /&gt;
 you may not use this file except in compliance with the License.&lt;br /&gt;
 You may obtain a copy of the License at&lt;br /&gt;
 ․&lt;br /&gt;
	https://www.apache.org/licenses/LICENSE-2.0&lt;br /&gt;
 ․&lt;br /&gt;
 Unless required by applicable law or agreed to in writing, software&lt;br /&gt;
 distributed under the License is distributed on an &amp;quot;AS IS&amp;quot; BASIS,&lt;br /&gt;
 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.&lt;br /&gt;
 See the License for the specific language governing permissions and&lt;br /&gt;
 limitations under the License.&lt;br /&gt;
Comment:&lt;br /&gt;
 On Debian systems, the complete text of the Apache License&lt;br /&gt;
 version 2 can be found in &amp;quot;/usr/share/common-licenses/Apache-2.0&amp;quot;.&lt;br /&gt;
Files:&lt;br /&gt;
 src/packages/garden/navigationdrawer/*&lt;br /&gt;
Copyright:&lt;br /&gt;
 2013 Alexander Taylor&lt;br /&gt;
License: MIT&lt;br /&gt;
Files:&lt;br /&gt;
 src/packages/garden/progressspinner/*&lt;br /&gt;
Copyright:&lt;br /&gt;
 2015 Ryan Pessa &amp;lt;dkived@gmail.com&amp;gt;&lt;br /&gt;
License: MIT&lt;br /&gt;
Files:&lt;br /&gt;
 debian/*&lt;br /&gt;
Copyright:&lt;br /&gt;
 2022-2026 Francois Marier &amp;lt;francois@debian.org&amp;gt;&lt;br /&gt;
License: GPL-3+&lt;br /&gt;
License: GPL-3+&lt;br /&gt;
 This package is free software; you can redistribute it and/or modify&lt;br /&gt;
 it under the terms of the GNU General Public License as published by&lt;br /&gt;
 the Free Software Foundation; either version 3 of the License, or&lt;br /&gt;
 (at your option) any later version.&lt;br /&gt;
 .&lt;br /&gt;
 This package is distributed in the hope that it will be useful,&lt;br /&gt;
 but WITHOUT ANY WARRANTY; without even the implied warranty of&lt;br /&gt;
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the&lt;br /&gt;
 GNU General Public License for more details.&lt;br /&gt;
 .&lt;br /&gt;
 You should have received a copy of the GNU General Public License&lt;br /&gt;
 along with this program. If not, see &amp;lt;https://www.gnu.org/licenses/&amp;gt;&lt;br /&gt;
Comment:&lt;br /&gt;
 On Debian systems, the complete text of the GNU General&lt;br /&gt;
 Public License version 3 can be found in &amp;quot;/usr/share/common-licenses/GPL-3&amp;quot;.&lt;br /&gt;
License: MIT&lt;br /&gt;
 Permission is hereby granted, free of charge, to any person obtaining a copy&lt;br /&gt;
 of this software and associated documentation files (the &amp;quot;Software&amp;quot;), to deal&lt;br /&gt;
&lt;br /&gt;
 in the Software without restriction, including without limitation the rights&lt;br /&gt;
 to use, copy, modify, merge, publish, distribute, sublicense, and/or sell&lt;br /&gt;
 copies of the Software, and to permit persons to whom the Software is&lt;br /&gt;
 furnished to do so, subject to the following conditions:&lt;br /&gt;
 .&lt;br /&gt;
 The above copyright notice and this permission notice shall be included in&lt;br /&gt;
 all copies or substantial portions of the Software.&lt;br /&gt;
 .&lt;br /&gt;
 THE SOFTWARE IS PROVIDED &amp;quot;AS IS&amp;quot;, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR&lt;br /&gt;
 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,&lt;br /&gt;
 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE&lt;br /&gt;
 AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER&lt;br /&gt;
 LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,&lt;br /&gt;
 OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN&lt;br /&gt;
 THE SOFTWARE.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# I spent some time trying to craft a &#039;copyright&#039; file that we could use for Eco-Libre&lt;br /&gt;
## one thing that bothers me is that I have so many &#039;Files&#039; stanzas – one for each programming language. I wish I could do something like&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Files:&lt;br /&gt;
 *.py|*.php|*.c&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## there are no examples where a single file stanza has many file paths, but the text of the standard does say they are whitespace-delimited (not pipe-delimited, like I naturally think)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
4. File syntax&lt;br /&gt;
...&lt;br /&gt;
4.2. Whitespace-separated lists&lt;br /&gt;
&lt;br /&gt;
Field values defined as whitespace-separated lists may be on one line or many. Values in the list are separated by one or more whitespace characters (space, tab, or newline). For example, the Files field contains a whitespace-separated list of filename patterns.&lt;br /&gt;
...&lt;br /&gt;
6.9. Files&lt;br /&gt;
&lt;br /&gt;
Whitespace-separated list: list of patterns indicating files covered by the license and copyright specified in this stanza.&lt;br /&gt;
&lt;br /&gt;
Filename patterns in the Files field are specified using a simplified shell glob syntax. Patterns are separated by whitespace. &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## let&#039;s see if I can find any example package that use this whitespace, so I don&#039;t fuck it up&lt;br /&gt;
## looks like debian has a *ton* of these already available on my system&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
user@disp4360:~$ ls /usr/share/doc/*/copyright | head&lt;br /&gt;
/usr/share/doc/acl/copyright&lt;br /&gt;
/usr/share/doc/adduser/copyright&lt;br /&gt;
/usr/share/doc/adwaita-icon-theme/copyright&lt;br /&gt;
/usr/share/doc/alsa-topology-conf/copyright&lt;br /&gt;
/usr/share/doc/alsa-ucm-conf/copyright&lt;br /&gt;
/usr/share/doc/alsa-utils/copyright&lt;br /&gt;
/usr/share/doc/amd64-microcode/copyright&lt;br /&gt;
/usr/share/doc/anacron/copyright&lt;br /&gt;
/usr/share/doc/ansible/copyright&lt;br /&gt;
/usr/share/doc/ansible-core/copyright&lt;br /&gt;
user@disp4360:~$ &lt;br /&gt;
&lt;br /&gt;
user@disp4360:~$ ls /usr/share/doc/*/copyright | wc -l&lt;br /&gt;
2798&lt;br /&gt;
user@disp4360:~$ &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## the very first one has a great example&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
user@disp4360:~$ cat /usr/share/doc/acl/copyright&lt;br /&gt;
Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/&lt;br /&gt;
&lt;br /&gt;
Files:&lt;br /&gt;
 *&lt;br /&gt;
Copyright:&lt;br /&gt;
 Copyright © 2000-2008 Silicon Graphics, Inc.&lt;br /&gt;
 Copyright © 1999-2001,2007-2009 Andreas Gruenbacher&lt;br /&gt;
License: GPL-2+&lt;br /&gt;
 This program is free software: you can redistribute it and/or modify it&lt;br /&gt;
 under the terms of the GNU General Public License as published by&lt;br /&gt;
 the Free Software Foundation, either version 2 of the License, or&lt;br /&gt;
 (at your option) any later version.&lt;br /&gt;
 .&lt;br /&gt;
 This program is distributed in the hope that it will be useful,&lt;br /&gt;
 but WITHOUT ANY WARRANTY; without even the implied warranty of&lt;br /&gt;
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the&lt;br /&gt;
 GNU General Public License for more details.&lt;br /&gt;
 .&lt;br /&gt;
 You should have received a copy of the GNU General Public License&lt;br /&gt;
 along with this program.  If not, see &amp;lt;https://www.gnu.org/licenses/&amp;gt;.&lt;br /&gt;
Comment:&lt;br /&gt;
 On Debian systems, the full text of the GNU General Public License&lt;br /&gt;
 can be found in &#039;/usr/share/common-licenses/GPL-2&#039;.&lt;br /&gt;
&lt;br /&gt;
Files:&lt;br /&gt;
 exports&lt;br /&gt;
 include/*.h&lt;br /&gt;
 libacl/*.c&lt;br /&gt;
 libacl/*.h&lt;br /&gt;
 libmisc/*.c&lt;br /&gt;
 tools/do_set.*&lt;br /&gt;
 tools/parse.*&lt;br /&gt;
 tools/sequence.c&lt;br /&gt;
 tools/setfacl.c&lt;br /&gt;
 tools/user_group.h&lt;br /&gt;
Copyright:&lt;br /&gt;
 Copyright © 2001-2002 Silicon Graphics, Inc.&lt;br /&gt;
 Copyright © 1999-2003,2007,2009,2011 Andreas Gruenbacher&lt;br /&gt;
License: LGPL-2+&lt;br /&gt;
 This program is free software: you can redistribute it and/or modify it&lt;br /&gt;
 under the terms of the GNU Lesser General Public License as published by&lt;br /&gt;
 the Free Software Foundation, either version 2.1 of the License, or&lt;br /&gt;
 (at your option) any later version.&lt;br /&gt;
 .&lt;br /&gt;
 This program is distributed in the hope that it will be useful,&lt;br /&gt;
 but WITHOUT ANY WARRANTY; without even the implied warranty of&lt;br /&gt;
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the&lt;br /&gt;
 GNU Lesser General Public License for more details.&lt;br /&gt;
 .&lt;br /&gt;
 You should have received a copy of the GNU Lesser General Public License&lt;br /&gt;
 along with this program.  If not, see &amp;lt;https://www.gnu.org/licenses/&amp;gt;.&lt;br /&gt;
Comment:&lt;br /&gt;
 On Debian systems, the full text of the GNU Lesser General Public License&lt;br /&gt;
 can be found in &#039;/usr/share/common-licenses/LGPL-2.1&#039;.&lt;br /&gt;
user@disp4360:~$ &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# I also found an example where the whitespace was a space, not a newline + space&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
user@disp4360:~$ cat /usr/share/doc/apparmor/copyright &lt;br /&gt;
Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/&lt;br /&gt;
Upstream-Name: AppArmor&lt;br /&gt;
Upstream-Contact: apparmor@lists.ubuntu.com&lt;br /&gt;
Source: https://launchpad.net/apparmor&lt;br /&gt;
&lt;br /&gt;
Files: *&lt;br /&gt;
Copyright: 1998-2010 Novell/SuSE/Immunix&lt;br /&gt;
		   2008-2014 Canonical Ltd.&lt;br /&gt;
License: GPL-2+&lt;br /&gt;
&lt;br /&gt;
Files: changehat/pam_apparmor/*&lt;br /&gt;
Copyright: 2006 SUSE Linux Products GmbH, Nuernberg, Germany&lt;br /&gt;
		   2002, 2003, 2004 SuSE GmbH Nuernberg, Germany&lt;br /&gt;
		   2002-2006 Novell/SuSE&lt;br /&gt;
		   2010 Canonical Ltd.&lt;br /&gt;
License: BSD-3-clause or GPL-2+&lt;br /&gt;
&lt;br /&gt;
Files: changehat/mod_apparmor/*&lt;br /&gt;
Copyright: 2004-2006 Novell&lt;br /&gt;
		   2014 Canonical Ltd.&lt;br /&gt;
License: LGPL-2.1+&lt;br /&gt;
&lt;br /&gt;
Files: libraries/libapparmor/* parser/libapparmor_re/*&lt;br /&gt;
Copyright: 1999-2008 Novell&lt;br /&gt;
		   2009-2013 Canonical Ltd.&lt;br /&gt;
License: LGPL-2.1+&lt;br /&gt;
&lt;br /&gt;
Files: profiles/apparmor.d/abstractions/mysql&lt;br /&gt;
Copyright: 2002-2006 Novell/SUSE&lt;br /&gt;
		   2013 Christian Boltz&lt;br /&gt;
License: GPL-2&lt;br /&gt;
&lt;br /&gt;
Files: profiles/apparmor.d/usr.sbin.dnsmasq&lt;br /&gt;
Copyright: 2009 John Dong &amp;lt;jdong@ubuntu.com&amp;gt;&lt;br /&gt;
		   2010 Canonical Ltd.&lt;br /&gt;
License: GPL-2&lt;br /&gt;
&lt;br /&gt;
Files: profiles/apparmor.d/sbin.syslog-ng&lt;br /&gt;
Copyright: 2006-2009 Novell/SUSE&lt;br /&gt;
		   2006 Christian Boltz&lt;br /&gt;
		   2010 Canonical Ltd.&lt;br /&gt;
License: GPL-2&lt;br /&gt;
&lt;br /&gt;
Files: profiles/apparmor.d/usr.lib.dovecot.*&lt;br /&gt;
Copyright: 2013 Christian Boltz&lt;br /&gt;
License: GPL-2&lt;br /&gt;
&lt;br /&gt;
Files: profiles/apparmor.d/usr.lib.dovecot.auth&lt;br /&gt;
Copyright: 2013 Christian Boltz&lt;br /&gt;
		   2014 Christian Wittmer&lt;br /&gt;
License: GPL-2&lt;br /&gt;
&lt;br /&gt;
Files: profiles/apparmor.d/usr.lib.dovecot.deliver&lt;br /&gt;
Copyright: 2009 Dulmandakh Sukhbaatar &amp;lt;dulmandakh@gmail.com&amp;gt;&lt;br /&gt;
		   2009-2014 Canonical Ltd.&lt;br /&gt;
		   2011-2013 Christian Boltz&lt;br /&gt;
License: GPL-2&lt;br /&gt;
&lt;br /&gt;
Files: profiles/apparmor.d/usr.lib.dovecot.dovecot-auth&lt;br /&gt;
Copyright: 2009-2013 Canonical Ltd.&lt;br /&gt;
		   2013 Christian Boltz&lt;br /&gt;
License: GPL-2&lt;br /&gt;
&lt;br /&gt;
Files: profiles/apparmor.d/usr.lib.dovecot.imap profiles/apparmor.d/usr.lib.dovecot.pop3&lt;br /&gt;
Copyright: 2009-2010 Canonical Ltd.&lt;br /&gt;
		   2011-2013 Christian Boltz&lt;br /&gt;
License: GPL-2&lt;br /&gt;
&lt;br /&gt;
Files: profiles/apparmor.d/usr.lib.dovecot.imap-login profiles/apparmor.d/usr.lib.dovecot.pop3-login&lt;br /&gt;
Copyright: 2009-2011 Canonical Ltd.&lt;br /&gt;
		   2013 Christian Boltz&lt;br /&gt;
License: GPL-2&lt;br /&gt;
&lt;br /&gt;
Files: profiles/apparmor.d/usr.lib.dovecot.managesieve&lt;br /&gt;
Copyright: 2013 Christian Boltz&lt;br /&gt;
		   2014 Christian Wittmer&lt;br /&gt;
License: GPL-2&lt;br /&gt;
&lt;br /&gt;
Files: profiles/apparmor.d/usr.lib.dovecot.managesieve-login&lt;br /&gt;
Copyright: 2009 Dulmandakh Sukhbaatar &amp;lt;dulmandakh@gmail.com&amp;gt;&lt;br /&gt;
		   2009-2011 Canonical Ltd.&lt;br /&gt;
		   2013 Christian Boltz&lt;br /&gt;
		   2014 Christian Wittmer&lt;br /&gt;
License: GPL-2&lt;br /&gt;
&lt;br /&gt;
Files: profiles/apparmor/profiles/extras/usr.bin.mlmmj-make-ml.sh&lt;br /&gt;
Copyright: 2002-2005 Novell/SUSE&lt;br /&gt;
License: GPL-2&lt;br /&gt;
&lt;br /&gt;
Files: profiles/apparmor/profiles/extras/usr.bin.passwd&lt;br /&gt;
Copyright: 2006 Volker Kuhlmann&lt;br /&gt;
License: GPL-2&lt;br /&gt;
&lt;br /&gt;
Files: debian/*&lt;br /&gt;
Copyright: 2007-2011 Canonical Ltd.&lt;br /&gt;
		   2014-2022 intrigeri&lt;br /&gt;
License: GPL-2&lt;br /&gt;
&lt;br /&gt;
License: BSD-3-clause&lt;br /&gt;
 Redistribution and use in source and binary forms, with or without&lt;br /&gt;
 modification, are permitted provided that the following conditions&lt;br /&gt;
 are met:&lt;br /&gt;
 .&lt;br /&gt;
 1. Redistributions of source code must retain any existing copyright&lt;br /&gt;
	notice, and this entire permission notice in its entirety,&lt;br /&gt;
	including the disclaimer of warranties.&lt;br /&gt;
 .&lt;br /&gt;
 2. Redistributions in binary form must reproduce all prior and current&lt;br /&gt;
	copyright notices, this list of conditions, and the following&lt;br /&gt;
	disclaimer in the documentation and/or other materials provided&lt;br /&gt;
	with the distribution.&lt;br /&gt;
 .&lt;br /&gt;
 3. The name of any author may not be used to endorse or promote&lt;br /&gt;
	products derived from this software without their specific prior&lt;br /&gt;
	written permission.&lt;br /&gt;
&lt;br /&gt;
License: GPL-2&lt;br /&gt;
 This program is free software; you can redistribute it and/or modify&lt;br /&gt;
 it under the terms of the GNU General Public License as published by&lt;br /&gt;
 the Free Software Foundation; version 2 of the License.&lt;br /&gt;
 .&lt;br /&gt;
 This program is distributed in the hope that it will be useful,&lt;br /&gt;
 but WITHOUT ANY WARRANTY; without even the implied warranty of&lt;br /&gt;
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the&lt;br /&gt;
 GNU General Public License for more details.&lt;br /&gt;
 .&lt;br /&gt;
 You should have received a copy of the GNU General Public License along&lt;br /&gt;
 with this program; if not, write to the Free Software Foundation, Inc.,&lt;br /&gt;
 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.&lt;br /&gt;
 .&lt;br /&gt;
 On Debian systems, the complete text of the GNU General&lt;br /&gt;
 Public License can be found in `/usr/share/common-licenses/GPL-2&#039;.&lt;br /&gt;
&lt;br /&gt;
License: GPL-2+&lt;br /&gt;
 This program is free software; you can redistribute it and/or modify&lt;br /&gt;
 it under the terms of the GNU General Public License as published by&lt;br /&gt;
 the Free Software Foundation; either version 2 of the License, or&lt;br /&gt;
 (at your option) any later version.&lt;br /&gt;
 .&lt;br /&gt;
 This program is distributed in the hope that it will be useful,&lt;br /&gt;
 but WITHOUT ANY WARRANTY; without even the implied warranty of&lt;br /&gt;
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the&lt;br /&gt;
 GNU General Public License for more details.&lt;br /&gt;
 .&lt;br /&gt;
 You should have received a copy of the GNU General Public License along&lt;br /&gt;
 with this program; if not, write to the Free Software Foundation, Inc.,&lt;br /&gt;
 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.&lt;br /&gt;
 .&lt;br /&gt;
 On Debian systems, the complete text of the GNU General&lt;br /&gt;
 Public License can be found in `/usr/share/common-licenses/GPL-2&#039;.&lt;br /&gt;
&lt;br /&gt;
License: LGPL-2.1+&lt;br /&gt;
 This library is free software; you can redistribute it and/or&lt;br /&gt;
 modify it under the terms of the GNU Lesser General Public&lt;br /&gt;
 License as published by the Free Software Foundation; either&lt;br /&gt;
 version 2.1 of the License, or (at your option) any later version.&lt;br /&gt;
 .&lt;br /&gt;
 This library is distributed in the hope that it will be useful,&lt;br /&gt;
 but WITHOUT ANY WARRANTY; without even the implied warranty of&lt;br /&gt;
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU&lt;br /&gt;
 Lesser General Public License for more details.&lt;br /&gt;
 .&lt;br /&gt;
 You should have received a copy of the GNU Lesser General Public&lt;br /&gt;
 License along with this library; if not, write to the Free Software&lt;br /&gt;
 Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA&lt;br /&gt;
 .&lt;br /&gt;
 On Debian systems, the complete text of the GNU General&lt;br /&gt;
 Public License can be found in `/usr/share/common-licenses/LGPL-2.1&#039;.&lt;br /&gt;
user@disp4360:~$ &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
## so we already have a &amp;quot;short version&amp;quot; of the license for GPL and CERN. For example&lt;br /&gt;
### GPL&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 This package is free software; you can redistribute it and/or modify&lt;br /&gt;
 it under the terms of the GNU General Public License as published by&lt;br /&gt;
 the Free Software Foundation; either version 3 of the License, or&lt;br /&gt;
 (at your option) any later version.&lt;br /&gt;
 .&lt;br /&gt;
 This package is distributed in the hope that it will be useful,&lt;br /&gt;
 but WITHOUT ANY WARRANTY; without even the implied warranty of&lt;br /&gt;
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the&lt;br /&gt;
 GNU General Public License for more details.&lt;br /&gt;
 .&lt;br /&gt;
 You should have received a copy of the GNU General Public License&lt;br /&gt;
 along with this program. If not, see &amp;lt;https://www.gnu.org/licenses/&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
### CERN&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
You may redistribute and modify this source and make products using it under the terms of the CERN-OHL-S v2 (https://ohwr.org/cern_ohl_s_v2.txt).&lt;br /&gt;
&lt;br /&gt;
This source is distributed WITHOUT ANY EXPRESS OR IMPLIED WARRANTY, INCLUDING OF MERCHANTABILITY, SATISFACTORY QUALITY AND FITNESS FOR A PARTICULAR PURPOSE. Please see the CERN-OHL-S v2 for applicable conditions.&lt;br /&gt;
&lt;br /&gt;
Source location: foundationdevices.com/passport-electronics&lt;br /&gt;
&lt;br /&gt;
As per CERN-OHL-S v2 section 4, should You produce hardware based on this source, You must where practicable and applicable maintain the Source Location visible (1) on the packaging of the hardware, (2) on the circuit board(s) via silkscreen or copper, (3) in any documentation, and (4) on other products you make using this source.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## I was hoping for some sort of equivalent in CC-BY-SA-4.0, but all of these (which were the only ones I found with BY-SA-4.0) had the full text of the license&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
user@disp4360:/usr/share/doc$ grep -irl BY-SA-4.0 /usr/share/doc/*/copyright&lt;br /&gt;
/usr/share/doc/adwaita-icon-theme/copyright&lt;br /&gt;
/usr/share/doc/containerd/copyright&lt;br /&gt;
/usr/share/doc/gimp/copyright&lt;br /&gt;
/usr/share/doc/gimp-data/copyright&lt;br /&gt;
/usr/share/doc/gir1.2-gtk-3.0/copyright&lt;br /&gt;
/usr/share/doc/gtk-update-icon-cache/copyright&lt;br /&gt;
/usr/share/doc/libadwaita-1-0/copyright&lt;br /&gt;
/usr/share/doc/libgimp2.0/copyright&lt;br /&gt;
/usr/share/doc/libgtk-3-0/copyright&lt;br /&gt;
/usr/share/doc/libgtk-3-bin/copyright&lt;br /&gt;
/usr/share/doc/libgtk-3-common/copyright&lt;br /&gt;
/usr/share/doc/libmd4c0/copyright&lt;br /&gt;
/usr/share/doc/libnftables1/copyright&lt;br /&gt;
/usr/share/doc/libwildmidi2/copyright&lt;br /&gt;
/usr/share/doc/mythes-en-us/copyright&lt;br /&gt;
/usr/share/doc/nftables/copyright&lt;br /&gt;
/usr/share/doc/syncthing/copyright&lt;br /&gt;
user@disp4360:/usr/share/doc$ &lt;br /&gt;
user@disp4360:/usr/share/doc$ cat /usr/share/doc/libadwaita-1-0/copyright&lt;br /&gt;
Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/&lt;br /&gt;
Upstream-Name: libadwaita&lt;br /&gt;
Source: https://gitlab.gnome.org/GNOME/libadwaita&lt;br /&gt;
Files-Excluded: doc/libadwaita-1&lt;br /&gt;
Comment: Let&#039;s build the docs from source&lt;br /&gt;
&lt;br /&gt;
Files: *&lt;br /&gt;
Copyright: 2019, Alexander Mikhaylenko &amp;lt;exalm7659@gmail.com&amp;gt;&lt;br /&gt;
  2018, 2019, Zander Brown &amp;lt;zbrown@gnome.org&amp;gt;&lt;br /&gt;
  2017-2021, Purism SPC&lt;br /&gt;
  2016, Endless Mobile Inc.&lt;br /&gt;
  2013, 2019, Red Hat, Inc.&lt;br /&gt;
  1995-1997, Peter Mattis, Spencer Kimball and Josh MacDonald&lt;br /&gt;
  2021, GNOME Foundation&lt;br /&gt;
  2021, Manuel Genovés&lt;br /&gt;
  2021, Nahuel Gomez Castro&lt;br /&gt;
  2021, Maximiliano Sandoval&lt;br /&gt;
  2011, Intel Corporation&lt;br /&gt;
License: LGPL-2.1+&lt;br /&gt;
&lt;br /&gt;
Files: debian/*&lt;br /&gt;
Copyright: 2021, Guido Günther &amp;lt;agx@sigxcpu.org&amp;gt;&lt;br /&gt;
License: GPL-3+&lt;br /&gt;
&lt;br /&gt;
Files:&lt;br /&gt;
 doc/libadwaita-1/*.html&lt;br /&gt;
 doc/libadwaita-1/main.js&lt;br /&gt;
Copyright:&lt;br /&gt;
 2021, GNOME Foundation&lt;br /&gt;
License: Apache-2.0 or GPL-3+&lt;br /&gt;
&lt;br /&gt;
Files:&lt;br /&gt;
 demo/data/org.gnome.Adwaita1.Demo.metainfo.xml.in.in&lt;br /&gt;
Copyright: none&lt;br /&gt;
License: CC0-1.0&lt;br /&gt;
&lt;br /&gt;
Files:&lt;br /&gt;
 demo/data/org.gnome.Adwaita1.Demo.Source.svg&lt;br /&gt;
Copyright:&lt;br /&gt;
 GNOME Design Team&lt;br /&gt;
License: CC-BY-SA-4.0&lt;br /&gt;
&lt;br /&gt;
License: Apache-2.0&lt;br /&gt;
 SPDX license identifier Apache-2.0.&lt;br /&gt;
 .&lt;br /&gt;
 Licensed under the Apache License, Version 2.0 (the &amp;quot;License&amp;quot;);&lt;br /&gt;
 you may not use this file except in compliance with the License.&lt;br /&gt;
 You may obtain a copy of the License at&lt;br /&gt;
 .&lt;br /&gt;
	  http://www.apache.org/licenses/LICENSE-2.0&lt;br /&gt;
 .&lt;br /&gt;
 Unless required by applicable law or agreed to in writing, software&lt;br /&gt;
 distributed under the License is distributed on an &amp;quot;AS IS&amp;quot; BASIS,&lt;br /&gt;
 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.&lt;br /&gt;
 See the License for the specific language governing permissions and&lt;br /&gt;
 limitations under the License.&lt;br /&gt;
 .&lt;br /&gt;
 On Debian systems, a copy of the Apache License version 2.0&lt;br /&gt;
 can be found in /usr/share/common-licenses/Apache-2.0.&lt;br /&gt;
&lt;br /&gt;
License: CC0-1.0&lt;br /&gt;
 SPDX license identifier CC0-1.0.&lt;br /&gt;
 .&lt;br /&gt;
 On Debian systems, a copy of the Creative Commons Zero license, version 1.0&lt;br /&gt;
 can be found in /usr/share/common-licenses/CC0-1.0.&lt;br /&gt;
&lt;br /&gt;
License: CC-BY-SA-4.0&lt;br /&gt;
 http://creativecommons.org/licenses/by-sa/4.0/&lt;br /&gt;
 .&lt;br /&gt;
 Attribution-ShareAlike 4.0 International&lt;br /&gt;
 .&lt;br /&gt;
 =======================================================================&lt;br /&gt;
 .&lt;br /&gt;
 Creative Commons Corporation (&amp;quot;Creative Commons&amp;quot;) is not a law firm and&lt;br /&gt;
 does not provide legal services or legal advice. Distribution of&lt;br /&gt;
 Creative Commons public licenses does not create a lawyer-client or&lt;br /&gt;
 other relationship. Creative Commons makes its licenses and related&lt;br /&gt;
 information available on an &amp;quot;as-is&amp;quot; basis. Creative Commons gives no&lt;br /&gt;
 warranties regarding its licenses, any material licensed under their&lt;br /&gt;
 terms and conditions, or any related information. Creative Commons&lt;br /&gt;
 disclaims all liability for damages resulting from their use to the&lt;br /&gt;
 fullest extent possible.&lt;br /&gt;
 .&lt;br /&gt;
 Using Creative Commons Public Licenses&lt;br /&gt;
 .&lt;br /&gt;
 Creative Commons public licenses provide a standard set of terms and&lt;br /&gt;
 conditions that creators and other rights holders may use to share&lt;br /&gt;
 original works of authorship and other material subject to copyright&lt;br /&gt;
 and certain other rights specified in the public license below. The&lt;br /&gt;
 following considerations are for informational purposes only, are not&lt;br /&gt;
 exhaustive, and do not form part of our licenses.&lt;br /&gt;
 .&lt;br /&gt;
	  Considerations for licensors: Our public licenses are&lt;br /&gt;
	  intended for use by those authorized to give the public&lt;br /&gt;
	  permission to use material in ways otherwise restricted by&lt;br /&gt;
	  copyright and certain other rights. Our licenses are&lt;br /&gt;
	  irrevocable. Licensors should read and understand the terms&lt;br /&gt;
	  and conditions of the license they choose before applying it.&lt;br /&gt;
	  Licensors should also secure all rights necessary before&lt;br /&gt;
	  applying our licenses so that the public can reuse the&lt;br /&gt;
	  material as expected. Licensors should clearly mark any&lt;br /&gt;
	  material not subject to the license. This includes other CC-&lt;br /&gt;
	  licensed material, or material used under an exception or&lt;br /&gt;
	  limitation to copyright. More considerations for licensors:&lt;br /&gt;
	  wiki.creativecommons.org/Considerations_for_licensors&lt;br /&gt;
 .&lt;br /&gt;
	  Considerations for the public: By using one of our public&lt;br /&gt;
	  licenses, a licensor grants the public permission to use the&lt;br /&gt;
	  licensed material under specified terms and conditions. If&lt;br /&gt;
	  the licensor&#039;s permission is not necessary for any reason--for&lt;br /&gt;
	  example, because of any applicable exception or limitation to&lt;br /&gt;
	  copyright--then that use is not regulated by the license. Our&lt;br /&gt;
	  licenses grant only permissions under copyright and certain&lt;br /&gt;
	  other rights that a licensor has authority to grant. Use of&lt;br /&gt;
	  the licensed material may still be restricted for other&lt;br /&gt;
	  reasons, including because others have copyright or other&lt;br /&gt;
	  rights in the material. A licensor may make special requests,&lt;br /&gt;
	  such as asking that all changes be marked or described.&lt;br /&gt;
	  Although not required by our licenses, you are encouraged to&lt;br /&gt;
	  respect those requests where reasonable. More_considerations&lt;br /&gt;
	  for the public:&lt;br /&gt;
	  wiki.creativecommons.org/Considerations_for_licensees&lt;br /&gt;
 .&lt;br /&gt;
 =======================================================================&lt;br /&gt;
 .&lt;br /&gt;
 Creative Commons Attribution-ShareAlike 4.0 International Public&lt;br /&gt;
 License&lt;br /&gt;
 .&lt;br /&gt;
 By exercising the Licensed Rights (defined below), You accept and agree&lt;br /&gt;
 to be bound by the terms and conditions of this Creative Commons&lt;br /&gt;
 Attribution-ShareAlike 4.0 International Public License (&amp;quot;Public&lt;br /&gt;
 License&amp;quot;). To the extent this Public License may be interpreted as a&lt;br /&gt;
 contract, You are granted the Licensed Rights in consideration of Your&lt;br /&gt;
 acceptance of these terms and conditions, and the Licensor grants You&lt;br /&gt;
 such rights in consideration of benefits the Licensor receives from&lt;br /&gt;
 making the Licensed Material available under these terms and&lt;br /&gt;
 conditions.&lt;br /&gt;
 .&lt;br /&gt;
 .&lt;br /&gt;
 Section 1 -- Definitions.&lt;br /&gt;
 .&lt;br /&gt;
   a. Adapted Material means material subject to Copyright and Similar&lt;br /&gt;
	  Rights that is derived from or based upon the Licensed Material&lt;br /&gt;
	  and in which the Licensed Material is translated, altered,&lt;br /&gt;
	  arranged, transformed, or otherwise modified in a manner requiring&lt;br /&gt;
	  permission under the Copyright and Similar Rights held by the&lt;br /&gt;
	  Licensor. For purposes of this Public License, where the Licensed&lt;br /&gt;
	  Material is a musical work, performance, or sound recording,&lt;br /&gt;
	  Adapted Material is always produced where the Licensed Material is&lt;br /&gt;
	  synched in timed relation with a moving image.&lt;br /&gt;
 .&lt;br /&gt;
   b. Adapter&#039;s License means the license You apply to Your Copyright&lt;br /&gt;
	  and Similar Rights in Your contributions to Adapted Material in&lt;br /&gt;
	  accordance with the terms and conditions of this Public License.&lt;br /&gt;
 .&lt;br /&gt;
   c. BY-SA Compatible License means a license listed at&lt;br /&gt;
	  creativecommons.org/compatiblelicenses, approved by Creative&lt;br /&gt;
	  Commons as essentially the equivalent of this Public License.&lt;br /&gt;
 .&lt;br /&gt;
   d. Copyright and Similar Rights means copyright and/or similar rights&lt;br /&gt;
	  closely related to copyright including, without limitation,&lt;br /&gt;
	  performance, broadcast, sound recording, and Sui Generis Database&lt;br /&gt;
	  Rights, without regard to how the rights are labeled or&lt;br /&gt;
	  categorized. For purposes of this Public License, the rights&lt;br /&gt;
	  specified in Section 2(b)(1)-(2) are not Copyright and Similar&lt;br /&gt;
	  Rights.&lt;br /&gt;
 .&lt;br /&gt;
   e. Effective Technological Measures means those measures that, in the&lt;br /&gt;
	  absence of proper authority, may not be circumvented under laws&lt;br /&gt;
	  fulfilling obligations under Article 11 of the WIPO Copyright&lt;br /&gt;
	  Treaty adopted on December 20, 1996, and/or similar international&lt;br /&gt;
	  agreements.&lt;br /&gt;
 .&lt;br /&gt;
   f. Exceptions and Limitations means fair use, fair dealing, and/or&lt;br /&gt;
	  any other exception or limitation to Copyright and Similar Rights&lt;br /&gt;
	  that applies to Your use of the Licensed Material.&lt;br /&gt;
 .&lt;br /&gt;
   g. License Elements means the license attributes listed in the name&lt;br /&gt;
	  of a Creative Commons Public License. The License Elements of this&lt;br /&gt;
	  Public License are Attribution and ShareAlike.&lt;br /&gt;
 .&lt;br /&gt;
   h. Licensed Material means the artistic or literary work, database,&lt;br /&gt;
	  or other material to which the Licensor applied this Public&lt;br /&gt;
	  License.&lt;br /&gt;
 .&lt;br /&gt;
   i. Licensed Rights means the rights granted to You subject to the&lt;br /&gt;
	  terms and conditions of this Public License, which are limited to&lt;br /&gt;
	  all Copyright and Similar Rights that apply to Your use of the&lt;br /&gt;
	  Licensed Material and that the Licensor has authority to license.&lt;br /&gt;
 .&lt;br /&gt;
   j. Licensor means the individual(s) or entity(ies) granting rights&lt;br /&gt;
	  under this Public License.&lt;br /&gt;
 .&lt;br /&gt;
   k. Share means to provide material to the public by any means or&lt;br /&gt;
	  process that requires permission under the Licensed Rights, such&lt;br /&gt;
	  as reproduction, public display, public performance, distribution,&lt;br /&gt;
	  dissemination, communication, or importation, and to make material&lt;br /&gt;
	  available to the public including in ways that members of the&lt;br /&gt;
	  public may access the material from a place and at a time&lt;br /&gt;
	  individually chosen by them.&lt;br /&gt;
 .&lt;br /&gt;
   l. Sui Generis Database Rights means rights other than copyright&lt;br /&gt;
	  resulting from Directive 96/9/EC of the European Parliament and of&lt;br /&gt;
	  the Council of 11 March 1996 on the legal protection of databases,&lt;br /&gt;
	  as amended and/or succeeded, as well as other essentially&lt;br /&gt;
	  equivalent rights anywhere in the world.&lt;br /&gt;
 .&lt;br /&gt;
   m. You means the individual or entity exercising the Licensed Rights&lt;br /&gt;
	  under this Public License. Your has a corresponding meaning.&lt;br /&gt;
 .&lt;br /&gt;
 .&lt;br /&gt;
 Section 2 -- Scope.&lt;br /&gt;
 .&lt;br /&gt;
   a. License grant.&lt;br /&gt;
 .&lt;br /&gt;
		1. Subject to the terms and conditions of this Public License,&lt;br /&gt;
		   the Licensor hereby grants You a worldwide, royalty-free,&lt;br /&gt;
		   non-sublicensable, non-exclusive, irrevocable license to&lt;br /&gt;
		   exercise the Licensed Rights in the Licensed Material to:&lt;br /&gt;
 .&lt;br /&gt;
			 a. reproduce and Share the Licensed Material, in whole or&lt;br /&gt;
				in part; and&lt;br /&gt;
 .&lt;br /&gt;
			 b. produce, reproduce, and Share Adapted Material.&lt;br /&gt;
 .&lt;br /&gt;
		2. Exceptions and Limitations. For the avoidance of doubt, where&lt;br /&gt;
		   Exceptions and Limitations apply to Your use, this Public&lt;br /&gt;
		   License does not apply, and You do not need to comply with&lt;br /&gt;
		   its terms and conditions.&lt;br /&gt;
 .&lt;br /&gt;
		3. Term. The term of this Public License is specified in Section&lt;br /&gt;
		   6(a).&lt;br /&gt;
 .&lt;br /&gt;
		4. Media and formats; technical modifications allowed. The&lt;br /&gt;
		   Licensor authorizes You to exercise the Licensed Rights in&lt;br /&gt;
		   all media and formats whether now known or hereafter created,&lt;br /&gt;
		   and to make technical modifications necessary to do so. The&lt;br /&gt;
		   Licensor waives and/or agrees not to assert any right or&lt;br /&gt;
		   authority to forbid You from making technical modifications&lt;br /&gt;
		   necessary to exercise the Licensed Rights, including&lt;br /&gt;
		   technical modifications necessary to circumvent Effective&lt;br /&gt;
		   Technological Measures. For purposes of this Public License,&lt;br /&gt;
		   simply making modifications authorized by this Section 2(a)&lt;br /&gt;
		   (4) never produces Adapted Material.&lt;br /&gt;
 .&lt;br /&gt;
		5. Downstream recipients.&lt;br /&gt;
 .&lt;br /&gt;
			 a. Offer from the Licensor -- Licensed Material. Every&lt;br /&gt;
				recipient of the Licensed Material automatically&lt;br /&gt;
				receives an offer from the Licensor to exercise the&lt;br /&gt;
				Licensed Rights under the terms and conditions of this&lt;br /&gt;
				Public License.&lt;br /&gt;
 .&lt;br /&gt;
			 b. Additional offer from the Licensor -- Adapted Material.&lt;br /&gt;
				Every recipient of Adapted Material from You&lt;br /&gt;
				automatically receives an offer from the Licensor to&lt;br /&gt;
				exercise the Licensed Rights in the Adapted Material&lt;br /&gt;
				under the conditions of the Adapter&#039;s License You apply.&lt;br /&gt;
 .&lt;br /&gt;
			 c. No downstream restrictions. You may not offer or impose&lt;br /&gt;
				any additional or different terms or conditions on, or&lt;br /&gt;
				apply any Effective Technological Measures to, the&lt;br /&gt;
				Licensed Material if doing so restricts exercise of the&lt;br /&gt;
				Licensed Rights by any recipient of the Licensed&lt;br /&gt;
				Material.&lt;br /&gt;
 .&lt;br /&gt;
		6. No endorsement. Nothing in this Public License constitutes or&lt;br /&gt;
		   may be construed as permission to assert or imply that You&lt;br /&gt;
		   are, or that Your use of the Licensed Material is, connected&lt;br /&gt;
		   with, or sponsored, endorsed, or granted official status by,&lt;br /&gt;
		   the Licensor or others designated to receive attribution as&lt;br /&gt;
		   provided in Section 3(a)(1)(A)(i).&lt;br /&gt;
 .&lt;br /&gt;
   b. Other rights.&lt;br /&gt;
 .&lt;br /&gt;
		1. Moral rights, such as the right of integrity, are not&lt;br /&gt;
		   licensed under this Public License, nor are publicity,&lt;br /&gt;
		   privacy, and/or other similar personality rights; however, to&lt;br /&gt;
		   the extent possible, the Licensor waives and/or agrees not to&lt;br /&gt;
		   assert any such rights held by the Licensor to the limited&lt;br /&gt;
		   extent necessary to allow You to exercise the Licensed&lt;br /&gt;
		   Rights, but not otherwise.&lt;br /&gt;
 .&lt;br /&gt;
		2. Patent and trademark rights are not licensed under this&lt;br /&gt;
		   Public License.&lt;br /&gt;
 .&lt;br /&gt;
		3. To the extent possible, the Licensor waives any right to&lt;br /&gt;
		   collect royalties from You for the exercise of the Licensed&lt;br /&gt;
		   Rights, whether directly or through a collecting society&lt;br /&gt;
		   under any voluntary or waivable statutory or compulsory&lt;br /&gt;
		   licensing scheme. In all other cases the Licensor expressly&lt;br /&gt;
		   reserves any right to collect such royalties.&lt;br /&gt;
 .&lt;br /&gt;
 .&lt;br /&gt;
 Section 3 -- License Conditions.&lt;br /&gt;
 .&lt;br /&gt;
 Your exercise of the Licensed Rights is expressly made subject to the&lt;br /&gt;
 following conditions.&lt;br /&gt;
 .&lt;br /&gt;
   a. Attribution.&lt;br /&gt;
 .&lt;br /&gt;
		1. If You Share the Licensed Material (including in modified&lt;br /&gt;
		   form), You must:&lt;br /&gt;
 .&lt;br /&gt;
			 a. retain the following if it is supplied by the Licensor&lt;br /&gt;
				with the Licensed Material:&lt;br /&gt;
 .&lt;br /&gt;
				  i. identification of the creator(s) of the Licensed&lt;br /&gt;
					 Material and any others designated to receive&lt;br /&gt;
					 attribution, in any reasonable manner requested by&lt;br /&gt;
					 the Licensor (including by pseudonym if&lt;br /&gt;
					 designated);&lt;br /&gt;
 .&lt;br /&gt;
				 ii. a copyright notice;&lt;br /&gt;
 .&lt;br /&gt;
				iii. a notice that refers to this Public License;&lt;br /&gt;
 .&lt;br /&gt;
				 iv. a notice that refers to the disclaimer of&lt;br /&gt;
					 warranties;&lt;br /&gt;
 .&lt;br /&gt;
				  v. a URI or hyperlink to the Licensed Material to the&lt;br /&gt;
					 extent reasonably practicable;&lt;br /&gt;
 .&lt;br /&gt;
			 b. indicate if You modified the Licensed Material and&lt;br /&gt;
				retain an indication of any previous modifications; and&lt;br /&gt;
 .&lt;br /&gt;
			 c. indicate the Licensed Material is licensed under this&lt;br /&gt;
				Public License, and include the text of, or the URI or&lt;br /&gt;
				hyperlink to, this Public License.&lt;br /&gt;
 .&lt;br /&gt;
		2. You may satisfy the conditions in Section 3(a)(1) in any&lt;br /&gt;
		   reasonable manner based on the medium, means, and context in&lt;br /&gt;
		   which You Share the Licensed Material. For example, it may be&lt;br /&gt;
		   reasonable to satisfy the conditions by providing a URI or&lt;br /&gt;
		   hyperlink to a resource that includes the required&lt;br /&gt;
		   information.&lt;br /&gt;
 .&lt;br /&gt;
		3. If requested by the Licensor, You must remove any of the&lt;br /&gt;
		   information required by Section 3(a)(1)(A) to the extent&lt;br /&gt;
		   reasonably practicable.&lt;br /&gt;
 .&lt;br /&gt;
   b. ShareAlike.&lt;br /&gt;
 .&lt;br /&gt;
	  In addition to the conditions in Section 3(a), if You Share&lt;br /&gt;
	  Adapted Material You produce, the following conditions also apply.&lt;br /&gt;
 .&lt;br /&gt;
		1. The Adapter&#039;s License You apply must be a Creative Commons&lt;br /&gt;
		   license with the same License Elements, this version or&lt;br /&gt;
		   later, or a BY-SA Compatible License.&lt;br /&gt;
 .&lt;br /&gt;
		2. You must include the text of, or the URI or hyperlink to, the&lt;br /&gt;
		   Adapter&#039;s License You apply. You may satisfy this condition&lt;br /&gt;
		   in any reasonable manner based on the medium, means, and&lt;br /&gt;
		   context in which You Share Adapted Material.&lt;br /&gt;
 .&lt;br /&gt;
		3. You may not offer or impose any additional or different terms&lt;br /&gt;
		   or conditions on, or apply any Effective Technological&lt;br /&gt;
		   Measures to, Adapted Material that restrict exercise of the&lt;br /&gt;
		   rights granted under the Adapter&#039;s License You apply.&lt;br /&gt;
 .&lt;br /&gt;
 .&lt;br /&gt;
 Section 4 -- Sui Generis Database Rights.&lt;br /&gt;
 .&lt;br /&gt;
 Where the Licensed Rights include Sui Generis Database Rights that&lt;br /&gt;
 apply to Your use of the Licensed Material:&lt;br /&gt;
 .&lt;br /&gt;
   a. for the avoidance of doubt, Section 2(a)(1) grants You the right&lt;br /&gt;
	  to extract, reuse, reproduce, and Share all or a substantial&lt;br /&gt;
	  portion of the contents of the database;&lt;br /&gt;
 .&lt;br /&gt;
   b. if You include all or a substantial portion of the database&lt;br /&gt;
	  contents in a database in which You have Sui Generis Database&lt;br /&gt;
	  Rights, then the database in which You have Sui Generis Database&lt;br /&gt;
	  Rights (but not its individual contents) is Adapted Material,&lt;br /&gt;
 .&lt;br /&gt;
	  including for purposes of Section 3(b); and&lt;br /&gt;
   c. You must comply with the conditions in Section 3(a) if You Share&lt;br /&gt;
	  all or a substantial portion of the contents of the database.&lt;br /&gt;
 .&lt;br /&gt;
 For the avoidance of doubt, this Section 4 supplements and does not&lt;br /&gt;
 replace Your obligations under this Public License where the Licensed&lt;br /&gt;
 Rights include other Copyright and Similar Rights.&lt;br /&gt;
 .&lt;br /&gt;
 .&lt;br /&gt;
 Section 5 -- Disclaimer of Warranties and Limitation of Liability.&lt;br /&gt;
 .&lt;br /&gt;
   a. UNLESS OTHERWISE SEPARATELY UNDERTAKEN BY THE LICENSOR, TO THE&lt;br /&gt;
	  EXTENT POSSIBLE, THE LICENSOR OFFERS THE LICENSED MATERIAL AS-IS&lt;br /&gt;
	  AND AS-AVAILABLE, AND MAKES NO REPRESENTATIONS OR WARRANTIES OF&lt;br /&gt;
	  ANY KIND CONCERNING THE LICENSED MATERIAL, WHETHER EXPRESS,&lt;br /&gt;
	  IMPLIED, STATUTORY, OR OTHER. THIS INCLUDES, WITHOUT LIMITATION,&lt;br /&gt;
	  WARRANTIES OF TITLE, MERCHANTABILITY, FITNESS FOR A PARTICULAR&lt;br /&gt;
	  PURPOSE, NON-INFRINGEMENT, ABSENCE OF LATENT OR OTHER DEFECTS,&lt;br /&gt;
	  ACCURACY, OR THE PRESENCE OR ABSENCE OF ERRORS, WHETHER OR NOT&lt;br /&gt;
	  KNOWN OR DISCOVERABLE. WHERE DISCLAIMERS OF WARRANTIES ARE NOT&lt;br /&gt;
	  ALLOWED IN FULL OR IN PART, THIS DISCLAIMER MAY NOT APPLY TO YOU.&lt;br /&gt;
 .&lt;br /&gt;
   b. TO THE EXTENT POSSIBLE, IN NO EVENT WILL THE LICENSOR BE LIABLE&lt;br /&gt;
	  TO YOU ON ANY LEGAL THEORY (INCLUDING, WITHOUT LIMITATION,&lt;br /&gt;
	  NEGLIGENCE) OR OTHERWISE FOR ANY DIRECT, SPECIAL, INDIRECT,&lt;br /&gt;
	  INCIDENTAL, CONSEQUENTIAL, PUNITIVE, EXEMPLARY, OR OTHER LOSSES,&lt;br /&gt;
	  COSTS, EXPENSES, OR DAMAGES ARISING OUT OF THIS PUBLIC LICENSE OR&lt;br /&gt;
	  USE OF THE LICENSED MATERIAL, EVEN IF THE LICENSOR HAS BEEN&lt;br /&gt;
	  ADVISED OF THE POSSIBILITY OF SUCH LOSSES, COSTS, EXPENSES, OR&lt;br /&gt;
	  DAMAGES. WHERE A LIMITATION OF LIABILITY IS NOT ALLOWED IN FULL OR&lt;br /&gt;
	  IN PART, THIS LIMITATION MAY NOT APPLY TO YOU.&lt;br /&gt;
 .&lt;br /&gt;
   c. The disclaimer of warranties and limitation of liability provided&lt;br /&gt;
	  above shall be interpreted in a manner that, to the extent&lt;br /&gt;
	  possible, most closely approximates an absolute disclaimer and&lt;br /&gt;
	  waiver of all liability.&lt;br /&gt;
 .&lt;br /&gt;
 .&lt;br /&gt;
 Section 6 -- Term and Termination.&lt;br /&gt;
 .&lt;br /&gt;
   a. This Public License applies for the term of the Copyright and&lt;br /&gt;
	  Similar Rights licensed here. However, if You fail to comply with&lt;br /&gt;
	  this Public License, then Your rights under this Public License&lt;br /&gt;
	  terminate automatically.&lt;br /&gt;
 .&lt;br /&gt;
   b. Where Your right to use the Licensed Material has terminated under&lt;br /&gt;
	  Section 6(a), it reinstates:&lt;br /&gt;
 .&lt;br /&gt;
		1. automatically as of the date the violation is cured, provided&lt;br /&gt;
		   it is cured within 30 days of Your discovery of the&lt;br /&gt;
		   violation; or&lt;br /&gt;
 .&lt;br /&gt;
		2. upon express reinstatement by the Licensor.&lt;br /&gt;
 .&lt;br /&gt;
	  For the avoidance of doubt, this Section 6(b) does not affect any&lt;br /&gt;
	  right the Licensor may have to seek remedies for Your violations&lt;br /&gt;
	  of this Public License.&lt;br /&gt;
 .&lt;br /&gt;
   c. For the avoidance of doubt, the Licensor may also offer the&lt;br /&gt;
	  Licensed Material under separate terms or conditions or stop&lt;br /&gt;
	  distributing the Licensed Material at any time; however, doing so&lt;br /&gt;
	  will not terminate this Public License.&lt;br /&gt;
 .&lt;br /&gt;
   d. Sections 1, 5, 6, 7, and 8 survive termination of this Public&lt;br /&gt;
	  License.&lt;br /&gt;
 .&lt;br /&gt;
 .&lt;br /&gt;
 Section 7 -- Other Terms and Conditions.&lt;br /&gt;
 .&lt;br /&gt;
   a. The Licensor shall not be bound by any additional or different&lt;br /&gt;
	  terms or conditions communicated by You unless expressly agreed.&lt;br /&gt;
 .&lt;br /&gt;
   b. Any arrangements, understandings, or agreements regarding the&lt;br /&gt;
	  Licensed Material not stated herein are separate from and&lt;br /&gt;
	  independent of the terms and conditions of this Public License.&lt;br /&gt;
 .&lt;br /&gt;
 .&lt;br /&gt;
 Section 8 -- Interpretation.&lt;br /&gt;
 .&lt;br /&gt;
   a. For the avoidance of doubt, this Public License does not, and&lt;br /&gt;
	  shall not be interpreted to, reduce, limit, restrict, or impose&lt;br /&gt;
	  conditions on any use of the Licensed Material that could lawfully&lt;br /&gt;
	  be made without permission under this Public License.&lt;br /&gt;
 .&lt;br /&gt;
   b. To the extent possible, if any provision of this Public License is&lt;br /&gt;
	  deemed unenforceable, it shall be automatically reformed to the&lt;br /&gt;
	  minimum extent necessary to make it enforceable. If the provision&lt;br /&gt;
	  cannot be reformed, it shall be severed from this Public License&lt;br /&gt;
	  without affecting the enforceability of the remaining terms and&lt;br /&gt;
	  conditions.&lt;br /&gt;
 .&lt;br /&gt;
   c. No term or condition of this Public License will be waived and no&lt;br /&gt;
	  failure to comply consented to unless expressly agreed to by the&lt;br /&gt;
	  Licensor.&lt;br /&gt;
 .&lt;br /&gt;
   d. Nothing in this Public License constitutes or may be interpreted&lt;br /&gt;
	  as a limitation upon, or waiver of, any privileges and immunities&lt;br /&gt;
	  that apply to the Licensor or You, including from the legal&lt;br /&gt;
	  processes of any jurisdiction or authority.&lt;br /&gt;
 .&lt;br /&gt;
 .&lt;br /&gt;
 =======================================================================&lt;br /&gt;
 .&lt;br /&gt;
 Creative Commons is not a party to its public&lt;br /&gt;
 licenses. Notwithstanding, Creative Commons may elect to apply one of&lt;br /&gt;
 its public licenses to material it publishes and in those instances&lt;br /&gt;
 will be considered the “Licensor.” The text of the Creative Commons&lt;br /&gt;
 public licenses is dedicated to the public domain under the CC0 Public&lt;br /&gt;
 Domain Dedication. Except for the limited purpose of indicating that&lt;br /&gt;
 material is shared under a Creative Commons public license or as&lt;br /&gt;
 otherwise permitted by the Creative Commons policies published at&lt;br /&gt;
 creativecommons.org/policies, Creative Commons does not authorize the&lt;br /&gt;
 use of the trademark &amp;quot;Creative Commons&amp;quot; or any other trademark or logo&lt;br /&gt;
 of Creative Commons without its prior written consent including,&lt;br /&gt;
 without limitation, in connection with any unauthorized modifications&lt;br /&gt;
 to any of its public licenses or any other arrangements,&lt;br /&gt;
 understandings, or agreements concerning use of licensed material. For&lt;br /&gt;
 the avoidance of doubt, this paragraph does not form part of the&lt;br /&gt;
 public licenses.&lt;br /&gt;
 .&lt;br /&gt;
 Creative Commons may be contacted at creativecommons.org.&lt;br /&gt;
&lt;br /&gt;
License: GPL-3+&lt;br /&gt;
 This package is free software; you can redistribute it and/or modify&lt;br /&gt;
 it under the terms of the GNU General Public License as published by&lt;br /&gt;
 the Free Software Foundation; either version 3 of the License, or&lt;br /&gt;
 (at your option) any later version.&lt;br /&gt;
 .&lt;br /&gt;
 This package is distributed in the hope that it will be useful,&lt;br /&gt;
 but WITHOUT ANY WARRANTY; without even the implied warranty of&lt;br /&gt;
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the&lt;br /&gt;
 GNU General Public License for more details.&lt;br /&gt;
 .&lt;br /&gt;
 You should have received a copy of the GNU General Public License&lt;br /&gt;
 along with this program. If not, see &amp;lt;https://www.gnu.org/licenses/&amp;gt;&lt;br /&gt;
 .&lt;br /&gt;
 On Debian systems, the complete text of the GNU General&lt;br /&gt;
 Public License version 3 can be found in &amp;quot;/usr/share/common-licenses/GPL-3&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
License: LGPL-2.1+&lt;br /&gt;
 This library is free software; you can redistribute it and/or&lt;br /&gt;
 modify it under the terms of the GNU Lesser General Public&lt;br /&gt;
 License as published by the Free Software Foundation; either&lt;br /&gt;
 version 2.1 of the License, or (at your option) any later version.&lt;br /&gt;
 .&lt;br /&gt;
 This library is distributed in the hope that it will be useful,&lt;br /&gt;
 but WITHOUT ANY WARRANTY; without even the implied warranty of&lt;br /&gt;
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU&lt;br /&gt;
 Lesser General Public License for more details.&lt;br /&gt;
 .&lt;br /&gt;
 You should have received a copy of the GNU Lesser General Public License&lt;br /&gt;
 along with this library. If not, see &amp;lt;https://www.gnu.org/licenses/&amp;gt;&lt;br /&gt;
 .&lt;br /&gt;
 On Debian systems, the complete text of the GNU Lesser General&lt;br /&gt;
 Public License version 3 can be found in &amp;quot;/usr/share/common-licenses/LGPL-2.1&amp;quot;.&lt;br /&gt;
user@disp4360:/usr/share/doc$ &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## that&#039;s a big annoying, but I guess we can live with it&lt;br /&gt;
## they also apparently put a dot (.) on every double-newline in a single indented stanza. I guess that&#039;s to not break the syntax of &amp;quot;two newlines becomes a new stanaza&amp;quot;. So I&#039;ll adopt that for the CERN License snippet.&lt;br /&gt;
## I grepd all the &amp;quot;Files&amp;quot; lines in all the systems, and generated a reasonably complete list of all programming language source files&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Files:&lt;br /&gt;
 *.c *.cpp *.h *.hpp&lt;br /&gt;
 *.py *.pl *.go&lt;br /&gt;
 *.dtd&lt;br /&gt;
 *.html *.css *.js *.xml&lt;br /&gt;
Copyright:&lt;br /&gt;
 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
License: AGPL-3.0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## .dtd came up a few times. something related to gis, I think. I added a few more gis formats&lt;br /&gt;
## per https://docs.qgis.org/3.44/en/docs/user_manual/managing_data_source/supported_data.html&lt;br /&gt;
## and https://gis.stackexchange.com/questions/392708/list-of-data-file-formats-supported-in-qgis-including-read-write-support&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Files:&lt;br /&gt;
 *.c *.cpp *.h *.hpp&lt;br /&gt;
 *.py *.pl *.go&lt;br /&gt;
 *.qix *.dtd *.shp *.shz *.dbf *.shx *.prj *.kml&lt;br /&gt;
 *.html *.css *.js *.xml&lt;br /&gt;
Copyright:&lt;br /&gt;
 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
License: AGPL-3.0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## Another thing I can do is to check some syntax highlighers, which have some logic to auto-detect code syntax based on filename. That would be a great list of code-specific filenames&lt;br /&gt;
### here&#039;s the one we use as a wordpress plugin for eco-libre.org https://wordpress.org/plugins/syntaxhighlighter/&lt;br /&gt;
### code is here https://github.com/Automattic/syntaxhighlighter&lt;br /&gt;
### here&#039;s the block where they map languages to file extensions https://github.com/Automattic/syntaxhighlighter/blob/61fd26c64d019641db143e90e05b0eb9a4a57d62/syntaxhighlighter.php#L181-L246&lt;br /&gt;
### oh crap, those are aliases, not file extensions. maybe I should check something like notepad++ or vim&lt;br /&gt;
### we can get 694 file types from vim with this crazy command https://vi.stackexchange.com/a/14980&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
user@disp4360:/usr/share/vim/vim90$ find syntax ftplugin -iname &#039;*.vim&#039; -exec basename -s .vim {} + | sort -u | wc -l&lt;br /&gt;
694&lt;br /&gt;
user@disp4360:/usr/share/vim/vim90$ &lt;br /&gt;
&lt;br /&gt;
user@disp4360:/usr/share/vim/vim90$ find syntax ftplugin -iname &#039;*.vim&#039; -exec basename -s .vim {} + | sort -u | xargs&lt;br /&gt;
2html 8th a2ps a65 aap abap abaqus abc abel acedb ada aflex ahdl aidl alsaconf amiga aml ampl ant antlr apache apachestyle aptconf arch arduino art asciidoc asm asm68k asmh8300 asn aspperl aspvbs asterisk asteriskvm atlas autodoc autohotkey autoit automake ave avra awk ayacc b baan bash basic bc bdf bib bindzone bitbake blank bsdl bst btm bzl bzr c cabal cabalconfig cabalproject calendar catalog cdl cdrdaoconf cdrtoc cf cfg ch chaiscript change changelog chaskell chatito cheetah chicken chill chordpro cl clean clipper clojure cmake cmod cmusrc cobol coco colortest conaryrecipe conf config confini context context-data-context context-data-interfaces context-data-metafun context-data-tex cpp crm crontab cs csc csdl csh csp css cterm ctrlh cucumber cuda cupl cuplsim cvs cvsrc cweb cynlib cynpp d dart datascript dcd dcl debchangelog debcontrol debcopyright debsources def denyhosts dep3patch desc desktop dictconf dictdconf diff dircolors dirpager diva django dns dnsmasq docbk docbksgml docbkxml dockerfile dosbatch dosini dot doxygen dracula dsl dtd dtml dtrace dts dune dylan dylanintr dylanlid ecd edif editorconfig eiffel elf elinks elixir elm elmfilt erlang eruby esmtprc esqlc esterel eterm euphoria3 euphoria4 eviews exim expect exports falcon fan fasm fdcc fennel fetchmail fgl fish flexwiki focexec form forth fortran foxpro fpcmake framescript freebasic fstab fvwm fvwm2m4 gdb gdmo gdresource gdscript gdshader gedcom gemtext gift git gitattributes gitcommit gitconfig gitignore gitolite gitrebase gitsendemail gkrellmrc gnash gnuplot go godoc gp gpg gprof grads gretl groff groovy group grub gsp gtkrc gvpr gyp haml hamster hare haskell haste hastepreproc hb heex help help_ru hercules hex hgcommit hgcommitDiff hitest hlsplaylist hog hollywood hostconf hostsaccess html htmlcheetah htmldjango htmlm4 htmlos i3config ia64 ibasic icemenu icon idl idlang indent inform initex initng inittab ipfilter ishd iss ist j jal jam jargon java javacc javascript javascriptreact jess jgraph jovial jproperties json jsonc jsonnet jsp julia kconfig kivy kix krl kscript kwt lace latte lc ld ldapconf ldif less lex lftp lhaskell libao lifelines lilo limits liquid lisp lite litestep logcheck loginaccess logindefs logtalk lotos lout lpc lprolog lscript lsl lss lua lynx lyrics m3build m3quake m4 mail mailaliases mailcap make mallard man manconf manual maple markdown masm mason master matlab maxima mel mermaid meson messages mf mgl mgp mib mix mma mmix mmp modconf model modsim3 modula2 modula3 monk moo mp mplayerconf mrxvtrc msidl msmessages msql mupad murphi mush muttrc mysql n1ql named nanorc nasm nastran natural ncf neomuttrc netrc netrw nginx ninja nix nosyntax nqc nroff nsis obj objc objcpp obse ocaml occam octave omnimark opam openroad openscad openvpn opl ora pamconf pamenv papp pascal passwd pbtxt pcap pccts pdf perl pf pfmain php phtml pic pike pilrc pine pinfo plaintex pli plm plp plsql po pod poefilter poke postscr pov povini ppd ppwiz prescribe privoxy procmail progress prolog promela proto protocols ps1 ps1xml psf psl ptcap purifylog pyrex python python2 qb64 qf quake quarto r racc racket radiance raku raml ratpoison rc rcs rcslog readline rebol redif registry rego remind resolv reva rexx rhelp rib rmd rnc rng rnoweb robots routeros rpcgen rpl rrst rst rtf ruby rust samba sas sass sather sbt scala scdoc scheme scilab screen scss sd sdc sdl sed sendpr sensors services setserial sexplib sgml sgmldecl sgmllnx sh sicad sieve sil simula sinda sindacmp sindaout sisu skill sl slang slice slpconf slpreg slpspi slrnrc slrnsc sm smarty smcl smil smith sml snnsnet snnspat snnsres snobol4 solidity solution spec specman spice splint spup spyce sql sqlanywhere sqlforms sqlhana sqlinformix sqlj sqloracle sqr squid squirrel srec srt ssa sshconfig sshdconfig st stata stp strace structurizr sudoers svg svn swayconfig swift swiftgyb syncolor synload syntax sysctl systemd systemverilog tads tags tak takcmp takout tap tar taskdata taskedit tasm tcl tcsh template teraterm terminfo tex texinfo texmf text tf tidy tilde tli tmux toml tpp trasys treetop trustees tsalt tsscl tssgm tssop tt2 tt2html tt2js typescript typescriptcommon typescriptreact uc udevconf udevperm udevrules uil updatedb upstart upstreamdat upstreaminstalllog upstreamlog upstreamrpt usserverlog usw2kagtlog valgrind vb vdf vera verilog verilogams vgrindefs vhdl vim viminfo virata vmasm voscm vrml vroom vsejcl vue wast wdiff wdl web webmacro wget wget2 whitespace winbatch wml wsh wsml wvdial xbl xdefaults xf86conf xhtml xinetd xkb xmath xml xmodmap xpm xpm2 xquery xs xsd xslt xxd yacc yaml z8a zig zimbu zir zsh&lt;br /&gt;
user@disp4360:/usr/share/vim/vim90$ &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
### so I definitely don&#039;t want all of those. for example, .po files are not code.&lt;br /&gt;
## I decided to remove html and css from the list, as those are markup and not code. but js should remain.&lt;br /&gt;
## I reduced the vim list to the following&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
user@disp4360:~$ cat filetypes1.txt &lt;br /&gt;
autohotkey&lt;br /&gt;
automake&lt;br /&gt;
awk&lt;br /&gt;
bash&lt;br /&gt;
basic&lt;br /&gt;
cmake&lt;br /&gt;
cuda&lt;br /&gt;
d&lt;br /&gt;
erlang&lt;br /&gt;
eruby&lt;br /&gt;
haskell&lt;br /&gt;
j&lt;br /&gt;
java&lt;br /&gt;
javacc&lt;br /&gt;
javascript&lt;br /&gt;
javascriptreact&lt;br /&gt;
kivy&lt;br /&gt;
lisp&lt;br /&gt;
lua&lt;br /&gt;
make&lt;br /&gt;
perl&lt;br /&gt;
r&lt;br /&gt;
ruby&lt;br /&gt;
rust&lt;br /&gt;
sh&lt;br /&gt;
swift&lt;br /&gt;
tcl&lt;br /&gt;
typescript&lt;br /&gt;
vb&lt;br /&gt;
zsh&lt;br /&gt;
user@disp4360:~$ &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## fun fact, autohotkey was the first &amp;quot;language&amp;quot; I learned – which I used to script my windows computer to feed my fish and collect their pooped-out gold in some video game, wayy back when I was  kid &amp;amp; before I used Linux. It&#039;s a cool way to automate GUI macros on Windows (which is otherwise a PIA to automate, by (terrible) design.&lt;br /&gt;
## I merged this into our copyright file.  I also added asp.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Files:&lt;br /&gt;
 *.c *.cpp *.h *.hpp *.make *.automake *.cmake&lt;br /&gt;
 *.java *.javacc *.rust&lt;br /&gt;
 *.d *.j *.r&lt;br /&gt;
 *.sh *.bash *.zsh *.awk *.tcl&lt;br /&gt;
 *.py *.python *.python2 *.python3 *.pl *.perl *.kivy&lt;br /&gt;
 *.qix *.dtd *.shp *.shz *.dbf *.shx *.prj *.kml&lt;br /&gt;
 *.php *.js *.javascript *.typescript&lt;br /&gt;
 *.ruby *.eruby *.cuda *.erlang *.lisp *.lua *.haskell *.go&lt;br /&gt;
 *.autohotkey *.basic *.swift *.vb *.asp&lt;br /&gt;
Copyright:&lt;br /&gt;
 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
License: AGPL-3.0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## let&#039;s also add exceptions for the CERN-licensed files&lt;br /&gt;
## I hope we never use tools like AutoCAD, but it&#039;s likely that someone will design something in AutoCAD and copyleft it. Then we&#039;ll be able to use that in one of our projects, but where we redesign it in FreeCAD. In that case, we still might want to include the source AutoCAD DXF file in our repo, and license it properly (though, if that happens, we&#039;d probably need to update the copyright file to whatever license they use; unless they happen to use the same CERN strong license as us)&lt;br /&gt;
## I added scad. And .vue was one from vim.&lt;br /&gt;
## bibliocad lists wg, bim, skp, max, and 3ds https://www.bibliocad.com/&lt;br /&gt;
## I logged into the OSE wiki and checked all of the files that have been uploaded, and I added a few more: 3dm, fcmacro, ino, fzz, gto, blend, kicad_pcb, sh3d, pod, brd, sch, abp, dwb, cc, skb, sldrw, sldasm, pde&lt;br /&gt;
## note that I&#039;ve *not* put stp, gcode, stl, igs, wrl, wrz, etc files as CERN licensed (so they&#039;d be CC). I&#039;m not sure if that&#039;s the right thing or not.&lt;br /&gt;
### also dia, gan, mpp, mm, svg, jpg, png, jpeg, tiff, bmp, ai, idml, psd, mp4, mp3, webm, wav, kdenlive, xcf, doc, docx, ppt, pptx, xls, odt, ods, odg, numbers, tex, zip, rar, 7z, tar.gz, torrent, etc..&lt;br /&gt;
### there was also some ini config files. I read you can&#039;t license config files. so those will be CC.&lt;br /&gt;
# ok, here&#039;s what I got&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/&lt;br /&gt;
Source: https://github.com/Eco-Libre/life-line&lt;br /&gt;
Upstream-Name: Eco-Libre Life-Line&lt;br /&gt;
Upstream-Contact: https://eco-libre.org/contact&lt;br /&gt;
&lt;br /&gt;
Files:&lt;br /&gt;
 *&lt;br /&gt;
Copyright:&lt;br /&gt;
 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
License: CC-BY-SA-4.0&lt;br /&gt;
&lt;br /&gt;
Files:&lt;br /&gt;
 *.FCStd *.scad *.fzz *.blend *.kicad_pcb *.sh3d&lt;br /&gt;
 *.vue *.dxf *.dwg *.bim *.skp *.skb *.max *.3ds *.gto *.pod *.brd&lt;br /&gt;
 *.sch *.3dm *.dwb *.slddrw *.sldasm&lt;br /&gt;
Copyright:&lt;br /&gt;
 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
License: CERN-OHL-S-2.0&lt;br /&gt;
&lt;br /&gt;
Files:&lt;br /&gt;
 *.c *.cpp *.h *.hpp *.cc *.ino *.pde *.make *.automake *.cmake&lt;br /&gt;
 *.java *.javacc *.rust&lt;br /&gt;
 *.d *.j *.r&lt;br /&gt;
 *.sh *.bash *.zsh *.awk *.tcl&lt;br /&gt;
 *.py *.python *.python2 *.python3 *.FCMacro *.pl *.perl *.kivy&lt;br /&gt;
 *.qix *.dtd *.shp *.shz *.dbf *.shx *.prj *.kml&lt;br /&gt;
 *.php *.js *.javascript *.typescript&lt;br /&gt;
 *.ruby *.eruby *.cuda *.erlang *.lisp *.lua *.haskell *.go&lt;br /&gt;
 *.autohotkey *.basic *.swift *.vb *.asp&lt;br /&gt;
Copyright:&lt;br /&gt;
 2023 Michael Altfield &amp;lt;https://email.michaelaltfield.net&amp;gt;&lt;br /&gt;
 2023 Eco-Libre &amp;lt;https://eco-libre.org/contact&amp;gt;&lt;br /&gt;
License: AGPL-3.0&lt;br /&gt;
&lt;br /&gt;
License: AGPL-3.0&lt;br /&gt;
 https://www.gnu.org/licenses/agpl-3.0.html&lt;br /&gt;
 .&lt;br /&gt;
 This program is free software: you can redistribute it and/or modify&lt;br /&gt;
 it under the terms of the GNU Affero General Public License as&lt;br /&gt;
 published by the Free Software Foundation, version 3&lt;br /&gt;
 .&lt;br /&gt;
 This program is distributed in the hope that it will be useful,&lt;br /&gt;
 but WITHOUT ANY WARRANTY; without even the implied warranty of&lt;br /&gt;
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the&lt;br /&gt;
 GNU Affero General Public License for more details.&lt;br /&gt;
 .&lt;br /&gt;
 You should have received a copy of the GNU Affero General Public License&lt;br /&gt;
 along with this program.  If not, see &amp;lt;https://www.gnu.org/licenses/&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
License: CERN-OHL-S-2.0&lt;br /&gt;
 https://ohwr.org/cern_ohl_s_v2.txt&lt;br /&gt;
 .&lt;br /&gt;
 You may redistribute and modify this source and make products using &lt;br /&gt;
 it under the terms of the CERN-OHL-S v2 &lt;br /&gt;
 (https://ohwr.org/cern_ohl_s_v2.txt).&lt;br /&gt;
 .&lt;br /&gt;
 This source is distributed WITHOUT ANY EXPRESS OR IMPLIED WARRANTY, &lt;br /&gt;
 INCLUDING OF MERCHANTABILITY, SATISFACTORY QUALITY AND FITNESS FOR A &lt;br /&gt;
 PARTICULAR PURPOSE. Please see the CERN-OHL-S v2 for applicable &lt;br /&gt;
 conditions.&lt;br /&gt;
 .&lt;br /&gt;
 Source location: eco-libre.org/p/&lt;br /&gt;
 .&lt;br /&gt;
 As per CERN-OHL-S v2 section 4, should You produce hardware based on &lt;br /&gt;
 this source, You must where practicable and applicable maintain the &lt;br /&gt;
 Source Location visible (1) on the packaging of the hardware, (2) on &lt;br /&gt;
 the circuit board(s) via silkscreen or copper, (3) in any &lt;br /&gt;
 documentation, and (4) on other products you make using this source.&lt;br /&gt;
&lt;br /&gt;
License: CC-BY-SA-4.0&lt;br /&gt;
 http://creativecommons.org/licenses/by-sa/4.0/&lt;br /&gt;
 .&lt;br /&gt;
 Attribution-ShareAlike 4.0 International&lt;br /&gt;
 .&lt;br /&gt;
 =======================================================================&lt;br /&gt;
 .&lt;br /&gt;
 Creative Commons Corporation (&amp;quot;Creative Commons&amp;quot;) is not a law firm and&lt;br /&gt;
 does not provide legal services or legal advice. Distribution of&lt;br /&gt;
 Creative Commons public licenses does not create a lawyer-client or&lt;br /&gt;
 other relationship. Creative Commons makes its licenses and related&lt;br /&gt;
 information available on an &amp;quot;as-is&amp;quot; basis. Creative Commons gives no&lt;br /&gt;
 warranties regarding its licenses, any material licensed under their&lt;br /&gt;
 terms and conditions, or any related information. Creative Commons&lt;br /&gt;
 disclaims all liability for damages resulting from their use to the&lt;br /&gt;
 fullest extent possible.&lt;br /&gt;
 .&lt;br /&gt;
 Using Creative Commons Public Licenses&lt;br /&gt;
 .&lt;br /&gt;
 Creative Commons public licenses provide a standard set of terms and&lt;br /&gt;
 conditions that creators and other rights holders may use to share&lt;br /&gt;
 original works of authorship and other material subject to copyright&lt;br /&gt;
 and certain other rights specified in the public license below. The&lt;br /&gt;
 following considerations are for informational purposes only, are not&lt;br /&gt;
 exhaustive, and do not form part of our licenses.&lt;br /&gt;
 .&lt;br /&gt;
	  Considerations for licensors: Our public licenses are&lt;br /&gt;
	  intended for use by those authorized to give the public&lt;br /&gt;
	  permission to use material in ways otherwise restricted by&lt;br /&gt;
	  copyright and certain other rights. Our licenses are&lt;br /&gt;
	  irrevocable. Licensors should read and understand the terms&lt;br /&gt;
	  and conditions of the license they choose before applying it.&lt;br /&gt;
	  Licensors should also secure all rights necessary before&lt;br /&gt;
	  applying our licenses so that the public can reuse the&lt;br /&gt;
	  material as expected. Licensors should clearly mark any&lt;br /&gt;
	  material not subject to the license. This includes other CC-&lt;br /&gt;
	  licensed material, or material used under an exception or&lt;br /&gt;
	  limitation to copyright. More considerations for licensors:&lt;br /&gt;
	  wiki.creativecommons.org/Considerations_for_licensors&lt;br /&gt;
 .&lt;br /&gt;
	  Considerations for the public: By using one of our public&lt;br /&gt;
	  licenses, a licensor grants the public permission to use the&lt;br /&gt;
	  licensed material under specified terms and conditions. If&lt;br /&gt;
	  the licensor&#039;s permission is not necessary for any reason--for&lt;br /&gt;
	  example, because of any applicable exception or limitation to&lt;br /&gt;
	  copyright--then that use is not regulated by the license. Our&lt;br /&gt;
	  licenses grant only permissions under copyright and certain&lt;br /&gt;
	  other rights that a licensor has authority to grant. Use of&lt;br /&gt;
	  the licensed material may still be restricted for other&lt;br /&gt;
	  reasons, including because others have copyright or other&lt;br /&gt;
	  rights in the material. A licensor may make special requests,&lt;br /&gt;
	  such as asking that all changes be marked or described.&lt;br /&gt;
	  Although not required by our licenses, you are encouraged to&lt;br /&gt;
	  respect those requests where reasonable. More_considerations&lt;br /&gt;
	  for the public:&lt;br /&gt;
	  wiki.creativecommons.org/Considerations_for_licensees&lt;br /&gt;
 .&lt;br /&gt;
 =======================================================================&lt;br /&gt;
 .&lt;br /&gt;
 Creative Commons Attribution-ShareAlike 4.0 International Public&lt;br /&gt;
 License&lt;br /&gt;
 .&lt;br /&gt;
 By exercising the Licensed Rights (defined below), You accept and agree&lt;br /&gt;
 to be bound by the terms and conditions of this Creative Commons&lt;br /&gt;
 Attribution-ShareAlike 4.0 International Public License (&amp;quot;Public&lt;br /&gt;
 License&amp;quot;). To the extent this Public License may be interpreted as a&lt;br /&gt;
 contract, You are granted the Licensed Rights in consideration of Your&lt;br /&gt;
 acceptance of these terms and conditions, and the Licensor grants You&lt;br /&gt;
 such rights in consideration of benefits the Licensor receives from&lt;br /&gt;
 making the Licensed Material available under these terms and&lt;br /&gt;
 conditions.&lt;br /&gt;
 .&lt;br /&gt;
 .&lt;br /&gt;
 Section 1 -- Definitions.&lt;br /&gt;
 .&lt;br /&gt;
   a. Adapted Material means material subject to Copyright and Similar&lt;br /&gt;
	  Rights that is derived from or based upon the Licensed Material&lt;br /&gt;
	  and in which the Licensed Material is translated, altered,&lt;br /&gt;
	  arranged, transformed, or otherwise modified in a manner requiring&lt;br /&gt;
	  permission under the Copyright and Similar Rights held by the&lt;br /&gt;
	  Licensor. For purposes of this Public License, where the Licensed&lt;br /&gt;
	  Material is a musical work, performance, or sound recording,&lt;br /&gt;
	  Adapted Material is always produced where the Licensed Material is&lt;br /&gt;
	  synched in timed relation with a moving image.&lt;br /&gt;
 .&lt;br /&gt;
   b. Adapter&#039;s License means the license You apply to Your Copyright&lt;br /&gt;
	  and Similar Rights in Your contributions to Adapted Material in&lt;br /&gt;
	  accordance with the terms and conditions of this Public License.&lt;br /&gt;
 .&lt;br /&gt;
   c. BY-SA Compatible License means a license listed at&lt;br /&gt;
	  creativecommons.org/compatiblelicenses, approved by Creative&lt;br /&gt;
	  Commons as essentially the equivalent of this Public License.&lt;br /&gt;
 .&lt;br /&gt;
   d. Copyright and Similar Rights means copyright and/or similar rights&lt;br /&gt;
	  closely related to copyright including, without limitation,&lt;br /&gt;
	  performance, broadcast, sound recording, and Sui Generis Database&lt;br /&gt;
	  Rights, without regard to how the rights are labeled or&lt;br /&gt;
	  categorized. For purposes of this Public License, the rights&lt;br /&gt;
	  specified in Section 2(b)(1)-(2) are not Copyright and Similar&lt;br /&gt;
	  Rights.&lt;br /&gt;
 .&lt;br /&gt;
   e. Effective Technological Measures means those measures that, in the&lt;br /&gt;
	  absence of proper authority, may not be circumvented under laws&lt;br /&gt;
	  fulfilling obligations under Article 11 of the WIPO Copyright&lt;br /&gt;
	  Treaty adopted on December 20, 1996, and/or similar international&lt;br /&gt;
	  agreements.&lt;br /&gt;
 .&lt;br /&gt;
   f. Exceptions and Limitations means fair use, fair dealing, and/or&lt;br /&gt;
	  any other exception or limitation to Copyright and Similar Rights&lt;br /&gt;
	  that applies to Your use of the Licensed Material.&lt;br /&gt;
 .&lt;br /&gt;
   g. License Elements means the license attributes listed in the name&lt;br /&gt;
	  of a Creative Commons Public License. The License Elements of this&lt;br /&gt;
	  Public License are Attribution and ShareAlike.&lt;br /&gt;
 .&lt;br /&gt;
   h. Licensed Material means the artistic or literary work, database,&lt;br /&gt;
	  or other material to which the Licensor applied this Public&lt;br /&gt;
	  License.&lt;br /&gt;
 .&lt;br /&gt;
   i. Licensed Rights means the rights granted to You subject to the&lt;br /&gt;
	  terms and conditions of this Public License, which are limited to&lt;br /&gt;
	  all Copyright and Similar Rights that apply to Your use of the&lt;br /&gt;
	  Licensed Material and that the Licensor has authority to license.&lt;br /&gt;
 .&lt;br /&gt;
   j. Licensor means the individual(s) or entity(ies) granting rights&lt;br /&gt;
	  under this Public License.&lt;br /&gt;
 .&lt;br /&gt;
   k. Share means to provide material to the public by any means or&lt;br /&gt;
	  process that requires permission under the Licensed Rights, such&lt;br /&gt;
	  as reproduction, public display, public performance, distribution,&lt;br /&gt;
	  dissemination, communication, or importation, and to make material&lt;br /&gt;
	  available to the public including in ways that members of the&lt;br /&gt;
	  public may access the material from a place and at a time&lt;br /&gt;
	  individually chosen by them.&lt;br /&gt;
 .&lt;br /&gt;
   l. Sui Generis Database Rights means rights other than copyright&lt;br /&gt;
	  resulting from Directive 96/9/EC of the European Parliament and of&lt;br /&gt;
	  the Council of 11 March 1996 on the legal protection of databases,&lt;br /&gt;
	  as amended and/or succeeded, as well as other essentially&lt;br /&gt;
	  equivalent rights anywhere in the world.&lt;br /&gt;
 .&lt;br /&gt;
   m. You means the individual or entity exercising the Licensed Rights&lt;br /&gt;
	  under this Public License. Your has a corresponding meaning.&lt;br /&gt;
 .&lt;br /&gt;
 .&lt;br /&gt;
 Section 2 -- Scope.&lt;br /&gt;
 .&lt;br /&gt;
   a. License grant.&lt;br /&gt;
 .&lt;br /&gt;
		1. Subject to the terms and conditions of this Public License,&lt;br /&gt;
		   the Licensor hereby grants You a worldwide, royalty-free,&lt;br /&gt;
		   non-sublicensable, non-exclusive, irrevocable license to&lt;br /&gt;
		   exercise the Licensed Rights in the Licensed Material to:&lt;br /&gt;
 .&lt;br /&gt;
			 a. reproduce and Share the Licensed Material, in whole or&lt;br /&gt;
				in part; and&lt;br /&gt;
 .&lt;br /&gt;
			 b. produce, reproduce, and Share Adapted Material.&lt;br /&gt;
 .&lt;br /&gt;
		2. Exceptions and Limitations. For the avoidance of doubt, where&lt;br /&gt;
		   Exceptions and Limitations apply to Your use, this Public&lt;br /&gt;
		   License does not apply, and You do not need to comply with&lt;br /&gt;
		   its terms and conditions.&lt;br /&gt;
 .&lt;br /&gt;
		3. Term. The term of this Public License is specified in Section&lt;br /&gt;
		   6(a).&lt;br /&gt;
 .&lt;br /&gt;
		4. Media and formats; technical modifications allowed. The&lt;br /&gt;
		   Licensor authorizes You to exercise the Licensed Rights in&lt;br /&gt;
		   all media and formats whether now known or hereafter created,&lt;br /&gt;
		   and to make technical modifications necessary to do so. The&lt;br /&gt;
		   Licensor waives and/or agrees not to assert any right or&lt;br /&gt;
		   authority to forbid You from making technical modifications&lt;br /&gt;
		   necessary to exercise the Licensed Rights, including&lt;br /&gt;
		   technical modifications necessary to circumvent Effective&lt;br /&gt;
		   Technological Measures. For purposes of this Public License,&lt;br /&gt;
		   simply making modifications authorized by this Section 2(a)&lt;br /&gt;
		   (4) never produces Adapted Material.&lt;br /&gt;
 .&lt;br /&gt;
		5. Downstream recipients.&lt;br /&gt;
 .&lt;br /&gt;
			 a. Offer from the Licensor -- Licensed Material. Every&lt;br /&gt;
				recipient of the Licensed Material automatically&lt;br /&gt;
				receives an offer from the Licensor to exercise the&lt;br /&gt;
				Licensed Rights under the terms and conditions of this&lt;br /&gt;
				Public License.&lt;br /&gt;
 .&lt;br /&gt;
			 b. Additional offer from the Licensor -- Adapted Material.&lt;br /&gt;
				Every recipient of Adapted Material from You&lt;br /&gt;
				automatically receives an offer from the Licensor to&lt;br /&gt;
				exercise the Licensed Rights in the Adapted Material&lt;br /&gt;
				under the conditions of the Adapter&#039;s License You apply.&lt;br /&gt;
 .&lt;br /&gt;
			 c. No downstream restrictions. You may not offer or impose&lt;br /&gt;
				any additional or different terms or conditions on, or&lt;br /&gt;
				apply any Effective Technological Measures to, the&lt;br /&gt;
				Licensed Material if doing so restricts exercise of the&lt;br /&gt;
				Licensed Rights by any recipient of the Licensed&lt;br /&gt;
				Material.&lt;br /&gt;
 .&lt;br /&gt;
		6. No endorsement. Nothing in this Public License constitutes or&lt;br /&gt;
		   may be construed as permission to assert or imply that You&lt;br /&gt;
		   are, or that Your use of the Licensed Material is, connected&lt;br /&gt;
		   with, or sponsored, endorsed, or granted official status by,&lt;br /&gt;
		   the Licensor or others designated to receiv&lt;br /&gt;
&lt;br /&gt;
== 2026-04-23 ==&lt;br /&gt;
# I&#039;ve been thinking about chaning our licensing, to something like this&lt;br /&gt;
## All hardware designs are licened under CERN-OHL-S-2.0 &lt;br /&gt;
## All code is licened under AGPL-3.0&lt;br /&gt;
## Everything else (art, documentation, etc) are CC BY-SA&lt;br /&gt;
# here&#039;s the design rational for the cern license (the s means strongly reciprocal, which is what we want) https://gitlab.com/ohwr/project/cernohl/-/wikis/uploads/0be6f561d2b4a686c5765c74be32daf9/CERN_OHL_rationale.pdf&lt;br /&gt;
# apparently creative commons license aren&#039;t OSI approved — only because they don&#039;t work for sourcecode https://opensource.stackexchange.com/questions/5021/osi-approved-license-similar-to-cc-by-sa-4-0&lt;br /&gt;
## by CC BY-SA (without NC or ND) are recommended by OSHWA for things like art and docs https://oshwa.org/resources/sharing-best-practices/&lt;br /&gt;
## hah, the footer of the OSI website (opensource.org) says that the contents of the website are licened CC BY – even though it&#039;s not OSI approved. That&#039;s a good enough endorsement for me&lt;br /&gt;
# oh, I found a CERN Discourse forum https://forums.ohwr.org/c/cernohl/53&lt;br /&gt;
## I never did get a response from OSHWA from my toot about their recommended CLAs https://chaos.social/@ecolibre/116444933464052302&lt;br /&gt;
## da fuk. the &amp;quot;register&amp;quot; button redirects to gitlab?&lt;br /&gt;
### ugh, it&#039;s some SSO OAuth (OpenID Connect). I don&#039;t trust that&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
OHWR Forum is requesting access to your account on GitLab.com.&lt;br /&gt;
 Make sure you trust OHWR Forum before authorizing.&lt;br /&gt;
&lt;br /&gt;
Vasco Guita added this OAuth application over 1 year ago. You will be redirected to forums.ohwr.org after authorizing.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
### I decllined it, and chose to create a new github account that&#039;s specific to these oshwa forums, and nothing else&lt;br /&gt;
## ok I asked about the triple-licensing here https://forums.ohwr.org/t/possible-to-triple-license-cern-ohl-s-2-0-agpl-3-0-cc-by-sa/849882&lt;br /&gt;
## ugh, the license of the licnese itself is CC BY-ND 4.0 :( https://gitlab.com/ohwr/project/cernohl/-/wikis/faq#q-i-am-using-one-of-variants-of-cern-ohl-v2-what-is-the-licence-of-the-licence-text-itself&lt;br /&gt;
### I have no intention to change it, but it would be nice if we had the abilty to add, idk, footnotes or page numbers or any trivial change if we needed&lt;br /&gt;
# hmm...the faq on the cern license say that it&#039;s *not* compatible with GPL https://gitlab.com/ohwr/project/cernohl/-/wikis/faq#q-is-cern-ohl-s-compatible-with-gpl&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Q: Is CERN-OHL-S compatible with GPL?&lt;br /&gt;
A: No...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## so we can&#039;t just license everything under both, I guess. But we might be able to specify that the hardware designs are CERN and any software is GPL, still&lt;br /&gt;
# here&#039;s a good example usage; they have the full license in LICENSE file, but they also have a &amp;quot;License Notice&amp;quot; section of their README.mde with the following https://github.com/Foundation-Devices/passport-electronics&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
You may redistribute and modify this source and make products using it under the terms of the CERN-OHL-S v2 (https://ohwr.org/cern_ohl_s_v2.txt).&lt;br /&gt;
&lt;br /&gt;
This source is distributed WITHOUT ANY EXPRESS OR IMPLIED WARRANTY, INCLUDING OF MERCHANTABILITY, SATISFACTORY QUALITY AND FITNESS FOR A PARTICULAR PURPOSE. Please see the CERN-OHL-S v2 for applicable conditions.&lt;br /&gt;
&lt;br /&gt;
Source location: foundationdevices.com/passport-electronics&lt;br /&gt;
&lt;br /&gt;
As per CERN-OHL-S v2 section 4, should You produce hardware based on this source, You must where practicable and applicable maintain the Source Location visible (1) on the packaging of the hardware, (2) on the circuit board(s) via silkscreen or copper, (3) in any documentation, and (4) on other products you make using this source.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## I especially like the &amp;quot;Source location&amp;quot; part. We can use https://eco-libre.org/p (which is our &amp;quot;projects&amp;quot; page, indended to have one page per project – each with a *very* short summary, link to the *real* docs (currently on github, but that may change to codeberg – which is why we have this simple project page on our own infra), and a list of articles that are tagged with the project&#039;s name.&lt;br /&gt;
### currently we only have one example for life-line https://www.eco-libre.org/p/life-line/ – but, again, we&#039;d want to just link to eco-libre.org/p/ so we can have a boilerplate copy-pasta for all repo&#039;s README.md files&lt;br /&gt;
# there&#039;s a 6-page guide on how to use the CERN license here https://gitlab.com/ohwr/project/cernohl/-/wikis/uploads/cf37727497ca2b5295a7ab83a40fcf5a/cern_ohl_s_v2_user_guide.pdf&lt;br /&gt;
## cool, they do recommend using git. something I advocated-for (and never really got traction-on) at OSE&lt;br /&gt;
## interesting, they recommend we create a CHANGES file, because the license requires downstream modifications to be clearly documented. And by creating a blank file, it&#039;s where they should write their downstream changes.&lt;br /&gt;
## oh wow, they specifically mention FCStd files. So the writers of this license had FreeCAD in mind. Cool!&lt;br /&gt;
## they reference SPDX standard by resue.software https://reuse.software/tutorial/&lt;br /&gt;
### apparently this is a standardized way to indicate licenses of files that are machine-readable. Because, of course there is a standard for that.&lt;br /&gt;
### interesting, they advocate for a folder LICENSES instead of a file LICENSE. that would be better for us, if we&#039;re using three.&lt;br /&gt;
### ok, apparently SPDX is a distinct product from the Linux Foundation https://spdx.org/&lt;br /&gt;
### they say all of these are valid ways to declare copyright; I like it&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2019 Jane Doe &amp;lt;jane@example.com&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: © 2019 John Doe &amp;lt;john@example.com&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: Contributors to Example Project &amp;lt;https://project.example.com&amp;gt;&lt;br /&gt;
SPDX-FileCopyrightText: 2023 Alice Hack and (other) contributors to Project X &amp;lt;https://git.example.com/alicehack/projectx/CONTRIBUTORS.md&amp;gt;&lt;br /&gt;
SPDX-SnippetCopyrightText: (C) Example Cooperative &amp;lt;info@coop.example.com&amp;gt;&lt;br /&gt;
© Example Corporation &amp;lt;https://corp.example.com&amp;gt;&lt;br /&gt;
Copyright 2016, 2018-2019 Joe Anybody&lt;br /&gt;
Copyright (c) Alice, some rights reserved&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
#### I especially like line 4. I think I&#039;d use that. So it would be my name, all contributors, and a link to the Attribution section of the docs&lt;br /&gt;
### they also clarify that the copyright line can omit the year or include a range, the current year, or the original year. I always thought the first year that we did a single commit was best, and they had a link to an article that argues this too. I like that. https://matija.suklje.name/how-and-why-to-properly-write-copyright-statements-in-your-code&lt;br /&gt;
### they have a section on license compatiblity https://reuse.software/faq/#license-compatibility&lt;br /&gt;
#### apparently GPL isn&#039;t compatible with lots of license, because it says you can&#039;t add restrictions to it. that would make it incompatible with CC NC licenses, for example.&lt;br /&gt;
### god, both CERN and reuse.software want us to add comments or a cooresponding &#039;&amp;lt;file&amp;gt;.license&#039; file to *every* file to indicate its license. I was hoping instead that we could just put text that says &amp;quot;hardware files are CERN and software is GPL&amp;quot; but idk if that&#039;ll work :/&lt;br /&gt;
#### they have an &amp;quot;eaiser&amp;quot; method of defining a REUSE.toml file – but that&#039;s per-dir. So I&#039;d have to put all software in one dir and all CAD files in another dir. I guess that would work, but eventually someone will probably break it due to human error and volunteer chaos https://reuse.software/faq/#license-compatibility&lt;br /&gt;
## the faq had said they were going to apply to the FSF, but fsf.org has no mention of the CERN OHL&lt;br /&gt;
### this thread goes into some detail on why they &amp;quot;gave up&amp;quot; on GPL compatibility https://forums.ohwr.org/t/concerns-on-the-impact-of-ohl-on-gpl-community/848400&lt;br /&gt;
#### also some good history on the OHL from Javier Serrano at CERN. He said he gave a presentation on why using GPL was good for hardware, but after the Q&amp;amp;A he realized it wasn&#039;t. That was in 2015 at ORConf.&lt;br /&gt;
#### that thread linked to another cool open hardware forum. GOSH! https://forum.openhardware.science/&lt;br /&gt;
### here&#039;s the thread where CERN applied for OHL to be covered by OSI (which it got) https://lists.opensource.org/pipermail/license-review_lists.opensource.org/2020-June/004892.html&lt;br /&gt;
## back to the usage guide on CERN OHL, they also mention Debian&#039;s DEP5. DEP5 used to be supported by reuse.software, but it was deprecated&lt;br /&gt;
### DEP-5 is another machine-readable copyright/license standard, currently documented here https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/&lt;br /&gt;
#### man, I don&#039;t know which I like better: human-readable legaleze (well, readable only to a subset of superhumans) or machine-readable complexity&lt;br /&gt;
#### they use machine-readable license shortcodes, which are defined by spdx here https://spdx.org/licenses/&lt;br /&gt;
#### so we want&lt;br /&gt;
##### CERN-OHL-S-2.0&lt;br /&gt;
##### AGPL-3.0-or-later&lt;br /&gt;
##### CC-BY-SA-4.0&lt;br /&gt;
#### curiously, only two of the CC licenses are marked as &amp;quot;FSF libre&amp;quot; = CC-BY-4.0 and CC-BY-SA-4.0. None are &amp;quot;OSI Approved&amp;quot; (but see above because OSI uses them for docs!)&lt;br /&gt;
#### hah, cern is the opposite. their 2.0 OHLs are &amp;quot;OSI approved&amp;quot; but not &amp;quot;FSF libre&amp;quot;&lt;br /&gt;
#### the AGPL-3.0-or-later (or -only) is both &amp;quot;OSI approved&amp;quot; *and* &amp;quot;FSF libre&amp;quot; huh&lt;br /&gt;
### anyway, the DEP5 has a similar system to define regex-like globs of files under different licenses&lt;br /&gt;
### the end of the spec includes a &amp;quot;complex&amp;quot; example&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/&lt;br /&gt;
Source: https://www.example.com/code/venus&lt;br /&gt;
Upstream-Name: Planet Venus&lt;br /&gt;
Upstream-Contact: John Doe &amp;lt;jdoe@example.com&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Files:&lt;br /&gt;
 *&lt;br /&gt;
Copyright: 2008, John Doe &amp;lt;jdoe@example.com&amp;gt;&lt;br /&gt;
		   2007, Jane Smith &amp;lt;jsmith@example.org&amp;gt;&lt;br /&gt;
		   2007, Joe Average &amp;lt;joe@example.org&amp;gt;&lt;br /&gt;
		   2007, J. Random User &amp;lt;jr@users.example.com&amp;gt;&lt;br /&gt;
License: PSF-2&lt;br /&gt;
&lt;br /&gt;
Files:&lt;br /&gt;
 debian/*&lt;br /&gt;
Copyright: 2008, Dan Developer &amp;lt;dan@debian.example.com&amp;gt;&lt;br /&gt;
License: permissive&lt;br /&gt;
 Copying and distribution of this package, with or without modification,&lt;br /&gt;
 are permitted in any medium without royalty provided the copyright notice&lt;br /&gt;
 and this notice are preserved.&lt;br /&gt;
&lt;br /&gt;
Files:&lt;br /&gt;
 debian/patches/theme-diveintomark.patch&lt;br /&gt;
Copyright: 2008, Joe Hacker &amp;lt;hack@example.org&amp;gt;&lt;br /&gt;
License: GPL-2+&lt;br /&gt;
&lt;br /&gt;
Files:&lt;br /&gt;
 planet/vendor/compat_logging/*&lt;br /&gt;
Copyright: 2002, Mark Smith &amp;lt;msmith@example.org&amp;gt;&lt;br /&gt;
License: MIT&lt;br /&gt;
 [LICENSE TEXT]&lt;br /&gt;
&lt;br /&gt;
Files:&lt;br /&gt;
 planet/vendor/httplib2/*&lt;br /&gt;
Copyright: 2006, John Brown &amp;lt;brown@example.org&amp;gt;&lt;br /&gt;
License: MIT2&lt;br /&gt;
 Unspecified MIT style license.&lt;br /&gt;
&lt;br /&gt;
Files:&lt;br /&gt;
 planet/vendor/feedparser.py&lt;br /&gt;
Copyright: 2007, Mike Smith &amp;lt;mike@example.org&amp;gt;&lt;br /&gt;
License: PSF-2&lt;br /&gt;
&lt;br /&gt;
Files:&lt;br /&gt;
 planet/vendor/htmltmpl.py&lt;br /&gt;
Copyright: 2004, Thomas Brown &amp;lt;coder@example.org&amp;gt;&lt;br /&gt;
License: GPL-2+&lt;br /&gt;
&lt;br /&gt;
License: PSF-2&lt;br /&gt;
 [LICENSE TEXT]&lt;br /&gt;
&lt;br /&gt;
License: GPL-2+&lt;br /&gt;
 This program is free software; you can redistribute it and/or modify&lt;br /&gt;
 it under the terms of the GNU General Public License as published by&lt;br /&gt;
 the Free Software Foundation; either version 2 of the License, or&lt;br /&gt;
 (at your option) any later version.&lt;br /&gt;
 .&lt;br /&gt;
 This program is distributed in the hope that it will be useful,&lt;br /&gt;
 but WITHOUT ANY WARRANTY; without even the implied warranty of&lt;br /&gt;
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the&lt;br /&gt;
 GNU General Public License for more details.&lt;br /&gt;
 .&lt;br /&gt;
 You should have received a copy of the GNU General Public License&lt;br /&gt;
 along with this package; if not, see &amp;amp;lt;https://www.gnu.org/licenses/&amp;amp;gt;.&lt;br /&gt;
Comment:&lt;br /&gt;
 On Debian systems, the full text of the GNU General Public License&lt;br /&gt;
 version 2 can be found in the file &#039;/usr/share/common-licenses/GPL-2&#039;.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
### I was wondering if I could match all files of a given type at any depth, and it looks like this is accounted-for&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Patterns match pathnames that start at the root of the source tree. Thus, “Makefile.in” matches only the file at the root of the tree, but “*/Makefile.in” matches at any depth.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
### oh, it also says globs include slashes&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Only the wildcards * and ? apply; the former matches any number of characters (including none), the latter a single character. Both match slashes (/) and leading dots, unlike shell globs. The pattern *.in therefore matches any file whose name ends in .in anywhere in the source tree, not just at the top level.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
### so I could do something like&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Files:&lt;br /&gt;
 *&lt;br /&gt;
Copyright: 2023 Michael Altfield and Eco-Libre&lt;br /&gt;
License: CC-BY-SA-4.0&lt;br /&gt;
&lt;br /&gt;
Files:&lt;br /&gt;
 *.FCStd&lt;br /&gt;
Copyright: 2023 Michael Altfield and Eco-Libre&lt;br /&gt;
License: CERN-OHL-S-2.0&lt;br /&gt;
&lt;br /&gt;
Files:&lt;br /&gt;
 *.py&lt;br /&gt;
Copyright: 2023 Michael Altfield and Eco-Libre&lt;br /&gt;
License: AGPL-3.0-or-later&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
### but then it&#039;s not clear which overrrides the others&lt;br /&gt;
### oh, it says the last one that matches applies. So I did that perfect&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Multiple Files stanzas are allowed. The last stanza that matches a particular file applies to it. More general stanzas should therefore be given first, followed by more specific overrides.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
### honestly, that seems like the perfect happy-medium. It&#039;s less to maintain (or for maintainers to screw-up) than .license files everywhere (per REUSE). so it&#039;s more long-term durable. I just need to think of all possible file extensions for code that we&#039;ll use (it&#039;ll be more than just .py files, I&#039;m sure) and hardware files (stl would be CC, so that&#039;s caught by the first one but OpenSCAD could foreseably be one)&lt;br /&gt;
### hmm...I wonder how kdenlive files should be licensed. It&#039;s used to make media, but not the media itself.&lt;br /&gt;
### I asked my question on Stack Exchange too https://opensource.stackexchange.com/questions/15745/possible-to-triple-license-cern-ohl-s-2-0-agpl-3-0-cc-by-sa&lt;br /&gt;
### I also asked about kdenlive files here https://opensource.stackexchange.com/questions/15746/best-libre-license-for-kdenlive-files&lt;br /&gt;
## back to the usage guide of the CERN OHL. they do say you should use the SPDX headers, but that&#039;s REUSE – not DEP5&lt;br /&gt;
## they also recommend adding a &amp;quot;+&amp;quot; for &amp;quot;-or-later&amp;quot;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
CERN-OHL-S-2.0+&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## but I guess I have to place trust in FSF and/or CERN that they won&#039;t become evil and fuck-up future licenses to be not-libre. hmm. imagine if they got bought-out by John Deere.. Yeah, it&#039;s probably better to pin to the current version, and just do the copyright transfer in the CLA. Then we can control the license, and change it if we ever discover some new tech that necessitates changes to a new license&lt;br /&gt;
## for the copyright, they suggest &amp;quot;and others&amp;quot; – that might be better than just &amp;quot;and contributors to Eco-Libre&amp;quot;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Suggestion: You can optionally include a copyright notice to be printed&lt;br /&gt;
on the Product (remember you must keep intact any Notices in the source,&lt;br /&gt;
though). If you do, and your design includes part of other designs, you&lt;br /&gt;
should at least acknowledge the work is not all your own by using e.g.&lt;br /&gt;
Copyright c 2020 Sam Smith and others. In any case, do not include the&lt;br /&gt;
CERN logo.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# well we&#039;ll see if I got any answers on the forums&lt;br /&gt;
# in the meantime, I want to finish my CLA agreements&lt;br /&gt;
# yesterday I made a very slick looking libreoffice document with the individual CLA, but I realized today that it would be better if I could store it in reST and generate the PDF using sphinx or pandoc&lt;br /&gt;
## so, yeah, it would absolutely be better, but I really think I&#039;m letting perfect be the enemy of the good here. I&#039;m already spending weeks just to finish the ConfirmAccount extension on the wiki – just because I didn&#039;t have a Terms of Service, which sent me down this rabbit hole.&lt;br /&gt;
## I&#039;m going to make the reST -&amp;gt; PDF part a TODO. The libreoffice file is currently 64 KB and the PDF is 95 KB. I&#039;ll probably have maybe 4-10x that, as I add a corporate CLA and also some other less-important agreements for volunteers (I agree not to use AI. I agree to follow the CoC. Etc)&lt;br /&gt;
## oh wtf. I finished making the libreoffice for the corporate version of the contract (it&#039;s called &amp;quot;entity&amp;quot;) but the only difference in the file&#039;s contents is literally the subtitle&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Individual Contributor Exclusive License Agreement&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Entity Contributor Exclusive License Agreement&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## I also diff&#039;d the html version, just in-case it was a bug. same thing&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;h2 id=&amp;quot;tmp-subtitle&amp;quot;&amp;gt;&amp;lt;span id=&amp;quot;tmp-contributor-type&amp;quot;&amp;gt;Individual&amp;lt;/span&amp;gt; Contributor &amp;lt;span id=&amp;quot;tmp-contributor-exclusivity-1&amp;quot; class=&amp;quot;tmp-contributor-exclusivity-1&amp;quot;&amp;gt;Exclusive&amp;lt;/span&amp;gt; License Agreement&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;h2 id=&amp;quot;tmp-subtitle&amp;quot;&amp;gt;&amp;lt;span id=&amp;quot;tmp-contributor-type&amp;quot;&amp;gt;Entity&amp;lt;/span&amp;gt; Contributor &amp;lt;span id=&amp;quot;tmp-contributor-exclusivity-1&amp;quot; class=&amp;quot;tmp-contributor-exclusivity-1&amp;quot;&amp;gt;Exclusive&amp;lt;/span&amp;gt; License Agreement&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## maybe there would be differences if I chose a different patent option?&lt;br /&gt;
# idk, but I guess I only need one doc...&lt;br /&gt;
# TODO: finish the CLA docs in LibreOffice, put them on github somewhere, then do the other volunteer agreements, and then sign them myself&lt;br /&gt;
&lt;br /&gt;
== 2026-04-22 ==&lt;br /&gt;
# picking up where we left-off yesterday, we&#039;re looking at examples of open-source CLAs&lt;br /&gt;
# Ideally we want a simple one for the wiki an a strong legal one for future volunteers to sign&lt;br /&gt;
# OpenJS has these https://openjsf.org/cla&lt;br /&gt;
## indivdual https://images.prismic.io/openjsf/4c740999-4bd7-4f69-8c4a-b80db0919690_OpenJS-Foundation-ICLA-2020-09-23.pdf&lt;br /&gt;
## corporate https://images.prismic.io/openjsf/7f4dc103-c6cf-41ab-a2e8-42248e8a45f2_OpenJS-Foundation-CCLA-2020-09-23.pdf&lt;br /&gt;
## they say they were made by the Linux Foundation&#039;s EasyCLA tool https://easycla.lfx.linuxfoundation.org/#/&lt;br /&gt;
### oh, we saw that one yesterday; it&#039;s authalled :/&lt;br /&gt;
# CNCF (kubernetes) also uses EasyCLA, which is apparently integrated into GitHub https://github.com/kubernetes/community/blob/main/CLA.md&lt;br /&gt;
# OpenBMC has these two; no idea what the doc&#039;s license is &lt;br /&gt;
## individual https://github.com/kubernetes/community/blob/main/CLA.md&lt;br /&gt;
## corporate https://drive.google.com/file/d/1d-2M8ng_Dl2j1odsvZ8o1QHAdHB-pNSH/edit&lt;br /&gt;
# here&#039;s python&#039;s; the license is unsaid https://www.python.org/psf/contrib/&lt;br /&gt;
# Apollo&#039;s derived its from Apache&#039;s https://contribute.apollographql.com/&lt;br /&gt;
# here&#039;s microsoft&#039;s https://opensource.microsoft.com/cla/&lt;br /&gt;
## actual doc is here; it&#039;s CC0 https://opensource.microsoft.com/pdf/microsoft-contribution-license-agreement.pdf&lt;br /&gt;
## it&#039;s pretty software focused, but I like that it&#039;s licensed openly&lt;br /&gt;
## it&#039;s also only good for individual contributions&lt;br /&gt;
# here&#039;s a short &amp;amp; sweet one by musescore, but it&#039;s not clear how it&#039;s licensed https://musescore.org/en/cla&lt;br /&gt;
# here&#039;s openmediavault&#039;s https://www.openmediavault.org/contributoragreement.html&lt;br /&gt;
## doc is actually here; it&#039;s derived from apache&#039;s CLA https://www.openmediavault.org/wp-content/uploads/2013/12/oca.pdf&lt;br /&gt;
# the link to openstack (openinfra) was bad; looks like they replaced their CLA with the Linux Foundation&#039;s DOC https://www.openmediavault.org/wp-content/uploads/2013/12/oca.pdf&lt;br /&gt;
# puppet uses this CLA Assistant one, based on Apache&#039;s https://cla-assistant.io/puppetlabs/&lt;br /&gt;
# sangoma uses this one, also using CLA Assistant, but it doesn&#039;t mention apache https://web.archive.org/web/20230429235353/https://oss-cla.sangoma.com/asterisk/asterisk&lt;br /&gt;
# the W3C&#039;s looks pretty good, and specifc to them https://www.w3.org/community/about/process/cla/&lt;br /&gt;
## the license isn&#039;t explicilty stated, but the footer says it&#039;s website contents is licensed by, uh, their own &amp;quot;document license - 2023 version&amp;quot; https://www.w3.org/copyright/document-license-2023/&lt;br /&gt;
# here&#039;s one by zed; it&#039;s not clear how the text is licensed https://zed.dev/cla&lt;br /&gt;
# KDE announced theirs here https://ev.kde.org/2008/08/22/2008-08-22-fsfe-welcomes-kde-s-fiduciary-license-agreement/&lt;br /&gt;
## actual doc about the FLA is here https://ev.kde.org/rules/fla/&lt;br /&gt;
## actual doc is here&lt;br /&gt;
### individuals https://ev.kde.org/resources/FLA-2.0-individual.pdf&lt;br /&gt;
### companies https://ev.kde.org/resources/FLA-2.0-entity.pdf&lt;br /&gt;
## they seem pretty good, albeit they&#039;re very focused on software (not hardware)&lt;br /&gt;
## it says it&#039;s based on this https://contributoragreements.org/&lt;br /&gt;
### and that site&#039;s footer says its contents is CC BY-SA 4.0. Perfect.&lt;br /&gt;
## I went through their CLA Chooser generator/wizard https://contributoragreements.org/ca-cla-chooser/#&lt;br /&gt;
# that spat-out two, one for individual and one for corporate&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
	Fiduciary License Agreement 2.0&lt;br /&gt;
	based on the&lt;br /&gt;
	Individual Contributor Exclusive License Agreement&lt;br /&gt;
	(including the Traditional Patent License OPTION)&lt;br /&gt;
&lt;br /&gt;
	Thank you for your interest in contributing to Eco-Libre&#039;s ____________________ (&amp;quot;We&amp;quot; or &amp;quot;Us&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
	The purpose of this contributor agreement (&amp;quot;Agreement&amp;quot;) is to clarify and document the rights granted by contributors to Us. To make this document effective, please follow the instructions at ____________________.&lt;br /&gt;
	Preamble&lt;br /&gt;
&lt;br /&gt;
	Software is deeply embedded in all aspects of our lives and it is important that it empower, rather than restrict us. Free Software gives everybody the rights to use, understand, adapt and share software. These rights help support other fundamental freedoms like freedom of speech, press and privacy.&lt;br /&gt;
&lt;br /&gt;
	Development of Free Software can follow many patterns. In some cases whole development is handled by a sole programmer or a small group of people. But usually, the creation and maintenance of software is a complex process that requires the contribution of many individuals. This also affects who owns the rights to the software. In the latter case, rights in software are owned jointly by a great number of individuals.&lt;br /&gt;
&lt;br /&gt;
	To tackle this issue some projects require a full copyright assignment to be signed by all contributors. The problem with such assignments is that they often lack checks and balances that would protect the contributors from potential abuse of power from the new copyright holder.&lt;br /&gt;
&lt;br /&gt;
	FSFE’s Fiduciary License Agreement (FLA) was created by the Free Software Foundation Europe e.V. with just that in mind – to concentrate all deciding power within one entity and prevent fragmentation of rights on one hand, while on the other preventing that single entity from abusing its power. The main aim is to ensure that the software covered under the FLA will forever remain Free Software.&lt;br /&gt;
&lt;br /&gt;
	This process only serves for the transfer of economic rights. So-called moral rights (e.g. authors right to be identified as author) remain with the original author(s) and are inalienable.&lt;br /&gt;
	How to use this FLA&lt;br /&gt;
&lt;br /&gt;
	If You are an employee and have created the Contribution as part of your employment, You need to have Your employer approve this Agreement. If You do not own the Copyright in Your Contribution, any other author of the Contribution should also sign this. In any event, please contact Us at https://www.eco-libre.org/contact.&lt;br /&gt;
	Definitions&lt;br /&gt;
&lt;br /&gt;
	&amp;quot;You&amp;quot; means the individual Copyright owner who Submits a Contribution to Us; or&lt;br /&gt;
&lt;br /&gt;
	if the Copyright in the Contribution is held by a Legal Entity and the Contribution is being Submitted to Us on behalf of such Legal Entity, &amp;quot;You&amp;quot; means such Legal Entity.&lt;br /&gt;
&lt;br /&gt;
	&amp;quot;Contribution&amp;quot; means any original work of authorship, including any original modifications or additions to an existing work of authorship, Submitted for inclusion into Material by You to Us, in which you own the Copyright.&lt;br /&gt;
&lt;br /&gt;
	&amp;quot;Copyright&amp;quot; means all rights protecting works of authorship, including copyright, moral and neighboring rights, as appropriate, for the full term of their existence.&lt;br /&gt;
&lt;br /&gt;
	&amp;quot;Material&amp;quot; means the software and/or documentation of ____________________ that we make available to third parties.&lt;br /&gt;
&lt;br /&gt;
	&amp;quot;Submit&amp;quot; means any act by which a Contribution is transferred to Us by You by means of tangible or intangible media, including but not limited to electronic mailing lists, source code control systems, and issue tracking systems, but excluding any transfer that is conspicuously marked or otherwise designated in writing by You as &amp;quot;Not a Contribution.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
	&amp;quot;Documentation&amp;quot; means any non-software portion of a Contribution.&lt;br /&gt;
	License grant&lt;br /&gt;
	Copyright license to Us&lt;br /&gt;
&lt;br /&gt;
	Subject to the terms and conditions of this Agreement, You hereby grant to Us a worldwide, royalty-free, exclusive, perpetual and irrevocable (except as stated in Section &amp;quot;Term&amp;quot;) license, with the right to transfer an unlimited number of non-exclusive licenses or to grant sublicenses to third parties, under the Copyright covering the Contribution to use the Contribution by all means, including, but not limited to:&lt;br /&gt;
		publish the Contribution,&lt;br /&gt;
		modify the Contribution,&lt;br /&gt;
		prepare derivative works based upon or containing the Contribution and/or to combine the Contribution with other Materials,&lt;br /&gt;
		reproduce the Contribution in original or modified form,&lt;br /&gt;
		distribute, to make the Contribution available to the public, display and publicly perform the Contribution in original or modified form.&lt;br /&gt;
	Moral rights&lt;br /&gt;
&lt;br /&gt;
	Moral Rights remain unaffected to the extent they are recognized and not waivable by applicable law. Notwithstanding, You may add your name to the attribution mechanism customary used in the Materials you Contribute to, such as the header of the source code files of Your Contribution, and We will respect this attribution when using Your Contribution.&lt;br /&gt;
	Copyright license back to You&lt;br /&gt;
&lt;br /&gt;
	Upon such grant of rights to Us, We immediately grant to You a worldwide, royalty-free, non-exclusive, perpetual and irrevocable license, with the right to transfer an unlimited number of non-exclusive licenses or to grant sublicenses to third parties, under the Copyright covering the Contribution to use the Contribution by all means, including, but not limited to:&lt;br /&gt;
		publish the Contribution,&lt;br /&gt;
		modify the Contribution,&lt;br /&gt;
		prepare derivative works based upon or containing the Contribution and/or to combine the Contribution with other Materials,&lt;br /&gt;
		reproduce the Contribution in original or modified form,&lt;br /&gt;
		distribute, to make the Contribution available to the public, display and publicly perform the Contribution in original or modified form.&lt;br /&gt;
&lt;br /&gt;
	This license back is limited to the Contribution and does not provide any rights to the Material.&lt;br /&gt;
	Patents&lt;br /&gt;
	Patent license&lt;br /&gt;
&lt;br /&gt;
	Subject to the terms and conditions of this Agreement You hereby grant to Us and to recipients of Materials distributed by Us a worldwide, royalty-free, non-exclusive, perpetual and irrevocable (except as stated in Subsection &amp;quot;Revocation of patent license&amp;quot;) patent license, with the right to transfer an unlimited number of non-exclusive licenses or to grant sublicenses to third parties, to make, have made, use, sell, offer for sale, import and otherwise transfer the Contribution and the Contribution in combination with any Material (and portions of such combination). This license applies to all patents owned or controlled by You, whether already acquired or hereafter acquired, that would be infringed by making, having made, using, selling, offering for sale, importing or otherwise transferring of Your Contribution(s) alone or by combination of Your Contribution(s) with any Material.&lt;br /&gt;
	Revocation of patent license&lt;br /&gt;
&lt;br /&gt;
	You reserve the right to revoke the patent license stated in Subsection &amp;quot;Patent license&amp;quot; if We make any infringement claim that is targeted at your Contribution and not asserted for a Defensive Purpose. An assertion of claims of the Patents shall be considered for a &amp;quot;Defensive Purpose&amp;quot; if the claims are asserted against an entity that has filed, maintained, threatened, or voluntarily participated in a patent infringement lawsuit against Us or any of Our licensees.&lt;br /&gt;
	License obligations by Us&lt;br /&gt;
&lt;br /&gt;
	We may, but are under no obligation to, include the Contribution You Submitted to Us into the Material.&lt;br /&gt;
&lt;br /&gt;
	We agree to (sub)license the Contribution or any Materials containing, based on or derived from your Contribution under the terms of any licenses that qualify as [Free Software](https://www.gnu.org/philosophy/free-sw.html) as defined by the Free Software Foundation and at the same time qualify as [Open Source](https://opensource.org/osd) as defined by the Open Source Initiative. For clarification, should we make available any Material under a non-free or non-open license, we must make a version of such Material available under a free and open license too.&lt;br /&gt;
&lt;br /&gt;
	More specifically and in strict accordance with the above paragraph, we agree to (sub)license the Contribution or any Materials containing, based on or derived from the Contribution only under the terms of the following license(s) GPL-3.0, MIT (including any right to adopt any future version of a license if permitted), whereby any non-free or non-open licenses need to be listed as well.&lt;br /&gt;
&lt;br /&gt;
	We agree to license patents owned or controlled by You only to the extent necessary to (sub)license Your Contribution(s) and the combination of Your Contribution(s) with the Material under the terms of any licenses the Free Software Foundation classifies as Free Software licenses and which are approved by the Open Source Initiative as Open Source licenses..&lt;br /&gt;
	Disclaimer&lt;br /&gt;
	**We acknowledge that you provide the Contribution &amp;quot;as is&amp;quot;.** **More particularly, You disclaim all express or implied warranties including, without limitation, any implied warranty of satisfactory quality, fitness for a particular purpose and non-infringement. To the extent that any such warranties cannot be disclaimed, such warranty is limited in duration and extent to the minimum period and extent permitted by law.**&lt;br /&gt;
	Consequential damage waiver&lt;br /&gt;
&lt;br /&gt;
	**To the maximum extent permitted by applicable law, in no event will You or We be liable for any loss of profits, loss of anticipated savings, loss of data, indirect, special, incidental, consequential and exemplary damages arising out of this Agreement regardless of the legal or equitable theory (contract, tort or otherwise) upon which the claim is based.**&lt;br /&gt;
	Approximation of disclaimer and damage waiver&lt;br /&gt;
&lt;br /&gt;
	**If the disclaimer and damage waiver mentioned in Subsection &amp;quot;Disclaimer of warranty&amp;quot; and Section &amp;quot;Consequential damage waiver&amp;quot; cannot be given legal effect under applicable local law, reviewing courts shall apply local law that most closely approximates an absolute waiver of all civil or contractual liability in connection with the Contribution.**&lt;br /&gt;
	Term&lt;br /&gt;
&lt;br /&gt;
	This Agreement shall come into effect upon Your acceptance of the terms and conditions.&lt;br /&gt;
&lt;br /&gt;
	This Agreement shall apply for the term of the copyright and patents licensed here. However, You shall have the right to terminate the Agreement if We do not fulfill the obligations as set forth in Section &amp;quot;License obligations by Us&amp;quot;. Such termination must be made in writing.&lt;br /&gt;
&lt;br /&gt;
	In the event of a termination of this Agreement Sections &amp;quot;Disclaimer&amp;quot;, &amp;quot;Term&amp;quot; and &amp;quot;Miscellaneous&amp;quot; shall survive such termination and shall remain in full force thereafter. For the avoidance of doubt, Free and Open Source Software (sub)licenses that have already been granted for Contributions at the date of the termination shall remain in full force after the termination of this Agreement.&lt;br /&gt;
	Miscellaneous&lt;br /&gt;
&lt;br /&gt;
	This Agreement and all disputes, claims, actions, suits or other proceedings arising out of this agreement or relating in any way to it shall be governed by the laws of Ecuador excluding its private international law provisions.&lt;br /&gt;
&lt;br /&gt;
	This Agreement sets out the entire agreement between You and Us for Your Contributions to Us and overrides all other agreements or understandings.&lt;br /&gt;
&lt;br /&gt;
	In case of Your death, this agreement shall continue with Your heirs. In case of more than one heir, all heirs must exercise their rights through a commonly authorized person.&lt;br /&gt;
&lt;br /&gt;
	If any provision of this Agreement is found void and unenforceable, such provision will be replaced to the extent possible with a provision that comes closest to the meaning of the original provision and that is enforceable. The terms and conditions set forth in this Agreement shall apply notwithstanding any failure of essential purpose of this Agreement or any limited remedy to the maximum extent possible under law.&lt;br /&gt;
&lt;br /&gt;
	You agree to notify Us of any facts or circumstances of which you become aware that would make Your representations under this Agreement inaccurate in any respect.&lt;br /&gt;
	You&lt;br /&gt;
	Date:	&lt;br /&gt;
	Name:	&lt;br /&gt;
	Title:	&lt;br /&gt;
	Address:	&lt;br /&gt;
	Us&lt;br /&gt;
	Date:	&lt;br /&gt;
	Name:	&lt;br /&gt;
	Title:	&lt;br /&gt;
	Address:	&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
	Fiduciary License Agreement 2.0&lt;br /&gt;
	based on the&lt;br /&gt;
	Entity Contributor Exclusive License Agreement&lt;br /&gt;
	(including the Traditional Patent License OPTION)&lt;br /&gt;
&lt;br /&gt;
	Thank you for your interest in contributing to Eco-Libre&#039;s ____________________ (&amp;quot;We&amp;quot; or &amp;quot;Us&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
	The purpose of this contributor agreement (&amp;quot;Agreement&amp;quot;) is to clarify and document the rights granted by contributors to Us. To make this document effective, please follow the instructions at ____________________.&lt;br /&gt;
	Preamble&lt;br /&gt;
&lt;br /&gt;
	Software is deeply embedded in all aspects of our lives and it is important that it empower, rather than restrict us. Free Software gives everybody the rights to use, understand, adapt and share software. These rights help support other fundamental freedoms like freedom of speech, press and privacy.&lt;br /&gt;
&lt;br /&gt;
	Development of Free Software can follow many patterns. In some cases whole development is handled by a sole programmer or a small group of people. But usually, the creation and maintenance of software is a complex process that requires the contribution of many individuals. This also affects who owns the rights to the software. In the latter case, rights in software are owned jointly by a great number of individuals.&lt;br /&gt;
&lt;br /&gt;
	To tackle this issue some projects require a full copyright assignment to be signed by all contributors. The problem with such assignments is that they often lack checks and balances that would protect the contributors from potential abuse of power from the new copyright holder.&lt;br /&gt;
&lt;br /&gt;
	FSFE’s Fiduciary License Agreement (FLA) was created by the Free Software Foundation Europe e.V. with just that in mind – to concentrate all deciding power within one entity and prevent fragmentation of rights on one hand, while on the other preventing that single entity from abusing its power. The main aim is to ensure that the software covered under the FLA will forever remain Free Software.&lt;br /&gt;
&lt;br /&gt;
	This process only serves for the transfer of economic rights. So-called moral rights (e.g. authors right to be identified as author) remain with the original author(s) and are inalienable.&lt;br /&gt;
	How to use this FLA&lt;br /&gt;
&lt;br /&gt;
	If You are an employee and have created the Contribution as part of your employment, You need to have Your employer approve this Agreement. If You do not own the Copyright in Your Contribution, any other author of the Contribution should also sign this. In any event, please contact Us at https://www.eco-libre.org/contact.&lt;br /&gt;
	Definitions&lt;br /&gt;
&lt;br /&gt;
	&amp;quot;You&amp;quot; means the individual Copyright owner who Submits a Contribution to Us; or&lt;br /&gt;
&lt;br /&gt;
	if the Copyright in the Contribution is held by a Legal Entity and the Contribution is being Submitted to Us on behalf of such Legal Entity, &amp;quot;You&amp;quot; means such Legal Entity.&lt;br /&gt;
&lt;br /&gt;
	&amp;quot;Contribution&amp;quot; means any original work of authorship, including any original modifications or additions to an existing work of authorship, Submitted for inclusion into Material by You to Us, in which you own the Copyright.&lt;br /&gt;
&lt;br /&gt;
	&amp;quot;Copyright&amp;quot; means all rights protecting works of authorship, including copyright, moral and neighboring rights, as appropriate, for the full term of their existence.&lt;br /&gt;
&lt;br /&gt;
	&amp;quot;Material&amp;quot; means the software and/or documentation of ____________________ that we make available to third parties.&lt;br /&gt;
&lt;br /&gt;
	&amp;quot;Submit&amp;quot; means any act by which a Contribution is transferred to Us by You by means of tangible or intangible media, including but not limited to electronic mailing lists, source code control systems, and issue tracking systems, but excluding any transfer that is conspicuously marked or otherwise designated in writing by You as &amp;quot;Not a Contribution.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
	&amp;quot;Documentation&amp;quot; means any non-software portion of a Contribution.&lt;br /&gt;
	License grant&lt;br /&gt;
	Copyright license to Us&lt;br /&gt;
&lt;br /&gt;
	Subject to the terms and conditions of this Agreement, You hereby grant to Us a worldwide, royalty-free, exclusive, perpetual and irrevocable (except as stated in Section &amp;quot;Term&amp;quot;) license, with the right to transfer an unlimited number of non-exclusive licenses or to grant sublicenses to third parties, under the Copyright covering the Contribution to use the Contribution by all means, including, but not limited to:&lt;br /&gt;
		publish the Contribution,&lt;br /&gt;
		modify the Contribution,&lt;br /&gt;
		prepare derivative works based upon or containing the Contribution and/or to combine the Contribution with other Materials,&lt;br /&gt;
		reproduce the Contribution in original or modified form,&lt;br /&gt;
		distribute, to make the Contribution available to the public, display and publicly perform the Contribution in original or modified form.&lt;br /&gt;
	Moral rights&lt;br /&gt;
&lt;br /&gt;
	Moral Rights remain unaffected to the extent they are recognized and not waivable by applicable law. Notwithstanding, You may add your name to the attribution mechanism customary used in the Materials you Contribute to, such as the header of the source code files of Your Contribution, and We will respect this attribution when using Your Contribution.&lt;br /&gt;
	Copyright license back to You&lt;br /&gt;
&lt;br /&gt;
	Upon such grant of rights to Us, We immediately grant to You a worldwide, royalty-free, non-exclusive, perpetual and irrevocable license, with the right to transfer an unlimited number of non-exclusive licenses or to grant sublicenses to third parties, under the Copyright covering the Contribution to use the Contribution by all means, including, but not limited to:&lt;br /&gt;
		publish the Contribution,&lt;br /&gt;
		modify the Contribution,&lt;br /&gt;
		prepare derivative works based upon or containing the Contribution and/or to combine the Contribution with other Materials,&lt;br /&gt;
		reproduce the Contribution in original or modified form,&lt;br /&gt;
		distribute, to make the Contribution available to the public, display and publicly perform the Contribution in original or modified form.&lt;br /&gt;
&lt;br /&gt;
	This license back is limited to the Contribution and does not provide any rights to the Material.&lt;br /&gt;
	Patents&lt;br /&gt;
	Patent license&lt;br /&gt;
&lt;br /&gt;
	Subject to the terms and conditions of this Agreement You hereby grant to Us and to recipients of Materials distributed by Us a worldwide, royalty-free, non-exclusive, perpetual and irrevocable (except as stated in Subsection &amp;quot;Revocation of patent license&amp;quot;) patent license, with the right to transfer an unlimited number of non-exclusive licenses or to grant sublicenses to third parties, to make, have made, use, sell, offer for sale, import and otherwise transfer the Contribution and the Contribution in combination with any Material (and portions of such combination). This license applies to all patents owned or controlled by You, whether already acquired or hereafter acquired, that would be infringed by making, having made, using, selling, offering for sale, importing or otherwise transferring of Your Contribution(s) alone or by combination of Your Contribution(s) with any Material.&lt;br /&gt;
	Revocation of patent license&lt;br /&gt;
&lt;br /&gt;
	You reserve the right to revoke the patent license stated in Subsection &amp;quot;Patent license&amp;quot; if We make any infringement claim that is targeted at your Contribution and not asserted for a Defensive Purpose. An assertion of claims of the Patents shall be considered for a &amp;quot;Defensive Purpose&amp;quot; if the claims are asserted against an entity that has filed, maintained, threatened, or voluntarily participated in a patent infringement lawsuit against Us or any of Our licensees.&lt;br /&gt;
	License obligations by Us&lt;br /&gt;
&lt;br /&gt;
	We may, but are under no obligation to, include the Contribution You Submitted to Us into the Material.&lt;br /&gt;
&lt;br /&gt;
	We agree to (sub)license the Contribution or any Materials containing, based on or derived from your Contribution under the terms of any licenses that qualify as [Free Software](https://www.gnu.org/philosophy/free-sw.html) as defined by the Free Software Foundation and at the same time qualify as [Open Source](https://opensource.org/osd) as defined by the Open Source Initiative. For clarification, should we make available any Material under a non-free or non-open license, we must make a version of such Material available under a free and open license too.&lt;br /&gt;
&lt;br /&gt;
	More specifically and in strict accordance with the above paragraph, we agree to (sub)license the Contribution or any Materials containing, based on or derived from the Contribution only under the terms of the following license(s) GPL-3.0, MIT (including any right to adopt any future version of a license if permitted), whereby any non-free or non-open licenses need to be listed as well.&lt;br /&gt;
&lt;br /&gt;
	We agree to license patents owned or controlled by You only to the extent necessary to (sub)license Your Contribution(s) and the combination of Your Contribution(s) with the Material under the terms of any licenses the Free Software Foundation classifies as Free Software licenses and which are approved by the Open Source Initiative as Open Source licenses..&lt;br /&gt;
	Disclaimer&lt;br /&gt;
	**We acknowledge that you provide the Contribution &amp;quot;as is&amp;quot;.** **More particularly, You disclaim all express or implied warranties including, without limitation, any implied warranty of satisfactory quality, fitness for a particular purpose and non-infringement. To the extent that any such warranties cannot be disclaimed, such warranty is limited in duration and extent to the minimum period and extent permitted by law.**&lt;br /&gt;
	Consequential damage waiver&lt;br /&gt;
&lt;br /&gt;
	**To the maximum extent permitted by applicable law, in no event will You or We be liable for any loss of profits, loss of anticipated savings, loss of data, indirect, special, incidental, consequential and exemplary damages arising out of this Agreement regardless of the legal or equitable theory (contract, tort or otherwise) upon which the claim is based.**&lt;br /&gt;
	Approximation of disclaimer and damage waiver&lt;br /&gt;
&lt;br /&gt;
	**If the disclaimer and damage waiver mentioned in Subsection &amp;quot;Disclaimer of warranty&amp;quot; and Section &amp;quot;Consequential damage waiver&amp;quot; cannot be given legal effect under applicable local law, reviewing courts shall apply local law that most closely approximates an absolute waiver of all civil or contractual liability in connection with the Contribution.**&lt;br /&gt;
	Term&lt;br /&gt;
&lt;br /&gt;
	This Agreement shall come into effect upon Your acceptance of the terms and conditions.&lt;br /&gt;
&lt;br /&gt;
	This Agreement shall apply for the term of the copyright and patents licensed here. However, You shall have the right to terminate the Agreement if We do not fulfill the obligations as set forth in Section &amp;quot;License obligations by Us&amp;quot;. Such termination must be made in writing.&lt;br /&gt;
&lt;br /&gt;
	In the event of a termination of this Agreement Sections &amp;quot;Disclaimer&amp;quot;, &amp;quot;Term&amp;quot; and &amp;quot;Miscellaneous&amp;quot; shall survive such termination and shall remain in full force thereafter. For the avoidance of doubt, Free and Open Source Software (sub)licenses that have already been granted for Contributions at the date of the termination shall remain in full force after the termination of this Agreement.&lt;br /&gt;
	Miscellaneous&lt;br /&gt;
&lt;br /&gt;
	This Agreement and all disputes, claims, actions, suits or other proceedings arising out of this agreement or relating in any way to it shall be governed by the laws of Ecuador excluding its private international law provisions.&lt;br /&gt;
&lt;br /&gt;
	This Agreement sets out the entire agreement between You and Us for Your Contributions to Us and overrides all other agreements or understandings.&lt;br /&gt;
&lt;br /&gt;
	In case of Your death, this agreement shall continue with Your heirs. In case of more than one heir, all heirs must exercise their rights through a commonly authorized person.&lt;br /&gt;
&lt;br /&gt;
	If any provision of this Agreement is found void and unenforceable, such provision will be replaced to the extent possible with a provision that comes closest to the meaning of the original provision and that is enforceable. The terms and conditions set forth in this Agreement shall apply notwithstanding any failure of essential purpose of this Agreement or any limited remedy to the maximum extent possible under law.&lt;br /&gt;
&lt;br /&gt;
	You agree to notify Us of any facts or circumstances of which you become aware that would make Your representations under this Agreement inaccurate in any respect.&lt;br /&gt;
	You&lt;br /&gt;
	Date:	&lt;br /&gt;
	Name:	&lt;br /&gt;
	Title:	&lt;br /&gt;
	Address:	&lt;br /&gt;
	Us&lt;br /&gt;
	Date:	&lt;br /&gt;
	Name:	&lt;br /&gt;
	Title:	&lt;br /&gt;
	Address:	&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## the generator didn&#039;t let me choose &amp;quot;CC BY-SA&amp;quot; as one of the licnese, so I chose &amp;quot;MIT&amp;quot; so we could find/replace it later&lt;br /&gt;
# oh, if I change the first page&#039;s option to &amp;quot;let me do what I want&amp;quot; then the second page has an option to include CC BY-SA. that changed it to:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	Contributor Agreement&lt;br /&gt;
	Individual Contributor Exclusive License Agreement&lt;br /&gt;
	(including the Traditional Patent License OPTION)&lt;br /&gt;
&lt;br /&gt;
	Thank you for your interest in contributing to Eco-Libre&#039;s ____________________ (&amp;quot;We&amp;quot; or &amp;quot;Us&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
	The purpose of this contributor agreement (&amp;quot;Agreement&amp;quot;) is to clarify and document the rights granted by contributors to Us. To make this document effective, please follow the instructions at ____________________.&lt;br /&gt;
	How to use this Contributor Agreement&lt;br /&gt;
&lt;br /&gt;
	If You are an employee and have created the Contribution as part of your employment, You need to have Your employer approve this Agreement. If You do not own the Copyright in Your Contribution, any other author of the Contribution should also sign this. In any event, please contact Us at https://www.eco-libre.org/contact.&lt;br /&gt;
	Definitions&lt;br /&gt;
&lt;br /&gt;
	&amp;quot;You&amp;quot; means the individual Copyright owner who Submits a Contribution to Us; or&lt;br /&gt;
&lt;br /&gt;
	if the Copyright in the Contribution is held by a Legal Entity and the Contribution is being Submitted to Us on behalf of such Legal Entity, &amp;quot;You&amp;quot; means such Legal Entity.&lt;br /&gt;
&lt;br /&gt;
	&amp;quot;Contribution&amp;quot; means any original work of authorship, including any original modifications or additions to an existing work of authorship, Submitted for inclusion into Material by You to Us, in which you own the Copyright.&lt;br /&gt;
&lt;br /&gt;
	&amp;quot;Copyright&amp;quot; means all rights protecting works of authorship, including copyright, moral and neighboring rights, as appropriate, for the full term of their existence.&lt;br /&gt;
&lt;br /&gt;
	&amp;quot;Material&amp;quot; means the software and/or documentation of ____________________ that we make available to third parties.&lt;br /&gt;
&lt;br /&gt;
	&amp;quot;Submit&amp;quot; means any act by which a Contribution is transferred to Us by You by means of tangible or intangible media, including but not limited to electronic mailing lists, source code control systems, and issue tracking systems, but excluding any transfer that is conspicuously marked or otherwise designated in writing by You as &amp;quot;Not a Contribution.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
	&amp;quot;Documentation&amp;quot; means any non-software portion of a Contribution.&lt;br /&gt;
	License grant&lt;br /&gt;
	Copyright license to Us&lt;br /&gt;
&lt;br /&gt;
	Subject to the terms and conditions of this Agreement, You hereby grant to Us a worldwide, royalty-free, exclusive, perpetual and irrevocable (except as stated in Section &amp;quot;Term&amp;quot;) license, with the right to transfer an unlimited number of non-exclusive licenses or to grant sublicenses to third parties, under the Copyright covering the Contribution to use the Contribution by all means, including, but not limited to:&lt;br /&gt;
		publish the Contribution,&lt;br /&gt;
		modify the Contribution,&lt;br /&gt;
		prepare derivative works based upon or containing the Contribution and/or to combine the Contribution with other Materials,&lt;br /&gt;
		reproduce the Contribution in original or modified form,&lt;br /&gt;
		distribute, to make the Contribution available to the public, display and publicly perform the Contribution in original or modified form.&lt;br /&gt;
	Moral rights&lt;br /&gt;
&lt;br /&gt;
	Moral Rights remain unaffected to the extent they are recognized and not waivable by applicable law. Notwithstanding, You may add your name to the attribution mechanism customary used in the Materials you Contribute to, such as the header of the source code files of Your Contribution, and We will respect this attribution when using Your Contribution.&lt;br /&gt;
	Copyright license back to You&lt;br /&gt;
&lt;br /&gt;
	Upon such grant of rights to Us, We immediately grant to You a worldwide, royalty-free, non-exclusive, perpetual and irrevocable license, with the right to transfer an unlimited number of non-exclusive licenses or to grant sublicenses to third parties, under the Copyright covering the Contribution to use the Contribution by all means, including, but not limited to:&lt;br /&gt;
		publish the Contribution,&lt;br /&gt;
		modify the Contribution,&lt;br /&gt;
		prepare derivative works based upon or containing the Contribution and/or to combine the Contribution with other Materials,&lt;br /&gt;
		reproduce the Contribution in original or modified form,&lt;br /&gt;
		distribute, to make the Contribution available to the public, display and publicly perform the Contribution in original or modified form.&lt;br /&gt;
&lt;br /&gt;
	This license back is limited to the Contribution and does not provide any rights to the Material.&lt;br /&gt;
	Patents&lt;br /&gt;
	Patent license&lt;br /&gt;
&lt;br /&gt;
	Subject to the terms and conditions of this Agreement You hereby grant to Us and to recipients of Materials distributed by Us a worldwide, royalty-free, non-exclusive, perpetual and irrevocable (except as stated in Subsection &amp;quot;Revocation of patent license&amp;quot;) patent license, with the right to transfer an unlimited number of non-exclusive licenses or to grant sublicenses to third parties, to make, have made, use, sell, offer for sale, import and otherwise transfer the Contribution and the Contribution in combination with any Material (and portions of such combination). This license applies to all patents owned or controlled by You, whether already acquired or hereafter acquired, that would be infringed by making, having made, using, selling, offering for sale, importing or otherwise transferring of Your Contribution(s) alone or by combination of Your Contribution(s) with any Material.&lt;br /&gt;
	Revocation of patent license&lt;br /&gt;
&lt;br /&gt;
	You reserve the right to revoke the patent license stated in Subsection &amp;quot;Patent license&amp;quot; if We make any infringement claim that is targeted at your Contribution and not asserted for a Defensive Purpose. An assertion of claims of the Patents shall be considered for a &amp;quot;Defensive Purpose&amp;quot; if the claims are asserted against an entity that has filed, maintained, threatened, or voluntarily participated in a patent infringement lawsuit against Us or any of Our licensees.&lt;br /&gt;
	License obligations by Us&lt;br /&gt;
&lt;br /&gt;
	We may, but are under no obligation to, include the Contribution You Submitted to Us into the Material.&lt;br /&gt;
&lt;br /&gt;
	We agree to license the Contribution only under the terms of the following license(s) GPL-3.0 (including any right to adopt any future version of a license if permitted), whereby any non-free or non-open licenses need to be listed as well.&lt;br /&gt;
&lt;br /&gt;
	In addition, We may use the following licenses for Documentation in the Contribution: CC-BY-SA-4.0 (including any right to adopt any future version of a license).&lt;br /&gt;
&lt;br /&gt;
	We agree to license patents owned or controlled by You only to the extent necessary to (sub)license Your Contribution(s) and the combination of Your Contribution(s) with the Material under the terms of the following GPL-3.0 license(s).&lt;br /&gt;
	Disclaimer&lt;br /&gt;
	**We acknowledge that you provide the Contribution &amp;quot;as is&amp;quot;.** **More particularly, You disclaim all express or implied warranties including, without limitation, any implied warranty of satisfactory quality, fitness for a particular purpose and non-infringement. To the extent that any such warranties cannot be disclaimed, such warranty is limited in duration and extent to the minimum period and extent permitted by law.**&lt;br /&gt;
	Consequential damage waiver&lt;br /&gt;
&lt;br /&gt;
	**To the maximum extent permitted by applicable law, in no event will You or We be liable for any loss of profits, loss of anticipated savings, loss of data, indirect, special, incidental, consequential and exemplary damages arising out of this Agreement regardless of the legal or equitable theory (contract, tort or otherwise) upon which the claim is based.**&lt;br /&gt;
	Approximation of disclaimer and damage waiver&lt;br /&gt;
&lt;br /&gt;
	**If the disclaimer and damage waiver mentioned in Subsection &amp;quot;Disclaimer of warranty&amp;quot; and Section &amp;quot;Consequential damage waiver&amp;quot; cannot be given legal effect under applicable local law, reviewing courts shall apply local law that most closely approximates an absolute waiver of all civil or contractual liability in connection with the Contribution.**&lt;br /&gt;
	Term&lt;br /&gt;
&lt;br /&gt;
	This Agreement shall come into effect upon Your acceptance of the terms and conditions.&lt;br /&gt;
&lt;br /&gt;
	This Agreement shall apply for the term of the copyright and patents licensed here. However, You shall have the right to terminate the Agreement if We do not fulfill the obligations as set forth in Section &amp;quot;License obligations by Us&amp;quot;. Such termination must be made in writing.&lt;br /&gt;
&lt;br /&gt;
	In the event of a termination of this Agreement Sections &amp;quot;Disclaimer&amp;quot;, &amp;quot;Term&amp;quot; and &amp;quot;Miscellaneous&amp;quot; shall survive such termination and shall remain in full force thereafter. For the avoidance of doubt, Free and Open Source Software (sub)licenses that have already been granted for Contributions at the date of the termination shall remain in full force after the termination of this Agreement.&lt;br /&gt;
	Miscellaneous&lt;br /&gt;
&lt;br /&gt;
	This Agreement and all disputes, claims, actions, suits or other proceedings arising out of this agreement or relating in any way to it shall be governed by the laws of Ecuador excluding its private international law provisions.&lt;br /&gt;
&lt;br /&gt;
	This Agreement sets out the entire agreement between You and Us for Your Contributions to Us and overrides all other agreements or understandings.&lt;br /&gt;
&lt;br /&gt;
	In case of Your death, this agreement shall continue with Your heirs. In case of more than one heir, all heirs must exercise their rights through a commonly authorized person.&lt;br /&gt;
&lt;br /&gt;
	If any provision of this Agreement is found void and unenforceable, such provision will be replaced to the extent possible with a provision that comes closest to the meaning of the original provision and that is enforceable. The terms and conditions set forth in this Agreement shall apply notwithstanding any failure of essential purpose of this Agreement or any limited remedy to the maximum extent possible under law.&lt;br /&gt;
&lt;br /&gt;
	You agree to notify Us of any facts or circumstances of which you become aware that would make Your representations under this Agreement inaccurate in any respect.&lt;br /&gt;
	You&lt;br /&gt;
	Date:	&lt;br /&gt;
	Name:	&lt;br /&gt;
	Title:	&lt;br /&gt;
	Address:	&lt;br /&gt;
	Us&lt;br /&gt;
	Date:	&lt;br /&gt;
	Name:	&lt;br /&gt;
	Title:	&lt;br /&gt;
	Address:	&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
	Contributor Agreement&lt;br /&gt;
	Entity Contributor Exclusive License Agreement&lt;br /&gt;
	(including the Traditional Patent License OPTION)&lt;br /&gt;
&lt;br /&gt;
	Thank you for your interest in contributing to Eco-Libre&#039;s ____________________ (&amp;quot;We&amp;quot; or &amp;quot;Us&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
	The purpose of this contributor agreement (&amp;quot;Agreement&amp;quot;) is to clarify and document the rights granted by contributors to Us. To make this document effective, please follow the instructions at ____________________.&lt;br /&gt;
	How to use this Contributor Agreement&lt;br /&gt;
&lt;br /&gt;
	If You are an employee and have created the Contribution as part of your employment, You need to have Your employer approve this Agreement. If You do not own the Copyright in Your Contribution, any other author of the Contribution should also sign this. In any event, please contact Us at https://www.eco-libre.org/contact.&lt;br /&gt;
	Definitions&lt;br /&gt;
&lt;br /&gt;
	&amp;quot;You&amp;quot; means the individual Copyright owner who Submits a Contribution to Us; or&lt;br /&gt;
&lt;br /&gt;
	if the Copyright in the Contribution is held by a Legal Entity and the Contribution is being Submitted to Us on behalf of such Legal Entity, &amp;quot;You&amp;quot; means such Legal Entity.&lt;br /&gt;
&lt;br /&gt;
	&amp;quot;Contribution&amp;quot; means any original work of authorship, including any original modifications or additions to an existing work of authorship, Submitted for inclusion into Material by You to Us, in which you own the Copyright.&lt;br /&gt;
&lt;br /&gt;
	&amp;quot;Copyright&amp;quot; means all rights protecting works of authorship, including copyright, moral and neighboring rights, as appropriate, for the full term of their existence.&lt;br /&gt;
&lt;br /&gt;
	&amp;quot;Material&amp;quot; means the software and/or documentation of ____________________ that we make available to third parties.&lt;br /&gt;
&lt;br /&gt;
	&amp;quot;Submit&amp;quot; means any act by which a Contribution is transferred to Us by You by means of tangible or intangible media, including but not limited to electronic mailing lists, source code control systems, and issue tracking systems, but excluding any transfer that is conspicuously marked or otherwise designated in writing by You as &amp;quot;Not a Contribution.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
	&amp;quot;Documentation&amp;quot; means any non-software portion of a Contribution.&lt;br /&gt;
	License grant&lt;br /&gt;
	Copyright license to Us&lt;br /&gt;
&lt;br /&gt;
	Subject to the terms and conditions of this Agreement, You hereby grant to Us a worldwide, royalty-free, exclusive, perpetual and irrevocable (except as stated in Section &amp;quot;Term&amp;quot;) license, with the right to transfer an unlimited number of non-exclusive licenses or to grant sublicenses to third parties, under the Copyright covering the Contribution to use the Contribution by all means, including, but not limited to:&lt;br /&gt;
		publish the Contribution,&lt;br /&gt;
		modify the Contribution,&lt;br /&gt;
		prepare derivative works based upon or containing the Contribution and/or to combine the Contribution with other Materials,&lt;br /&gt;
		reproduce the Contribution in original or modified form,&lt;br /&gt;
		distribute, to make the Contribution available to the public, display and publicly perform the Contribution in original or modified form.&lt;br /&gt;
	Moral rights&lt;br /&gt;
&lt;br /&gt;
	Moral Rights remain unaffected to the extent they are recognized and not waivable by applicable law. Notwithstanding, You may add your name to the attribution mechanism customary used in the Materials you Contribute to, such as the header of the source code files of Your Contribution, and We will respect this attribution when using Your Contribution.&lt;br /&gt;
	Copyright license back to You&lt;br /&gt;
&lt;br /&gt;
	Upon such grant of rights to Us, We immediately grant to You a worldwide, royalty-free, non-exclusive, perpetual and irrevocable license, with the right to transfer an unlimited number of non-exclusive licenses or to grant sublicenses to third parties, under the Copyright covering the Contribution to use the Contribution by all means, including, but not limited to:&lt;br /&gt;
		publish the Contribution,&lt;br /&gt;
		modify the Contribution,&lt;br /&gt;
		prepare derivative works based upon or containing the Contribution and/or to combine the Contribution with other Materials,&lt;br /&gt;
		reproduce the Contribution in original or modified form,&lt;br /&gt;
		distribute, to make the Contribution available to the public, display and publicly perform the Contribution in original or modified form.&lt;br /&gt;
&lt;br /&gt;
	This license back is limited to the Contribution and does not provide any rights to the Material.&lt;br /&gt;
	Patents&lt;br /&gt;
	Patent license&lt;br /&gt;
&lt;br /&gt;
	Subject to the terms and conditions of this Agreement You hereby grant to Us and to recipients of Materials distributed by Us a worldwide, royalty-free, non-exclusive, perpetual and irrevocable (except as stated in Subsection &amp;quot;Revocation of patent license&amp;quot;) patent license, with the right to transfer an unlimited number of non-exclusive licenses or to grant sublicenses to third parties, to make, have made, use, sell, offer for sale, import and otherwise transfer the Contribution and the Contribution in combination with any Material (and portions of such combination). This license applies to all patents owned or controlled by You, whether already acquired or hereafter acquired, that would be infringed by making, having made, using, selling, offering for sale, importing or otherwise transferring of Your Contribution(s) alone or by combination of Your Contribution(s) with any Material.&lt;br /&gt;
	Revocation of patent license&lt;br /&gt;
&lt;br /&gt;
	You reserve the right to revoke the patent license stated in Subsection &amp;quot;Patent license&amp;quot; if We make any infringement claim that is targeted at your Contribution and not asserted for a Defensive Purpose. An assertion of claims of the Patents shall be considered for a &amp;quot;Defensive Purpose&amp;quot; if the claims are asserted against an entity that has filed, maintained, threatened, or voluntarily participated in a patent infringement lawsuit against Us or any of Our licensees.&lt;br /&gt;
	License obligations by Us&lt;br /&gt;
&lt;br /&gt;
	We may, but are under no obligation to, include the Contribution You Submitted to Us into the Material.&lt;br /&gt;
&lt;br /&gt;
	We agree to license the Contribution only under the terms of the following license(s) GPL-3.0 (including any right to adopt any future version of a license if permitted), whereby any non-free or non-open licenses need to be listed as well.&lt;br /&gt;
&lt;br /&gt;
	In addition, We may use the following licenses for Documentation in the Contribution: CC-BY-SA-4.0 (including any right to adopt any future version of a license).&lt;br /&gt;
&lt;br /&gt;
	We agree to license patents owned or controlled by You only to the extent necessary to (sub)license Your Contribution(s) and the combination of Your Contribution(s) with the Material under the terms of the following GPL-3.0 license(s).&lt;br /&gt;
	Disclaimer&lt;br /&gt;
	**We acknowledge that you provide the Contribution &amp;quot;as is&amp;quot;.** **More particularly, You disclaim all express or implied warranties including, without limitation, any implied warranty of satisfactory quality, fitness for a particular purpose and non-infringement. To the extent that any such warranties cannot be disclaimed, such warranty is limited in duration and extent to the minimum period and extent permitted by law.**&lt;br /&gt;
	Consequential damage waiver&lt;br /&gt;
&lt;br /&gt;
	**To the maximum extent permitted by applicable law, in no event will You or We be liable for any loss of profits, loss of anticipated savings, loss of data, indirect, special, incidental, consequential and exemplary damages arising out of this Agreement regardless of the legal or equitable theory (contract, tort or otherwise) upon which the claim is based.**&lt;br /&gt;
	Approximation of disclaimer and damage waiver&lt;br /&gt;
&lt;br /&gt;
	**If the disclaimer and damage waiver mentioned in Subsection &amp;quot;Disclaimer of warranty&amp;quot; and Section &amp;quot;Consequential damage waiver&amp;quot; cannot be given legal effect under applicable local law, reviewing courts shall apply local law that most closely approximates an absolute waiver of all civil or contractual liability in connection with the Contribution.**&lt;br /&gt;
	Term&lt;br /&gt;
&lt;br /&gt;
	This Agreement shall come into effect upon Your acceptance of the terms and conditions.&lt;br /&gt;
&lt;br /&gt;
	This Agreement shall apply for the term of the copyright and patents licensed here. However, You shall have the right to terminate the Agreement if We do not fulfill the obligations as set forth in Section &amp;quot;License obligations by Us&amp;quot;. Such termination must be made in writing.&lt;br /&gt;
&lt;br /&gt;
	In the event of a termination of this Agreement Sections &amp;quot;Disclaimer&amp;quot;, &amp;quot;Term&amp;quot; and &amp;quot;Miscellaneous&amp;quot; shall survive such termination and shall remain in full force thereafter. For the avoidance of doubt, Free and Open Source Software (sub)licenses that have already been granted for Contributions at the date of the termination shall remain in full force after the termination of this Agreement.&lt;br /&gt;
	Miscellaneous&lt;br /&gt;
&lt;br /&gt;
	This Agreement and all disputes, claims, actions, suits or other proceedings arising out of this agreement or relating in any way to it shall be governed by the laws of Ecuador excluding its private international law provisions.&lt;br /&gt;
&lt;br /&gt;
	This Agreement sets out the entire agreement between You and Us for Your Contributions to Us and overrides all other agreements or understandings.&lt;br /&gt;
&lt;br /&gt;
	In case of Your death, this agreement shall continue with Your heirs. In case of more than one heir, all heirs must exercise their rights through a commonly authorized person.&lt;br /&gt;
&lt;br /&gt;
	If any provision of this Agreement is found void and unenforceable, such provision will be replaced to the extent possible with a provision that comes closest to the meaning of the original provision and that is enforceable. The terms and conditions set forth in this Agreement shall apply notwithstanding any failure of essential purpose of this Agreement or any limited remedy to the maximum extent possible under law.&lt;br /&gt;
&lt;br /&gt;
	You agree to notify Us of any facts or circumstances of which you become aware that would make Your representations under this Agreement inaccurate in any respect.&lt;br /&gt;
	You&lt;br /&gt;
	Date:	&lt;br /&gt;
	Name:	&lt;br /&gt;
	Title:	&lt;br /&gt;
	Address:	&lt;br /&gt;
	Us&lt;br /&gt;
	Date:	&lt;br /&gt;
	Name:	&lt;br /&gt;
	Title:	&lt;br /&gt;
	Address:	&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# well, I&#039;m still not sure what to use. In the meantime, I went ahead and updated the wiki ToS to include an unaltered version of the Linux Foundation&#039;s DCO https://wiki.eco-libre.org/wiki/Eco-Libre:Terms_of_Service&lt;br /&gt;
## I also added a section on the license, because the DCO (which I can&#039;t edit) referes to &amp;quot;the open source license indicated in the file&amp;quot;&lt;br /&gt;
## alright, that&#039;s a placeholder. I&#039;ll wait to see if we get a response from the home automation folks and/or the OSHWA.&lt;br /&gt;
# oh, TIL that OSE *does* use CERN OHL-S-2.0 for hardware files https://wiki.opensourceecology.org/wiki/OSE_License_for_Distributive_Economics&lt;br /&gt;
## but their wiki is a mess. it says dual-licensed under the GNU Free Documentation License and CC BY-SA on this page https://wiki.opensourceecology.org/wiki/Media-wiki:Copyright&lt;br /&gt;
## while this page says just CC BY-SA for wiki and design files, CERN OHL-S-2.0 for hardware files, and GPL v3 for code https://wiki.opensourceecology.org/wiki/OSE_License_for_Distributive_Economics&lt;br /&gt;
## there&#039;s a section on CAs, which just says that we need a paper with NAME OF PERSON and SPECIFIED DATE https://wiki.opensourceecology.org/wiki/OSE_License_for_Distributive_Economics&lt;br /&gt;
## looks like they started working on a &amp;quot;distributed enterprise license&amp;quot; – but I can&#039;t find anything but a sketch outline&lt;br /&gt;
### https://wiki.opensourceecology.org/wiki/OSE_License_for_Distributive_Enterprise&lt;br /&gt;
### https://wiki.opensourceecology.org/wiki/OSE_License_for_Distributive_Economics_-_Requirements&lt;br /&gt;
## ah ha! apparently Marcin&#039;s legal advisor volunteer person suggested https://contributoragreements.org per https://wiki.opensourceecology.org/wiki/Contributor_Agreement&lt;br /&gt;
# alright, I think I&#039;ll do one of the contributoragreements.org developed above. I&#039;ll draft it into a nice-looking odt -&amp;gt; pdf and upload it to opensign. then we&#039;ll be ready to accept volunteer contributions to our repos &amp;amp; wiki, like, very legally sound &lt;br /&gt;
&lt;br /&gt;
== 2026-04-21 ==&lt;br /&gt;
# I published and did the social media marketing for our announcement that we&#039;re accepting tax-deductable donations via raft today https://www.eco-libre.org/raft-2026/&lt;br /&gt;
# I, again, was unable to post to our X account.&lt;br /&gt;
## even though I enter the correct password, they demand an OTP sent to the email address used when the account was registered&lt;br /&gt;
## I guess they fired all the ex-twitter engineers with a brain, because they can&#039;t see that their emails are bouncing?&lt;br /&gt;
## I, maybe the 3rd or 4th time, told them that tutanota deleted our email address. And asked them to update the email address to one @eco-libre.org, which is pretty easy for a junior engineer to authenticate, since it&#039;s literally the domain assoaciated with our account. Auth done. QED. Here&#039;s their response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Reply above this line.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Hello,&lt;br /&gt;
&lt;br /&gt;
We=E2=80=99re writing to let you know that we=E2=80=99re unable to verify y=&lt;br /&gt;
ou as the account owner. We know this is disappointing to hear, but we can=&lt;br /&gt;
=E2=80=99t assist you further with accessing your account.&lt;br /&gt;
&lt;br /&gt;
If you know which email address or phone number is associated with the acco=&lt;br /&gt;
unt, and you no longer have access to that email or connected phone number,=&lt;br /&gt;
 please contact your service provider for assistance.&lt;br /&gt;
&lt;br /&gt;
For privacy reasons, we can=E2=80=99t provide any information about this ac=&lt;br /&gt;
count=E2=80=99s registered email address or phone number&lt;br /&gt;
&lt;br /&gt;
We understand it=E2=80=99s frustrating to get locked out of an account, but=&lt;br /&gt;
 we have these policies to protect accounts and private data. We appreciate=&lt;br /&gt;
 your understanding.&lt;br /&gt;
&lt;br /&gt;
You=E2=80=99re more than welcome to create a new account to get back onto X=&lt;br /&gt;
.&lt;br /&gt;
&lt;br /&gt;
Please do not respond to this email as replies to this account are not moni=&lt;br /&gt;
tored.&lt;br /&gt;
&lt;br /&gt;
Thanks,&lt;br /&gt;
X Support&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## So, fuck X. This is why we shouldn&#039;t use corporate, non-federated social media.&lt;br /&gt;
## oh, and I was also unable to log into reddit. Similar issue. I get this, just for a GET on /login – before they even asked me for creds!&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
You&#039;ve been blocked by network security.&lt;br /&gt;
If you think you&#039;ve been blocked by mistake, file a ticket below and we&#039;ll look into it.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# again, this is why we use better non-corportate social media. Now on lemmy!&lt;br /&gt;
## https://chaos.social/@ecolibre/116443354810130299&lt;br /&gt;
## https://slrpnk.net/post/36851013&lt;br /&gt;
# woah, mastodon has a new link under the post that says &amp;quot;More from Eco-Libre Team&amp;quot; which links here https://mastodon.social/@eco-libre@www.eco-libre.org&lt;br /&gt;
## that&#039;s, uhh, our wordpress site&#039;s ActivityPub plugins&#039; actor! The one that I couldn&#039;t finish setting-up due to the 5xx error (see previous log entries)&lt;br /&gt;
## so i guess it&#039;s working under defaults&lt;br /&gt;
## as I found before, it doesn&#039;t show previous content until after you subscribe, so the page on mastodon doesn&#039;t even show today&#039;s post :(&lt;br /&gt;
## I&#039;m thinking the best way to use this is to not really advertise wordpress as an endpoint. But, rather, to just setup our other federated-service-x-native account to subscribe and auto-boost our wordpress posts. That way we don&#039;t even have to login to mastodon or lemmy or whatever else. We can just automate the distribution from wordpress via ActivityPub to all our other federated social media accounts.&lt;br /&gt;
## anyway, I subscribed to @eco-libre@www.eco-libre.org from my personal mastodon account and our eco-libre mastodon account. let&#039;s see what that looks like over time.&lt;br /&gt;
# I logged-into our raft (private) discourse to ask if they have a mastodon account https://raft.talk/t/following-raft-on-the-fediverse/45/1&lt;br /&gt;
## I also followd-up with a thread in which I asked about a vector logo. Nathan (founder) said they don&#039;t have one, so I spent about an hour generating a few different decent-looking vectors from the png using inkscape&#039;s Trace Bitmap tool, and shared it – so others can have it in the future https://raft.talk/t/raft-logo-vector-svg/31/3&lt;br /&gt;
## I also realized that I had started (but not finished) asking the community for advice on how to get volunteers from &amp;quot;volutneer social year&amp;quot; programs like the Freiwilliges Soziales Jahr in Germany or the European Solidarity Corps or the US Peace Corps. So I finished that https://raft.talk/t/getting-state-sponsored-volunteers-voluntary-social-year/46&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Does anyone have experience here in getting volunteers via State-sponsored programs, like the US Peace Core, Germany&#039;s Voluntary Social Year (Freiwilliges Soziales Jahr), or the EU Solidarity Corps?&lt;br /&gt;
&lt;br /&gt;
 * https://en.wikipedia.org/wiki/Voluntary_social_year&lt;br /&gt;
 * https://en.wikipedia.org/wiki/European_Solidarity_Corps&lt;br /&gt;
&lt;br /&gt;
I&#039;ve met a *lot* of Germans (and one person from Liechtenstein!) who took their [gap year](https://en.wikipedia.org/wiki/Gap_year) off to go abroad and help some cool non-profit.&lt;br /&gt;
&lt;br /&gt;
Our project&#039;s mission is to develop and document [open-source appropriate technology](https://en.wikipedia.org/wiki/Open-source_appropriate_technology) to enfranchise sustainable communities&#039; human rights. And we need volunteers!&lt;br /&gt;
&lt;br /&gt;
I&#039;m wondering if anyone else here has experience satisfying the requirements of such orgs, so that we can get listed in their &amp;quot;directory of cool nonprofits abroad&amp;quot; that their want-to-be-volunteers will see (and can apply-to).&lt;br /&gt;
&lt;br /&gt;
I imagine that one key requirement is met by us being able to provide Raft&#039;s IRS Determination Letter. What else do we need to do? Where do we apply?&lt;br /&gt;
&lt;br /&gt;
Can anyone with experience provide tips (or a link to a guide?) on how to get volunteers abroad doing a &amp;quot;voluntary social year&amp;quot;?&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# ...&lt;br /&gt;
# back to Terms of Use, which is where we left-off on the wiki&#039;s config of ConfirmAccount extension&lt;br /&gt;
## honestly, we probably should write a ToS for all volunteers, which extends beyond just the wiki&lt;br /&gt;
## I have already drafted (not yet published) some agreements for volunteers, but we haven&#039;t had any in-person volunteers that required us to use it&lt;br /&gt;
## so, I guess, we need distinct agreements for people who volunteer remotely vs volunteer in-person&lt;br /&gt;
## in any case, even in-person volunteers are going to start remotely &amp;gt;99% of the time, so we should probably figure out some system for them to &amp;quot;sign a document&amp;quot; such that a copy gets sent to them and stored with us&lt;br /&gt;
## the first thing that comes to the top of my head is copyleft. We need folks to agree that all of their contributions to Eco-Libre will be copyleft under dual license of CC BY-SA and GNU GPL.&lt;br /&gt;
## can I find some libre service that&#039;s like docusign for this? https://alternativeto.net/software/docusign/&lt;br /&gt;
### DocuSeal https://www.docuseal.com&lt;br /&gt;
#### + free cloud account (limited to 10 field types and 10 requests emails per month)&lt;br /&gt;
#### + self-hostable https://github.com/docusealco/docuseal&lt;br /&gt;
#### - docker https://www.docuseal.com/install&lt;br /&gt;
#### - even self -hosted solution has usage limits without buying a license https://www.docuseal.com/pricing&lt;br /&gt;
### OpenSign https://www.opensignlabs.com&lt;br /&gt;
#### + free cloud account (limited to 14 field types)&lt;br /&gt;
#### + self hostable https://www.docuseal.com&lt;br /&gt;
#### - docker https://docs.opensignlabs.com/docs/category/docker&lt;br /&gt;
#### + self-hosted doesn&#039;t appear to have any restrictions&lt;br /&gt;
### Documenso https://docs.opensignlabs.com/docs/category/docker&lt;br /&gt;
#### + free cloud account (limited to 5 documents per month) https://documenso.com/pricing&lt;br /&gt;
#### + self-hostable https://github.com/documenso/documenso&lt;br /&gt;
#### - docker https://docs.documenso.com/docs/self-hosting/deployment&lt;br /&gt;
#### + baremetal (non-docker) installation is documented https://github.com/documenso/documenso&lt;br /&gt;
#### - it&#039;s nodejs w/ npm&lt;br /&gt;
### LibreSign https://libresign.coop/&lt;br /&gt;
#### - no free cloud plan https://libresign.coop/pricing/&lt;br /&gt;
#### + self-hostable https://github.com/LibreSign/libresign&lt;br /&gt;
#### - no docs for self-hosting? installtion guide?&lt;br /&gt;
#### + github says it&#039;s a nextcloud app&lt;br /&gt;
## well, of thse, I think OpenSign or DDocumenso are the best options. my biggest concern is: can we export everything from the site, if they ever eliminate their free plan (or we outgrow them)?&lt;br /&gt;
## let&#039;s create accounts with both and get a feel for it&lt;br /&gt;
### well, shit, the signup page for documenso included their &amp;quot;sign here&amp;quot; digital field. It was so shitty, it nearly crashed my browser. so let&#039;s try open sign instead.&lt;br /&gt;
## ugh, OpenSign requires a phone number on sign-up&lt;br /&gt;
### ugh, password policy is dumb. it rejected a &amp;gt;50 char password because it requires a special symbol. makes me question their security. fortunately, these documents would need to be public, anyway.&lt;br /&gt;
### it accepted a bullshit phone number. good&lt;br /&gt;
### I immediately went to settings&lt;br /&gt;
#### I changed the document download filename format to include the date. It always bothers me when documents aren&#039;t dated in the filename..&lt;br /&gt;
#### I changed the date format to YYYY-MM-DD – iso format, sortable, and no ambiguity&lt;br /&gt;
#### In the setting&#039;s &amp;quot;widgets&amp;quot; tab, I also set the date to YYYY-MM-DD&lt;br /&gt;
#### In the settings&#039; &amp;quot;security&amp;quot; tab, I setup TOTP 2FA&lt;br /&gt;
### I went to my &amp;quot;profile&amp;quot;&lt;br /&gt;
#### It said my email wasn&#039;t verified. I never got an email *to* verify. I clicked the &amp;quot;Verify&amp;quot; button&lt;br /&gt;
##### gross. it sent an email with an OTP. the email had text/plain, but the only contents was &amp;quot;otp email&amp;quot;. I had to dig through some html to find the code.&lt;br /&gt;
# I clicked around in OpenSign. I expected there would be some place where I could type a document, but it only allows me to upload a pdf, jpg, png, jpeg, or docx. whey not OpenOffice (LibreOffice)? Hmm.&lt;br /&gt;
# not sure how this translates into being able to add input fields.&lt;br /&gt;
# using libreoffice, I created a test document with the contents&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
I agree not to act like an evil corporation.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# I exported it as a pdf, and uploaded it as a new &amp;quot;template&amp;quot; to opensign&lt;br /&gt;
## there&#039;s a lot of settings you can make&lt;br /&gt;
### you can change it so that everyone can sign at once, or (the default) has the intended party sign, then I sign. But I&#039;m not sure if I will *want* Eco-Libre to sign these documents at all?&lt;br /&gt;
### you can set the number of days that the person has to sign. it defaults to 15.&lt;br /&gt;
### you can add a bcc&lt;br /&gt;
### you can make the &amp;quot;certification pdf&amp;quot; merged into the signed document. well, apparently only if you pay for an upgrade. whatever.&lt;br /&gt;
### ah man, there&#039;s a cool feature that requries an OTP from the email address, but it requires upgrade&lt;br /&gt;
### you can specify a &amp;quot;redirect url&amp;quot; which is blank by default. I guess that&#039;s where they get sent after signing. That&#039;s cool. I could have it redirect to a &amp;quot;thank you; here&#039;s the next steps&amp;quot; doc. I set it to &#039;https://eco-libre.github.io/volunteer-test/&#039;&lt;br /&gt;
#### I&#039;m beginning to wonder if I shouldn&#039;t have made a repo named &#039;volunteer-test&#039; but instead made one named &#039;volunteer-onboarding&#039; in-which the volunteer test was only one section. hmm.&lt;br /&gt;
### the only other thing I could change was the pen ink colors. here in Ecuador, everything should be blue. so I disabled black and red.&lt;br /&gt;
## ok, after I click &amp;quot;next&amp;quot; I can decorate the page with a bunch of widgets. note that I cannot edit the text&lt;br /&gt;
### you can add a &amp;quot;role&amp;quot; for someone to sign. I just want one = the volunteer. So I added one named &amp;quot;Volunteer&amp;quot;&lt;br /&gt;
### I clicked the &amp;quot;Signature&amp;quot; widget, and a blue box popped-up on the bottom of the page&lt;br /&gt;
#### I hovered over it with my mouse, and a &amp;quot;gear&amp;quot; &amp;quot;person&amp;quot; &amp;quot;copy&amp;quot; and &amp;quot;trash&amp;quot; icons appeared.&lt;br /&gt;
#### I clicked the gear, and it let me choose the type of signatures accepted (draw, typed, upload, or default), and a &amp;quot;hint&amp;quot;&lt;br /&gt;
#### I clicked the &amp;quot;person&amp;quot; and it let me choose someone from contacts. I&#039;m creating a template, so that doesn&#039;t make sense (unless we had, like, *me* signing every document – which I don&#039;t think we&#039;ll do). So I left that empty&lt;br /&gt;
### there&#039;s a &amp;quot;text input widget&amp;quot;, which I guess is how I would let someone enter their name. I can make it optional, required, or read-only (relavant for the other &amp;quot;default value&amp;quot; option). I can change the font size and font color. So, I guess, the idea is that I would have left a blank space in the pdf, and later decorated it with this widget. I&#039;ll do that for the next test.&lt;br /&gt;
### there&#039;s a &amp;quot;image&amp;quot; widget – as in, the user can upload an image (I guess useful for profile photos)&lt;br /&gt;
### there&#039;s also widgets for stamp, initials, number, name, job title, company, email, date, cells, checkbox, dropdown, and radio button&lt;br /&gt;
### I dropped the &amp;quot;name&amp;quot; widget randomly near the top. So now I have two: name &amp;amp; signature.&lt;br /&gt;
### I saved the template&lt;br /&gt;
### I went back and edited it. I realized there&#039;s an option &amp;quot;prefiil by owner&amp;quot; vs &amp;quot;volunteer&amp;quot;. apparently I can add the name and stuff before I send it out. I left it at &amp;quot;volunteer&amp;quot;&lt;br /&gt;
## there was an option to make the template public, but I don&#039;t have a public profile. I went to edit my profile, but the box for entering my username for the public profile is grey-out. Unlike other places, it doesn&#039;t say &amp;quot;upgrade now&amp;quot; so idk wtf is going on&lt;br /&gt;
### after making it public, it gave me some js to embed the document. oh, so this is so that I can embed the docs on my own site. well, that&#039;s kinda cool. but I really don&#039;t want to embed a third party javascript.&lt;br /&gt;
## anyway, back to &amp;quot;manage templates&amp;quot;&lt;br /&gt;
### I tried to edit the template again, but it gave me an error&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
You cannot edit a public template directly. To make changes, the template will be set to private, and you&#039;ll need to make it public again afterward. Do you want to continue?&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
### so I unchecked &amp;quot;public&amp;quot; and edited it&lt;br /&gt;
### I added a &amp;quot;date&amp;quot; widget. I set it to &amp;quot;signing date&amp;quot; and &amp;quot;read only&amp;quot; and &amp;quot;required&amp;quot; and placed it just above the signature&lt;br /&gt;
## I went back to &amp;quot;manage templates&amp;quot; and clicked the &amp;quot;+ use&amp;quot; button.&lt;br /&gt;
### it gave me a drop down menu of our contacts, but it&#039;s empty. so I pressed the red &amp;quot;+&amp;quot; button to add a new contact&lt;br /&gt;
### I added a contact named &amp;quot;Michael Altfield&amp;quot; and my email address. then I selected this contact and clicked &amp;quot;next&amp;quot;&lt;br /&gt;
### It asked &amp;quot; Are you sure you want to send out this document for signatures?&amp;quot; and I clicked &amp;quot;Send&amp;quot;&lt;br /&gt;
### I immediately got an email. Again, the shitty email plaintext contetns was just &amp;quot;mail&amp;quot; and I had to read-through the html to find a encoding-broken link :/&lt;br /&gt;
#### I created a bug report for them to fix the `text/plain` content type of emails here https://github.com/OpenSignLabs/OpenSign/issues/2156&lt;br /&gt;
### using some mutt scripting fuckery, I&#039;m able to extract the URLs. But I can&#039;t figure out which one is to go to the document. Two of the four are both to &amp;quot;click.opensignlabs.com. the first one appears to go to a login page, and the second one doesn&#039;t. I tried the second one&lt;br /&gt;
#### wtf, that link brought me to a single dark page with a single dead pixel in the center of the screen.&lt;br /&gt;
### ok, looks like the first link (with the login that I was trying to avoid) is a button that says &amp;quot;sign here&amp;quot;&lt;br /&gt;
### ohhh, and the other one is an image. I guess it&#039;s a tracking pixel. that explains it.&lt;br /&gt;
### back in my admin dashboard, under Documents -&amp;gt; In-Progress, I can see Michael Altfield has &amp;quot;Yet to sign&amp;quot;&lt;br /&gt;
### If I click on &amp;quot;sent&amp;quot; then there&#039;s a section &amp;quot;viewed on&amp;quot; and &amp;quot;signed on&amp;quot; that are both &amp;quot;-&amp;quot; – so I guess that tracking pixel didn&#039;t really work, huh..&lt;br /&gt;
### fine, I went to the first link&lt;br /&gt;
#### oh, awesome, it didn&#039;t make me login! It redirected me to the document. perfect! It popped-up a modal that said&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
I confirm that I have read and understood the Electronic Record and Signature Disclosure and consent to use electronic records and signatures.&lt;br /&gt;
Note: Agreeing to this does not mean you are signing the document immediately. This only allows you to review the document electronically. You will have the opportunity to read it in full and decide whether to sign it afterward.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
### I clicked &amp;quot;I confirm &amp;amp; agree to continue&amp;quot;&lt;br /&gt;
### it did the whole modal popup &amp;quot;guide&amp;quot; thing, which was an option I could have disabled. basically it said to type my name (which was, cool, auto-completed to &amp;quot;Michael Altfield&amp;quot;), listed the signers (just me), and then highlighted the widgets at the bottom (date and sig), then told me how to zoom-in, then highlighted the &amp;quot;you&#039;re done&amp;quot; buttons = &amp;quot;decline&amp;quot; &amp;quot;download&amp;quot; or &amp;quot;finish&amp;quot;&lt;br /&gt;
### it let me change my name, but I should probably make that read-only now that I know it auto-completes with the name from the contacts&lt;br /&gt;
### it wouldn&#039;t let me change the date, which it autocompletd to today&lt;br /&gt;
### it did let me click on the signature widget, which opened a modal with a box where I could draw my nanme. I did that. It was fast, wayy better than Documenso – no issues here with the browser crashing&lt;br /&gt;
### alternatively, I could click &amp;quot;type&amp;quot; and it displayed my name in some cursive fonts, which I could choose-from. and there was an option to upload image.&lt;br /&gt;
### I chose draw and did my signature and clicked next. very fast.&lt;br /&gt;
### it asked if I&#039;m sure I want to finish the doc. I clicked &amp;quot;Review&amp;quot;&lt;br /&gt;
### then I clicked the &amp;quot;finish&amp;quot; button at the top&lt;br /&gt;
### it said this&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Document signed&lt;br /&gt;
Congratulations! 🎉 This document has been successfully signed by all participants!&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
### and there was a countdown to redirect. in 3 seconds, the browser redirected to here. perfect! https://eco-libre.github.io/volunteer-test/en/main/&lt;br /&gt;
### back in the opensign admin dashboard, the row is absent from &amp;quot;Documents -&amp;gt; in progress&amp;quot;. I found it in &amp;quot;documents -&amp;gt; completed&amp;quot;&lt;br /&gt;
### I clicked the &amp;quot;eye&amp;quot; next to the document, and it showed me the document, including the signature that I left in the other browser. I can also click &amp;quot;print&amp;quot; or &amp;quot;certifiacte&amp;quot; or &amp;quot;download&amp;quot;&lt;br /&gt;
#### &amp;quot;print&amp;quot; does what you&#039;d expect. I can print or use the browser&#039;s &amp;quot;save to pdf&amp;quot; of the document, which includes the signature&lt;br /&gt;
#### &amp;quot;certifiacte&amp;quot; opens some legal-looking pdf (something similar to docusign) with a some metadata, including a sah256 hash, ip address of both document issuer (me) and the signer (also me, but different IP because Tor). And it includes an image of the drawn signature.&lt;br /&gt;
#### &amp;quot;download&amp;quot; then lets me choose if i want the download pdf or downlaod pdf + certifiate. I chose both.&lt;br /&gt;
##### lol that failed. the browser didn&#039;t let me download both&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Something went wrong, refreshing this page may solve this issue&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
#### I tried just &amp;quot;downlaod pdf&amp;quot;&lt;br /&gt;
##### that gave me the document, plus the signature and other &amp;quot;widgets&amp;quot; filled-out, plus the following in the top-left&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
OpenSign™ DocumentId: pS5lEdCyIp&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
##### I guess that&#039;s something like their observatory. they said I can turn it off only if I have a paid plan. But it&#039;s probably necessary for them as a thrid party to confirm the signature.&lt;br /&gt;
#### anyway, I tested the hash on the file that I downloaded&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[user@disp6411 Downloads]$ sha256sum Test\ Agreement\ -\ REDACTED@eco-libre.org\ -\ 21-Apr-2026\ 04_01\ PM.pdf &lt;br /&gt;
569152424a49024297f4bb550291036896de3189e70efb1fee6a9e39333bbe77  Test Agreement - REDACTED@eco-libre.org - 21-Apr-2026 04_01 PM.pdf&lt;br /&gt;
[user@disp6411 Downloads]$ &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
#### I wanted to confirm that matches the certificate, but when I clicked &amp;quot;certificate&amp;quot; again, I got a permissions issue!&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;Error&amp;gt;&lt;br /&gt;
&amp;lt;Code&amp;gt;AccessDenied&amp;lt;/Code&amp;gt;&lt;br /&gt;
&amp;lt;Message&amp;gt;Request has expired.&amp;lt;/Message&amp;gt;&lt;br /&gt;
&amp;lt;Resource&amp;gt;&lt;br /&gt;
legadratw3d/460246e423800b30c50c967ef6157248_certificate.pdf&lt;br /&gt;
&amp;lt;/Resource&amp;gt;&lt;br /&gt;
&amp;lt;RequestId&amp;gt;not available&amp;lt;/RequestId&amp;gt;&lt;br /&gt;
&amp;lt;/Error&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
### fortunately I still had it open in another tab, and I copied this from it&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Generated On 2026-04-21, 15:56:29 GMT -05:00&lt;br /&gt;
Certificate of Completion&lt;br /&gt;
Summary&lt;br /&gt;
Document Id : pS5lEdCyIp&lt;br /&gt;
Document Name : Test Agreement&lt;br /&gt;
Document hash (sha256) : 569152424a49024297f4bb550291036896de3189e70efb1fee6a9e39333bbe77&lt;br /&gt;
Organization : Eco-Libre&lt;br /&gt;
Created on : 2026-04-21, 15:25:55 GMT -05:00&lt;br /&gt;
Completed on : 2026-04-21, 15:56:29 GMT -05:00&lt;br /&gt;
Signers : 1&lt;br /&gt;
Document originator&lt;br /&gt;
Name : Eco-Libre&lt;br /&gt;
Email : REDACTED@eco-libre.org&lt;br /&gt;
IP address : 94.185.80.231&lt;br /&gt;
Signer 1&lt;br /&gt;
Name : Michael Altfield&lt;br /&gt;
Email : REDACTED@eco-libre.org&lt;br /&gt;
Viewed on : 2026-04-21, 15:50:32 GMT -05:00&lt;br /&gt;
Signed on : 2026-04-21, 15:56:29 GMT -05:00&lt;br /&gt;
IP address : 2001:67c:e60:c0c:192:42:116:52&lt;br /&gt;
Signature :&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
### so the hashes do match; that&#039;s cool&lt;br /&gt;
### but will I be able to view the certificates in the future?!?&lt;br /&gt;
### I went back to the admin dashboard -&amp;gt; documents -&amp;gt; completed -&amp;gt; (eye icon) -&amp;gt; certificate&lt;br /&gt;
#### ok, that worked. I can pull it up again.&lt;br /&gt;
### curiously it still says I&#039;ve sent 0/15 emails this month&lt;br /&gt;
#### oh, I refrehed the page. now it says 1/15.&lt;br /&gt;
### I also see that my admin email got an email with an attachment titled &amp;quot;Test Agreement -&lt;br /&gt;
 REDACTED@eco-libre.org - 22-Apr-2026 02:26 AM.pdf&amp;quot; – so I guess it did email it to me&lt;br /&gt;
#### oh, awesome, there&#039;s also an attachment named &amp;quot;certificate.pdf&amp;quot;&lt;br /&gt;
#### the email is 83 KB + 139 KB for the two attachments, so that&#039;s reasonable. and that eliminates a lot of fear around exports. we&#039;ll have this data forever if we keep this email account&#039;s forever (or setup an automated backup process)&lt;br /&gt;
### there&#039;s also this &amp;quot;open sign drive&amp;quot; thing. I wasn&#039;t sure if this was an opt-in or pro feature&lt;br /&gt;
#### looks like the signed document is there too. it&#039;s just called &amp;quot;Test Agreement&amp;quot; – which isn&#039;t very nice, but I can see the &amp;quot;Created date&amp;quot; – which should be good enough.&lt;br /&gt;
## ok, I think we have a solution! this definitely meets our needs – unless/until we get &amp;gt;=6 volunteers per month (if we have them sign two documents each)&lt;br /&gt;
# I spent some time designing a letterhead in LibreOffice&lt;br /&gt;
# looks like what we want is a Contributor License Agreement https://en.wikipedia.org/wiki/Contributor_license_agreement&lt;br /&gt;
# looks like a lot of projects just use the CLA assistant tool on gthub https://cla-assistant.io/&lt;br /&gt;
## that&#039;s kinda cool, but I honestly don&#039;t know how long we&#039;ll be on github. If it&#039;s tied to an issue (and not something actually in git), it&#039;ll be hard to move to codeberg in the future&lt;br /&gt;
## still, I like the tl;dr CLA; short &amp;amp; sweet (maybe too much so) https://gist.github.com/waldyrious/e50feec13683e565769fbd58ce503d4e&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
## tldr-pages contributor agreement&lt;br /&gt;
&lt;br /&gt;
(1) I assert that any past, present and future contributions I make to the tldr-pages project are my own work, and that I have the right to license them.&lt;br /&gt;
&lt;br /&gt;
(2) I agree to license all my contributions to the tldr-pages project under the terms of the license included in the tldr-pages repository I’m contributing to.&lt;br /&gt;
&lt;br /&gt;
(3) I grant the tldr-pages organization a license to distribute my contributions under any open content license compliant with the Open Definition [a], or any open source software license approved by the Open Source Initiative [b], as applicable.&lt;br /&gt;
&lt;br /&gt;
a. http://opendefinition.org/licenses&lt;br /&gt;
&lt;br /&gt;
b. https://opensource.org/licenses/alphabetical&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# apparently Connonical created a project called Harmony for the purpose of making contributor agreements https://www.harmonyagreements.org/&lt;br /&gt;
## apparently these things are more complicated between individuals vs other entities. it&#039;s possible we&#039;ll work with for-profit companies in the future, and for that it&#039;d be good if we were setup to accept both&lt;br /&gt;
## ugh, there&#039;s also a distinction between a &amp;quot;license&amp;quot; and a &amp;quot;assignment&amp;quot;&lt;br /&gt;
### I skimmed their guide, but I couldn&#039;t understand the difference between these two https://www.harmonyagreements.org/guide&lt;br /&gt;
# fedora project also has one, with an emphasis on *not* taking the copyright away from the user (some controversy about copyright transfer in different CLAs – such as from for-profit companies that later fork &amp;amp; lock-up their user-contributed content under a different, less-permisive license (though I really don&#039;t understand how that&#039;s possible if we use a CC SA license) https://docs.fedoraproject.org/en-US/legal/fpca/&lt;br /&gt;
## oh, fedora uses MIT license --which is probably why they need to add all that&lt;br /&gt;
# apahce has one https://www.apache.org/licenses/contributor-agreements.html#clas&lt;br /&gt;
## cool, they accept signing with gpg :D&lt;br /&gt;
# Element (the matrix client) which uses AGPL has a pretty good document, which is 3 pages long https://static.element.io/legal/contributor-license-agreement.pdf&lt;br /&gt;
# a lot of these are kinda software heavy. I wonder if there&#039;s any good OSHW orgs that we can try?&lt;br /&gt;
## I checked OSHWA, but didn&#039;t see a boilerplate CLA that we could copy https://oshwa.org/&lt;br /&gt;
### they did have a CoC. Jesus, how many policies do we need to make? https://oshwa.org/resources/how-to-write-a-code-of-conduct/&lt;br /&gt;
### I publicy tooted @oshwassociation@mastodon.social if they had something to recommend https://chaos.social/@ecolibre/116444933464052302&lt;br /&gt;
### hmm...here they recommend CERN OHL v2 instead of CC BY-SA, if we&#039;re using something like STL files that are generated from CAD design https://oshwa.org/resources/sharing-best-practices/&lt;br /&gt;
## CERN does have some does on CLAs https://ospo.docs.cern.ch/howtos/signing-CLA-DCO/&lt;br /&gt;
## CERN links to this short one, from the Linux Foundation https://developercertificate.org/&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Developer Certificate of Origin&lt;br /&gt;
Version 1.1&lt;br /&gt;
&lt;br /&gt;
Copyright (C) 2004, 2006 The Linux Foundation and its contributors.&lt;br /&gt;
&lt;br /&gt;
Everyone is permitted to copy and distribute verbatim copies of this&lt;br /&gt;
license document, but changing it is not allowed.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Developer&#039;s Certificate of Origin 1.1&lt;br /&gt;
&lt;br /&gt;
By making a contribution to this project, I certify that:&lt;br /&gt;
&lt;br /&gt;
(a) The contribution was created in whole or in part by me and I&lt;br /&gt;
	have the right to submit it under the open source license&lt;br /&gt;
	indicated in the file; or&lt;br /&gt;
&lt;br /&gt;
(b) The contribution is based upon previous work that, to the best&lt;br /&gt;
	of my knowledge, is covered under an appropriate open source&lt;br /&gt;
	license and I have the right under that license to submit that&lt;br /&gt;
	work with modifications, whether created in whole or in part&lt;br /&gt;
	by me, under the same open source license (unless I am&lt;br /&gt;
	permitted to submit under a different license), as indicated&lt;br /&gt;
	in the file; or&lt;br /&gt;
&lt;br /&gt;
(c) The contribution was provided directly to me by some other&lt;br /&gt;
	person who certified (a), (b) or (c) and I have not modified&lt;br /&gt;
	it.&lt;br /&gt;
&lt;br /&gt;
(d) I understand and agree that this project and the contribution&lt;br /&gt;
	are public and that a record of the contribution (including all&lt;br /&gt;
	personal information I submit with it, including my sign-off) is&lt;br /&gt;
	maintained indefinitely and may be redistributed consistent with&lt;br /&gt;
	this project or the open source license(s) involved.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# ok, I think I&#039;m muddling two things here&lt;br /&gt;
## I think the wiki&#039;s TOS should be simpler. If I require all wiki users to become volunteers first, and the volunteer onboarding requires the signing of documents, then the real legal stuff should be in the documents.&lt;br /&gt;
## for now, let&#039;s just do the bullet point thing on the wiki ToS. And I&#039;ll wait to hear back from OSHWA about the CLA for a *proper* leagl document later – maybe TODO when we actually get another volunteer application..&lt;br /&gt;
# I set the ToS to the DCO from the linux foundation https://wiki.eco-libre.org/wiki/Eco-Libre:Terms_of_Service&lt;br /&gt;
## ah crap, I just realized that it says &amp;quot;changing it is not allowed&amp;quot;. I already changed it by removing the Linux Foundation from the name (I moved it to the bottom in an &amp;quot;attribution&amp;quot; section, which is another change! damn ND licenses! I&#039;ll have to find something else)&lt;br /&gt;
# I want to use the tl;dr gist, but it&#039;s not licensed! https://gist.github.com/waldyrious/e50feec13683e565769fbd58ce503d4e#file-tldr-pages-cla-md&lt;br /&gt;
## the profile of the author says they&#039;re a wikipedian and anarchist, so they&#039;ll probably be down to license it openly&lt;br /&gt;
## I asked here https://gist.github.com/waldyrious/e50feec13683e565769fbd58ce503d4e?permalink_comment_id=6112400#gistcomment-6112400&lt;br /&gt;
# another issue with a lot of these CLAs is that they&#039;re pretty old, and don&#039;t touch on AI.&lt;br /&gt;
## I&#039;m thinking we should have a policy that forbids contributions from Eco-Libre volunteers that do any research or design work with AI, since it presents serious legal issues around copyrights. I really do want 100% of our work to be very CC BY-SA. With nothing to muddle the waters. We&#039;re doing this designs ourselves to build an open-source commons, built only individual human contributions and only other openly-licensed works&lt;br /&gt;
## clojure already addressed this in their CLA (they just call it CA = Contributor Agreement) https://clojure.org/dev/contributor_agreement&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
No Generated Code&lt;br /&gt;
&lt;br /&gt;
Clojure’s code is written and reviewed by humans. Code generated by a large language model or similar technology, such as Anthropic’s Claude, GitHub/Microsoft’s Copilot, OpenAI’s ChatGPT, Facebook/Meta’s Code Llama et al, is not compliant with the covenants and representations of Clojure’s Contributor’s Agreement, and is thus not acceptable as code for Clojure.&lt;br /&gt;
&lt;br /&gt;
An exception may be made for human written generators whose source code is contributed along with the patch&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## I don&#039;t like that exception. The source code doesn&#039;t just need to be submitted along with the patch. the whole training set data needs to be submitted along with the patch, which is practically impossible.&lt;br /&gt;
## weird, they call it the &amp;quot;Rich Hickey Contributor Agreement&amp;quot; https://na1.documents.adobe.com/public/esignWidget?wid=CBFCIBAA3AAABLblqZhCSXRbJ7T5RGvmMvmpg3CzvkF_RcpWXMnGWW_W9340ztJ3-ChQ0m18hA-d06ufD8Yk*&lt;br /&gt;
### oh good, the document itself is CC BY-SA&lt;br /&gt;
## the source for it was oracle&#039;s OCA https://www.oracle.com/technetwork/oca-faq-405384.pdf&lt;br /&gt;
### yeah, the second-to-last FAQ question says that the OCA is CC BY-SA &lt;br /&gt;
### looks like neither of them mention AI in the document itself :/&lt;br /&gt;
### maybe I don&#039;t like the RHCA contents, but I do really like the header and footer and how clearly it&#039;s licened itself as CC BY-SA&lt;br /&gt;
# the linux foundation has a CLA generator, but it&#039;s authwalled :( https://easycla.lfx.linuxfoundation.org/#/&lt;br /&gt;
# cyanogenmod&#039;s is pretty nice; not too long. unfortunately the license isn&#039;t clear https://web.archive.org/web/20160308140334/http://review.cyanogenmod.org/static/cla_individual.html&lt;br /&gt;
# same for Discourse; it&#039;s about 7 paragraph bullet points long. unfortuantely the license isn&#039;t clear https://cla-assistant.io/discourse/discourse&lt;br /&gt;
## apparently it&#039;s an apache license https://github.com/cla-assistant/cla-assistant/blob/main/LICENSE&lt;br /&gt;
# django has two: indivdual and corproate. apparently adapted from apache&#039;s (so likely licensed under apache, but I should confirm&lt;br /&gt;
## https://media.djangoproject.com/foundation/icla.pdf&lt;br /&gt;
## https://media.djangoproject.com/foundation/icla.pdf&lt;br /&gt;
# evil corps like meta and google have CLAs, but I doubt they&#039;re licensed openly&lt;br /&gt;
## https://code.facebook.com/cla/individual&lt;br /&gt;
## https://cla.developers.google.com/about/google-individual?csw=1&lt;br /&gt;
# here&#039;s hashicorp&#039;s. I don&#039;t think it&#039;s licensed openly https://www.hashicorp.com/en/cla&lt;br /&gt;
# Here&#039;s Hoe Assistant https://www.home-assistant.io/blog/2017/01/21/home-assistant-governance/&lt;br /&gt;
## apparently Matthew Garret convinced them to change their CLA from GitHub&#039;s to this one https://www.home-assistant.io/blog/2017/01/21/home-assistant-governance/&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
By making a contribution to this project, I certify that:&lt;br /&gt;
&lt;br /&gt;
(a) The contribution was created in whole or in part by me and I&lt;br /&gt;
	have the right to submit it under the Apache 2.0 license; or&lt;br /&gt;
&lt;br /&gt;
(b) The contribution is based upon previous work that, to the best&lt;br /&gt;
	of my knowledge, is covered under an appropriate open source&lt;br /&gt;
	license and I have the right under that license to submit that&lt;br /&gt;
	work with modifications, whether created in whole or in part&lt;br /&gt;
	by me, under the Apache 2.0 license; or&lt;br /&gt;
&lt;br /&gt;
(c) The contribution was provided directly to me by some other&lt;br /&gt;
	person who certified (a), (b) or (c) and I have not modified&lt;br /&gt;
	it.&lt;br /&gt;
&lt;br /&gt;
(d) I understand and agree that this project and the contribution&lt;br /&gt;
	are public and that a record of the contribution (including all&lt;br /&gt;
	personal information I submit with it) is maintained indefinitely&lt;br /&gt;
	and may be redistributed consistent with this project or the open&lt;br /&gt;
	source license(s) involved.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## is it just me, or does that look like the one from the Linux Foundation, except it was modified to have the section saying &amp;quot;you can&#039;t modify this&amp;quot; removed. Hmm./.&lt;br /&gt;
## yeah, they say that in attribtuion&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
The text of this license is available under the Creative Commons Attribution-ShareAlike 3.0 Unported License. It is based on the Linux Developer Certificate Of Origin, but is modified to explicitly use the Apache 2.0 license and not mention sign-off.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## idk, maybe they got explicit permission from the Linux Foundation to modify it and re-license it CC BY-SA?&lt;br /&gt;
## I asked them if they got permission and to publish proof, so we could do the same https://github.com/home-assistant/home-assistant.io/issues/44892&lt;br /&gt;
&lt;br /&gt;
== 2026-04-20 ==&lt;br /&gt;
# I got a link from a friend from a pretty cool sounding similar project https://projectkamp.com/&lt;br /&gt;
## sounds like they have similar ideas as Eco-Libre, except they already bought land already&lt;br /&gt;
## They claim to use CC BY-SA to license all their works, but their videos are not marked as-such on YouTube. And, because YouTube is trash, I can&#039;t view their videos  https://academy.projectkamp.com/start/intro/#open-source--license&lt;br /&gt;
## I wanted to email them to update the license on their YouTube videos (so, at least, they could be archived on archive.org and uploaded to PeerTube, etc), but I couldn&#039;t find their email https://projectkamp.com/faq.html&lt;br /&gt;
## Their footer says they&#039;re part of One Army (along with, eg Precious Plastic), so I emailed One Army asking for the email address of Project Kamp https://www.onearmy.earth/&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Hello,&lt;br /&gt;
&lt;br /&gt;
Can you please tell me the email address of Project Kamp?&lt;br /&gt;
&lt;br /&gt;
I&#039;m looking to get in contact with Project Kamp over email, but I couldn&#039;t find a way to email them from their website:&lt;br /&gt;
&lt;br /&gt;
 * https://projectkamp.com/faq.html&lt;br /&gt;
&lt;br /&gt;
Please send me the email address for Project Kamp.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Thank you,&lt;br /&gt;
&lt;br /&gt;
Michael Altfield&lt;br /&gt;
https://www.michaelaltfield.net&lt;br /&gt;
PGP Fingerprint: 0465 E42F 7120 6785 E972  644C FE1B 8449 4E64 0D41&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## TODO: add Project Kamp to our &#039;common-files&#039; repo&#039;s docs as a &amp;quot;Similar Project&amp;quot;&lt;br /&gt;
# ...&lt;br /&gt;
# Tomorrow we&#039;re publishing our partnership with Raft Foundation, so we can accept tax-deductable donations https://www.eco-libre.org/raft-2026/&lt;br /&gt;
# Some weeks ago I did updates of wordpress, including adding new plugins. One of them was ActivityPub&lt;br /&gt;
# I enabled ActivityPub, but the Settings page gives me a &amp;quot;504 Gateway Time-out&amp;quot; error from nginx https://www.eco-libre.org/wp-admin/options-general.php?page=activitypub&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;head&amp;gt;&amp;lt;title&amp;gt;504 Gateway Time-out&amp;lt;/title&amp;gt;&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;h1&amp;gt;504 Gateway Time-out&amp;lt;/h1&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&amp;lt;center&amp;gt;nginx&amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## here&#039;s the error.log entry for nginx&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
2026/04/20 17:37:36 [error] 1992101#1992101: *2507383 upstream timed out (110: Connection timed out) while reading response header from upstream, client: 64.42.180.66, server: www.eco-libre.org, request: &amp;quot;GET /wp-admin/options-general.php?page=activitypub HTTP/1.1&amp;quot;, upstream: &amp;quot;http://127.0.0.1:6081/wp-admin/options-general.php?page=activitypub&amp;quot;, host: &amp;quot;www.eco-libre.org&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## and here&#039;s the apache logs&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
==&amp;gt; www.eco-libre.org/access.log &amp;lt;==&lt;br /&gt;
64.42.180.66 - - [20/Apr/2026:17:54:54 +0000] &amp;quot;POST /wp-admin/admin-ajax.php HTTP/1.1&amp;quot; 200 792 &amp;quot;https://www.eco-libre.org/wp-admin/plugins.php?plugin_status=all&amp;amp;paged=1&amp;amp;s&amp;quot; &amp;quot;Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.0.0 Safari/537.36&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==&amp;gt; www.eco-libre.org/error.log &amp;lt;==&lt;br /&gt;
[Mon Apr 20 17:55:23.176842 2026] [proxy_fcgi:error] [pid 526343:tid 526374] (70007)The timeout specified has expired: [client 64.42.180.66:0] AH01075: Error dispatching request to : (polling)&lt;br /&gt;
&lt;br /&gt;
==&amp;gt; www.eco-libre.org/access.log &amp;lt;==&lt;br /&gt;
64.42.180.66 - - [20/Apr/2026:17:54:23 +0000] &amp;quot;GET /wp-admin/options-general.php?page=activitypub HTTP/1.1&amp;quot; 504 467 &amp;quot;-&amp;quot; &amp;quot;Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.0.0 Safari/537.36&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## I don&#039;t know what&#039;s wrong, and that&#039;s not enough to debug it. I tested ActivityPub on another site, and the config page had no issues. But I ended-up not finishing its setup because I wanted the actor URL to use the naked domain, and I&#039;m still waiting to hear back on that https://github.com/Automattic/wordpress-activitypub/issues/3164&lt;br /&gt;
# anyway, I wrote a newsletter, scheduled it to go out for tomorrow at 15:00 UTC&lt;br /&gt;
# I also wrote the update for Open Collective&lt;br /&gt;
# I put the &amp;quot;Donate&amp;quot; page in the menu bar&lt;br /&gt;
## on mobile, this made the top navbar spill over into a second row, so I moved &amp;quot;Contact&amp;quot; under &amp;quot;Join Us&amp;quot;&lt;br /&gt;
### to make up for this, I started creating footer areas&lt;br /&gt;
### the theme supports three footers. one on the left, center, and right&lt;br /&gt;
### I put copyright &amp;amp; copyleft info on the right footer&lt;br /&gt;
### I put social media icons in the middle footer&lt;br /&gt;
### I put a &amp;quot;Contact&amp;quot; link on the left footer&lt;br /&gt;
## As I was styling the left footer, I stopped being able to update it suddenly. I kept getting error&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
There was an error. Could not get a valid response from the server.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## closer inspection of the networking tab of the browsers debugger showed an error when doing an OPTIONS request&lt;br /&gt;
## well, that&#039;s probably because (for security) we block all but GET POST and HEAD&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
if ($request_method !~ ^(GET|HEAD|POST)$ ) {&lt;br /&gt;
   # note: 444 is a meta code; it doesn&#039;t return anything, actually&lt;br /&gt;
   #       it just logs, drops, &amp;amp; closes the connection (useful&lt;br /&gt;
   #       against malware)&lt;br /&gt;
   return 444;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## well, fuck, our widgets are bricked&lt;br /&gt;
## I asked about this here https://wordpress.org/support/topic/configure-wordpress-to-never-use-options-requests/&lt;br /&gt;
## as a workaround, I found that I *can* edit these footer widgets from the theme -&amp;gt; customize -&amp;gt; widgets section of the site – which sends POST as expected https://www.eco-libre.org/wp-admin/customize.php?return=%2Fwp-admin%2Fwidgets.php&lt;br /&gt;
# I realized that I can&#039;t post to lemmy anymore, because our sdf instance has been down since 2026-04-07&lt;br /&gt;
# I went ahead and created an accout request on the solar punk instance https://slrpnk.net/&lt;br /&gt;
## if we&#039;re accepted, I&#039;d also like to create a community specific to Eco-Libre &lt;br /&gt;
# I also created one on lemmy.vg&lt;br /&gt;
&lt;br /&gt;
== 2026-04-19 ==&lt;br /&gt;
# I failed to login to the wiki today. I got error&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[REDACTED] 2026-04-19 20:34:48: Fatal exception of type &amp;quot;DomainException&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# exception.log seems to suggest that I set a bad config for the password policy yesterday&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
==&amp;gt; exception.log &amp;lt;==&lt;br /&gt;
2026-04-19 20:36:27 mail wiki_el_db-rHb3: [REDACTED] /index.php?title=Special:UserLogin&amp;amp;returnto=MediaWiki&lt;br /&gt;
%3ARequestaccount-agree   DomainException: Invalid password policy config. No check defined for &#039;PasswordCannotMatchUsername&#039;&lt;br /&gt;
.&lt;br /&gt;
#0 /usr/share/mediawiki/includes/password/UserPasswordPolicy.php(88): MediaWiki\Password\UserPasswordPolicy-&amp;gt;checkPolicies()&lt;br /&gt;
#1 /usr/share/mediawiki/includes/user/User.php(995): MediaWiki\Password\UserPasswordPolicy-&amp;gt;checkUserPassword()&lt;br /&gt;
#2 /usr/share/mediawiki/includes/auth/AbstractPasswordPrimaryAuthenticationProvider.php(114): MediaWiki\User\User-&amp;gt;checkPassw&lt;br /&gt;
ordValidity()&lt;br /&gt;
#3 /usr/share/mediawiki/includes/auth/AbstractTemporaryPasswordPrimaryAuthenticationProvider.php(155): MediaWiki\Auth\Abstrac&lt;br /&gt;
tPasswordPrimaryAuthenticationProvider-&amp;gt;checkPasswordValidity()&lt;br /&gt;
#4 /usr/share/mediawiki/includes/auth/AuthManager.php(625): MediaWiki\Auth\AbstractTemporaryPasswordPrimaryAuthenticationProv&lt;br /&gt;
ider-&amp;gt;beginPrimaryAuthentication()&lt;br /&gt;
#5 /usr/share/mediawiki/includes/auth/AuthManager.php(535): MediaWiki\Auth\AuthManager-&amp;gt;continueAuthentication()&lt;br /&gt;
#6 /usr/share/mediawiki/includes/specialpage/AuthManagerSpecialPage.php(390): MediaWiki\Auth\AuthManager-&amp;gt;beginAuthentication&lt;br /&gt;
()&lt;br /&gt;
#7 /usr/share/mediawiki/includes/specialpage/AuthManagerSpecialPage.php(524): MediaWiki\SpecialPage\AuthManagerSpecialPage-&amp;gt;performAuthenticationStep()&lt;br /&gt;
#8 [internal function]: MediaWiki\SpecialPage\AuthManagerSpecialPage-&amp;gt;handleFormSubmit()&lt;br /&gt;
#9 /usr/share/mediawiki/includes/htmlform/HTMLForm.php(822): call_user_func()&lt;br /&gt;
#10 /usr/share/mediawiki/includes/specialpage/AuthManagerSpecialPage.php(455): MediaWiki\HTMLForm\HTMLForm-&amp;gt;trySubmit()&lt;br /&gt;
#11 /usr/share/mediawiki/includes/specialpage/LoginSignupSpecialPage.php(403): MediaWiki\SpecialPage\AuthManagerSpecialPage-&amp;gt;trySubmit()&lt;br /&gt;
#12 /usr/share/mediawiki/includes/specialpage/SpecialPage.php(728): MediaWiki\SpecialPage\LoginSignupSpecialPage-&amp;gt;execute()&lt;br /&gt;
#13 /usr/share/mediawiki/includes/specialpage/SpecialPageFactory.php(1717): MediaWiki\SpecialPage\SpecialPage-&amp;gt;run()&lt;br /&gt;
#14 /usr/share/mediawiki/includes/actions/ActionEntryPoint.php(505): MediaWiki\SpecialPage\SpecialPageFactory-&amp;gt;executePath()&lt;br /&gt;
#15 /usr/share/mediawiki/includes/actions/ActionEntryPoint.php(147): MediaWiki\Actions\ActionEntryPoint-&amp;gt;performRequest()&lt;br /&gt;
#16 /usr/share/mediawiki/includes/MediaWikiEntryPoint.php(200): MediaWiki\Actions\ActionEntryPoint-&amp;gt;execute()&lt;br /&gt;
#17 /usr/share/mediawiki/index.php(58): MediaWiki\MediaWikiEntryPoint-&amp;gt;run()&lt;br /&gt;
#18 {main}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# here&#039;s what we have&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$wgPasswordPolicy[&#039;policies&#039;][&#039;default&#039;][&#039;PasswordCannotMatchUsername&#039;] = true;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# but the docs suggest there&#039;s an additioanl array needed for &amp;quot;value&amp;quot;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$wgPasswordPolicy[&#039;policies&#039;][&#039;default&#039;][&#039;PasswordCannotMatchUsername&#039;][&#039;value&#039;] = false;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# if I expand &amp;quot;Older Versions&amp;quot; then the &#039;PasswordCannotMatchUsername&#039; disappears from mediawiki &amp;gt;1.37. The docs still say it&#039;s an option, but I didn&#039;t find it in our files https://www.mediawiki.org/wiki/Manual:$wgPasswordPolicy#Default&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@mail:/var/www/html/wiki.eco-libre.org# grep -irl PasswordCannotMatchUsername *&lt;br /&gt;
LocalSettings.20260419.php&lt;br /&gt;
LocalSettings.php&lt;br /&gt;
root@mail:/var/www/html/wiki.eco-libre.org# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# it does appear that &#039;PasswordCannotBeSubstringInUsername&#039; is available. let&#039;s use that instead.&lt;br /&gt;
# ugh, next attempt gives another failure&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
==&amp;gt; exception.log &amp;lt;==&lt;br /&gt;
2026-04-19 21:04:26 mail wiki_el_db-rHb3: [REDACTED] /index.php?title=Special:UserLogin&amp;amp;returnto=MediaWiki&lt;br /&gt;
%3ARequestaccount-agree   DomainException: Invalid password policy config. No check defined for &#039;PasswordCannotBePopular&#039;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# I removed this; I guess we&#039;re supposed to use &#039;PasswordNotInCommonList&#039;, which we already use.&lt;br /&gt;
# ok, that worked. I&#039;m able to login-in. here&#039;s the final&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# PASSWORD POLICIES&lt;br /&gt;
&lt;br /&gt;
$wgPasswordPolicy[&#039;policies&#039;][&#039;default&#039;][&#039;MinimalPasswordLength&#039;] = 10;&lt;br /&gt;
$wgPasswordPolicy[&#039;policies&#039;][&#039;default&#039;][&#039;PasswordCannotBeSubstringInUsername&#039;][&#039;value&#039;] = true;&lt;br /&gt;
$wgPasswordPolicy[&#039;policies&#039;][&#039;default&#039;][&#039;PasswordNotInCommonList&#039;] = true;&lt;br /&gt;
&lt;br /&gt;
$wgPasswordPolicy[&#039;policies&#039;][&#039;sysop&#039;][&#039;MinimalPasswordLength&#039;] = 20;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# now that I can login, I was going to change the text that appears on the Request Account page https://wiki.eco-libre.org/wiki/MediaWiki:Requestaccount-text&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Complete and submit the following form to request a user account.&lt;br /&gt;
&lt;br /&gt;
Make sure that you first read the Terms of Service before requesting an account.&lt;br /&gt;
&lt;br /&gt;
Once the account is approved, you will be emailed a notification message and the account will be usable at login. &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## my intention was to add a notebox to highlight that the user would need to first complete the Eco-Libre Volunteer Test (https://eco-libre.github.io/volunteer-test/) before their new wiki account would be approve, and tell them to contact us (https://eco-libre.org/contact/)&lt;br /&gt;
## unforutnately, the notebox template doesn&#039;t exist!&lt;br /&gt;
## I found the docs on templates, and it says there&#039;s no way to import a bunch of standard templates https://www.mediawiki.org/wiki/Help:Templates&lt;br /&gt;
## this third-party guide says we can make the export/import (eg from Wikipedia) of a mass of templates easier with the Scribunto extension https://www.ryadel.com/en/how-to-add-wikipedia-mbox-templates-to-your-own-mediawiki/&lt;br /&gt;
## this extension ships with core mediawiki, it seems&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@mail:/var/www/html/wiki.eco-libre.org# ls htdocs/extensions/&lt;br /&gt;
AbuseFilter     ConfirmEdit      InputBox          Nuke             ReplaceText            TemplateData    Widgets&lt;br /&gt;
CategoryTree    DeleteBatch      Interwiki         OATHAuth         Scribunto              TextExtracts    WikiEditor&lt;br /&gt;
Cite            DiscussionTools  Linter            PageImages       SecureLinkFixer        Thanks&lt;br /&gt;
CiteThisPage    Echo             LoginNotify       ParserFunctions  SmiteSpam              TitleBlacklist&lt;br /&gt;
CodeEditor      Gadgets          Math              PdfHandler       SpamBlacklist          UserMerge&lt;br /&gt;
ConfirmAccount  ImageMap         MultimediaViewer  Poem             SyntaxHighlight_GeSHi  VisualEditor&lt;br /&gt;
root@mail:/var/www/html/wiki.eco-libre.org# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# TODO: finish installing Scribunto, then do a mass-export &amp;amp; mass-import of common templates from Wikipedia. Then finish configuring [[&#039;&#039;MediaWiki:Requestaccount-text&#039;&#039;]]&lt;br /&gt;
# I thought that, maybe, a lower hanging fruit would be to implement the Privacy Policy, but I realized that page actually requires the user to accept the Terms of Service, not the Privacy Policy&lt;br /&gt;
## OSE appears to have never set a ToS (And I created the Privacy Policy, largely based on the creative commons&#039; privacy policy https://wiki.opensourceecology.org/wiki/Terms_of_Service&lt;br /&gt;
## The wikipedia Terms of Service is actually named Terms of Use, and it&#039;s pretty specific to Wikipedia (including their mission, etc). In it, it references the Privacy Policy https://foundation.wikimedia.org/wiki/Policy:Terms_of_Use/en&lt;br /&gt;
## Appropedia doesn&#039;t appear to have a page dedicated to ToS (or ToU) or Privacy Policy. Instead, it&#039;s just on one page named Policies https://www.appropedia.org/Appropedia:Policies&lt;br /&gt;
&lt;br /&gt;
== 2026-04-18 ==&lt;br /&gt;
# continuing where I left off yes terday to fix mediawiki after the unattended-upgrade deleted our LocalSettings.php file&lt;br /&gt;
# I need to push-out a new php.ini config (with ansible) to include /etc/mediawiki/ in the open_basedir setting&lt;br /&gt;
# ansible is broken suddenly; it says it can&#039;t find python&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
fatal: [michaelaltfield.net]: UNREACHABLE! =&amp;gt; {&amp;quot;changed&amp;quot;: false, &amp;quot;msg&amp;quot;: &amp;quot;EOF on stream; last 100 lines received:\nbash: line 1: /usr/bin/python: No such file or directory&amp;quot;, &amp;quot;unreachable&amp;quot;: true}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# well, idk, did debian remove a symlink from python to python3?&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@mail:/var/lib/mediawiki# ls -lah /usr/bin/python&lt;br /&gt;
ls: cannot access &#039;/usr/bin/python&#039;: No such file or directory&lt;br /&gt;
root@mail:/var/lib/mediawiki# ls -lah /usr/bin/python3&lt;br /&gt;
lrwxrwxrwx 1 root root 10 Jun 30  2025 /usr/bin/python3 -&amp;gt; python3.13&lt;br /&gt;
root@mail:/var/lib/mediawiki# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# looks like there&#039;s a var I can set for this named ansible_python_interpreter, but it&#039;s only available in python &amp;gt;= 2.2.0 https://stackoverflow.com/a/41431540&lt;br /&gt;
# and we only have ansible v2.14.18, installed in apt on debian 12 on my client machine&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ dpkg -l | grep -i ansible&lt;br /&gt;
ii  ansible                                       7.7.0+dfsg-3+deb12u1                     all          Configuration management, deployment, and task execution system&lt;br /&gt;
ii  ansible-core                                  2.14.18-0+deb12u2                        all          Configuration management, deployment, and task execution system&lt;br /&gt;
ii  ansible-mitogen                               0.3.3-9+deb12u1                          all          Fast connection strategy for Ansible&lt;br /&gt;
$&lt;br /&gt;
&lt;br /&gt;
$ cat /etc/issue&lt;br /&gt;
Debian GNU/Linux 12 \n \l&lt;br /&gt;
&lt;br /&gt;
$ &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# looks like debian 13 only has ansible core v2.18, so that won&#039;t help https://packages.debian.org/trixie/ansible&lt;br /&gt;
# fuck it, I just created a symlink. maybe it&#039;ll get deleted a and I&#039;ll have to recreate it again. maybe not&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@mail:/var/lib/mediawiki# ln -s /usr/bin/python3 /usr/bin/python&lt;br /&gt;
root@mail:/var/lib/mediawiki# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# ok, that fixed ansible, and I was able to push-out the udpdated php.ini file&lt;br /&gt;
# restarted php&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@mail:/var/lib/mediawiki# systemctl restart php8.4-fpm&lt;br /&gt;
root@mail:/var/lib/mediawiki# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# ...aaaand the wiki is fixed&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[user@disp3459 ~]$ curl -IL https://wiki.eco-libre.org/&lt;br /&gt;
HTTP/1.1 301 Moved Permanently&lt;br /&gt;
Server: nginx&lt;br /&gt;
Date: Sat, 18 Apr 2026 17:38:39 GMT&lt;br /&gt;
Content-Type: text/html; charset=UTF-8&lt;br /&gt;
Content-Length: 0&lt;br /&gt;
Connection: keep-alive&lt;br /&gt;
X-Content-Type-Options: nosniff&lt;br /&gt;
Vary: Accept-Encoding,Cookie&lt;br /&gt;
Expires: Thu, 01 Jan 1970 00:00:00 GMT&lt;br /&gt;
Cache-Control: private, must-revalidate, max-age=0&lt;br /&gt;
X-Request-Id: REDACTED&lt;br /&gt;
X-Frame-Options: SAMEORIGIN&lt;br /&gt;
Last-Modified: Sat, 18 Apr 2026 17:38:06 GMT&lt;br /&gt;
Location: https://wiki.eco-libre.org/wiki/Main_Page&lt;br /&gt;
X-Content-Type-Options: nosniff&lt;br /&gt;
X-XSS-Protection: 1; mode=block&lt;br /&gt;
X-Frame-Options: deny&lt;br /&gt;
Referrer-Policy: strict-origin&lt;br /&gt;
X-Varnish: 6288299 13705059&lt;br /&gt;
Age: 33&lt;br /&gt;
Via: 1.1 mail (Varnish/7.7)&lt;br /&gt;
Strict-Transport-Security: max-age=86400;includeSubDomains&lt;br /&gt;
&lt;br /&gt;
HTTP/1.1 200 OK&lt;br /&gt;
Server: nginx&lt;br /&gt;
Date: Sat, 18 Apr 2026 17:38:40 GMT&lt;br /&gt;
Content-Type: text/html; charset=UTF-8&lt;br /&gt;
Content-Length: 15926&lt;br /&gt;
Connection: keep-alive&lt;br /&gt;
X-Content-Type-Options: nosniff&lt;br /&gt;
Content-language: en&lt;br /&gt;
Vary: Accept-Encoding,Cookie&lt;br /&gt;
Expires: Thu, 01 Jan 1970 00:00:00 GMT&lt;br /&gt;
Cache-Control: private, must-revalidate, max-age=0&lt;br /&gt;
X-Request-Id: REDACTED&lt;br /&gt;
X-Frame-Options: SAMEORIGIN&lt;br /&gt;
Last-Modified: Sat, 18 Apr 2026 01:16:13 GMT&lt;br /&gt;
X-Mod-Pagespeed: Powered By mod_pagespeed&lt;br /&gt;
X-Content-Type-Options: nosniff&lt;br /&gt;
X-XSS-Protection: 1; mode=block&lt;br /&gt;
X-Frame-Options: deny&lt;br /&gt;
Referrer-Policy: strict-origin&lt;br /&gt;
X-Varnish: 18702490 13705062&lt;br /&gt;
Age: 31&lt;br /&gt;
Via: 1.1 mail (Varnish/7.7)&lt;br /&gt;
Accept-Ranges: bytes&lt;br /&gt;
Strict-Transport-Security: max-age=86400;includeSubDomains&lt;br /&gt;
&lt;br /&gt;
[user@disp3459 ~]$ &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# ...&lt;br /&gt;
# alright, now let&#039;s try to install &amp;amp; configure all the 3TOFU&#039;d extensions&lt;br /&gt;
# we have 6 new extensions to install&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@mail:/var/tmp/mediawiki/extensions.2026-03-29# ls&lt;br /&gt;
ConfirmAccount-REL1_43-38c4602.tar.gz  extensions.txt  OATHAuth-REL1_43-015a49e.tar.gz   UserMerge-REL1_43-27425da.tar.gz&lt;br /&gt;
DeleteBatch-REL1_43-b3b052b.tar.gz     info.txt        SmiteSpam-REL1_43-483b81b.tar.gz  Widgets-REL1_43-60a09f0.tar.gz&lt;br /&gt;
root@mail:/var/tmp/mediawiki/extensions.2026-03-29# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# I extracted them&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@mail:/var/tmp/mediawiki/extensions.2026-03-29# for file in $(ls *.tar.gz); do tar -xvf $file; done.&lt;br /&gt;
...&lt;br /&gt;
Widgets/vendor/smarty/smarty/CHANGELOG.md&lt;br /&gt;
Widgets/COPYING&lt;br /&gt;
root@mail:/var/tmp/mediawiki/extensions.2026-03-29#&lt;br /&gt;
&lt;br /&gt;
root@mail:/var/tmp/mediawiki/extensions.2026-03-29# ls&lt;br /&gt;
ConfirmAccount                         info.txt                          UserMerge&lt;br /&gt;
ConfirmAccount-REL1_43-38c4602.tar.gz  OATHAuth                          UserMerge-REL1_43-27425da.tar.gz&lt;br /&gt;
DeleteBatch                            OATHAuth-REL1_43-015a49e.tar.gz   Widgets&lt;br /&gt;
DeleteBatch-REL1_43-b3b052b.tar.gz     SmiteSpam                         Widgets-REL1_43-60a09f0.tar.gz&lt;br /&gt;
extensions.txt                         SmiteSpam-REL1_43-483b81b.tar.gz&lt;br /&gt;
root@mail:/var/tmp/mediawiki/extensions.2026-03-29# &lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# let&#039;s start with OATHAuth, which is probably the most important (for security)&lt;br /&gt;
# oh wait, we already have OATHAuth??&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@mail:/var/tmp/mediawiki/extensions.2026-03-29# ls /var/www/html/wiki.eco-libre.org/htdocs/extensions/&lt;br /&gt;
AbuseFilter   ConfirmEdit      InputBox     MultimediaViewer  PdfHandler       SpamBlacklist          TitleBlacklist&lt;br /&gt;
CategoryTree  DiscussionTools  Interwiki    Nuke              Poem             SyntaxHighlight_GeSHi  VisualEditor&lt;br /&gt;
Cite          Echo             Linter       OATHAuth          ReplaceText      TemplateData           WikiEditor&lt;br /&gt;
CiteThisPage  Gadgets          LoginNotify  PageImages        Scribunto        TextExtracts&lt;br /&gt;
CodeEditor    ImageMap         Math         ParserFunctions   SecureLinkFixer  Thanks&lt;br /&gt;
root@mail:/var/tmp/mediawiki/extensions.2026-03-29# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# ugh, yeah, this syas it has been inclued in MediaWiki core since v1.31 https://www.mediawiki.org/wiki/Extension:OATHAuth&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
This extension comes with MediaWiki 1.31 and later, so you do not need to download it. The remaining configuration instructions must still be followed.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# well, maybe that&#039;s why it got updated so much. anyway, that&#039;s better; we get it directly from apt&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@mail:/var/tmp/mediawiki/extensions.2026-03-29# dpkg -l | grep -i mediawiki&lt;br /&gt;
ii  mediawiki                         1:1.43.8+dfsg-1~deb13u1                 all          website engine for collaborative work&lt;br /&gt;
ii  mediawiki-classes                 1:1.43.8+dfsg-1~deb13u1                 all          website engine for collaborative work - standalone classes&lt;br /&gt;
root@mail:/var/tmp/mediawiki/extensions.2026-03-29# &lt;br /&gt;
&lt;br /&gt;
root@mail:/var/tmp/mediawiki/extensions.2026-03-29# dpkg-query -L mediawiki | grep -i oathauth | head&lt;br /&gt;
/usr/share/mediawiki/extensions-core/OATHAuth&lt;br /&gt;
/usr/share/mediawiki/extensions-core/OATHAuth/COPYING&lt;br /&gt;
/usr/share/mediawiki/extensions-core/OATHAuth/OATHAuth.alias.php&lt;br /&gt;
/usr/share/mediawiki/extensions-core/OATHAuth/ServiceWiring.php&lt;br /&gt;
/usr/share/mediawiki/extensions-core/OATHAuth/composer.json&lt;br /&gt;
/usr/share/mediawiki/extensions-core/OATHAuth/extension.json&lt;br /&gt;
/usr/share/mediawiki/extensions-core/OATHAuth/i18n&lt;br /&gt;
/usr/share/mediawiki/extensions-core/OATHAuth/i18n/ang.json&lt;br /&gt;
/usr/share/mediawiki/extensions-core/OATHAuth/i18n/api&lt;br /&gt;
/usr/share/mediawiki/extensions-core/OATHAuth/i18n/api/ar.json&lt;br /&gt;
root@mail:/var/tmp/mediawiki/extensions.2026-03-29# &lt;br /&gt;
&lt;br /&gt;
root@mail:/var/tmp/mediawiki/extensions.2026-03-29# dpkg-query -L mediawiki | grep -i oathauth | tail&lt;br /&gt;
/usr/share/mediawiki/extensions-core/OATHAuth/src/OATHAuth.php&lt;br /&gt;
/usr/share/mediawiki/extensions-core/OATHAuth/src/OATHAuthModuleRegistry.php&lt;br /&gt;
/usr/share/mediawiki/extensions-core/OATHAuth/src/OATHAuthServices.php&lt;br /&gt;
/usr/share/mediawiki/extensions-core/OATHAuth/src/OATHUser.php&lt;br /&gt;
/usr/share/mediawiki/extensions-core/OATHAuth/src/OATHUserRepository.php&lt;br /&gt;
/usr/share/mediawiki/extensions-core/OATHAuth/src/Special&lt;br /&gt;
/usr/share/mediawiki/extensions-core/OATHAuth/src/Special/DisableOATHForUser.php&lt;br /&gt;
/usr/share/mediawiki/extensions-core/OATHAuth/src/Special/OATHManage.php&lt;br /&gt;
/usr/share/mediawiki/extensions-core/OATHAuth/src/Special/VerifyOATHForUser.php&lt;br /&gt;
/var/lib/mediawiki/extensions/OATHAuth&lt;br /&gt;
root@mail:/var/tmp/mediawiki/extensions.2026-03-29# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# I wonder if there&#039;s any others we get? looks like it&#039;s only this one&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@mail:/var/tmp/mediawiki/extensions.2026-03-29# ls /usr/share/mediawiki/extensions-core | grep -iE &#039;ConfirmAccount|SmiteSpam|DeleteBatch|UserMerge|Widgets|OATHAuth&#039;&lt;br /&gt;
OATHAuth&lt;br /&gt;
root@mail:/var/tmp/mediawiki/extensions.2026-03-29# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# just another quick check – none of these are in apt either&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@mail:/var/tmp/mediawiki/extensions.2026-03-29# apt-cache search mediawiki | grep -i extension&lt;br /&gt;
libreoffice-wiki-publisher - LibreOffice extension for working with MediaWiki articles&lt;br /&gt;
mediawiki-extension-codemirror - Syntax highlighting in MediaWiki&#039;s wikitext editor&lt;br /&gt;
mediawiki-extension-youtube - Embed YouTube and other videos into MediaWiki pages&lt;br /&gt;
php-luasandbox - PHP extension that provides a sandboxed Lua environment&lt;br /&gt;
php-wmerrors - PHP extension that enhances and customizes handling of PHP errors&lt;br /&gt;
root@mail:/var/tmp/mediawiki/extensions.2026-03-29# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# anyway, back to OATHAuth&lt;br /&gt;
## it says to enable caching&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
It is strongly recommended to setup caching when using OATHAuth.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# I confirmed that we already have cachign setup with APC&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@mail:/var/www/html/wiki.eco-libre.org# grep -ir cache LocalSettings.php &lt;br /&gt;
$wgMainCacheType = CACHE_ACCEL;&lt;br /&gt;
$wgMemCachedServers = [];&lt;br /&gt;
## Set $wgCacheDirectory to a writable directory on the web server&lt;br /&gt;
#$wgCacheDirectory = &amp;quot;$IP/cache&amp;quot;;&lt;br /&gt;
$wgCacheDirectory = &amp;quot;/var/www/html/wiki.eco-libre.org/cache&amp;quot;;&lt;br /&gt;
root@mail:/var/www/html/wiki.eco-libre.org# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
### CACHE_ACCEL means APC, which is the recommended option for single-server wikis, per the official mediawiki docs on performance tuning https://www.mediawiki.org/wiki/Manual:Performance_tuning#Single_web_server&lt;br /&gt;
### it also says to ue varnish. check&lt;br /&gt;
### it also says to use php-fpm w/ event MPM (instead of mod_php with prefork MPM), which we changed-to last month. check.&lt;br /&gt;
## our notes from OSE had the following options https://wiki.opensourceecology.org/wiki/CHG-2025-XX-XX_migrate_wiki_to_hetzner3&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
wfLoadExtension( &#039;OATHAuth&#039; );&lt;br /&gt;
&lt;br /&gt;
# Relaxed mode with +/- 4 minutes time drift tolerance. This is important or users will complain and/or disable 2FA entirely&lt;br /&gt;
# The security consequences are small. The usability benefits are huge.&lt;br /&gt;
$wgOATHAuthWindowRadius = 8;&lt;br /&gt;
&lt;br /&gt;
# make admins require 2FA&lt;br /&gt;
$wgOATHRequiredForGroups = [&#039;sysop&#039;, &#039;interface-admin&#039;, &#039;bureaucrat&#039;, &#039;suppress&#039;, &#039;widgeteditor&#039; ];&lt;br /&gt;
&lt;br /&gt;
# make &#039;powerful&#039; rights require 2FA&lt;br /&gt;
$wgOATHExclusiveRights =  [ &#039;apihighlimits&#039;, &#039;applychangetags&#039;, &#039;autoconfirmed&#039;, &#039;autopatrol&#039;, &#039;bigdelete&#039;, &#039;block&#039;, &#039;blockemail&#039;, &#039;bot&#039;, &#039;changetags&#039;, &#039;createaccount&#039;, &#039;createtalk&#039;, &#039;delete&#039;, &#039;deletechangetags&#039;, &#039;deletedhistory&#039;, &#039;deletedtext&#039;, &#039;deletelogentry&#039;, &#039;deleterevision&#039;, &#039;editcontentmodel&#039;, &#039;editinterface&#039;, &#039;editprotected&#039;, &#039;editsemiprotected&#039;, &#039;editsitecss&#039;, &#039;editsitejs&#039;, &#039;editsitejson&#039;, &#039;editusercss&#039;, &#039;edituserjs&#039;, &#039;edituserjson&#039;, &#039;hideuser&#039;, &#039;import&#039;, &#039;importupload&#039;, &#039;ipblock-exempt&#039;, &#039;managechangetags&#039;, &#039;markbotedits&#039;, &#039;mergehistory&#039;, &#039;move-categorypages&#039;, &#039;move-rootuserpages&#039;, &#039;move-subpages&#039;, &#039;nominornewtalk&#039;, &#039;noratelimit&#039;, &#039;patrol&#039;, &#039;protect&#039;, &#039;renameuser&#039;, &#039;reupload-shared&#039;, &#039;sendemail&#039;, &#039;suppressionlog&#039;, &#039;suppressredirect&#039;, &#039;suppressrevision&#039;, &#039;unblockself&#039;, &#039;unwatchedpages&#039;, &#039;userrights&#039;, ];&lt;br /&gt;
&lt;br /&gt;
# full list for reference (taken from htdocs/includes/MainConfigSchema.php) https://www.mediawiki.org/wiki/Extension:OATHAuth#Configuration&lt;br /&gt;
#$wgOATHExclusiveRights =  [ &#039;apihighlimits&#039;, &#039;applychangetags&#039;, &#039;autoconfirmed&#039;, &#039;autopatrol&#039;, &#039;bigdelete&#039;, &#039;block&#039;, &#039;blockemail&#039;, &#039;bot&#039;, &#039;browsearchive&#039;, &#039;changetags&#039;, &#039;createaccount&#039;, &#039;createpage&#039;, &#039;createtalk&#039;, &#039;delete&#039;, &#039;deletechangetags&#039;, &#039;deletedhistory&#039;, &#039;deletedtext&#039;, &#039;deletelogentry&#039;, &#039;deleterevision&#039;, &#039;edit&#039;, &#039;editcontentmodel&#039;, &#039;editinterface&#039;, &#039;editmyoptions&#039;, &#039;editmyprivateinfo&#039;, &#039;editmyusercss&#039;, &#039;editmyuserjs&#039;, &#039;editmyuserjson&#039;, &#039;editmyuserjsredirect&#039;, &#039;editmywatchlist&#039;, &#039;editprotected&#039;, &#039;editsemiprotected&#039;, &#039;editsitecss&#039;, &#039;editsitejs&#039;, &#039;editsitejson&#039;, &#039;editusercss&#039;, &#039;edituserjs&#039;, &#039;edituserjson&#039;, &#039;hideuser&#039;, &#039;import&#039;, &#039;importupload&#039;, &#039;ipblock-exempt&#039;, &#039;managechangetags&#039;, &#039;markbotedits&#039;, &#039;mergehistory&#039;, &#039;minoredit&#039;, &#039;move&#039;, &#039;move-categorypages&#039;, &#039;movefile&#039;, &#039;move-rootuserpages&#039;, &#039;move-subpages&#039;, &#039;nominornewtalk&#039;, &#039;noratelimit&#039;, &#039;patrol&#039;, &#039;protect&#039;, &#039;read&#039;, &#039;renameuser&#039;, &#039;reupload&#039;, &#039;reupload-shared&#039;, &#039;rollback&#039;, &#039;sendemail&#039;, &#039;suppressionlog&#039;, &#039;suppressredirect&#039;, &#039;suppressrevision&#039;, &#039;unblockself&#039;, &#039;undelete&#039;, &#039;unwatchedpages&#039;, &#039;upload&#039;, &#039;userrights&#039;, &#039;viewmyprivateinfo&#039;, &#039;viewmywatchlist&#039;, &#039;viewsuppressed&#039; ];&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
### I strongly agree with the relaxed window of codes&lt;br /&gt;
### I guess that list of requirements is good&lt;br /&gt;
### the other two are no longer listed on the wiki, but I guess they&#039;re good ?&lt;br /&gt;
## the docs show an additional option = $wgOATHSecretKey, used for encrypting the secret keys in the db. it suggests this command to generate it https://www.mediawiki.org/wiki/Extension:OATHAuth&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
hexdump -vn32 -e&#039;8/8 &amp;quot;%08X&amp;quot; &amp;quot;\n&amp;quot;&#039; /dev/urandom&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
### says it&#039;s only available since 1.45. I&#039;m not sure if that&#039;s the mediawiki version or the extension version.&lt;br /&gt;
### oh, I guess it&#039;s mediawiki, since they ship together. We&#039;re running 1.43.8, so I guess we can&#039;t use it yet https://wiki.eco-libre.org/wiki/Special:Version&lt;br /&gt;
### well, I guess let&#039;s define it. then it&#039;ll automatically start to use it when we upgrade to the next LTS. I think.&lt;br /&gt;
## ok, here&#039;s what I added&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@mail:/var/www/html/wiki.eco-libre.org# diff LocalSettings.20260418.php LocalSettings.php &lt;br /&gt;
220a221,240&lt;br /&gt;
&amp;gt; &lt;br /&gt;
&amp;gt; # configure OATHAuth for MFA (2FA). See also:&lt;br /&gt;
&amp;gt; # * https://www.mediawiki.org/wiki/Extension:OATHAuth&lt;br /&gt;
&amp;gt; # * https://wiki.eco-libre.org/wiki/Maltfield_Log/2026&lt;br /&gt;
&amp;gt; wfLoadExtension( &#039;OATHAuth&#039; );&lt;br /&gt;
&amp;gt; &lt;br /&gt;
&amp;gt; # Relaxed mode with +/- 4 minutes time drift tolerance. This is important or users will complain and/or disable 2FA entirely&lt;br /&gt;
&amp;gt; # The security consequences are small. The usability benefits are huge.&lt;br /&gt;
&amp;gt; $wgOATHAuthWindowRadius = 8;&lt;br /&gt;
&amp;gt; &lt;br /&gt;
&amp;gt; # make admins require 2FA&lt;br /&gt;
&amp;gt; $wgOATHRequiredForGroups = [&#039;sysop&#039;, &#039;interface-admin&#039;, &#039;bureaucrat&#039;, &#039;suppress&#039;, &#039;widgeteditor&#039; ];&lt;br /&gt;
&amp;gt; &lt;br /&gt;
&amp;gt; # make &#039;powerful&#039; rights require 2FA&lt;br /&gt;
&amp;gt; $wgOATHExclusiveRights =  [ &#039;apihighlimits&#039;, &#039;applychangetags&#039;, &#039;autoconfirmed&#039;, &#039;autopatrol&#039;, &#039;bigdelete&#039;, &#039;block&#039;, &#039;blockemail&#039;, &#039;bot&#039;, &#039;changetags&#039;, &#039;createaccount&#039;, &#039;createtalk&#039;, &#039;delete&#039;, &#039;deletechangetags&#039;, &#039;deletedhistory&#039;, &#039;deletedtext&#039;, &#039;deletelogentry&#039;, &#039;deleterevision&#039;, &#039;editcontentmodel&#039;, &#039;editinterface&#039;, &#039;editprotected&#039;, &#039;editsemiprotected&#039;, &#039;editsitecss&#039;, &#039;editsitejs&#039;, &#039;editsitejson&#039;, &#039;editusercss&#039;, &#039;edituserjs&#039;, &#039;edituserjson&#039;, &#039;hideuser&#039;, &#039;import&#039;, &#039;importupload&#039;, &#039;ipblock-exempt&#039;, &#039;managechangetags&#039;, &#039;markbotedits&#039;, &#039;mergehistory&#039;, &#039;move-categorypages&#039;, &#039;move-rootuserpages&#039;, &#039;move-subpages&#039;, &#039;nominornewtalk&#039;, &#039;noratelimit&#039;, &#039;patrol&#039;, &#039;protect&#039;, &#039;renameuser&#039;, &#039;reupload-shared&#039;, &#039;sendemail&#039;, &#039;suppressionlog&#039;, &#039;suppressredirect&#039;, &#039;suppressrevision&#039;, &#039;unblockself&#039;, &#039;unwatchedpages&#039;, &#039;userrights&#039;, ];&lt;br /&gt;
&amp;gt; &lt;br /&gt;
&amp;gt; # full list for reference (taken from htdocs/includes/MainConfigSchema.php) https://www.mediawiki.org/wiki/Extension:OATHAuth#Configuration&lt;br /&gt;
&amp;gt; #$wgOATHExclusiveRights =  [ &#039;apihighlimits&#039;, &#039;applychangetags&#039;, &#039;autoconfirmed&#039;, &#039;autopatrol&#039;, &#039;bigdelete&#039;, &#039;block&#039;, &#039;blockemail&#039;, &#039;bot&#039;, &#039;browsearchive&#039;, &#039;changetags&#039;, &#039;createaccount&#039;, &#039;createpage&#039;, &#039;createtalk&#039;, &#039;delete&#039;, &#039;deletechangetags&#039;, &#039;deletedhistory&#039;, &#039;deletedtext&#039;, &#039;deletelogentry&#039;, &#039;deleterevision&#039;, &#039;edit&#039;, &#039;editcontentmodel&#039;, &#039;editinterface&#039;, &#039;editmyoptions&#039;, &#039;editmyprivateinfo&#039;, &#039;editmyusercss&#039;, &#039;editmyuserjs&#039;, &#039;editmyuserjson&#039;, &#039;editmyuserjsredirect&#039;, &#039;editmywatchlist&#039;, &#039;editprotected&#039;, &#039;editsemiprotected&#039;, &#039;editsitecss&#039;, &#039;editsitejs&#039;, &#039;editsitejson&#039;, &#039;editusercss&#039;, &#039;edituserjs&#039;, &#039;edituserjson&#039;, &#039;hideuser&#039;, &#039;import&#039;, &#039;importupload&#039;, &#039;ipblock-exempt&#039;, &#039;managechangetags&#039;, &#039;markbotedits&#039;, &#039;mergehistory&#039;, &#039;minoredit&#039;, &#039;move&#039;, &#039;move-categorypages&#039;, &#039;movefile&#039;, &#039;move-rootuserpages&#039;, &#039;move-subpages&#039;, &#039;nominornewtalk&#039;, &#039;noratelimit&#039;, &#039;patrol&#039;, &#039;protect&#039;, &#039;read&#039;, &#039;renameuser&#039;, &#039;reupload&#039;, &#039;reupload-shared&#039;, &#039;rollback&#039;, &#039;sendemail&#039;, &#039;suppressionlog&#039;, &#039;suppressredirect&#039;, &#039;suppressrevision&#039;, &#039;unblockself&#039;, &#039;undelete&#039;, &#039;unwatchedpages&#039;, &#039;upload&#039;, &#039;userrights&#039;, &#039;viewmyprivateinfo&#039;, &#039;viewmywatchlist&#039;, &#039;viewsuppressed&#039; ];&lt;br /&gt;
&amp;gt; &lt;br /&gt;
&amp;gt; $wgOATHSecretKey=&#039;REDACTED&#039;;&lt;br /&gt;
root@mail:/var/www/html/wiki.eco-libre.org# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## ok, now let&#039;s update the db&lt;br /&gt;
### oh, this failed. we need to use the special privliged db user, since we hardened the normal db user&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@mail:/var/www/html/wiki.eco-libre.org# sudo -u www-data php /usr/share/mediawiki/maintenance/run.php update&lt;br /&gt;
MediaWiki 1.43.8 Updater&lt;br /&gt;
&lt;br /&gt;
Your composer.lock file is up to date with current dependencies!&lt;br /&gt;
Going to run database updates for wiki_el_db-rHb3&lt;br /&gt;
Depending on the size of your database this may take a while!&lt;br /&gt;
Abort with control-c in the next five seconds (skip this countdown with --quick) ...0&lt;br /&gt;
Updating category collations...&lt;br /&gt;
Selecting next 100 pages from cl_from = 0... processing... 0 done.&lt;br /&gt;
0 rows processed&lt;br /&gt;
...done.&lt;br /&gt;
Modifying rd_title field of table redirect...Wikimedia\Rdbms\DBQueryError from line 1198 of /usr/share/mediawiki/includes/libs/rdbms/database/Database.php: Error 1142: ALTER command denied to user &#039;wiki_el_user&#039;@&#039;localhost&#039; for table `wiki_el_db`.`rHb3redirect`&lt;br /&gt;
Function: Wikimedia\Rdbms\Database::sourceFile( /usr/share/mediawiki/maintenance/archives/patch-redirect-rd_title-varbinary.sql )&lt;br /&gt;
Query: ALTER TABLE `rHb3redirect` MODIFY rd_title VARBINARY(255) NOT NULL default &#039;&#039;,&lt;br /&gt;
 MODIFY rd_fragment VARBINARY(255) default NULL&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#0 /usr/share/mediawiki/includes/libs/rdbms/database/Database.php(1182): Wikimedia\Rdbms\Database-&amp;gt;getQueryException()&lt;br /&gt;
#1 /usr/share/mediawiki/includes/libs/rdbms/database/Database.php(1156): Wikimedia\Rdbms\Database-&amp;gt;getQueryExceptionAndLog()&lt;br /&gt;
#2 /usr/share/mediawiki/includes/libs/rdbms/database/Database.php(647): Wikimedia\Rdbms\Database-&amp;gt;reportQueryError()&lt;br /&gt;
#3 /usr/share/mediawiki/includes/libs/rdbms/database/Database.php(2791): Wikimedia\Rdbms\Database-&amp;gt;query()&lt;br /&gt;
#4 /usr/share/mediawiki/includes/libs/rdbms/database/Database.php(2729): Wikimedia\Rdbms\Database-&amp;gt;sourceStream()&lt;br /&gt;
#5 /usr/share/mediawiki/includes/libs/rdbms/database/DBConnRef.php(127): Wikimedia\Rdbms\Database-&amp;gt;sourceFile()&lt;br /&gt;
#6 /usr/share/mediawiki/includes/libs/rdbms/database/DBConnRef.php(799): Wikimedia\Rdbms\DBConnRef-&amp;gt;__call()&lt;br /&gt;
#7 /usr/share/mediawiki/includes/installer/DatabaseUpdater.php(797): Wikimedia\Rdbms\DBConnRef-&amp;gt;sourceFile()&lt;br /&gt;
#8 /usr/share/mediawiki/includes/installer/DatabaseUpdater.php(1074): MediaWiki\Installer\DatabaseUpdater-&amp;gt;applyPatch()&lt;br /&gt;
#9 /usr/share/mediawiki/includes/installer/DatabaseUpdater.php(595): MediaWiki\Installer\DatabaseUpdater-&amp;gt;modifyField()&lt;br /&gt;
#10 /usr/share/mediawiki/includes/installer/DatabaseUpdater.php(548): MediaWiki\Installer\DatabaseUpdater-&amp;gt;runUpdates()&lt;br /&gt;
#11 /usr/share/mediawiki/maintenance/update.php(195): MediaWiki\Installer\DatabaseUpdater-&amp;gt;doUpdates()&lt;br /&gt;
#12 /usr/share/mediawiki/maintenance/includes/MaintenanceRunner.php(703): UpdateMediaWiki-&amp;gt;execute()&lt;br /&gt;
#13 /usr/share/mediawiki/maintenance/run.php(51): MediaWiki\Maintenance\MaintenanceRunner-&amp;gt;run()&lt;br /&gt;
#14 {main}&lt;br /&gt;
root@mail:/var/www/html/wiki.eco-libre.org# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# alright, this worked&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@mail:/var/www/html/wiki.eco-libre.org# sudo -u www-data php /usr/share/mediawiki/maintenance/run.php update --dbuser wiki_el_superuser --dbpass REDACTED&lt;br /&gt;
...&lt;br /&gt;
done.&lt;br /&gt;
Purging caches...done.&lt;br /&gt;
&lt;br /&gt;
Done in 8.3 s.&lt;br /&gt;
root@mail:/var/www/html/wiki.eco-libre.org# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## after that, I tried to login. it worked&lt;br /&gt;
## I expected to be sent to some 2fa registration page, but that didn&#039;t happen. it was just like any normal login&lt;br /&gt;
## I went to special pages to see if I could get it to yell at me to enable 2fa, but that didn&#039;t happen&lt;br /&gt;
### I only see the following bold options on /wiki/Special:SpecialPages (usually admin page). I wonder if this is a subset because the others are just hidden since I don&#039;t have 2FA setup? https://wiki.eco-libre.org/wiki/Special:SpecialPages&lt;br /&gt;
#### Manage Two-Factor Authentication, Watchlist, Upload file, Change content model of a page&lt;br /&gt;
## anyway, I went to &amp;quot;Manage Two-factor authentication&amp;quot; https://wiki.eco-libre.org/wiki/Special:AccountSecurity&lt;br /&gt;
## I clicked the &amp;quot;Enable&amp;quot; button under TOTP&lt;br /&gt;
## I scanned the code. It entered it in my TOTP app as &amp;quot;Eco-Libre&amp;quot; – that&#039;s not ideal. It should say &amp;quot;Eco-Libre Wiki&amp;quot;&lt;br /&gt;
## So I updated the LocalSettings.php config with&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# This is the name that the entry will have in the user&#039;s TOTP app&lt;br /&gt;
$wgOATHAuthAccountPrefix=&#039;Eco-Libre Wiki&#039;;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## anyway, I was able to finish the 2FA enrollment process&lt;br /&gt;
## I went back to SpecialPages, and already I see a *ton* more SpecialPages in bold. So it looks like that restriction worked. Currently I have access to&lt;br /&gt;
### Unwateched pages, Block user, Create account, Delete user contributions, Disable user&#039;s two-factor authentication, Rename user, Unblock user, Verify two-factor authentication status, Watchlist, Upload file, Replace text, Change content model of a page, Import pages, Mass delete, Merge page histories, and View deleted pages.&lt;br /&gt;
## I also have a notifcation &amp;quot;Two-factor authenication has been enabeld on your account. If you did not do this, your account may have been comprimised.&amp;quot;&lt;br /&gt;
## I logged-out&lt;br /&gt;
## I logged-in.&lt;br /&gt;
### First I teted it with 6 zeros (bullshit code), and it rejected it&lt;br /&gt;
### next I entered the real OTP from my app; it worked&lt;br /&gt;
## ok, this extension is done.&lt;br /&gt;
# ...&lt;br /&gt;
# probably the next-most important one is ConfirmAccount.&lt;br /&gt;
## Honestly I don&#039;t know if I&#039;ll use this, as I decided it&#039;s better to raise the barrier of entry on the wiki to users that have passed the Eco-Libre test (which is itself very accessible, but it does allow for a onboarding &amp;amp; alignment process that should eliminate spam issues that most wikis have)&lt;br /&gt;
## perhaps if I can set it up to email the applicant a link to the &amp;quot;volunteer test&amp;quot; docs, that would be helpful to funnel wiki users into the proper volunteer join workflow..&lt;br /&gt;
# first let me copy the extensions; I ran these commands to put them in-place (yet still deactivated)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
rsync -av --progress ./ConfirmAccount /var/www/html/wiki.eco-libre.org/htdocs/extensions/&lt;br /&gt;
rsync -av --progress ./SmiteSpam /var/www/html/wiki.eco-libre.org/htdocs/extensions/&lt;br /&gt;
rsync -av --progress ./DeleteBatch /var/www/html/wiki.eco-libre.org/htdocs/extensions/&lt;br /&gt;
rsync -av --progress ./UserMerge /var/www/html/wiki.eco-libre.org/htdocs/extensions/&lt;br /&gt;
rsync -av --progress ./Widgets /var/www/html/wiki.eco-libre.org/htdocs/extensions/&lt;br /&gt;
rsync -av --progress ./OATHAuth /var/www/html/wiki.eco-libre.org/htdocs/extensions/&lt;br /&gt;
fix_web_permissions.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## that finished&lt;br /&gt;
# ok, here&#039;s the ConfirmAccount https://www.mediawiki.org/wiki/Extension:ConfirmAccount&lt;br /&gt;
## hmmm...it says we should use cache type CACHE_DB https://www.mediawiki.org/wiki/Extension:ConfirmAccount#Installation&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
wfLoadExtension( &#039;ConfirmAccount&#039; );&lt;br /&gt;
$wgSessionCacheType = CACHE_DB; // Avoids stale session state across requests.&lt;br /&gt;
$wgGroupPermissions[&#039;*&#039;][&#039;createaccount&#039;] = false; // REQUIRED to enforce account requests&lt;br /&gt;
$wgGroupPermissions[&#039;bureaucrat&#039;][&#039;createaccount&#039;] = true; // Optional to allow account creation by this trusted user group&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
#### I can&#039;t find elsewhere that says this specific cache type is requried. We&#039;re using APC, which I think is supposed to be more preformant than &lt;br /&gt;
### I checked the OSE LocalSettings.php config, and it also uses ConfirmAccount *and* CACHE_ACCEL (APC), so surely it&#039;s fine&lt;br /&gt;
### but it also used a bunch of other optimiazations, some of which are necessary for varnish caching&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#################&lt;br /&gt;
# VARNISH CACHE #&lt;br /&gt;
#################&lt;br /&gt;
&lt;br /&gt;
# note that these are named &amp;quot;squid&amp;quot; for historical reasons: wikipedia used to&lt;br /&gt;
# use squid, now they use varnish. They say &amp;quot;squid,&amp;quot; but also apply to varnish&lt;br /&gt;
# * https://www.mediawiki.org/wiki/Manual:Configuration_settings#Squid&lt;br /&gt;
&lt;br /&gt;
# See this guide for more info:&lt;br /&gt;
#  * https://www.mediawiki.org/wiki/Manual:Varnish_caching&lt;br /&gt;
&lt;br /&gt;
#$wgUseSquid = true;&lt;br /&gt;
#$wgSquidServers = array(&#039;opensourceecology.org&#039;);&lt;br /&gt;
#$wgSquidServersNoPurge = array(&#039;127.0.0.1&#039;);&lt;br /&gt;
&lt;br /&gt;
$wgUseSquid = true;&lt;br /&gt;
$wgSquidServers = array( &#039;127.0.0.1:6081&#039; );&lt;br /&gt;
$wgUsePrivateIPs = true;&lt;br /&gt;
&lt;br /&gt;
#################&lt;br /&gt;
# OPTIMIZATIONS #&lt;br /&gt;
#################&lt;br /&gt;
&lt;br /&gt;
# See these links for more info:&lt;br /&gt;
#  * https://www.mediawiki.org/wiki/Manual:Performance_tuning&lt;br /&gt;
#  * https://www.mediawiki.org/wiki/Manual:Caching&lt;br /&gt;
#  * https://www.mediawiki.org/wiki/User:Aaron_Schulz/How_to_make_MediaWiki_fast&lt;br /&gt;
&lt;br /&gt;
# INTERNAL MEDIAWIKI CACHE OPTIONS (DISTINCT FROM VARNISH)&lt;br /&gt;
&lt;br /&gt;
# MainCache and MessageCache should use APCU per Aaron Schulz&lt;br /&gt;
$wgMainCacheType = CACHE_ACCEL;&lt;br /&gt;
&lt;br /&gt;
# note that if message cache uses the db (per defaults), then it may make every&lt;br /&gt;
# page load include a db change, which causes mediawiki to emmit a set-cookie&lt;br /&gt;
# for cpPosTime. The cookie&#039;s presence coming from the backend causes varnish&lt;br /&gt;
# not to cache the page (rightfully so), and the result is that varnish (which&lt;br /&gt;
# is our most important cache) is rendered useless. For more info, see:&lt;br /&gt;
#  * https://www.mediawiki.org/wiki/Topic:U9fys4phj04a85vu&lt;br /&gt;
#  * https://wiki.opensourceecology.org/wiki/Maltfield_log_2018#Thr_Mar_15.2C_2018&lt;br /&gt;
$wgMessageCacheType = CACHE_ACCEL;&lt;br /&gt;
$wgUseLocalMessageCache = true;&lt;br /&gt;
&lt;br /&gt;
# Parser Cache should still use the DB per Aaron Schulz&lt;br /&gt;
$wgParserCacheType = CACHE_DB;&lt;br /&gt;
&lt;br /&gt;
# enable caching navigation sidebar per Aaron Schulz&lt;br /&gt;
$wgEnableSidebarCache = true;&lt;br /&gt;
&lt;br /&gt;
# cache interface messages to files in this directory per Aaron Schulz&lt;br /&gt;
# note that this should be outside the docroot!&lt;br /&gt;
$wgCacheDirectory = &amp;quot;$IP/../cache&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
# OTHER OPTIMIZATIONS&lt;br /&gt;
&lt;br /&gt;
# decrease db-heavy features per Aaron Schulz&lt;br /&gt;
$wgMiserMode = true;&lt;br /&gt;
&lt;br /&gt;
# Causes serious encoding problems&lt;br /&gt;
$wgUseGzip = false;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## I added this to our LocalSettings.php, except I hard-coded the wgCacheDirectory to &#039;/var/www/html/wiki.eco-libre.org/cache&#039;&lt;br /&gt;
## here&#039;s the ConfirmAccounts-related (and ConfirmEdit-related) config from OSE&#039;s LocalSettings.php&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# ConfirmAccount&lt;br /&gt;
# This extension and directory requires an admin to confirm a user before their &lt;br /&gt;
account is created&lt;br /&gt;
&lt;br /&gt;
require_once &amp;quot;$IP/extensions/ConfirmAccount/ConfirmAccount.php&amp;quot;;&lt;br /&gt;
$wgFileStore[&#039;accountreqs&#039;] = &amp;quot;$IP/images/ConfirmAccount&amp;quot;;&lt;br /&gt;
$wgFileStore[&#039;accountcreds&#039;] = &amp;quot;$IP/images/ConfirmAccount&amp;quot;;&lt;br /&gt;
$wgConfirmAccountContact = &#039;REDACTED@opensourceecology.org&#039;;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# ConfirmEdit&lt;br /&gt;
# reCaptcha settings and keys&lt;br /&gt;
&lt;br /&gt;
wfLoadExtensions([ &#039;ConfirmEdit&#039;, &#039;ConfirmEdit/ReCaptcha&#039; ]);&lt;br /&gt;
#$wgCaptchaClass = &#039;ReCaptcha&#039;;&lt;br /&gt;
$wgCaptchaClass = &#039;SimpleCaptcha&#039;;&lt;br /&gt;
#$wgCaptchaClass = &#039;QuestyCaptcha&#039;;&lt;br /&gt;
&lt;br /&gt;
#$wgReCaptchaPublicKey = &#039;REDACTED&#039;;&lt;br /&gt;
#$wgReCaptchaPrivateKey = &#039;REDACTED&#039;;&lt;br /&gt;
$wgReCaptchaPublicKey = &#039;REDACTED&#039;;&lt;br /&gt;
$wgReCaptchaPrivateKey = &#039;REDACTED&#039;;&lt;br /&gt;
&lt;br /&gt;
# https://www.google.com/recaptcha/admin/site?siteid=REDACTED - old style&lt;br /&gt;
#$recaptcha_public_key = &#039;REDACTED&#039;;&lt;br /&gt;
#$recaptcha_private_key = &#039;REDACTED&#039;;&lt;br /&gt;
&lt;br /&gt;
$wgGroupPermissions[&#039;*&#039;            ][&#039;skipcaptcha&#039;] = false;&lt;br /&gt;
$wgGroupPermissions[&#039;user&#039;         ][&#039;skipcaptcha&#039;] = true;&lt;br /&gt;
$wgGroupPermissions[&#039;autoconfirmed&#039;][&#039;skipcaptcha&#039;] = true;&lt;br /&gt;
$wgGroupPermissions[&#039;bot&#039;          ][&#039;skipcaptcha&#039;] = true; // registered bots&lt;br /&gt;
$wgGroupPermissions[&#039;sysop&#039;        ][&#039;skipcaptcha&#039;] = true;&lt;br /&gt;
&lt;br /&gt;
# Allow admins to approve (and unapprove) users via Special:UserRights&lt;br /&gt;
$wgAddGroups[&#039;sysop&#039;][&#039;approved&#039;] = true;&lt;br /&gt;
$wgRemoveGroups[&#039;sysop&#039;][&#039;approved&#039;] = true;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## of note is that I was planning on moving OSE from recaptcha to FancyCaptcha https://wiki.opensourceecology.org/wiki/CHG-2025-XX-XX_migrate_wiki_to_hetzner3&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# re-enable ConfirmEdit and switch to FancyCaption&lt;br /&gt;
grep &#039;FancyCaptcha&#039; ${vhostDir}/LocalSettings.php || perl -0777 -pi -e &amp;quot;s%\\\$wgCaptchaClass = &#039;SimpleCaptcha&#039;;%\#\\\$wgCaptchaClass = &#039;SimpleCaptcha&#039;;\n\nwfLoadExtensions([ &#039;ConfirmEdit&#039;, &#039;ConfirmEdit/FancyCaptcha&#039; ]);\n\\\$wgCaptchaDirectory = &#039;/var/www/html/wiki.opensourceecology.org/htdocs/images/captcha/&#039;;\n\\\$wgCaptchaSecret = &#039;$wgCaptchaSecret&#039;;\n%igs&amp;quot; ${vhostDir}/LocalSettings.php&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## oh shit, there&#039;s a known issue with ConfirmAccounts that it doesn&#039;t work at all on mediawiki v1.43. it was opened a year ago X_x https://www.mediawiki.org/wiki/Extension:ConfirmAccount#Known_issues&lt;br /&gt;
### well, hopefully that gets fixed before we upgrade to the latest LTS?&lt;br /&gt;
## ok, I&#039;m just going to add this to LocalSettings.php&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# configure ConfirmAccount. See also:&lt;br /&gt;
# * https://www.mediawiki.org/wiki/Extension:ConfirmAccount&lt;br /&gt;
# * https://wiki.eco-libre.org/wiki/Maltfield_Log/2026&lt;br /&gt;
wfLoadExtension( &#039;ConfirmAccount&#039; );&lt;br /&gt;
&lt;br /&gt;
# REQUIRED to enforce account requests&lt;br /&gt;
$wgGroupPermissions[&#039;*&#039;][&#039;createaccount&#039;] = false;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## and, per the wiki extensions&#039; page, I ran the update script&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@mail:/var/www/html/wiki.eco-libre.org# sudo -u www-data php /usr/share/mediawiki/maintenance/run.php update --dbuser wiki_el_superuser --dbpass REDACTED&lt;br /&gt;
...&lt;br /&gt;
...Update &#039;MediaWiki\Maintenance\FixAutoblockLogTitles&#039; already logged as completed. Use --force to run it again.&lt;br /&gt;
Purging caches...done.&lt;br /&gt;
&lt;br /&gt;
Done in 2.2 s.&lt;br /&gt;
root@mail:/var/www/html/wiki.eco-libre.org# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## I went to the SpecialPages, I now see &amp;quot;ConfirmAccounts Requests&amp;quot; https://wiki.eco-libre.org/wiki/Special:ConfirmAccounts&lt;br /&gt;
## Now, in a tor browser where I&#039;m *not* logged-in, I can click on &amp;quot;Anonymous&amp;quot; in the top-right and click on &amp;quot;Request account&amp;quot; https://wiki.eco-libre.org/wiki/Special:RequestAccount&lt;br /&gt;
## there&#039;s this weird thing that people have to agree to the ToS *and* that their real name is real.&lt;br /&gt;
### that first one is reasonable (though we haven&#039;t written a ToS yet)&lt;br /&gt;
### that second one is dumb. why wouldn&#039;t we let users contribute anonymously?&lt;br /&gt;
#### so I edited the LocalSettings.php with this&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# we let folks contribute under pseudonyms &lt;br /&gt;
$wgConfirmAccountRequestFormItems = [&lt;br /&gt;
   &#039;UserName&#039;        =&amp;gt; [ &#039;enabled&#039; =&amp;gt; true ],&lt;br /&gt;
   &#039;RealName&#039;        =&amp;gt; [ &#039;enabled&#039; =&amp;gt; false ],&lt;br /&gt;
   &#039;Biography&#039;       =&amp;gt; [ &#039;enabled&#039; =&amp;gt; false, &#039;minWords&#039; =&amp;gt; 50 ],&lt;br /&gt;
   &#039;AreasOfInterest&#039; =&amp;gt; [ &#039;enabled&#039; =&amp;gt; true ],&lt;br /&gt;
   &#039;CV&#039;              =&amp;gt; [ &#039;enabled&#039; =&amp;gt; true ],&lt;br /&gt;
   &#039;Notes&#039;           =&amp;gt; [ &#039;enabled&#039; =&amp;gt; true ],&lt;br /&gt;
   &#039;Links&#039;           =&amp;gt; [ &#039;enabled&#039; =&amp;gt; true ],&lt;br /&gt;
   &#039;TermsOfService&#039;  =&amp;gt; [ &#039;enabled&#039; =&amp;gt; true ],&lt;br /&gt;
 ];&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## ugh, it still has the same text about the &amp;quot;Real Name&amp;quot; – even after we disabled it&lt;br /&gt;
## looks like I need to create a wiki arrticle with the text that I want here https://wiki.eco-libre.org/wiki/MediaWiki:Requestaccount-text&lt;br /&gt;
### so the default text for this article is&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&#039;Complete and submit the following form to request a user account&#039;.&lt;br /&gt;
&lt;br /&gt;
Make sure that you first read the Terms of Service before requesting an account.&lt;br /&gt;
&lt;br /&gt;
Once the account is approved, you will be emailed a notification message and the account will be usable at login.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
### what I want is the &amp;quot;accept&amp;quot; text, which replaces this&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
I have read and agree to abide by the Terms of Service of Eco-Libre. The name I have specified under &amp;quot;Real name&amp;quot; is in fact my own real name.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
### here&#039;s a list of all the system messages, according to the extensions wiki page https://www.mediawiki.org/wiki/Extension:ConfirmAccount#Minimal&lt;br /&gt;
#### requestaccount-text, requestaccount-notes, requestaccount-ext-text, requestaccount-acc-text&lt;br /&gt;
##### this is not it https://wiki.eco-libre.org/wiki/MediaWiki:Requestaccount-acc-text&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
A confirmation message will be sent to your email address once you submit this request. The address will not be published. Please respond by clicking on the confirmation link provided by the email. Finally, your password will be emailed to you when your account is created. &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
#### nor this https://wiki.eco-libre.org/wiki/MediaWiki:Requestaccount-ext-text&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
The following information is kept private and will only be used for this request. You may want to list contacts such a phone number to aid in identify confirmation. &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
### I just searched the string, and found this&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@mail:/var/www/html/wiki.eco-libre.org# grep -irl &#039;is in fact my own real name&#039; *&lt;br /&gt;
cache/l10n_cache-en.cdb&lt;br /&gt;
htdocs/extensions/ConfirmAccount/i18n/requestaccount/en.json&lt;br /&gt;
root@mail:/var/www/html/wiki.eco-libre.org# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
#### so it looks like we need to edit one of these&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@mail:/var/www/html/wiki.eco-libre.org# grep -i &#039;real name&#039; htdocs/extensions/ConfirmAccount/i18n/requestaccount/en.json&lt;br /&gt;
		&amp;quot;requestaccount-real&amp;quot;: &amp;quot;Real name (optional):&amp;quot;,&lt;br /&gt;
		&amp;quot;requestaccount-real-i&amp;quot;: &amp;quot;Real name is optional. If you choose to provide it, this will be used for giving the user attribution for their work.&amp;quot;,&lt;br /&gt;
		&amp;quot;requestaccount-same&amp;quot;: &amp;quot;(same as real name below)&amp;quot;,&lt;br /&gt;
		&amp;quot;requestaccount-agree&amp;quot;: &amp;quot;You must certify that your real name is correct and that you agree to our Terms of Service.&amp;quot;,&lt;br /&gt;
		&amp;quot;requestaccount-tos&amp;quot;: &amp;quot;I have read and agree to abide by the [[{{MediaWiki:Requestaccount-page}}|Terms of Service]] of {{SITENAME}}.\nThe name I have specified under \&amp;quot;Real name\&amp;quot; is in fact my own real name.&amp;quot;,&lt;br /&gt;
root@mail:/var/www/html/wiki.eco-libre.org# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
#### I edited these two pages&lt;br /&gt;
##### https://wiki.eco-libre.org/wiki/MediaWiki:Requestaccount-tos&lt;br /&gt;
##### https://wiki.eco-libre.org/wiki/MediaWiki:Requestaccount-agree&lt;br /&gt;
### that worked; the agree text changed when I refresh the RequsetAccount form in tor browser&lt;br /&gt;
### I entered the min inforamtion, and got this response&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Your account request has been sent and is now pending review. A confirmation email has been sent to your email address.&lt;br /&gt;
&lt;br /&gt;
Return to Main Page.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
#### curiously, that means it didn&#039;t force me to enter a CV, bio, or the list of websites&lt;br /&gt;
#### I also got an email from noreply@eco-libre.org. It just basically asked me to click an email. Good GDPR compliance.&lt;br /&gt;
##### wait, I refreshed the special page as admin. it shows-up for review. so I guess not GDPR compliant :(&lt;br /&gt;
##### also the ip address listed is 127.0.0.1. Perhaps I need to configure MediaWiki to process X-Forwarded-For headers&lt;br /&gt;
### I changed &#039;false&#039; to &#039;true&#039; for the biography; now it appears again&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$wgConfirmAccountRequestFormItems = [&lt;br /&gt;
   &#039;UserName&#039;        =&amp;gt; [ &#039;enabled&#039; =&amp;gt; true ],&lt;br /&gt;
   &#039;RealName&#039;        =&amp;gt; [ &#039;enabled&#039; =&amp;gt; false ],&lt;br /&gt;
   &#039;Biography&#039;       =&amp;gt; [ &#039;enabled&#039; =&amp;gt; true, &#039;minWords&#039; =&amp;gt; 50 ],&lt;br /&gt;
   &#039;AreasOfInterest&#039; =&amp;gt; [ &#039;enabled&#039; =&amp;gt; true ],&lt;br /&gt;
   &#039;CV&#039;              =&amp;gt; [ &#039;enabled&#039; =&amp;gt; true ],&lt;br /&gt;
   &#039;Notes&#039;           =&amp;gt; [ &#039;enabled&#039; =&amp;gt; true ],&lt;br /&gt;
   &#039;Links&#039;           =&amp;gt; [ &#039;enabled&#039; =&amp;gt; true ],&lt;br /&gt;
   &#039;TermsOfService&#039;  =&amp;gt; [ &#039;enabled&#039; =&amp;gt; true ],&lt;br /&gt;
 ];&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## the workflow is for, after being approved, the system emails the passowrd. that&#039;s not very secure. we should, at least, make sure to require the user to change their password on first login&lt;br /&gt;
### I was looking for a way to force users to change their password on first login, but I first found this in the OSE config&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#############&lt;br /&gt;
# HARDENING #&lt;br /&gt;
#############&lt;br /&gt;
&lt;br /&gt;
$wgSecureLogin = true;&lt;br /&gt;
$wgSecretKey = &#039;REDACTED&#039;;&lt;br /&gt;
&lt;br /&gt;
# PASSWORD POLICIES&lt;br /&gt;
&lt;br /&gt;
$wgPasswordPolicy[&#039;policies&#039;][&#039;default&#039;][&#039;MinimalPasswordLength&#039;] = 10;&lt;br /&gt;
$wgPasswordPolicy[&#039;policies&#039;][&#039;default&#039;][&#039;PasswordCannotBePopular&#039;] = PHP_INT_MAX;&lt;br /&gt;
$wgPasswordPolicy[&#039;policies&#039;][&#039;default&#039;][&#039;PasswordCannotMatchUsername&#039;] = true;&lt;br /&gt;
&lt;br /&gt;
$wgPasswordPolicy[&#039;policies&#039;][&#039;sysop&#039;][&#039;MinimalPasswordLength&#039;] = 20&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
### I added this to stack exchange https://webapps.stackexchange.com/questions/182290/how-to-force-new-users-to-reset-their-password-mediawiki&lt;br /&gt;
# TODO: figure-out how to force new users to change their password, if it was auto-generated by mediawiki&lt;br /&gt;
# TODO: create ToS page https://wiki.eco-libre.org/wiki/Eco-Libre:Terms_of_Service&lt;br /&gt;
# TODO: figure-out how to make mediawiki see the IP as X-Forwarded-For (to play nice with nginx-&amp;gt;varnish-&amp;gt;apache)&lt;br /&gt;
# TODO: finish activating &amp;amp; configuring the remaining &amp;quot;new&amp;quot; extensions&lt;br /&gt;
&lt;br /&gt;
== 2026-04-17 ==&lt;br /&gt;
# shit, we&#039;re getting a 500 error on the wiki today&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[user@disp3459 ~]$ curl -iL https://wiki.eco-libre.org&lt;br /&gt;
HTTP/1.1 500 Internal Server Error&lt;br /&gt;
Server: nginx&lt;br /&gt;
Date: Sat, 18 Apr 2026 00:57:02 GMT&lt;br /&gt;
Content-Type: text/html; charset=UTF-8&lt;br /&gt;
Content-Length: 0&lt;br /&gt;
Connection: keep-alive&lt;br /&gt;
X-Content-Type-Options: nosniff&lt;br /&gt;
Expires: Thu, 19 Nov 1981 08:52:00 GMT&lt;br /&gt;
Cache-Control: no-store, no-cache, must-revalidate&lt;br /&gt;
Pragma: no-cache&lt;br /&gt;
X-Request-Id: REDACTED&lt;br /&gt;
X-Frame-Options: SAMEORIGIN&lt;br /&gt;
Set-Cookie: mw_installer_session=REDACTED; path=/; secure; HttpOnly; SameSite=Strict;HttpOnly;Secure&lt;br /&gt;
X-Content-Type-Options: nosniff&lt;br /&gt;
X-XSS-Protection: 1; mode=block&lt;br /&gt;
X-Frame-Options: deny&lt;br /&gt;
Referrer-Policy: strict-origin&lt;br /&gt;
X-Varnish: 18804052&lt;br /&gt;
Age: 0&lt;br /&gt;
Via: 1.1 mail (Varnish/7.7)&lt;br /&gt;
&lt;br /&gt;
[user@disp3459 ~]$ &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# looks like open_basedir?&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Sat Apr 18 00:59:28.202275 2026] [proxy_fcgi:error] [pid 3214280:tid 3214323] [client 127.0.0.1:0] AH01071: Got error &#039;PHP message: PHP Warning:  is_readable(): open_basedir restriction in effect. File(/usr/share/mediawiki/LocalSettings.php) is not within the allowed path(s): (...) in /usr/share/mediawiki/includes/Output/NoLocalSettings.php on line 59; PHP message: PHP Fatal error:  Uncaught Error: Call to undefined function Wikimedia\\ObjectCache\\ini_set() in /usr/share/mediawiki/includes/libs/objectcache/APCUBagOStuff.php:55\nStack trace:\n#0 /usr/share/mediawiki/includes/utils/FileContentsHasher.php(37): Wikimedia\\ObjectCache\\APCUBagOStuff-&amp;gt;construct()\n#1 /usr/share/mediawiki/includes/utils/FileContentsHasher.php(47): FileContentsHasher-&amp;gt;construct()\n#2 /usr/share/mediawiki/includes/utils/FileContentsHasher.php(93): FileContentsHasher::singleton()\n#3 /usr/share/mediawiki/includes/Html/TemplateParser.php(271): FileContentsHasher::getFileContentsHash()\n#4 /usr/share/mediawiki/includes/Html/TemplateParser.php(173): MediaWiki\\Html\\TemplateParser-&amp;gt;compile()\n#5 /usr/share/mediawiki/includes/Html/TemplateParser.php(296): MediaWiki\\Html\\TemplateParser-&amp;gt;getTemplate()\n#6 /usr/share/mediawiki/includes/Output/NoLocalSettings.php(54): MediaWiki\\Html\\TemplateParser-&amp;gt;processTemplate()\n#7 /usr/share/mediawiki/includes/WebStart.php(51): require_once(&#039;...&#039;)\n#8...&#039;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# it&#039;s just a symlink to a symlink to a non-existant file. is that the issue?&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@mail:/usr/share/mediawiki/includes/libs/rdbms/database# ls -lah /usr/share/mediawiki/LocalSettings.php&lt;br /&gt;
lrwxrwxrwx 1 root root 36 Apr 10 22:17 /usr/share/mediawiki/LocalSettings.php -&amp;gt; /var/lib/mediawiki/LocalSettings.php&lt;br /&gt;
root@mail:/usr/share/mediawiki/includes/libs/rdbms/database# ls -lah /var/lib/mediawiki/LocalSettings.php&lt;br /&gt;
lrwxrwxrwx 1 root root 32 Apr 10 22:17 /var/lib/mediawiki/LocalSettings.php -&amp;gt; /etc/mediawiki/LocalSettings.php&lt;br /&gt;
root@mail:/usr/share/mediawiki/includes/libs/rdbms/database# ls -lah /etc/mediawiki/LocalSettings.php&lt;br /&gt;
ls: cannot access &#039;/etc/mediawiki/LocalSettings.php&#039;: No such file or directory&lt;br /&gt;
root@mail:/usr/share/mediawiki/includes/libs/rdbms/database# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# wtf. the file is here, but it&#039;s not here?&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@mail:/var/lib/mediawiki# ls LocalSettings.php &lt;br /&gt;
LocalSettings.php&lt;br /&gt;
root@mail:/var/lib/mediawiki# cat LocalSettings.php &lt;br /&gt;
cat: LocalSettings.php: No such file or directory&lt;br /&gt;
root@mail:/var/lib/mediawiki# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# oh, it&#039;s because it&#039;s a symlink&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@mail:/var/lib/mediawiki# ls -lah /var/www/html/wiki.eco-libre.org/htdocs/LocalSettings.php &lt;br /&gt;
lrwxrwxrwx 1 root root 32 Apr 10 22:17 /var/www/html/wiki.eco-libre.org/htdocs/LocalSettings.php -&amp;gt; /etc/mediawiki/LocalSettings.php&lt;br /&gt;
root@mail:/var/lib/mediawiki# cat /var/www/html/wiki.eco-libre.org/htdocs/LocalSettings.php &lt;br /&gt;
cat: /var/www/html/wiki.eco-libre.org/htdocs/LocalSettings.php: No such file or directory&lt;br /&gt;
root@mail:/var/lib/mediawiki# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# that definitely was a file before. I set it to just require() the real file from one dir up (outside the docroot). but why is it gone now? could it have been deleted by a security upgrade in apt? unattended-upgrades perhaps?&lt;br /&gt;
## well, that&#039;s a match&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@mail:/var/log/unattended-upgrades# grep -irl mediawiki *&lt;br /&gt;
unattended-upgrades-dpkg.log&lt;br /&gt;
unattended-upgrades.log&lt;br /&gt;
root@mail:/var/log/unattended-upgrades# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# yeah, it looks like we upgraded on 2026-04-13. That was Monday. Today is Friday.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@mail:/var/log/unattended-upgrades# grep -ir mediawiki *&lt;br /&gt;
unattended-upgrades-dpkg.log:Preparing to unpack .../mediawiki_1%3a1.43.8+dfsg-1~deb13u1_all.deb ...&lt;br /&gt;
unattended-upgrades-dpkg.log:Unpacking mediawiki (1:1.43.8+dfsg-1~deb13u1) over (1:1.43.6+dfsg-1~deb13u1) ...&lt;br /&gt;
unattended-upgrades-dpkg.log:Preparing to unpack .../mediawiki-classes_1%3a1.43.8+dfsg-1~deb13u1_all.deb ...&lt;br /&gt;
unattended-upgrades-dpkg.log:Unpacking mediawiki-classes (1:1.43.8+dfsg-1~deb13u1) over (1:1.43.6+dfsg-1~deb13u1) ...&lt;br /&gt;
unattended-upgrades-dpkg.log:Setting up mediawiki-classes (1:1.43.8+dfsg-1~deb13u1) ...&lt;br /&gt;
unattended-upgrades-dpkg.log:Setting up mediawiki (1:1.43.8+dfsg-1~deb13u1) ...&lt;br /&gt;
unattended-upgrades-dpkg.log:apache2_invoke mediawiki: already enabled&lt;br /&gt;
unattended-upgrades-dpkg.log:mediawiki-jobrunner.service is a disabled or a static unit not running, not starting it.&lt;br /&gt;
unattended-upgrades.log:2026-04-13 06:07:02,546 INFO Packages that will be upgraded: mediawiki mediawiki-classes&lt;br /&gt;
root@mail:/var/log/unattended-upgrades# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# mediawiki announced two releases on 2026-04-01. One was a normal maintenance release (1.43.8). One was a security release (1.43.7)&lt;br /&gt;
## https://lists.wikimedia.org/hyperkitty/list/mediawiki-announce@lists.wikimedia.org/thread/DIBLSBHISKX6NFRUFNOGZRVW42E7R2QP/&lt;br /&gt;
## https://lists.wikimedia.org/hyperkitty/list/mediawiki-announce@lists.wikimedia.org/thread/6VW6OGVSC7LO3QUMBEZOPQFYYOFDJ452/&lt;br /&gt;
# well, it&#039;s good that we confirmed that securty updates are getting automatically installed.&lt;br /&gt;
# ok, well, obviously we need to follow the debian-way and put the LocalSettings.php file in /etc/.\&lt;br /&gt;
## I did that&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@mail:/var/lib/mediawiki# cat /etc/mediawiki/LocalSettings.php&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
# including separate file that contains the database password so that it is not stored within the document root.&lt;br /&gt;
# For more info see:&lt;br /&gt;
#  * https://tech.michaelaltfield.net/2020/02/14/phplist-hardening-security/&lt;br /&gt;
#  * https://www.mediawiki.org/wiki/Manual:Security&lt;br /&gt;
#  * https://wiki.r00tedvw.com/index.php/Mediawiki/Hardening&lt;br /&gt;
 &lt;br /&gt;
#$docRoot = dirname( $_SERVER[&#039;DOCUMENT_ROOT&#039;] );&lt;br /&gt;
#require_once &amp;quot;$docRoot/LocalSettings.php&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
# docRoot didn&#039;t work for all of:&lt;br /&gt;
#  1. php-fpm (the normal website)&lt;br /&gt;
#  2. cli&lt;br /&gt;
#  3. the fact that we&#039;re in /var/lib/mediawiki due to debian&#039;s install symlink&lt;br /&gt;
#&lt;br /&gt;
# ...so I&#039;m just hardcoding the path to LocalSettings.php, so it always works!&lt;br /&gt;
&lt;br /&gt;
require_once( &amp;quot;/var/www/html/wiki.eco-libre.org/LocalSettings.php&amp;quot; );&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
root@mail:/var/lib/mediawiki# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# I tried the site; it&#039;s still broken&lt;br /&gt;
# I cleared varnish cache; it&#039;s still broken&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@mail:/var/lib/mediawiki# varnishadm &#039;ban req.url ~ &amp;quot;.&amp;quot;&#039;&lt;br /&gt;
&lt;br /&gt;
root@mail:/var/lib/mediawiki# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# yeah, I think the problem is that I never added /etc/mediawiki into the basedir, because I wasn&#039;t using it there. Ugh.&lt;br /&gt;
# I don&#039;t like doing this, but there&#039;s nothing else there. should be fine&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@mail:/var/lib/mediawiki# ls -lah /etc/mediawiki/&lt;br /&gt;
total 20K&lt;br /&gt;
drwxr-xr-x   2 root root 4,0K Apr 18 01:16 .&lt;br /&gt;
drwxr-xr-x 120 root root  12K Apr 17 20:30 ..&lt;br /&gt;
-rw-r--r--   1 root root  741 Apr 18 01:16 LocalSettings.php&lt;br /&gt;
root@mail:/var/lib/mediawiki# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 2026-04-14 ==&lt;br /&gt;
# Appropedia responded to me, indicating that they use Vector 2022 skin, with these config options https://wordpress.org/support/topic/support-for-automatic-exchange-rates-wp_http_block_external-2/#&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
:wfLoadSkin( &#039;Vector&#039; );&lt;br /&gt;
:$wgDefaultSkin = &#039;vector-2022&#039;;&lt;br /&gt;
:$wgSkipSkins[] = &#039;vector&#039;; // Disable old Vector&lt;br /&gt;
:$wgVectorResponsive = true;&lt;br /&gt;
:$wgVectorMaxWidthOptions[&#039;exclude&#039;][&#039;mainpage&#039;] = false;&lt;br /&gt;
:$wgVectorNightMode[&#039;logged_out&#039;] = true;&lt;br /&gt;
:$wgDefaultUserOptions[&#039;vector-main-menu-pinned&#039;] = 0;&lt;br /&gt;
:$wgDefaultUserOptions[&#039;vector-page-tools-pinned&#039;] = 0;&lt;br /&gt;
:$wgDefaultUserOptions[&#039;vector-appearance-pinned&#039;] = 0;&lt;br /&gt;
:$wgDefaultUserOptions[&#039;vector-toc-pinned&#039;] = 0;&lt;br /&gt;
:$wgDefaultUserOptions[&#039;vector-font-size&#039;] = 1;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# they said they use this extension for &amp;quot;read mode&amp;quot; which they developed themselves https://www.mediawiki.org/wiki/Extension:ReadMode&lt;br /&gt;
&lt;br /&gt;
== 2026-04-13 ==&lt;br /&gt;
# Here&#039;s TOFU 3/3 (Tor, exit in The Netherlands)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
The Netherlands&lt;br /&gt;
	  Congratulations. This browser is configured to use Tor.&lt;br /&gt;
2026-04-13&lt;br /&gt;
######################################################################### 100.0%&lt;br /&gt;
2026-04-13&lt;br /&gt;
14M	OATHAuth-REL1_43-015a49e.tar.gz&lt;br /&gt;
9ee56e843931edd87b631b264d680e9f8d77f18b5ffdbc18b9a4f5b15330878e  OATHAuth-REL1_43-015a49e.tar.gz&lt;br /&gt;
user@host:/tmp/user/1000/tmp.eIvrMPff3B$ &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 2026-04-10 ==&lt;br /&gt;
# Here&#039;s TOFU 2/3 (VPN, exit in US)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
United States&lt;br /&gt;
2026-04-10&lt;br /&gt;
######################################################################### 100.0%&lt;br /&gt;
2026-04-10&lt;br /&gt;
14M	OATHAuth-REL1_43-015a49e.tar.gz&lt;br /&gt;
9ee56e843931edd87b631b264d680e9f8d77f18b5ffdbc18b9a4f5b15330878e  OATHAuth-REL1_43-015a49e.tar.gz&lt;br /&gt;
user@disp5712:/tmp/tmp.oTeGPpTCzP$ &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# finally, they all match! great, that&#039;s our last extension&lt;br /&gt;
&lt;br /&gt;
== 2026-04-09 ==&lt;br /&gt;
# Here&#039;s TOFU 3/3 (ISP, exit in Ecuador)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Ecuador&lt;br /&gt;
2026-04-09&lt;br /&gt;
######################################################################### 100.0%&lt;br /&gt;
2026-04-09&lt;br /&gt;
4.0K	OATHAuth-REL1_43-967ccd4.tar.gz&lt;br /&gt;
8351c0267c2cd7866ff04c04261f06cd75af9a7130aac848ca43fd047404e229  OATHAuth-REL1_43-967ccd4.tar.gz&lt;br /&gt;
user@disp7124:/tmp/tmp.wlx3U02c6r$ &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# fuck, it&#039;s already unavailable; says &#039;libraryupgrader&#039; from 3 hours ago &amp;gt;:0&lt;br /&gt;
# let&#039;s try again&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
REMOTE_FILES=&amp;quot;https://extdist.wmflabs.org/dist/extensions/OATHAuth-REL1_43-015a49e.tar.gz&amp;quot;&lt;br /&gt;
&lt;br /&gt;
CURL=&amp;quot;/usr/bin/curl --retry 5 --retry-all-errors&amp;quot;&lt;br /&gt;
PYTHON=&amp;quot;/usr/bin/python3&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# in tails, we must torify&lt;br /&gt;
if [[ &amp;quot;`whoami`&amp;quot; == &amp;quot;amnesia&amp;quot; ]] ; then&lt;br /&gt;
	CURL=&amp;quot;/usr/bin/torify ${CURL}&amp;quot;&lt;br /&gt;
	PYTHON=&amp;quot;/usr/bin/torify ${PYTHON}&amp;quot;&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
tmpDir=`mktemp -d`&lt;br /&gt;
pushd &amp;quot;${tmpDir}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# first get some info about our internet connection&lt;br /&gt;
${CURL} -s https://ifconfig.co/country | head -n1&lt;br /&gt;
${CURL} -s https://check.torproject.org | grep Congratulations | head -n1&lt;br /&gt;
&lt;br /&gt;
# and today&#039;s date&lt;br /&gt;
date -u +&amp;quot;%Y-%m-%d&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# get the file&lt;br /&gt;
for file in ${REMOTE_FILES}; do&lt;br /&gt;
	${CURL} --progress-bar -O ${file}&lt;br /&gt;
done&lt;br /&gt;
&lt;br /&gt;
# checksum&lt;br /&gt;
date -u +&amp;quot;%Y-%m-%d&amp;quot;&lt;br /&gt;
du -sh *&lt;br /&gt;
sha256sum *&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# Here&#039;s TOFU 1/3 (ISP, exit in Ecuador)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Ecuador&lt;br /&gt;
2026-04-09&lt;br /&gt;
######################################################################### 100.0%&lt;br /&gt;
2026-04-09&lt;br /&gt;
14M	OATHAuth-REL1_43-015a49e.tar.gz&lt;br /&gt;
9ee56e843931edd87b631b264d680e9f8d77f18b5ffdbc18b9a4f5b15330878e  OATHAuth-REL1_43-015a49e.tar.gz&lt;br /&gt;
user@disp7124:/tmp/tmp.rGKb4qtHLX$ &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 2026-04-08 ==&lt;br /&gt;
# Here&#039;s TOFU 2/3 (VPN, exit in UK)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
United Kingdom&lt;br /&gt;
2026-04-08&lt;br /&gt;
############################################################################## 100.0%&lt;br /&gt;
2026-04-08&lt;br /&gt;
14M	OATHAuth-REL1_43-967ccd4.tar.gz&lt;br /&gt;
5992bf6044ba5bd6404d51ec5bef936e6eb724576a2003fc176648c7fcf9c6b7  OATHAuth-REL1_43-967ccd4.tar.gz&lt;br /&gt;
user@disp6902:/tmp/tmp.KDMVCsn1cU$ &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 2026-04-07 ==&lt;br /&gt;
# here&#039;s TOFU 3/3 (Tor, exit in The Netherlands)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
The Netherlands&lt;br /&gt;
	  Congratulations. This browser is configured to use Tor.&lt;br /&gt;
2026-04-07&lt;br /&gt;
####################################################################### 100.0%&lt;br /&gt;
####################################################################### 100.0%&lt;br /&gt;
####################################################################### 100.0%&lt;br /&gt;
2026-04-07&lt;br /&gt;
448K	ConfirmAccount-REL1_43-38c4602.tar.gz&lt;br /&gt;
124K	DeleteBatch-REL1_43-b3b052b.tar.gz&lt;br /&gt;
4.0K	OATHAuth-REL1_43-2cdbefb.tar.gz&lt;br /&gt;
95b2bc67977c22d069867a7225aa1a9720b7593ed5ab49aa27cc293f01b2e2bb  ConfirmAccount-REL1_43-38c4602.tar.gz&lt;br /&gt;
d1e7c01cf709f2b57137bb3d76f73b4e8fd36ce57c12b750b04fe20ffce9be61  DeleteBatch-REL1_43-b3b052b.tar.gz&lt;br /&gt;
8351c0267c2cd7866ff04c04261f06cd75af9a7130aac848ca43fd047404e229  OATHAuth-REL1_43-2cdbefb.tar.gz&lt;br /&gt;
user@host:/tmp/user/1000/tmp.qw9hrOvh3l$ &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# ok, well, we&#039;re 2/3 for that one. ConfirmAccount and DeleteBatch both have the same on all 3 TOFUs.&lt;br /&gt;
## But OATHAuth must have had a new release, because it&#039;s now 404&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
user@host:/tmp/user/1000/tmp.qw9hrOvh3l$ cat OATHAuth-REL1_43-2cdbefb.tar.gz &lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;head&amp;gt;&amp;lt;title&amp;gt;404 Not Found&amp;lt;/title&amp;gt;&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;h1&amp;gt;404 Not Found&amp;lt;/h1&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&amp;lt;center&amp;gt;nginx/1.18.0&amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
user@host:/tmp/user/1000/tmp.qw9hrOvh3l$ &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# I checked the changelog. looks like this extension is getting updated almost every 1-2 days from &amp;quot;Translation updater bot&amp;quot; – that&#039;s terrible. We need three consecutive days of no changes for 3TOFU https://www.mediawiki.org/wiki/Extension:OATHAuth&lt;br /&gt;
## hmm, well, if I look back further, there was a gap of 2 months before the update 6 days ago. So there certainly is *some* stability.&lt;br /&gt;
## also, that was *all* commits. This one limits to just the 1.43 branch, which is what we want https://gerrit.wikimedia.org/r/plugins/gitiles/mediawiki/extensions/OATHAuth/+log/refs/heads/REL1_43&lt;br /&gt;
### hmm, that one shows the last update was 10 hours ago, and the one before that was 2 months ago (Jan 22). That would be fine, but didn&#039;t we have two consecutive 3TOFUs fail on us?&lt;br /&gt;
### oh, wait, woah. the commits are out of order! First it shows &amp;quot;10 hours ago&amp;quot; and then &amp;quot;2 months ago&amp;quot; and then &amp;quot;7 days ago&amp;quot; wtf!&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
gerrit.wikimedia.org / mediawiki / extensions / OATHAuth / refs/heads/REL1_43&lt;br /&gt;
&lt;br /&gt;
	967ccd4 Localisation updates from https://translatewiki.net. by Translation updater bot · 10 hours ago REL1_43&lt;br /&gt;
	2cdbefb SECURITY: Don&#039;t leak user&#039;s lack of 2FA to other users by Roan Kattouw · 2 months ago&lt;br /&gt;
	bfcd5cf Localisation updates from https://translatewiki.net. by Translation updater bot · 7 days ago&lt;br /&gt;
	d8e7578 build: Updating npm dependencies by libraryupgrader · 12 days ago&lt;br /&gt;
	be14e83 Localisation updates from https://translatewiki.net. by Translation updater bot · 2 weeks ago&lt;br /&gt;
	77c70f5 build: Updating flatted to 3.4.2 by libraryupgrader · 3 weeks ago&lt;br /&gt;
	87d04d4 Localisation updates from https://translatewiki.net. by Translation updater bot · 3 weeks ago&lt;br /&gt;
	8e176b2 Localisation updates from https://translatewiki.net. by Translation updater bot · 4 weeks ago&lt;br /&gt;
	14596de Localisation updates from https://translatewiki.net. by Translation updater bot · 5 weeks ago&lt;br /&gt;
	8c7891a build: Updating ajv to 6.14.0, 8.18.0 by libraryupgrader · 6 weeks ago&lt;br /&gt;
	0406194 Localisation updates from https://translatewiki.net. by Translation updater bot · 6 weeks ago&lt;br /&gt;
	4c94235 Localisation updates from https://translatewiki.net. by Translation updater bot · 7 weeks ago&lt;br /&gt;
	7d0b2d7 Localisation updates from https://translatewiki.net. by Translation updater bot · 8 weeks ago&lt;br /&gt;
	a896cff Localisation updates from https://translatewiki.net. by Translation updater bot · 9 weeks ago&lt;br /&gt;
	b8e8afa Localisation updates from https://translatewiki.net. by Translation updater bot · 2 months ago&lt;br /&gt;
	4b3cb73 build: Updating lodash to 4.17.23 by libraryupgrader · 2 months ago&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# well, it looks like the translator bot runs once per week. so we should have 6 days before that one changes again..&lt;br /&gt;
# anyway, here&#039;s our (hopefully last) 3TOFU script, just for OATHAuth&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
REMOTE_FILES=&amp;quot;https://extdist.wmflabs.org/dist/extensions/OATHAuth-REL1_43-967ccd4.tar.gz&amp;quot;&lt;br /&gt;
&lt;br /&gt;
CURL=&amp;quot;/usr/bin/curl --retry 5 --retry-all-errors&amp;quot;&lt;br /&gt;
PYTHON=&amp;quot;/usr/bin/python3&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# in tails, we must torify&lt;br /&gt;
if [[ &amp;quot;`whoami`&amp;quot; == &amp;quot;amnesia&amp;quot; ]] ; then&lt;br /&gt;
	CURL=&amp;quot;/usr/bin/torify ${CURL}&amp;quot;&lt;br /&gt;
	PYTHON=&amp;quot;/usr/bin/torify ${PYTHON}&amp;quot;&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
tmpDir=`mktemp -d`&lt;br /&gt;
pushd &amp;quot;${tmpDir}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# first get some info about our internet connection&lt;br /&gt;
${CURL} -s https://ifconfig.co/country | head -n1&lt;br /&gt;
${CURL} -s https://check.torproject.org | grep Congratulations | head -n1&lt;br /&gt;
&lt;br /&gt;
# and today&#039;s date&lt;br /&gt;
date -u +&amp;quot;%Y-%m-%d&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# get the file&lt;br /&gt;
for file in ${REMOTE_FILES}; do&lt;br /&gt;
	${CURL} --progress-bar -O ${file}&lt;br /&gt;
done&lt;br /&gt;
&lt;br /&gt;
# checksum&lt;br /&gt;
date -u +&amp;quot;%Y-%m-%d&amp;quot;&lt;br /&gt;
du -sh *&lt;br /&gt;
sha256sum *&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# and TOFU 1/3 (Tor, exit in The Netherlands)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
The Netherlands&lt;br /&gt;
	  Congratulations. This browser is configured to use Tor.&lt;br /&gt;
2026-04-07&lt;br /&gt;
####################################################################### 100.0%&lt;br /&gt;
2026-04-07&lt;br /&gt;
14M	OATHAuth-REL1_43-967ccd4.tar.gz&lt;br /&gt;
5992bf6044ba5bd6404d51ec5bef936e6eb724576a2003fc176648c7fcf9c6b7  OATHAuth-REL1_43-967ccd4.tar.gz&lt;br /&gt;
user@host:/tmp/user/1000/tmp.RBxv6XdjXd$ &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 2026-04-06 ==&lt;br /&gt;
# here&#039;s TOFU 2/3 (VPN, exit in Germany)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Germany&lt;br /&gt;
2026-04-06&lt;br /&gt;
#################################################################################### 100.0%&lt;br /&gt;
#################################################################################### 100.0%&lt;br /&gt;
#################################################################################### 100.0%&lt;br /&gt;
2026-04-06&lt;br /&gt;
448K	ConfirmAccount-REL1_43-38c4602.tar.gz&lt;br /&gt;
124K	DeleteBatch-REL1_43-b3b052b.tar.gz&lt;br /&gt;
14M	OATHAuth-REL1_43-2cdbefb.tar.gz&lt;br /&gt;
95b2bc67977c22d069867a7225aa1a9720b7593ed5ab49aa27cc293f01b2e2bb  ConfirmAccount-REL1_43-38c4602.tar.gz&lt;br /&gt;
d1e7c01cf709f2b57137bb3d76f73b4e8fd36ce57c12b750b04fe20ffce9be61  DeleteBatch-REL1_43-b3b052b.tar.gz&lt;br /&gt;
f71115af96a1ed5297d8d56f56683635b7c9e0b8b32151b184feea1fbec3350a  OATHAuth-REL1_43-2cdbefb.tar.gz&lt;br /&gt;
user@disp8963:/tmp/tmp.JNwdKPbQIW$ &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 2026-04-01 ==&lt;br /&gt;
# continuing with the wiki setup today&lt;br /&gt;
# I saw our db partition reached 90%. It&#039;s been growing slowly, but adding mediawiki to the server didn&#039;t help, so I spent some time expanding the disks. Now we&#039;re down to 48% usage on the db partition, and everything else is hovering around 60% used, +/- 5%&lt;br /&gt;
# here&#039;s our last TOFU on the mediawiki extensions&lt;br /&gt;
## TOFU 3/3 (ISP, exit in Ecuador)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Ecuador&lt;br /&gt;
2026-04-01&lt;br /&gt;
######################################################################### 100.0%&lt;br /&gt;
######################################################################### 100.0%&lt;br /&gt;
######################################################################### 100.0%&lt;br /&gt;
######################################################################### 100.0%&lt;br /&gt;
######################################################################### 100.0%&lt;br /&gt;
######################################################################### 100.0%&lt;br /&gt;
2026-04-01&lt;br /&gt;
4.0K	ConfirmAccount-REL1_43-9cc1a82.tar.gz&lt;br /&gt;
4.0K	DeleteBatch-REL1_43-24a81e4.tar.gz&lt;br /&gt;
4.0K	OATHAuth-REL1_43-d8e7578.tar.gz&lt;br /&gt;
108K	SmiteSpam-REL1_43-483b81b.tar.gz&lt;br /&gt;
140K	UserMerge-REL1_43-27425da.tar.gz&lt;br /&gt;
492K	Widgets-REL1_43-60a09f0.tar.gz&lt;br /&gt;
8351c0267c2cd7866ff04c04261f06cd75af9a7130aac848ca43fd047404e229  ConfirmAccount-REL1_43-9cc1a82.tar.gz&lt;br /&gt;
8351c0267c2cd7866ff04c04261f06cd75af9a7130aac848ca43fd047404e229  DeleteBatch-REL1_43-24a81e4.tar.gz&lt;br /&gt;
8351c0267c2cd7866ff04c04261f06cd75af9a7130aac848ca43fd047404e229  OATHAuth-REL1_43-d8e7578.tar.gz&lt;br /&gt;
997c9edfe7ab78d6e1f1268d48ec19f13d036f584ad54c4281e210940a59f7c9  SmiteSpam-REL1_43-483b81b.tar.gz&lt;br /&gt;
5f28fdf7c0b727d699d42f14073359e13c8db1b2d389d78219845b5912cc0ccc  UserMerge-REL1_43-27425da.tar.gz&lt;br /&gt;
bed64d3c98842f7ec3675e17a24c21fb4720862084857e6834fb7813d14ab865  Widgets-REL1_43-60a09f0.tar.gz&lt;br /&gt;
user@disp7799:/tmp/tmp.YkN2s6MgT6$ &lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# huh, 3TOFU failed for 3/5 of the extensions&lt;br /&gt;
## SmiteSpam, UserMerge, and Widgets matched on all three&lt;br /&gt;
## but ConfirmAccount, DeleteBatch, and OATHAuthOATHAuth diff&#039;d&lt;br /&gt;
# I see that the file size of the three that failed is &amp;quot;4.0K&amp;quot;. that suggests that it didn&#039;t actually download&lt;br /&gt;
# sure enough, they&#039;re 404&#039;d&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
user@disp7799:/tmp/tmp.YkN2s6MgT6$ cat ConfirmAccount-REL1_43-9cc1a82.tar.gz&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;head&amp;gt;&amp;lt;title&amp;gt;404 Not Found&amp;lt;/title&amp;gt;&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;h1&amp;gt;404 Not Found&amp;lt;/h1&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&amp;lt;center&amp;gt;nginx/1.18.0&amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
user@disp7799:/tmp/tmp.YkN2s6MgT6$ &lt;br /&gt;
user@disp7799:/tmp/tmp.YkN2s6MgT6$ cat DeleteBatch-REL1_43-24a81e4.tar.gz&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;head&amp;gt;&amp;lt;title&amp;gt;404 Not Found&amp;lt;/title&amp;gt;&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;h1&amp;gt;404 Not Found&amp;lt;/h1&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&amp;lt;center&amp;gt;nginx/1.18.0&amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
user@disp7799:/tmp/tmp.YkN2s6MgT6$ &lt;br /&gt;
user@disp7799:/tmp/tmp.YkN2s6MgT6$ cat OATHAuth-REL1_43-d8e7578.tar.gz&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;head&amp;gt;&amp;lt;title&amp;gt;404 Not Found&amp;lt;/title&amp;gt;&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;h1&amp;gt;404 Not Found&amp;lt;/h1&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&amp;lt;center&amp;gt;nginx/1.18.0&amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
user@disp7799:/tmp/tmp.YkN2s6MgT6$ &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# if I go to download these plugins again, here&#039;s the URLs I get&lt;br /&gt;
## ConfirmAccount https://www.mediawiki.org/wiki/Extension:ConfirmAccount&lt;br /&gt;
### https://extdist.wmflabs.org/dist/extensions/ConfirmAccount-REL1_43-38c4602.tar.gz&lt;br /&gt;
## DeleteBatch https://www.mediawiki.org/wiki/Extension:ConfirmAccount&lt;br /&gt;
### https://extdist.wmflabs.org/dist/extensions/DeleteBatch-REL1_43-b3b052b.tar.gz&lt;br /&gt;
## OATHAuth https://www.mediawiki.org/wiki/Extension:OATHAuth&lt;br /&gt;
### https://extdist.wmflabs.org/dist/extensions/OATHAuth-REL1_43-2cdbefb.tar.gz&lt;br /&gt;
# here&#039;s our old 3TOFU script, for comparison&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
REMOTE_FILES=&amp;quot;https://extdist.wmflabs.org/dist/extensions/ConfirmAccount-REL1_43-9cc1a82.tar.gz https://extdist.wmflabs.org/dist/extensions/DeleteBatch-REL1_43-24a81e4.tar.gz https://extdist.wmflabs.org/dist/extensions/OATHAuth-REL1_43-d8e7578.tar.gz https://extdist.wmflabs.org/dist/extensions/SmiteSpam-REL1_43-483b81b.tar.gz https://extdist.wmflabs.org/dist/extensions/UserMerge-REL1_43-27425da.tar.gz https://extdist.wmflabs.org/dist/extensions/Widgets-REL1_43-60a09f0.tar.gz&amp;quot;&lt;br /&gt;
&lt;br /&gt;
CURL=&amp;quot;/usr/bin/curl --retry 5 --retry-all-errors&amp;quot;&lt;br /&gt;
PYTHON=&amp;quot;/usr/bin/python3&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# in tails, we must torify&lt;br /&gt;
if [[ &amp;quot;`whoami`&amp;quot; == &amp;quot;amnesia&amp;quot; ]] ; then&lt;br /&gt;
	CURL=&amp;quot;/usr/bin/torify ${CURL}&amp;quot;&lt;br /&gt;
	PYTHON=&amp;quot;/usr/bin/torify ${PYTHON}&amp;quot;&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
tmpDir=`mktemp -d`&lt;br /&gt;
pushd &amp;quot;${tmpDir}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# first get some info about our internet connection&lt;br /&gt;
${CURL} -s https://ifconfig.co/country | head -n1&lt;br /&gt;
${CURL} -s https://check.torproject.org | grep Congratulations | head -n1&lt;br /&gt;
&lt;br /&gt;
# and today&#039;s date&lt;br /&gt;
date -u +&amp;quot;%Y-%m-%d&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# get the file&lt;br /&gt;
for file in ${REMOTE_FILES}; do&lt;br /&gt;
	${CURL} --progress-bar -O ${file}&lt;br /&gt;
done&lt;br /&gt;
&lt;br /&gt;
# checksum&lt;br /&gt;
date -u +&amp;quot;%Y-%m-%d&amp;quot;&lt;br /&gt;
du -sh *&lt;br /&gt;
sha256sum *&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# so, yeah, I guess they delete the old releases when the push a new one? that&#039;s pretty annoying&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
https://extdist.wmflabs.org/dist/extensions/ConfirmAccount-REL1_43-9cc1a82.tar.gz&lt;br /&gt;
https://extdist.wmflabs.org/dist/extensions/ConfirmAccount-REL1_43-38c4602.tar.gz&lt;br /&gt;
&lt;br /&gt;
https://extdist.wmflabs.org/dist/extensions/DeleteBatch-REL1_43-24a81e4.tar.gz&lt;br /&gt;
https://extdist.wmflabs.org/dist/extensions/DeleteBatch-REL1_43-b3b052b.tar.gz&lt;br /&gt;
&lt;br /&gt;
https://extdist.wmflabs.org/dist/extensions/OATHAuth-REL1_43-d8e7578.tar.gz&lt;br /&gt;
https://extdist.wmflabs.org/dist/extensions/OATHAuth-REL1_43-2cdbefb.tar.gz&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# anyway, let&#039;s try it again, and hope we get all three before they push another release in the next ~1 week&lt;br /&gt;
# here&#039;s a new 3TOFU script&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
REMOTE_FILES=&amp;quot;https://extdist.wmflabs.org/dist/extensions/ConfirmAccount-REL1_43-38c4602.tar.gz https://extdist.wmflabs.org/dist/extensions/DeleteBatch-REL1_43-b3b052b.tar.gz https://extdist.wmflabs.org/dist/extensions/OATHAuth-REL1_43-2cdbefb.tar.gz&amp;quot;&lt;br /&gt;
&lt;br /&gt;
CURL=&amp;quot;/usr/bin/curl --retry 5 --retry-all-errors&amp;quot;&lt;br /&gt;
PYTHON=&amp;quot;/usr/bin/python3&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# in tails, we must torify&lt;br /&gt;
if [[ &amp;quot;`whoami`&amp;quot; == &amp;quot;amnesia&amp;quot; ]] ; then&lt;br /&gt;
	CURL=&amp;quot;/usr/bin/torify ${CURL}&amp;quot;&lt;br /&gt;
	PYTHON=&amp;quot;/usr/bin/torify ${PYTHON}&amp;quot;&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
tmpDir=`mktemp -d`&lt;br /&gt;
pushd &amp;quot;${tmpDir}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# first get some info about our internet connection&lt;br /&gt;
${CURL} -s https://ifconfig.co/country | head -n1&lt;br /&gt;
${CURL} -s https://check.torproject.org | grep Congratulations | head -n1&lt;br /&gt;
&lt;br /&gt;
# and today&#039;s date&lt;br /&gt;
date -u +&amp;quot;%Y-%m-%d&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# get the file&lt;br /&gt;
for file in ${REMOTE_FILES}; do&lt;br /&gt;
	${CURL} --progress-bar -O ${file}&lt;br /&gt;
done&lt;br /&gt;
&lt;br /&gt;
# checksum&lt;br /&gt;
date -u +&amp;quot;%Y-%m-%d&amp;quot;&lt;br /&gt;
du -sh *&lt;br /&gt;
sha256sum *&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# And TOFU 1/3 (ISP, exit in Ecuador)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Ecuador&lt;br /&gt;
2026-04-01&lt;br /&gt;
######################################################################### 100.0%&lt;br /&gt;
######################################################################### 100.0%&lt;br /&gt;
######################################################################### 100.0%&lt;br /&gt;
2026-04-01&lt;br /&gt;
448K	ConfirmAccount-REL1_43-38c4602.tar.gz&lt;br /&gt;
124K	DeleteBatch-REL1_43-b3b052b.tar.gz&lt;br /&gt;
14M	OATHAuth-REL1_43-2cdbefb.tar.gz&lt;br /&gt;
95b2bc67977c22d069867a7225aa1a9720b7593ed5ab49aa27cc293f01b2e2bb  ConfirmAccount-REL1_43-38c4602.tar.gz&lt;br /&gt;
d1e7c01cf709f2b57137bb3d76f73b4e8fd36ce57c12b750b04fe20ffce9be61  DeleteBatch-REL1_43-b3b052b.tar.gz&lt;br /&gt;
f71115af96a1ed5297d8d56f56683635b7c9e0b8b32151b184feea1fbec3350a  OATHAuth-REL1_43-2cdbefb.tar.gz&lt;br /&gt;
user@disp7799:/tmp/tmp.oWTEqi2mpP$ &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# and all the files are &amp;gt;4K, so that&#039;s promising.&lt;br /&gt;
# TODO: finish 3TOFU, install &amp;amp; configure extensions&lt;br /&gt;
# ...&lt;br /&gt;
# I also edited some wiki articles, namely&lt;br /&gt;
## this Maltfield_Log and Maltfield_Log/2026&lt;br /&gt;
## the Main_Page&lt;br /&gt;
## the Eco-Libre:About page (from the footer)&lt;br /&gt;
## a Documentation page, which describes what the wiki is for and what it&#039;s not for&lt;br /&gt;
# TOOO: write Eco-Libre:Privacy_policy&lt;br /&gt;
&lt;br /&gt;
== 2026-03-31 ==&lt;br /&gt;
Hello World!&lt;br /&gt;
&lt;br /&gt;
# I installed this wiki last week on 2026-03-27&lt;br /&gt;
# since then, I did some hardening and basic setup (skin, logos)&lt;br /&gt;
# today I continued through the process of configuring its built-in plugins&lt;br /&gt;
# I&#039;m still in the process of a 3TOFU on the desired extensions.&lt;br /&gt;
# now I&#039;m finally editing some pages&lt;br /&gt;
# &#039;&#039;&#039;TODO: download, activate, and configure additional extensions&#039;&#039;&#039;&lt;/div&gt;</summary>
		<author><name>Maltfield</name></author>
	</entry>
	<entry>
		<id>https://wiki.eco-libre.org/index.php?title=Maltfield_Log/2026&amp;diff=108</id>
		<title>Maltfield Log/2026</title>
		<link rel="alternate" type="text/html" href="https://wiki.eco-libre.org/index.php?title=Maltfield_Log/2026&amp;diff=108"/>
		<updated>2026-05-05T19:24:22Z</updated>

		<summary type="html">&lt;p&gt;Maltfield: adding logs &amp;#039;till 4/20&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==  ==&lt;br /&gt;
==  ==&lt;br /&gt;
&lt;br /&gt;
==  ==&lt;br /&gt;
&lt;br /&gt;
==  ==&lt;br /&gt;
&lt;br /&gt;
== 2026-04-20 ==&lt;br /&gt;
# I got a link from a friend from a pretty cool sounding similar project https://projectkamp.com/&lt;br /&gt;
## sounds like they have similar ideas as Eco-Libre, except they already bought land already&lt;br /&gt;
## They claim to use CC BY-SA to license all their works, but their videos are not marked as-such on YouTube. And, because YouTube is trash, I can&#039;t view their videos  https://academy.projectkamp.com/start/intro/#open-source--license&lt;br /&gt;
## I wanted to email them to update the license on their YouTube videos (so, at least, they could be archived on archive.org and uploaded to PeerTube, etc), but I couldn&#039;t find their email https://projectkamp.com/faq.html&lt;br /&gt;
## Their footer says they&#039;re part of One Army (along with, eg Precious Plastic), so I emailed One Army asking for the email address of Project Kamp https://www.onearmy.earth/&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Hello,&lt;br /&gt;
&lt;br /&gt;
Can you please tell me the email address of Project Kamp?&lt;br /&gt;
&lt;br /&gt;
I&#039;m looking to get in contact with Project Kamp over email, but I couldn&#039;t find a way to email them from their website:&lt;br /&gt;
&lt;br /&gt;
 * https://projectkamp.com/faq.html&lt;br /&gt;
&lt;br /&gt;
Please send me the email address for Project Kamp.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Thank you,&lt;br /&gt;
&lt;br /&gt;
Michael Altfield&lt;br /&gt;
https://www.michaelaltfield.net&lt;br /&gt;
PGP Fingerprint: 0465 E42F 7120 6785 E972  644C FE1B 8449 4E64 0D41&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## TODO: add Project Kamp to our &#039;common-files&#039; repo&#039;s docs as a &amp;quot;Similar Project&amp;quot;&lt;br /&gt;
# ...&lt;br /&gt;
# Tomorrow we&#039;re publishing our partnership with Raft Foundation, so we can accept tax-deductable donations https://www.eco-libre.org/raft-2026/&lt;br /&gt;
# Some weeks ago I did updates of wordpress, including adding new plugins. One of them was ActivityPub&lt;br /&gt;
# I enabled ActivityPub, but the Settings page gives me a &amp;quot;504 Gateway Time-out&amp;quot; error from nginx https://www.eco-libre.org/wp-admin/options-general.php?page=activitypub&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;head&amp;gt;&amp;lt;title&amp;gt;504 Gateway Time-out&amp;lt;/title&amp;gt;&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;h1&amp;gt;504 Gateway Time-out&amp;lt;/h1&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&amp;lt;center&amp;gt;nginx&amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## here&#039;s the error.log entry for nginx&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
2026/04/20 17:37:36 [error] 1992101#1992101: *2507383 upstream timed out (110: Connection timed out) while reading response header from upstream, client: 64.42.180.66, server: www.eco-libre.org, request: &amp;quot;GET /wp-admin/options-general.php?page=activitypub HTTP/1.1&amp;quot;, upstream: &amp;quot;http://127.0.0.1:6081/wp-admin/options-general.php?page=activitypub&amp;quot;, host: &amp;quot;www.eco-libre.org&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## and here&#039;s the apache logs&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
==&amp;gt; www.eco-libre.org/access.log &amp;lt;==&lt;br /&gt;
64.42.180.66 - - [20/Apr/2026:17:54:54 +0000] &amp;quot;POST /wp-admin/admin-ajax.php HTTP/1.1&amp;quot; 200 792 &amp;quot;https://www.eco-libre.org/wp-admin/plugins.php?plugin_status=all&amp;amp;paged=1&amp;amp;s&amp;quot; &amp;quot;Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.0.0 Safari/537.36&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==&amp;gt; www.eco-libre.org/error.log &amp;lt;==&lt;br /&gt;
[Mon Apr 20 17:55:23.176842 2026] [proxy_fcgi:error] [pid 526343:tid 526374] (70007)The timeout specified has expired: [client 64.42.180.66:0] AH01075: Error dispatching request to : (polling)&lt;br /&gt;
&lt;br /&gt;
==&amp;gt; www.eco-libre.org/access.log &amp;lt;==&lt;br /&gt;
64.42.180.66 - - [20/Apr/2026:17:54:23 +0000] &amp;quot;GET /wp-admin/options-general.php?page=activitypub HTTP/1.1&amp;quot; 504 467 &amp;quot;-&amp;quot; &amp;quot;Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.0.0 Safari/537.36&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## I don&#039;t know what&#039;s wrong, and that&#039;s not enough to debug it. I tested ActivityPub on another site, and the config page had no issues. But I ended-up not finishing its setup because I wanted the actor URL to use the naked domain, and I&#039;m still waiting to hear back on that https://github.com/Automattic/wordpress-activitypub/issues/3164&lt;br /&gt;
# anyway, I wrote a newsletter, scheduled it to go out for tomorrow at 15:00 UTC&lt;br /&gt;
# I also wrote the update for Open Collective&lt;br /&gt;
# I put the &amp;quot;Donate&amp;quot; page in the menu bar&lt;br /&gt;
## on mobile, this made the top navbar spill over into a second row, so I moved &amp;quot;Contact&amp;quot; under &amp;quot;Join Us&amp;quot;&lt;br /&gt;
### to make up for this, I started creating footer areas&lt;br /&gt;
### the theme supports three footers. one on the left, center, and right&lt;br /&gt;
### I put copyright &amp;amp; copyleft info on the right footer&lt;br /&gt;
### I put social media icons in the middle footer&lt;br /&gt;
### I put a &amp;quot;Contact&amp;quot; link on the left footer&lt;br /&gt;
## As I was styling the left footer, I stopped being able to update it suddenly. I kept getting error&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
There was an error. Could not get a valid response from the server.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## closer inspection of the networking tab of the browsers debugger showed an error when doing an OPTIONS request&lt;br /&gt;
## well, that&#039;s probably because (for security) we block all but GET POST and HEAD&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
if ($request_method !~ ^(GET|HEAD|POST)$ ) {&lt;br /&gt;
   # note: 444 is a meta code; it doesn&#039;t return anything, actually&lt;br /&gt;
   #       it just logs, drops, &amp;amp; closes the connection (useful&lt;br /&gt;
   #       against malware)&lt;br /&gt;
   return 444;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## well, fuck, our widgets are bricked&lt;br /&gt;
## I asked about this here https://wordpress.org/support/topic/configure-wordpress-to-never-use-options-requests/&lt;br /&gt;
## as a workaround, I found that I *can* edit these footer widgets from the theme -&amp;gt; customize -&amp;gt; widgets section of the site – which sends POST as expected https://www.eco-libre.org/wp-admin/customize.php?return=%2Fwp-admin%2Fwidgets.php&lt;br /&gt;
# I realized that I can&#039;t post to lemmy anymore, because our sdf instance has been down since 2026-04-07&lt;br /&gt;
# I went ahead and created an accout request on the solar punk instance https://slrpnk.net/&lt;br /&gt;
## if we&#039;re accepted, I&#039;d also like to create a community specific to Eco-Libre &lt;br /&gt;
# I also created one on lemmy.vg&lt;br /&gt;
&lt;br /&gt;
== 2026-04-19 ==&lt;br /&gt;
# I failed to login to the wiki today. I got error&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[REDACTED] 2026-04-19 20:34:48: Fatal exception of type &amp;quot;DomainException&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# exception.log seems to suggest that I set a bad config for the password policy yesterday&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
==&amp;gt; exception.log &amp;lt;==&lt;br /&gt;
2026-04-19 20:36:27 mail wiki_el_db-rHb3: [REDACTED] /index.php?title=Special:UserLogin&amp;amp;returnto=MediaWiki&lt;br /&gt;
%3ARequestaccount-agree   DomainException: Invalid password policy config. No check defined for &#039;PasswordCannotMatchUsername&#039;&lt;br /&gt;
.&lt;br /&gt;
#0 /usr/share/mediawiki/includes/password/UserPasswordPolicy.php(88): MediaWiki\Password\UserPasswordPolicy-&amp;gt;checkPolicies()&lt;br /&gt;
#1 /usr/share/mediawiki/includes/user/User.php(995): MediaWiki\Password\UserPasswordPolicy-&amp;gt;checkUserPassword()&lt;br /&gt;
#2 /usr/share/mediawiki/includes/auth/AbstractPasswordPrimaryAuthenticationProvider.php(114): MediaWiki\User\User-&amp;gt;checkPassw&lt;br /&gt;
ordValidity()&lt;br /&gt;
#3 /usr/share/mediawiki/includes/auth/AbstractTemporaryPasswordPrimaryAuthenticationProvider.php(155): MediaWiki\Auth\Abstrac&lt;br /&gt;
tPasswordPrimaryAuthenticationProvider-&amp;gt;checkPasswordValidity()&lt;br /&gt;
#4 /usr/share/mediawiki/includes/auth/AuthManager.php(625): MediaWiki\Auth\AbstractTemporaryPasswordPrimaryAuthenticationProv&lt;br /&gt;
ider-&amp;gt;beginPrimaryAuthentication()&lt;br /&gt;
#5 /usr/share/mediawiki/includes/auth/AuthManager.php(535): MediaWiki\Auth\AuthManager-&amp;gt;continueAuthentication()&lt;br /&gt;
#6 /usr/share/mediawiki/includes/specialpage/AuthManagerSpecialPage.php(390): MediaWiki\Auth\AuthManager-&amp;gt;beginAuthentication&lt;br /&gt;
()&lt;br /&gt;
#7 /usr/share/mediawiki/includes/specialpage/AuthManagerSpecialPage.php(524): MediaWiki\SpecialPage\AuthManagerSpecialPage-&amp;gt;performAuthenticationStep()&lt;br /&gt;
#8 [internal function]: MediaWiki\SpecialPage\AuthManagerSpecialPage-&amp;gt;handleFormSubmit()&lt;br /&gt;
#9 /usr/share/mediawiki/includes/htmlform/HTMLForm.php(822): call_user_func()&lt;br /&gt;
#10 /usr/share/mediawiki/includes/specialpage/AuthManagerSpecialPage.php(455): MediaWiki\HTMLForm\HTMLForm-&amp;gt;trySubmit()&lt;br /&gt;
#11 /usr/share/mediawiki/includes/specialpage/LoginSignupSpecialPage.php(403): MediaWiki\SpecialPage\AuthManagerSpecialPage-&amp;gt;trySubmit()&lt;br /&gt;
#12 /usr/share/mediawiki/includes/specialpage/SpecialPage.php(728): MediaWiki\SpecialPage\LoginSignupSpecialPage-&amp;gt;execute()&lt;br /&gt;
#13 /usr/share/mediawiki/includes/specialpage/SpecialPageFactory.php(1717): MediaWiki\SpecialPage\SpecialPage-&amp;gt;run()&lt;br /&gt;
#14 /usr/share/mediawiki/includes/actions/ActionEntryPoint.php(505): MediaWiki\SpecialPage\SpecialPageFactory-&amp;gt;executePath()&lt;br /&gt;
#15 /usr/share/mediawiki/includes/actions/ActionEntryPoint.php(147): MediaWiki\Actions\ActionEntryPoint-&amp;gt;performRequest()&lt;br /&gt;
#16 /usr/share/mediawiki/includes/MediaWikiEntryPoint.php(200): MediaWiki\Actions\ActionEntryPoint-&amp;gt;execute()&lt;br /&gt;
#17 /usr/share/mediawiki/index.php(58): MediaWiki\MediaWikiEntryPoint-&amp;gt;run()&lt;br /&gt;
#18 {main}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# here&#039;s what we have&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$wgPasswordPolicy[&#039;policies&#039;][&#039;default&#039;][&#039;PasswordCannotMatchUsername&#039;] = true;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# but the docs suggest there&#039;s an additioanl array needed for &amp;quot;value&amp;quot;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$wgPasswordPolicy[&#039;policies&#039;][&#039;default&#039;][&#039;PasswordCannotMatchUsername&#039;][&#039;value&#039;] = false;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# if I expand &amp;quot;Older Versions&amp;quot; then the &#039;PasswordCannotMatchUsername&#039; disappears from mediawiki &amp;gt;1.37. The docs still say it&#039;s an option, but I didn&#039;t find it in our files https://www.mediawiki.org/wiki/Manual:$wgPasswordPolicy#Default&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@mail:/var/www/html/wiki.eco-libre.org# grep -irl PasswordCannotMatchUsername *&lt;br /&gt;
LocalSettings.20260419.php&lt;br /&gt;
LocalSettings.php&lt;br /&gt;
root@mail:/var/www/html/wiki.eco-libre.org# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# it does appear that &#039;PasswordCannotBeSubstringInUsername&#039; is available. let&#039;s use that instead.&lt;br /&gt;
# ugh, next attempt gives another failure&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
==&amp;gt; exception.log &amp;lt;==&lt;br /&gt;
2026-04-19 21:04:26 mail wiki_el_db-rHb3: [REDACTED] /index.php?title=Special:UserLogin&amp;amp;returnto=MediaWiki&lt;br /&gt;
%3ARequestaccount-agree   DomainException: Invalid password policy config. No check defined for &#039;PasswordCannotBePopular&#039;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# I removed this; I guess we&#039;re supposed to use &#039;PasswordNotInCommonList&#039;, which we already use.&lt;br /&gt;
# ok, that worked. I&#039;m able to login-in. here&#039;s the final&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# PASSWORD POLICIES&lt;br /&gt;
&lt;br /&gt;
$wgPasswordPolicy[&#039;policies&#039;][&#039;default&#039;][&#039;MinimalPasswordLength&#039;] = 10;&lt;br /&gt;
$wgPasswordPolicy[&#039;policies&#039;][&#039;default&#039;][&#039;PasswordCannotBeSubstringInUsername&#039;][&#039;value&#039;] = true;&lt;br /&gt;
$wgPasswordPolicy[&#039;policies&#039;][&#039;default&#039;][&#039;PasswordNotInCommonList&#039;] = true;&lt;br /&gt;
&lt;br /&gt;
$wgPasswordPolicy[&#039;policies&#039;][&#039;sysop&#039;][&#039;MinimalPasswordLength&#039;] = 20;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# now that I can login, I was going to change the text that appears on the Request Account page https://wiki.eco-libre.org/wiki/MediaWiki:Requestaccount-text&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Complete and submit the following form to request a user account.&lt;br /&gt;
&lt;br /&gt;
Make sure that you first read the Terms of Service before requesting an account.&lt;br /&gt;
&lt;br /&gt;
Once the account is approved, you will be emailed a notification message and the account will be usable at login. &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## my intention was to add a notebox to highlight that the user would need to first complete the Eco-Libre Volunteer Test (https://eco-libre.github.io/volunteer-test/) before their new wiki account would be approve, and tell them to contact us (https://eco-libre.org/contact/)&lt;br /&gt;
## unforutnately, the notebox template doesn&#039;t exist!&lt;br /&gt;
## I found the docs on templates, and it says there&#039;s no way to import a bunch of standard templates https://www.mediawiki.org/wiki/Help:Templates&lt;br /&gt;
## this third-party guide says we can make the export/import (eg from Wikipedia) of a mass of templates easier with the Scribunto extension https://www.ryadel.com/en/how-to-add-wikipedia-mbox-templates-to-your-own-mediawiki/&lt;br /&gt;
## this extension ships with core mediawiki, it seems&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@mail:/var/www/html/wiki.eco-libre.org# ls htdocs/extensions/&lt;br /&gt;
AbuseFilter     ConfirmEdit      InputBox          Nuke             ReplaceText            TemplateData    Widgets&lt;br /&gt;
CategoryTree    DeleteBatch      Interwiki         OATHAuth         Scribunto              TextExtracts    WikiEditor&lt;br /&gt;
Cite            DiscussionTools  Linter            PageImages       SecureLinkFixer        Thanks&lt;br /&gt;
CiteThisPage    Echo             LoginNotify       ParserFunctions  SmiteSpam              TitleBlacklist&lt;br /&gt;
CodeEditor      Gadgets          Math              PdfHandler       SpamBlacklist          UserMerge&lt;br /&gt;
ConfirmAccount  ImageMap         MultimediaViewer  Poem             SyntaxHighlight_GeSHi  VisualEditor&lt;br /&gt;
root@mail:/var/www/html/wiki.eco-libre.org# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# TODO: finish installing Scribunto, then do a mass-export &amp;amp; mass-import of common templates from Wikipedia. Then finish configuring [[&#039;&#039;MediaWiki:Requestaccount-text&#039;&#039;]]&lt;br /&gt;
# I thought that, maybe, a lower hanging fruit would be to implement the Privacy Policy, but I realized that page actually requires the user to accept the Terms of Service, not the Privacy Policy&lt;br /&gt;
## OSE appears to have never set a ToS (And I created the Privacy Policy, largely based on the creative commons&#039; privacy policy https://wiki.opensourceecology.org/wiki/Terms_of_Service&lt;br /&gt;
## The wikipedia Terms of Service is actually named Terms of Use, and it&#039;s pretty specific to Wikipedia (including their mission, etc). In it, it references the Privacy Policy https://foundation.wikimedia.org/wiki/Policy:Terms_of_Use/en&lt;br /&gt;
## Appropedia doesn&#039;t appear to have a page dedicated to ToS (or ToU) or Privacy Policy. Instead, it&#039;s just on one page named Policies https://www.appropedia.org/Appropedia:Policies&lt;br /&gt;
&lt;br /&gt;
== 2026-04-18 ==&lt;br /&gt;
# continuing where I left off yes terday to fix mediawiki after the unattended-upgrade deleted our LocalSettings.php file&lt;br /&gt;
# I need to push-out a new php.ini config (with ansible) to include /etc/mediawiki/ in the open_basedir setting&lt;br /&gt;
# ansible is broken suddenly; it says it can&#039;t find python&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
fatal: [michaelaltfield.net]: UNREACHABLE! =&amp;gt; {&amp;quot;changed&amp;quot;: false, &amp;quot;msg&amp;quot;: &amp;quot;EOF on stream; last 100 lines received:\nbash: line 1: /usr/bin/python: No such file or directory&amp;quot;, &amp;quot;unreachable&amp;quot;: true}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# well, idk, did debian remove a symlink from python to python3?&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@mail:/var/lib/mediawiki# ls -lah /usr/bin/python&lt;br /&gt;
ls: cannot access &#039;/usr/bin/python&#039;: No such file or directory&lt;br /&gt;
root@mail:/var/lib/mediawiki# ls -lah /usr/bin/python3&lt;br /&gt;
lrwxrwxrwx 1 root root 10 Jun 30  2025 /usr/bin/python3 -&amp;gt; python3.13&lt;br /&gt;
root@mail:/var/lib/mediawiki# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# looks like there&#039;s a var I can set for this named ansible_python_interpreter, but it&#039;s only available in python &amp;gt;= 2.2.0 https://stackoverflow.com/a/41431540&lt;br /&gt;
# and we only have ansible v2.14.18, installed in apt on debian 12 on my client machine&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ dpkg -l | grep -i ansible&lt;br /&gt;
ii  ansible                                       7.7.0+dfsg-3+deb12u1                     all          Configuration management, deployment, and task execution system&lt;br /&gt;
ii  ansible-core                                  2.14.18-0+deb12u2                        all          Configuration management, deployment, and task execution system&lt;br /&gt;
ii  ansible-mitogen                               0.3.3-9+deb12u1                          all          Fast connection strategy for Ansible&lt;br /&gt;
$&lt;br /&gt;
&lt;br /&gt;
$ cat /etc/issue&lt;br /&gt;
Debian GNU/Linux 12 \n \l&lt;br /&gt;
&lt;br /&gt;
$ &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# looks like debian 13 only has ansible core v2.18, so that won&#039;t help https://packages.debian.org/trixie/ansible&lt;br /&gt;
# fuck it, I just created a symlink. maybe it&#039;ll get deleted a and I&#039;ll have to recreate it again. maybe not&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@mail:/var/lib/mediawiki# ln -s /usr/bin/python3 /usr/bin/python&lt;br /&gt;
root@mail:/var/lib/mediawiki# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# ok, that fixed ansible, and I was able to push-out the udpdated php.ini file&lt;br /&gt;
# restarted php&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@mail:/var/lib/mediawiki# systemctl restart php8.4-fpm&lt;br /&gt;
root@mail:/var/lib/mediawiki# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# ...aaaand the wiki is fixed&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[user@disp3459 ~]$ curl -IL https://wiki.eco-libre.org/&lt;br /&gt;
HTTP/1.1 301 Moved Permanently&lt;br /&gt;
Server: nginx&lt;br /&gt;
Date: Sat, 18 Apr 2026 17:38:39 GMT&lt;br /&gt;
Content-Type: text/html; charset=UTF-8&lt;br /&gt;
Content-Length: 0&lt;br /&gt;
Connection: keep-alive&lt;br /&gt;
X-Content-Type-Options: nosniff&lt;br /&gt;
Vary: Accept-Encoding,Cookie&lt;br /&gt;
Expires: Thu, 01 Jan 1970 00:00:00 GMT&lt;br /&gt;
Cache-Control: private, must-revalidate, max-age=0&lt;br /&gt;
X-Request-Id: REDACTED&lt;br /&gt;
X-Frame-Options: SAMEORIGIN&lt;br /&gt;
Last-Modified: Sat, 18 Apr 2026 17:38:06 GMT&lt;br /&gt;
Location: https://wiki.eco-libre.org/wiki/Main_Page&lt;br /&gt;
X-Content-Type-Options: nosniff&lt;br /&gt;
X-XSS-Protection: 1; mode=block&lt;br /&gt;
X-Frame-Options: deny&lt;br /&gt;
Referrer-Policy: strict-origin&lt;br /&gt;
X-Varnish: 6288299 13705059&lt;br /&gt;
Age: 33&lt;br /&gt;
Via: 1.1 mail (Varnish/7.7)&lt;br /&gt;
Strict-Transport-Security: max-age=86400;includeSubDomains&lt;br /&gt;
&lt;br /&gt;
HTTP/1.1 200 OK&lt;br /&gt;
Server: nginx&lt;br /&gt;
Date: Sat, 18 Apr 2026 17:38:40 GMT&lt;br /&gt;
Content-Type: text/html; charset=UTF-8&lt;br /&gt;
Content-Length: 15926&lt;br /&gt;
Connection: keep-alive&lt;br /&gt;
X-Content-Type-Options: nosniff&lt;br /&gt;
Content-language: en&lt;br /&gt;
Vary: Accept-Encoding,Cookie&lt;br /&gt;
Expires: Thu, 01 Jan 1970 00:00:00 GMT&lt;br /&gt;
Cache-Control: private, must-revalidate, max-age=0&lt;br /&gt;
X-Request-Id: REDACTED&lt;br /&gt;
X-Frame-Options: SAMEORIGIN&lt;br /&gt;
Last-Modified: Sat, 18 Apr 2026 01:16:13 GMT&lt;br /&gt;
X-Mod-Pagespeed: Powered By mod_pagespeed&lt;br /&gt;
X-Content-Type-Options: nosniff&lt;br /&gt;
X-XSS-Protection: 1; mode=block&lt;br /&gt;
X-Frame-Options: deny&lt;br /&gt;
Referrer-Policy: strict-origin&lt;br /&gt;
X-Varnish: 18702490 13705062&lt;br /&gt;
Age: 31&lt;br /&gt;
Via: 1.1 mail (Varnish/7.7)&lt;br /&gt;
Accept-Ranges: bytes&lt;br /&gt;
Strict-Transport-Security: max-age=86400;includeSubDomains&lt;br /&gt;
&lt;br /&gt;
[user@disp3459 ~]$ &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# ...&lt;br /&gt;
# alright, now let&#039;s try to install &amp;amp; configure all the 3TOFU&#039;d extensions&lt;br /&gt;
# we have 6 new extensions to install&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@mail:/var/tmp/mediawiki/extensions.2026-03-29# ls&lt;br /&gt;
ConfirmAccount-REL1_43-38c4602.tar.gz  extensions.txt  OATHAuth-REL1_43-015a49e.tar.gz   UserMerge-REL1_43-27425da.tar.gz&lt;br /&gt;
DeleteBatch-REL1_43-b3b052b.tar.gz     info.txt        SmiteSpam-REL1_43-483b81b.tar.gz  Widgets-REL1_43-60a09f0.tar.gz&lt;br /&gt;
root@mail:/var/tmp/mediawiki/extensions.2026-03-29# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# I extracted them&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@mail:/var/tmp/mediawiki/extensions.2026-03-29# for file in $(ls *.tar.gz); do tar -xvf $file; done.&lt;br /&gt;
...&lt;br /&gt;
Widgets/vendor/smarty/smarty/CHANGELOG.md&lt;br /&gt;
Widgets/COPYING&lt;br /&gt;
root@mail:/var/tmp/mediawiki/extensions.2026-03-29#&lt;br /&gt;
&lt;br /&gt;
root@mail:/var/tmp/mediawiki/extensions.2026-03-29# ls&lt;br /&gt;
ConfirmAccount                         info.txt                          UserMerge&lt;br /&gt;
ConfirmAccount-REL1_43-38c4602.tar.gz  OATHAuth                          UserMerge-REL1_43-27425da.tar.gz&lt;br /&gt;
DeleteBatch                            OATHAuth-REL1_43-015a49e.tar.gz   Widgets&lt;br /&gt;
DeleteBatch-REL1_43-b3b052b.tar.gz     SmiteSpam                         Widgets-REL1_43-60a09f0.tar.gz&lt;br /&gt;
extensions.txt                         SmiteSpam-REL1_43-483b81b.tar.gz&lt;br /&gt;
root@mail:/var/tmp/mediawiki/extensions.2026-03-29# &lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# let&#039;s start with OATHAuth, which is probably the most important (for security)&lt;br /&gt;
# oh wait, we already have OATHAuth??&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@mail:/var/tmp/mediawiki/extensions.2026-03-29# ls /var/www/html/wiki.eco-libre.org/htdocs/extensions/&lt;br /&gt;
AbuseFilter   ConfirmEdit      InputBox     MultimediaViewer  PdfHandler       SpamBlacklist          TitleBlacklist&lt;br /&gt;
CategoryTree  DiscussionTools  Interwiki    Nuke              Poem             SyntaxHighlight_GeSHi  VisualEditor&lt;br /&gt;
Cite          Echo             Linter       OATHAuth          ReplaceText      TemplateData           WikiEditor&lt;br /&gt;
CiteThisPage  Gadgets          LoginNotify  PageImages        Scribunto        TextExtracts&lt;br /&gt;
CodeEditor    ImageMap         Math         ParserFunctions   SecureLinkFixer  Thanks&lt;br /&gt;
root@mail:/var/tmp/mediawiki/extensions.2026-03-29# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# ugh, yeah, this syas it has been inclued in MediaWiki core since v1.31 https://www.mediawiki.org/wiki/Extension:OATHAuth&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
This extension comes with MediaWiki 1.31 and later, so you do not need to download it. The remaining configuration instructions must still be followed.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# well, maybe that&#039;s why it got updated so much. anyway, that&#039;s better; we get it directly from apt&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@mail:/var/tmp/mediawiki/extensions.2026-03-29# dpkg -l | grep -i mediawiki&lt;br /&gt;
ii  mediawiki                         1:1.43.8+dfsg-1~deb13u1                 all          website engine for collaborative work&lt;br /&gt;
ii  mediawiki-classes                 1:1.43.8+dfsg-1~deb13u1                 all          website engine for collaborative work - standalone classes&lt;br /&gt;
root@mail:/var/tmp/mediawiki/extensions.2026-03-29# &lt;br /&gt;
&lt;br /&gt;
root@mail:/var/tmp/mediawiki/extensions.2026-03-29# dpkg-query -L mediawiki | grep -i oathauth | head&lt;br /&gt;
/usr/share/mediawiki/extensions-core/OATHAuth&lt;br /&gt;
/usr/share/mediawiki/extensions-core/OATHAuth/COPYING&lt;br /&gt;
/usr/share/mediawiki/extensions-core/OATHAuth/OATHAuth.alias.php&lt;br /&gt;
/usr/share/mediawiki/extensions-core/OATHAuth/ServiceWiring.php&lt;br /&gt;
/usr/share/mediawiki/extensions-core/OATHAuth/composer.json&lt;br /&gt;
/usr/share/mediawiki/extensions-core/OATHAuth/extension.json&lt;br /&gt;
/usr/share/mediawiki/extensions-core/OATHAuth/i18n&lt;br /&gt;
/usr/share/mediawiki/extensions-core/OATHAuth/i18n/ang.json&lt;br /&gt;
/usr/share/mediawiki/extensions-core/OATHAuth/i18n/api&lt;br /&gt;
/usr/share/mediawiki/extensions-core/OATHAuth/i18n/api/ar.json&lt;br /&gt;
root@mail:/var/tmp/mediawiki/extensions.2026-03-29# &lt;br /&gt;
&lt;br /&gt;
root@mail:/var/tmp/mediawiki/extensions.2026-03-29# dpkg-query -L mediawiki | grep -i oathauth | tail&lt;br /&gt;
/usr/share/mediawiki/extensions-core/OATHAuth/src/OATHAuth.php&lt;br /&gt;
/usr/share/mediawiki/extensions-core/OATHAuth/src/OATHAuthModuleRegistry.php&lt;br /&gt;
/usr/share/mediawiki/extensions-core/OATHAuth/src/OATHAuthServices.php&lt;br /&gt;
/usr/share/mediawiki/extensions-core/OATHAuth/src/OATHUser.php&lt;br /&gt;
/usr/share/mediawiki/extensions-core/OATHAuth/src/OATHUserRepository.php&lt;br /&gt;
/usr/share/mediawiki/extensions-core/OATHAuth/src/Special&lt;br /&gt;
/usr/share/mediawiki/extensions-core/OATHAuth/src/Special/DisableOATHForUser.php&lt;br /&gt;
/usr/share/mediawiki/extensions-core/OATHAuth/src/Special/OATHManage.php&lt;br /&gt;
/usr/share/mediawiki/extensions-core/OATHAuth/src/Special/VerifyOATHForUser.php&lt;br /&gt;
/var/lib/mediawiki/extensions/OATHAuth&lt;br /&gt;
root@mail:/var/tmp/mediawiki/extensions.2026-03-29# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# I wonder if there&#039;s any others we get? looks like it&#039;s only this one&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@mail:/var/tmp/mediawiki/extensions.2026-03-29# ls /usr/share/mediawiki/extensions-core | grep -iE &#039;ConfirmAccount|SmiteSpam|DeleteBatch|UserMerge|Widgets|OATHAuth&#039;&lt;br /&gt;
OATHAuth&lt;br /&gt;
root@mail:/var/tmp/mediawiki/extensions.2026-03-29# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# just another quick check – none of these are in apt either&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@mail:/var/tmp/mediawiki/extensions.2026-03-29# apt-cache search mediawiki | grep -i extension&lt;br /&gt;
libreoffice-wiki-publisher - LibreOffice extension for working with MediaWiki articles&lt;br /&gt;
mediawiki-extension-codemirror - Syntax highlighting in MediaWiki&#039;s wikitext editor&lt;br /&gt;
mediawiki-extension-youtube - Embed YouTube and other videos into MediaWiki pages&lt;br /&gt;
php-luasandbox - PHP extension that provides a sandboxed Lua environment&lt;br /&gt;
php-wmerrors - PHP extension that enhances and customizes handling of PHP errors&lt;br /&gt;
root@mail:/var/tmp/mediawiki/extensions.2026-03-29# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# anyway, back to OATHAuth&lt;br /&gt;
## it says to enable caching&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
It is strongly recommended to setup caching when using OATHAuth.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# I confirmed that we already have cachign setup with APC&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@mail:/var/www/html/wiki.eco-libre.org# grep -ir cache LocalSettings.php &lt;br /&gt;
$wgMainCacheType = CACHE_ACCEL;&lt;br /&gt;
$wgMemCachedServers = [];&lt;br /&gt;
## Set $wgCacheDirectory to a writable directory on the web server&lt;br /&gt;
#$wgCacheDirectory = &amp;quot;$IP/cache&amp;quot;;&lt;br /&gt;
$wgCacheDirectory = &amp;quot;/var/www/html/wiki.eco-libre.org/cache&amp;quot;;&lt;br /&gt;
root@mail:/var/www/html/wiki.eco-libre.org# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
### CACHE_ACCEL means APC, which is the recommended option for single-server wikis, per the official mediawiki docs on performance tuning https://www.mediawiki.org/wiki/Manual:Performance_tuning#Single_web_server&lt;br /&gt;
### it also says to ue varnish. check&lt;br /&gt;
### it also says to use php-fpm w/ event MPM (instead of mod_php with prefork MPM), which we changed-to last month. check.&lt;br /&gt;
## our notes from OSE had the following options https://wiki.opensourceecology.org/wiki/CHG-2025-XX-XX_migrate_wiki_to_hetzner3&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
wfLoadExtension( &#039;OATHAuth&#039; );&lt;br /&gt;
&lt;br /&gt;
# Relaxed mode with +/- 4 minutes time drift tolerance. This is important or users will complain and/or disable 2FA entirely&lt;br /&gt;
# The security consequences are small. The usability benefits are huge.&lt;br /&gt;
$wgOATHAuthWindowRadius = 8;&lt;br /&gt;
&lt;br /&gt;
# make admins require 2FA&lt;br /&gt;
$wgOATHRequiredForGroups = [&#039;sysop&#039;, &#039;interface-admin&#039;, &#039;bureaucrat&#039;, &#039;suppress&#039;, &#039;widgeteditor&#039; ];&lt;br /&gt;
&lt;br /&gt;
# make &#039;powerful&#039; rights require 2FA&lt;br /&gt;
$wgOATHExclusiveRights =  [ &#039;apihighlimits&#039;, &#039;applychangetags&#039;, &#039;autoconfirmed&#039;, &#039;autopatrol&#039;, &#039;bigdelete&#039;, &#039;block&#039;, &#039;blockemail&#039;, &#039;bot&#039;, &#039;changetags&#039;, &#039;createaccount&#039;, &#039;createtalk&#039;, &#039;delete&#039;, &#039;deletechangetags&#039;, &#039;deletedhistory&#039;, &#039;deletedtext&#039;, &#039;deletelogentry&#039;, &#039;deleterevision&#039;, &#039;editcontentmodel&#039;, &#039;editinterface&#039;, &#039;editprotected&#039;, &#039;editsemiprotected&#039;, &#039;editsitecss&#039;, &#039;editsitejs&#039;, &#039;editsitejson&#039;, &#039;editusercss&#039;, &#039;edituserjs&#039;, &#039;edituserjson&#039;, &#039;hideuser&#039;, &#039;import&#039;, &#039;importupload&#039;, &#039;ipblock-exempt&#039;, &#039;managechangetags&#039;, &#039;markbotedits&#039;, &#039;mergehistory&#039;, &#039;move-categorypages&#039;, &#039;move-rootuserpages&#039;, &#039;move-subpages&#039;, &#039;nominornewtalk&#039;, &#039;noratelimit&#039;, &#039;patrol&#039;, &#039;protect&#039;, &#039;renameuser&#039;, &#039;reupload-shared&#039;, &#039;sendemail&#039;, &#039;suppressionlog&#039;, &#039;suppressredirect&#039;, &#039;suppressrevision&#039;, &#039;unblockself&#039;, &#039;unwatchedpages&#039;, &#039;userrights&#039;, ];&lt;br /&gt;
&lt;br /&gt;
# full list for reference (taken from htdocs/includes/MainConfigSchema.php) https://www.mediawiki.org/wiki/Extension:OATHAuth#Configuration&lt;br /&gt;
#$wgOATHExclusiveRights =  [ &#039;apihighlimits&#039;, &#039;applychangetags&#039;, &#039;autoconfirmed&#039;, &#039;autopatrol&#039;, &#039;bigdelete&#039;, &#039;block&#039;, &#039;blockemail&#039;, &#039;bot&#039;, &#039;browsearchive&#039;, &#039;changetags&#039;, &#039;createaccount&#039;, &#039;createpage&#039;, &#039;createtalk&#039;, &#039;delete&#039;, &#039;deletechangetags&#039;, &#039;deletedhistory&#039;, &#039;deletedtext&#039;, &#039;deletelogentry&#039;, &#039;deleterevision&#039;, &#039;edit&#039;, &#039;editcontentmodel&#039;, &#039;editinterface&#039;, &#039;editmyoptions&#039;, &#039;editmyprivateinfo&#039;, &#039;editmyusercss&#039;, &#039;editmyuserjs&#039;, &#039;editmyuserjson&#039;, &#039;editmyuserjsredirect&#039;, &#039;editmywatchlist&#039;, &#039;editprotected&#039;, &#039;editsemiprotected&#039;, &#039;editsitecss&#039;, &#039;editsitejs&#039;, &#039;editsitejson&#039;, &#039;editusercss&#039;, &#039;edituserjs&#039;, &#039;edituserjson&#039;, &#039;hideuser&#039;, &#039;import&#039;, &#039;importupload&#039;, &#039;ipblock-exempt&#039;, &#039;managechangetags&#039;, &#039;markbotedits&#039;, &#039;mergehistory&#039;, &#039;minoredit&#039;, &#039;move&#039;, &#039;move-categorypages&#039;, &#039;movefile&#039;, &#039;move-rootuserpages&#039;, &#039;move-subpages&#039;, &#039;nominornewtalk&#039;, &#039;noratelimit&#039;, &#039;patrol&#039;, &#039;protect&#039;, &#039;read&#039;, &#039;renameuser&#039;, &#039;reupload&#039;, &#039;reupload-shared&#039;, &#039;rollback&#039;, &#039;sendemail&#039;, &#039;suppressionlog&#039;, &#039;suppressredirect&#039;, &#039;suppressrevision&#039;, &#039;unblockself&#039;, &#039;undelete&#039;, &#039;unwatchedpages&#039;, &#039;upload&#039;, &#039;userrights&#039;, &#039;viewmyprivateinfo&#039;, &#039;viewmywatchlist&#039;, &#039;viewsuppressed&#039; ];&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
### I strongly agree with the relaxed window of codes&lt;br /&gt;
### I guess that list of requirements is good&lt;br /&gt;
### the other two are no longer listed on the wiki, but I guess they&#039;re good ?&lt;br /&gt;
## the docs show an additional option = $wgOATHSecretKey, used for encrypting the secret keys in the db. it suggests this command to generate it https://www.mediawiki.org/wiki/Extension:OATHAuth&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
hexdump -vn32 -e&#039;8/8 &amp;quot;%08X&amp;quot; &amp;quot;\n&amp;quot;&#039; /dev/urandom&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
### says it&#039;s only available since 1.45. I&#039;m not sure if that&#039;s the mediawiki version or the extension version.&lt;br /&gt;
### oh, I guess it&#039;s mediawiki, since they ship together. We&#039;re running 1.43.8, so I guess we can&#039;t use it yet https://wiki.eco-libre.org/wiki/Special:Version&lt;br /&gt;
### well, I guess let&#039;s define it. then it&#039;ll automatically start to use it when we upgrade to the next LTS. I think.&lt;br /&gt;
## ok, here&#039;s what I added&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@mail:/var/www/html/wiki.eco-libre.org# diff LocalSettings.20260418.php LocalSettings.php &lt;br /&gt;
220a221,240&lt;br /&gt;
&amp;gt; &lt;br /&gt;
&amp;gt; # configure OATHAuth for MFA (2FA). See also:&lt;br /&gt;
&amp;gt; # * https://www.mediawiki.org/wiki/Extension:OATHAuth&lt;br /&gt;
&amp;gt; # * https://wiki.eco-libre.org/wiki/Maltfield_Log/2026&lt;br /&gt;
&amp;gt; wfLoadExtension( &#039;OATHAuth&#039; );&lt;br /&gt;
&amp;gt; &lt;br /&gt;
&amp;gt; # Relaxed mode with +/- 4 minutes time drift tolerance. This is important or users will complain and/or disable 2FA entirely&lt;br /&gt;
&amp;gt; # The security consequences are small. The usability benefits are huge.&lt;br /&gt;
&amp;gt; $wgOATHAuthWindowRadius = 8;&lt;br /&gt;
&amp;gt; &lt;br /&gt;
&amp;gt; # make admins require 2FA&lt;br /&gt;
&amp;gt; $wgOATHRequiredForGroups = [&#039;sysop&#039;, &#039;interface-admin&#039;, &#039;bureaucrat&#039;, &#039;suppress&#039;, &#039;widgeteditor&#039; ];&lt;br /&gt;
&amp;gt; &lt;br /&gt;
&amp;gt; # make &#039;powerful&#039; rights require 2FA&lt;br /&gt;
&amp;gt; $wgOATHExclusiveRights =  [ &#039;apihighlimits&#039;, &#039;applychangetags&#039;, &#039;autoconfirmed&#039;, &#039;autopatrol&#039;, &#039;bigdelete&#039;, &#039;block&#039;, &#039;blockemail&#039;, &#039;bot&#039;, &#039;changetags&#039;, &#039;createaccount&#039;, &#039;createtalk&#039;, &#039;delete&#039;, &#039;deletechangetags&#039;, &#039;deletedhistory&#039;, &#039;deletedtext&#039;, &#039;deletelogentry&#039;, &#039;deleterevision&#039;, &#039;editcontentmodel&#039;, &#039;editinterface&#039;, &#039;editprotected&#039;, &#039;editsemiprotected&#039;, &#039;editsitecss&#039;, &#039;editsitejs&#039;, &#039;editsitejson&#039;, &#039;editusercss&#039;, &#039;edituserjs&#039;, &#039;edituserjson&#039;, &#039;hideuser&#039;, &#039;import&#039;, &#039;importupload&#039;, &#039;ipblock-exempt&#039;, &#039;managechangetags&#039;, &#039;markbotedits&#039;, &#039;mergehistory&#039;, &#039;move-categorypages&#039;, &#039;move-rootuserpages&#039;, &#039;move-subpages&#039;, &#039;nominornewtalk&#039;, &#039;noratelimit&#039;, &#039;patrol&#039;, &#039;protect&#039;, &#039;renameuser&#039;, &#039;reupload-shared&#039;, &#039;sendemail&#039;, &#039;suppressionlog&#039;, &#039;suppressredirect&#039;, &#039;suppressrevision&#039;, &#039;unblockself&#039;, &#039;unwatchedpages&#039;, &#039;userrights&#039;, ];&lt;br /&gt;
&amp;gt; &lt;br /&gt;
&amp;gt; # full list for reference (taken from htdocs/includes/MainConfigSchema.php) https://www.mediawiki.org/wiki/Extension:OATHAuth#Configuration&lt;br /&gt;
&amp;gt; #$wgOATHExclusiveRights =  [ &#039;apihighlimits&#039;, &#039;applychangetags&#039;, &#039;autoconfirmed&#039;, &#039;autopatrol&#039;, &#039;bigdelete&#039;, &#039;block&#039;, &#039;blockemail&#039;, &#039;bot&#039;, &#039;browsearchive&#039;, &#039;changetags&#039;, &#039;createaccount&#039;, &#039;createpage&#039;, &#039;createtalk&#039;, &#039;delete&#039;, &#039;deletechangetags&#039;, &#039;deletedhistory&#039;, &#039;deletedtext&#039;, &#039;deletelogentry&#039;, &#039;deleterevision&#039;, &#039;edit&#039;, &#039;editcontentmodel&#039;, &#039;editinterface&#039;, &#039;editmyoptions&#039;, &#039;editmyprivateinfo&#039;, &#039;editmyusercss&#039;, &#039;editmyuserjs&#039;, &#039;editmyuserjson&#039;, &#039;editmyuserjsredirect&#039;, &#039;editmywatchlist&#039;, &#039;editprotected&#039;, &#039;editsemiprotected&#039;, &#039;editsitecss&#039;, &#039;editsitejs&#039;, &#039;editsitejson&#039;, &#039;editusercss&#039;, &#039;edituserjs&#039;, &#039;edituserjson&#039;, &#039;hideuser&#039;, &#039;import&#039;, &#039;importupload&#039;, &#039;ipblock-exempt&#039;, &#039;managechangetags&#039;, &#039;markbotedits&#039;, &#039;mergehistory&#039;, &#039;minoredit&#039;, &#039;move&#039;, &#039;move-categorypages&#039;, &#039;movefile&#039;, &#039;move-rootuserpages&#039;, &#039;move-subpages&#039;, &#039;nominornewtalk&#039;, &#039;noratelimit&#039;, &#039;patrol&#039;, &#039;protect&#039;, &#039;read&#039;, &#039;renameuser&#039;, &#039;reupload&#039;, &#039;reupload-shared&#039;, &#039;rollback&#039;, &#039;sendemail&#039;, &#039;suppressionlog&#039;, &#039;suppressredirect&#039;, &#039;suppressrevision&#039;, &#039;unblockself&#039;, &#039;undelete&#039;, &#039;unwatchedpages&#039;, &#039;upload&#039;, &#039;userrights&#039;, &#039;viewmyprivateinfo&#039;, &#039;viewmywatchlist&#039;, &#039;viewsuppressed&#039; ];&lt;br /&gt;
&amp;gt; &lt;br /&gt;
&amp;gt; $wgOATHSecretKey=&#039;REDACTED&#039;;&lt;br /&gt;
root@mail:/var/www/html/wiki.eco-libre.org# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## ok, now let&#039;s update the db&lt;br /&gt;
### oh, this failed. we need to use the special privliged db user, since we hardened the normal db user&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@mail:/var/www/html/wiki.eco-libre.org# sudo -u www-data php /usr/share/mediawiki/maintenance/run.php update&lt;br /&gt;
MediaWiki 1.43.8 Updater&lt;br /&gt;
&lt;br /&gt;
Your composer.lock file is up to date with current dependencies!&lt;br /&gt;
Going to run database updates for wiki_el_db-rHb3&lt;br /&gt;
Depending on the size of your database this may take a while!&lt;br /&gt;
Abort with control-c in the next five seconds (skip this countdown with --quick) ...0&lt;br /&gt;
Updating category collations...&lt;br /&gt;
Selecting next 100 pages from cl_from = 0... processing... 0 done.&lt;br /&gt;
0 rows processed&lt;br /&gt;
...done.&lt;br /&gt;
Modifying rd_title field of table redirect...Wikimedia\Rdbms\DBQueryError from line 1198 of /usr/share/mediawiki/includes/libs/rdbms/database/Database.php: Error 1142: ALTER command denied to user &#039;wiki_el_user&#039;@&#039;localhost&#039; for table `wiki_el_db`.`rHb3redirect`&lt;br /&gt;
Function: Wikimedia\Rdbms\Database::sourceFile( /usr/share/mediawiki/maintenance/archives/patch-redirect-rd_title-varbinary.sql )&lt;br /&gt;
Query: ALTER TABLE `rHb3redirect` MODIFY rd_title VARBINARY(255) NOT NULL default &#039;&#039;,&lt;br /&gt;
 MODIFY rd_fragment VARBINARY(255) default NULL&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#0 /usr/share/mediawiki/includes/libs/rdbms/database/Database.php(1182): Wikimedia\Rdbms\Database-&amp;gt;getQueryException()&lt;br /&gt;
#1 /usr/share/mediawiki/includes/libs/rdbms/database/Database.php(1156): Wikimedia\Rdbms\Database-&amp;gt;getQueryExceptionAndLog()&lt;br /&gt;
#2 /usr/share/mediawiki/includes/libs/rdbms/database/Database.php(647): Wikimedia\Rdbms\Database-&amp;gt;reportQueryError()&lt;br /&gt;
#3 /usr/share/mediawiki/includes/libs/rdbms/database/Database.php(2791): Wikimedia\Rdbms\Database-&amp;gt;query()&lt;br /&gt;
#4 /usr/share/mediawiki/includes/libs/rdbms/database/Database.php(2729): Wikimedia\Rdbms\Database-&amp;gt;sourceStream()&lt;br /&gt;
#5 /usr/share/mediawiki/includes/libs/rdbms/database/DBConnRef.php(127): Wikimedia\Rdbms\Database-&amp;gt;sourceFile()&lt;br /&gt;
#6 /usr/share/mediawiki/includes/libs/rdbms/database/DBConnRef.php(799): Wikimedia\Rdbms\DBConnRef-&amp;gt;__call()&lt;br /&gt;
#7 /usr/share/mediawiki/includes/installer/DatabaseUpdater.php(797): Wikimedia\Rdbms\DBConnRef-&amp;gt;sourceFile()&lt;br /&gt;
#8 /usr/share/mediawiki/includes/installer/DatabaseUpdater.php(1074): MediaWiki\Installer\DatabaseUpdater-&amp;gt;applyPatch()&lt;br /&gt;
#9 /usr/share/mediawiki/includes/installer/DatabaseUpdater.php(595): MediaWiki\Installer\DatabaseUpdater-&amp;gt;modifyField()&lt;br /&gt;
#10 /usr/share/mediawiki/includes/installer/DatabaseUpdater.php(548): MediaWiki\Installer\DatabaseUpdater-&amp;gt;runUpdates()&lt;br /&gt;
#11 /usr/share/mediawiki/maintenance/update.php(195): MediaWiki\Installer\DatabaseUpdater-&amp;gt;doUpdates()&lt;br /&gt;
#12 /usr/share/mediawiki/maintenance/includes/MaintenanceRunner.php(703): UpdateMediaWiki-&amp;gt;execute()&lt;br /&gt;
#13 /usr/share/mediawiki/maintenance/run.php(51): MediaWiki\Maintenance\MaintenanceRunner-&amp;gt;run()&lt;br /&gt;
#14 {main}&lt;br /&gt;
root@mail:/var/www/html/wiki.eco-libre.org# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# alright, this worked&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@mail:/var/www/html/wiki.eco-libre.org# sudo -u www-data php /usr/share/mediawiki/maintenance/run.php update --dbuser wiki_el_superuser --dbpass REDACTED&lt;br /&gt;
...&lt;br /&gt;
done.&lt;br /&gt;
Purging caches...done.&lt;br /&gt;
&lt;br /&gt;
Done in 8.3 s.&lt;br /&gt;
root@mail:/var/www/html/wiki.eco-libre.org# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## after that, I tried to login. it worked&lt;br /&gt;
## I expected to be sent to some 2fa registration page, but that didn&#039;t happen. it was just like any normal login&lt;br /&gt;
## I went to special pages to see if I could get it to yell at me to enable 2fa, but that didn&#039;t happen&lt;br /&gt;
### I only see the following bold options on /wiki/Special:SpecialPages (usually admin page). I wonder if this is a subset because the others are just hidden since I don&#039;t have 2FA setup? https://wiki.eco-libre.org/wiki/Special:SpecialPages&lt;br /&gt;
#### Manage Two-Factor Authentication, Watchlist, Upload file, Change content model of a page&lt;br /&gt;
## anyway, I went to &amp;quot;Manage Two-factor authentication&amp;quot; https://wiki.eco-libre.org/wiki/Special:AccountSecurity&lt;br /&gt;
## I clicked the &amp;quot;Enable&amp;quot; button under TOTP&lt;br /&gt;
## I scanned the code. It entered it in my TOTP app as &amp;quot;Eco-Libre&amp;quot; – that&#039;s not ideal. It should say &amp;quot;Eco-Libre Wiki&amp;quot;&lt;br /&gt;
## So I updated the LocalSettings.php config with&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# This is the name that the entry will have in the user&#039;s TOTP app&lt;br /&gt;
$wgOATHAuthAccountPrefix=&#039;Eco-Libre Wiki&#039;;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## anyway, I was able to finish the 2FA enrollment process&lt;br /&gt;
## I went back to SpecialPages, and already I see a *ton* more SpecialPages in bold. So it looks like that restriction worked. Currently I have access to&lt;br /&gt;
### Unwateched pages, Block user, Create account, Delete user contributions, Disable user&#039;s two-factor authentication, Rename user, Unblock user, Verify two-factor authentication status, Watchlist, Upload file, Replace text, Change content model of a page, Import pages, Mass delete, Merge page histories, and View deleted pages.&lt;br /&gt;
## I also have a notifcation &amp;quot;Two-factor authenication has been enabeld on your account. If you did not do this, your account may have been comprimised.&amp;quot;&lt;br /&gt;
## I logged-out&lt;br /&gt;
## I logged-in.&lt;br /&gt;
### First I teted it with 6 zeros (bullshit code), and it rejected it&lt;br /&gt;
### next I entered the real OTP from my app; it worked&lt;br /&gt;
## ok, this extension is done.&lt;br /&gt;
# ...&lt;br /&gt;
# probably the next-most important one is ConfirmAccount.&lt;br /&gt;
## Honestly I don&#039;t know if I&#039;ll use this, as I decided it&#039;s better to raise the barrier of entry on the wiki to users that have passed the Eco-Libre test (which is itself very accessible, but it does allow for a onboarding &amp;amp; alignment process that should eliminate spam issues that most wikis have)&lt;br /&gt;
## perhaps if I can set it up to email the applicant a link to the &amp;quot;volunteer test&amp;quot; docs, that would be helpful to funnel wiki users into the proper volunteer join workflow..&lt;br /&gt;
# first let me copy the extensions; I ran these commands to put them in-place (yet still deactivated)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
rsync -av --progress ./ConfirmAccount /var/www/html/wiki.eco-libre.org/htdocs/extensions/&lt;br /&gt;
rsync -av --progress ./SmiteSpam /var/www/html/wiki.eco-libre.org/htdocs/extensions/&lt;br /&gt;
rsync -av --progress ./DeleteBatch /var/www/html/wiki.eco-libre.org/htdocs/extensions/&lt;br /&gt;
rsync -av --progress ./UserMerge /var/www/html/wiki.eco-libre.org/htdocs/extensions/&lt;br /&gt;
rsync -av --progress ./Widgets /var/www/html/wiki.eco-libre.org/htdocs/extensions/&lt;br /&gt;
rsync -av --progress ./OATHAuth /var/www/html/wiki.eco-libre.org/htdocs/extensions/&lt;br /&gt;
fix_web_permissions.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## that finished&lt;br /&gt;
# ok, here&#039;s the ConfirmAccount https://www.mediawiki.org/wiki/Extension:ConfirmAccount&lt;br /&gt;
## hmmm...it says we should use cache type CACHE_DB https://www.mediawiki.org/wiki/Extension:ConfirmAccount#Installation&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
wfLoadExtension( &#039;ConfirmAccount&#039; );&lt;br /&gt;
$wgSessionCacheType = CACHE_DB; // Avoids stale session state across requests.&lt;br /&gt;
$wgGroupPermissions[&#039;*&#039;][&#039;createaccount&#039;] = false; // REQUIRED to enforce account requests&lt;br /&gt;
$wgGroupPermissions[&#039;bureaucrat&#039;][&#039;createaccount&#039;] = true; // Optional to allow account creation by this trusted user group&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
#### I can&#039;t find elsewhere that says this specific cache type is requried. We&#039;re using APC, which I think is supposed to be more preformant than &lt;br /&gt;
### I checked the OSE LocalSettings.php config, and it also uses ConfirmAccount *and* CACHE_ACCEL (APC), so surely it&#039;s fine&lt;br /&gt;
### but it also used a bunch of other optimiazations, some of which are necessary for varnish caching&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#################&lt;br /&gt;
# VARNISH CACHE #&lt;br /&gt;
#################&lt;br /&gt;
&lt;br /&gt;
# note that these are named &amp;quot;squid&amp;quot; for historical reasons: wikipedia used to&lt;br /&gt;
# use squid, now they use varnish. They say &amp;quot;squid,&amp;quot; but also apply to varnish&lt;br /&gt;
# * https://www.mediawiki.org/wiki/Manual:Configuration_settings#Squid&lt;br /&gt;
&lt;br /&gt;
# See this guide for more info:&lt;br /&gt;
#  * https://www.mediawiki.org/wiki/Manual:Varnish_caching&lt;br /&gt;
&lt;br /&gt;
#$wgUseSquid = true;&lt;br /&gt;
#$wgSquidServers = array(&#039;opensourceecology.org&#039;);&lt;br /&gt;
#$wgSquidServersNoPurge = array(&#039;127.0.0.1&#039;);&lt;br /&gt;
&lt;br /&gt;
$wgUseSquid = true;&lt;br /&gt;
$wgSquidServers = array( &#039;127.0.0.1:6081&#039; );&lt;br /&gt;
$wgUsePrivateIPs = true;&lt;br /&gt;
&lt;br /&gt;
#################&lt;br /&gt;
# OPTIMIZATIONS #&lt;br /&gt;
#################&lt;br /&gt;
&lt;br /&gt;
# See these links for more info:&lt;br /&gt;
#  * https://www.mediawiki.org/wiki/Manual:Performance_tuning&lt;br /&gt;
#  * https://www.mediawiki.org/wiki/Manual:Caching&lt;br /&gt;
#  * https://www.mediawiki.org/wiki/User:Aaron_Schulz/How_to_make_MediaWiki_fast&lt;br /&gt;
&lt;br /&gt;
# INTERNAL MEDIAWIKI CACHE OPTIONS (DISTINCT FROM VARNISH)&lt;br /&gt;
&lt;br /&gt;
# MainCache and MessageCache should use APCU per Aaron Schulz&lt;br /&gt;
$wgMainCacheType = CACHE_ACCEL;&lt;br /&gt;
&lt;br /&gt;
# note that if message cache uses the db (per defaults), then it may make every&lt;br /&gt;
# page load include a db change, which causes mediawiki to emmit a set-cookie&lt;br /&gt;
# for cpPosTime. The cookie&#039;s presence coming from the backend causes varnish&lt;br /&gt;
# not to cache the page (rightfully so), and the result is that varnish (which&lt;br /&gt;
# is our most important cache) is rendered useless. For more info, see:&lt;br /&gt;
#  * https://www.mediawiki.org/wiki/Topic:U9fys4phj04a85vu&lt;br /&gt;
#  * https://wiki.opensourceecology.org/wiki/Maltfield_log_2018#Thr_Mar_15.2C_2018&lt;br /&gt;
$wgMessageCacheType = CACHE_ACCEL;&lt;br /&gt;
$wgUseLocalMessageCache = true;&lt;br /&gt;
&lt;br /&gt;
# Parser Cache should still use the DB per Aaron Schulz&lt;br /&gt;
$wgParserCacheType = CACHE_DB;&lt;br /&gt;
&lt;br /&gt;
# enable caching navigation sidebar per Aaron Schulz&lt;br /&gt;
$wgEnableSidebarCache = true;&lt;br /&gt;
&lt;br /&gt;
# cache interface messages to files in this directory per Aaron Schulz&lt;br /&gt;
# note that this should be outside the docroot!&lt;br /&gt;
$wgCacheDirectory = &amp;quot;$IP/../cache&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
# OTHER OPTIMIZATIONS&lt;br /&gt;
&lt;br /&gt;
# decrease db-heavy features per Aaron Schulz&lt;br /&gt;
$wgMiserMode = true;&lt;br /&gt;
&lt;br /&gt;
# Causes serious encoding problems&lt;br /&gt;
$wgUseGzip = false;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## I added this to our LocalSettings.php, except I hard-coded the wgCacheDirectory to &#039;/var/www/html/wiki.eco-libre.org/cache&#039;&lt;br /&gt;
## here&#039;s the ConfirmAccounts-related (and ConfirmEdit-related) config from OSE&#039;s LocalSettings.php&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# ConfirmAccount&lt;br /&gt;
# This extension and directory requires an admin to confirm a user before their &lt;br /&gt;
account is created&lt;br /&gt;
&lt;br /&gt;
require_once &amp;quot;$IP/extensions/ConfirmAccount/ConfirmAccount.php&amp;quot;;&lt;br /&gt;
$wgFileStore[&#039;accountreqs&#039;] = &amp;quot;$IP/images/ConfirmAccount&amp;quot;;&lt;br /&gt;
$wgFileStore[&#039;accountcreds&#039;] = &amp;quot;$IP/images/ConfirmAccount&amp;quot;;&lt;br /&gt;
$wgConfirmAccountContact = &#039;REDACTED@opensourceecology.org&#039;;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# ConfirmEdit&lt;br /&gt;
# reCaptcha settings and keys&lt;br /&gt;
&lt;br /&gt;
wfLoadExtensions([ &#039;ConfirmEdit&#039;, &#039;ConfirmEdit/ReCaptcha&#039; ]);&lt;br /&gt;
#$wgCaptchaClass = &#039;ReCaptcha&#039;;&lt;br /&gt;
$wgCaptchaClass = &#039;SimpleCaptcha&#039;;&lt;br /&gt;
#$wgCaptchaClass = &#039;QuestyCaptcha&#039;;&lt;br /&gt;
&lt;br /&gt;
#$wgReCaptchaPublicKey = &#039;REDACTED&#039;;&lt;br /&gt;
#$wgReCaptchaPrivateKey = &#039;REDACTED&#039;;&lt;br /&gt;
$wgReCaptchaPublicKey = &#039;REDACTED&#039;;&lt;br /&gt;
$wgReCaptchaPrivateKey = &#039;REDACTED&#039;;&lt;br /&gt;
&lt;br /&gt;
# https://www.google.com/recaptcha/admin/site?siteid=REDACTED - old style&lt;br /&gt;
#$recaptcha_public_key = &#039;REDACTED&#039;;&lt;br /&gt;
#$recaptcha_private_key = &#039;REDACTED&#039;;&lt;br /&gt;
&lt;br /&gt;
$wgGroupPermissions[&#039;*&#039;            ][&#039;skipcaptcha&#039;] = false;&lt;br /&gt;
$wgGroupPermissions[&#039;user&#039;         ][&#039;skipcaptcha&#039;] = true;&lt;br /&gt;
$wgGroupPermissions[&#039;autoconfirmed&#039;][&#039;skipcaptcha&#039;] = true;&lt;br /&gt;
$wgGroupPermissions[&#039;bot&#039;          ][&#039;skipcaptcha&#039;] = true; // registered bots&lt;br /&gt;
$wgGroupPermissions[&#039;sysop&#039;        ][&#039;skipcaptcha&#039;] = true;&lt;br /&gt;
&lt;br /&gt;
# Allow admins to approve (and unapprove) users via Special:UserRights&lt;br /&gt;
$wgAddGroups[&#039;sysop&#039;][&#039;approved&#039;] = true;&lt;br /&gt;
$wgRemoveGroups[&#039;sysop&#039;][&#039;approved&#039;] = true;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## of note is that I was planning on moving OSE from recaptcha to FancyCaptcha https://wiki.opensourceecology.org/wiki/CHG-2025-XX-XX_migrate_wiki_to_hetzner3&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# re-enable ConfirmEdit and switch to FancyCaption&lt;br /&gt;
grep &#039;FancyCaptcha&#039; ${vhostDir}/LocalSettings.php || perl -0777 -pi -e &amp;quot;s%\\\$wgCaptchaClass = &#039;SimpleCaptcha&#039;;%\#\\\$wgCaptchaClass = &#039;SimpleCaptcha&#039;;\n\nwfLoadExtensions([ &#039;ConfirmEdit&#039;, &#039;ConfirmEdit/FancyCaptcha&#039; ]);\n\\\$wgCaptchaDirectory = &#039;/var/www/html/wiki.opensourceecology.org/htdocs/images/captcha/&#039;;\n\\\$wgCaptchaSecret = &#039;$wgCaptchaSecret&#039;;\n%igs&amp;quot; ${vhostDir}/LocalSettings.php&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## oh shit, there&#039;s a known issue with ConfirmAccounts that it doesn&#039;t work at all on mediawiki v1.43. it was opened a year ago X_x https://www.mediawiki.org/wiki/Extension:ConfirmAccount#Known_issues&lt;br /&gt;
### well, hopefully that gets fixed before we upgrade to the latest LTS?&lt;br /&gt;
## ok, I&#039;m just going to add this to LocalSettings.php&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# configure ConfirmAccount. See also:&lt;br /&gt;
# * https://www.mediawiki.org/wiki/Extension:ConfirmAccount&lt;br /&gt;
# * https://wiki.eco-libre.org/wiki/Maltfield_Log/2026&lt;br /&gt;
wfLoadExtension( &#039;ConfirmAccount&#039; );&lt;br /&gt;
&lt;br /&gt;
# REQUIRED to enforce account requests&lt;br /&gt;
$wgGroupPermissions[&#039;*&#039;][&#039;createaccount&#039;] = false;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## and, per the wiki extensions&#039; page, I ran the update script&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@mail:/var/www/html/wiki.eco-libre.org# sudo -u www-data php /usr/share/mediawiki/maintenance/run.php update --dbuser wiki_el_superuser --dbpass REDACTED&lt;br /&gt;
...&lt;br /&gt;
...Update &#039;MediaWiki\Maintenance\FixAutoblockLogTitles&#039; already logged as completed. Use --force to run it again.&lt;br /&gt;
Purging caches...done.&lt;br /&gt;
&lt;br /&gt;
Done in 2.2 s.&lt;br /&gt;
root@mail:/var/www/html/wiki.eco-libre.org# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## I went to the SpecialPages, I now see &amp;quot;ConfirmAccounts Requests&amp;quot; https://wiki.eco-libre.org/wiki/Special:ConfirmAccounts&lt;br /&gt;
## Now, in a tor browser where I&#039;m *not* logged-in, I can click on &amp;quot;Anonymous&amp;quot; in the top-right and click on &amp;quot;Request account&amp;quot; https://wiki.eco-libre.org/wiki/Special:RequestAccount&lt;br /&gt;
## there&#039;s this weird thing that people have to agree to the ToS *and* that their real name is real.&lt;br /&gt;
### that first one is reasonable (though we haven&#039;t written a ToS yet)&lt;br /&gt;
### that second one is dumb. why wouldn&#039;t we let users contribute anonymously?&lt;br /&gt;
#### so I edited the LocalSettings.php with this&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# we let folks contribute under pseudonyms &lt;br /&gt;
$wgConfirmAccountRequestFormItems = [&lt;br /&gt;
   &#039;UserName&#039;        =&amp;gt; [ &#039;enabled&#039; =&amp;gt; true ],&lt;br /&gt;
   &#039;RealName&#039;        =&amp;gt; [ &#039;enabled&#039; =&amp;gt; false ],&lt;br /&gt;
   &#039;Biography&#039;       =&amp;gt; [ &#039;enabled&#039; =&amp;gt; false, &#039;minWords&#039; =&amp;gt; 50 ],&lt;br /&gt;
   &#039;AreasOfInterest&#039; =&amp;gt; [ &#039;enabled&#039; =&amp;gt; true ],&lt;br /&gt;
   &#039;CV&#039;              =&amp;gt; [ &#039;enabled&#039; =&amp;gt; true ],&lt;br /&gt;
   &#039;Notes&#039;           =&amp;gt; [ &#039;enabled&#039; =&amp;gt; true ],&lt;br /&gt;
   &#039;Links&#039;           =&amp;gt; [ &#039;enabled&#039; =&amp;gt; true ],&lt;br /&gt;
   &#039;TermsOfService&#039;  =&amp;gt; [ &#039;enabled&#039; =&amp;gt; true ],&lt;br /&gt;
 ];&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## ugh, it still has the same text about the &amp;quot;Real Name&amp;quot; – even after we disabled it&lt;br /&gt;
## looks like I need to create a wiki arrticle with the text that I want here https://wiki.eco-libre.org/wiki/MediaWiki:Requestaccount-text&lt;br /&gt;
### so the default text for this article is&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&#039;Complete and submit the following form to request a user account&#039;.&lt;br /&gt;
&lt;br /&gt;
Make sure that you first read the Terms of Service before requesting an account.&lt;br /&gt;
&lt;br /&gt;
Once the account is approved, you will be emailed a notification message and the account will be usable at login.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
### what I want is the &amp;quot;accept&amp;quot; text, which replaces this&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
I have read and agree to abide by the Terms of Service of Eco-Libre. The name I have specified under &amp;quot;Real name&amp;quot; is in fact my own real name.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
### here&#039;s a list of all the system messages, according to the extensions wiki page https://www.mediawiki.org/wiki/Extension:ConfirmAccount#Minimal&lt;br /&gt;
#### requestaccount-text, requestaccount-notes, requestaccount-ext-text, requestaccount-acc-text&lt;br /&gt;
##### this is not it https://wiki.eco-libre.org/wiki/MediaWiki:Requestaccount-acc-text&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
A confirmation message will be sent to your email address once you submit this request. The address will not be published. Please respond by clicking on the confirmation link provided by the email. Finally, your password will be emailed to you when your account is created. &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
#### nor this https://wiki.eco-libre.org/wiki/MediaWiki:Requestaccount-ext-text&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
The following information is kept private and will only be used for this request. You may want to list contacts such a phone number to aid in identify confirmation. &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
### I just searched the string, and found this&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@mail:/var/www/html/wiki.eco-libre.org# grep -irl &#039;is in fact my own real name&#039; *&lt;br /&gt;
cache/l10n_cache-en.cdb&lt;br /&gt;
htdocs/extensions/ConfirmAccount/i18n/requestaccount/en.json&lt;br /&gt;
root@mail:/var/www/html/wiki.eco-libre.org# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
#### so it looks like we need to edit one of these&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@mail:/var/www/html/wiki.eco-libre.org# grep -i &#039;real name&#039; htdocs/extensions/ConfirmAccount/i18n/requestaccount/en.json&lt;br /&gt;
		&amp;quot;requestaccount-real&amp;quot;: &amp;quot;Real name (optional):&amp;quot;,&lt;br /&gt;
		&amp;quot;requestaccount-real-i&amp;quot;: &amp;quot;Real name is optional. If you choose to provide it, this will be used for giving the user attribution for their work.&amp;quot;,&lt;br /&gt;
		&amp;quot;requestaccount-same&amp;quot;: &amp;quot;(same as real name below)&amp;quot;,&lt;br /&gt;
		&amp;quot;requestaccount-agree&amp;quot;: &amp;quot;You must certify that your real name is correct and that you agree to our Terms of Service.&amp;quot;,&lt;br /&gt;
		&amp;quot;requestaccount-tos&amp;quot;: &amp;quot;I have read and agree to abide by the [[{{MediaWiki:Requestaccount-page}}|Terms of Service]] of {{SITENAME}}.\nThe name I have specified under \&amp;quot;Real name\&amp;quot; is in fact my own real name.&amp;quot;,&lt;br /&gt;
root@mail:/var/www/html/wiki.eco-libre.org# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
#### I edited these two pages&lt;br /&gt;
##### https://wiki.eco-libre.org/wiki/MediaWiki:Requestaccount-tos&lt;br /&gt;
##### https://wiki.eco-libre.org/wiki/MediaWiki:Requestaccount-agree&lt;br /&gt;
### that worked; the agree text changed when I refresh the RequsetAccount form in tor browser&lt;br /&gt;
### I entered the min inforamtion, and got this response&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Your account request has been sent and is now pending review. A confirmation email has been sent to your email address.&lt;br /&gt;
&lt;br /&gt;
Return to Main Page.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
#### curiously, that means it didn&#039;t force me to enter a CV, bio, or the list of websites&lt;br /&gt;
#### I also got an email from noreply@eco-libre.org. It just basically asked me to click an email. Good GDPR compliance.&lt;br /&gt;
##### wait, I refreshed the special page as admin. it shows-up for review. so I guess not GDPR compliant :(&lt;br /&gt;
##### also the ip address listed is 127.0.0.1. Perhaps I need to configure MediaWiki to process X-Forwarded-For headers&lt;br /&gt;
### I changed &#039;false&#039; to &#039;true&#039; for the biography; now it appears again&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$wgConfirmAccountRequestFormItems = [&lt;br /&gt;
   &#039;UserName&#039;        =&amp;gt; [ &#039;enabled&#039; =&amp;gt; true ],&lt;br /&gt;
   &#039;RealName&#039;        =&amp;gt; [ &#039;enabled&#039; =&amp;gt; false ],&lt;br /&gt;
   &#039;Biography&#039;       =&amp;gt; [ &#039;enabled&#039; =&amp;gt; true, &#039;minWords&#039; =&amp;gt; 50 ],&lt;br /&gt;
   &#039;AreasOfInterest&#039; =&amp;gt; [ &#039;enabled&#039; =&amp;gt; true ],&lt;br /&gt;
   &#039;CV&#039;              =&amp;gt; [ &#039;enabled&#039; =&amp;gt; true ],&lt;br /&gt;
   &#039;Notes&#039;           =&amp;gt; [ &#039;enabled&#039; =&amp;gt; true ],&lt;br /&gt;
   &#039;Links&#039;           =&amp;gt; [ &#039;enabled&#039; =&amp;gt; true ],&lt;br /&gt;
   &#039;TermsOfService&#039;  =&amp;gt; [ &#039;enabled&#039; =&amp;gt; true ],&lt;br /&gt;
 ];&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
## the workflow is for, after being approved, the system emails the passowrd. that&#039;s not very secure. we should, at least, make sure to require the user to change their password on first login&lt;br /&gt;
### I was looking for a way to force users to change their password on first login, but I first found this in the OSE config&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#############&lt;br /&gt;
# HARDENING #&lt;br /&gt;
#############&lt;br /&gt;
&lt;br /&gt;
$wgSecureLogin = true;&lt;br /&gt;
$wgSecretKey = &#039;REDACTED&#039;;&lt;br /&gt;
&lt;br /&gt;
# PASSWORD POLICIES&lt;br /&gt;
&lt;br /&gt;
$wgPasswordPolicy[&#039;policies&#039;][&#039;default&#039;][&#039;MinimalPasswordLength&#039;] = 10;&lt;br /&gt;
$wgPasswordPolicy[&#039;policies&#039;][&#039;default&#039;][&#039;PasswordCannotBePopular&#039;] = PHP_INT_MAX;&lt;br /&gt;
$wgPasswordPolicy[&#039;policies&#039;][&#039;default&#039;][&#039;PasswordCannotMatchUsername&#039;] = true;&lt;br /&gt;
&lt;br /&gt;
$wgPasswordPolicy[&#039;policies&#039;][&#039;sysop&#039;][&#039;MinimalPasswordLength&#039;] = 20&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
### I added this to stack exchange https://webapps.stackexchange.com/questions/182290/how-to-force-new-users-to-reset-their-password-mediawiki&lt;br /&gt;
# TODO: figure-out how to force new users to change their password, if it was auto-generated by mediawiki&lt;br /&gt;
# TODO: create ToS page https://wiki.eco-libre.org/wiki/Eco-Libre:Terms_of_Service&lt;br /&gt;
# TODO: figure-out how to make mediawiki see the IP as X-Forwarded-For (to play nice with nginx-&amp;gt;varnish-&amp;gt;apache)&lt;br /&gt;
# TODO: finish activating &amp;amp; configuring the remaining &amp;quot;new&amp;quot; extensions&lt;br /&gt;
&lt;br /&gt;
== 2026-04-17 ==&lt;br /&gt;
# shit, we&#039;re getting a 500 error on the wiki today&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[user@disp3459 ~]$ curl -iL https://wiki.eco-libre.org&lt;br /&gt;
HTTP/1.1 500 Internal Server Error&lt;br /&gt;
Server: nginx&lt;br /&gt;
Date: Sat, 18 Apr 2026 00:57:02 GMT&lt;br /&gt;
Content-Type: text/html; charset=UTF-8&lt;br /&gt;
Content-Length: 0&lt;br /&gt;
Connection: keep-alive&lt;br /&gt;
X-Content-Type-Options: nosniff&lt;br /&gt;
Expires: Thu, 19 Nov 1981 08:52:00 GMT&lt;br /&gt;
Cache-Control: no-store, no-cache, must-revalidate&lt;br /&gt;
Pragma: no-cache&lt;br /&gt;
X-Request-Id: REDACTED&lt;br /&gt;
X-Frame-Options: SAMEORIGIN&lt;br /&gt;
Set-Cookie: mw_installer_session=REDACTED; path=/; secure; HttpOnly; SameSite=Strict;HttpOnly;Secure&lt;br /&gt;
X-Content-Type-Options: nosniff&lt;br /&gt;
X-XSS-Protection: 1; mode=block&lt;br /&gt;
X-Frame-Options: deny&lt;br /&gt;
Referrer-Policy: strict-origin&lt;br /&gt;
X-Varnish: 18804052&lt;br /&gt;
Age: 0&lt;br /&gt;
Via: 1.1 mail (Varnish/7.7)&lt;br /&gt;
&lt;br /&gt;
[user@disp3459 ~]$ &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# looks like open_basedir?&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Sat Apr 18 00:59:28.202275 2026] [proxy_fcgi:error] [pid 3214280:tid 3214323] [client 127.0.0.1:0] AH01071: Got error &#039;PHP message: PHP Warning:  is_readable(): open_basedir restriction in effect. File(/usr/share/mediawiki/LocalSettings.php) is not within the allowed path(s): (...) in /usr/share/mediawiki/includes/Output/NoLocalSettings.php on line 59; PHP message: PHP Fatal error:  Uncaught Error: Call to undefined function Wikimedia\\ObjectCache\\ini_set() in /usr/share/mediawiki/includes/libs/objectcache/APCUBagOStuff.php:55\nStack trace:\n#0 /usr/share/mediawiki/includes/utils/FileContentsHasher.php(37): Wikimedia\\ObjectCache\\APCUBagOStuff-&amp;gt;construct()\n#1 /usr/share/mediawiki/includes/utils/FileContentsHasher.php(47): FileContentsHasher-&amp;gt;construct()\n#2 /usr/share/mediawiki/includes/utils/FileContentsHasher.php(93): FileContentsHasher::singleton()\n#3 /usr/share/mediawiki/includes/Html/TemplateParser.php(271): FileContentsHasher::getFileContentsHash()\n#4 /usr/share/mediawiki/includes/Html/TemplateParser.php(173): MediaWiki\\Html\\TemplateParser-&amp;gt;compile()\n#5 /usr/share/mediawiki/includes/Html/TemplateParser.php(296): MediaWiki\\Html\\TemplateParser-&amp;gt;getTemplate()\n#6 /usr/share/mediawiki/includes/Output/NoLocalSettings.php(54): MediaWiki\\Html\\TemplateParser-&amp;gt;processTemplate()\n#7 /usr/share/mediawiki/includes/WebStart.php(51): require_once(&#039;...&#039;)\n#8...&#039;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# it&#039;s just a symlink to a symlink to a non-existant file. is that the issue?&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@mail:/usr/share/mediawiki/includes/libs/rdbms/database# ls -lah /usr/share/mediawiki/LocalSettings.php&lt;br /&gt;
lrwxrwxrwx 1 root root 36 Apr 10 22:17 /usr/share/mediawiki/LocalSettings.php -&amp;gt; /var/lib/mediawiki/LocalSettings.php&lt;br /&gt;
root@mail:/usr/share/mediawiki/includes/libs/rdbms/database# ls -lah /var/lib/mediawiki/LocalSettings.php&lt;br /&gt;
lrwxrwxrwx 1 root root 32 Apr 10 22:17 /var/lib/mediawiki/LocalSettings.php -&amp;gt; /etc/mediawiki/LocalSettings.php&lt;br /&gt;
root@mail:/usr/share/mediawiki/includes/libs/rdbms/database# ls -lah /etc/mediawiki/LocalSettings.php&lt;br /&gt;
ls: cannot access &#039;/etc/mediawiki/LocalSettings.php&#039;: No such file or directory&lt;br /&gt;
root@mail:/usr/share/mediawiki/includes/libs/rdbms/database# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# wtf. the file is here, but it&#039;s not here?&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@mail:/var/lib/mediawiki# ls LocalSettings.php &lt;br /&gt;
LocalSettings.php&lt;br /&gt;
root@mail:/var/lib/mediawiki# cat LocalSettings.php &lt;br /&gt;
cat: LocalSettings.php: No such file or directory&lt;br /&gt;
root@mail:/var/lib/mediawiki# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# oh, it&#039;s because it&#039;s a symlink&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@mail:/var/lib/mediawiki# ls -lah /var/www/html/wiki.eco-libre.org/htdocs/LocalSettings.php &lt;br /&gt;
lrwxrwxrwx 1 root root 32 Apr 10 22:17 /var/www/html/wiki.eco-libre.org/htdocs/LocalSettings.php -&amp;gt; /etc/mediawiki/LocalSettings.php&lt;br /&gt;
root@mail:/var/lib/mediawiki# cat /var/www/html/wiki.eco-libre.org/htdocs/LocalSettings.php &lt;br /&gt;
cat: /var/www/html/wiki.eco-libre.org/htdocs/LocalSettings.php: No such file or directory&lt;br /&gt;
root@mail:/var/lib/mediawiki# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# that definitely was a file before. I set it to just require() the real file from one dir up (outside the docroot). but why is it gone now? could it have been deleted by a security upgrade in apt? unattended-upgrades perhaps?&lt;br /&gt;
## well, that&#039;s a match&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@mail:/var/log/unattended-upgrades# grep -irl mediawiki *&lt;br /&gt;
unattended-upgrades-dpkg.log&lt;br /&gt;
unattended-upgrades.log&lt;br /&gt;
root@mail:/var/log/unattended-upgrades# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# yeah, it looks like we upgraded on 2026-04-13. That was Monday. Today is Friday.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@mail:/var/log/unattended-upgrades# grep -ir mediawiki *&lt;br /&gt;
unattended-upgrades-dpkg.log:Preparing to unpack .../mediawiki_1%3a1.43.8+dfsg-1~deb13u1_all.deb ...&lt;br /&gt;
unattended-upgrades-dpkg.log:Unpacking mediawiki (1:1.43.8+dfsg-1~deb13u1) over (1:1.43.6+dfsg-1~deb13u1) ...&lt;br /&gt;
unattended-upgrades-dpkg.log:Preparing to unpack .../mediawiki-classes_1%3a1.43.8+dfsg-1~deb13u1_all.deb ...&lt;br /&gt;
unattended-upgrades-dpkg.log:Unpacking mediawiki-classes (1:1.43.8+dfsg-1~deb13u1) over (1:1.43.6+dfsg-1~deb13u1) ...&lt;br /&gt;
unattended-upgrades-dpkg.log:Setting up mediawiki-classes (1:1.43.8+dfsg-1~deb13u1) ...&lt;br /&gt;
unattended-upgrades-dpkg.log:Setting up mediawiki (1:1.43.8+dfsg-1~deb13u1) ...&lt;br /&gt;
unattended-upgrades-dpkg.log:apache2_invoke mediawiki: already enabled&lt;br /&gt;
unattended-upgrades-dpkg.log:mediawiki-jobrunner.service is a disabled or a static unit not running, not starting it.&lt;br /&gt;
unattended-upgrades.log:2026-04-13 06:07:02,546 INFO Packages that will be upgraded: mediawiki mediawiki-classes&lt;br /&gt;
root@mail:/var/log/unattended-upgrades# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# mediawiki announced two releases on 2026-04-01. One was a normal maintenance release (1.43.8). One was a security release (1.43.7)&lt;br /&gt;
## https://lists.wikimedia.org/hyperkitty/list/mediawiki-announce@lists.wikimedia.org/thread/DIBLSBHISKX6NFRUFNOGZRVW42E7R2QP/&lt;br /&gt;
## https://lists.wikimedia.org/hyperkitty/list/mediawiki-announce@lists.wikimedia.org/thread/6VW6OGVSC7LO3QUMBEZOPQFYYOFDJ452/&lt;br /&gt;
# well, it&#039;s good that we confirmed that securty updates are getting automatically installed.&lt;br /&gt;
# ok, well, obviously we need to follow the debian-way and put the LocalSettings.php file in /etc/.\&lt;br /&gt;
## I did that&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@mail:/var/lib/mediawiki# cat /etc/mediawiki/LocalSettings.php&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
# including separate file that contains the database password so that it is not stored within the document root.&lt;br /&gt;
# For more info see:&lt;br /&gt;
#  * https://tech.michaelaltfield.net/2020/02/14/phplist-hardening-security/&lt;br /&gt;
#  * https://www.mediawiki.org/wiki/Manual:Security&lt;br /&gt;
#  * https://wiki.r00tedvw.com/index.php/Mediawiki/Hardening&lt;br /&gt;
 &lt;br /&gt;
#$docRoot = dirname( $_SERVER[&#039;DOCUMENT_ROOT&#039;] );&lt;br /&gt;
#require_once &amp;quot;$docRoot/LocalSettings.php&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
# docRoot didn&#039;t work for all of:&lt;br /&gt;
#  1. php-fpm (the normal website)&lt;br /&gt;
#  2. cli&lt;br /&gt;
#  3. the fact that we&#039;re in /var/lib/mediawiki due to debian&#039;s install symlink&lt;br /&gt;
#&lt;br /&gt;
# ...so I&#039;m just hardcoding the path to LocalSettings.php, so it always works!&lt;br /&gt;
&lt;br /&gt;
require_once( &amp;quot;/var/www/html/wiki.eco-libre.org/LocalSettings.php&amp;quot; );&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
root@mail:/var/lib/mediawiki# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# I tried the site; it&#039;s still broken&lt;br /&gt;
# I cleared varnish cache; it&#039;s still broken&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@mail:/var/lib/mediawiki# varnishadm &#039;ban req.url ~ &amp;quot;.&amp;quot;&#039;&lt;br /&gt;
&lt;br /&gt;
root@mail:/var/lib/mediawiki# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# yeah, I think the problem is that I never added /etc/mediawiki into the basedir, because I wasn&#039;t using it there. Ugh.&lt;br /&gt;
# I don&#039;t like doing this, but there&#039;s nothing else there. should be fine&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@mail:/var/lib/mediawiki# ls -lah /etc/mediawiki/&lt;br /&gt;
total 20K&lt;br /&gt;
drwxr-xr-x   2 root root 4,0K Apr 18 01:16 .&lt;br /&gt;
drwxr-xr-x 120 root root  12K Apr 17 20:30 ..&lt;br /&gt;
-rw-r--r--   1 root root  741 Apr 18 01:16 LocalSettings.php&lt;br /&gt;
root@mail:/var/lib/mediawiki# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 2026-04-14 ==&lt;br /&gt;
# Appropedia responded to me, indicating that they use Vector 2022 skin, with these config options https://wordpress.org/support/topic/support-for-automatic-exchange-rates-wp_http_block_external-2/#&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
:wfLoadSkin( &#039;Vector&#039; );&lt;br /&gt;
:$wgDefaultSkin = &#039;vector-2022&#039;;&lt;br /&gt;
:$wgSkipSkins[] = &#039;vector&#039;; // Disable old Vector&lt;br /&gt;
:$wgVectorResponsive = true;&lt;br /&gt;
:$wgVectorMaxWidthOptions[&#039;exclude&#039;][&#039;mainpage&#039;] = false;&lt;br /&gt;
:$wgVectorNightMode[&#039;logged_out&#039;] = true;&lt;br /&gt;
:$wgDefaultUserOptions[&#039;vector-main-menu-pinned&#039;] = 0;&lt;br /&gt;
:$wgDefaultUserOptions[&#039;vector-page-tools-pinned&#039;] = 0;&lt;br /&gt;
:$wgDefaultUserOptions[&#039;vector-appearance-pinned&#039;] = 0;&lt;br /&gt;
:$wgDefaultUserOptions[&#039;vector-toc-pinned&#039;] = 0;&lt;br /&gt;
:$wgDefaultUserOptions[&#039;vector-font-size&#039;] = 1;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# they said they use this extension for &amp;quot;read mode&amp;quot; which they developed themselves https://www.mediawiki.org/wiki/Extension:ReadMode&lt;br /&gt;
&lt;br /&gt;
== 2026-04-13 ==&lt;br /&gt;
# Here&#039;s TOFU 3/3 (Tor, exit in The Netherlands)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
The Netherlands&lt;br /&gt;
	  Congratulations. This browser is configured to use Tor.&lt;br /&gt;
2026-04-13&lt;br /&gt;
######################################################################### 100.0%&lt;br /&gt;
2026-04-13&lt;br /&gt;
14M	OATHAuth-REL1_43-015a49e.tar.gz&lt;br /&gt;
9ee56e843931edd87b631b264d680e9f8d77f18b5ffdbc18b9a4f5b15330878e  OATHAuth-REL1_43-015a49e.tar.gz&lt;br /&gt;
user@host:/tmp/user/1000/tmp.eIvrMPff3B$ &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 2026-04-10 ==&lt;br /&gt;
# Here&#039;s TOFU 2/3 (VPN, exit in US)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
United States&lt;br /&gt;
2026-04-10&lt;br /&gt;
######################################################################### 100.0%&lt;br /&gt;
2026-04-10&lt;br /&gt;
14M	OATHAuth-REL1_43-015a49e.tar.gz&lt;br /&gt;
9ee56e843931edd87b631b264d680e9f8d77f18b5ffdbc18b9a4f5b15330878e  OATHAuth-REL1_43-015a49e.tar.gz&lt;br /&gt;
user@disp5712:/tmp/tmp.oTeGPpTCzP$ &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# finally, they all match! great, that&#039;s our last extension&lt;br /&gt;
&lt;br /&gt;
== 2026-04-09 ==&lt;br /&gt;
# Here&#039;s TOFU 3/3 (ISP, exit in Ecuador)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Ecuador&lt;br /&gt;
2026-04-09&lt;br /&gt;
######################################################################### 100.0%&lt;br /&gt;
2026-04-09&lt;br /&gt;
4.0K	OATHAuth-REL1_43-967ccd4.tar.gz&lt;br /&gt;
8351c0267c2cd7866ff04c04261f06cd75af9a7130aac848ca43fd047404e229  OATHAuth-REL1_43-967ccd4.tar.gz&lt;br /&gt;
user@disp7124:/tmp/tmp.wlx3U02c6r$ &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# fuck, it&#039;s already unavailable; says &#039;libraryupgrader&#039; from 3 hours ago &amp;gt;:0&lt;br /&gt;
# let&#039;s try again&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
REMOTE_FILES=&amp;quot;https://extdist.wmflabs.org/dist/extensions/OATHAuth-REL1_43-015a49e.tar.gz&amp;quot;&lt;br /&gt;
&lt;br /&gt;
CURL=&amp;quot;/usr/bin/curl --retry 5 --retry-all-errors&amp;quot;&lt;br /&gt;
PYTHON=&amp;quot;/usr/bin/python3&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# in tails, we must torify&lt;br /&gt;
if [[ &amp;quot;`whoami`&amp;quot; == &amp;quot;amnesia&amp;quot; ]] ; then&lt;br /&gt;
	CURL=&amp;quot;/usr/bin/torify ${CURL}&amp;quot;&lt;br /&gt;
	PYTHON=&amp;quot;/usr/bin/torify ${PYTHON}&amp;quot;&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
tmpDir=`mktemp -d`&lt;br /&gt;
pushd &amp;quot;${tmpDir}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# first get some info about our internet connection&lt;br /&gt;
${CURL} -s https://ifconfig.co/country | head -n1&lt;br /&gt;
${CURL} -s https://check.torproject.org | grep Congratulations | head -n1&lt;br /&gt;
&lt;br /&gt;
# and today&#039;s date&lt;br /&gt;
date -u +&amp;quot;%Y-%m-%d&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# get the file&lt;br /&gt;
for file in ${REMOTE_FILES}; do&lt;br /&gt;
	${CURL} --progress-bar -O ${file}&lt;br /&gt;
done&lt;br /&gt;
&lt;br /&gt;
# checksum&lt;br /&gt;
date -u +&amp;quot;%Y-%m-%d&amp;quot;&lt;br /&gt;
du -sh *&lt;br /&gt;
sha256sum *&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# Here&#039;s TOFU 1/3 (ISP, exit in Ecuador)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Ecuador&lt;br /&gt;
2026-04-09&lt;br /&gt;
######################################################################### 100.0%&lt;br /&gt;
2026-04-09&lt;br /&gt;
14M	OATHAuth-REL1_43-015a49e.tar.gz&lt;br /&gt;
9ee56e843931edd87b631b264d680e9f8d77f18b5ffdbc18b9a4f5b15330878e  OATHAuth-REL1_43-015a49e.tar.gz&lt;br /&gt;
user@disp7124:/tmp/tmp.rGKb4qtHLX$ &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 2026-04-08 ==&lt;br /&gt;
# Here&#039;s TOFU 2/3 (VPN, exit in UK)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
United Kingdom&lt;br /&gt;
2026-04-08&lt;br /&gt;
############################################################################## 100.0%&lt;br /&gt;
2026-04-08&lt;br /&gt;
14M	OATHAuth-REL1_43-967ccd4.tar.gz&lt;br /&gt;
5992bf6044ba5bd6404d51ec5bef936e6eb724576a2003fc176648c7fcf9c6b7  OATHAuth-REL1_43-967ccd4.tar.gz&lt;br /&gt;
user@disp6902:/tmp/tmp.KDMVCsn1cU$ &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 2026-04-07 ==&lt;br /&gt;
# here&#039;s TOFU 3/3 (Tor, exit in The Netherlands)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
The Netherlands&lt;br /&gt;
	  Congratulations. This browser is configured to use Tor.&lt;br /&gt;
2026-04-07&lt;br /&gt;
####################################################################### 100.0%&lt;br /&gt;
####################################################################### 100.0%&lt;br /&gt;
####################################################################### 100.0%&lt;br /&gt;
2026-04-07&lt;br /&gt;
448K	ConfirmAccount-REL1_43-38c4602.tar.gz&lt;br /&gt;
124K	DeleteBatch-REL1_43-b3b052b.tar.gz&lt;br /&gt;
4.0K	OATHAuth-REL1_43-2cdbefb.tar.gz&lt;br /&gt;
95b2bc67977c22d069867a7225aa1a9720b7593ed5ab49aa27cc293f01b2e2bb  ConfirmAccount-REL1_43-38c4602.tar.gz&lt;br /&gt;
d1e7c01cf709f2b57137bb3d76f73b4e8fd36ce57c12b750b04fe20ffce9be61  DeleteBatch-REL1_43-b3b052b.tar.gz&lt;br /&gt;
8351c0267c2cd7866ff04c04261f06cd75af9a7130aac848ca43fd047404e229  OATHAuth-REL1_43-2cdbefb.tar.gz&lt;br /&gt;
user@host:/tmp/user/1000/tmp.qw9hrOvh3l$ &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# ok, well, we&#039;re 2/3 for that one. ConfirmAccount and DeleteBatch both have the same on all 3 TOFUs.&lt;br /&gt;
## But OATHAuth must have had a new release, because it&#039;s now 404&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
user@host:/tmp/user/1000/tmp.qw9hrOvh3l$ cat OATHAuth-REL1_43-2cdbefb.tar.gz &lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;head&amp;gt;&amp;lt;title&amp;gt;404 Not Found&amp;lt;/title&amp;gt;&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;h1&amp;gt;404 Not Found&amp;lt;/h1&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&amp;lt;center&amp;gt;nginx/1.18.0&amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
user@host:/tmp/user/1000/tmp.qw9hrOvh3l$ &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# I checked the changelog. looks like this extension is getting updated almost every 1-2 days from &amp;quot;Translation updater bot&amp;quot; – that&#039;s terrible. We need three consecutive days of no changes for 3TOFU https://www.mediawiki.org/wiki/Extension:OATHAuth&lt;br /&gt;
## hmm, well, if I look back further, there was a gap of 2 months before the update 6 days ago. So there certainly is *some* stability.&lt;br /&gt;
## also, that was *all* commits. This one limits to just the 1.43 branch, which is what we want https://gerrit.wikimedia.org/r/plugins/gitiles/mediawiki/extensions/OATHAuth/+log/refs/heads/REL1_43&lt;br /&gt;
### hmm, that one shows the last update was 10 hours ago, and the one before that was 2 months ago (Jan 22). That would be fine, but didn&#039;t we have two consecutive 3TOFUs fail on us?&lt;br /&gt;
### oh, wait, woah. the commits are out of order! First it shows &amp;quot;10 hours ago&amp;quot; and then &amp;quot;2 months ago&amp;quot; and then &amp;quot;7 days ago&amp;quot; wtf!&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
gerrit.wikimedia.org / mediawiki / extensions / OATHAuth / refs/heads/REL1_43&lt;br /&gt;
&lt;br /&gt;
	967ccd4 Localisation updates from https://translatewiki.net. by Translation updater bot · 10 hours ago REL1_43&lt;br /&gt;
	2cdbefb SECURITY: Don&#039;t leak user&#039;s lack of 2FA to other users by Roan Kattouw · 2 months ago&lt;br /&gt;
	bfcd5cf Localisation updates from https://translatewiki.net. by Translation updater bot · 7 days ago&lt;br /&gt;
	d8e7578 build: Updating npm dependencies by libraryupgrader · 12 days ago&lt;br /&gt;
	be14e83 Localisation updates from https://translatewiki.net. by Translation updater bot · 2 weeks ago&lt;br /&gt;
	77c70f5 build: Updating flatted to 3.4.2 by libraryupgrader · 3 weeks ago&lt;br /&gt;
	87d04d4 Localisation updates from https://translatewiki.net. by Translation updater bot · 3 weeks ago&lt;br /&gt;
	8e176b2 Localisation updates from https://translatewiki.net. by Translation updater bot · 4 weeks ago&lt;br /&gt;
	14596de Localisation updates from https://translatewiki.net. by Translation updater bot · 5 weeks ago&lt;br /&gt;
	8c7891a build: Updating ajv to 6.14.0, 8.18.0 by libraryupgrader · 6 weeks ago&lt;br /&gt;
	0406194 Localisation updates from https://translatewiki.net. by Translation updater bot · 6 weeks ago&lt;br /&gt;
	4c94235 Localisation updates from https://translatewiki.net. by Translation updater bot · 7 weeks ago&lt;br /&gt;
	7d0b2d7 Localisation updates from https://translatewiki.net. by Translation updater bot · 8 weeks ago&lt;br /&gt;
	a896cff Localisation updates from https://translatewiki.net. by Translation updater bot · 9 weeks ago&lt;br /&gt;
	b8e8afa Localisation updates from https://translatewiki.net. by Translation updater bot · 2 months ago&lt;br /&gt;
	4b3cb73 build: Updating lodash to 4.17.23 by libraryupgrader · 2 months ago&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# well, it looks like the translator bot runs once per week. so we should have 6 days before that one changes again..&lt;br /&gt;
# anyway, here&#039;s our (hopefully last) 3TOFU script, just for OATHAuth&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
REMOTE_FILES=&amp;quot;https://extdist.wmflabs.org/dist/extensions/OATHAuth-REL1_43-967ccd4.tar.gz&amp;quot;&lt;br /&gt;
&lt;br /&gt;
CURL=&amp;quot;/usr/bin/curl --retry 5 --retry-all-errors&amp;quot;&lt;br /&gt;
PYTHON=&amp;quot;/usr/bin/python3&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# in tails, we must torify&lt;br /&gt;
if [[ &amp;quot;`whoami`&amp;quot; == &amp;quot;amnesia&amp;quot; ]] ; then&lt;br /&gt;
	CURL=&amp;quot;/usr/bin/torify ${CURL}&amp;quot;&lt;br /&gt;
	PYTHON=&amp;quot;/usr/bin/torify ${PYTHON}&amp;quot;&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
tmpDir=`mktemp -d`&lt;br /&gt;
pushd &amp;quot;${tmpDir}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# first get some info about our internet connection&lt;br /&gt;
${CURL} -s https://ifconfig.co/country | head -n1&lt;br /&gt;
${CURL} -s https://check.torproject.org | grep Congratulations | head -n1&lt;br /&gt;
&lt;br /&gt;
# and today&#039;s date&lt;br /&gt;
date -u +&amp;quot;%Y-%m-%d&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# get the file&lt;br /&gt;
for file in ${REMOTE_FILES}; do&lt;br /&gt;
	${CURL} --progress-bar -O ${file}&lt;br /&gt;
done&lt;br /&gt;
&lt;br /&gt;
# checksum&lt;br /&gt;
date -u +&amp;quot;%Y-%m-%d&amp;quot;&lt;br /&gt;
du -sh *&lt;br /&gt;
sha256sum *&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# and TOFU 1/3 (Tor, exit in The Netherlands)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
The Netherlands&lt;br /&gt;
	  Congratulations. This browser is configured to use Tor.&lt;br /&gt;
2026-04-07&lt;br /&gt;
####################################################################### 100.0%&lt;br /&gt;
2026-04-07&lt;br /&gt;
14M	OATHAuth-REL1_43-967ccd4.tar.gz&lt;br /&gt;
5992bf6044ba5bd6404d51ec5bef936e6eb724576a2003fc176648c7fcf9c6b7  OATHAuth-REL1_43-967ccd4.tar.gz&lt;br /&gt;
user@host:/tmp/user/1000/tmp.RBxv6XdjXd$ &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 2026-04-06 ==&lt;br /&gt;
# here&#039;s TOFU 2/3 (VPN, exit in Germany)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Germany&lt;br /&gt;
2026-04-06&lt;br /&gt;
#################################################################################### 100.0%&lt;br /&gt;
#################################################################################### 100.0%&lt;br /&gt;
#################################################################################### 100.0%&lt;br /&gt;
2026-04-06&lt;br /&gt;
448K	ConfirmAccount-REL1_43-38c4602.tar.gz&lt;br /&gt;
124K	DeleteBatch-REL1_43-b3b052b.tar.gz&lt;br /&gt;
14M	OATHAuth-REL1_43-2cdbefb.tar.gz&lt;br /&gt;
95b2bc67977c22d069867a7225aa1a9720b7593ed5ab49aa27cc293f01b2e2bb  ConfirmAccount-REL1_43-38c4602.tar.gz&lt;br /&gt;
d1e7c01cf709f2b57137bb3d76f73b4e8fd36ce57c12b750b04fe20ffce9be61  DeleteBatch-REL1_43-b3b052b.tar.gz&lt;br /&gt;
f71115af96a1ed5297d8d56f56683635b7c9e0b8b32151b184feea1fbec3350a  OATHAuth-REL1_43-2cdbefb.tar.gz&lt;br /&gt;
user@disp8963:/tmp/tmp.JNwdKPbQIW$ &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 2026-04-01 ==&lt;br /&gt;
# continuing with the wiki setup today&lt;br /&gt;
# I saw our db partition reached 90%. It&#039;s been growing slowly, but adding mediawiki to the server didn&#039;t help, so I spent some time expanding the disks. Now we&#039;re down to 48% usage on the db partition, and everything else is hovering around 60% used, +/- 5%&lt;br /&gt;
# here&#039;s our last TOFU on the mediawiki extensions&lt;br /&gt;
## TOFU 3/3 (ISP, exit in Ecuador)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Ecuador&lt;br /&gt;
2026-04-01&lt;br /&gt;
######################################################################### 100.0%&lt;br /&gt;
######################################################################### 100.0%&lt;br /&gt;
######################################################################### 100.0%&lt;br /&gt;
######################################################################### 100.0%&lt;br /&gt;
######################################################################### 100.0%&lt;br /&gt;
######################################################################### 100.0%&lt;br /&gt;
2026-04-01&lt;br /&gt;
4.0K	ConfirmAccount-REL1_43-9cc1a82.tar.gz&lt;br /&gt;
4.0K	DeleteBatch-REL1_43-24a81e4.tar.gz&lt;br /&gt;
4.0K	OATHAuth-REL1_43-d8e7578.tar.gz&lt;br /&gt;
108K	SmiteSpam-REL1_43-483b81b.tar.gz&lt;br /&gt;
140K	UserMerge-REL1_43-27425da.tar.gz&lt;br /&gt;
492K	Widgets-REL1_43-60a09f0.tar.gz&lt;br /&gt;
8351c0267c2cd7866ff04c04261f06cd75af9a7130aac848ca43fd047404e229  ConfirmAccount-REL1_43-9cc1a82.tar.gz&lt;br /&gt;
8351c0267c2cd7866ff04c04261f06cd75af9a7130aac848ca43fd047404e229  DeleteBatch-REL1_43-24a81e4.tar.gz&lt;br /&gt;
8351c0267c2cd7866ff04c04261f06cd75af9a7130aac848ca43fd047404e229  OATHAuth-REL1_43-d8e7578.tar.gz&lt;br /&gt;
997c9edfe7ab78d6e1f1268d48ec19f13d036f584ad54c4281e210940a59f7c9  SmiteSpam-REL1_43-483b81b.tar.gz&lt;br /&gt;
5f28fdf7c0b727d699d42f14073359e13c8db1b2d389d78219845b5912cc0ccc  UserMerge-REL1_43-27425da.tar.gz&lt;br /&gt;
bed64d3c98842f7ec3675e17a24c21fb4720862084857e6834fb7813d14ab865  Widgets-REL1_43-60a09f0.tar.gz&lt;br /&gt;
user@disp7799:/tmp/tmp.YkN2s6MgT6$ &lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# huh, 3TOFU failed for 3/5 of the extensions&lt;br /&gt;
## SmiteSpam, UserMerge, and Widgets matched on all three&lt;br /&gt;
## but ConfirmAccount, DeleteBatch, and OATHAuthOATHAuth diff&#039;d&lt;br /&gt;
# I see that the file size of the three that failed is &amp;quot;4.0K&amp;quot;. that suggests that it didn&#039;t actually download&lt;br /&gt;
# sure enough, they&#039;re 404&#039;d&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
user@disp7799:/tmp/tmp.YkN2s6MgT6$ cat ConfirmAccount-REL1_43-9cc1a82.tar.gz&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;head&amp;gt;&amp;lt;title&amp;gt;404 Not Found&amp;lt;/title&amp;gt;&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;h1&amp;gt;404 Not Found&amp;lt;/h1&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&amp;lt;center&amp;gt;nginx/1.18.0&amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
user@disp7799:/tmp/tmp.YkN2s6MgT6$ &lt;br /&gt;
user@disp7799:/tmp/tmp.YkN2s6MgT6$ cat DeleteBatch-REL1_43-24a81e4.tar.gz&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;head&amp;gt;&amp;lt;title&amp;gt;404 Not Found&amp;lt;/title&amp;gt;&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;h1&amp;gt;404 Not Found&amp;lt;/h1&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&amp;lt;center&amp;gt;nginx/1.18.0&amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
user@disp7799:/tmp/tmp.YkN2s6MgT6$ &lt;br /&gt;
user@disp7799:/tmp/tmp.YkN2s6MgT6$ cat OATHAuth-REL1_43-d8e7578.tar.gz&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;head&amp;gt;&amp;lt;title&amp;gt;404 Not Found&amp;lt;/title&amp;gt;&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;h1&amp;gt;404 Not Found&amp;lt;/h1&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&amp;lt;center&amp;gt;nginx/1.18.0&amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
user@disp7799:/tmp/tmp.YkN2s6MgT6$ &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# if I go to download these plugins again, here&#039;s the URLs I get&lt;br /&gt;
## ConfirmAccount https://www.mediawiki.org/wiki/Extension:ConfirmAccount&lt;br /&gt;
### https://extdist.wmflabs.org/dist/extensions/ConfirmAccount-REL1_43-38c4602.tar.gz&lt;br /&gt;
## DeleteBatch https://www.mediawiki.org/wiki/Extension:ConfirmAccount&lt;br /&gt;
### https://extdist.wmflabs.org/dist/extensions/DeleteBatch-REL1_43-b3b052b.tar.gz&lt;br /&gt;
## OATHAuth https://www.mediawiki.org/wiki/Extension:OATHAuth&lt;br /&gt;
### https://extdist.wmflabs.org/dist/extensions/OATHAuth-REL1_43-2cdbefb.tar.gz&lt;br /&gt;
# here&#039;s our old 3TOFU script, for comparison&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
REMOTE_FILES=&amp;quot;https://extdist.wmflabs.org/dist/extensions/ConfirmAccount-REL1_43-9cc1a82.tar.gz https://extdist.wmflabs.org/dist/extensions/DeleteBatch-REL1_43-24a81e4.tar.gz https://extdist.wmflabs.org/dist/extensions/OATHAuth-REL1_43-d8e7578.tar.gz https://extdist.wmflabs.org/dist/extensions/SmiteSpam-REL1_43-483b81b.tar.gz https://extdist.wmflabs.org/dist/extensions/UserMerge-REL1_43-27425da.tar.gz https://extdist.wmflabs.org/dist/extensions/Widgets-REL1_43-60a09f0.tar.gz&amp;quot;&lt;br /&gt;
&lt;br /&gt;
CURL=&amp;quot;/usr/bin/curl --retry 5 --retry-all-errors&amp;quot;&lt;br /&gt;
PYTHON=&amp;quot;/usr/bin/python3&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# in tails, we must torify&lt;br /&gt;
if [[ &amp;quot;`whoami`&amp;quot; == &amp;quot;amnesia&amp;quot; ]] ; then&lt;br /&gt;
	CURL=&amp;quot;/usr/bin/torify ${CURL}&amp;quot;&lt;br /&gt;
	PYTHON=&amp;quot;/usr/bin/torify ${PYTHON}&amp;quot;&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
tmpDir=`mktemp -d`&lt;br /&gt;
pushd &amp;quot;${tmpDir}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# first get some info about our internet connection&lt;br /&gt;
${CURL} -s https://ifconfig.co/country | head -n1&lt;br /&gt;
${CURL} -s https://check.torproject.org | grep Congratulations | head -n1&lt;br /&gt;
&lt;br /&gt;
# and today&#039;s date&lt;br /&gt;
date -u +&amp;quot;%Y-%m-%d&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# get the file&lt;br /&gt;
for file in ${REMOTE_FILES}; do&lt;br /&gt;
	${CURL} --progress-bar -O ${file}&lt;br /&gt;
done&lt;br /&gt;
&lt;br /&gt;
# checksum&lt;br /&gt;
date -u +&amp;quot;%Y-%m-%d&amp;quot;&lt;br /&gt;
du -sh *&lt;br /&gt;
sha256sum *&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# so, yeah, I guess they delete the old releases when the push a new one? that&#039;s pretty annoying&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
https://extdist.wmflabs.org/dist/extensions/ConfirmAccount-REL1_43-9cc1a82.tar.gz&lt;br /&gt;
https://extdist.wmflabs.org/dist/extensions/ConfirmAccount-REL1_43-38c4602.tar.gz&lt;br /&gt;
&lt;br /&gt;
https://extdist.wmflabs.org/dist/extensions/DeleteBatch-REL1_43-24a81e4.tar.gz&lt;br /&gt;
https://extdist.wmflabs.org/dist/extensions/DeleteBatch-REL1_43-b3b052b.tar.gz&lt;br /&gt;
&lt;br /&gt;
https://extdist.wmflabs.org/dist/extensions/OATHAuth-REL1_43-d8e7578.tar.gz&lt;br /&gt;
https://extdist.wmflabs.org/dist/extensions/OATHAuth-REL1_43-2cdbefb.tar.gz&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# anyway, let&#039;s try it again, and hope we get all three before they push another release in the next ~1 week&lt;br /&gt;
# here&#039;s a new 3TOFU script&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
REMOTE_FILES=&amp;quot;https://extdist.wmflabs.org/dist/extensions/ConfirmAccount-REL1_43-38c4602.tar.gz https://extdist.wmflabs.org/dist/extensions/DeleteBatch-REL1_43-b3b052b.tar.gz https://extdist.wmflabs.org/dist/extensions/OATHAuth-REL1_43-2cdbefb.tar.gz&amp;quot;&lt;br /&gt;
&lt;br /&gt;
CURL=&amp;quot;/usr/bin/curl --retry 5 --retry-all-errors&amp;quot;&lt;br /&gt;
PYTHON=&amp;quot;/usr/bin/python3&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# in tails, we must torify&lt;br /&gt;
if [[ &amp;quot;`whoami`&amp;quot; == &amp;quot;amnesia&amp;quot; ]] ; then&lt;br /&gt;
	CURL=&amp;quot;/usr/bin/torify ${CURL}&amp;quot;&lt;br /&gt;
	PYTHON=&amp;quot;/usr/bin/torify ${PYTHON}&amp;quot;&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
tmpDir=`mktemp -d`&lt;br /&gt;
pushd &amp;quot;${tmpDir}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# first get some info about our internet connection&lt;br /&gt;
${CURL} -s https://ifconfig.co/country | head -n1&lt;br /&gt;
${CURL} -s https://check.torproject.org | grep Congratulations | head -n1&lt;br /&gt;
&lt;br /&gt;
# and today&#039;s date&lt;br /&gt;
date -u +&amp;quot;%Y-%m-%d&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# get the file&lt;br /&gt;
for file in ${REMOTE_FILES}; do&lt;br /&gt;
	${CURL} --progress-bar -O ${file}&lt;br /&gt;
done&lt;br /&gt;
&lt;br /&gt;
# checksum&lt;br /&gt;
date -u +&amp;quot;%Y-%m-%d&amp;quot;&lt;br /&gt;
du -sh *&lt;br /&gt;
sha256sum *&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# And TOFU 1/3 (ISP, exit in Ecuador)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Ecuador&lt;br /&gt;
2026-04-01&lt;br /&gt;
######################################################################### 100.0%&lt;br /&gt;
######################################################################### 100.0%&lt;br /&gt;
######################################################################### 100.0%&lt;br /&gt;
2026-04-01&lt;br /&gt;
448K	ConfirmAccount-REL1_43-38c4602.tar.gz&lt;br /&gt;
124K	DeleteBatch-REL1_43-b3b052b.tar.gz&lt;br /&gt;
14M	OATHAuth-REL1_43-2cdbefb.tar.gz&lt;br /&gt;
95b2bc67977c22d069867a7225aa1a9720b7593ed5ab49aa27cc293f01b2e2bb  ConfirmAccount-REL1_43-38c4602.tar.gz&lt;br /&gt;
d1e7c01cf709f2b57137bb3d76f73b4e8fd36ce57c12b750b04fe20ffce9be61  DeleteBatch-REL1_43-b3b052b.tar.gz&lt;br /&gt;
f71115af96a1ed5297d8d56f56683635b7c9e0b8b32151b184feea1fbec3350a  OATHAuth-REL1_43-2cdbefb.tar.gz&lt;br /&gt;
user@disp7799:/tmp/tmp.oWTEqi2mpP$ &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# and all the files are &amp;gt;4K, so that&#039;s promising.&lt;br /&gt;
# TODO: finish 3TOFU, install &amp;amp; configure extensions&lt;br /&gt;
# ...&lt;br /&gt;
# I also edited some wiki articles, namely&lt;br /&gt;
## this Maltfield_Log and Maltfield_Log/2026&lt;br /&gt;
## the Main_Page&lt;br /&gt;
## the Eco-Libre:About page (from the footer)&lt;br /&gt;
## a Documentation page, which describes what the wiki is for and what it&#039;s not for&lt;br /&gt;
# TOOO: write Eco-Libre:Privacy_policy&lt;br /&gt;
&lt;br /&gt;
== 2026-03-31 ==&lt;br /&gt;
Hello World!&lt;br /&gt;
&lt;br /&gt;
# I installed this wiki last week on 2026-03-27&lt;br /&gt;
# since then, I did some hardening and basic setup (skin, logos)&lt;br /&gt;
# today I continued through the process of configuring its built-in plugins&lt;br /&gt;
# I&#039;m still in the process of a 3TOFU on the desired extensions.&lt;br /&gt;
# now I&#039;m finally editing some pages&lt;br /&gt;
# &#039;&#039;&#039;TODO: download, activate, and configure additional extensions&#039;&#039;&#039;&lt;/div&gt;</summary>
		<author><name>Maltfield</name></author>
	</entry>
	<entry>
		<id>https://wiki.eco-libre.org/index.php?title=Maltfield_Log&amp;diff=107</id>
		<title>Maltfield Log</title>
		<link rel="alternate" type="text/html" href="https://wiki.eco-libre.org/index.php?title=Maltfield_Log&amp;diff=107"/>
		<updated>2026-04-26T23:13:31Z</updated>

		<summary type="html">&lt;p&gt;Maltfield: /* Logs */ fix copy-paste residue&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Key Wiki Pages=&lt;br /&gt;
# [[User:Maltfield]]&lt;br /&gt;
&lt;br /&gt;
=Logs=&lt;br /&gt;
&lt;br /&gt;
To avoid exceeding Mediawiki&#039;s allowable limits (triggering a &amp;quot;413 Request Entity Too Large&amp;quot; error), I&#039;ve segregated my logs by year:&lt;br /&gt;
&lt;br /&gt;
{{Special:PrefixIndex/Maltfield_Log/}}&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
* [[Special:LongPages|list of longest wiki articles]]&lt;br /&gt;
* [[User:Maltfield|my wiki User page]]&lt;/div&gt;</summary>
		<author><name>Maltfield</name></author>
	</entry>
	<entry>
		<id>https://wiki.eco-libre.org/index.php?title=Eco-Libre_talk:Code_of_Conduct&amp;diff=106</id>
		<title>Eco-Libre talk:Code of Conduct</title>
		<link rel="alternate" type="text/html" href="https://wiki.eco-libre.org/index.php?title=Eco-Libre_talk:Code_of_Conduct&amp;diff=106"/>
		<updated>2026-04-26T23:05:49Z</updated>

		<summary type="html">&lt;p&gt;Maltfield: added TODO section&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= TODO =&lt;br /&gt;
&lt;br /&gt;
Per [[Documentation]], this should be moved to a git repo &amp;amp; sphinx site&lt;/div&gt;</summary>
		<author><name>Maltfield</name></author>
	</entry>
	<entry>
		<id>https://wiki.eco-libre.org/index.php?title=Eco-Libre:Privacy_policy&amp;diff=105</id>
		<title>Eco-Libre:Privacy policy</title>
		<link rel="alternate" type="text/html" href="https://wiki.eco-libre.org/index.php?title=Eco-Libre:Privacy_policy&amp;diff=105"/>
		<updated>2026-04-26T22:59:17Z</updated>

		<summary type="html">&lt;p&gt;Maltfield: /* 4.     When We Disclose Your Information */ we also will copyleft all volunteer contributions, and publish them publicly&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This Privacy Policy (“Policy”) explains the information collection, use, and sharing practices of Eco-Libre (“EL”, “we,” “us,” and “our”).&lt;br /&gt;
&lt;br /&gt;
This Policy is incorporated into and part of Eco-Libre Terms of Use located at https://wiki.eco-libre.org/wiki/Eco-Libre:Terms_of_Service.&lt;br /&gt;
&lt;br /&gt;
Unless otherwise noted on a particular website or service hosted by Eco-Libre, this Policy describes and governs the information collection, use, and sharing practices of Eco-Libre with respect to your use of our websites that link to this Privacy Policy, including: https://eco-libre.org, https://www.eco-libre.org, https://phplist.eco-libre.org, and https://wiki.eco-libre.org (collectively, the “Websites”), and the services we provide through our Websites and/or host on our servers, and the services available through them are referred to as the “Services”).&lt;br /&gt;
&lt;br /&gt;
Before you use or submit any information through or in connection with the Services, please carefully review this Privacy Policy. By using any part of the Services, you understand that your information will be collected, used, and disclosed as outlined in this Privacy Policy. IF YOU DO NOT AGREE TO THIS PRIVACY POLICY, PLEASE DO NOT USE THE SERVICES.&lt;br /&gt;
&lt;br /&gt;
=== 1.     Our Principles ===&lt;br /&gt;
&lt;br /&gt;
Eco-Libre has designed this policy to be consistent with the following principles:&lt;br /&gt;
&lt;br /&gt;
*   Privacy policies should be human readable and easy to find.&lt;br /&gt;
*   Data collection, storage, and processing should be simplified as much as possible to enhance security, ensure consistency, and make the practices easy for users to understand. &lt;br /&gt;
*  Data practices should meet the reasonable expectations of users.&lt;br /&gt;
&lt;br /&gt;
=== 2.     Information We Collect ===&lt;br /&gt;
&lt;br /&gt;
We collect information in multiple ways, including when you provide information directly to us; when we passively collect information from you, such as from your browser or device; and from third parties.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Information You Provide Directly to Us&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
We will collect any information you provide to us. We may collect information from you in a variety of ways, such as when you: (a) create an online account, (b) apply for to become an Eco-Libre volunteer, (c) create an account for one of our Services, (d) make a donation or purchase, (e) register for an event, (f) apply for a scholarship, grant, or fellowship, (g) contact us or provide feedback, (h) sign a petition distributed by Eco-Libre, (i) upload your creative work or images, (j) subscribe to our newsletter, or (k) apply for a job at Eco-Libre. This information may include but is not limited to your name, email address, phone number, mailing address, payment information, photo, geographic location, and your social media handles.  We may also collect additional demographic and other information about you in connection with our conferences and events (e.g., dietary and other preferences), and the provision of this information to us by you is optional.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Information that Is Automatically Collected&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Device/Usage Information&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
We may automatically collect certain information about the computer or devices (including mobile devices or tablets) you use to access the Services. As described further below, we may collect and analyze (a) device information such as IP addresses, location information (by country and city), unique device identifiers, IMEI and TCP/IP address, browser types, browser language, operating system, mobile device carrier information, and (b) information related to the ways in which you interact with the Services, such as referring and exit web pages and URLs, platform type, the number of clicks, domain names, landing pages, pages and content viewed and the order of those pages, statistical information about the use of the Services, the amount of time spent on particular pages, the date and time you used the Services, the frequency of your use of the Services, error logs, and other similar information. As described further below, we may use third-party analytics providers and technologies, including cookies and similar tools, to assist in collecting this information.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Cookies and Other Tracking Technologies&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
We also collect data about your use of the Services through the use of Internet server logs and online tracking technologies, like cookies and/or tracking pixels. A web server log is a file where website activity is stored. A cookie is a small text file that is placed on your computer when you visit a website, that enables us to: (a) recognize your computer; (b) store your preferences and settings; (c) understand the web pages of the Services you have visited and the referral sites that have led you to our Services; (d) enhance your user experience by delivering content  specific to your inferred interests; (e) perform searches and analytics; and (f) assist with security administrative functions. Tracking pixels (sometimes referred to as web beacons or clear GIFs) are tiny electronic tags with a unique identifier embedded in websites, online ads and/or email, and that are designed to provide usage information like ad impressions or clicks, measure popularity of the Services and associated advertising, and to access user cookies. We may also use tracking technologies in our license buttons and/or icons that you can embed on other sites/services to track the website addresses where they are embedded, gauge user interaction with them, and determine the number of unique viewers of them. If you receive email from us (such as a newsletter, campaign updates, or other ongoing email communications from EL), we may use certain analytics tools, such as clear GIFs, to capture data such as whether you open our message, click on any links or banners our email contains, or otherwise interact with what we send. This data allows us to gauge the effectiveness of our communications and marketing campaigns.  As we adopt additional technologies, we may also gather additional information through other methods.&lt;br /&gt;
&lt;br /&gt;
Please note that you can change your settings to notify you when a cookie is being set or updated, or to block cookies altogether. Please consult the “Help” section of your browser for more information (e.g.,[http://windows.microsoft.com/en-US/windows-vista/Block-or-allow-cookies  Internet Explorer];[https://support.google.com/chrome/answer/95647?hl=en  Google Chrome];[http://kb.mozillazine.org/Cookies#Firefox  Mozilla Firefox]; or[http://support.apple.com/kb/PH5042  Apple Safari]). Please note that by blocking any or all cookies, you may not have access to certain features or offerings of the Services.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; Information from Third Parties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
We may also collect information about you or others through third parties. For example, if you apply for to become an Eco-Libre volunteer, we may collect information from the references or vouchers you identified in your membership application.  To the extent permitted by law, we may also collect information from third parties, including public sources, social media platforms, and marketing and market research firms. Depending on the source, this information collected from third parties could include name, contact information, demographic information, information about an individual’s employer, information to verify identity or trustworthiness, and information for other fraud or safety protection purposes.&lt;br /&gt;
&lt;br /&gt;
=== 3.     How We Use Your Information ===&lt;br /&gt;
&lt;br /&gt;
We may use the information we collect from and about you to:&lt;br /&gt;
&lt;br /&gt;
*        Fulfill the purposes for which you provided it;&lt;br /&gt;
*        Evaluate your application for a scholarship, grant, fellowship, or to become an Eco-Libre Volunteer;&lt;br /&gt;
*        Distribute funds to scholarship and grant recipients;&lt;br /&gt;
*        Provide and improve the Services, including to develop new features or services, promote EL community collaboration, take steps to secure the Services, and for technical and customer support;&lt;br /&gt;
*        Fundraise, accept donations, or process purchases of EL merchandise;&lt;br /&gt;
*        Host events and programs such as EL Summits or EL training courses;&lt;br /&gt;
*        Send you information about your relationship or transactions with us, account alerts, or other communications, such as newsletters to which you have subscribed;&lt;br /&gt;
*        Process and respond to your inquiries or to request your feedback;&lt;br /&gt;
*        Conduct analytics, research, and reporting, including to synthesize and derive insights from your use of our Services;&lt;br /&gt;
*        Evaluate job candidates during our hiring process; and&lt;br /&gt;
*        Comply with the law and protect the safety, rights, property, or security of Eco-Libre, the Services, our users, and the general public&lt;br /&gt;
&lt;br /&gt;
Please note that we may combine information that we collect from you and about you (including automatically collected information) with information we obtain about you from our affiliates and/or non-affiliated third parties, and use such combined information in accordance with this Privacy Policy.&lt;br /&gt;
&lt;br /&gt;
We may aggregate and/or de-identify information collected through the Services. We may use de-identified and/or aggregated data for any purpose, including without limitation for research and marketing purposes.&lt;br /&gt;
&lt;br /&gt;
=== 4.     When We Disclose Your Information ===&lt;br /&gt;
&lt;br /&gt;
We may disclose and/or share your information under the following circumstances:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Service Providers.&#039;&#039;&#039; We may disclose your information with third parties who perform services on our behalf, including without limitation, event management, candidate selection, marketing, customer support, data storage, data analysis and processing, and legal services.&lt;br /&gt;
&lt;br /&gt;
For example, when you apply for a scholarship, grant, fellowship, or to be selected to participate in one of our other programs, EL may share that information with the individuals designated to select participants in, and help manage, those programs, which may include people not employed by Eco-Libre.&lt;br /&gt;
&lt;br /&gt;
Or, when you register for an event, we may share your information with vendors, third party contractors, partner organizations, and volunteers for the purpose of organizing and running the event and related activities.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039; Legal Compliance and Protection of Eco-Libre and Others.&#039;&#039;&#039; We may disclose your information if required to do so by law or on a good faith belief that such disclosure is permitted by this Privacy Policy or reasonably necessary or appropriate for any of the following reasons: (a) to comply with legal process; (b) to enforce or apply our this Privacy Policy, or other contracts with you, including investigation of potential violations thereof; (c) enforce our Charter including the Code of Conduct and policies contained and incorporated therein, (d) to respond to your requests for customer service; and/or (e) to protect the rights, property, or personal safety of Eco-Libre, our agents and affiliates, our users, and the public. This includes exchanging information with other companies and organizations for fraud protection, and spam/malware prevention, and similar purposes.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Business Transfers.&#039;&#039;&#039; As we continue to develop our business, we may engage in certain business transactions, such as the transfer or sale of our assets. In such transactions, (including in contemplation of such transactions, e.g., due diligence) your information may be disclosed. If any of Eco-Libre’ assets are sold or transferred to a third party, customer information (including your email address) would likely be one of the transferred business assets.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Affiliated Companies.&#039;&#039;&#039; We may disclose your information with current or future affiliated companies.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Consent.&#039;&#039;&#039; We may disclose your information to any third parties based on your consent to do so.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Aggregate/De-identified Information.&#039;&#039;&#039; We may disclose de-identified and/or aggregated data for any purpose to third parties, including advertisers, promotional partners, and/or others.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Eco-Libre Volunteers.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
o   In connection with you Eco-Libre Volunteer application, we may provide your information to the individuals you’ve selected to vouch for you, and with those reviewing your application, including the Membership Council whose members include people not employed by Eco-Libre and who are located in various countries around the world.&lt;br /&gt;
&lt;br /&gt;
o   If you vouch for someone’s application to the Eco-Libre Volunteer program, your information will be shared with those reviewing the application, including the Membership Council, and if you provide a positive vouching statement, that statement will be shared with the applicant if and when they are admitted for membership.&lt;br /&gt;
&lt;br /&gt;
o   Once you are an Eco-Libre Volunteer, we may provide you with a public profile page,  pre-populated with certain information you provided in your application such as your name, areas of interest, images or other content you upload, which will be publicly displayed to anyone who visits the site.&lt;br /&gt;
&lt;br /&gt;
o   As an Eco-Libre Volunteer, all of your Contributions will be licensed under a copyleft license, and published publicly.&lt;br /&gt;
&lt;br /&gt;
=== 5.     Legal Basis for Processing Personal Data ===&lt;br /&gt;
&lt;br /&gt;
The laws in some jurisdictions require companies to tell you about the legal ground they rely on to use or disclose information that can be directly linked to or used to identify you. To the extent those laws apply, our legal grounds for processing such information are as follows:&lt;br /&gt;
&lt;br /&gt;
* To Honor Our Contractual Commitments to You. Much of our processing of information is to meet our contractual obligations to provide services to our users.&lt;br /&gt;
&lt;br /&gt;
* Legitimate Interests. In many cases, we handle information on the ground that it furthers our legitimate interests in ways that are not overridden by the interests or fundamental rights and freedoms of the affected individuals, these include:&lt;br /&gt;
** Customer service&lt;br /&gt;
** Marketing, advertising, and fundraising&lt;br /&gt;
** Protecting our users, personnel, and property&lt;br /&gt;
** Managing user accounts&lt;br /&gt;
** Organizing and running events and programs&lt;br /&gt;
** Analyzing and improving our business&lt;br /&gt;
** Managing legal issues&lt;br /&gt;
We may also process information for the same legitimate interests of our users and business partners.&lt;br /&gt;
&lt;br /&gt;
* Legal Compliance. We may need to use and disclose information in certain ways to comply with our legal obligations.&lt;br /&gt;
&lt;br /&gt;
* Consent. Where required by law, and in some other cases where legally permissible, we handle information on the basis of consent. Where we handle your information on the basis of consent, you have the right to withdraw your consent; in accordance with applicable law.&lt;br /&gt;
&lt;br /&gt;
=== 6.     Online Analytics ===&lt;br /&gt;
&lt;br /&gt;
We may use third-party web analytics services (such as Google Analytics) on our Services to collect and analyze the information discussed above, and to engage in auditing, research, or reporting. The information (including your IP address) collected by various analytics technologies described in the “Cookies and Other Tracking Technologies” section above will be disclosed to or collected directly by these service providers, who use the information to evaluate your use of the Services, including by noting the third-party website from which you arrive to our Site, analyzing usage trends, assisting with fraud prevention, and providing certain features to you. To prevent Google Analytics from using your information for analytics, you may install the Google Analytics Opt-out Browser Add-on by clicking [https://tools.google.com/dlpage/gaoptout here].&lt;br /&gt;
&lt;br /&gt;
=== 7.     Your Choices and Data Subject Rights ===&lt;br /&gt;
&lt;br /&gt;
You have various rights with respect to the collection and use of your information through the Services.  Those choices are as follows:&lt;br /&gt;
&lt;br /&gt;
* Email Unsubscribe – You may unsubscribe from our marketing emails at any time by clicking on the &amp;quot;opt-out completely&amp;quot; link at the bottom of each newsletter&lt;br /&gt;
* Fundraising Analytics – You may opt out of EL&#039;s fundraising analytics activities by contacting Us with your request.&lt;br /&gt;
* Account Preferences – If you have registered for an account with us through our Services, you can update your account information or adjust your email communications preferences by logging into your account and updating your settings.&lt;br /&gt;
* EU Data Subject Rights – Individuals in the European Economic Area (“EEA”) and other jurisdictions have certain legal rights (subject to applicable exceptions and limitations) to obtain confirmation of whether we hold certain information about them, to access such information, and to obtain its correction or deletion in appropriate circumstances. You may have the right to object to our handling of your information, restrict our processing of your information, and to withdraw any consent you have provided. To exercise these rights, please email Us with the nature of your request. You also have the right to go directly to the relevant supervisory or legal authority, but we encourage you to contact us so that we may resolve your concerns directly as best and as promptly as we can.&lt;br /&gt;
&lt;br /&gt;
=== 8.     International Transfers ===&lt;br /&gt;
&lt;br /&gt;
Our computer systems are currently based in Germany and Ecuador and the majority of our Volunteers are based in Ecuador or are located in various countries around the world. As described above in the “When We Disclose Your Information” section, we may share your information with trusted service providers or business partners in countries other than your country of residence, including the United States and Ecuador, in accordance with applicable law. This means that some of your information may be processed in the United States or Ecuador, which may not offer the same level of protection as the privacy laws of your jurisdiction. By providing us with your information, you acknowledge any such transfer, storage or use.&lt;br /&gt;
&lt;br /&gt;
If we provide any information about you to any third parties information processors located outside of the EEA, we will take appropriate measures to ensure such companies protect your information adequately in accordance with this Privacy Policy and other data protection laws to govern the transfers of such data.&lt;br /&gt;
&lt;br /&gt;
=== 9.     Security Measures ===&lt;br /&gt;
&lt;br /&gt;
We have implemented technical, physical, and organizational security measures to protect against the loss, misuse, and/or alteration of your information. These safeguards vary based on the sensitivity of the information that we collect and store. However, we cannot and do not guarantee that these measures will prevent every unauthorized attempt to access, use, or disclose your information since despite our efforts, no Internet and/or other electronic transmissions can be completely secure.&lt;br /&gt;
&lt;br /&gt;
=== 10.  Children ===&lt;br /&gt;
&lt;br /&gt;
The Services are intended for users over the age of 18 and are not directed at children under the age of 13. If we become aware that we have collected personal information (as defined by the Children’s Online Privacy Protection Act) from children under the age of 13, or personal data (as defined by the EU GDPR) from children under the age of 16, we will take reasonable steps to delete it as soon as practicable.&lt;br /&gt;
&lt;br /&gt;
=== 11.  Data Retention ===&lt;br /&gt;
&lt;br /&gt;
We retain the information we collect for as long as necessary to fulfill the purposes set forth in this Privacy Policy or as long as we are legally required or permitted to do so. Information may persist in copies made for backup and business continuity purposes for additional time.&lt;br /&gt;
&lt;br /&gt;
=== 12.  Third-Party Links and Services ===&lt;br /&gt;
&lt;br /&gt;
The Services may contain links to third-party websites (e.g., social media sites like Facebook and Twitter), third-party plug-ins (e.g., the Facebook “like” button and Twitter “follow” button), and other services. If you choose to use these sites or features, you may disclose your information not just to those third-parties, but also to their users and the public more generally depending on how their services function. Eco-Libre is not responsible for the content or privacy practices of such third party websites or services. The collection, use and disclosure of your information will be subject to the privacy policies of the third party websites or services, and not this Privacy Policy. We encourage you to read the privacy statements of each and every site you visit.&lt;br /&gt;
&lt;br /&gt;
=== 13.  Changes to this Privacy Policy ===&lt;br /&gt;
&lt;br /&gt;
We will continue to evaluate this Privacy Policy as we update and expand our Services, and we may make changes to the Privacy Policy accordingly. We will post any changes here and revise the date last updated above. We encourage you to check this page periodically for updates to stay informed on how we collect, use and share your information. If we make material changes to this Privacy Policy, we will provide you with notice as required by law.&lt;br /&gt;
&lt;br /&gt;
=== 14.  Questions About this Privacy Policy ===&lt;br /&gt;
&lt;br /&gt;
If you have any questions about this Privacy Policy or our privacy practices, you can contact us at: https://eco-libre.org/contact&lt;br /&gt;
&lt;br /&gt;
The Eco-Libre Privacy Policy is licensed under the [https://creativecommons.org/licenses/by-sa/4.0/ CC-BY-SA-4.0 license]. You are free to use and adapt this Privacy Policy for your own purposes. &lt;br /&gt;
&lt;br /&gt;
However, please keep in mind that this Privacy Policy may not be completely suitable for your situation. Eco-Libre strongly encourages you to seek the advice of your own attorney before repurposing this Privacy Policy on your own site.&lt;br /&gt;
&lt;br /&gt;
=== 15.  Attribution ===&lt;br /&gt;
&lt;br /&gt;
This Privacy Policy is derived from [https://creativecommons.org/privacy/ the Privacy Policy written by Creative Commons].&lt;br /&gt;
&lt;br /&gt;
=See Also=&lt;br /&gt;
* [[Eco-Libre:Terms of Service]]&lt;br /&gt;
&lt;br /&gt;
=External Links=&lt;br /&gt;
* Contact Eco-Libre https://eco-libre.org/contact&lt;br /&gt;
* Creative Commons Privacy Policy https://creativecommons.org/privacy/&lt;br /&gt;
&lt;br /&gt;
[[category: Legal]]&lt;br /&gt;
[[category: Eco-Libre Volunteer Agreements]]&lt;/div&gt;</summary>
		<author><name>Maltfield</name></author>
	</entry>
	<entry>
		<id>https://wiki.eco-libre.org/index.php?title=Eco-Libre:Code_of_Conduct&amp;diff=104</id>
		<title>Eco-Libre:Code of Conduct</title>
		<link rel="alternate" type="text/html" href="https://wiki.eco-libre.org/index.php?title=Eco-Libre:Code_of_Conduct&amp;diff=104"/>
		<updated>2026-04-26T22:44:46Z</updated>

		<summary type="html">&lt;p&gt;Maltfield: added a rule against misinformation and disinformation&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;By using this website, you agree to the following Code of Conduct:&lt;br /&gt;
&lt;br /&gt;
# Only submit content for which you have the right to submit it under the terms of our copyleft licensing (it must either be created in whole or in part by you or already licensed under a comparable copyleft)&lt;br /&gt;
# No AI content! This is a violation of rule #1.&lt;br /&gt;
# No content condoning or advocating for the oppression of members of marginalised groups, or general discrimination of groups based on characteristics like species, gender, race, disabilities, nationality, education, religion etc.&lt;br /&gt;
# No harassment, stalking, mobbing, deadnaming, misgendering, contacting users who have made it clear they do not wish to be contacted.&lt;br /&gt;
# No content that is illegal in Germany or Ecuador, no actions intended to damage this instance (performance, reputation, security).&lt;br /&gt;
# No pro-fascist or pro-Nazi content&lt;br /&gt;
# Post Content Warnings for violence, sexually explicit content, death and/or disease&lt;br /&gt;
# Whenever possible, provide image descriptions for visually impaired readers&lt;br /&gt;
# No misinformation or disinformaton&lt;br /&gt;
# Provide attribution (credit) for works that are not your own. This should include a name of the original copyright holder and a link to the source.&lt;br /&gt;
&lt;br /&gt;
=Attribution=&lt;br /&gt;
&lt;br /&gt;
This Code of Conduct is derived from the [https://meta.chaos.social/rules chaos.social e.V. rules]&lt;br /&gt;
&lt;br /&gt;
=See Also=&lt;br /&gt;
* [[Eco-Libre:Terms of Service]]&lt;br /&gt;
&lt;br /&gt;
=External Links=&lt;br /&gt;
* Contact Eco-Libre https://eco-libre.org/contact&lt;br /&gt;
* chaos.social e.V. rules https://meta.chaos.social/rules&lt;br /&gt;
&lt;br /&gt;
[[category: Legal]]&lt;br /&gt;
[[category: Eco-Libre Volunteer Agreements]]&lt;/div&gt;</summary>
		<author><name>Maltfield</name></author>
	</entry>
	<entry>
		<id>https://wiki.eco-libre.org/index.php?title=Eco-Libre:Code_of_Conduct&amp;diff=103</id>
		<title>Eco-Libre:Code of Conduct</title>
		<link rel="alternate" type="text/html" href="https://wiki.eco-libre.org/index.php?title=Eco-Libre:Code_of_Conduct&amp;diff=103"/>
		<updated>2026-04-26T22:43:50Z</updated>

		<summary type="html">&lt;p&gt;Maltfield: cleanup attribution rule and add more info&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;By using this website, you agree to the following Code of Conduct:&lt;br /&gt;
&lt;br /&gt;
# Only submit content for which you have the right to submit it under the terms of our copyleft licensing (it must either be created in whole or in part by you or already licensed under a comparable copyleft)&lt;br /&gt;
# No AI content! This is a violation of rule #1.&lt;br /&gt;
# No content condoning or advocating for the oppression of members of marginalised groups, or general discrimination of groups based on characteristics like species, gender, race, disabilities, nationality, education, religion etc.&lt;br /&gt;
# No harassment, stalking, mobbing, deadnaming, misgendering, contacting users who have made it clear they do not wish to be contacted.&lt;br /&gt;
# No content that is illegal in Germany or Ecuador, no actions intended to damage this instance (performance, reputation, security).&lt;br /&gt;
# No pro-fascist or pro-Nazi content&lt;br /&gt;
# Post Content Warnings for violence, sexually explicit content, death and/or disease&lt;br /&gt;
# Whenever possible, provide image descriptions for visually impaired readers&lt;br /&gt;
# Provide attribution (credit) for works that are not your own. This should include a name of the original copyright holder and a link to the source.&lt;br /&gt;
&lt;br /&gt;
=Attribution=&lt;br /&gt;
&lt;br /&gt;
This Code of Conduct is derived from the [https://meta.chaos.social/rules chaos.social e.V. rules]&lt;br /&gt;
&lt;br /&gt;
=See Also=&lt;br /&gt;
* [[Eco-Libre:Terms of Service]]&lt;br /&gt;
&lt;br /&gt;
=External Links=&lt;br /&gt;
* Contact Eco-Libre https://eco-libre.org/contact&lt;br /&gt;
* chaos.social e.V. rules https://meta.chaos.social/rules&lt;br /&gt;
&lt;br /&gt;
[[category: Legal]]&lt;br /&gt;
[[category: Eco-Libre Volunteer Agreements]]&lt;/div&gt;</summary>
		<author><name>Maltfield</name></author>
	</entry>
	<entry>
		<id>https://wiki.eco-libre.org/index.php?title=Eco-Libre:Code_of_Conduct&amp;diff=102</id>
		<title>Eco-Libre:Code of Conduct</title>
		<link rel="alternate" type="text/html" href="https://wiki.eco-libre.org/index.php?title=Eco-Libre:Code_of_Conduct&amp;diff=102"/>
		<updated>2026-04-26T22:42:49Z</updated>

		<summary type="html">&lt;p&gt;Maltfield: cleanup 1; we can publish stuff already licensed CC-BY-SA, even if we didn&amp;#039;t create it&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;By using this website, you agree to the following Code of Conduct:&lt;br /&gt;
&lt;br /&gt;
# Only submit content for which you have the right to submit it under the terms of our copyleft licensing (it must either be created in whole or in part by you or already licensed under a comparable copyleft)&lt;br /&gt;
# No AI content! This is a violation of rule #1.&lt;br /&gt;
# No content condoning or advocating for the oppression of members of marginalised groups, or general discrimination of groups based on characteristics like species, gender, race, disabilities, nationality, education, religion etc.&lt;br /&gt;
# No harassment, stalking, mobbing, deadnaming, misgendering, contacting users who have made it clear they do not wish to be contacted.&lt;br /&gt;
# No content that is illegal in Germany or Ecuador, no actions intended to damage this instance (performance, reputation, security).&lt;br /&gt;
# No pro-fascist or pro-Nazi content&lt;br /&gt;
# Post Content Warnings for violence, sexually explicit content, death and/or disease&lt;br /&gt;
# Whenever possible, provide image descriptions for visually impaired readers&lt;br /&gt;
# Provide attribution (credit) for works that are not your own. That includes marking AI generated content clearly as such.&lt;br /&gt;
&lt;br /&gt;
=Attribution=&lt;br /&gt;
&lt;br /&gt;
This Code of Conduct is derived from the [https://meta.chaos.social/rules chaos.social e.V. rules]&lt;br /&gt;
&lt;br /&gt;
=See Also=&lt;br /&gt;
* [[Eco-Libre:Terms of Service]]&lt;br /&gt;
&lt;br /&gt;
=External Links=&lt;br /&gt;
* Contact Eco-Libre https://eco-libre.org/contact&lt;br /&gt;
* chaos.social e.V. rules https://meta.chaos.social/rules&lt;br /&gt;
&lt;br /&gt;
[[category: Legal]]&lt;br /&gt;
[[category: Eco-Libre Volunteer Agreements]]&lt;/div&gt;</summary>
		<author><name>Maltfield</name></author>
	</entry>
	<entry>
		<id>https://wiki.eco-libre.org/index.php?title=Eco-Libre:Code_of_Conduct&amp;diff=101</id>
		<title>Eco-Libre:Code of Conduct</title>
		<link rel="alternate" type="text/html" href="https://wiki.eco-libre.org/index.php?title=Eco-Libre:Code_of_Conduct&amp;diff=101"/>
		<updated>2026-04-26T22:39:23Z</updated>

		<summary type="html">&lt;p&gt;Maltfield: cleanup CW rule text&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;By using this website, you agree to the following Code of Conduct:&lt;br /&gt;
&lt;br /&gt;
# Only submit content that was created in whole or in part by you, and for which you have the right to submit it under the terms of our copyleft licensing&lt;br /&gt;
# No AI content! This is a violation of rule #1.&lt;br /&gt;
# No content condoning or advocating for the oppression of members of marginalised groups, or general discrimination of groups based on characteristics like species, gender, race, disabilities, nationality, education, religion etc.&lt;br /&gt;
# No harassment, stalking, mobbing, deadnaming, misgendering, contacting users who have made it clear they do not wish to be contacted.&lt;br /&gt;
# No content that is illegal in Germany or Ecuador, no actions intended to damage this instance (performance, reputation, security).&lt;br /&gt;
# No pro-fascist or pro-Nazi content&lt;br /&gt;
# Post Content Warnings for violence, sexually explicit content, death and/or disease&lt;br /&gt;
# Whenever possible, provide image descriptions for visually impaired readers&lt;br /&gt;
# Provide credit for creative works that are not your own. That includes marking AI generated content clearly as such.&lt;br /&gt;
&lt;br /&gt;
=Attribution=&lt;br /&gt;
&lt;br /&gt;
This Code of Conduct is derived from the [https://meta.chaos.social/rules chaos.social e.V. rules]&lt;br /&gt;
&lt;br /&gt;
=See Also=&lt;br /&gt;
* [[Eco-Libre:Terms of Service]]&lt;br /&gt;
&lt;br /&gt;
=External Links=&lt;br /&gt;
* Contact Eco-Libre https://eco-libre.org/contact&lt;br /&gt;
* chaos.social e.V. rules https://meta.chaos.social/rules&lt;br /&gt;
&lt;br /&gt;
[[category: Legal]]&lt;br /&gt;
[[category: Eco-Libre Volunteer Agreements]]&lt;/div&gt;</summary>
		<author><name>Maltfield</name></author>
	</entry>
	<entry>
		<id>https://wiki.eco-libre.org/index.php?title=Eco-Libre:Code_of_Conduct&amp;diff=100</id>
		<title>Eco-Libre:Code of Conduct</title>
		<link rel="alternate" type="text/html" href="https://wiki.eco-libre.org/index.php?title=Eco-Libre:Code_of_Conduct&amp;diff=100"/>
		<updated>2026-04-26T22:38:39Z</updated>

		<summary type="html">&lt;p&gt;Maltfield: adjust rule on nazi content. I&amp;#039;ve already had issues with nazis in Ecuador communities. They had to be kicked-out, and explanations posted online. that was, I guess, nazi content. But condemning it. So it may be necessary to post content about fascism, which is condemning it.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;By using this website, you agree to the following Code of Conduct:&lt;br /&gt;
&lt;br /&gt;
# Only submit content that was created in whole or in part by you, and for which you have the right to submit it under the terms of our copyleft licensing&lt;br /&gt;
# No AI content! This is a violation of rule #1.&lt;br /&gt;
# No content condoning or advocating for the oppression of members of marginalised groups, or general discrimination of groups based on characteristics like species, gender, race, disabilities, nationality, education, religion etc.&lt;br /&gt;
# No harassment, stalking, mobbing, deadnaming, misgendering, contacting users who have made it clear they do not wish to be contacted.&lt;br /&gt;
# No content that is illegal in Germany or Ecuador, no actions intended to damage this instance (performance, reputation, security).&lt;br /&gt;
# No pro-fascist or pro-Nazi content&lt;br /&gt;
# Post Content Warnings for violence, sexually explicit content, and/or death/disease, and&lt;br /&gt;
# Whenever possible, provide image descriptions for visually impaired readers&lt;br /&gt;
# Provide credit for creative works that are not your own. That includes marking AI generated content clearly as such.&lt;br /&gt;
&lt;br /&gt;
=Attribution=&lt;br /&gt;
&lt;br /&gt;
This Code of Conduct is derived from the [https://meta.chaos.social/rules chaos.social e.V. rules]&lt;br /&gt;
&lt;br /&gt;
=See Also=&lt;br /&gt;
* [[Eco-Libre:Terms of Service]]&lt;br /&gt;
&lt;br /&gt;
=External Links=&lt;br /&gt;
* Contact Eco-Libre https://eco-libre.org/contact&lt;br /&gt;
* chaos.social e.V. rules https://meta.chaos.social/rules&lt;br /&gt;
&lt;br /&gt;
[[category: Legal]]&lt;br /&gt;
[[category: Eco-Libre Volunteer Agreements]]&lt;/div&gt;</summary>
		<author><name>Maltfield</name></author>
	</entry>
	<entry>
		<id>https://wiki.eco-libre.org/index.php?title=Eco-Libre:Code_of_Conduct&amp;diff=99</id>
		<title>Eco-Libre:Code of Conduct</title>
		<link rel="alternate" type="text/html" href="https://wiki.eco-libre.org/index.php?title=Eco-Libre:Code_of_Conduct&amp;diff=99"/>
		<updated>2026-04-26T22:36:19Z</updated>

		<summary type="html">&lt;p&gt;Maltfield: add categories, see also section, and external links section&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;By using this website, you agree to the following Code of Conduct:&lt;br /&gt;
&lt;br /&gt;
# Only submit content that was created in whole or in part by you, and for which you have the right to submit it under the terms of our copyleft licensing&lt;br /&gt;
# No AI content! This is a violation of rule #1.&lt;br /&gt;
# No content condoning or advocating for the oppression of members of marginalised groups, or general discrimination of groups based on characteristics like species, gender, race, disabilities, nationality, education, religion etc.&lt;br /&gt;
# No harassment, stalking, mobbing, deadnaming, misgendering, contacting users who have made it clear they do not wish to be contacted.&lt;br /&gt;
# No content that is illegal in Germany or Ecuador, no actions intended to damage this instance (performance, reputation, security).&lt;br /&gt;
# No fascist or Nazi content&lt;br /&gt;
# Post Content Warnings for violence, sexually explicit content, and/or death/disease, and&lt;br /&gt;
# Whenever possible, provide image descriptions for visually impaired readers&lt;br /&gt;
# Provide credit for creative works that are not your own. That includes marking AI generated content clearly as such.&lt;br /&gt;
&lt;br /&gt;
=Attribution=&lt;br /&gt;
&lt;br /&gt;
This Code of Conduct is derived from the [https://meta.chaos.social/rules chaos.social e.V. rules]&lt;br /&gt;
&lt;br /&gt;
=See Also=&lt;br /&gt;
* [[Eco-Libre:Terms of Service]]&lt;br /&gt;
&lt;br /&gt;
=External Links=&lt;br /&gt;
* Contact Eco-Libre https://eco-libre.org/contact&lt;br /&gt;
* chaos.social e.V. rules https://meta.chaos.social/rules&lt;br /&gt;
&lt;br /&gt;
[[category: Legal]]&lt;br /&gt;
[[category: Eco-Libre Volunteer Agreements]]&lt;/div&gt;</summary>
		<author><name>Maltfield</name></author>
	</entry>
	<entry>
		<id>https://wiki.eco-libre.org/index.php?title=Eco-Libre:Code_of_Conduct&amp;diff=98</id>
		<title>Eco-Libre:Code of Conduct</title>
		<link rel="alternate" type="text/html" href="https://wiki.eco-libre.org/index.php?title=Eco-Libre:Code_of_Conduct&amp;diff=98"/>
		<updated>2026-04-26T22:35:30Z</updated>

		<summary type="html">&lt;p&gt;Maltfield: fix heading syntax&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;By using this website, you agree to the following Code of Conduct:&lt;br /&gt;
&lt;br /&gt;
# Only submit content that was created in whole or in part by you, and for which you have the right to submit it under the terms of our copyleft licensing&lt;br /&gt;
# No AI content! This is a violation of rule #1.&lt;br /&gt;
# No content condoning or advocating for the oppression of members of marginalised groups, or general discrimination of groups based on characteristics like species, gender, race, disabilities, nationality, education, religion etc.&lt;br /&gt;
# No harassment, stalking, mobbing, deadnaming, misgendering, contacting users who have made it clear they do not wish to be contacted.&lt;br /&gt;
# No content that is illegal in Germany or Ecuador, no actions intended to damage this instance (performance, reputation, security).&lt;br /&gt;
# No fascist or Nazi content&lt;br /&gt;
# Post Content Warnings for violence, sexually explicit content, and/or death/disease, and&lt;br /&gt;
# Whenever possible, provide image descriptions for visually impaired readers&lt;br /&gt;
# Provide credit for creative works that are not your own. That includes marking AI generated content clearly as such.&lt;br /&gt;
&lt;br /&gt;
=Attribution=&lt;br /&gt;
&lt;br /&gt;
This Code of Conduct is derived from the [https://meta.chaos.social/rules chaos.social e.V. rules]&lt;/div&gt;</summary>
		<author><name>Maltfield</name></author>
	</entry>
	<entry>
		<id>https://wiki.eco-libre.org/index.php?title=Eco-Libre:Code_of_Conduct&amp;diff=97</id>
		<title>Eco-Libre:Code of Conduct</title>
		<link rel="alternate" type="text/html" href="https://wiki.eco-libre.org/index.php?title=Eco-Libre:Code_of_Conduct&amp;diff=97"/>
		<updated>2026-04-26T22:34:28Z</updated>

		<summary type="html">&lt;p&gt;Maltfield: explicitly ban AI due to copyright &amp;amp; copyleft issues&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;By using this website, you agree to the following Code of Conduct:&lt;br /&gt;
&lt;br /&gt;
# Only submit content that was created in whole or in part by you, and for which you have the right to submit it under the terms of our copyleft licensing&lt;br /&gt;
# No AI content! This is a violation of rule #1.&lt;br /&gt;
# No content condoning or advocating for the oppression of members of marginalised groups, or general discrimination of groups based on characteristics like species, gender, race, disabilities, nationality, education, religion etc.&lt;br /&gt;
# No harassment, stalking, mobbing, deadnaming, misgendering, contacting users who have made it clear they do not wish to be contacted.&lt;br /&gt;
# No content that is illegal in Germany or Ecuador, no actions intended to damage this instance (performance, reputation, security).&lt;br /&gt;
# No fascist or Nazi content&lt;br /&gt;
# Post Content Warnings for violence, sexually explicit content, and/or death/disease, and&lt;br /&gt;
# Whenever possible, provide image descriptions for visually impaired readers&lt;br /&gt;
# Provide credit for creative works that are not your own. That includes marking AI generated content clearly as such.&lt;br /&gt;
&lt;br /&gt;
# Attribution&lt;br /&gt;
&lt;br /&gt;
This Code of Conduct is derived from the [https://meta.chaos.social/rules chaos.social e.V. rules]&lt;/div&gt;</summary>
		<author><name>Maltfield</name></author>
	</entry>
	<entry>
		<id>https://wiki.eco-libre.org/index.php?title=Eco-Libre:Code_of_Conduct&amp;diff=96</id>
		<title>Eco-Libre:Code of Conduct</title>
		<link rel="alternate" type="text/html" href="https://wiki.eco-libre.org/index.php?title=Eco-Libre:Code_of_Conduct&amp;diff=96"/>
		<updated>2026-04-26T22:33:24Z</updated>

		<summary type="html">&lt;p&gt;Maltfield: added copyright notice as first one; people shouldn&amp;#039;t submit other&amp;#039;s works&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;By using this website, you agree to the following Code of Conduct:&lt;br /&gt;
&lt;br /&gt;
# Only submit content that was created in whole or in part by you, and for which you have the right to submit it under the terms of our copyleft licensing&lt;br /&gt;
# No content condoning or advocating for the oppression of members of marginalised groups, or general discrimination of groups based on characteristics like species, gender, race, disabilities, nationality, education, religion etc.&lt;br /&gt;
# No harassment, stalking, mobbing, deadnaming, misgendering, contacting users who have made it clear they do not wish to be contacted.&lt;br /&gt;
# No content that is illegal in Germany or Ecuador, no actions intended to damage this instance (performance, reputation, security).&lt;br /&gt;
# No fascist or Nazi content&lt;br /&gt;
# Post Content Warnings for violence, sexually explicit content, and/or death/disease, and&lt;br /&gt;
# Whenever possible, provide image descriptions for visually impaired readers&lt;br /&gt;
# Provide credit for creative works that are not your own. That includes marking AI generated content clearly as such.&lt;br /&gt;
&lt;br /&gt;
# Attribution&lt;br /&gt;
&lt;br /&gt;
This Code of Conduct is derived from the [https://meta.chaos.social/rules chaos.social e.V. rules]&lt;/div&gt;</summary>
		<author><name>Maltfield</name></author>
	</entry>
	<entry>
		<id>https://wiki.eco-libre.org/index.php?title=Eco-Libre:Code_of_Conduct&amp;diff=95</id>
		<title>Eco-Libre:Code of Conduct</title>
		<link rel="alternate" type="text/html" href="https://wiki.eco-libre.org/index.php?title=Eco-Libre:Code_of_Conduct&amp;diff=95"/>
		<updated>2026-04-26T22:31:12Z</updated>

		<summary type="html">&lt;p&gt;Maltfield: alt tags are good&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;By using this website, you agree to the following Code of Conduct:&lt;br /&gt;
&lt;br /&gt;
# No content condoning or advocating for the oppression of members of marginalised groups, or general discrimination of groups based on characteristics like species, gender, race, disabilities, nationality, education, religion etc.&lt;br /&gt;
# No harassment, stalking, mobbing, deadnaming, misgendering, contacting users who have made it clear they do not wish to be contacted.&lt;br /&gt;
# No content that is illegal in Germany or Ecuador, no actions intended to damage this instance (performance, reputation, security).&lt;br /&gt;
# No fascist or Nazi content&lt;br /&gt;
# Post Content Warnings for violence, sexually explicit content, and/or death/disease, and&lt;br /&gt;
# Whenever possible, provide image descriptions for visually impaired readers&lt;br /&gt;
# Provide credit for creative works that are not your own. That includes marking AI generated content clearly as such.&lt;br /&gt;
&lt;br /&gt;
# Attribution&lt;br /&gt;
&lt;br /&gt;
This Code of Conduct is derived from the [https://meta.chaos.social/rules chaos.social e.V. rules]&lt;/div&gt;</summary>
		<author><name>Maltfield</name></author>
	</entry>
	<entry>
		<id>https://wiki.eco-libre.org/index.php?title=Eco-Libre:Code_of_Conduct&amp;diff=94</id>
		<title>Eco-Libre:Code of Conduct</title>
		<link rel="alternate" type="text/html" href="https://wiki.eco-libre.org/index.php?title=Eco-Libre:Code_of_Conduct&amp;diff=94"/>
		<updated>2026-04-26T22:30:32Z</updated>

		<summary type="html">&lt;p&gt;Maltfield: we don&amp;#039;t have a &amp;quot;local timeline&amp;quot; but content warnings are always good. I can&amp;#039;t imagine we&amp;#039;ll have this content, but perhaps if someone is injured then a photo may include blood. and we should *definitely* not be afraid to document safety info! Just content warning it..&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;By using this website, you agree to the following Code of Conduct:&lt;br /&gt;
&lt;br /&gt;
# No content condoning or advocating for the oppression of members of marginalised groups, or general discrimination of groups based on characteristics like species, gender, race, disabilities, nationality, education, religion etc.&lt;br /&gt;
# No harassment, stalking, mobbing, deadnaming, misgendering, contacting users who have made it clear they do not wish to be contacted.&lt;br /&gt;
# No content that is illegal in Germany or Ecuador, no actions intended to damage this instance (performance, reputation, security).&lt;br /&gt;
# No fascist or Nazi content&lt;br /&gt;
# Post Content Warnings for violence, sexually explicit content, and/or death/disease, and&lt;br /&gt;
# When posting to the local timeline, provide image descriptions.&lt;br /&gt;
# Provide credit for creative works that are not your own. That includes marking AI generated content clearly as such.&lt;br /&gt;
&lt;br /&gt;
# Attribution&lt;br /&gt;
&lt;br /&gt;
This Code of Conduct is derived from the [https://meta.chaos.social/rules chaos.social e.V. rules]&lt;/div&gt;</summary>
		<author><name>Maltfield</name></author>
	</entry>
	<entry>
		<id>https://wiki.eco-libre.org/index.php?title=Eco-Libre:Code_of_Conduct&amp;diff=93</id>
		<title>Eco-Libre:Code of Conduct</title>
		<link rel="alternate" type="text/html" href="https://wiki.eco-libre.org/index.php?title=Eco-Libre:Code_of_Conduct&amp;diff=93"/>
		<updated>2026-04-26T22:27:54Z</updated>

		<summary type="html">&lt;p&gt;Maltfield: eh, bots are fine. and heavily used by wikipedia. why not here?&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;By using this website, you agree to the following Code of Conduct:&lt;br /&gt;
&lt;br /&gt;
# No content condoning or advocating for the oppression of members of marginalised groups, or general discrimination of groups based on characteristics like species, gender, race, disabilities, nationality, education, religion etc.&lt;br /&gt;
# No harassment, stalking, mobbing, deadnaming, misgendering, contacting users who have made it clear they do not wish to be contacted.&lt;br /&gt;
# No content that is illegal in Germany or Ecuador, no actions intended to damage this instance (performance, reputation, security).&lt;br /&gt;
# No fascist or Nazi content&lt;br /&gt;
# When posting to the local timeline, provide Content Warnings for violence, sexually explicit content, death/disease, and politics, particularly when negative or controversial (those are the larger categories, a CW might be something like “uspol, elections”).&lt;br /&gt;
# When posting to the local timeline, provide image descriptions.&lt;br /&gt;
# Provide credit for creative works that are not your own. That includes marking AI generated content clearly as such.&lt;br /&gt;
&lt;br /&gt;
# Attribution&lt;br /&gt;
&lt;br /&gt;
This Code of Conduct is derived from the [https://meta.chaos.social/rules chaos.social e.V. rules]&lt;/div&gt;</summary>
		<author><name>Maltfield</name></author>
	</entry>
	<entry>
		<id>https://wiki.eco-libre.org/index.php?title=Eco-Libre:Code_of_Conduct&amp;diff=92</id>
		<title>Eco-Libre:Code of Conduct</title>
		<link rel="alternate" type="text/html" href="https://wiki.eco-libre.org/index.php?title=Eco-Libre:Code_of_Conduct&amp;diff=92"/>
		<updated>2026-04-26T22:27:32Z</updated>

		<summary type="html">&lt;p&gt;Maltfield: simply 4&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;By using this website, you agree to the following Code of Conduct:&lt;br /&gt;
&lt;br /&gt;
# No content condoning or advocating for the oppression of members of marginalised groups, or general discrimination of groups based on characteristics like species, gender, race, disabilities, nationality, education, religion etc.&lt;br /&gt;
# No harassment, stalking, mobbing, deadnaming, misgendering, contacting users who have made it clear they do not wish to be contacted.&lt;br /&gt;
# No content that is illegal in Germany or Ecuador, no actions intended to damage this instance (performance, reputation, security).&lt;br /&gt;
# No fascist or Nazi content&lt;br /&gt;
# No automated accounts (unless approved by the moderators). This includes bots, crossposters, feedposters etc.&lt;br /&gt;
# When posting to the local timeline, provide Content Warnings for violence, sexually explicit content, death/disease, and politics, particularly when negative or controversial (those are the larger categories, a CW might be something like “uspol, elections”).&lt;br /&gt;
# When posting to the local timeline, provide image descriptions.&lt;br /&gt;
# Provide credit for creative works that are not your own. That includes marking AI generated content clearly as such.&lt;br /&gt;
&lt;br /&gt;
# Attribution&lt;br /&gt;
&lt;br /&gt;
This Code of Conduct is derived from the [https://meta.chaos.social/rules chaos.social e.V. rules]&lt;/div&gt;</summary>
		<author><name>Maltfield</name></author>
	</entry>
	<entry>
		<id>https://wiki.eco-libre.org/index.php?title=Eco-Libre:Code_of_Conduct&amp;diff=91</id>
		<title>Eco-Libre:Code of Conduct</title>
		<link rel="alternate" type="text/html" href="https://wiki.eco-libre.org/index.php?title=Eco-Libre:Code_of_Conduct&amp;diff=91"/>
		<updated>2026-04-26T22:26:58Z</updated>

		<summary type="html">&lt;p&gt;Maltfield: server is in germany. volunteers (mostly) based in Ecuador.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;By using this website, you agree to the following Code of Conduct:&lt;br /&gt;
&lt;br /&gt;
# No content condoning or advocating for the oppression of members of marginalised groups, or general discrimination of groups based on characteristics like species, gender, race, disabilities, nationality, education, religion etc.&lt;br /&gt;
# No harassment, stalking, mobbing, deadnaming, misgendering, contacting users who have made it clear they do not wish to be contacted.&lt;br /&gt;
# No content that is illegal in Germany or Ecuador, no actions intended to damage this instance (performance, reputation, security).&lt;br /&gt;
# No right or alt-right bullshit, Nazi content, conspiracy narratives.&lt;br /&gt;
# No automated accounts (unless approved by the moderators). This includes bots, crossposters, feedposters etc.&lt;br /&gt;
# When posting to the local timeline, provide Content Warnings for violence, sexually explicit content, death/disease, and politics, particularly when negative or controversial (those are the larger categories, a CW might be something like “uspol, elections”).&lt;br /&gt;
# When posting to the local timeline, provide image descriptions.&lt;br /&gt;
# Provide credit for creative works that are not your own. That includes marking AI generated content clearly as such.&lt;br /&gt;
&lt;br /&gt;
# Attribution&lt;br /&gt;
&lt;br /&gt;
This Code of Conduct is derived from the [https://meta.chaos.social/rules chaos.social e.V. rules]&lt;/div&gt;</summary>
		<author><name>Maltfield</name></author>
	</entry>
	<entry>
		<id>https://wiki.eco-libre.org/index.php?title=Eco-Libre:Code_of_Conduct&amp;diff=90</id>
		<title>Eco-Libre:Code of Conduct</title>
		<link rel="alternate" type="text/html" href="https://wiki.eco-libre.org/index.php?title=Eco-Libre:Code_of_Conduct&amp;diff=90"/>
		<updated>2026-04-26T22:26:14Z</updated>

		<summary type="html">&lt;p&gt;Maltfield: no speciesism&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;By using this website, you agree to the following Code of Conduct:&lt;br /&gt;
&lt;br /&gt;
# No content condoning or advocating for the oppression of members of marginalised groups, or general discrimination of groups based on characteristics like species, gender, race, disabilities, nationality, education, religion etc.&lt;br /&gt;
# No harassment, stalking, mobbing, deadnaming, misgendering, contacting users who have made it clear they do not wish to be contacted.&lt;br /&gt;
# Obviously: no content that is illegal in Germany, no actions intended to damage this instance (performance, reputation, security).&lt;br /&gt;
# No right or alt-right bullshit, Nazi content, conspiracy narratives.&lt;br /&gt;
# No automated accounts (unless approved by the moderators). This includes bots, crossposters, feedposters etc.&lt;br /&gt;
# When posting to the local timeline, provide Content Warnings for violence, sexually explicit content, death/disease, and politics, particularly when negative or controversial (those are the larger categories, a CW might be something like “uspol, elections”).&lt;br /&gt;
# When posting to the local timeline, provide image descriptions.&lt;br /&gt;
# Provide credit for creative works that are not your own. That includes marking AI generated content clearly as such.&lt;br /&gt;
&lt;br /&gt;
# Attribution&lt;br /&gt;
&lt;br /&gt;
This Code of Conduct is derived from the [https://meta.chaos.social/rules chaos.social e.V. rules]&lt;/div&gt;</summary>
		<author><name>Maltfield</name></author>
	</entry>
	<entry>
		<id>https://wiki.eco-libre.org/index.php?title=Eco-Libre:Code_of_Conduct&amp;diff=89</id>
		<title>Eco-Libre:Code of Conduct</title>
		<link rel="alternate" type="text/html" href="https://wiki.eco-libre.org/index.php?title=Eco-Libre:Code_of_Conduct&amp;diff=89"/>
		<updated>2026-04-26T22:25:49Z</updated>

		<summary type="html">&lt;p&gt;Maltfield: fix syntax of list&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;By using this website, you agree to the following Code of Conduct:&lt;br /&gt;
&lt;br /&gt;
# No content condoning or advocating for the oppression of members of marginalised groups, or general discrimination of groups based on characteristics like gender, race, disabilities, nationality, education, religion etc.&lt;br /&gt;
# No harassment, stalking, mobbing, deadnaming, misgendering, contacting users who have made it clear they do not wish to be contacted.&lt;br /&gt;
# Obviously: no content that is illegal in Germany, no actions intended to damage this instance (performance, reputation, security).&lt;br /&gt;
# No right or alt-right bullshit, Nazi content, conspiracy narratives.&lt;br /&gt;
# No automated accounts (unless approved by the moderators). This includes bots, crossposters, feedposters etc.&lt;br /&gt;
# When posting to the local timeline, provide Content Warnings for violence, sexually explicit content, death/disease, and politics, particularly when negative or controversial (those are the larger categories, a CW might be something like “uspol, elections”).&lt;br /&gt;
# When posting to the local timeline, provide image descriptions.&lt;br /&gt;
# Provide credit for creative works that are not your own. That includes marking AI generated content clearly as such.&lt;br /&gt;
&lt;br /&gt;
# Attribution&lt;br /&gt;
&lt;br /&gt;
This Code of Conduct is derived from the [https://meta.chaos.social/rules chaos.social e.V. rules]&lt;/div&gt;</summary>
		<author><name>Maltfield</name></author>
	</entry>
	<entry>
		<id>https://wiki.eco-libre.org/index.php?title=Eco-Libre:Code_of_Conduct&amp;diff=88</id>
		<title>Eco-Libre:Code of Conduct</title>
		<link rel="alternate" type="text/html" href="https://wiki.eco-libre.org/index.php?title=Eco-Libre:Code_of_Conduct&amp;diff=88"/>
		<updated>2026-04-26T22:25:27Z</updated>

		<summary type="html">&lt;p&gt;Maltfield: cleanup syntax&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;By using this website, you agree to the following Code of Conduct:&lt;br /&gt;
&lt;br /&gt;
# No content condoning or advocating for the oppression of members of marginalised groups, or general discrimination of groups based on characteristics like gender, race, disabilities, nationality, education, religion etc.&lt;br /&gt;
&lt;br /&gt;
#No harassment, stalking, mobbing, deadnaming, misgendering, contacting users who have made it clear they do not wish to be contacted.&lt;br /&gt;
&lt;br /&gt;
#Obviously: no content that is illegal in Germany, no actions intended to damage this instance (performance, reputation, security).&lt;br /&gt;
&lt;br /&gt;
# No right or alt-right bullshit, Nazi content, conspiracy narratives.&lt;br /&gt;
&lt;br /&gt;
# No automated accounts (unless approved by the moderators). This includes bots, crossposters, feedposters etc.&lt;br /&gt;
&lt;br /&gt;
# When posting to the local timeline, provide Content Warnings for violence, sexually explicit content, death/disease, and politics, particularly when negative or controversial (those are the larger categories, a CW might be something like “uspol, elections”).&lt;br /&gt;
&lt;br /&gt;
# When posting to the local timeline, provide image descriptions.&lt;br /&gt;
&lt;br /&gt;
# Provide credit for creative works that are not your own. That includes marking AI generated content clearly as such.&lt;br /&gt;
&lt;br /&gt;
# Attribution&lt;br /&gt;
&lt;br /&gt;
This Code of Conduct is derived from the [https://meta.chaos.social/rules chaos.social e.V. rules]&lt;/div&gt;</summary>
		<author><name>Maltfield</name></author>
	</entry>
	<entry>
		<id>https://wiki.eco-libre.org/index.php?title=Eco-Libre:Code_of_Conduct&amp;diff=87</id>
		<title>Eco-Libre:Code of Conduct</title>
		<link rel="alternate" type="text/html" href="https://wiki.eco-libre.org/index.php?title=Eco-Libre:Code_of_Conduct&amp;diff=87"/>
		<updated>2026-04-26T22:24:06Z</updated>

		<summary type="html">&lt;p&gt;Maltfield: initial rules, copied directly from chaos.social (licensed CC-BY-SA)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;    No content condoning or advocating for the oppression of members of marginalised groups, or general discrimination of groups based on characteristics like gender, race, disabilities, nationality, education, religion etc.&lt;br /&gt;
    No harassment, stalking, mobbing, deadnaming, misgendering, contacting users who have made it clear they do not wish to be contacted.&lt;br /&gt;
    Obviously: no content that is illegal in Germany, no actions intended to damage this instance (performance, reputation, security).&lt;br /&gt;
    No right or alt-right bullshit, Nazi content, conspiracy narratives.&lt;br /&gt;
    No automated accounts (unless approved by the moderators). This includes bots, crossposters, feedposters etc.&lt;br /&gt;
    When posting to the local timeline, provide Content Warnings for violence, sexually explicit content, death/disease, and politics, particularly when negative or controversial (those are the larger categories, a CW might be something like “uspol, elections”).&lt;br /&gt;
    When posting to the local timeline, provide image descriptions.&lt;br /&gt;
    Provide credit for creative works that are not your own. That includes marking AI generated content clearly as such.&lt;br /&gt;
&lt;br /&gt;
# Attribution&lt;br /&gt;
&lt;br /&gt;
This Code of Conduct is derived from the [https://meta.chaos.social/rules chaos.social e.V. rules]&lt;/div&gt;</summary>
		<author><name>Maltfield</name></author>
	</entry>
	<entry>
		<id>https://wiki.eco-libre.org/index.php?title=Eco-Libre:Terms_of_Service&amp;diff=86</id>
		<title>Eco-Libre:Terms of Service</title>
		<link rel="alternate" type="text/html" href="https://wiki.eco-libre.org/index.php?title=Eco-Libre:Terms_of_Service&amp;diff=86"/>
		<updated>2026-04-26T22:09:42Z</updated>

		<summary type="html">&lt;p&gt;Maltfield: adding categories&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
Developer Certificate of Origin&lt;br /&gt;
Version 1.1&lt;br /&gt;
&lt;br /&gt;
Copyright (C) 2004, 2006 The Linux Foundation and its contributors.&lt;br /&gt;
&lt;br /&gt;
Everyone is permitted to copy and distribute verbatim copies of this&lt;br /&gt;
license document, but changing it is not allowed.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Developer&#039;s Certificate of Origin 1.1&lt;br /&gt;
&lt;br /&gt;
By making a contribution to this project, I certify that:&lt;br /&gt;
&lt;br /&gt;
(a) The contribution was created in whole or in part by me and I&lt;br /&gt;
    have the right to submit it under the open source license&lt;br /&gt;
    indicated in the file; or&lt;br /&gt;
&lt;br /&gt;
(b) The contribution is based upon previous work that, to the best&lt;br /&gt;
    of my knowledge, is covered under an appropriate open source&lt;br /&gt;
    license and I have the right under that license to submit that&lt;br /&gt;
    work with modifications, whether created in whole or in part&lt;br /&gt;
    by me, under the same open source license (unless I am&lt;br /&gt;
    permitted to submit under a different license), as indicated&lt;br /&gt;
    in the file; or&lt;br /&gt;
&lt;br /&gt;
(c) The contribution was provided directly to me by some other&lt;br /&gt;
    person who certified (a), (b) or (c) and I have not modified&lt;br /&gt;
    it.&lt;br /&gt;
&lt;br /&gt;
(d) I understand and agree that this project and the contribution&lt;br /&gt;
    are public and that a record of the contribution (including all&lt;br /&gt;
    personal information I submit with it, including my sign-off) is&lt;br /&gt;
    maintained indefinitely and may be redistributed consistent with&lt;br /&gt;
    this project or the open source license(s) involved.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Privacy Policy=&lt;br /&gt;
&lt;br /&gt;
By using this website, you agree to our [[Eco-Libre:Privacy policy|Privacy Policy]]&lt;br /&gt;
&lt;br /&gt;
=Code of Conduct=&lt;br /&gt;
&lt;br /&gt;
By using this website, you agree to our [[Eco-Libre:Code_of_Conduct|Code of Conduct]]&lt;br /&gt;
&lt;br /&gt;
=Attribution=&lt;br /&gt;
* Linux Foundation - https://developercertificate.org/&lt;br /&gt;
&lt;br /&gt;
=License=&lt;br /&gt;
&lt;br /&gt;
Copyright (C) 2023 Michael Altfield and Eco-Libre&lt;br /&gt;
&lt;br /&gt;
The contents of this wiki are under the [https://creativecommons.org/licenses/by-sa/4.0/ CC BY-SA version 4.0] license.&lt;br /&gt;
&lt;br /&gt;
The contents here is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the CC BY-SA License for more details.&lt;br /&gt;
&lt;br /&gt;
=Further Reading=&lt;br /&gt;
* CERN&#039;s DCO vs CLA https://ospo.docs.cern.ch/recommendations/CLAs-and-DCOs/&lt;br /&gt;
* https://wiki.eco-libre.org/wiki/Maltfield_Log/2026&lt;br /&gt;
&lt;br /&gt;
[[category: Legal]]&lt;br /&gt;
[[category: Eco-Libre Volunteer Agreements]]&lt;/div&gt;</summary>
		<author><name>Maltfield</name></author>
	</entry>
	<entry>
		<id>https://wiki.eco-libre.org/index.php?title=Eco-Libre_talk:Privacy_policy&amp;diff=85</id>
		<title>Eco-Libre talk:Privacy policy</title>
		<link rel="alternate" type="text/html" href="https://wiki.eco-libre.org/index.php?title=Eco-Libre_talk:Privacy_policy&amp;diff=85"/>
		<updated>2026-04-26T22:08:23Z</updated>

		<summary type="html">&lt;p&gt;Maltfield: add TODO section about replacing this on the wiki with git, which should be the place for all our mature docs&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= TODO =&lt;br /&gt;
&lt;br /&gt;
Per [[Documentation]], this should be moved to a git repo &amp;amp; sphinx site&lt;/div&gt;</summary>
		<author><name>Maltfield</name></author>
	</entry>
	<entry>
		<id>https://wiki.eco-libre.org/index.php?title=Eco-Libre:Privacy_policy&amp;diff=84</id>
		<title>Eco-Libre:Privacy policy</title>
		<link rel="alternate" type="text/html" href="https://wiki.eco-libre.org/index.php?title=Eco-Libre:Privacy_policy&amp;diff=84"/>
		<updated>2026-04-26T22:06:53Z</updated>

		<summary type="html">&lt;p&gt;Maltfield: /* See Also */ fix ToS broken link&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This Privacy Policy (“Policy”) explains the information collection, use, and sharing practices of Eco-Libre (“EL”, “we,” “us,” and “our”).&lt;br /&gt;
&lt;br /&gt;
This Policy is incorporated into and part of Eco-Libre Terms of Use located at https://wiki.eco-libre.org/wiki/Eco-Libre:Terms_of_Service.&lt;br /&gt;
&lt;br /&gt;
Unless otherwise noted on a particular website or service hosted by Eco-Libre, this Policy describes and governs the information collection, use, and sharing practices of Eco-Libre with respect to your use of our websites that link to this Privacy Policy, including: https://eco-libre.org, https://www.eco-libre.org, https://phplist.eco-libre.org, and https://wiki.eco-libre.org (collectively, the “Websites”), and the services we provide through our Websites and/or host on our servers, and the services available through them are referred to as the “Services”).&lt;br /&gt;
&lt;br /&gt;
Before you use or submit any information through or in connection with the Services, please carefully review this Privacy Policy. By using any part of the Services, you understand that your information will be collected, used, and disclosed as outlined in this Privacy Policy. IF YOU DO NOT AGREE TO THIS PRIVACY POLICY, PLEASE DO NOT USE THE SERVICES.&lt;br /&gt;
&lt;br /&gt;
=== 1.     Our Principles ===&lt;br /&gt;
&lt;br /&gt;
Eco-Libre has designed this policy to be consistent with the following principles:&lt;br /&gt;
&lt;br /&gt;
*   Privacy policies should be human readable and easy to find.&lt;br /&gt;
*   Data collection, storage, and processing should be simplified as much as possible to enhance security, ensure consistency, and make the practices easy for users to understand. &lt;br /&gt;
*  Data practices should meet the reasonable expectations of users.&lt;br /&gt;
&lt;br /&gt;
=== 2.     Information We Collect ===&lt;br /&gt;
&lt;br /&gt;
We collect information in multiple ways, including when you provide information directly to us; when we passively collect information from you, such as from your browser or device; and from third parties.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Information You Provide Directly to Us&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
We will collect any information you provide to us. We may collect information from you in a variety of ways, such as when you: (a) create an online account, (b) apply for to become an Eco-Libre volunteer, (c) create an account for one of our Services, (d) make a donation or purchase, (e) register for an event, (f) apply for a scholarship, grant, or fellowship, (g) contact us or provide feedback, (h) sign a petition distributed by Eco-Libre, (i) upload your creative work or images, (j) subscribe to our newsletter, or (k) apply for a job at Eco-Libre. This information may include but is not limited to your name, email address, phone number, mailing address, payment information, photo, geographic location, and your social media handles.  We may also collect additional demographic and other information about you in connection with our conferences and events (e.g., dietary and other preferences), and the provision of this information to us by you is optional.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Information that Is Automatically Collected&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Device/Usage Information&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
We may automatically collect certain information about the computer or devices (including mobile devices or tablets) you use to access the Services. As described further below, we may collect and analyze (a) device information such as IP addresses, location information (by country and city), unique device identifiers, IMEI and TCP/IP address, browser types, browser language, operating system, mobile device carrier information, and (b) information related to the ways in which you interact with the Services, such as referring and exit web pages and URLs, platform type, the number of clicks, domain names, landing pages, pages and content viewed and the order of those pages, statistical information about the use of the Services, the amount of time spent on particular pages, the date and time you used the Services, the frequency of your use of the Services, error logs, and other similar information. As described further below, we may use third-party analytics providers and technologies, including cookies and similar tools, to assist in collecting this information.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Cookies and Other Tracking Technologies&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
We also collect data about your use of the Services through the use of Internet server logs and online tracking technologies, like cookies and/or tracking pixels. A web server log is a file where website activity is stored. A cookie is a small text file that is placed on your computer when you visit a website, that enables us to: (a) recognize your computer; (b) store your preferences and settings; (c) understand the web pages of the Services you have visited and the referral sites that have led you to our Services; (d) enhance your user experience by delivering content  specific to your inferred interests; (e) perform searches and analytics; and (f) assist with security administrative functions. Tracking pixels (sometimes referred to as web beacons or clear GIFs) are tiny electronic tags with a unique identifier embedded in websites, online ads and/or email, and that are designed to provide usage information like ad impressions or clicks, measure popularity of the Services and associated advertising, and to access user cookies. We may also use tracking technologies in our license buttons and/or icons that you can embed on other sites/services to track the website addresses where they are embedded, gauge user interaction with them, and determine the number of unique viewers of them. If you receive email from us (such as a newsletter, campaign updates, or other ongoing email communications from EL), we may use certain analytics tools, such as clear GIFs, to capture data such as whether you open our message, click on any links or banners our email contains, or otherwise interact with what we send. This data allows us to gauge the effectiveness of our communications and marketing campaigns.  As we adopt additional technologies, we may also gather additional information through other methods.&lt;br /&gt;
&lt;br /&gt;
Please note that you can change your settings to notify you when a cookie is being set or updated, or to block cookies altogether. Please consult the “Help” section of your browser for more information (e.g.,[http://windows.microsoft.com/en-US/windows-vista/Block-or-allow-cookies  Internet Explorer];[https://support.google.com/chrome/answer/95647?hl=en  Google Chrome];[http://kb.mozillazine.org/Cookies#Firefox  Mozilla Firefox]; or[http://support.apple.com/kb/PH5042  Apple Safari]). Please note that by blocking any or all cookies, you may not have access to certain features or offerings of the Services.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; Information from Third Parties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
We may also collect information about you or others through third parties. For example, if you apply for to become an Eco-Libre volunteer, we may collect information from the references or vouchers you identified in your membership application.  To the extent permitted by law, we may also collect information from third parties, including public sources, social media platforms, and marketing and market research firms. Depending on the source, this information collected from third parties could include name, contact information, demographic information, information about an individual’s employer, information to verify identity or trustworthiness, and information for other fraud or safety protection purposes.&lt;br /&gt;
&lt;br /&gt;
=== 3.     How We Use Your Information ===&lt;br /&gt;
&lt;br /&gt;
We may use the information we collect from and about you to:&lt;br /&gt;
&lt;br /&gt;
*        Fulfill the purposes for which you provided it;&lt;br /&gt;
*        Evaluate your application for a scholarship, grant, fellowship, or to become an Eco-Libre Volunteer;&lt;br /&gt;
*        Distribute funds to scholarship and grant recipients;&lt;br /&gt;
*        Provide and improve the Services, including to develop new features or services, promote EL community collaboration, take steps to secure the Services, and for technical and customer support;&lt;br /&gt;
*        Fundraise, accept donations, or process purchases of EL merchandise;&lt;br /&gt;
*        Host events and programs such as EL Summits or EL training courses;&lt;br /&gt;
*        Send you information about your relationship or transactions with us, account alerts, or other communications, such as newsletters to which you have subscribed;&lt;br /&gt;
*        Process and respond to your inquiries or to request your feedback;&lt;br /&gt;
*        Conduct analytics, research, and reporting, including to synthesize and derive insights from your use of our Services;&lt;br /&gt;
*        Evaluate job candidates during our hiring process; and&lt;br /&gt;
*        Comply with the law and protect the safety, rights, property, or security of Eco-Libre, the Services, our users, and the general public&lt;br /&gt;
&lt;br /&gt;
Please note that we may combine information that we collect from you and about you (including automatically collected information) with information we obtain about you from our affiliates and/or non-affiliated third parties, and use such combined information in accordance with this Privacy Policy.&lt;br /&gt;
&lt;br /&gt;
We may aggregate and/or de-identify information collected through the Services. We may use de-identified and/or aggregated data for any purpose, including without limitation for research and marketing purposes.&lt;br /&gt;
&lt;br /&gt;
=== 4.     When We Disclose Your Information ===&lt;br /&gt;
&lt;br /&gt;
We may disclose and/or share your information under the following circumstances:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Service Providers.&#039;&#039;&#039; We may disclose your information with third parties who perform services on our behalf, including without limitation, event management, candidate selection, marketing, customer support, data storage, data analysis and processing, and legal services.&lt;br /&gt;
&lt;br /&gt;
For example, when you apply for a scholarship, grant, fellowship, or to be selected to participate in one of our other programs, EL may share that information with the individuals designated to select participants in, and help manage, those programs, which may include people not employed by Eco-Libre.&lt;br /&gt;
&lt;br /&gt;
Or, when you register for an event, we may share your information with vendors, third party contractors, partner organizations, and volunteers for the purpose of organizing and running the event and related activities.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039; Legal Compliance and Protection of Eco-Libre and Others.&#039;&#039;&#039; We may disclose your information if required to do so by law or on a good faith belief that such disclosure is permitted by this Privacy Policy or reasonably necessary or appropriate for any of the following reasons: (a) to comply with legal process; (b) to enforce or apply our this Privacy Policy, or other contracts with you, including investigation of potential violations thereof; (c) enforce our Charter including the Code of Conduct and policies contained and incorporated therein, (d) to respond to your requests for customer service; and/or (e) to protect the rights, property, or personal safety of Eco-Libre, our agents and affiliates, our users, and the public. This includes exchanging information with other companies and organizations for fraud protection, and spam/malware prevention, and similar purposes.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Business Transfers.&#039;&#039;&#039; As we continue to develop our business, we may engage in certain business transactions, such as the transfer or sale of our assets. In such transactions, (including in contemplation of such transactions, e.g., due diligence) your information may be disclosed. If any of Eco-Libre’ assets are sold or transferred to a third party, customer information (including your email address) would likely be one of the transferred business assets.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Affiliated Companies.&#039;&#039;&#039; We may disclose your information with current or future affiliated companies.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Consent.&#039;&#039;&#039; We may disclose your information to any third parties based on your consent to do so.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Aggregate/De-identified Information.&#039;&#039;&#039; We may disclose de-identified and/or aggregated data for any purpose to third parties, including advertisers, promotional partners, and/or others.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Eco-Libre Volunteers.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
o   In connection with you Eco-Libre Volunteer application, we may provide your information to the individuals you’ve selected to vouch for you, and with those reviewing your application, including the Membership Council whose members include people not employed by Eco-Libre and who are located in various countries around the world.&lt;br /&gt;
&lt;br /&gt;
o   If you vouch for someone’s application to the Eco-Libre Volunteer program, your information will be shared with those reviewing the application, including the Membership Council, and if you provide a positive vouching statement, that statement will be shared with the applicant if and when they are admitted for membership.&lt;br /&gt;
&lt;br /&gt;
o   Once you are an Eco-Libre Volunteer, we may provide you with a public profile page,  pre-populated with certain information you provided in your application such as your name, areas of interest, images or other content you upload, which will be publicly displayed to anyone who visits the site.&lt;br /&gt;
&lt;br /&gt;
=== 5.     Legal Basis for Processing Personal Data ===&lt;br /&gt;
&lt;br /&gt;
The laws in some jurisdictions require companies to tell you about the legal ground they rely on to use or disclose information that can be directly linked to or used to identify you. To the extent those laws apply, our legal grounds for processing such information are as follows:&lt;br /&gt;
&lt;br /&gt;
* To Honor Our Contractual Commitments to You. Much of our processing of information is to meet our contractual obligations to provide services to our users.&lt;br /&gt;
&lt;br /&gt;
* Legitimate Interests. In many cases, we handle information on the ground that it furthers our legitimate interests in ways that are not overridden by the interests or fundamental rights and freedoms of the affected individuals, these include:&lt;br /&gt;
** Customer service&lt;br /&gt;
** Marketing, advertising, and fundraising&lt;br /&gt;
** Protecting our users, personnel, and property&lt;br /&gt;
** Managing user accounts&lt;br /&gt;
** Organizing and running events and programs&lt;br /&gt;
** Analyzing and improving our business&lt;br /&gt;
** Managing legal issues&lt;br /&gt;
We may also process information for the same legitimate interests of our users and business partners.&lt;br /&gt;
&lt;br /&gt;
* Legal Compliance. We may need to use and disclose information in certain ways to comply with our legal obligations.&lt;br /&gt;
&lt;br /&gt;
* Consent. Where required by law, and in some other cases where legally permissible, we handle information on the basis of consent. Where we handle your information on the basis of consent, you have the right to withdraw your consent; in accordance with applicable law.&lt;br /&gt;
&lt;br /&gt;
=== 6.     Online Analytics ===&lt;br /&gt;
&lt;br /&gt;
We may use third-party web analytics services (such as Google Analytics) on our Services to collect and analyze the information discussed above, and to engage in auditing, research, or reporting. The information (including your IP address) collected by various analytics technologies described in the “Cookies and Other Tracking Technologies” section above will be disclosed to or collected directly by these service providers, who use the information to evaluate your use of the Services, including by noting the third-party website from which you arrive to our Site, analyzing usage trends, assisting with fraud prevention, and providing certain features to you. To prevent Google Analytics from using your information for analytics, you may install the Google Analytics Opt-out Browser Add-on by clicking [https://tools.google.com/dlpage/gaoptout here].&lt;br /&gt;
&lt;br /&gt;
=== 7.     Your Choices and Data Subject Rights ===&lt;br /&gt;
&lt;br /&gt;
You have various rights with respect to the collection and use of your information through the Services.  Those choices are as follows:&lt;br /&gt;
&lt;br /&gt;
* Email Unsubscribe – You may unsubscribe from our marketing emails at any time by clicking on the &amp;quot;opt-out completely&amp;quot; link at the bottom of each newsletter&lt;br /&gt;
* Fundraising Analytics – You may opt out of EL&#039;s fundraising analytics activities by contacting Us with your request.&lt;br /&gt;
* Account Preferences – If you have registered for an account with us through our Services, you can update your account information or adjust your email communications preferences by logging into your account and updating your settings.&lt;br /&gt;
* EU Data Subject Rights – Individuals in the European Economic Area (“EEA”) and other jurisdictions have certain legal rights (subject to applicable exceptions and limitations) to obtain confirmation of whether we hold certain information about them, to access such information, and to obtain its correction or deletion in appropriate circumstances. You may have the right to object to our handling of your information, restrict our processing of your information, and to withdraw any consent you have provided. To exercise these rights, please email Us with the nature of your request. You also have the right to go directly to the relevant supervisory or legal authority, but we encourage you to contact us so that we may resolve your concerns directly as best and as promptly as we can.&lt;br /&gt;
&lt;br /&gt;
=== 8.     International Transfers ===&lt;br /&gt;
&lt;br /&gt;
Our computer systems are currently based in Germany and Ecuador and the majority of our Volunteers are based in Ecuador or are located in various countries around the world. As described above in the “When We Disclose Your Information” section, we may share your information with trusted service providers or business partners in countries other than your country of residence, including the United States and Ecuador, in accordance with applicable law. This means that some of your information may be processed in the United States or Ecuador, which may not offer the same level of protection as the privacy laws of your jurisdiction. By providing us with your information, you acknowledge any such transfer, storage or use.&lt;br /&gt;
&lt;br /&gt;
If we provide any information about you to any third parties information processors located outside of the EEA, we will take appropriate measures to ensure such companies protect your information adequately in accordance with this Privacy Policy and other data protection laws to govern the transfers of such data.&lt;br /&gt;
&lt;br /&gt;
=== 9.     Security Measures ===&lt;br /&gt;
&lt;br /&gt;
We have implemented technical, physical, and organizational security measures to protect against the loss, misuse, and/or alteration of your information. These safeguards vary based on the sensitivity of the information that we collect and store. However, we cannot and do not guarantee that these measures will prevent every unauthorized attempt to access, use, or disclose your information since despite our efforts, no Internet and/or other electronic transmissions can be completely secure.&lt;br /&gt;
&lt;br /&gt;
=== 10.  Children ===&lt;br /&gt;
&lt;br /&gt;
The Services are intended for users over the age of 18 and are not directed at children under the age of 13. If we become aware that we have collected personal information (as defined by the Children’s Online Privacy Protection Act) from children under the age of 13, or personal data (as defined by the EU GDPR) from children under the age of 16, we will take reasonable steps to delete it as soon as practicable.&lt;br /&gt;
&lt;br /&gt;
=== 11.  Data Retention ===&lt;br /&gt;
&lt;br /&gt;
We retain the information we collect for as long as necessary to fulfill the purposes set forth in this Privacy Policy or as long as we are legally required or permitted to do so. Information may persist in copies made for backup and business continuity purposes for additional time.&lt;br /&gt;
&lt;br /&gt;
=== 12.  Third-Party Links and Services ===&lt;br /&gt;
&lt;br /&gt;
The Services may contain links to third-party websites (e.g., social media sites like Facebook and Twitter), third-party plug-ins (e.g., the Facebook “like” button and Twitter “follow” button), and other services. If you choose to use these sites or features, you may disclose your information not just to those third-parties, but also to their users and the public more generally depending on how their services function. Eco-Libre is not responsible for the content or privacy practices of such third party websites or services. The collection, use and disclosure of your information will be subject to the privacy policies of the third party websites or services, and not this Privacy Policy. We encourage you to read the privacy statements of each and every site you visit.&lt;br /&gt;
&lt;br /&gt;
=== 13.  Changes to this Privacy Policy ===&lt;br /&gt;
&lt;br /&gt;
We will continue to evaluate this Privacy Policy as we update and expand our Services, and we may make changes to the Privacy Policy accordingly. We will post any changes here and revise the date last updated above. We encourage you to check this page periodically for updates to stay informed on how we collect, use and share your information. If we make material changes to this Privacy Policy, we will provide you with notice as required by law.&lt;br /&gt;
&lt;br /&gt;
=== 14.  Questions About this Privacy Policy ===&lt;br /&gt;
&lt;br /&gt;
If you have any questions about this Privacy Policy or our privacy practices, you can contact us at: https://eco-libre.org/contact&lt;br /&gt;
&lt;br /&gt;
The Eco-Libre Privacy Policy is licensed under the [https://creativecommons.org/licenses/by-sa/4.0/ CC-BY-SA-4.0 license]. You are free to use and adapt this Privacy Policy for your own purposes. &lt;br /&gt;
&lt;br /&gt;
However, please keep in mind that this Privacy Policy may not be completely suitable for your situation. Eco-Libre strongly encourages you to seek the advice of your own attorney before repurposing this Privacy Policy on your own site.&lt;br /&gt;
&lt;br /&gt;
=== 15.  Attribution ===&lt;br /&gt;
&lt;br /&gt;
This Privacy Policy is derived from [https://creativecommons.org/privacy/ the Privacy Policy written by Creative Commons].&lt;br /&gt;
&lt;br /&gt;
=See Also=&lt;br /&gt;
* [[Eco-Libre:Terms of Service]]&lt;br /&gt;
&lt;br /&gt;
=External Links=&lt;br /&gt;
* Contact Eco-Libre https://eco-libre.org/contact&lt;br /&gt;
* Creative Commons Privacy Policy https://creativecommons.org/privacy/&lt;br /&gt;
&lt;br /&gt;
[[category: Legal]]&lt;br /&gt;
[[category: Eco-Libre Volunteer Agreements]]&lt;/div&gt;</summary>
		<author><name>Maltfield</name></author>
	</entry>
	<entry>
		<id>https://wiki.eco-libre.org/index.php?title=Eco-Libre:Privacy_policy&amp;diff=83</id>
		<title>Eco-Libre:Privacy policy</title>
		<link rel="alternate" type="text/html" href="https://wiki.eco-libre.org/index.php?title=Eco-Libre:Privacy_policy&amp;diff=83"/>
		<updated>2026-04-26T22:06:30Z</updated>

		<summary type="html">&lt;p&gt;Maltfield: add &amp;quot;see also&amp;quot; section that links back to the ToS, which will then link to all the website&amp;#039;s agreements (eg CoC)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This Privacy Policy (“Policy”) explains the information collection, use, and sharing practices of Eco-Libre (“EL”, “we,” “us,” and “our”).&lt;br /&gt;
&lt;br /&gt;
This Policy is incorporated into and part of Eco-Libre Terms of Use located at https://wiki.eco-libre.org/wiki/Eco-Libre:Terms_of_Service.&lt;br /&gt;
&lt;br /&gt;
Unless otherwise noted on a particular website or service hosted by Eco-Libre, this Policy describes and governs the information collection, use, and sharing practices of Eco-Libre with respect to your use of our websites that link to this Privacy Policy, including: https://eco-libre.org, https://www.eco-libre.org, https://phplist.eco-libre.org, and https://wiki.eco-libre.org (collectively, the “Websites”), and the services we provide through our Websites and/or host on our servers, and the services available through them are referred to as the “Services”).&lt;br /&gt;
&lt;br /&gt;
Before you use or submit any information through or in connection with the Services, please carefully review this Privacy Policy. By using any part of the Services, you understand that your information will be collected, used, and disclosed as outlined in this Privacy Policy. IF YOU DO NOT AGREE TO THIS PRIVACY POLICY, PLEASE DO NOT USE THE SERVICES.&lt;br /&gt;
&lt;br /&gt;
=== 1.     Our Principles ===&lt;br /&gt;
&lt;br /&gt;
Eco-Libre has designed this policy to be consistent with the following principles:&lt;br /&gt;
&lt;br /&gt;
*   Privacy policies should be human readable and easy to find.&lt;br /&gt;
*   Data collection, storage, and processing should be simplified as much as possible to enhance security, ensure consistency, and make the practices easy for users to understand. &lt;br /&gt;
*  Data practices should meet the reasonable expectations of users.&lt;br /&gt;
&lt;br /&gt;
=== 2.     Information We Collect ===&lt;br /&gt;
&lt;br /&gt;
We collect information in multiple ways, including when you provide information directly to us; when we passively collect information from you, such as from your browser or device; and from third parties.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Information You Provide Directly to Us&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
We will collect any information you provide to us. We may collect information from you in a variety of ways, such as when you: (a) create an online account, (b) apply for to become an Eco-Libre volunteer, (c) create an account for one of our Services, (d) make a donation or purchase, (e) register for an event, (f) apply for a scholarship, grant, or fellowship, (g) contact us or provide feedback, (h) sign a petition distributed by Eco-Libre, (i) upload your creative work or images, (j) subscribe to our newsletter, or (k) apply for a job at Eco-Libre. This information may include but is not limited to your name, email address, phone number, mailing address, payment information, photo, geographic location, and your social media handles.  We may also collect additional demographic and other information about you in connection with our conferences and events (e.g., dietary and other preferences), and the provision of this information to us by you is optional.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Information that Is Automatically Collected&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Device/Usage Information&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
We may automatically collect certain information about the computer or devices (including mobile devices or tablets) you use to access the Services. As described further below, we may collect and analyze (a) device information such as IP addresses, location information (by country and city), unique device identifiers, IMEI and TCP/IP address, browser types, browser language, operating system, mobile device carrier information, and (b) information related to the ways in which you interact with the Services, such as referring and exit web pages and URLs, platform type, the number of clicks, domain names, landing pages, pages and content viewed and the order of those pages, statistical information about the use of the Services, the amount of time spent on particular pages, the date and time you used the Services, the frequency of your use of the Services, error logs, and other similar information. As described further below, we may use third-party analytics providers and technologies, including cookies and similar tools, to assist in collecting this information.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Cookies and Other Tracking Technologies&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
We also collect data about your use of the Services through the use of Internet server logs and online tracking technologies, like cookies and/or tracking pixels. A web server log is a file where website activity is stored. A cookie is a small text file that is placed on your computer when you visit a website, that enables us to: (a) recognize your computer; (b) store your preferences and settings; (c) understand the web pages of the Services you have visited and the referral sites that have led you to our Services; (d) enhance your user experience by delivering content  specific to your inferred interests; (e) perform searches and analytics; and (f) assist with security administrative functions. Tracking pixels (sometimes referred to as web beacons or clear GIFs) are tiny electronic tags with a unique identifier embedded in websites, online ads and/or email, and that are designed to provide usage information like ad impressions or clicks, measure popularity of the Services and associated advertising, and to access user cookies. We may also use tracking technologies in our license buttons and/or icons that you can embed on other sites/services to track the website addresses where they are embedded, gauge user interaction with them, and determine the number of unique viewers of them. If you receive email from us (such as a newsletter, campaign updates, or other ongoing email communications from EL), we may use certain analytics tools, such as clear GIFs, to capture data such as whether you open our message, click on any links or banners our email contains, or otherwise interact with what we send. This data allows us to gauge the effectiveness of our communications and marketing campaigns.  As we adopt additional technologies, we may also gather additional information through other methods.&lt;br /&gt;
&lt;br /&gt;
Please note that you can change your settings to notify you when a cookie is being set or updated, or to block cookies altogether. Please consult the “Help” section of your browser for more information (e.g.,[http://windows.microsoft.com/en-US/windows-vista/Block-or-allow-cookies  Internet Explorer];[https://support.google.com/chrome/answer/95647?hl=en  Google Chrome];[http://kb.mozillazine.org/Cookies#Firefox  Mozilla Firefox]; or[http://support.apple.com/kb/PH5042  Apple Safari]). Please note that by blocking any or all cookies, you may not have access to certain features or offerings of the Services.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; Information from Third Parties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
We may also collect information about you or others through third parties. For example, if you apply for to become an Eco-Libre volunteer, we may collect information from the references or vouchers you identified in your membership application.  To the extent permitted by law, we may also collect information from third parties, including public sources, social media platforms, and marketing and market research firms. Depending on the source, this information collected from third parties could include name, contact information, demographic information, information about an individual’s employer, information to verify identity or trustworthiness, and information for other fraud or safety protection purposes.&lt;br /&gt;
&lt;br /&gt;
=== 3.     How We Use Your Information ===&lt;br /&gt;
&lt;br /&gt;
We may use the information we collect from and about you to:&lt;br /&gt;
&lt;br /&gt;
*        Fulfill the purposes for which you provided it;&lt;br /&gt;
*        Evaluate your application for a scholarship, grant, fellowship, or to become an Eco-Libre Volunteer;&lt;br /&gt;
*        Distribute funds to scholarship and grant recipients;&lt;br /&gt;
*        Provide and improve the Services, including to develop new features or services, promote EL community collaboration, take steps to secure the Services, and for technical and customer support;&lt;br /&gt;
*        Fundraise, accept donations, or process purchases of EL merchandise;&lt;br /&gt;
*        Host events and programs such as EL Summits or EL training courses;&lt;br /&gt;
*        Send you information about your relationship or transactions with us, account alerts, or other communications, such as newsletters to which you have subscribed;&lt;br /&gt;
*        Process and respond to your inquiries or to request your feedback;&lt;br /&gt;
*        Conduct analytics, research, and reporting, including to synthesize and derive insights from your use of our Services;&lt;br /&gt;
*        Evaluate job candidates during our hiring process; and&lt;br /&gt;
*        Comply with the law and protect the safety, rights, property, or security of Eco-Libre, the Services, our users, and the general public&lt;br /&gt;
&lt;br /&gt;
Please note that we may combine information that we collect from you and about you (including automatically collected information) with information we obtain about you from our affiliates and/or non-affiliated third parties, and use such combined information in accordance with this Privacy Policy.&lt;br /&gt;
&lt;br /&gt;
We may aggregate and/or de-identify information collected through the Services. We may use de-identified and/or aggregated data for any purpose, including without limitation for research and marketing purposes.&lt;br /&gt;
&lt;br /&gt;
=== 4.     When We Disclose Your Information ===&lt;br /&gt;
&lt;br /&gt;
We may disclose and/or share your information under the following circumstances:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Service Providers.&#039;&#039;&#039; We may disclose your information with third parties who perform services on our behalf, including without limitation, event management, candidate selection, marketing, customer support, data storage, data analysis and processing, and legal services.&lt;br /&gt;
&lt;br /&gt;
For example, when you apply for a scholarship, grant, fellowship, or to be selected to participate in one of our other programs, EL may share that information with the individuals designated to select participants in, and help manage, those programs, which may include people not employed by Eco-Libre.&lt;br /&gt;
&lt;br /&gt;
Or, when you register for an event, we may share your information with vendors, third party contractors, partner organizations, and volunteers for the purpose of organizing and running the event and related activities.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039; Legal Compliance and Protection of Eco-Libre and Others.&#039;&#039;&#039; We may disclose your information if required to do so by law or on a good faith belief that such disclosure is permitted by this Privacy Policy or reasonably necessary or appropriate for any of the following reasons: (a) to comply with legal process; (b) to enforce or apply our this Privacy Policy, or other contracts with you, including investigation of potential violations thereof; (c) enforce our Charter including the Code of Conduct and policies contained and incorporated therein, (d) to respond to your requests for customer service; and/or (e) to protect the rights, property, or personal safety of Eco-Libre, our agents and affiliates, our users, and the public. This includes exchanging information with other companies and organizations for fraud protection, and spam/malware prevention, and similar purposes.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Business Transfers.&#039;&#039;&#039; As we continue to develop our business, we may engage in certain business transactions, such as the transfer or sale of our assets. In such transactions, (including in contemplation of such transactions, e.g., due diligence) your information may be disclosed. If any of Eco-Libre’ assets are sold or transferred to a third party, customer information (including your email address) would likely be one of the transferred business assets.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Affiliated Companies.&#039;&#039;&#039; We may disclose your information with current or future affiliated companies.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Consent.&#039;&#039;&#039; We may disclose your information to any third parties based on your consent to do so.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Aggregate/De-identified Information.&#039;&#039;&#039; We may disclose de-identified and/or aggregated data for any purpose to third parties, including advertisers, promotional partners, and/or others.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Eco-Libre Volunteers.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
o   In connection with you Eco-Libre Volunteer application, we may provide your information to the individuals you’ve selected to vouch for you, and with those reviewing your application, including the Membership Council whose members include people not employed by Eco-Libre and who are located in various countries around the world.&lt;br /&gt;
&lt;br /&gt;
o   If you vouch for someone’s application to the Eco-Libre Volunteer program, your information will be shared with those reviewing the application, including the Membership Council, and if you provide a positive vouching statement, that statement will be shared with the applicant if and when they are admitted for membership.&lt;br /&gt;
&lt;br /&gt;
o   Once you are an Eco-Libre Volunteer, we may provide you with a public profile page,  pre-populated with certain information you provided in your application such as your name, areas of interest, images or other content you upload, which will be publicly displayed to anyone who visits the site.&lt;br /&gt;
&lt;br /&gt;
=== 5.     Legal Basis for Processing Personal Data ===&lt;br /&gt;
&lt;br /&gt;
The laws in some jurisdictions require companies to tell you about the legal ground they rely on to use or disclose information that can be directly linked to or used to identify you. To the extent those laws apply, our legal grounds for processing such information are as follows:&lt;br /&gt;
&lt;br /&gt;
* To Honor Our Contractual Commitments to You. Much of our processing of information is to meet our contractual obligations to provide services to our users.&lt;br /&gt;
&lt;br /&gt;
* Legitimate Interests. In many cases, we handle information on the ground that it furthers our legitimate interests in ways that are not overridden by the interests or fundamental rights and freedoms of the affected individuals, these include:&lt;br /&gt;
** Customer service&lt;br /&gt;
** Marketing, advertising, and fundraising&lt;br /&gt;
** Protecting our users, personnel, and property&lt;br /&gt;
** Managing user accounts&lt;br /&gt;
** Organizing and running events and programs&lt;br /&gt;
** Analyzing and improving our business&lt;br /&gt;
** Managing legal issues&lt;br /&gt;
We may also process information for the same legitimate interests of our users and business partners.&lt;br /&gt;
&lt;br /&gt;
* Legal Compliance. We may need to use and disclose information in certain ways to comply with our legal obligations.&lt;br /&gt;
&lt;br /&gt;
* Consent. Where required by law, and in some other cases where legally permissible, we handle information on the basis of consent. Where we handle your information on the basis of consent, you have the right to withdraw your consent; in accordance with applicable law.&lt;br /&gt;
&lt;br /&gt;
=== 6.     Online Analytics ===&lt;br /&gt;
&lt;br /&gt;
We may use third-party web analytics services (such as Google Analytics) on our Services to collect and analyze the information discussed above, and to engage in auditing, research, or reporting. The information (including your IP address) collected by various analytics technologies described in the “Cookies and Other Tracking Technologies” section above will be disclosed to or collected directly by these service providers, who use the information to evaluate your use of the Services, including by noting the third-party website from which you arrive to our Site, analyzing usage trends, assisting with fraud prevention, and providing certain features to you. To prevent Google Analytics from using your information for analytics, you may install the Google Analytics Opt-out Browser Add-on by clicking [https://tools.google.com/dlpage/gaoptout here].&lt;br /&gt;
&lt;br /&gt;
=== 7.     Your Choices and Data Subject Rights ===&lt;br /&gt;
&lt;br /&gt;
You have various rights with respect to the collection and use of your information through the Services.  Those choices are as follows:&lt;br /&gt;
&lt;br /&gt;
* Email Unsubscribe – You may unsubscribe from our marketing emails at any time by clicking on the &amp;quot;opt-out completely&amp;quot; link at the bottom of each newsletter&lt;br /&gt;
* Fundraising Analytics – You may opt out of EL&#039;s fundraising analytics activities by contacting Us with your request.&lt;br /&gt;
* Account Preferences – If you have registered for an account with us through our Services, you can update your account information or adjust your email communications preferences by logging into your account and updating your settings.&lt;br /&gt;
* EU Data Subject Rights – Individuals in the European Economic Area (“EEA”) and other jurisdictions have certain legal rights (subject to applicable exceptions and limitations) to obtain confirmation of whether we hold certain information about them, to access such information, and to obtain its correction or deletion in appropriate circumstances. You may have the right to object to our handling of your information, restrict our processing of your information, and to withdraw any consent you have provided. To exercise these rights, please email Us with the nature of your request. You also have the right to go directly to the relevant supervisory or legal authority, but we encourage you to contact us so that we may resolve your concerns directly as best and as promptly as we can.&lt;br /&gt;
&lt;br /&gt;
=== 8.     International Transfers ===&lt;br /&gt;
&lt;br /&gt;
Our computer systems are currently based in Germany and Ecuador and the majority of our Volunteers are based in Ecuador or are located in various countries around the world. As described above in the “When We Disclose Your Information” section, we may share your information with trusted service providers or business partners in countries other than your country of residence, including the United States and Ecuador, in accordance with applicable law. This means that some of your information may be processed in the United States or Ecuador, which may not offer the same level of protection as the privacy laws of your jurisdiction. By providing us with your information, you acknowledge any such transfer, storage or use.&lt;br /&gt;
&lt;br /&gt;
If we provide any information about you to any third parties information processors located outside of the EEA, we will take appropriate measures to ensure such companies protect your information adequately in accordance with this Privacy Policy and other data protection laws to govern the transfers of such data.&lt;br /&gt;
&lt;br /&gt;
=== 9.     Security Measures ===&lt;br /&gt;
&lt;br /&gt;
We have implemented technical, physical, and organizational security measures to protect against the loss, misuse, and/or alteration of your information. These safeguards vary based on the sensitivity of the information that we collect and store. However, we cannot and do not guarantee that these measures will prevent every unauthorized attempt to access, use, or disclose your information since despite our efforts, no Internet and/or other electronic transmissions can be completely secure.&lt;br /&gt;
&lt;br /&gt;
=== 10.  Children ===&lt;br /&gt;
&lt;br /&gt;
The Services are intended for users over the age of 18 and are not directed at children under the age of 13. If we become aware that we have collected personal information (as defined by the Children’s Online Privacy Protection Act) from children under the age of 13, or personal data (as defined by the EU GDPR) from children under the age of 16, we will take reasonable steps to delete it as soon as practicable.&lt;br /&gt;
&lt;br /&gt;
=== 11.  Data Retention ===&lt;br /&gt;
&lt;br /&gt;
We retain the information we collect for as long as necessary to fulfill the purposes set forth in this Privacy Policy or as long as we are legally required or permitted to do so. Information may persist in copies made for backup and business continuity purposes for additional time.&lt;br /&gt;
&lt;br /&gt;
=== 12.  Third-Party Links and Services ===&lt;br /&gt;
&lt;br /&gt;
The Services may contain links to third-party websites (e.g., social media sites like Facebook and Twitter), third-party plug-ins (e.g., the Facebook “like” button and Twitter “follow” button), and other services. If you choose to use these sites or features, you may disclose your information not just to those third-parties, but also to their users and the public more generally depending on how their services function. Eco-Libre is not responsible for the content or privacy practices of such third party websites or services. The collection, use and disclosure of your information will be subject to the privacy policies of the third party websites or services, and not this Privacy Policy. We encourage you to read the privacy statements of each and every site you visit.&lt;br /&gt;
&lt;br /&gt;
=== 13.  Changes to this Privacy Policy ===&lt;br /&gt;
&lt;br /&gt;
We will continue to evaluate this Privacy Policy as we update and expand our Services, and we may make changes to the Privacy Policy accordingly. We will post any changes here and revise the date last updated above. We encourage you to check this page periodically for updates to stay informed on how we collect, use and share your information. If we make material changes to this Privacy Policy, we will provide you with notice as required by law.&lt;br /&gt;
&lt;br /&gt;
=== 14.  Questions About this Privacy Policy ===&lt;br /&gt;
&lt;br /&gt;
If you have any questions about this Privacy Policy or our privacy practices, you can contact us at: https://eco-libre.org/contact&lt;br /&gt;
&lt;br /&gt;
The Eco-Libre Privacy Policy is licensed under the [https://creativecommons.org/licenses/by-sa/4.0/ CC-BY-SA-4.0 license]. You are free to use and adapt this Privacy Policy for your own purposes. &lt;br /&gt;
&lt;br /&gt;
However, please keep in mind that this Privacy Policy may not be completely suitable for your situation. Eco-Libre strongly encourages you to seek the advice of your own attorney before repurposing this Privacy Policy on your own site.&lt;br /&gt;
&lt;br /&gt;
=== 15.  Attribution ===&lt;br /&gt;
&lt;br /&gt;
This Privacy Policy is derived from [https://creativecommons.org/privacy/ the Privacy Policy written by Creative Commons].&lt;br /&gt;
&lt;br /&gt;
=See Also=&lt;br /&gt;
* [[Terms of Service]]&lt;br /&gt;
&lt;br /&gt;
=External Links=&lt;br /&gt;
* Contact Eco-Libre https://eco-libre.org/contact&lt;br /&gt;
* Creative Commons Privacy Policy https://creativecommons.org/privacy/&lt;br /&gt;
&lt;br /&gt;
[[category: Legal]]&lt;br /&gt;
[[category: Eco-Libre Volunteer Agreements]]&lt;/div&gt;</summary>
		<author><name>Maltfield</name></author>
	</entry>
	<entry>
		<id>https://wiki.eco-libre.org/index.php?title=Eco-Libre:Privacy_policy&amp;diff=82</id>
		<title>Eco-Libre:Privacy policy</title>
		<link rel="alternate" type="text/html" href="https://wiki.eco-libre.org/index.php?title=Eco-Libre:Privacy_policy&amp;diff=82"/>
		<updated>2026-04-26T22:05:02Z</updated>

		<summary type="html">&lt;p&gt;Maltfield: /* 15.  Attribution */ attempt to fix category syntax&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This Privacy Policy (“Policy”) explains the information collection, use, and sharing practices of Eco-Libre (“EL”, “we,” “us,” and “our”).&lt;br /&gt;
&lt;br /&gt;
This Policy is incorporated into and part of Eco-Libre Terms of Use located at https://wiki.eco-libre.org/wiki/Eco-Libre:Terms_of_Service.&lt;br /&gt;
&lt;br /&gt;
Unless otherwise noted on a particular website or service hosted by Eco-Libre, this Policy describes and governs the information collection, use, and sharing practices of Eco-Libre with respect to your use of our websites that link to this Privacy Policy, including: https://eco-libre.org, https://www.eco-libre.org, https://phplist.eco-libre.org, and https://wiki.eco-libre.org (collectively, the “Websites”), and the services we provide through our Websites and/or host on our servers, and the services available through them are referred to as the “Services”).&lt;br /&gt;
&lt;br /&gt;
Before you use or submit any information through or in connection with the Services, please carefully review this Privacy Policy. By using any part of the Services, you understand that your information will be collected, used, and disclosed as outlined in this Privacy Policy. IF YOU DO NOT AGREE TO THIS PRIVACY POLICY, PLEASE DO NOT USE THE SERVICES.&lt;br /&gt;
&lt;br /&gt;
=== 1.     Our Principles ===&lt;br /&gt;
&lt;br /&gt;
Eco-Libre has designed this policy to be consistent with the following principles:&lt;br /&gt;
&lt;br /&gt;
*   Privacy policies should be human readable and easy to find.&lt;br /&gt;
*   Data collection, storage, and processing should be simplified as much as possible to enhance security, ensure consistency, and make the practices easy for users to understand. &lt;br /&gt;
*  Data practices should meet the reasonable expectations of users.&lt;br /&gt;
&lt;br /&gt;
=== 2.     Information We Collect ===&lt;br /&gt;
&lt;br /&gt;
We collect information in multiple ways, including when you provide information directly to us; when we passively collect information from you, such as from your browser or device; and from third parties.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Information You Provide Directly to Us&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
We will collect any information you provide to us. We may collect information from you in a variety of ways, such as when you: (a) create an online account, (b) apply for to become an Eco-Libre volunteer, (c) create an account for one of our Services, (d) make a donation or purchase, (e) register for an event, (f) apply for a scholarship, grant, or fellowship, (g) contact us or provide feedback, (h) sign a petition distributed by Eco-Libre, (i) upload your creative work or images, (j) subscribe to our newsletter, or (k) apply for a job at Eco-Libre. This information may include but is not limited to your name, email address, phone number, mailing address, payment information, photo, geographic location, and your social media handles.  We may also collect additional demographic and other information about you in connection with our conferences and events (e.g., dietary and other preferences), and the provision of this information to us by you is optional.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Information that Is Automatically Collected&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Device/Usage Information&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
We may automatically collect certain information about the computer or devices (including mobile devices or tablets) you use to access the Services. As described further below, we may collect and analyze (a) device information such as IP addresses, location information (by country and city), unique device identifiers, IMEI and TCP/IP address, browser types, browser language, operating system, mobile device carrier information, and (b) information related to the ways in which you interact with the Services, such as referring and exit web pages and URLs, platform type, the number of clicks, domain names, landing pages, pages and content viewed and the order of those pages, statistical information about the use of the Services, the amount of time spent on particular pages, the date and time you used the Services, the frequency of your use of the Services, error logs, and other similar information. As described further below, we may use third-party analytics providers and technologies, including cookies and similar tools, to assist in collecting this information.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Cookies and Other Tracking Technologies&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
We also collect data about your use of the Services through the use of Internet server logs and online tracking technologies, like cookies and/or tracking pixels. A web server log is a file where website activity is stored. A cookie is a small text file that is placed on your computer when you visit a website, that enables us to: (a) recognize your computer; (b) store your preferences and settings; (c) understand the web pages of the Services you have visited and the referral sites that have led you to our Services; (d) enhance your user experience by delivering content  specific to your inferred interests; (e) perform searches and analytics; and (f) assist with security administrative functions. Tracking pixels (sometimes referred to as web beacons or clear GIFs) are tiny electronic tags with a unique identifier embedded in websites, online ads and/or email, and that are designed to provide usage information like ad impressions or clicks, measure popularity of the Services and associated advertising, and to access user cookies. We may also use tracking technologies in our license buttons and/or icons that you can embed on other sites/services to track the website addresses where they are embedded, gauge user interaction with them, and determine the number of unique viewers of them. If you receive email from us (such as a newsletter, campaign updates, or other ongoing email communications from EL), we may use certain analytics tools, such as clear GIFs, to capture data such as whether you open our message, click on any links or banners our email contains, or otherwise interact with what we send. This data allows us to gauge the effectiveness of our communications and marketing campaigns.  As we adopt additional technologies, we may also gather additional information through other methods.&lt;br /&gt;
&lt;br /&gt;
Please note that you can change your settings to notify you when a cookie is being set or updated, or to block cookies altogether. Please consult the “Help” section of your browser for more information (e.g.,[http://windows.microsoft.com/en-US/windows-vista/Block-or-allow-cookies  Internet Explorer];[https://support.google.com/chrome/answer/95647?hl=en  Google Chrome];[http://kb.mozillazine.org/Cookies#Firefox  Mozilla Firefox]; or[http://support.apple.com/kb/PH5042  Apple Safari]). Please note that by blocking any or all cookies, you may not have access to certain features or offerings of the Services.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; Information from Third Parties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
We may also collect information about you or others through third parties. For example, if you apply for to become an Eco-Libre volunteer, we may collect information from the references or vouchers you identified in your membership application.  To the extent permitted by law, we may also collect information from third parties, including public sources, social media platforms, and marketing and market research firms. Depending on the source, this information collected from third parties could include name, contact information, demographic information, information about an individual’s employer, information to verify identity or trustworthiness, and information for other fraud or safety protection purposes.&lt;br /&gt;
&lt;br /&gt;
=== 3.     How We Use Your Information ===&lt;br /&gt;
&lt;br /&gt;
We may use the information we collect from and about you to:&lt;br /&gt;
&lt;br /&gt;
*        Fulfill the purposes for which you provided it;&lt;br /&gt;
*        Evaluate your application for a scholarship, grant, fellowship, or to become an Eco-Libre Volunteer;&lt;br /&gt;
*        Distribute funds to scholarship and grant recipients;&lt;br /&gt;
*        Provide and improve the Services, including to develop new features or services, promote EL community collaboration, take steps to secure the Services, and for technical and customer support;&lt;br /&gt;
*        Fundraise, accept donations, or process purchases of EL merchandise;&lt;br /&gt;
*        Host events and programs such as EL Summits or EL training courses;&lt;br /&gt;
*        Send you information about your relationship or transactions with us, account alerts, or other communications, such as newsletters to which you have subscribed;&lt;br /&gt;
*        Process and respond to your inquiries or to request your feedback;&lt;br /&gt;
*        Conduct analytics, research, and reporting, including to synthesize and derive insights from your use of our Services;&lt;br /&gt;
*        Evaluate job candidates during our hiring process; and&lt;br /&gt;
*        Comply with the law and protect the safety, rights, property, or security of Eco-Libre, the Services, our users, and the general public&lt;br /&gt;
&lt;br /&gt;
Please note that we may combine information that we collect from you and about you (including automatically collected information) with information we obtain about you from our affiliates and/or non-affiliated third parties, and use such combined information in accordance with this Privacy Policy.&lt;br /&gt;
&lt;br /&gt;
We may aggregate and/or de-identify information collected through the Services. We may use de-identified and/or aggregated data for any purpose, including without limitation for research and marketing purposes.&lt;br /&gt;
&lt;br /&gt;
=== 4.     When We Disclose Your Information ===&lt;br /&gt;
&lt;br /&gt;
We may disclose and/or share your information under the following circumstances:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Service Providers.&#039;&#039;&#039; We may disclose your information with third parties who perform services on our behalf, including without limitation, event management, candidate selection, marketing, customer support, data storage, data analysis and processing, and legal services.&lt;br /&gt;
&lt;br /&gt;
For example, when you apply for a scholarship, grant, fellowship, or to be selected to participate in one of our other programs, EL may share that information with the individuals designated to select participants in, and help manage, those programs, which may include people not employed by Eco-Libre.&lt;br /&gt;
&lt;br /&gt;
Or, when you register for an event, we may share your information with vendors, third party contractors, partner organizations, and volunteers for the purpose of organizing and running the event and related activities.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039; Legal Compliance and Protection of Eco-Libre and Others.&#039;&#039;&#039; We may disclose your information if required to do so by law or on a good faith belief that such disclosure is permitted by this Privacy Policy or reasonably necessary or appropriate for any of the following reasons: (a) to comply with legal process; (b) to enforce or apply our this Privacy Policy, or other contracts with you, including investigation of potential violations thereof; (c) enforce our Charter including the Code of Conduct and policies contained and incorporated therein, (d) to respond to your requests for customer service; and/or (e) to protect the rights, property, or personal safety of Eco-Libre, our agents and affiliates, our users, and the public. This includes exchanging information with other companies and organizations for fraud protection, and spam/malware prevention, and similar purposes.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Business Transfers.&#039;&#039;&#039; As we continue to develop our business, we may engage in certain business transactions, such as the transfer or sale of our assets. In such transactions, (including in contemplation of such transactions, e.g., due diligence) your information may be disclosed. If any of Eco-Libre’ assets are sold or transferred to a third party, customer information (including your email address) would likely be one of the transferred business assets.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Affiliated Companies.&#039;&#039;&#039; We may disclose your information with current or future affiliated companies.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Consent.&#039;&#039;&#039; We may disclose your information to any third parties based on your consent to do so.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Aggregate/De-identified Information.&#039;&#039;&#039; We may disclose de-identified and/or aggregated data for any purpose to third parties, including advertisers, promotional partners, and/or others.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Eco-Libre Volunteers.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
o   In connection with you Eco-Libre Volunteer application, we may provide your information to the individuals you’ve selected to vouch for you, and with those reviewing your application, including the Membership Council whose members include people not employed by Eco-Libre and who are located in various countries around the world.&lt;br /&gt;
&lt;br /&gt;
o   If you vouch for someone’s application to the Eco-Libre Volunteer program, your information will be shared with those reviewing the application, including the Membership Council, and if you provide a positive vouching statement, that statement will be shared with the applicant if and when they are admitted for membership.&lt;br /&gt;
&lt;br /&gt;
o   Once you are an Eco-Libre Volunteer, we may provide you with a public profile page,  pre-populated with certain information you provided in your application such as your name, areas of interest, images or other content you upload, which will be publicly displayed to anyone who visits the site.&lt;br /&gt;
&lt;br /&gt;
=== 5.     Legal Basis for Processing Personal Data ===&lt;br /&gt;
&lt;br /&gt;
The laws in some jurisdictions require companies to tell you about the legal ground they rely on to use or disclose information that can be directly linked to or used to identify you. To the extent those laws apply, our legal grounds for processing such information are as follows:&lt;br /&gt;
&lt;br /&gt;
* To Honor Our Contractual Commitments to You. Much of our processing of information is to meet our contractual obligations to provide services to our users.&lt;br /&gt;
&lt;br /&gt;
* Legitimate Interests. In many cases, we handle information on the ground that it furthers our legitimate interests in ways that are not overridden by the interests or fundamental rights and freedoms of the affected individuals, these include:&lt;br /&gt;
** Customer service&lt;br /&gt;
** Marketing, advertising, and fundraising&lt;br /&gt;
** Protecting our users, personnel, and property&lt;br /&gt;
** Managing user accounts&lt;br /&gt;
** Organizing and running events and programs&lt;br /&gt;
** Analyzing and improving our business&lt;br /&gt;
** Managing legal issues&lt;br /&gt;
We may also process information for the same legitimate interests of our users and business partners.&lt;br /&gt;
&lt;br /&gt;
* Legal Compliance. We may need to use and disclose information in certain ways to comply with our legal obligations.&lt;br /&gt;
&lt;br /&gt;
* Consent. Where required by law, and in some other cases where legally permissible, we handle information on the basis of consent. Where we handle your information on the basis of consent, you have the right to withdraw your consent; in accordance with applicable law.&lt;br /&gt;
&lt;br /&gt;
=== 6.     Online Analytics ===&lt;br /&gt;
&lt;br /&gt;
We may use third-party web analytics services (such as Google Analytics) on our Services to collect and analyze the information discussed above, and to engage in auditing, research, or reporting. The information (including your IP address) collected by various analytics technologies described in the “Cookies and Other Tracking Technologies” section above will be disclosed to or collected directly by these service providers, who use the information to evaluate your use of the Services, including by noting the third-party website from which you arrive to our Site, analyzing usage trends, assisting with fraud prevention, and providing certain features to you. To prevent Google Analytics from using your information for analytics, you may install the Google Analytics Opt-out Browser Add-on by clicking [https://tools.google.com/dlpage/gaoptout here].&lt;br /&gt;
&lt;br /&gt;
=== 7.     Your Choices and Data Subject Rights ===&lt;br /&gt;
&lt;br /&gt;
You have various rights with respect to the collection and use of your information through the Services.  Those choices are as follows:&lt;br /&gt;
&lt;br /&gt;
* Email Unsubscribe – You may unsubscribe from our marketing emails at any time by clicking on the &amp;quot;opt-out completely&amp;quot; link at the bottom of each newsletter&lt;br /&gt;
* Fundraising Analytics – You may opt out of EL&#039;s fundraising analytics activities by contacting Us with your request.&lt;br /&gt;
* Account Preferences – If you have registered for an account with us through our Services, you can update your account information or adjust your email communications preferences by logging into your account and updating your settings.&lt;br /&gt;
* EU Data Subject Rights – Individuals in the European Economic Area (“EEA”) and other jurisdictions have certain legal rights (subject to applicable exceptions and limitations) to obtain confirmation of whether we hold certain information about them, to access such information, and to obtain its correction or deletion in appropriate circumstances. You may have the right to object to our handling of your information, restrict our processing of your information, and to withdraw any consent you have provided. To exercise these rights, please email Us with the nature of your request. You also have the right to go directly to the relevant supervisory or legal authority, but we encourage you to contact us so that we may resolve your concerns directly as best and as promptly as we can.&lt;br /&gt;
&lt;br /&gt;
=== 8.     International Transfers ===&lt;br /&gt;
&lt;br /&gt;
Our computer systems are currently based in Germany and Ecuador and the majority of our Volunteers are based in Ecuador or are located in various countries around the world. As described above in the “When We Disclose Your Information” section, we may share your information with trusted service providers or business partners in countries other than your country of residence, including the United States and Ecuador, in accordance with applicable law. This means that some of your information may be processed in the United States or Ecuador, which may not offer the same level of protection as the privacy laws of your jurisdiction. By providing us with your information, you acknowledge any such transfer, storage or use.&lt;br /&gt;
&lt;br /&gt;
If we provide any information about you to any third parties information processors located outside of the EEA, we will take appropriate measures to ensure such companies protect your information adequately in accordance with this Privacy Policy and other data protection laws to govern the transfers of such data.&lt;br /&gt;
&lt;br /&gt;
=== 9.     Security Measures ===&lt;br /&gt;
&lt;br /&gt;
We have implemented technical, physical, and organizational security measures to protect against the loss, misuse, and/or alteration of your information. These safeguards vary based on the sensitivity of the information that we collect and store. However, we cannot and do not guarantee that these measures will prevent every unauthorized attempt to access, use, or disclose your information since despite our efforts, no Internet and/or other electronic transmissions can be completely secure.&lt;br /&gt;
&lt;br /&gt;
=== 10.  Children ===&lt;br /&gt;
&lt;br /&gt;
The Services are intended for users over the age of 18 and are not directed at children under the age of 13. If we become aware that we have collected personal information (as defined by the Children’s Online Privacy Protection Act) from children under the age of 13, or personal data (as defined by the EU GDPR) from children under the age of 16, we will take reasonable steps to delete it as soon as practicable.&lt;br /&gt;
&lt;br /&gt;
=== 11.  Data Retention ===&lt;br /&gt;
&lt;br /&gt;
We retain the information we collect for as long as necessary to fulfill the purposes set forth in this Privacy Policy or as long as we are legally required or permitted to do so. Information may persist in copies made for backup and business continuity purposes for additional time.&lt;br /&gt;
&lt;br /&gt;
=== 12.  Third-Party Links and Services ===&lt;br /&gt;
&lt;br /&gt;
The Services may contain links to third-party websites (e.g., social media sites like Facebook and Twitter), third-party plug-ins (e.g., the Facebook “like” button and Twitter “follow” button), and other services. If you choose to use these sites or features, you may disclose your information not just to those third-parties, but also to their users and the public more generally depending on how their services function. Eco-Libre is not responsible for the content or privacy practices of such third party websites or services. The collection, use and disclosure of your information will be subject to the privacy policies of the third party websites or services, and not this Privacy Policy. We encourage you to read the privacy statements of each and every site you visit.&lt;br /&gt;
&lt;br /&gt;
=== 13.  Changes to this Privacy Policy ===&lt;br /&gt;
&lt;br /&gt;
We will continue to evaluate this Privacy Policy as we update and expand our Services, and we may make changes to the Privacy Policy accordingly. We will post any changes here and revise the date last updated above. We encourage you to check this page periodically for updates to stay informed on how we collect, use and share your information. If we make material changes to this Privacy Policy, we will provide you with notice as required by law.&lt;br /&gt;
&lt;br /&gt;
=== 14.  Questions About this Privacy Policy ===&lt;br /&gt;
&lt;br /&gt;
If you have any questions about this Privacy Policy or our privacy practices, you can contact us at: https://eco-libre.org/contact&lt;br /&gt;
&lt;br /&gt;
The Eco-Libre Privacy Policy is licensed under the [https://creativecommons.org/licenses/by-sa/4.0/ CC-BY-SA-4.0 license]. You are free to use and adapt this Privacy Policy for your own purposes. &lt;br /&gt;
&lt;br /&gt;
However, please keep in mind that this Privacy Policy may not be completely suitable for your situation. Eco-Libre strongly encourages you to seek the advice of your own attorney before repurposing this Privacy Policy on your own site.&lt;br /&gt;
&lt;br /&gt;
=== 15.  Attribution ===&lt;br /&gt;
&lt;br /&gt;
This Privacy Policy is derived from [https://creativecommons.org/privacy/ the Privacy Policy written by Creative Commons].&lt;br /&gt;
&lt;br /&gt;
[[category: Legal]]&lt;br /&gt;
[[category: Eco-Libre Volunteer Agreements]]&lt;/div&gt;</summary>
		<author><name>Maltfield</name></author>
	</entry>
	<entry>
		<id>https://wiki.eco-libre.org/index.php?title=Eco-Libre:Privacy_policy&amp;diff=81</id>
		<title>Eco-Libre:Privacy policy</title>
		<link rel="alternate" type="text/html" href="https://wiki.eco-libre.org/index.php?title=Eco-Libre:Privacy_policy&amp;diff=81"/>
		<updated>2026-04-26T22:03:52Z</updated>

		<summary type="html">&lt;p&gt;Maltfield: attempt to add some categories&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This Privacy Policy (“Policy”) explains the information collection, use, and sharing practices of Eco-Libre (“EL”, “we,” “us,” and “our”).&lt;br /&gt;
&lt;br /&gt;
This Policy is incorporated into and part of Eco-Libre Terms of Use located at https://wiki.eco-libre.org/wiki/Eco-Libre:Terms_of_Service.&lt;br /&gt;
&lt;br /&gt;
Unless otherwise noted on a particular website or service hosted by Eco-Libre, this Policy describes and governs the information collection, use, and sharing practices of Eco-Libre with respect to your use of our websites that link to this Privacy Policy, including: https://eco-libre.org, https://www.eco-libre.org, https://phplist.eco-libre.org, and https://wiki.eco-libre.org (collectively, the “Websites”), and the services we provide through our Websites and/or host on our servers, and the services available through them are referred to as the “Services”).&lt;br /&gt;
&lt;br /&gt;
Before you use or submit any information through or in connection with the Services, please carefully review this Privacy Policy. By using any part of the Services, you understand that your information will be collected, used, and disclosed as outlined in this Privacy Policy. IF YOU DO NOT AGREE TO THIS PRIVACY POLICY, PLEASE DO NOT USE THE SERVICES.&lt;br /&gt;
&lt;br /&gt;
=== 1.     Our Principles ===&lt;br /&gt;
&lt;br /&gt;
Eco-Libre has designed this policy to be consistent with the following principles:&lt;br /&gt;
&lt;br /&gt;
*   Privacy policies should be human readable and easy to find.&lt;br /&gt;
*   Data collection, storage, and processing should be simplified as much as possible to enhance security, ensure consistency, and make the practices easy for users to understand. &lt;br /&gt;
*  Data practices should meet the reasonable expectations of users.&lt;br /&gt;
&lt;br /&gt;
=== 2.     Information We Collect ===&lt;br /&gt;
&lt;br /&gt;
We collect information in multiple ways, including when you provide information directly to us; when we passively collect information from you, such as from your browser or device; and from third parties.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Information You Provide Directly to Us&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
We will collect any information you provide to us. We may collect information from you in a variety of ways, such as when you: (a) create an online account, (b) apply for to become an Eco-Libre volunteer, (c) create an account for one of our Services, (d) make a donation or purchase, (e) register for an event, (f) apply for a scholarship, grant, or fellowship, (g) contact us or provide feedback, (h) sign a petition distributed by Eco-Libre, (i) upload your creative work or images, (j) subscribe to our newsletter, or (k) apply for a job at Eco-Libre. This information may include but is not limited to your name, email address, phone number, mailing address, payment information, photo, geographic location, and your social media handles.  We may also collect additional demographic and other information about you in connection with our conferences and events (e.g., dietary and other preferences), and the provision of this information to us by you is optional.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Information that Is Automatically Collected&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Device/Usage Information&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
We may automatically collect certain information about the computer or devices (including mobile devices or tablets) you use to access the Services. As described further below, we may collect and analyze (a) device information such as IP addresses, location information (by country and city), unique device identifiers, IMEI and TCP/IP address, browser types, browser language, operating system, mobile device carrier information, and (b) information related to the ways in which you interact with the Services, such as referring and exit web pages and URLs, platform type, the number of clicks, domain names, landing pages, pages and content viewed and the order of those pages, statistical information about the use of the Services, the amount of time spent on particular pages, the date and time you used the Services, the frequency of your use of the Services, error logs, and other similar information. As described further below, we may use third-party analytics providers and technologies, including cookies and similar tools, to assist in collecting this information.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Cookies and Other Tracking Technologies&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
We also collect data about your use of the Services through the use of Internet server logs and online tracking technologies, like cookies and/or tracking pixels. A web server log is a file where website activity is stored. A cookie is a small text file that is placed on your computer when you visit a website, that enables us to: (a) recognize your computer; (b) store your preferences and settings; (c) understand the web pages of the Services you have visited and the referral sites that have led you to our Services; (d) enhance your user experience by delivering content  specific to your inferred interests; (e) perform searches and analytics; and (f) assist with security administrative functions. Tracking pixels (sometimes referred to as web beacons or clear GIFs) are tiny electronic tags with a unique identifier embedded in websites, online ads and/or email, and that are designed to provide usage information like ad impressions or clicks, measure popularity of the Services and associated advertising, and to access user cookies. We may also use tracking technologies in our license buttons and/or icons that you can embed on other sites/services to track the website addresses where they are embedded, gauge user interaction with them, and determine the number of unique viewers of them. If you receive email from us (such as a newsletter, campaign updates, or other ongoing email communications from EL), we may use certain analytics tools, such as clear GIFs, to capture data such as whether you open our message, click on any links or banners our email contains, or otherwise interact with what we send. This data allows us to gauge the effectiveness of our communications and marketing campaigns.  As we adopt additional technologies, we may also gather additional information through other methods.&lt;br /&gt;
&lt;br /&gt;
Please note that you can change your settings to notify you when a cookie is being set or updated, or to block cookies altogether. Please consult the “Help” section of your browser for more information (e.g.,[http://windows.microsoft.com/en-US/windows-vista/Block-or-allow-cookies  Internet Explorer];[https://support.google.com/chrome/answer/95647?hl=en  Google Chrome];[http://kb.mozillazine.org/Cookies#Firefox  Mozilla Firefox]; or[http://support.apple.com/kb/PH5042  Apple Safari]). Please note that by blocking any or all cookies, you may not have access to certain features or offerings of the Services.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; Information from Third Parties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
We may also collect information about you or others through third parties. For example, if you apply for to become an Eco-Libre volunteer, we may collect information from the references or vouchers you identified in your membership application.  To the extent permitted by law, we may also collect information from third parties, including public sources, social media platforms, and marketing and market research firms. Depending on the source, this information collected from third parties could include name, contact information, demographic information, information about an individual’s employer, information to verify identity or trustworthiness, and information for other fraud or safety protection purposes.&lt;br /&gt;
&lt;br /&gt;
=== 3.     How We Use Your Information ===&lt;br /&gt;
&lt;br /&gt;
We may use the information we collect from and about you to:&lt;br /&gt;
&lt;br /&gt;
*        Fulfill the purposes for which you provided it;&lt;br /&gt;
*        Evaluate your application for a scholarship, grant, fellowship, or to become an Eco-Libre Volunteer;&lt;br /&gt;
*        Distribute funds to scholarship and grant recipients;&lt;br /&gt;
*        Provide and improve the Services, including to develop new features or services, promote EL community collaboration, take steps to secure the Services, and for technical and customer support;&lt;br /&gt;
*        Fundraise, accept donations, or process purchases of EL merchandise;&lt;br /&gt;
*        Host events and programs such as EL Summits or EL training courses;&lt;br /&gt;
*        Send you information about your relationship or transactions with us, account alerts, or other communications, such as newsletters to which you have subscribed;&lt;br /&gt;
*        Process and respond to your inquiries or to request your feedback;&lt;br /&gt;
*        Conduct analytics, research, and reporting, including to synthesize and derive insights from your use of our Services;&lt;br /&gt;
*        Evaluate job candidates during our hiring process; and&lt;br /&gt;
*        Comply with the law and protect the safety, rights, property, or security of Eco-Libre, the Services, our users, and the general public&lt;br /&gt;
&lt;br /&gt;
Please note that we may combine information that we collect from you and about you (including automatically collected information) with information we obtain about you from our affiliates and/or non-affiliated third parties, and use such combined information in accordance with this Privacy Policy.&lt;br /&gt;
&lt;br /&gt;
We may aggregate and/or de-identify information collected through the Services. We may use de-identified and/or aggregated data for any purpose, including without limitation for research and marketing purposes.&lt;br /&gt;
&lt;br /&gt;
=== 4.     When We Disclose Your Information ===&lt;br /&gt;
&lt;br /&gt;
We may disclose and/or share your information under the following circumstances:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Service Providers.&#039;&#039;&#039; We may disclose your information with third parties who perform services on our behalf, including without limitation, event management, candidate selection, marketing, customer support, data storage, data analysis and processing, and legal services.&lt;br /&gt;
&lt;br /&gt;
For example, when you apply for a scholarship, grant, fellowship, or to be selected to participate in one of our other programs, EL may share that information with the individuals designated to select participants in, and help manage, those programs, which may include people not employed by Eco-Libre.&lt;br /&gt;
&lt;br /&gt;
Or, when you register for an event, we may share your information with vendors, third party contractors, partner organizations, and volunteers for the purpose of organizing and running the event and related activities.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039; Legal Compliance and Protection of Eco-Libre and Others.&#039;&#039;&#039; We may disclose your information if required to do so by law or on a good faith belief that such disclosure is permitted by this Privacy Policy or reasonably necessary or appropriate for any of the following reasons: (a) to comply with legal process; (b) to enforce or apply our this Privacy Policy, or other contracts with you, including investigation of potential violations thereof; (c) enforce our Charter including the Code of Conduct and policies contained and incorporated therein, (d) to respond to your requests for customer service; and/or (e) to protect the rights, property, or personal safety of Eco-Libre, our agents and affiliates, our users, and the public. This includes exchanging information with other companies and organizations for fraud protection, and spam/malware prevention, and similar purposes.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Business Transfers.&#039;&#039;&#039; As we continue to develop our business, we may engage in certain business transactions, such as the transfer or sale of our assets. In such transactions, (including in contemplation of such transactions, e.g., due diligence) your information may be disclosed. If any of Eco-Libre’ assets are sold or transferred to a third party, customer information (including your email address) would likely be one of the transferred business assets.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Affiliated Companies.&#039;&#039;&#039; We may disclose your information with current or future affiliated companies.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Consent.&#039;&#039;&#039; We may disclose your information to any third parties based on your consent to do so.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Aggregate/De-identified Information.&#039;&#039;&#039; We may disclose de-identified and/or aggregated data for any purpose to third parties, including advertisers, promotional partners, and/or others.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Eco-Libre Volunteers.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
o   In connection with you Eco-Libre Volunteer application, we may provide your information to the individuals you’ve selected to vouch for you, and with those reviewing your application, including the Membership Council whose members include people not employed by Eco-Libre and who are located in various countries around the world.&lt;br /&gt;
&lt;br /&gt;
o   If you vouch for someone’s application to the Eco-Libre Volunteer program, your information will be shared with those reviewing the application, including the Membership Council, and if you provide a positive vouching statement, that statement will be shared with the applicant if and when they are admitted for membership.&lt;br /&gt;
&lt;br /&gt;
o   Once you are an Eco-Libre Volunteer, we may provide you with a public profile page,  pre-populated with certain information you provided in your application such as your name, areas of interest, images or other content you upload, which will be publicly displayed to anyone who visits the site.&lt;br /&gt;
&lt;br /&gt;
=== 5.     Legal Basis for Processing Personal Data ===&lt;br /&gt;
&lt;br /&gt;
The laws in some jurisdictions require companies to tell you about the legal ground they rely on to use or disclose information that can be directly linked to or used to identify you. To the extent those laws apply, our legal grounds for processing such information are as follows:&lt;br /&gt;
&lt;br /&gt;
* To Honor Our Contractual Commitments to You. Much of our processing of information is to meet our contractual obligations to provide services to our users.&lt;br /&gt;
&lt;br /&gt;
* Legitimate Interests. In many cases, we handle information on the ground that it furthers our legitimate interests in ways that are not overridden by the interests or fundamental rights and freedoms of the affected individuals, these include:&lt;br /&gt;
** Customer service&lt;br /&gt;
** Marketing, advertising, and fundraising&lt;br /&gt;
** Protecting our users, personnel, and property&lt;br /&gt;
** Managing user accounts&lt;br /&gt;
** Organizing and running events and programs&lt;br /&gt;
** Analyzing and improving our business&lt;br /&gt;
** Managing legal issues&lt;br /&gt;
We may also process information for the same legitimate interests of our users and business partners.&lt;br /&gt;
&lt;br /&gt;
* Legal Compliance. We may need to use and disclose information in certain ways to comply with our legal obligations.&lt;br /&gt;
&lt;br /&gt;
* Consent. Where required by law, and in some other cases where legally permissible, we handle information on the basis of consent. Where we handle your information on the basis of consent, you have the right to withdraw your consent; in accordance with applicable law.&lt;br /&gt;
&lt;br /&gt;
=== 6.     Online Analytics ===&lt;br /&gt;
&lt;br /&gt;
We may use third-party web analytics services (such as Google Analytics) on our Services to collect and analyze the information discussed above, and to engage in auditing, research, or reporting. The information (including your IP address) collected by various analytics technologies described in the “Cookies and Other Tracking Technologies” section above will be disclosed to or collected directly by these service providers, who use the information to evaluate your use of the Services, including by noting the third-party website from which you arrive to our Site, analyzing usage trends, assisting with fraud prevention, and providing certain features to you. To prevent Google Analytics from using your information for analytics, you may install the Google Analytics Opt-out Browser Add-on by clicking [https://tools.google.com/dlpage/gaoptout here].&lt;br /&gt;
&lt;br /&gt;
=== 7.     Your Choices and Data Subject Rights ===&lt;br /&gt;
&lt;br /&gt;
You have various rights with respect to the collection and use of your information through the Services.  Those choices are as follows:&lt;br /&gt;
&lt;br /&gt;
* Email Unsubscribe – You may unsubscribe from our marketing emails at any time by clicking on the &amp;quot;opt-out completely&amp;quot; link at the bottom of each newsletter&lt;br /&gt;
* Fundraising Analytics – You may opt out of EL&#039;s fundraising analytics activities by contacting Us with your request.&lt;br /&gt;
* Account Preferences – If you have registered for an account with us through our Services, you can update your account information or adjust your email communications preferences by logging into your account and updating your settings.&lt;br /&gt;
* EU Data Subject Rights – Individuals in the European Economic Area (“EEA”) and other jurisdictions have certain legal rights (subject to applicable exceptions and limitations) to obtain confirmation of whether we hold certain information about them, to access such information, and to obtain its correction or deletion in appropriate circumstances. You may have the right to object to our handling of your information, restrict our processing of your information, and to withdraw any consent you have provided. To exercise these rights, please email Us with the nature of your request. You also have the right to go directly to the relevant supervisory or legal authority, but we encourage you to contact us so that we may resolve your concerns directly as best and as promptly as we can.&lt;br /&gt;
&lt;br /&gt;
=== 8.     International Transfers ===&lt;br /&gt;
&lt;br /&gt;
Our computer systems are currently based in Germany and Ecuador and the majority of our Volunteers are based in Ecuador or are located in various countries around the world. As described above in the “When We Disclose Your Information” section, we may share your information with trusted service providers or business partners in countries other than your country of residence, including the United States and Ecuador, in accordance with applicable law. This means that some of your information may be processed in the United States or Ecuador, which may not offer the same level of protection as the privacy laws of your jurisdiction. By providing us with your information, you acknowledge any such transfer, storage or use.&lt;br /&gt;
&lt;br /&gt;
If we provide any information about you to any third parties information processors located outside of the EEA, we will take appropriate measures to ensure such companies protect your information adequately in accordance with this Privacy Policy and other data protection laws to govern the transfers of such data.&lt;br /&gt;
&lt;br /&gt;
=== 9.     Security Measures ===&lt;br /&gt;
&lt;br /&gt;
We have implemented technical, physical, and organizational security measures to protect against the loss, misuse, and/or alteration of your information. These safeguards vary based on the sensitivity of the information that we collect and store. However, we cannot and do not guarantee that these measures will prevent every unauthorized attempt to access, use, or disclose your information since despite our efforts, no Internet and/or other electronic transmissions can be completely secure.&lt;br /&gt;
&lt;br /&gt;
=== 10.  Children ===&lt;br /&gt;
&lt;br /&gt;
The Services are intended for users over the age of 18 and are not directed at children under the age of 13. If we become aware that we have collected personal information (as defined by the Children’s Online Privacy Protection Act) from children under the age of 13, or personal data (as defined by the EU GDPR) from children under the age of 16, we will take reasonable steps to delete it as soon as practicable.&lt;br /&gt;
&lt;br /&gt;
=== 11.  Data Retention ===&lt;br /&gt;
&lt;br /&gt;
We retain the information we collect for as long as necessary to fulfill the purposes set forth in this Privacy Policy or as long as we are legally required or permitted to do so. Information may persist in copies made for backup and business continuity purposes for additional time.&lt;br /&gt;
&lt;br /&gt;
=== 12.  Third-Party Links and Services ===&lt;br /&gt;
&lt;br /&gt;
The Services may contain links to third-party websites (e.g., social media sites like Facebook and Twitter), third-party plug-ins (e.g., the Facebook “like” button and Twitter “follow” button), and other services. If you choose to use these sites or features, you may disclose your information not just to those third-parties, but also to their users and the public more generally depending on how their services function. Eco-Libre is not responsible for the content or privacy practices of such third party websites or services. The collection, use and disclosure of your information will be subject to the privacy policies of the third party websites or services, and not this Privacy Policy. We encourage you to read the privacy statements of each and every site you visit.&lt;br /&gt;
&lt;br /&gt;
=== 13.  Changes to this Privacy Policy ===&lt;br /&gt;
&lt;br /&gt;
We will continue to evaluate this Privacy Policy as we update and expand our Services, and we may make changes to the Privacy Policy accordingly. We will post any changes here and revise the date last updated above. We encourage you to check this page periodically for updates to stay informed on how we collect, use and share your information. If we make material changes to this Privacy Policy, we will provide you with notice as required by law.&lt;br /&gt;
&lt;br /&gt;
=== 14.  Questions About this Privacy Policy ===&lt;br /&gt;
&lt;br /&gt;
If you have any questions about this Privacy Policy or our privacy practices, you can contact us at: https://eco-libre.org/contact&lt;br /&gt;
&lt;br /&gt;
The Eco-Libre Privacy Policy is licensed under the [https://creativecommons.org/licenses/by-sa/4.0/ CC-BY-SA-4.0 license]. You are free to use and adapt this Privacy Policy for your own purposes. &lt;br /&gt;
&lt;br /&gt;
However, please keep in mind that this Privacy Policy may not be completely suitable for your situation. Eco-Libre strongly encourages you to seek the advice of your own attorney before repurposing this Privacy Policy on your own site.&lt;br /&gt;
&lt;br /&gt;
=== 15.  Attribution ===&lt;br /&gt;
&lt;br /&gt;
This Privacy Policy is derived from [https://creativecommons.org/privacy/ the Privacy Policy written by Creative Commons].&lt;br /&gt;
&lt;br /&gt;
[category: Legal]&lt;br /&gt;
[category: Eco-Libre Volunteer Agreements]&lt;/div&gt;</summary>
		<author><name>Maltfield</name></author>
	</entry>
	<entry>
		<id>https://wiki.eco-libre.org/index.php?title=Eco-Libre:Privacy_policy&amp;diff=80</id>
		<title>Eco-Libre:Privacy policy</title>
		<link rel="alternate" type="text/html" href="https://wiki.eco-libre.org/index.php?title=Eco-Libre:Privacy_policy&amp;diff=80"/>
		<updated>2026-04-26T22:00:49Z</updated>

		<summary type="html">&lt;p&gt;Maltfield: added an &amp;quot;attribution&amp;quot; section (not required by public domain iirc, but I like to give credit where credit is due)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This Privacy Policy (“Policy”) explains the information collection, use, and sharing practices of Eco-Libre (“EL”, “we,” “us,” and “our”).&lt;br /&gt;
&lt;br /&gt;
This Policy is incorporated into and part of Eco-Libre Terms of Use located at https://wiki.eco-libre.org/wiki/Eco-Libre:Terms_of_Service.&lt;br /&gt;
&lt;br /&gt;
Unless otherwise noted on a particular website or service hosted by Eco-Libre, this Policy describes and governs the information collection, use, and sharing practices of Eco-Libre with respect to your use of our websites that link to this Privacy Policy, including: https://eco-libre.org, https://www.eco-libre.org, https://phplist.eco-libre.org, and https://wiki.eco-libre.org (collectively, the “Websites”), and the services we provide through our Websites and/or host on our servers, and the services available through them are referred to as the “Services”).&lt;br /&gt;
&lt;br /&gt;
Before you use or submit any information through or in connection with the Services, please carefully review this Privacy Policy. By using any part of the Services, you understand that your information will be collected, used, and disclosed as outlined in this Privacy Policy. IF YOU DO NOT AGREE TO THIS PRIVACY POLICY, PLEASE DO NOT USE THE SERVICES.&lt;br /&gt;
&lt;br /&gt;
=== 1.     Our Principles ===&lt;br /&gt;
&lt;br /&gt;
Eco-Libre has designed this policy to be consistent with the following principles:&lt;br /&gt;
&lt;br /&gt;
*   Privacy policies should be human readable and easy to find.&lt;br /&gt;
*   Data collection, storage, and processing should be simplified as much as possible to enhance security, ensure consistency, and make the practices easy for users to understand. &lt;br /&gt;
*  Data practices should meet the reasonable expectations of users.&lt;br /&gt;
&lt;br /&gt;
=== 2.     Information We Collect ===&lt;br /&gt;
&lt;br /&gt;
We collect information in multiple ways, including when you provide information directly to us; when we passively collect information from you, such as from your browser or device; and from third parties.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Information You Provide Directly to Us&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
We will collect any information you provide to us. We may collect information from you in a variety of ways, such as when you: (a) create an online account, (b) apply for to become an Eco-Libre volunteer, (c) create an account for one of our Services, (d) make a donation or purchase, (e) register for an event, (f) apply for a scholarship, grant, or fellowship, (g) contact us or provide feedback, (h) sign a petition distributed by Eco-Libre, (i) upload your creative work or images, (j) subscribe to our newsletter, or (k) apply for a job at Eco-Libre. This information may include but is not limited to your name, email address, phone number, mailing address, payment information, photo, geographic location, and your social media handles.  We may also collect additional demographic and other information about you in connection with our conferences and events (e.g., dietary and other preferences), and the provision of this information to us by you is optional.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Information that Is Automatically Collected&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Device/Usage Information&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
We may automatically collect certain information about the computer or devices (including mobile devices or tablets) you use to access the Services. As described further below, we may collect and analyze (a) device information such as IP addresses, location information (by country and city), unique device identifiers, IMEI and TCP/IP address, browser types, browser language, operating system, mobile device carrier information, and (b) information related to the ways in which you interact with the Services, such as referring and exit web pages and URLs, platform type, the number of clicks, domain names, landing pages, pages and content viewed and the order of those pages, statistical information about the use of the Services, the amount of time spent on particular pages, the date and time you used the Services, the frequency of your use of the Services, error logs, and other similar information. As described further below, we may use third-party analytics providers and technologies, including cookies and similar tools, to assist in collecting this information.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Cookies and Other Tracking Technologies&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
We also collect data about your use of the Services through the use of Internet server logs and online tracking technologies, like cookies and/or tracking pixels. A web server log is a file where website activity is stored. A cookie is a small text file that is placed on your computer when you visit a website, that enables us to: (a) recognize your computer; (b) store your preferences and settings; (c) understand the web pages of the Services you have visited and the referral sites that have led you to our Services; (d) enhance your user experience by delivering content  specific to your inferred interests; (e) perform searches and analytics; and (f) assist with security administrative functions. Tracking pixels (sometimes referred to as web beacons or clear GIFs) are tiny electronic tags with a unique identifier embedded in websites, online ads and/or email, and that are designed to provide usage information like ad impressions or clicks, measure popularity of the Services and associated advertising, and to access user cookies. We may also use tracking technologies in our license buttons and/or icons that you can embed on other sites/services to track the website addresses where they are embedded, gauge user interaction with them, and determine the number of unique viewers of them. If you receive email from us (such as a newsletter, campaign updates, or other ongoing email communications from EL), we may use certain analytics tools, such as clear GIFs, to capture data such as whether you open our message, click on any links or banners our email contains, or otherwise interact with what we send. This data allows us to gauge the effectiveness of our communications and marketing campaigns.  As we adopt additional technologies, we may also gather additional information through other methods.&lt;br /&gt;
&lt;br /&gt;
Please note that you can change your settings to notify you when a cookie is being set or updated, or to block cookies altogether. Please consult the “Help” section of your browser for more information (e.g.,[http://windows.microsoft.com/en-US/windows-vista/Block-or-allow-cookies  Internet Explorer];[https://support.google.com/chrome/answer/95647?hl=en  Google Chrome];[http://kb.mozillazine.org/Cookies#Firefox  Mozilla Firefox]; or[http://support.apple.com/kb/PH5042  Apple Safari]). Please note that by blocking any or all cookies, you may not have access to certain features or offerings of the Services.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; Information from Third Parties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
We may also collect information about you or others through third parties. For example, if you apply for to become an Eco-Libre volunteer, we may collect information from the references or vouchers you identified in your membership application.  To the extent permitted by law, we may also collect information from third parties, including public sources, social media platforms, and marketing and market research firms. Depending on the source, this information collected from third parties could include name, contact information, demographic information, information about an individual’s employer, information to verify identity or trustworthiness, and information for other fraud or safety protection purposes.&lt;br /&gt;
&lt;br /&gt;
=== 3.     How We Use Your Information ===&lt;br /&gt;
&lt;br /&gt;
We may use the information we collect from and about you to:&lt;br /&gt;
&lt;br /&gt;
*        Fulfill the purposes for which you provided it;&lt;br /&gt;
*        Evaluate your application for a scholarship, grant, fellowship, or to become an Eco-Libre Volunteer;&lt;br /&gt;
*        Distribute funds to scholarship and grant recipients;&lt;br /&gt;
*        Provide and improve the Services, including to develop new features or services, promote EL community collaboration, take steps to secure the Services, and for technical and customer support;&lt;br /&gt;
*        Fundraise, accept donations, or process purchases of EL merchandise;&lt;br /&gt;
*        Host events and programs such as EL Summits or EL training courses;&lt;br /&gt;
*        Send you information about your relationship or transactions with us, account alerts, or other communications, such as newsletters to which you have subscribed;&lt;br /&gt;
*        Process and respond to your inquiries or to request your feedback;&lt;br /&gt;
*        Conduct analytics, research, and reporting, including to synthesize and derive insights from your use of our Services;&lt;br /&gt;
*        Evaluate job candidates during our hiring process; and&lt;br /&gt;
*        Comply with the law and protect the safety, rights, property, or security of Eco-Libre, the Services, our users, and the general public&lt;br /&gt;
&lt;br /&gt;
Please note that we may combine information that we collect from you and about you (including automatically collected information) with information we obtain about you from our affiliates and/or non-affiliated third parties, and use such combined information in accordance with this Privacy Policy.&lt;br /&gt;
&lt;br /&gt;
We may aggregate and/or de-identify information collected through the Services. We may use de-identified and/or aggregated data for any purpose, including without limitation for research and marketing purposes.&lt;br /&gt;
&lt;br /&gt;
=== 4.     When We Disclose Your Information ===&lt;br /&gt;
&lt;br /&gt;
We may disclose and/or share your information under the following circumstances:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Service Providers.&#039;&#039;&#039; We may disclose your information with third parties who perform services on our behalf, including without limitation, event management, candidate selection, marketing, customer support, data storage, data analysis and processing, and legal services.&lt;br /&gt;
&lt;br /&gt;
For example, when you apply for a scholarship, grant, fellowship, or to be selected to participate in one of our other programs, EL may share that information with the individuals designated to select participants in, and help manage, those programs, which may include people not employed by Eco-Libre.&lt;br /&gt;
&lt;br /&gt;
Or, when you register for an event, we may share your information with vendors, third party contractors, partner organizations, and volunteers for the purpose of organizing and running the event and related activities.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039; Legal Compliance and Protection of Eco-Libre and Others.&#039;&#039;&#039; We may disclose your information if required to do so by law or on a good faith belief that such disclosure is permitted by this Privacy Policy or reasonably necessary or appropriate for any of the following reasons: (a) to comply with legal process; (b) to enforce or apply our this Privacy Policy, or other contracts with you, including investigation of potential violations thereof; (c) enforce our Charter including the Code of Conduct and policies contained and incorporated therein, (d) to respond to your requests for customer service; and/or (e) to protect the rights, property, or personal safety of Eco-Libre, our agents and affiliates, our users, and the public. This includes exchanging information with other companies and organizations for fraud protection, and spam/malware prevention, and similar purposes.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Business Transfers.&#039;&#039;&#039; As we continue to develop our business, we may engage in certain business transactions, such as the transfer or sale of our assets. In such transactions, (including in contemplation of such transactions, e.g., due diligence) your information may be disclosed. If any of Eco-Libre’ assets are sold or transferred to a third party, customer information (including your email address) would likely be one of the transferred business assets.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Affiliated Companies.&#039;&#039;&#039; We may disclose your information with current or future affiliated companies.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Consent.&#039;&#039;&#039; We may disclose your information to any third parties based on your consent to do so.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Aggregate/De-identified Information.&#039;&#039;&#039; We may disclose de-identified and/or aggregated data for any purpose to third parties, including advertisers, promotional partners, and/or others.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Eco-Libre Volunteers.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
o   In connection with you Eco-Libre Volunteer application, we may provide your information to the individuals you’ve selected to vouch for you, and with those reviewing your application, including the Membership Council whose members include people not employed by Eco-Libre and who are located in various countries around the world.&lt;br /&gt;
&lt;br /&gt;
o   If you vouch for someone’s application to the Eco-Libre Volunteer program, your information will be shared with those reviewing the application, including the Membership Council, and if you provide a positive vouching statement, that statement will be shared with the applicant if and when they are admitted for membership.&lt;br /&gt;
&lt;br /&gt;
o   Once you are an Eco-Libre Volunteer, we may provide you with a public profile page,  pre-populated with certain information you provided in your application such as your name, areas of interest, images or other content you upload, which will be publicly displayed to anyone who visits the site.&lt;br /&gt;
&lt;br /&gt;
=== 5.     Legal Basis for Processing Personal Data ===&lt;br /&gt;
&lt;br /&gt;
The laws in some jurisdictions require companies to tell you about the legal ground they rely on to use or disclose information that can be directly linked to or used to identify you. To the extent those laws apply, our legal grounds for processing such information are as follows:&lt;br /&gt;
&lt;br /&gt;
* To Honor Our Contractual Commitments to You. Much of our processing of information is to meet our contractual obligations to provide services to our users.&lt;br /&gt;
&lt;br /&gt;
* Legitimate Interests. In many cases, we handle information on the ground that it furthers our legitimate interests in ways that are not overridden by the interests or fundamental rights and freedoms of the affected individuals, these include:&lt;br /&gt;
** Customer service&lt;br /&gt;
** Marketing, advertising, and fundraising&lt;br /&gt;
** Protecting our users, personnel, and property&lt;br /&gt;
** Managing user accounts&lt;br /&gt;
** Organizing and running events and programs&lt;br /&gt;
** Analyzing and improving our business&lt;br /&gt;
** Managing legal issues&lt;br /&gt;
We may also process information for the same legitimate interests of our users and business partners.&lt;br /&gt;
&lt;br /&gt;
* Legal Compliance. We may need to use and disclose information in certain ways to comply with our legal obligations.&lt;br /&gt;
&lt;br /&gt;
* Consent. Where required by law, and in some other cases where legally permissible, we handle information on the basis of consent. Where we handle your information on the basis of consent, you have the right to withdraw your consent; in accordance with applicable law.&lt;br /&gt;
&lt;br /&gt;
=== 6.     Online Analytics ===&lt;br /&gt;
&lt;br /&gt;
We may use third-party web analytics services (such as Google Analytics) on our Services to collect and analyze the information discussed above, and to engage in auditing, research, or reporting. The information (including your IP address) collected by various analytics technologies described in the “Cookies and Other Tracking Technologies” section above will be disclosed to or collected directly by these service providers, who use the information to evaluate your use of the Services, including by noting the third-party website from which you arrive to our Site, analyzing usage trends, assisting with fraud prevention, and providing certain features to you. To prevent Google Analytics from using your information for analytics, you may install the Google Analytics Opt-out Browser Add-on by clicking [https://tools.google.com/dlpage/gaoptout here].&lt;br /&gt;
&lt;br /&gt;
=== 7.     Your Choices and Data Subject Rights ===&lt;br /&gt;
&lt;br /&gt;
You have various rights with respect to the collection and use of your information through the Services.  Those choices are as follows:&lt;br /&gt;
&lt;br /&gt;
* Email Unsubscribe – You may unsubscribe from our marketing emails at any time by clicking on the &amp;quot;opt-out completely&amp;quot; link at the bottom of each newsletter&lt;br /&gt;
* Fundraising Analytics – You may opt out of EL&#039;s fundraising analytics activities by contacting Us with your request.&lt;br /&gt;
* Account Preferences – If you have registered for an account with us through our Services, you can update your account information or adjust your email communications preferences by logging into your account and updating your settings.&lt;br /&gt;
* EU Data Subject Rights – Individuals in the European Economic Area (“EEA”) and other jurisdictions have certain legal rights (subject to applicable exceptions and limitations) to obtain confirmation of whether we hold certain information about them, to access such information, and to obtain its correction or deletion in appropriate circumstances. You may have the right to object to our handling of your information, restrict our processing of your information, and to withdraw any consent you have provided. To exercise these rights, please email Us with the nature of your request. You also have the right to go directly to the relevant supervisory or legal authority, but we encourage you to contact us so that we may resolve your concerns directly as best and as promptly as we can.&lt;br /&gt;
&lt;br /&gt;
=== 8.     International Transfers ===&lt;br /&gt;
&lt;br /&gt;
Our computer systems are currently based in Germany and Ecuador and the majority of our Volunteers are based in Ecuador or are located in various countries around the world. As described above in the “When We Disclose Your Information” section, we may share your information with trusted service providers or business partners in countries other than your country of residence, including the United States and Ecuador, in accordance with applicable law. This means that some of your information may be processed in the United States or Ecuador, which may not offer the same level of protection as the privacy laws of your jurisdiction. By providing us with your information, you acknowledge any such transfer, storage or use.&lt;br /&gt;
&lt;br /&gt;
If we provide any information about you to any third parties information processors located outside of the EEA, we will take appropriate measures to ensure such companies protect your information adequately in accordance with this Privacy Policy and other data protection laws to govern the transfers of such data.&lt;br /&gt;
&lt;br /&gt;
=== 9.     Security Measures ===&lt;br /&gt;
&lt;br /&gt;
We have implemented technical, physical, and organizational security measures to protect against the loss, misuse, and/or alteration of your information. These safeguards vary based on the sensitivity of the information that we collect and store. However, we cannot and do not guarantee that these measures will prevent every unauthorized attempt to access, use, or disclose your information since despite our efforts, no Internet and/or other electronic transmissions can be completely secure.&lt;br /&gt;
&lt;br /&gt;
=== 10.  Children ===&lt;br /&gt;
&lt;br /&gt;
The Services are intended for users over the age of 18 and are not directed at children under the age of 13. If we become aware that we have collected personal information (as defined by the Children’s Online Privacy Protection Act) from children under the age of 13, or personal data (as defined by the EU GDPR) from children under the age of 16, we will take reasonable steps to delete it as soon as practicable.&lt;br /&gt;
&lt;br /&gt;
=== 11.  Data Retention ===&lt;br /&gt;
&lt;br /&gt;
We retain the information we collect for as long as necessary to fulfill the purposes set forth in this Privacy Policy or as long as we are legally required or permitted to do so. Information may persist in copies made for backup and business continuity purposes for additional time.&lt;br /&gt;
&lt;br /&gt;
=== 12.  Third-Party Links and Services ===&lt;br /&gt;
&lt;br /&gt;
The Services may contain links to third-party websites (e.g., social media sites like Facebook and Twitter), third-party plug-ins (e.g., the Facebook “like” button and Twitter “follow” button), and other services. If you choose to use these sites or features, you may disclose your information not just to those third-parties, but also to their users and the public more generally depending on how their services function. Eco-Libre is not responsible for the content or privacy practices of such third party websites or services. The collection, use and disclosure of your information will be subject to the privacy policies of the third party websites or services, and not this Privacy Policy. We encourage you to read the privacy statements of each and every site you visit.&lt;br /&gt;
&lt;br /&gt;
=== 13.  Changes to this Privacy Policy ===&lt;br /&gt;
&lt;br /&gt;
We will continue to evaluate this Privacy Policy as we update and expand our Services, and we may make changes to the Privacy Policy accordingly. We will post any changes here and revise the date last updated above. We encourage you to check this page periodically for updates to stay informed on how we collect, use and share your information. If we make material changes to this Privacy Policy, we will provide you with notice as required by law.&lt;br /&gt;
&lt;br /&gt;
=== 14.  Questions About this Privacy Policy ===&lt;br /&gt;
&lt;br /&gt;
If you have any questions about this Privacy Policy or our privacy practices, you can contact us at: https://eco-libre.org/contact&lt;br /&gt;
&lt;br /&gt;
The Eco-Libre Privacy Policy is licensed under the [https://creativecommons.org/licenses/by-sa/4.0/ CC-BY-SA-4.0 license]. You are free to use and adapt this Privacy Policy for your own purposes. &lt;br /&gt;
&lt;br /&gt;
However, please keep in mind that this Privacy Policy may not be completely suitable for your situation. Eco-Libre strongly encourages you to seek the advice of your own attorney before repurposing this Privacy Policy on your own site.&lt;br /&gt;
&lt;br /&gt;
=== 15.  Attribution ===&lt;br /&gt;
&lt;br /&gt;
This Privacy Policy is derived from [https://creativecommons.org/privacy/ the Privacy Policy written by Creative Commons].&lt;/div&gt;</summary>
		<author><name>Maltfield</name></author>
	</entry>
	<entry>
		<id>https://wiki.eco-libre.org/index.php?title=Eco-Libre:Privacy_policy&amp;diff=79</id>
		<title>Eco-Libre:Privacy policy</title>
		<link rel="alternate" type="text/html" href="https://wiki.eco-libre.org/index.php?title=Eco-Libre:Privacy_policy&amp;diff=79"/>
		<updated>2026-04-26T21:58:27Z</updated>

		<summary type="html">&lt;p&gt;Maltfield: /* 14.  Questions About this Privacy Policy */ we use copyleft, not public domain&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This Privacy Policy (“Policy”) explains the information collection, use, and sharing practices of Eco-Libre (“EL”, “we,” “us,” and “our”).&lt;br /&gt;
&lt;br /&gt;
This Policy is incorporated into and part of Eco-Libre Terms of Use located at https://wiki.eco-libre.org/wiki/Eco-Libre:Terms_of_Service.&lt;br /&gt;
&lt;br /&gt;
Unless otherwise noted on a particular website or service hosted by Eco-Libre, this Policy describes and governs the information collection, use, and sharing practices of Eco-Libre with respect to your use of our websites that link to this Privacy Policy, including: https://eco-libre.org, https://www.eco-libre.org, https://phplist.eco-libre.org, and https://wiki.eco-libre.org (collectively, the “Websites”), and the services we provide through our Websites and/or host on our servers, and the services available through them are referred to as the “Services”).&lt;br /&gt;
&lt;br /&gt;
Before you use or submit any information through or in connection with the Services, please carefully review this Privacy Policy. By using any part of the Services, you understand that your information will be collected, used, and disclosed as outlined in this Privacy Policy. IF YOU DO NOT AGREE TO THIS PRIVACY POLICY, PLEASE DO NOT USE THE SERVICES.&lt;br /&gt;
&lt;br /&gt;
=== 1.     Our Principles ===&lt;br /&gt;
&lt;br /&gt;
Eco-Libre has designed this policy to be consistent with the following principles:&lt;br /&gt;
&lt;br /&gt;
*   Privacy policies should be human readable and easy to find.&lt;br /&gt;
*   Data collection, storage, and processing should be simplified as much as possible to enhance security, ensure consistency, and make the practices easy for users to understand. &lt;br /&gt;
*  Data practices should meet the reasonable expectations of users.&lt;br /&gt;
&lt;br /&gt;
=== 2.     Information We Collect ===&lt;br /&gt;
&lt;br /&gt;
We collect information in multiple ways, including when you provide information directly to us; when we passively collect information from you, such as from your browser or device; and from third parties.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Information You Provide Directly to Us&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
We will collect any information you provide to us. We may collect information from you in a variety of ways, such as when you: (a) create an online account, (b) apply for to become an Eco-Libre volunteer, (c) create an account for one of our Services, (d) make a donation or purchase, (e) register for an event, (f) apply for a scholarship, grant, or fellowship, (g) contact us or provide feedback, (h) sign a petition distributed by Eco-Libre, (i) upload your creative work or images, (j) subscribe to our newsletter, or (k) apply for a job at Eco-Libre. This information may include but is not limited to your name, email address, phone number, mailing address, payment information, photo, geographic location, and your social media handles.  We may also collect additional demographic and other information about you in connection with our conferences and events (e.g., dietary and other preferences), and the provision of this information to us by you is optional.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Information that Is Automatically Collected&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Device/Usage Information&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
We may automatically collect certain information about the computer or devices (including mobile devices or tablets) you use to access the Services. As described further below, we may collect and analyze (a) device information such as IP addresses, location information (by country and city), unique device identifiers, IMEI and TCP/IP address, browser types, browser language, operating system, mobile device carrier information, and (b) information related to the ways in which you interact with the Services, such as referring and exit web pages and URLs, platform type, the number of clicks, domain names, landing pages, pages and content viewed and the order of those pages, statistical information about the use of the Services, the amount of time spent on particular pages, the date and time you used the Services, the frequency of your use of the Services, error logs, and other similar information. As described further below, we may use third-party analytics providers and technologies, including cookies and similar tools, to assist in collecting this information.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Cookies and Other Tracking Technologies&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
We also collect data about your use of the Services through the use of Internet server logs and online tracking technologies, like cookies and/or tracking pixels. A web server log is a file where website activity is stored. A cookie is a small text file that is placed on your computer when you visit a website, that enables us to: (a) recognize your computer; (b) store your preferences and settings; (c) understand the web pages of the Services you have visited and the referral sites that have led you to our Services; (d) enhance your user experience by delivering content  specific to your inferred interests; (e) perform searches and analytics; and (f) assist with security administrative functions. Tracking pixels (sometimes referred to as web beacons or clear GIFs) are tiny electronic tags with a unique identifier embedded in websites, online ads and/or email, and that are designed to provide usage information like ad impressions or clicks, measure popularity of the Services and associated advertising, and to access user cookies. We may also use tracking technologies in our license buttons and/or icons that you can embed on other sites/services to track the website addresses where they are embedded, gauge user interaction with them, and determine the number of unique viewers of them. If you receive email from us (such as a newsletter, campaign updates, or other ongoing email communications from EL), we may use certain analytics tools, such as clear GIFs, to capture data such as whether you open our message, click on any links or banners our email contains, or otherwise interact with what we send. This data allows us to gauge the effectiveness of our communications and marketing campaigns.  As we adopt additional technologies, we may also gather additional information through other methods.&lt;br /&gt;
&lt;br /&gt;
Please note that you can change your settings to notify you when a cookie is being set or updated, or to block cookies altogether. Please consult the “Help” section of your browser for more information (e.g.,[http://windows.microsoft.com/en-US/windows-vista/Block-or-allow-cookies  Internet Explorer];[https://support.google.com/chrome/answer/95647?hl=en  Google Chrome];[http://kb.mozillazine.org/Cookies#Firefox  Mozilla Firefox]; or[http://support.apple.com/kb/PH5042  Apple Safari]). Please note that by blocking any or all cookies, you may not have access to certain features or offerings of the Services.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; Information from Third Parties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
We may also collect information about you or others through third parties. For example, if you apply for to become an Eco-Libre volunteer, we may collect information from the references or vouchers you identified in your membership application.  To the extent permitted by law, we may also collect information from third parties, including public sources, social media platforms, and marketing and market research firms. Depending on the source, this information collected from third parties could include name, contact information, demographic information, information about an individual’s employer, information to verify identity or trustworthiness, and information for other fraud or safety protection purposes.&lt;br /&gt;
&lt;br /&gt;
=== 3.     How We Use Your Information ===&lt;br /&gt;
&lt;br /&gt;
We may use the information we collect from and about you to:&lt;br /&gt;
&lt;br /&gt;
*        Fulfill the purposes for which you provided it;&lt;br /&gt;
*        Evaluate your application for a scholarship, grant, fellowship, or to become an Eco-Libre Volunteer;&lt;br /&gt;
*        Distribute funds to scholarship and grant recipients;&lt;br /&gt;
*        Provide and improve the Services, including to develop new features or services, promote EL community collaboration, take steps to secure the Services, and for technical and customer support;&lt;br /&gt;
*        Fundraise, accept donations, or process purchases of EL merchandise;&lt;br /&gt;
*        Host events and programs such as EL Summits or EL training courses;&lt;br /&gt;
*        Send you information about your relationship or transactions with us, account alerts, or other communications, such as newsletters to which you have subscribed;&lt;br /&gt;
*        Process and respond to your inquiries or to request your feedback;&lt;br /&gt;
*        Conduct analytics, research, and reporting, including to synthesize and derive insights from your use of our Services;&lt;br /&gt;
*        Evaluate job candidates during our hiring process; and&lt;br /&gt;
*        Comply with the law and protect the safety, rights, property, or security of Eco-Libre, the Services, our users, and the general public&lt;br /&gt;
&lt;br /&gt;
Please note that we may combine information that we collect from you and about you (including automatically collected information) with information we obtain about you from our affiliates and/or non-affiliated third parties, and use such combined information in accordance with this Privacy Policy.&lt;br /&gt;
&lt;br /&gt;
We may aggregate and/or de-identify information collected through the Services. We may use de-identified and/or aggregated data for any purpose, including without limitation for research and marketing purposes.&lt;br /&gt;
&lt;br /&gt;
=== 4.     When We Disclose Your Information ===&lt;br /&gt;
&lt;br /&gt;
We may disclose and/or share your information under the following circumstances:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Service Providers.&#039;&#039;&#039; We may disclose your information with third parties who perform services on our behalf, including without limitation, event management, candidate selection, marketing, customer support, data storage, data analysis and processing, and legal services.&lt;br /&gt;
&lt;br /&gt;
For example, when you apply for a scholarship, grant, fellowship, or to be selected to participate in one of our other programs, EL may share that information with the individuals designated to select participants in, and help manage, those programs, which may include people not employed by Eco-Libre.&lt;br /&gt;
&lt;br /&gt;
Or, when you register for an event, we may share your information with vendors, third party contractors, partner organizations, and volunteers for the purpose of organizing and running the event and related activities.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039; Legal Compliance and Protection of Eco-Libre and Others.&#039;&#039;&#039; We may disclose your information if required to do so by law or on a good faith belief that such disclosure is permitted by this Privacy Policy or reasonably necessary or appropriate for any of the following reasons: (a) to comply with legal process; (b) to enforce or apply our this Privacy Policy, or other contracts with you, including investigation of potential violations thereof; (c) enforce our Charter including the Code of Conduct and policies contained and incorporated therein, (d) to respond to your requests for customer service; and/or (e) to protect the rights, property, or personal safety of Eco-Libre, our agents and affiliates, our users, and the public. This includes exchanging information with other companies and organizations for fraud protection, and spam/malware prevention, and similar purposes.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Business Transfers.&#039;&#039;&#039; As we continue to develop our business, we may engage in certain business transactions, such as the transfer or sale of our assets. In such transactions, (including in contemplation of such transactions, e.g., due diligence) your information may be disclosed. If any of Eco-Libre’ assets are sold or transferred to a third party, customer information (including your email address) would likely be one of the transferred business assets.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Affiliated Companies.&#039;&#039;&#039; We may disclose your information with current or future affiliated companies.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Consent.&#039;&#039;&#039; We may disclose your information to any third parties based on your consent to do so.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Aggregate/De-identified Information.&#039;&#039;&#039; We may disclose de-identified and/or aggregated data for any purpose to third parties, including advertisers, promotional partners, and/or others.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Eco-Libre Volunteers.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
o   In connection with you Eco-Libre Volunteer application, we may provide your information to the individuals you’ve selected to vouch for you, and with those reviewing your application, including the Membership Council whose members include people not employed by Eco-Libre and who are located in various countries around the world.&lt;br /&gt;
&lt;br /&gt;
o   If you vouch for someone’s application to the Eco-Libre Volunteer program, your information will be shared with those reviewing the application, including the Membership Council, and if you provide a positive vouching statement, that statement will be shared with the applicant if and when they are admitted for membership.&lt;br /&gt;
&lt;br /&gt;
o   Once you are an Eco-Libre Volunteer, we may provide you with a public profile page,  pre-populated with certain information you provided in your application such as your name, areas of interest, images or other content you upload, which will be publicly displayed to anyone who visits the site.&lt;br /&gt;
&lt;br /&gt;
=== 5.     Legal Basis for Processing Personal Data ===&lt;br /&gt;
&lt;br /&gt;
The laws in some jurisdictions require companies to tell you about the legal ground they rely on to use or disclose information that can be directly linked to or used to identify you. To the extent those laws apply, our legal grounds for processing such information are as follows:&lt;br /&gt;
&lt;br /&gt;
* To Honor Our Contractual Commitments to You. Much of our processing of information is to meet our contractual obligations to provide services to our users.&lt;br /&gt;
&lt;br /&gt;
* Legitimate Interests. In many cases, we handle information on the ground that it furthers our legitimate interests in ways that are not overridden by the interests or fundamental rights and freedoms of the affected individuals, these include:&lt;br /&gt;
** Customer service&lt;br /&gt;
** Marketing, advertising, and fundraising&lt;br /&gt;
** Protecting our users, personnel, and property&lt;br /&gt;
** Managing user accounts&lt;br /&gt;
** Organizing and running events and programs&lt;br /&gt;
** Analyzing and improving our business&lt;br /&gt;
** Managing legal issues&lt;br /&gt;
We may also process information for the same legitimate interests of our users and business partners.&lt;br /&gt;
&lt;br /&gt;
* Legal Compliance. We may need to use and disclose information in certain ways to comply with our legal obligations.&lt;br /&gt;
&lt;br /&gt;
* Consent. Where required by law, and in some other cases where legally permissible, we handle information on the basis of consent. Where we handle your information on the basis of consent, you have the right to withdraw your consent; in accordance with applicable law.&lt;br /&gt;
&lt;br /&gt;
=== 6.     Online Analytics ===&lt;br /&gt;
&lt;br /&gt;
We may use third-party web analytics services (such as Google Analytics) on our Services to collect and analyze the information discussed above, and to engage in auditing, research, or reporting. The information (including your IP address) collected by various analytics technologies described in the “Cookies and Other Tracking Technologies” section above will be disclosed to or collected directly by these service providers, who use the information to evaluate your use of the Services, including by noting the third-party website from which you arrive to our Site, analyzing usage trends, assisting with fraud prevention, and providing certain features to you. To prevent Google Analytics from using your information for analytics, you may install the Google Analytics Opt-out Browser Add-on by clicking [https://tools.google.com/dlpage/gaoptout here].&lt;br /&gt;
&lt;br /&gt;
=== 7.     Your Choices and Data Subject Rights ===&lt;br /&gt;
&lt;br /&gt;
You have various rights with respect to the collection and use of your information through the Services.  Those choices are as follows:&lt;br /&gt;
&lt;br /&gt;
* Email Unsubscribe – You may unsubscribe from our marketing emails at any time by clicking on the &amp;quot;opt-out completely&amp;quot; link at the bottom of each newsletter&lt;br /&gt;
* Fundraising Analytics – You may opt out of EL&#039;s fundraising analytics activities by contacting Us with your request.&lt;br /&gt;
* Account Preferences – If you have registered for an account with us through our Services, you can update your account information or adjust your email communications preferences by logging into your account and updating your settings.&lt;br /&gt;
* EU Data Subject Rights – Individuals in the European Economic Area (“EEA”) and other jurisdictions have certain legal rights (subject to applicable exceptions and limitations) to obtain confirmation of whether we hold certain information about them, to access such information, and to obtain its correction or deletion in appropriate circumstances. You may have the right to object to our handling of your information, restrict our processing of your information, and to withdraw any consent you have provided. To exercise these rights, please email Us with the nature of your request. You also have the right to go directly to the relevant supervisory or legal authority, but we encourage you to contact us so that we may resolve your concerns directly as best and as promptly as we can.&lt;br /&gt;
&lt;br /&gt;
=== 8.     International Transfers ===&lt;br /&gt;
&lt;br /&gt;
Our computer systems are currently based in Germany and Ecuador and the majority of our Volunteers are based in Ecuador or are located in various countries around the world. As described above in the “When We Disclose Your Information” section, we may share your information with trusted service providers or business partners in countries other than your country of residence, including the United States and Ecuador, in accordance with applicable law. This means that some of your information may be processed in the United States or Ecuador, which may not offer the same level of protection as the privacy laws of your jurisdiction. By providing us with your information, you acknowledge any such transfer, storage or use.&lt;br /&gt;
&lt;br /&gt;
If we provide any information about you to any third parties information processors located outside of the EEA, we will take appropriate measures to ensure such companies protect your information adequately in accordance with this Privacy Policy and other data protection laws to govern the transfers of such data.&lt;br /&gt;
&lt;br /&gt;
=== 9.     Security Measures ===&lt;br /&gt;
&lt;br /&gt;
We have implemented technical, physical, and organizational security measures to protect against the loss, misuse, and/or alteration of your information. These safeguards vary based on the sensitivity of the information that we collect and store. However, we cannot and do not guarantee that these measures will prevent every unauthorized attempt to access, use, or disclose your information since despite our efforts, no Internet and/or other electronic transmissions can be completely secure.&lt;br /&gt;
&lt;br /&gt;
=== 10.  Children ===&lt;br /&gt;
&lt;br /&gt;
The Services are intended for users over the age of 18 and are not directed at children under the age of 13. If we become aware that we have collected personal information (as defined by the Children’s Online Privacy Protection Act) from children under the age of 13, or personal data (as defined by the EU GDPR) from children under the age of 16, we will take reasonable steps to delete it as soon as practicable.&lt;br /&gt;
&lt;br /&gt;
=== 11.  Data Retention ===&lt;br /&gt;
&lt;br /&gt;
We retain the information we collect for as long as necessary to fulfill the purposes set forth in this Privacy Policy or as long as we are legally required or permitted to do so. Information may persist in copies made for backup and business continuity purposes for additional time.&lt;br /&gt;
&lt;br /&gt;
=== 12.  Third-Party Links and Services ===&lt;br /&gt;
&lt;br /&gt;
The Services may contain links to third-party websites (e.g., social media sites like Facebook and Twitter), third-party plug-ins (e.g., the Facebook “like” button and Twitter “follow” button), and other services. If you choose to use these sites or features, you may disclose your information not just to those third-parties, but also to their users and the public more generally depending on how their services function. Eco-Libre is not responsible for the content or privacy practices of such third party websites or services. The collection, use and disclosure of your information will be subject to the privacy policies of the third party websites or services, and not this Privacy Policy. We encourage you to read the privacy statements of each and every site you visit.&lt;br /&gt;
&lt;br /&gt;
=== 13.  Changes to this Privacy Policy ===&lt;br /&gt;
&lt;br /&gt;
We will continue to evaluate this Privacy Policy as we update and expand our Services, and we may make changes to the Privacy Policy accordingly. We will post any changes here and revise the date last updated above. We encourage you to check this page periodically for updates to stay informed on how we collect, use and share your information. If we make material changes to this Privacy Policy, we will provide you with notice as required by law.&lt;br /&gt;
&lt;br /&gt;
=== 14.  Questions About this Privacy Policy ===&lt;br /&gt;
&lt;br /&gt;
If you have any questions about this Privacy Policy or our privacy practices, you can contact us at: https://eco-libre.org/contact&lt;br /&gt;
&lt;br /&gt;
The Eco-Libre Privacy Policy is licensed under the [https://creativecommons.org/licenses/by-sa/4.0/ CC-BY-SA-4.0 license]. You are free to use and adapt this Privacy Policy for your own purposes. &lt;br /&gt;
&lt;br /&gt;
However, please keep in mind that this Privacy Policy may not be completely suitable for your situation. Eco-Libre strongly encourages you to seek the advice of your own attorney before repurposing this Privacy Policy on your own site.&lt;/div&gt;</summary>
		<author><name>Maltfield</name></author>
	</entry>
	<entry>
		<id>https://wiki.eco-libre.org/index.php?title=Eco-Libre:Privacy_policy&amp;diff=78</id>
		<title>Eco-Libre:Privacy policy</title>
		<link rel="alternate" type="text/html" href="https://wiki.eco-libre.org/index.php?title=Eco-Libre:Privacy_policy&amp;diff=78"/>
		<updated>2026-04-26T21:56:11Z</updated>

		<summary type="html">&lt;p&gt;Maltfield: /* 8.     International Transfers */ fix line break&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This Privacy Policy (“Policy”) explains the information collection, use, and sharing practices of Eco-Libre (“EL”, “we,” “us,” and “our”).&lt;br /&gt;
&lt;br /&gt;
This Policy is incorporated into and part of Eco-Libre Terms of Use located at https://wiki.eco-libre.org/wiki/Eco-Libre:Terms_of_Service.&lt;br /&gt;
&lt;br /&gt;
Unless otherwise noted on a particular website or service hosted by Eco-Libre, this Policy describes and governs the information collection, use, and sharing practices of Eco-Libre with respect to your use of our websites that link to this Privacy Policy, including: https://eco-libre.org, https://www.eco-libre.org, https://phplist.eco-libre.org, and https://wiki.eco-libre.org (collectively, the “Websites”), and the services we provide through our Websites and/or host on our servers, and the services available through them are referred to as the “Services”).&lt;br /&gt;
&lt;br /&gt;
Before you use or submit any information through or in connection with the Services, please carefully review this Privacy Policy. By using any part of the Services, you understand that your information will be collected, used, and disclosed as outlined in this Privacy Policy. IF YOU DO NOT AGREE TO THIS PRIVACY POLICY, PLEASE DO NOT USE THE SERVICES.&lt;br /&gt;
&lt;br /&gt;
=== 1.     Our Principles ===&lt;br /&gt;
&lt;br /&gt;
Eco-Libre has designed this policy to be consistent with the following principles:&lt;br /&gt;
&lt;br /&gt;
*   Privacy policies should be human readable and easy to find.&lt;br /&gt;
*   Data collection, storage, and processing should be simplified as much as possible to enhance security, ensure consistency, and make the practices easy for users to understand. &lt;br /&gt;
*  Data practices should meet the reasonable expectations of users.&lt;br /&gt;
&lt;br /&gt;
=== 2.     Information We Collect ===&lt;br /&gt;
&lt;br /&gt;
We collect information in multiple ways, including when you provide information directly to us; when we passively collect information from you, such as from your browser or device; and from third parties.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Information You Provide Directly to Us&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
We will collect any information you provide to us. We may collect information from you in a variety of ways, such as when you: (a) create an online account, (b) apply for to become an Eco-Libre volunteer, (c) create an account for one of our Services, (d) make a donation or purchase, (e) register for an event, (f) apply for a scholarship, grant, or fellowship, (g) contact us or provide feedback, (h) sign a petition distributed by Eco-Libre, (i) upload your creative work or images, (j) subscribe to our newsletter, or (k) apply for a job at Eco-Libre. This information may include but is not limited to your name, email address, phone number, mailing address, payment information, photo, geographic location, and your social media handles.  We may also collect additional demographic and other information about you in connection with our conferences and events (e.g., dietary and other preferences), and the provision of this information to us by you is optional.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Information that Is Automatically Collected&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Device/Usage Information&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
We may automatically collect certain information about the computer or devices (including mobile devices or tablets) you use to access the Services. As described further below, we may collect and analyze (a) device information such as IP addresses, location information (by country and city), unique device identifiers, IMEI and TCP/IP address, browser types, browser language, operating system, mobile device carrier information, and (b) information related to the ways in which you interact with the Services, such as referring and exit web pages and URLs, platform type, the number of clicks, domain names, landing pages, pages and content viewed and the order of those pages, statistical information about the use of the Services, the amount of time spent on particular pages, the date and time you used the Services, the frequency of your use of the Services, error logs, and other similar information. As described further below, we may use third-party analytics providers and technologies, including cookies and similar tools, to assist in collecting this information.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Cookies and Other Tracking Technologies&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
We also collect data about your use of the Services through the use of Internet server logs and online tracking technologies, like cookies and/or tracking pixels. A web server log is a file where website activity is stored. A cookie is a small text file that is placed on your computer when you visit a website, that enables us to: (a) recognize your computer; (b) store your preferences and settings; (c) understand the web pages of the Services you have visited and the referral sites that have led you to our Services; (d) enhance your user experience by delivering content  specific to your inferred interests; (e) perform searches and analytics; and (f) assist with security administrative functions. Tracking pixels (sometimes referred to as web beacons or clear GIFs) are tiny electronic tags with a unique identifier embedded in websites, online ads and/or email, and that are designed to provide usage information like ad impressions or clicks, measure popularity of the Services and associated advertising, and to access user cookies. We may also use tracking technologies in our license buttons and/or icons that you can embed on other sites/services to track the website addresses where they are embedded, gauge user interaction with them, and determine the number of unique viewers of them. If you receive email from us (such as a newsletter, campaign updates, or other ongoing email communications from EL), we may use certain analytics tools, such as clear GIFs, to capture data such as whether you open our message, click on any links or banners our email contains, or otherwise interact with what we send. This data allows us to gauge the effectiveness of our communications and marketing campaigns.  As we adopt additional technologies, we may also gather additional information through other methods.&lt;br /&gt;
&lt;br /&gt;
Please note that you can change your settings to notify you when a cookie is being set or updated, or to block cookies altogether. Please consult the “Help” section of your browser for more information (e.g.,[http://windows.microsoft.com/en-US/windows-vista/Block-or-allow-cookies  Internet Explorer];[https://support.google.com/chrome/answer/95647?hl=en  Google Chrome];[http://kb.mozillazine.org/Cookies#Firefox  Mozilla Firefox]; or[http://support.apple.com/kb/PH5042  Apple Safari]). Please note that by blocking any or all cookies, you may not have access to certain features or offerings of the Services.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; Information from Third Parties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
We may also collect information about you or others through third parties. For example, if you apply for to become an Eco-Libre volunteer, we may collect information from the references or vouchers you identified in your membership application.  To the extent permitted by law, we may also collect information from third parties, including public sources, social media platforms, and marketing and market research firms. Depending on the source, this information collected from third parties could include name, contact information, demographic information, information about an individual’s employer, information to verify identity or trustworthiness, and information for other fraud or safety protection purposes.&lt;br /&gt;
&lt;br /&gt;
=== 3.     How We Use Your Information ===&lt;br /&gt;
&lt;br /&gt;
We may use the information we collect from and about you to:&lt;br /&gt;
&lt;br /&gt;
*        Fulfill the purposes for which you provided it;&lt;br /&gt;
*        Evaluate your application for a scholarship, grant, fellowship, or to become an Eco-Libre Volunteer;&lt;br /&gt;
*        Distribute funds to scholarship and grant recipients;&lt;br /&gt;
*        Provide and improve the Services, including to develop new features or services, promote EL community collaboration, take steps to secure the Services, and for technical and customer support;&lt;br /&gt;
*        Fundraise, accept donations, or process purchases of EL merchandise;&lt;br /&gt;
*        Host events and programs such as EL Summits or EL training courses;&lt;br /&gt;
*        Send you information about your relationship or transactions with us, account alerts, or other communications, such as newsletters to which you have subscribed;&lt;br /&gt;
*        Process and respond to your inquiries or to request your feedback;&lt;br /&gt;
*        Conduct analytics, research, and reporting, including to synthesize and derive insights from your use of our Services;&lt;br /&gt;
*        Evaluate job candidates during our hiring process; and&lt;br /&gt;
*        Comply with the law and protect the safety, rights, property, or security of Eco-Libre, the Services, our users, and the general public&lt;br /&gt;
&lt;br /&gt;
Please note that we may combine information that we collect from you and about you (including automatically collected information) with information we obtain about you from our affiliates and/or non-affiliated third parties, and use such combined information in accordance with this Privacy Policy.&lt;br /&gt;
&lt;br /&gt;
We may aggregate and/or de-identify information collected through the Services. We may use de-identified and/or aggregated data for any purpose, including without limitation for research and marketing purposes.&lt;br /&gt;
&lt;br /&gt;
=== 4.     When We Disclose Your Information ===&lt;br /&gt;
&lt;br /&gt;
We may disclose and/or share your information under the following circumstances:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Service Providers.&#039;&#039;&#039; We may disclose your information with third parties who perform services on our behalf, including without limitation, event management, candidate selection, marketing, customer support, data storage, data analysis and processing, and legal services.&lt;br /&gt;
&lt;br /&gt;
For example, when you apply for a scholarship, grant, fellowship, or to be selected to participate in one of our other programs, EL may share that information with the individuals designated to select participants in, and help manage, those programs, which may include people not employed by Eco-Libre.&lt;br /&gt;
&lt;br /&gt;
Or, when you register for an event, we may share your information with vendors, third party contractors, partner organizations, and volunteers for the purpose of organizing and running the event and related activities.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039; Legal Compliance and Protection of Eco-Libre and Others.&#039;&#039;&#039; We may disclose your information if required to do so by law or on a good faith belief that such disclosure is permitted by this Privacy Policy or reasonably necessary or appropriate for any of the following reasons: (a) to comply with legal process; (b) to enforce or apply our this Privacy Policy, or other contracts with you, including investigation of potential violations thereof; (c) enforce our Charter including the Code of Conduct and policies contained and incorporated therein, (d) to respond to your requests for customer service; and/or (e) to protect the rights, property, or personal safety of Eco-Libre, our agents and affiliates, our users, and the public. This includes exchanging information with other companies and organizations for fraud protection, and spam/malware prevention, and similar purposes.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Business Transfers.&#039;&#039;&#039; As we continue to develop our business, we may engage in certain business transactions, such as the transfer or sale of our assets. In such transactions, (including in contemplation of such transactions, e.g., due diligence) your information may be disclosed. If any of Eco-Libre’ assets are sold or transferred to a third party, customer information (including your email address) would likely be one of the transferred business assets.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Affiliated Companies.&#039;&#039;&#039; We may disclose your information with current or future affiliated companies.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Consent.&#039;&#039;&#039; We may disclose your information to any third parties based on your consent to do so.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Aggregate/De-identified Information.&#039;&#039;&#039; We may disclose de-identified and/or aggregated data for any purpose to third parties, including advertisers, promotional partners, and/or others.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Eco-Libre Volunteers.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
o   In connection with you Eco-Libre Volunteer application, we may provide your information to the individuals you’ve selected to vouch for you, and with those reviewing your application, including the Membership Council whose members include people not employed by Eco-Libre and who are located in various countries around the world.&lt;br /&gt;
&lt;br /&gt;
o   If you vouch for someone’s application to the Eco-Libre Volunteer program, your information will be shared with those reviewing the application, including the Membership Council, and if you provide a positive vouching statement, that statement will be shared with the applicant if and when they are admitted for membership.&lt;br /&gt;
&lt;br /&gt;
o   Once you are an Eco-Libre Volunteer, we may provide you with a public profile page,  pre-populated with certain information you provided in your application such as your name, areas of interest, images or other content you upload, which will be publicly displayed to anyone who visits the site.&lt;br /&gt;
&lt;br /&gt;
=== 5.     Legal Basis for Processing Personal Data ===&lt;br /&gt;
&lt;br /&gt;
The laws in some jurisdictions require companies to tell you about the legal ground they rely on to use or disclose information that can be directly linked to or used to identify you. To the extent those laws apply, our legal grounds for processing such information are as follows:&lt;br /&gt;
&lt;br /&gt;
* To Honor Our Contractual Commitments to You. Much of our processing of information is to meet our contractual obligations to provide services to our users.&lt;br /&gt;
&lt;br /&gt;
* Legitimate Interests. In many cases, we handle information on the ground that it furthers our legitimate interests in ways that are not overridden by the interests or fundamental rights and freedoms of the affected individuals, these include:&lt;br /&gt;
** Customer service&lt;br /&gt;
** Marketing, advertising, and fundraising&lt;br /&gt;
** Protecting our users, personnel, and property&lt;br /&gt;
** Managing user accounts&lt;br /&gt;
** Organizing and running events and programs&lt;br /&gt;
** Analyzing and improving our business&lt;br /&gt;
** Managing legal issues&lt;br /&gt;
We may also process information for the same legitimate interests of our users and business partners.&lt;br /&gt;
&lt;br /&gt;
* Legal Compliance. We may need to use and disclose information in certain ways to comply with our legal obligations.&lt;br /&gt;
&lt;br /&gt;
* Consent. Where required by law, and in some other cases where legally permissible, we handle information on the basis of consent. Where we handle your information on the basis of consent, you have the right to withdraw your consent; in accordance with applicable law.&lt;br /&gt;
&lt;br /&gt;
=== 6.     Online Analytics ===&lt;br /&gt;
&lt;br /&gt;
We may use third-party web analytics services (such as Google Analytics) on our Services to collect and analyze the information discussed above, and to engage in auditing, research, or reporting. The information (including your IP address) collected by various analytics technologies described in the “Cookies and Other Tracking Technologies” section above will be disclosed to or collected directly by these service providers, who use the information to evaluate your use of the Services, including by noting the third-party website from which you arrive to our Site, analyzing usage trends, assisting with fraud prevention, and providing certain features to you. To prevent Google Analytics from using your information for analytics, you may install the Google Analytics Opt-out Browser Add-on by clicking [https://tools.google.com/dlpage/gaoptout here].&lt;br /&gt;
&lt;br /&gt;
=== 7.     Your Choices and Data Subject Rights ===&lt;br /&gt;
&lt;br /&gt;
You have various rights with respect to the collection and use of your information through the Services.  Those choices are as follows:&lt;br /&gt;
&lt;br /&gt;
* Email Unsubscribe – You may unsubscribe from our marketing emails at any time by clicking on the &amp;quot;opt-out completely&amp;quot; link at the bottom of each newsletter&lt;br /&gt;
* Fundraising Analytics – You may opt out of EL&#039;s fundraising analytics activities by contacting Us with your request.&lt;br /&gt;
* Account Preferences – If you have registered for an account with us through our Services, you can update your account information or adjust your email communications preferences by logging into your account and updating your settings.&lt;br /&gt;
* EU Data Subject Rights – Individuals in the European Economic Area (“EEA”) and other jurisdictions have certain legal rights (subject to applicable exceptions and limitations) to obtain confirmation of whether we hold certain information about them, to access such information, and to obtain its correction or deletion in appropriate circumstances. You may have the right to object to our handling of your information, restrict our processing of your information, and to withdraw any consent you have provided. To exercise these rights, please email Us with the nature of your request. You also have the right to go directly to the relevant supervisory or legal authority, but we encourage you to contact us so that we may resolve your concerns directly as best and as promptly as we can.&lt;br /&gt;
&lt;br /&gt;
=== 8.     International Transfers ===&lt;br /&gt;
&lt;br /&gt;
Our computer systems are currently based in Germany and Ecuador and the majority of our Volunteers are based in Ecuador or are located in various countries around the world. As described above in the “When We Disclose Your Information” section, we may share your information with trusted service providers or business partners in countries other than your country of residence, including the United States and Ecuador, in accordance with applicable law. This means that some of your information may be processed in the United States or Ecuador, which may not offer the same level of protection as the privacy laws of your jurisdiction. By providing us with your information, you acknowledge any such transfer, storage or use.&lt;br /&gt;
&lt;br /&gt;
If we provide any information about you to any third parties information processors located outside of the EEA, we will take appropriate measures to ensure such companies protect your information adequately in accordance with this Privacy Policy and other data protection laws to govern the transfers of such data.&lt;br /&gt;
&lt;br /&gt;
=== 9.     Security Measures ===&lt;br /&gt;
&lt;br /&gt;
We have implemented technical, physical, and organizational security measures to protect against the loss, misuse, and/or alteration of your information. These safeguards vary based on the sensitivity of the information that we collect and store. However, we cannot and do not guarantee that these measures will prevent every unauthorized attempt to access, use, or disclose your information since despite our efforts, no Internet and/or other electronic transmissions can be completely secure.&lt;br /&gt;
&lt;br /&gt;
=== 10.  Children ===&lt;br /&gt;
&lt;br /&gt;
The Services are intended for users over the age of 18 and are not directed at children under the age of 13. If we become aware that we have collected personal information (as defined by the Children’s Online Privacy Protection Act) from children under the age of 13, or personal data (as defined by the EU GDPR) from children under the age of 16, we will take reasonable steps to delete it as soon as practicable.&lt;br /&gt;
&lt;br /&gt;
=== 11.  Data Retention ===&lt;br /&gt;
&lt;br /&gt;
We retain the information we collect for as long as necessary to fulfill the purposes set forth in this Privacy Policy or as long as we are legally required or permitted to do so. Information may persist in copies made for backup and business continuity purposes for additional time.&lt;br /&gt;
&lt;br /&gt;
=== 12.  Third-Party Links and Services ===&lt;br /&gt;
&lt;br /&gt;
The Services may contain links to third-party websites (e.g., social media sites like Facebook and Twitter), third-party plug-ins (e.g., the Facebook “like” button and Twitter “follow” button), and other services. If you choose to use these sites or features, you may disclose your information not just to those third-parties, but also to their users and the public more generally depending on how their services function. Eco-Libre is not responsible for the content or privacy practices of such third party websites or services. The collection, use and disclosure of your information will be subject to the privacy policies of the third party websites or services, and not this Privacy Policy. We encourage you to read the privacy statements of each and every site you visit.&lt;br /&gt;
&lt;br /&gt;
=== 13.  Changes to this Privacy Policy ===&lt;br /&gt;
&lt;br /&gt;
We will continue to evaluate this Privacy Policy as we update and expand our Services, and we may make changes to the Privacy Policy accordingly. We will post any changes here and revise the date last updated above. We encourage you to check this page periodically for updates to stay informed on how we collect, use and share your information. If we make material changes to this Privacy Policy, we will provide you with notice as required by law.&lt;br /&gt;
&lt;br /&gt;
=== 14.  Questions About this Privacy Policy ===&lt;br /&gt;
&lt;br /&gt;
If you have any questions about this Privacy Policy or our privacy practices, you can contact us at: https://eco-libre.org/contact&lt;br /&gt;
&lt;br /&gt;
The Eco-Libre Privacy Policy is dedicated to the public domain under the [https://creativecommons.org/licenses/by-sa/4.0/ CC-BY-SA-4.0 license]. You are free to use and adapt this Privacy Policy and any applicable Supplemental Privacy Policy Terms for your own purposes. However, please keep in mind that this Privacy Policy may not be completely suitable for your situation. Eco-Libre strongly encourages you to seek the advice of your own attorney before repurposing this Privacy Policy on your own site.&lt;/div&gt;</summary>
		<author><name>Maltfield</name></author>
	</entry>
	<entry>
		<id>https://wiki.eco-libre.org/index.php?title=Eco-Libre:Privacy_policy&amp;diff=77</id>
		<title>Eco-Libre:Privacy policy</title>
		<link rel="alternate" type="text/html" href="https://wiki.eco-libre.org/index.php?title=Eco-Libre:Privacy_policy&amp;diff=77"/>
		<updated>2026-04-26T21:55:59Z</updated>

		<summary type="html">&lt;p&gt;Maltfield: /* 8.     International Transfers */ i accidentally a letter&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This Privacy Policy (“Policy”) explains the information collection, use, and sharing practices of Eco-Libre (“EL”, “we,” “us,” and “our”).&lt;br /&gt;
&lt;br /&gt;
This Policy is incorporated into and part of Eco-Libre Terms of Use located at https://wiki.eco-libre.org/wiki/Eco-Libre:Terms_of_Service.&lt;br /&gt;
&lt;br /&gt;
Unless otherwise noted on a particular website or service hosted by Eco-Libre, this Policy describes and governs the information collection, use, and sharing practices of Eco-Libre with respect to your use of our websites that link to this Privacy Policy, including: https://eco-libre.org, https://www.eco-libre.org, https://phplist.eco-libre.org, and https://wiki.eco-libre.org (collectively, the “Websites”), and the services we provide through our Websites and/or host on our servers, and the services available through them are referred to as the “Services”).&lt;br /&gt;
&lt;br /&gt;
Before you use or submit any information through or in connection with the Services, please carefully review this Privacy Policy. By using any part of the Services, you understand that your information will be collected, used, and disclosed as outlined in this Privacy Policy. IF YOU DO NOT AGREE TO THIS PRIVACY POLICY, PLEASE DO NOT USE THE SERVICES.&lt;br /&gt;
&lt;br /&gt;
=== 1.     Our Principles ===&lt;br /&gt;
&lt;br /&gt;
Eco-Libre has designed this policy to be consistent with the following principles:&lt;br /&gt;
&lt;br /&gt;
*   Privacy policies should be human readable and easy to find.&lt;br /&gt;
*   Data collection, storage, and processing should be simplified as much as possible to enhance security, ensure consistency, and make the practices easy for users to understand. &lt;br /&gt;
*  Data practices should meet the reasonable expectations of users.&lt;br /&gt;
&lt;br /&gt;
=== 2.     Information We Collect ===&lt;br /&gt;
&lt;br /&gt;
We collect information in multiple ways, including when you provide information directly to us; when we passively collect information from you, such as from your browser or device; and from third parties.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Information You Provide Directly to Us&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
We will collect any information you provide to us. We may collect information from you in a variety of ways, such as when you: (a) create an online account, (b) apply for to become an Eco-Libre volunteer, (c) create an account for one of our Services, (d) make a donation or purchase, (e) register for an event, (f) apply for a scholarship, grant, or fellowship, (g) contact us or provide feedback, (h) sign a petition distributed by Eco-Libre, (i) upload your creative work or images, (j) subscribe to our newsletter, or (k) apply for a job at Eco-Libre. This information may include but is not limited to your name, email address, phone number, mailing address, payment information, photo, geographic location, and your social media handles.  We may also collect additional demographic and other information about you in connection with our conferences and events (e.g., dietary and other preferences), and the provision of this information to us by you is optional.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Information that Is Automatically Collected&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Device/Usage Information&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
We may automatically collect certain information about the computer or devices (including mobile devices or tablets) you use to access the Services. As described further below, we may collect and analyze (a) device information such as IP addresses, location information (by country and city), unique device identifiers, IMEI and TCP/IP address, browser types, browser language, operating system, mobile device carrier information, and (b) information related to the ways in which you interact with the Services, such as referring and exit web pages and URLs, platform type, the number of clicks, domain names, landing pages, pages and content viewed and the order of those pages, statistical information about the use of the Services, the amount of time spent on particular pages, the date and time you used the Services, the frequency of your use of the Services, error logs, and other similar information. As described further below, we may use third-party analytics providers and technologies, including cookies and similar tools, to assist in collecting this information.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Cookies and Other Tracking Technologies&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
We also collect data about your use of the Services through the use of Internet server logs and online tracking technologies, like cookies and/or tracking pixels. A web server log is a file where website activity is stored. A cookie is a small text file that is placed on your computer when you visit a website, that enables us to: (a) recognize your computer; (b) store your preferences and settings; (c) understand the web pages of the Services you have visited and the referral sites that have led you to our Services; (d) enhance your user experience by delivering content  specific to your inferred interests; (e) perform searches and analytics; and (f) assist with security administrative functions. Tracking pixels (sometimes referred to as web beacons or clear GIFs) are tiny electronic tags with a unique identifier embedded in websites, online ads and/or email, and that are designed to provide usage information like ad impressions or clicks, measure popularity of the Services and associated advertising, and to access user cookies. We may also use tracking technologies in our license buttons and/or icons that you can embed on other sites/services to track the website addresses where they are embedded, gauge user interaction with them, and determine the number of unique viewers of them. If you receive email from us (such as a newsletter, campaign updates, or other ongoing email communications from EL), we may use certain analytics tools, such as clear GIFs, to capture data such as whether you open our message, click on any links or banners our email contains, or otherwise interact with what we send. This data allows us to gauge the effectiveness of our communications and marketing campaigns.  As we adopt additional technologies, we may also gather additional information through other methods.&lt;br /&gt;
&lt;br /&gt;
Please note that you can change your settings to notify you when a cookie is being set or updated, or to block cookies altogether. Please consult the “Help” section of your browser for more information (e.g.,[http://windows.microsoft.com/en-US/windows-vista/Block-or-allow-cookies  Internet Explorer];[https://support.google.com/chrome/answer/95647?hl=en  Google Chrome];[http://kb.mozillazine.org/Cookies#Firefox  Mozilla Firefox]; or[http://support.apple.com/kb/PH5042  Apple Safari]). Please note that by blocking any or all cookies, you may not have access to certain features or offerings of the Services.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; Information from Third Parties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
We may also collect information about you or others through third parties. For example, if you apply for to become an Eco-Libre volunteer, we may collect information from the references or vouchers you identified in your membership application.  To the extent permitted by law, we may also collect information from third parties, including public sources, social media platforms, and marketing and market research firms. Depending on the source, this information collected from third parties could include name, contact information, demographic information, information about an individual’s employer, information to verify identity or trustworthiness, and information for other fraud or safety protection purposes.&lt;br /&gt;
&lt;br /&gt;
=== 3.     How We Use Your Information ===&lt;br /&gt;
&lt;br /&gt;
We may use the information we collect from and about you to:&lt;br /&gt;
&lt;br /&gt;
*        Fulfill the purposes for which you provided it;&lt;br /&gt;
*        Evaluate your application for a scholarship, grant, fellowship, or to become an Eco-Libre Volunteer;&lt;br /&gt;
*        Distribute funds to scholarship and grant recipients;&lt;br /&gt;
*        Provide and improve the Services, including to develop new features or services, promote EL community collaboration, take steps to secure the Services, and for technical and customer support;&lt;br /&gt;
*        Fundraise, accept donations, or process purchases of EL merchandise;&lt;br /&gt;
*        Host events and programs such as EL Summits or EL training courses;&lt;br /&gt;
*        Send you information about your relationship or transactions with us, account alerts, or other communications, such as newsletters to which you have subscribed;&lt;br /&gt;
*        Process and respond to your inquiries or to request your feedback;&lt;br /&gt;
*        Conduct analytics, research, and reporting, including to synthesize and derive insights from your use of our Services;&lt;br /&gt;
*        Evaluate job candidates during our hiring process; and&lt;br /&gt;
*        Comply with the law and protect the safety, rights, property, or security of Eco-Libre, the Services, our users, and the general public&lt;br /&gt;
&lt;br /&gt;
Please note that we may combine information that we collect from you and about you (including automatically collected information) with information we obtain about you from our affiliates and/or non-affiliated third parties, and use such combined information in accordance with this Privacy Policy.&lt;br /&gt;
&lt;br /&gt;
We may aggregate and/or de-identify information collected through the Services. We may use de-identified and/or aggregated data for any purpose, including without limitation for research and marketing purposes.&lt;br /&gt;
&lt;br /&gt;
=== 4.     When We Disclose Your Information ===&lt;br /&gt;
&lt;br /&gt;
We may disclose and/or share your information under the following circumstances:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Service Providers.&#039;&#039;&#039; We may disclose your information with third parties who perform services on our behalf, including without limitation, event management, candidate selection, marketing, customer support, data storage, data analysis and processing, and legal services.&lt;br /&gt;
&lt;br /&gt;
For example, when you apply for a scholarship, grant, fellowship, or to be selected to participate in one of our other programs, EL may share that information with the individuals designated to select participants in, and help manage, those programs, which may include people not employed by Eco-Libre.&lt;br /&gt;
&lt;br /&gt;
Or, when you register for an event, we may share your information with vendors, third party contractors, partner organizations, and volunteers for the purpose of organizing and running the event and related activities.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039; Legal Compliance and Protection of Eco-Libre and Others.&#039;&#039;&#039; We may disclose your information if required to do so by law or on a good faith belief that such disclosure is permitted by this Privacy Policy or reasonably necessary or appropriate for any of the following reasons: (a) to comply with legal process; (b) to enforce or apply our this Privacy Policy, or other contracts with you, including investigation of potential violations thereof; (c) enforce our Charter including the Code of Conduct and policies contained and incorporated therein, (d) to respond to your requests for customer service; and/or (e) to protect the rights, property, or personal safety of Eco-Libre, our agents and affiliates, our users, and the public. This includes exchanging information with other companies and organizations for fraud protection, and spam/malware prevention, and similar purposes.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Business Transfers.&#039;&#039;&#039; As we continue to develop our business, we may engage in certain business transactions, such as the transfer or sale of our assets. In such transactions, (including in contemplation of such transactions, e.g., due diligence) your information may be disclosed. If any of Eco-Libre’ assets are sold or transferred to a third party, customer information (including your email address) would likely be one of the transferred business assets.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Affiliated Companies.&#039;&#039;&#039; We may disclose your information with current or future affiliated companies.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Consent.&#039;&#039;&#039; We may disclose your information to any third parties based on your consent to do so.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Aggregate/De-identified Information.&#039;&#039;&#039; We may disclose de-identified and/or aggregated data for any purpose to third parties, including advertisers, promotional partners, and/or others.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Eco-Libre Volunteers.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
o   In connection with you Eco-Libre Volunteer application, we may provide your information to the individuals you’ve selected to vouch for you, and with those reviewing your application, including the Membership Council whose members include people not employed by Eco-Libre and who are located in various countries around the world.&lt;br /&gt;
&lt;br /&gt;
o   If you vouch for someone’s application to the Eco-Libre Volunteer program, your information will be shared with those reviewing the application, including the Membership Council, and if you provide a positive vouching statement, that statement will be shared with the applicant if and when they are admitted for membership.&lt;br /&gt;
&lt;br /&gt;
o   Once you are an Eco-Libre Volunteer, we may provide you with a public profile page,  pre-populated with certain information you provided in your application such as your name, areas of interest, images or other content you upload, which will be publicly displayed to anyone who visits the site.&lt;br /&gt;
&lt;br /&gt;
=== 5.     Legal Basis for Processing Personal Data ===&lt;br /&gt;
&lt;br /&gt;
The laws in some jurisdictions require companies to tell you about the legal ground they rely on to use or disclose information that can be directly linked to or used to identify you. To the extent those laws apply, our legal grounds for processing such information are as follows:&lt;br /&gt;
&lt;br /&gt;
* To Honor Our Contractual Commitments to You. Much of our processing of information is to meet our contractual obligations to provide services to our users.&lt;br /&gt;
&lt;br /&gt;
* Legitimate Interests. In many cases, we handle information on the ground that it furthers our legitimate interests in ways that are not overridden by the interests or fundamental rights and freedoms of the affected individuals, these include:&lt;br /&gt;
** Customer service&lt;br /&gt;
** Marketing, advertising, and fundraising&lt;br /&gt;
** Protecting our users, personnel, and property&lt;br /&gt;
** Managing user accounts&lt;br /&gt;
** Organizing and running events and programs&lt;br /&gt;
** Analyzing and improving our business&lt;br /&gt;
** Managing legal issues&lt;br /&gt;
We may also process information for the same legitimate interests of our users and business partners.&lt;br /&gt;
&lt;br /&gt;
* Legal Compliance. We may need to use and disclose information in certain ways to comply with our legal obligations.&lt;br /&gt;
&lt;br /&gt;
* Consent. Where required by law, and in some other cases where legally permissible, we handle information on the basis of consent. Where we handle your information on the basis of consent, you have the right to withdraw your consent; in accordance with applicable law.&lt;br /&gt;
&lt;br /&gt;
=== 6.     Online Analytics ===&lt;br /&gt;
&lt;br /&gt;
We may use third-party web analytics services (such as Google Analytics) on our Services to collect and analyze the information discussed above, and to engage in auditing, research, or reporting. The information (including your IP address) collected by various analytics technologies described in the “Cookies and Other Tracking Technologies” section above will be disclosed to or collected directly by these service providers, who use the information to evaluate your use of the Services, including by noting the third-party website from which you arrive to our Site, analyzing usage trends, assisting with fraud prevention, and providing certain features to you. To prevent Google Analytics from using your information for analytics, you may install the Google Analytics Opt-out Browser Add-on by clicking [https://tools.google.com/dlpage/gaoptout here].&lt;br /&gt;
&lt;br /&gt;
=== 7.     Your Choices and Data Subject Rights ===&lt;br /&gt;
&lt;br /&gt;
You have various rights with respect to the collection and use of your information through the Services.  Those choices are as follows:&lt;br /&gt;
&lt;br /&gt;
* Email Unsubscribe – You may unsubscribe from our marketing emails at any time by clicking on the &amp;quot;opt-out completely&amp;quot; link at the bottom of each newsletter&lt;br /&gt;
* Fundraising Analytics – You may opt out of EL&#039;s fundraising analytics activities by contacting Us with your request.&lt;br /&gt;
* Account Preferences – If you have registered for an account with us through our Services, you can update your account information or adjust your email communications preferences by logging into your account and updating your settings.&lt;br /&gt;
* EU Data Subject Rights – Individuals in the European Economic Area (“EEA”) and other jurisdictions have certain legal rights (subject to applicable exceptions and limitations) to obtain confirmation of whether we hold certain information about them, to access such information, and to obtain its correction or deletion in appropriate circumstances. You may have the right to object to our handling of your information, restrict our processing of your information, and to withdraw any consent you have provided. To exercise these rights, please email Us with the nature of your request. You also have the right to go directly to the relevant supervisory or legal authority, but we encourage you to contact us so that we may resolve your concerns directly as best and as promptly as we can.&lt;br /&gt;
&lt;br /&gt;
=== 8.     International Transfers ===&lt;br /&gt;
&lt;br /&gt;
Our computer systems are currently based in Germany and Ecuador and the majority of our Volunteers are based in Ecuador or are located in various countries around the world. As described above in the “When We Disclose Your Information” section, we may share your information with trusted service providers or business partners in countries other than your country of residence, including the United States and Ecuador, in accordance with applicable law. This means that some of your information may be processed in the United States or Ecuador, which may not offer the same level of protection as the privacy laws of your jurisdiction. By providing us with your information, you acknowledge any such transfer, storage or use.&lt;br /&gt;
If we provide any information about you to any third parties information processors located outside of the EEA, we will take appropriate measures to ensure such companies protect your information adequately in accordance with this Privacy Policy and other data protection laws to govern the transfers of such data.&lt;br /&gt;
&lt;br /&gt;
=== 9.     Security Measures ===&lt;br /&gt;
&lt;br /&gt;
We have implemented technical, physical, and organizational security measures to protect against the loss, misuse, and/or alteration of your information. These safeguards vary based on the sensitivity of the information that we collect and store. However, we cannot and do not guarantee that these measures will prevent every unauthorized attempt to access, use, or disclose your information since despite our efforts, no Internet and/or other electronic transmissions can be completely secure.&lt;br /&gt;
&lt;br /&gt;
=== 10.  Children ===&lt;br /&gt;
&lt;br /&gt;
The Services are intended for users over the age of 18 and are not directed at children under the age of 13. If we become aware that we have collected personal information (as defined by the Children’s Online Privacy Protection Act) from children under the age of 13, or personal data (as defined by the EU GDPR) from children under the age of 16, we will take reasonable steps to delete it as soon as practicable.&lt;br /&gt;
&lt;br /&gt;
=== 11.  Data Retention ===&lt;br /&gt;
&lt;br /&gt;
We retain the information we collect for as long as necessary to fulfill the purposes set forth in this Privacy Policy or as long as we are legally required or permitted to do so. Information may persist in copies made for backup and business continuity purposes for additional time.&lt;br /&gt;
&lt;br /&gt;
=== 12.  Third-Party Links and Services ===&lt;br /&gt;
&lt;br /&gt;
The Services may contain links to third-party websites (e.g., social media sites like Facebook and Twitter), third-party plug-ins (e.g., the Facebook “like” button and Twitter “follow” button), and other services. If you choose to use these sites or features, you may disclose your information not just to those third-parties, but also to their users and the public more generally depending on how their services function. Eco-Libre is not responsible for the content or privacy practices of such third party websites or services. The collection, use and disclosure of your information will be subject to the privacy policies of the third party websites or services, and not this Privacy Policy. We encourage you to read the privacy statements of each and every site you visit.&lt;br /&gt;
&lt;br /&gt;
=== 13.  Changes to this Privacy Policy ===&lt;br /&gt;
&lt;br /&gt;
We will continue to evaluate this Privacy Policy as we update and expand our Services, and we may make changes to the Privacy Policy accordingly. We will post any changes here and revise the date last updated above. We encourage you to check this page periodically for updates to stay informed on how we collect, use and share your information. If we make material changes to this Privacy Policy, we will provide you with notice as required by law.&lt;br /&gt;
&lt;br /&gt;
=== 14.  Questions About this Privacy Policy ===&lt;br /&gt;
&lt;br /&gt;
If you have any questions about this Privacy Policy or our privacy practices, you can contact us at: https://eco-libre.org/contact&lt;br /&gt;
&lt;br /&gt;
The Eco-Libre Privacy Policy is dedicated to the public domain under the [https://creativecommons.org/licenses/by-sa/4.0/ CC-BY-SA-4.0 license]. You are free to use and adapt this Privacy Policy and any applicable Supplemental Privacy Policy Terms for your own purposes. However, please keep in mind that this Privacy Policy may not be completely suitable for your situation. Eco-Libre strongly encourages you to seek the advice of your own attorney before repurposing this Privacy Policy on your own site.&lt;/div&gt;</summary>
		<author><name>Maltfield</name></author>
	</entry>
	<entry>
		<id>https://wiki.eco-libre.org/index.php?title=Eco-Libre:Privacy_policy&amp;diff=76</id>
		<title>Eco-Libre:Privacy policy</title>
		<link rel="alternate" type="text/html" href="https://wiki.eco-libre.org/index.php?title=Eco-Libre:Privacy_policy&amp;diff=76"/>
		<updated>2026-04-26T21:55:28Z</updated>

		<summary type="html">&lt;p&gt;Maltfield: /* 8.     International Transfers */ our server is currently in germany with hetzner. we will likely have future servers in ecuador. not so much the US, but Raft and OC are based there, and we probably can&amp;#039;t avoid using some third parties in the US.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This Privacy Policy (“Policy”) explains the information collection, use, and sharing practices of Eco-Libre (“EL”, “we,” “us,” and “our”).&lt;br /&gt;
&lt;br /&gt;
This Policy is incorporated into and part of Eco-Libre Terms of Use located at https://wiki.eco-libre.org/wiki/Eco-Libre:Terms_of_Service.&lt;br /&gt;
&lt;br /&gt;
Unless otherwise noted on a particular website or service hosted by Eco-Libre, this Policy describes and governs the information collection, use, and sharing practices of Eco-Libre with respect to your use of our websites that link to this Privacy Policy, including: https://eco-libre.org, https://www.eco-libre.org, https://phplist.eco-libre.org, and https://wiki.eco-libre.org (collectively, the “Websites”), and the services we provide through our Websites and/or host on our servers, and the services available through them are referred to as the “Services”).&lt;br /&gt;
&lt;br /&gt;
Before you use or submit any information through or in connection with the Services, please carefully review this Privacy Policy. By using any part of the Services, you understand that your information will be collected, used, and disclosed as outlined in this Privacy Policy. IF YOU DO NOT AGREE TO THIS PRIVACY POLICY, PLEASE DO NOT USE THE SERVICES.&lt;br /&gt;
&lt;br /&gt;
=== 1.     Our Principles ===&lt;br /&gt;
&lt;br /&gt;
Eco-Libre has designed this policy to be consistent with the following principles:&lt;br /&gt;
&lt;br /&gt;
*   Privacy policies should be human readable and easy to find.&lt;br /&gt;
*   Data collection, storage, and processing should be simplified as much as possible to enhance security, ensure consistency, and make the practices easy for users to understand. &lt;br /&gt;
*  Data practices should meet the reasonable expectations of users.&lt;br /&gt;
&lt;br /&gt;
=== 2.     Information We Collect ===&lt;br /&gt;
&lt;br /&gt;
We collect information in multiple ways, including when you provide information directly to us; when we passively collect information from you, such as from your browser or device; and from third parties.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Information You Provide Directly to Us&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
We will collect any information you provide to us. We may collect information from you in a variety of ways, such as when you: (a) create an online account, (b) apply for to become an Eco-Libre volunteer, (c) create an account for one of our Services, (d) make a donation or purchase, (e) register for an event, (f) apply for a scholarship, grant, or fellowship, (g) contact us or provide feedback, (h) sign a petition distributed by Eco-Libre, (i) upload your creative work or images, (j) subscribe to our newsletter, or (k) apply for a job at Eco-Libre. This information may include but is not limited to your name, email address, phone number, mailing address, payment information, photo, geographic location, and your social media handles.  We may also collect additional demographic and other information about you in connection with our conferences and events (e.g., dietary and other preferences), and the provision of this information to us by you is optional.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Information that Is Automatically Collected&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Device/Usage Information&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
We may automatically collect certain information about the computer or devices (including mobile devices or tablets) you use to access the Services. As described further below, we may collect and analyze (a) device information such as IP addresses, location information (by country and city), unique device identifiers, IMEI and TCP/IP address, browser types, browser language, operating system, mobile device carrier information, and (b) information related to the ways in which you interact with the Services, such as referring and exit web pages and URLs, platform type, the number of clicks, domain names, landing pages, pages and content viewed and the order of those pages, statistical information about the use of the Services, the amount of time spent on particular pages, the date and time you used the Services, the frequency of your use of the Services, error logs, and other similar information. As described further below, we may use third-party analytics providers and technologies, including cookies and similar tools, to assist in collecting this information.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Cookies and Other Tracking Technologies&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
We also collect data about your use of the Services through the use of Internet server logs and online tracking technologies, like cookies and/or tracking pixels. A web server log is a file where website activity is stored. A cookie is a small text file that is placed on your computer when you visit a website, that enables us to: (a) recognize your computer; (b) store your preferences and settings; (c) understand the web pages of the Services you have visited and the referral sites that have led you to our Services; (d) enhance your user experience by delivering content  specific to your inferred interests; (e) perform searches and analytics; and (f) assist with security administrative functions. Tracking pixels (sometimes referred to as web beacons or clear GIFs) are tiny electronic tags with a unique identifier embedded in websites, online ads and/or email, and that are designed to provide usage information like ad impressions or clicks, measure popularity of the Services and associated advertising, and to access user cookies. We may also use tracking technologies in our license buttons and/or icons that you can embed on other sites/services to track the website addresses where they are embedded, gauge user interaction with them, and determine the number of unique viewers of them. If you receive email from us (such as a newsletter, campaign updates, or other ongoing email communications from EL), we may use certain analytics tools, such as clear GIFs, to capture data such as whether you open our message, click on any links or banners our email contains, or otherwise interact with what we send. This data allows us to gauge the effectiveness of our communications and marketing campaigns.  As we adopt additional technologies, we may also gather additional information through other methods.&lt;br /&gt;
&lt;br /&gt;
Please note that you can change your settings to notify you when a cookie is being set or updated, or to block cookies altogether. Please consult the “Help” section of your browser for more information (e.g.,[http://windows.microsoft.com/en-US/windows-vista/Block-or-allow-cookies  Internet Explorer];[https://support.google.com/chrome/answer/95647?hl=en  Google Chrome];[http://kb.mozillazine.org/Cookies#Firefox  Mozilla Firefox]; or[http://support.apple.com/kb/PH5042  Apple Safari]). Please note that by blocking any or all cookies, you may not have access to certain features or offerings of the Services.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; Information from Third Parties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
We may also collect information about you or others through third parties. For example, if you apply for to become an Eco-Libre volunteer, we may collect information from the references or vouchers you identified in your membership application.  To the extent permitted by law, we may also collect information from third parties, including public sources, social media platforms, and marketing and market research firms. Depending on the source, this information collected from third parties could include name, contact information, demographic information, information about an individual’s employer, information to verify identity or trustworthiness, and information for other fraud or safety protection purposes.&lt;br /&gt;
&lt;br /&gt;
=== 3.     How We Use Your Information ===&lt;br /&gt;
&lt;br /&gt;
We may use the information we collect from and about you to:&lt;br /&gt;
&lt;br /&gt;
*        Fulfill the purposes for which you provided it;&lt;br /&gt;
*        Evaluate your application for a scholarship, grant, fellowship, or to become an Eco-Libre Volunteer;&lt;br /&gt;
*        Distribute funds to scholarship and grant recipients;&lt;br /&gt;
*        Provide and improve the Services, including to develop new features or services, promote EL community collaboration, take steps to secure the Services, and for technical and customer support;&lt;br /&gt;
*        Fundraise, accept donations, or process purchases of EL merchandise;&lt;br /&gt;
*        Host events and programs such as EL Summits or EL training courses;&lt;br /&gt;
*        Send you information about your relationship or transactions with us, account alerts, or other communications, such as newsletters to which you have subscribed;&lt;br /&gt;
*        Process and respond to your inquiries or to request your feedback;&lt;br /&gt;
*        Conduct analytics, research, and reporting, including to synthesize and derive insights from your use of our Services;&lt;br /&gt;
*        Evaluate job candidates during our hiring process; and&lt;br /&gt;
*        Comply with the law and protect the safety, rights, property, or security of Eco-Libre, the Services, our users, and the general public&lt;br /&gt;
&lt;br /&gt;
Please note that we may combine information that we collect from you and about you (including automatically collected information) with information we obtain about you from our affiliates and/or non-affiliated third parties, and use such combined information in accordance with this Privacy Policy.&lt;br /&gt;
&lt;br /&gt;
We may aggregate and/or de-identify information collected through the Services. We may use de-identified and/or aggregated data for any purpose, including without limitation for research and marketing purposes.&lt;br /&gt;
&lt;br /&gt;
=== 4.     When We Disclose Your Information ===&lt;br /&gt;
&lt;br /&gt;
We may disclose and/or share your information under the following circumstances:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Service Providers.&#039;&#039;&#039; We may disclose your information with third parties who perform services on our behalf, including without limitation, event management, candidate selection, marketing, customer support, data storage, data analysis and processing, and legal services.&lt;br /&gt;
&lt;br /&gt;
For example, when you apply for a scholarship, grant, fellowship, or to be selected to participate in one of our other programs, EL may share that information with the individuals designated to select participants in, and help manage, those programs, which may include people not employed by Eco-Libre.&lt;br /&gt;
&lt;br /&gt;
Or, when you register for an event, we may share your information with vendors, third party contractors, partner organizations, and volunteers for the purpose of organizing and running the event and related activities.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039; Legal Compliance and Protection of Eco-Libre and Others.&#039;&#039;&#039; We may disclose your information if required to do so by law or on a good faith belief that such disclosure is permitted by this Privacy Policy or reasonably necessary or appropriate for any of the following reasons: (a) to comply with legal process; (b) to enforce or apply our this Privacy Policy, or other contracts with you, including investigation of potential violations thereof; (c) enforce our Charter including the Code of Conduct and policies contained and incorporated therein, (d) to respond to your requests for customer service; and/or (e) to protect the rights, property, or personal safety of Eco-Libre, our agents and affiliates, our users, and the public. This includes exchanging information with other companies and organizations for fraud protection, and spam/malware prevention, and similar purposes.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Business Transfers.&#039;&#039;&#039; As we continue to develop our business, we may engage in certain business transactions, such as the transfer or sale of our assets. In such transactions, (including in contemplation of such transactions, e.g., due diligence) your information may be disclosed. If any of Eco-Libre’ assets are sold or transferred to a third party, customer information (including your email address) would likely be one of the transferred business assets.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Affiliated Companies.&#039;&#039;&#039; We may disclose your information with current or future affiliated companies.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Consent.&#039;&#039;&#039; We may disclose your information to any third parties based on your consent to do so.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Aggregate/De-identified Information.&#039;&#039;&#039; We may disclose de-identified and/or aggregated data for any purpose to third parties, including advertisers, promotional partners, and/or others.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Eco-Libre Volunteers.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
o   In connection with you Eco-Libre Volunteer application, we may provide your information to the individuals you’ve selected to vouch for you, and with those reviewing your application, including the Membership Council whose members include people not employed by Eco-Libre and who are located in various countries around the world.&lt;br /&gt;
&lt;br /&gt;
o   If you vouch for someone’s application to the Eco-Libre Volunteer program, your information will be shared with those reviewing the application, including the Membership Council, and if you provide a positive vouching statement, that statement will be shared with the applicant if and when they are admitted for membership.&lt;br /&gt;
&lt;br /&gt;
o   Once you are an Eco-Libre Volunteer, we may provide you with a public profile page,  pre-populated with certain information you provided in your application such as your name, areas of interest, images or other content you upload, which will be publicly displayed to anyone who visits the site.&lt;br /&gt;
&lt;br /&gt;
=== 5.     Legal Basis for Processing Personal Data ===&lt;br /&gt;
&lt;br /&gt;
The laws in some jurisdictions require companies to tell you about the legal ground they rely on to use or disclose information that can be directly linked to or used to identify you. To the extent those laws apply, our legal grounds for processing such information are as follows:&lt;br /&gt;
&lt;br /&gt;
* To Honor Our Contractual Commitments to You. Much of our processing of information is to meet our contractual obligations to provide services to our users.&lt;br /&gt;
&lt;br /&gt;
* Legitimate Interests. In many cases, we handle information on the ground that it furthers our legitimate interests in ways that are not overridden by the interests or fundamental rights and freedoms of the affected individuals, these include:&lt;br /&gt;
** Customer service&lt;br /&gt;
** Marketing, advertising, and fundraising&lt;br /&gt;
** Protecting our users, personnel, and property&lt;br /&gt;
** Managing user accounts&lt;br /&gt;
** Organizing and running events and programs&lt;br /&gt;
** Analyzing and improving our business&lt;br /&gt;
** Managing legal issues&lt;br /&gt;
We may also process information for the same legitimate interests of our users and business partners.&lt;br /&gt;
&lt;br /&gt;
* Legal Compliance. We may need to use and disclose information in certain ways to comply with our legal obligations.&lt;br /&gt;
&lt;br /&gt;
* Consent. Where required by law, and in some other cases where legally permissible, we handle information on the basis of consent. Where we handle your information on the basis of consent, you have the right to withdraw your consent; in accordance with applicable law.&lt;br /&gt;
&lt;br /&gt;
=== 6.     Online Analytics ===&lt;br /&gt;
&lt;br /&gt;
We may use third-party web analytics services (such as Google Analytics) on our Services to collect and analyze the information discussed above, and to engage in auditing, research, or reporting. The information (including your IP address) collected by various analytics technologies described in the “Cookies and Other Tracking Technologies” section above will be disclosed to or collected directly by these service providers, who use the information to evaluate your use of the Services, including by noting the third-party website from which you arrive to our Site, analyzing usage trends, assisting with fraud prevention, and providing certain features to you. To prevent Google Analytics from using your information for analytics, you may install the Google Analytics Opt-out Browser Add-on by clicking [https://tools.google.com/dlpage/gaoptout here].&lt;br /&gt;
&lt;br /&gt;
=== 7.     Your Choices and Data Subject Rights ===&lt;br /&gt;
&lt;br /&gt;
You have various rights with respect to the collection and use of your information through the Services.  Those choices are as follows:&lt;br /&gt;
&lt;br /&gt;
* Email Unsubscribe – You may unsubscribe from our marketing emails at any time by clicking on the &amp;quot;opt-out completely&amp;quot; link at the bottom of each newsletter&lt;br /&gt;
* Fundraising Analytics – You may opt out of EL&#039;s fundraising analytics activities by contacting Us with your request.&lt;br /&gt;
* Account Preferences – If you have registered for an account with us through our Services, you can update your account information or adjust your email communications preferences by logging into your account and updating your settings.&lt;br /&gt;
* EU Data Subject Rights – Individuals in the European Economic Area (“EEA”) and other jurisdictions have certain legal rights (subject to applicable exceptions and limitations) to obtain confirmation of whether we hold certain information about them, to access such information, and to obtain its correction or deletion in appropriate circumstances. You may have the right to object to our handling of your information, restrict our processing of your information, and to withdraw any consent you have provided. To exercise these rights, please email Us with the nature of your request. You also have the right to go directly to the relevant supervisory or legal authority, but we encourage you to contact us so that we may resolve your concerns directly as best and as promptly as we can.&lt;br /&gt;
&lt;br /&gt;
=== 8.     International Transfers ===&lt;br /&gt;
&lt;br /&gt;
Our computer systems are currently based in Germany and Ecuador and the majority of our Volunteer are based in Ecuador or are located in various countries around the world. As described above in the “When We Disclose Your Information” section, we may share your information with trusted service providers or business partners in countries other than your country of residence, including the United States and Ecuador, in accordance with applicable law. This means that some of your information may be processed in the United States or Ecuador, which may not offer the same level of protection as the privacy laws of your jurisdiction. By providing us with your information, you acknowledge any such transfer, storage or use.&lt;br /&gt;
If we provide any information about you to any third parties information processors located outside of the EEA, we will take appropriate measures to ensure such companies protect your information adequately in accordance with this Privacy Policy and other data protection laws to govern the transfers of such data.&lt;br /&gt;
&lt;br /&gt;
=== 9.     Security Measures ===&lt;br /&gt;
&lt;br /&gt;
We have implemented technical, physical, and organizational security measures to protect against the loss, misuse, and/or alteration of your information. These safeguards vary based on the sensitivity of the information that we collect and store. However, we cannot and do not guarantee that these measures will prevent every unauthorized attempt to access, use, or disclose your information since despite our efforts, no Internet and/or other electronic transmissions can be completely secure.&lt;br /&gt;
&lt;br /&gt;
=== 10.  Children ===&lt;br /&gt;
&lt;br /&gt;
The Services are intended for users over the age of 18 and are not directed at children under the age of 13. If we become aware that we have collected personal information (as defined by the Children’s Online Privacy Protection Act) from children under the age of 13, or personal data (as defined by the EU GDPR) from children under the age of 16, we will take reasonable steps to delete it as soon as practicable.&lt;br /&gt;
&lt;br /&gt;
=== 11.  Data Retention ===&lt;br /&gt;
&lt;br /&gt;
We retain the information we collect for as long as necessary to fulfill the purposes set forth in this Privacy Policy or as long as we are legally required or permitted to do so. Information may persist in copies made for backup and business continuity purposes for additional time.&lt;br /&gt;
&lt;br /&gt;
=== 12.  Third-Party Links and Services ===&lt;br /&gt;
&lt;br /&gt;
The Services may contain links to third-party websites (e.g., social media sites like Facebook and Twitter), third-party plug-ins (e.g., the Facebook “like” button and Twitter “follow” button), and other services. If you choose to use these sites or features, you may disclose your information not just to those third-parties, but also to their users and the public more generally depending on how their services function. Eco-Libre is not responsible for the content or privacy practices of such third party websites or services. The collection, use and disclosure of your information will be subject to the privacy policies of the third party websites or services, and not this Privacy Policy. We encourage you to read the privacy statements of each and every site you visit.&lt;br /&gt;
&lt;br /&gt;
=== 13.  Changes to this Privacy Policy ===&lt;br /&gt;
&lt;br /&gt;
We will continue to evaluate this Privacy Policy as we update and expand our Services, and we may make changes to the Privacy Policy accordingly. We will post any changes here and revise the date last updated above. We encourage you to check this page periodically for updates to stay informed on how we collect, use and share your information. If we make material changes to this Privacy Policy, we will provide you with notice as required by law.&lt;br /&gt;
&lt;br /&gt;
=== 14.  Questions About this Privacy Policy ===&lt;br /&gt;
&lt;br /&gt;
If you have any questions about this Privacy Policy or our privacy practices, you can contact us at: https://eco-libre.org/contact&lt;br /&gt;
&lt;br /&gt;
The Eco-Libre Privacy Policy is dedicated to the public domain under the [https://creativecommons.org/licenses/by-sa/4.0/ CC-BY-SA-4.0 license]. You are free to use and adapt this Privacy Policy and any applicable Supplemental Privacy Policy Terms for your own purposes. However, please keep in mind that this Privacy Policy may not be completely suitable for your situation. Eco-Libre strongly encourages you to seek the advice of your own attorney before repurposing this Privacy Policy on your own site.&lt;/div&gt;</summary>
		<author><name>Maltfield</name></author>
	</entry>
	<entry>
		<id>https://wiki.eco-libre.org/index.php?title=Eco-Libre:Privacy_policy&amp;diff=75</id>
		<title>Eco-Libre:Privacy policy</title>
		<link rel="alternate" type="text/html" href="https://wiki.eco-libre.org/index.php?title=Eco-Libre:Privacy_policy&amp;diff=75"/>
		<updated>2026-04-26T21:52:23Z</updated>

		<summary type="html">&lt;p&gt;Maltfield: /* 7.     Your Choices and Data Subject Rights */ s/CC/EL/&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This Privacy Policy (“Policy”) explains the information collection, use, and sharing practices of Eco-Libre (“EL”, “we,” “us,” and “our”).&lt;br /&gt;
&lt;br /&gt;
This Policy is incorporated into and part of Eco-Libre Terms of Use located at https://wiki.eco-libre.org/wiki/Eco-Libre:Terms_of_Service.&lt;br /&gt;
&lt;br /&gt;
Unless otherwise noted on a particular website or service hosted by Eco-Libre, this Policy describes and governs the information collection, use, and sharing practices of Eco-Libre with respect to your use of our websites that link to this Privacy Policy, including: https://eco-libre.org, https://www.eco-libre.org, https://phplist.eco-libre.org, and https://wiki.eco-libre.org (collectively, the “Websites”), and the services we provide through our Websites and/or host on our servers, and the services available through them are referred to as the “Services”).&lt;br /&gt;
&lt;br /&gt;
Before you use or submit any information through or in connection with the Services, please carefully review this Privacy Policy. By using any part of the Services, you understand that your information will be collected, used, and disclosed as outlined in this Privacy Policy. IF YOU DO NOT AGREE TO THIS PRIVACY POLICY, PLEASE DO NOT USE THE SERVICES.&lt;br /&gt;
&lt;br /&gt;
=== 1.     Our Principles ===&lt;br /&gt;
&lt;br /&gt;
Eco-Libre has designed this policy to be consistent with the following principles:&lt;br /&gt;
&lt;br /&gt;
*   Privacy policies should be human readable and easy to find.&lt;br /&gt;
*   Data collection, storage, and processing should be simplified as much as possible to enhance security, ensure consistency, and make the practices easy for users to understand. &lt;br /&gt;
*  Data practices should meet the reasonable expectations of users.&lt;br /&gt;
&lt;br /&gt;
=== 2.     Information We Collect ===&lt;br /&gt;
&lt;br /&gt;
We collect information in multiple ways, including when you provide information directly to us; when we passively collect information from you, such as from your browser or device; and from third parties.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Information You Provide Directly to Us&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
We will collect any information you provide to us. We may collect information from you in a variety of ways, such as when you: (a) create an online account, (b) apply for to become an Eco-Libre volunteer, (c) create an account for one of our Services, (d) make a donation or purchase, (e) register for an event, (f) apply for a scholarship, grant, or fellowship, (g) contact us or provide feedback, (h) sign a petition distributed by Eco-Libre, (i) upload your creative work or images, (j) subscribe to our newsletter, or (k) apply for a job at Eco-Libre. This information may include but is not limited to your name, email address, phone number, mailing address, payment information, photo, geographic location, and your social media handles.  We may also collect additional demographic and other information about you in connection with our conferences and events (e.g., dietary and other preferences), and the provision of this information to us by you is optional.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Information that Is Automatically Collected&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Device/Usage Information&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
We may automatically collect certain information about the computer or devices (including mobile devices or tablets) you use to access the Services. As described further below, we may collect and analyze (a) device information such as IP addresses, location information (by country and city), unique device identifiers, IMEI and TCP/IP address, browser types, browser language, operating system, mobile device carrier information, and (b) information related to the ways in which you interact with the Services, such as referring and exit web pages and URLs, platform type, the number of clicks, domain names, landing pages, pages and content viewed and the order of those pages, statistical information about the use of the Services, the amount of time spent on particular pages, the date and time you used the Services, the frequency of your use of the Services, error logs, and other similar information. As described further below, we may use third-party analytics providers and technologies, including cookies and similar tools, to assist in collecting this information.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Cookies and Other Tracking Technologies&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
We also collect data about your use of the Services through the use of Internet server logs and online tracking technologies, like cookies and/or tracking pixels. A web server log is a file where website activity is stored. A cookie is a small text file that is placed on your computer when you visit a website, that enables us to: (a) recognize your computer; (b) store your preferences and settings; (c) understand the web pages of the Services you have visited and the referral sites that have led you to our Services; (d) enhance your user experience by delivering content  specific to your inferred interests; (e) perform searches and analytics; and (f) assist with security administrative functions. Tracking pixels (sometimes referred to as web beacons or clear GIFs) are tiny electronic tags with a unique identifier embedded in websites, online ads and/or email, and that are designed to provide usage information like ad impressions or clicks, measure popularity of the Services and associated advertising, and to access user cookies. We may also use tracking technologies in our license buttons and/or icons that you can embed on other sites/services to track the website addresses where they are embedded, gauge user interaction with them, and determine the number of unique viewers of them. If you receive email from us (such as a newsletter, campaign updates, or other ongoing email communications from EL), we may use certain analytics tools, such as clear GIFs, to capture data such as whether you open our message, click on any links or banners our email contains, or otherwise interact with what we send. This data allows us to gauge the effectiveness of our communications and marketing campaigns.  As we adopt additional technologies, we may also gather additional information through other methods.&lt;br /&gt;
&lt;br /&gt;
Please note that you can change your settings to notify you when a cookie is being set or updated, or to block cookies altogether. Please consult the “Help” section of your browser for more information (e.g.,[http://windows.microsoft.com/en-US/windows-vista/Block-or-allow-cookies  Internet Explorer];[https://support.google.com/chrome/answer/95647?hl=en  Google Chrome];[http://kb.mozillazine.org/Cookies#Firefox  Mozilla Firefox]; or[http://support.apple.com/kb/PH5042  Apple Safari]). Please note that by blocking any or all cookies, you may not have access to certain features or offerings of the Services.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; Information from Third Parties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
We may also collect information about you or others through third parties. For example, if you apply for to become an Eco-Libre volunteer, we may collect information from the references or vouchers you identified in your membership application.  To the extent permitted by law, we may also collect information from third parties, including public sources, social media platforms, and marketing and market research firms. Depending on the source, this information collected from third parties could include name, contact information, demographic information, information about an individual’s employer, information to verify identity or trustworthiness, and information for other fraud or safety protection purposes.&lt;br /&gt;
&lt;br /&gt;
=== 3.     How We Use Your Information ===&lt;br /&gt;
&lt;br /&gt;
We may use the information we collect from and about you to:&lt;br /&gt;
&lt;br /&gt;
*        Fulfill the purposes for which you provided it;&lt;br /&gt;
*        Evaluate your application for a scholarship, grant, fellowship, or to become an Eco-Libre Volunteer;&lt;br /&gt;
*        Distribute funds to scholarship and grant recipients;&lt;br /&gt;
*        Provide and improve the Services, including to develop new features or services, promote EL community collaboration, take steps to secure the Services, and for technical and customer support;&lt;br /&gt;
*        Fundraise, accept donations, or process purchases of EL merchandise;&lt;br /&gt;
*        Host events and programs such as EL Summits or EL training courses;&lt;br /&gt;
*        Send you information about your relationship or transactions with us, account alerts, or other communications, such as newsletters to which you have subscribed;&lt;br /&gt;
*        Process and respond to your inquiries or to request your feedback;&lt;br /&gt;
*        Conduct analytics, research, and reporting, including to synthesize and derive insights from your use of our Services;&lt;br /&gt;
*        Evaluate job candidates during our hiring process; and&lt;br /&gt;
*        Comply with the law and protect the safety, rights, property, or security of Eco-Libre, the Services, our users, and the general public&lt;br /&gt;
&lt;br /&gt;
Please note that we may combine information that we collect from you and about you (including automatically collected information) with information we obtain about you from our affiliates and/or non-affiliated third parties, and use such combined information in accordance with this Privacy Policy.&lt;br /&gt;
&lt;br /&gt;
We may aggregate and/or de-identify information collected through the Services. We may use de-identified and/or aggregated data for any purpose, including without limitation for research and marketing purposes.&lt;br /&gt;
&lt;br /&gt;
=== 4.     When We Disclose Your Information ===&lt;br /&gt;
&lt;br /&gt;
We may disclose and/or share your information under the following circumstances:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Service Providers.&#039;&#039;&#039; We may disclose your information with third parties who perform services on our behalf, including without limitation, event management, candidate selection, marketing, customer support, data storage, data analysis and processing, and legal services.&lt;br /&gt;
&lt;br /&gt;
For example, when you apply for a scholarship, grant, fellowship, or to be selected to participate in one of our other programs, EL may share that information with the individuals designated to select participants in, and help manage, those programs, which may include people not employed by Eco-Libre.&lt;br /&gt;
&lt;br /&gt;
Or, when you register for an event, we may share your information with vendors, third party contractors, partner organizations, and volunteers for the purpose of organizing and running the event and related activities.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039; Legal Compliance and Protection of Eco-Libre and Others.&#039;&#039;&#039; We may disclose your information if required to do so by law or on a good faith belief that such disclosure is permitted by this Privacy Policy or reasonably necessary or appropriate for any of the following reasons: (a) to comply with legal process; (b) to enforce or apply our this Privacy Policy, or other contracts with you, including investigation of potential violations thereof; (c) enforce our Charter including the Code of Conduct and policies contained and incorporated therein, (d) to respond to your requests for customer service; and/or (e) to protect the rights, property, or personal safety of Eco-Libre, our agents and affiliates, our users, and the public. This includes exchanging information with other companies and organizations for fraud protection, and spam/malware prevention, and similar purposes.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Business Transfers.&#039;&#039;&#039; As we continue to develop our business, we may engage in certain business transactions, such as the transfer or sale of our assets. In such transactions, (including in contemplation of such transactions, e.g., due diligence) your information may be disclosed. If any of Eco-Libre’ assets are sold or transferred to a third party, customer information (including your email address) would likely be one of the transferred business assets.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Affiliated Companies.&#039;&#039;&#039; We may disclose your information with current or future affiliated companies.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Consent.&#039;&#039;&#039; We may disclose your information to any third parties based on your consent to do so.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Aggregate/De-identified Information.&#039;&#039;&#039; We may disclose de-identified and/or aggregated data for any purpose to third parties, including advertisers, promotional partners, and/or others.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Eco-Libre Volunteers.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
o   In connection with you Eco-Libre Volunteer application, we may provide your information to the individuals you’ve selected to vouch for you, and with those reviewing your application, including the Membership Council whose members include people not employed by Eco-Libre and who are located in various countries around the world.&lt;br /&gt;
&lt;br /&gt;
o   If you vouch for someone’s application to the Eco-Libre Volunteer program, your information will be shared with those reviewing the application, including the Membership Council, and if you provide a positive vouching statement, that statement will be shared with the applicant if and when they are admitted for membership.&lt;br /&gt;
&lt;br /&gt;
o   Once you are an Eco-Libre Volunteer, we may provide you with a public profile page,  pre-populated with certain information you provided in your application such as your name, areas of interest, images or other content you upload, which will be publicly displayed to anyone who visits the site.&lt;br /&gt;
&lt;br /&gt;
=== 5.     Legal Basis for Processing Personal Data ===&lt;br /&gt;
&lt;br /&gt;
The laws in some jurisdictions require companies to tell you about the legal ground they rely on to use or disclose information that can be directly linked to or used to identify you. To the extent those laws apply, our legal grounds for processing such information are as follows:&lt;br /&gt;
&lt;br /&gt;
* To Honor Our Contractual Commitments to You. Much of our processing of information is to meet our contractual obligations to provide services to our users.&lt;br /&gt;
&lt;br /&gt;
* Legitimate Interests. In many cases, we handle information on the ground that it furthers our legitimate interests in ways that are not overridden by the interests or fundamental rights and freedoms of the affected individuals, these include:&lt;br /&gt;
** Customer service&lt;br /&gt;
** Marketing, advertising, and fundraising&lt;br /&gt;
** Protecting our users, personnel, and property&lt;br /&gt;
** Managing user accounts&lt;br /&gt;
** Organizing and running events and programs&lt;br /&gt;
** Analyzing and improving our business&lt;br /&gt;
** Managing legal issues&lt;br /&gt;
We may also process information for the same legitimate interests of our users and business partners.&lt;br /&gt;
&lt;br /&gt;
* Legal Compliance. We may need to use and disclose information in certain ways to comply with our legal obligations.&lt;br /&gt;
&lt;br /&gt;
* Consent. Where required by law, and in some other cases where legally permissible, we handle information on the basis of consent. Where we handle your information on the basis of consent, you have the right to withdraw your consent; in accordance with applicable law.&lt;br /&gt;
&lt;br /&gt;
=== 6.     Online Analytics ===&lt;br /&gt;
&lt;br /&gt;
We may use third-party web analytics services (such as Google Analytics) on our Services to collect and analyze the information discussed above, and to engage in auditing, research, or reporting. The information (including your IP address) collected by various analytics technologies described in the “Cookies and Other Tracking Technologies” section above will be disclosed to or collected directly by these service providers, who use the information to evaluate your use of the Services, including by noting the third-party website from which you arrive to our Site, analyzing usage trends, assisting with fraud prevention, and providing certain features to you. To prevent Google Analytics from using your information for analytics, you may install the Google Analytics Opt-out Browser Add-on by clicking [https://tools.google.com/dlpage/gaoptout here].&lt;br /&gt;
&lt;br /&gt;
=== 7.     Your Choices and Data Subject Rights ===&lt;br /&gt;
&lt;br /&gt;
You have various rights with respect to the collection and use of your information through the Services.  Those choices are as follows:&lt;br /&gt;
&lt;br /&gt;
* Email Unsubscribe – You may unsubscribe from our marketing emails at any time by clicking on the &amp;quot;opt-out completely&amp;quot; link at the bottom of each newsletter&lt;br /&gt;
* Fundraising Analytics – You may opt out of EL&#039;s fundraising analytics activities by contacting Us with your request.&lt;br /&gt;
* Account Preferences – If you have registered for an account with us through our Services, you can update your account information or adjust your email communications preferences by logging into your account and updating your settings.&lt;br /&gt;
* EU Data Subject Rights – Individuals in the European Economic Area (“EEA”) and other jurisdictions have certain legal rights (subject to applicable exceptions and limitations) to obtain confirmation of whether we hold certain information about them, to access such information, and to obtain its correction or deletion in appropriate circumstances. You may have the right to object to our handling of your information, restrict our processing of your information, and to withdraw any consent you have provided. To exercise these rights, please email Us with the nature of your request. You also have the right to go directly to the relevant supervisory or legal authority, but we encourage you to contact us so that we may resolve your concerns directly as best and as promptly as we can.&lt;br /&gt;
&lt;br /&gt;
=== 8.     International Transfers ===&lt;br /&gt;
&lt;br /&gt;
Our computer systems are currently based in the United States and the United Kingdom and the majority of our contractors are based in the United States or Canada. As described above in the “When We Disclose Your Information” section, we may share your information with trusted service providers or business partners in countries other than your country of residence, including the United States, in accordance with applicable law. This means that some of your information may be processed in the United States, which may not offer the same level of protection as the privacy laws of your jurisdiction. By providing us with your information, you acknowledge any such transfer, storage or use.&lt;br /&gt;
If we provide any information about you to any third parties information processors located outside of the EEA, we will take appropriate measures to ensure such companies protect your information adequately in accordance with this Privacy Policy and other data protection laws to govern the transfers of such data.&lt;br /&gt;
&lt;br /&gt;
=== 9.     Security Measures ===&lt;br /&gt;
&lt;br /&gt;
We have implemented technical, physical, and organizational security measures to protect against the loss, misuse, and/or alteration of your information. These safeguards vary based on the sensitivity of the information that we collect and store. However, we cannot and do not guarantee that these measures will prevent every unauthorized attempt to access, use, or disclose your information since despite our efforts, no Internet and/or other electronic transmissions can be completely secure.&lt;br /&gt;
&lt;br /&gt;
=== 10.  Children ===&lt;br /&gt;
&lt;br /&gt;
The Services are intended for users over the age of 18 and are not directed at children under the age of 13. If we become aware that we have collected personal information (as defined by the Children’s Online Privacy Protection Act) from children under the age of 13, or personal data (as defined by the EU GDPR) from children under the age of 16, we will take reasonable steps to delete it as soon as practicable.&lt;br /&gt;
&lt;br /&gt;
=== 11.  Data Retention ===&lt;br /&gt;
&lt;br /&gt;
We retain the information we collect for as long as necessary to fulfill the purposes set forth in this Privacy Policy or as long as we are legally required or permitted to do so. Information may persist in copies made for backup and business continuity purposes for additional time.&lt;br /&gt;
&lt;br /&gt;
=== 12.  Third-Party Links and Services ===&lt;br /&gt;
&lt;br /&gt;
The Services may contain links to third-party websites (e.g., social media sites like Facebook and Twitter), third-party plug-ins (e.g., the Facebook “like” button and Twitter “follow” button), and other services. If you choose to use these sites or features, you may disclose your information not just to those third-parties, but also to their users and the public more generally depending on how their services function. Eco-Libre is not responsible for the content or privacy practices of such third party websites or services. The collection, use and disclosure of your information will be subject to the privacy policies of the third party websites or services, and not this Privacy Policy. We encourage you to read the privacy statements of each and every site you visit.&lt;br /&gt;
&lt;br /&gt;
=== 13.  Changes to this Privacy Policy ===&lt;br /&gt;
&lt;br /&gt;
We will continue to evaluate this Privacy Policy as we update and expand our Services, and we may make changes to the Privacy Policy accordingly. We will post any changes here and revise the date last updated above. We encourage you to check this page periodically for updates to stay informed on how we collect, use and share your information. If we make material changes to this Privacy Policy, we will provide you with notice as required by law.&lt;br /&gt;
&lt;br /&gt;
=== 14.  Questions About this Privacy Policy ===&lt;br /&gt;
&lt;br /&gt;
If you have any questions about this Privacy Policy or our privacy practices, you can contact us at: https://eco-libre.org/contact&lt;br /&gt;
&lt;br /&gt;
The Eco-Libre Privacy Policy is dedicated to the public domain under the [https://creativecommons.org/licenses/by-sa/4.0/ CC-BY-SA-4.0 license]. You are free to use and adapt this Privacy Policy and any applicable Supplemental Privacy Policy Terms for your own purposes. However, please keep in mind that this Privacy Policy may not be completely suitable for your situation. Eco-Libre strongly encourages you to seek the advice of your own attorney before repurposing this Privacy Policy on your own site.&lt;/div&gt;</summary>
		<author><name>Maltfield</name></author>
	</entry>
	<entry>
		<id>https://wiki.eco-libre.org/index.php?title=Eco-Libre:Privacy_policy&amp;diff=74</id>
		<title>Eco-Libre:Privacy policy</title>
		<link rel="alternate" type="text/html" href="https://wiki.eco-libre.org/index.php?title=Eco-Libre:Privacy_policy&amp;diff=74"/>
		<updated>2026-04-26T21:49:27Z</updated>

		<summary type="html">&lt;p&gt;Maltfield: /* 6.     Online Analytics */ fix link syntax error&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This Privacy Policy (“Policy”) explains the information collection, use, and sharing practices of Eco-Libre (“EL”, “we,” “us,” and “our”).&lt;br /&gt;
&lt;br /&gt;
This Policy is incorporated into and part of Eco-Libre Terms of Use located at https://wiki.eco-libre.org/wiki/Eco-Libre:Terms_of_Service.&lt;br /&gt;
&lt;br /&gt;
Unless otherwise noted on a particular website or service hosted by Eco-Libre, this Policy describes and governs the information collection, use, and sharing practices of Eco-Libre with respect to your use of our websites that link to this Privacy Policy, including: https://eco-libre.org, https://www.eco-libre.org, https://phplist.eco-libre.org, and https://wiki.eco-libre.org (collectively, the “Websites”), and the services we provide through our Websites and/or host on our servers, and the services available through them are referred to as the “Services”).&lt;br /&gt;
&lt;br /&gt;
Before you use or submit any information through or in connection with the Services, please carefully review this Privacy Policy. By using any part of the Services, you understand that your information will be collected, used, and disclosed as outlined in this Privacy Policy. IF YOU DO NOT AGREE TO THIS PRIVACY POLICY, PLEASE DO NOT USE THE SERVICES.&lt;br /&gt;
&lt;br /&gt;
=== 1.     Our Principles ===&lt;br /&gt;
&lt;br /&gt;
Eco-Libre has designed this policy to be consistent with the following principles:&lt;br /&gt;
&lt;br /&gt;
*   Privacy policies should be human readable and easy to find.&lt;br /&gt;
*   Data collection, storage, and processing should be simplified as much as possible to enhance security, ensure consistency, and make the practices easy for users to understand. &lt;br /&gt;
*  Data practices should meet the reasonable expectations of users.&lt;br /&gt;
&lt;br /&gt;
=== 2.     Information We Collect ===&lt;br /&gt;
&lt;br /&gt;
We collect information in multiple ways, including when you provide information directly to us; when we passively collect information from you, such as from your browser or device; and from third parties.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Information You Provide Directly to Us&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
We will collect any information you provide to us. We may collect information from you in a variety of ways, such as when you: (a) create an online account, (b) apply for to become an Eco-Libre volunteer, (c) create an account for one of our Services, (d) make a donation or purchase, (e) register for an event, (f) apply for a scholarship, grant, or fellowship, (g) contact us or provide feedback, (h) sign a petition distributed by Eco-Libre, (i) upload your creative work or images, (j) subscribe to our newsletter, or (k) apply for a job at Eco-Libre. This information may include but is not limited to your name, email address, phone number, mailing address, payment information, photo, geographic location, and your social media handles.  We may also collect additional demographic and other information about you in connection with our conferences and events (e.g., dietary and other preferences), and the provision of this information to us by you is optional.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Information that Is Automatically Collected&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Device/Usage Information&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
We may automatically collect certain information about the computer or devices (including mobile devices or tablets) you use to access the Services. As described further below, we may collect and analyze (a) device information such as IP addresses, location information (by country and city), unique device identifiers, IMEI and TCP/IP address, browser types, browser language, operating system, mobile device carrier information, and (b) information related to the ways in which you interact with the Services, such as referring and exit web pages and URLs, platform type, the number of clicks, domain names, landing pages, pages and content viewed and the order of those pages, statistical information about the use of the Services, the amount of time spent on particular pages, the date and time you used the Services, the frequency of your use of the Services, error logs, and other similar information. As described further below, we may use third-party analytics providers and technologies, including cookies and similar tools, to assist in collecting this information.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Cookies and Other Tracking Technologies&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
We also collect data about your use of the Services through the use of Internet server logs and online tracking technologies, like cookies and/or tracking pixels. A web server log is a file where website activity is stored. A cookie is a small text file that is placed on your computer when you visit a website, that enables us to: (a) recognize your computer; (b) store your preferences and settings; (c) understand the web pages of the Services you have visited and the referral sites that have led you to our Services; (d) enhance your user experience by delivering content  specific to your inferred interests; (e) perform searches and analytics; and (f) assist with security administrative functions. Tracking pixels (sometimes referred to as web beacons or clear GIFs) are tiny electronic tags with a unique identifier embedded in websites, online ads and/or email, and that are designed to provide usage information like ad impressions or clicks, measure popularity of the Services and associated advertising, and to access user cookies. We may also use tracking technologies in our license buttons and/or icons that you can embed on other sites/services to track the website addresses where they are embedded, gauge user interaction with them, and determine the number of unique viewers of them. If you receive email from us (such as a newsletter, campaign updates, or other ongoing email communications from EL), we may use certain analytics tools, such as clear GIFs, to capture data such as whether you open our message, click on any links or banners our email contains, or otherwise interact with what we send. This data allows us to gauge the effectiveness of our communications and marketing campaigns.  As we adopt additional technologies, we may also gather additional information through other methods.&lt;br /&gt;
&lt;br /&gt;
Please note that you can change your settings to notify you when a cookie is being set or updated, or to block cookies altogether. Please consult the “Help” section of your browser for more information (e.g.,[http://windows.microsoft.com/en-US/windows-vista/Block-or-allow-cookies  Internet Explorer];[https://support.google.com/chrome/answer/95647?hl=en  Google Chrome];[http://kb.mozillazine.org/Cookies#Firefox  Mozilla Firefox]; or[http://support.apple.com/kb/PH5042  Apple Safari]). Please note that by blocking any or all cookies, you may not have access to certain features or offerings of the Services.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; Information from Third Parties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
We may also collect information about you or others through third parties. For example, if you apply for to become an Eco-Libre volunteer, we may collect information from the references or vouchers you identified in your membership application.  To the extent permitted by law, we may also collect information from third parties, including public sources, social media platforms, and marketing and market research firms. Depending on the source, this information collected from third parties could include name, contact information, demographic information, information about an individual’s employer, information to verify identity or trustworthiness, and information for other fraud or safety protection purposes.&lt;br /&gt;
&lt;br /&gt;
=== 3.     How We Use Your Information ===&lt;br /&gt;
&lt;br /&gt;
We may use the information we collect from and about you to:&lt;br /&gt;
&lt;br /&gt;
*        Fulfill the purposes for which you provided it;&lt;br /&gt;
*        Evaluate your application for a scholarship, grant, fellowship, or to become an Eco-Libre Volunteer;&lt;br /&gt;
*        Distribute funds to scholarship and grant recipients;&lt;br /&gt;
*        Provide and improve the Services, including to develop new features or services, promote EL community collaboration, take steps to secure the Services, and for technical and customer support;&lt;br /&gt;
*        Fundraise, accept donations, or process purchases of EL merchandise;&lt;br /&gt;
*        Host events and programs such as EL Summits or EL training courses;&lt;br /&gt;
*        Send you information about your relationship or transactions with us, account alerts, or other communications, such as newsletters to which you have subscribed;&lt;br /&gt;
*        Process and respond to your inquiries or to request your feedback;&lt;br /&gt;
*        Conduct analytics, research, and reporting, including to synthesize and derive insights from your use of our Services;&lt;br /&gt;
*        Evaluate job candidates during our hiring process; and&lt;br /&gt;
*        Comply with the law and protect the safety, rights, property, or security of Eco-Libre, the Services, our users, and the general public&lt;br /&gt;
&lt;br /&gt;
Please note that we may combine information that we collect from you and about you (including automatically collected information) with information we obtain about you from our affiliates and/or non-affiliated third parties, and use such combined information in accordance with this Privacy Policy.&lt;br /&gt;
&lt;br /&gt;
We may aggregate and/or de-identify information collected through the Services. We may use de-identified and/or aggregated data for any purpose, including without limitation for research and marketing purposes.&lt;br /&gt;
&lt;br /&gt;
=== 4.     When We Disclose Your Information ===&lt;br /&gt;
&lt;br /&gt;
We may disclose and/or share your information under the following circumstances:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Service Providers.&#039;&#039;&#039; We may disclose your information with third parties who perform services on our behalf, including without limitation, event management, candidate selection, marketing, customer support, data storage, data analysis and processing, and legal services.&lt;br /&gt;
&lt;br /&gt;
For example, when you apply for a scholarship, grant, fellowship, or to be selected to participate in one of our other programs, EL may share that information with the individuals designated to select participants in, and help manage, those programs, which may include people not employed by Eco-Libre.&lt;br /&gt;
&lt;br /&gt;
Or, when you register for an event, we may share your information with vendors, third party contractors, partner organizations, and volunteers for the purpose of organizing and running the event and related activities.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039; Legal Compliance and Protection of Eco-Libre and Others.&#039;&#039;&#039; We may disclose your information if required to do so by law or on a good faith belief that such disclosure is permitted by this Privacy Policy or reasonably necessary or appropriate for any of the following reasons: (a) to comply with legal process; (b) to enforce or apply our this Privacy Policy, or other contracts with you, including investigation of potential violations thereof; (c) enforce our Charter including the Code of Conduct and policies contained and incorporated therein, (d) to respond to your requests for customer service; and/or (e) to protect the rights, property, or personal safety of Eco-Libre, our agents and affiliates, our users, and the public. This includes exchanging information with other companies and organizations for fraud protection, and spam/malware prevention, and similar purposes.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Business Transfers.&#039;&#039;&#039; As we continue to develop our business, we may engage in certain business transactions, such as the transfer or sale of our assets. In such transactions, (including in contemplation of such transactions, e.g., due diligence) your information may be disclosed. If any of Eco-Libre’ assets are sold or transferred to a third party, customer information (including your email address) would likely be one of the transferred business assets.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Affiliated Companies.&#039;&#039;&#039; We may disclose your information with current or future affiliated companies.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Consent.&#039;&#039;&#039; We may disclose your information to any third parties based on your consent to do so.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Aggregate/De-identified Information.&#039;&#039;&#039; We may disclose de-identified and/or aggregated data for any purpose to third parties, including advertisers, promotional partners, and/or others.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Eco-Libre Volunteers.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
o   In connection with you Eco-Libre Volunteer application, we may provide your information to the individuals you’ve selected to vouch for you, and with those reviewing your application, including the Membership Council whose members include people not employed by Eco-Libre and who are located in various countries around the world.&lt;br /&gt;
&lt;br /&gt;
o   If you vouch for someone’s application to the Eco-Libre Volunteer program, your information will be shared with those reviewing the application, including the Membership Council, and if you provide a positive vouching statement, that statement will be shared with the applicant if and when they are admitted for membership.&lt;br /&gt;
&lt;br /&gt;
o   Once you are an Eco-Libre Volunteer, we may provide you with a public profile page,  pre-populated with certain information you provided in your application such as your name, areas of interest, images or other content you upload, which will be publicly displayed to anyone who visits the site.&lt;br /&gt;
&lt;br /&gt;
=== 5.     Legal Basis for Processing Personal Data ===&lt;br /&gt;
&lt;br /&gt;
The laws in some jurisdictions require companies to tell you about the legal ground they rely on to use or disclose information that can be directly linked to or used to identify you. To the extent those laws apply, our legal grounds for processing such information are as follows:&lt;br /&gt;
&lt;br /&gt;
* To Honor Our Contractual Commitments to You. Much of our processing of information is to meet our contractual obligations to provide services to our users.&lt;br /&gt;
&lt;br /&gt;
* Legitimate Interests. In many cases, we handle information on the ground that it furthers our legitimate interests in ways that are not overridden by the interests or fundamental rights and freedoms of the affected individuals, these include:&lt;br /&gt;
** Customer service&lt;br /&gt;
** Marketing, advertising, and fundraising&lt;br /&gt;
** Protecting our users, personnel, and property&lt;br /&gt;
** Managing user accounts&lt;br /&gt;
** Organizing and running events and programs&lt;br /&gt;
** Analyzing and improving our business&lt;br /&gt;
** Managing legal issues&lt;br /&gt;
We may also process information for the same legitimate interests of our users and business partners.&lt;br /&gt;
&lt;br /&gt;
* Legal Compliance. We may need to use and disclose information in certain ways to comply with our legal obligations.&lt;br /&gt;
&lt;br /&gt;
* Consent. Where required by law, and in some other cases where legally permissible, we handle information on the basis of consent. Where we handle your information on the basis of consent, you have the right to withdraw your consent; in accordance with applicable law.&lt;br /&gt;
&lt;br /&gt;
=== 6.     Online Analytics ===&lt;br /&gt;
&lt;br /&gt;
We may use third-party web analytics services (such as Google Analytics) on our Services to collect and analyze the information discussed above, and to engage in auditing, research, or reporting. The information (including your IP address) collected by various analytics technologies described in the “Cookies and Other Tracking Technologies” section above will be disclosed to or collected directly by these service providers, who use the information to evaluate your use of the Services, including by noting the third-party website from which you arrive to our Site, analyzing usage trends, assisting with fraud prevention, and providing certain features to you. To prevent Google Analytics from using your information for analytics, you may install the Google Analytics Opt-out Browser Add-on by clicking [https://tools.google.com/dlpage/gaoptout here].&lt;br /&gt;
&lt;br /&gt;
=== 7.     Your Choices and Data Subject Rights ===&lt;br /&gt;
&lt;br /&gt;
You have various rights with respect to the collection and use of your information through the Services.  Those choices are as follows:&lt;br /&gt;
&lt;br /&gt;
* Email Unsubscribe – You may unsubscribe from our marketing emails at any time by clicking on the “unsubscribe” link at the bottom of each newsletter or by emailing legal@creativecommons.org with your request.&lt;br /&gt;
* Fundraising Analytics – You may opt out of CC’s fundraising analytics activities by contacting legal@creativecommons.org with your request.&lt;br /&gt;
* Account Preferences – If you have registered for an account with us through our Services, you can update your account information or adjust your email communications preferences by logging into your account and updating your settings.&lt;br /&gt;
* EU Data Subject Rights – Individuals in the European Economic Area (“EEA”) and other jurisdictions have certain legal rights (subject to applicable exceptions and limitations) to obtain confirmation of whether we hold certain information about them, to access such information, and to obtain its correction or deletion in appropriate circumstances. You may have the right to object to our handling of your information, restrict our processing of your information, and to withdraw any consent you have provided. To exercise these rights, please email us at legal@creativecommons.org with the nature of your request. You also have the right to go directly to the relevant supervisory or legal authority, but we encourage you to contact us so that we may resolve your concerns directly as best and as promptly as we can.&lt;br /&gt;
&lt;br /&gt;
=== 8.     International Transfers ===&lt;br /&gt;
&lt;br /&gt;
Our computer systems are currently based in the United States and the United Kingdom and the majority of our contractors are based in the United States or Canada. As described above in the “When We Disclose Your Information” section, we may share your information with trusted service providers or business partners in countries other than your country of residence, including the United States, in accordance with applicable law. This means that some of your information may be processed in the United States, which may not offer the same level of protection as the privacy laws of your jurisdiction. By providing us with your information, you acknowledge any such transfer, storage or use.&lt;br /&gt;
If we provide any information about you to any third parties information processors located outside of the EEA, we will take appropriate measures to ensure such companies protect your information adequately in accordance with this Privacy Policy and other data protection laws to govern the transfers of such data.&lt;br /&gt;
&lt;br /&gt;
=== 9.     Security Measures ===&lt;br /&gt;
&lt;br /&gt;
We have implemented technical, physical, and organizational security measures to protect against the loss, misuse, and/or alteration of your information. These safeguards vary based on the sensitivity of the information that we collect and store. However, we cannot and do not guarantee that these measures will prevent every unauthorized attempt to access, use, or disclose your information since despite our efforts, no Internet and/or other electronic transmissions can be completely secure.&lt;br /&gt;
&lt;br /&gt;
=== 10.  Children ===&lt;br /&gt;
&lt;br /&gt;
The Services are intended for users over the age of 18 and are not directed at children under the age of 13. If we become aware that we have collected personal information (as defined by the Children’s Online Privacy Protection Act) from children under the age of 13, or personal data (as defined by the EU GDPR) from children under the age of 16, we will take reasonable steps to delete it as soon as practicable.&lt;br /&gt;
&lt;br /&gt;
=== 11.  Data Retention ===&lt;br /&gt;
&lt;br /&gt;
We retain the information we collect for as long as necessary to fulfill the purposes set forth in this Privacy Policy or as long as we are legally required or permitted to do so. Information may persist in copies made for backup and business continuity purposes for additional time.&lt;br /&gt;
&lt;br /&gt;
=== 12.  Third-Party Links and Services ===&lt;br /&gt;
&lt;br /&gt;
The Services may contain links to third-party websites (e.g., social media sites like Facebook and Twitter), third-party plug-ins (e.g., the Facebook “like” button and Twitter “follow” button), and other services. If you choose to use these sites or features, you may disclose your information not just to those third-parties, but also to their users and the public more generally depending on how their services function. Eco-Libre is not responsible for the content or privacy practices of such third party websites or services. The collection, use and disclosure of your information will be subject to the privacy policies of the third party websites or services, and not this Privacy Policy. We encourage you to read the privacy statements of each and every site you visit.&lt;br /&gt;
&lt;br /&gt;
=== 13.  Changes to this Privacy Policy ===&lt;br /&gt;
&lt;br /&gt;
We will continue to evaluate this Privacy Policy as we update and expand our Services, and we may make changes to the Privacy Policy accordingly. We will post any changes here and revise the date last updated above. We encourage you to check this page periodically for updates to stay informed on how we collect, use and share your information. If we make material changes to this Privacy Policy, we will provide you with notice as required by law.&lt;br /&gt;
&lt;br /&gt;
=== 14.  Questions About this Privacy Policy ===&lt;br /&gt;
&lt;br /&gt;
If you have any questions about this Privacy Policy or our privacy practices, you can contact us at: https://eco-libre.org/contact&lt;br /&gt;
&lt;br /&gt;
The Eco-Libre Privacy Policy is dedicated to the public domain under the [https://creativecommons.org/licenses/by-sa/4.0/ CC-BY-SA-4.0 license]. You are free to use and adapt this Privacy Policy and any applicable Supplemental Privacy Policy Terms for your own purposes. However, please keep in mind that this Privacy Policy may not be completely suitable for your situation. Eco-Libre strongly encourages you to seek the advice of your own attorney before repurposing this Privacy Policy on your own site.&lt;/div&gt;</summary>
		<author><name>Maltfield</name></author>
	</entry>
	<entry>
		<id>https://wiki.eco-libre.org/index.php?title=Eco-Libre:Privacy_policy&amp;diff=73</id>
		<title>Eco-Libre:Privacy policy</title>
		<link rel="alternate" type="text/html" href="https://wiki.eco-libre.org/index.php?title=Eco-Libre:Privacy_policy&amp;diff=73"/>
		<updated>2026-04-26T21:47:05Z</updated>

		<summary type="html">&lt;p&gt;Maltfield: /* 4.     When We Disclose Your Information */ s/CC/EL/&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This Privacy Policy (“Policy”) explains the information collection, use, and sharing practices of Eco-Libre (“EL”, “we,” “us,” and “our”).&lt;br /&gt;
&lt;br /&gt;
This Policy is incorporated into and part of Eco-Libre Terms of Use located at https://wiki.eco-libre.org/wiki/Eco-Libre:Terms_of_Service.&lt;br /&gt;
&lt;br /&gt;
Unless otherwise noted on a particular website or service hosted by Eco-Libre, this Policy describes and governs the information collection, use, and sharing practices of Eco-Libre with respect to your use of our websites that link to this Privacy Policy, including: https://eco-libre.org, https://www.eco-libre.org, https://phplist.eco-libre.org, and https://wiki.eco-libre.org (collectively, the “Websites”), and the services we provide through our Websites and/or host on our servers, and the services available through them are referred to as the “Services”).&lt;br /&gt;
&lt;br /&gt;
Before you use or submit any information through or in connection with the Services, please carefully review this Privacy Policy. By using any part of the Services, you understand that your information will be collected, used, and disclosed as outlined in this Privacy Policy. IF YOU DO NOT AGREE TO THIS PRIVACY POLICY, PLEASE DO NOT USE THE SERVICES.&lt;br /&gt;
&lt;br /&gt;
=== 1.     Our Principles ===&lt;br /&gt;
&lt;br /&gt;
Eco-Libre has designed this policy to be consistent with the following principles:&lt;br /&gt;
&lt;br /&gt;
*   Privacy policies should be human readable and easy to find.&lt;br /&gt;
*   Data collection, storage, and processing should be simplified as much as possible to enhance security, ensure consistency, and make the practices easy for users to understand. &lt;br /&gt;
*  Data practices should meet the reasonable expectations of users.&lt;br /&gt;
&lt;br /&gt;
=== 2.     Information We Collect ===&lt;br /&gt;
&lt;br /&gt;
We collect information in multiple ways, including when you provide information directly to us; when we passively collect information from you, such as from your browser or device; and from third parties.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Information You Provide Directly to Us&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
We will collect any information you provide to us. We may collect information from you in a variety of ways, such as when you: (a) create an online account, (b) apply for to become an Eco-Libre volunteer, (c) create an account for one of our Services, (d) make a donation or purchase, (e) register for an event, (f) apply for a scholarship, grant, or fellowship, (g) contact us or provide feedback, (h) sign a petition distributed by Eco-Libre, (i) upload your creative work or images, (j) subscribe to our newsletter, or (k) apply for a job at Eco-Libre. This information may include but is not limited to your name, email address, phone number, mailing address, payment information, photo, geographic location, and your social media handles.  We may also collect additional demographic and other information about you in connection with our conferences and events (e.g., dietary and other preferences), and the provision of this information to us by you is optional.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Information that Is Automatically Collected&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Device/Usage Information&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
We may automatically collect certain information about the computer or devices (including mobile devices or tablets) you use to access the Services. As described further below, we may collect and analyze (a) device information such as IP addresses, location information (by country and city), unique device identifiers, IMEI and TCP/IP address, browser types, browser language, operating system, mobile device carrier information, and (b) information related to the ways in which you interact with the Services, such as referring and exit web pages and URLs, platform type, the number of clicks, domain names, landing pages, pages and content viewed and the order of those pages, statistical information about the use of the Services, the amount of time spent on particular pages, the date and time you used the Services, the frequency of your use of the Services, error logs, and other similar information. As described further below, we may use third-party analytics providers and technologies, including cookies and similar tools, to assist in collecting this information.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Cookies and Other Tracking Technologies&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
We also collect data about your use of the Services through the use of Internet server logs and online tracking technologies, like cookies and/or tracking pixels. A web server log is a file where website activity is stored. A cookie is a small text file that is placed on your computer when you visit a website, that enables us to: (a) recognize your computer; (b) store your preferences and settings; (c) understand the web pages of the Services you have visited and the referral sites that have led you to our Services; (d) enhance your user experience by delivering content  specific to your inferred interests; (e) perform searches and analytics; and (f) assist with security administrative functions. Tracking pixels (sometimes referred to as web beacons or clear GIFs) are tiny electronic tags with a unique identifier embedded in websites, online ads and/or email, and that are designed to provide usage information like ad impressions or clicks, measure popularity of the Services and associated advertising, and to access user cookies. We may also use tracking technologies in our license buttons and/or icons that you can embed on other sites/services to track the website addresses where they are embedded, gauge user interaction with them, and determine the number of unique viewers of them. If you receive email from us (such as a newsletter, campaign updates, or other ongoing email communications from EL), we may use certain analytics tools, such as clear GIFs, to capture data such as whether you open our message, click on any links or banners our email contains, or otherwise interact with what we send. This data allows us to gauge the effectiveness of our communications and marketing campaigns.  As we adopt additional technologies, we may also gather additional information through other methods.&lt;br /&gt;
&lt;br /&gt;
Please note that you can change your settings to notify you when a cookie is being set or updated, or to block cookies altogether. Please consult the “Help” section of your browser for more information (e.g.,[http://windows.microsoft.com/en-US/windows-vista/Block-or-allow-cookies  Internet Explorer];[https://support.google.com/chrome/answer/95647?hl=en  Google Chrome];[http://kb.mozillazine.org/Cookies#Firefox  Mozilla Firefox]; or[http://support.apple.com/kb/PH5042  Apple Safari]). Please note that by blocking any or all cookies, you may not have access to certain features or offerings of the Services.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; Information from Third Parties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
We may also collect information about you or others through third parties. For example, if you apply for to become an Eco-Libre volunteer, we may collect information from the references or vouchers you identified in your membership application.  To the extent permitted by law, we may also collect information from third parties, including public sources, social media platforms, and marketing and market research firms. Depending on the source, this information collected from third parties could include name, contact information, demographic information, information about an individual’s employer, information to verify identity or trustworthiness, and information for other fraud or safety protection purposes.&lt;br /&gt;
&lt;br /&gt;
=== 3.     How We Use Your Information ===&lt;br /&gt;
&lt;br /&gt;
We may use the information we collect from and about you to:&lt;br /&gt;
&lt;br /&gt;
*        Fulfill the purposes for which you provided it;&lt;br /&gt;
*        Evaluate your application for a scholarship, grant, fellowship, or to become an Eco-Libre Volunteer;&lt;br /&gt;
*        Distribute funds to scholarship and grant recipients;&lt;br /&gt;
*        Provide and improve the Services, including to develop new features or services, promote EL community collaboration, take steps to secure the Services, and for technical and customer support;&lt;br /&gt;
*        Fundraise, accept donations, or process purchases of EL merchandise;&lt;br /&gt;
*        Host events and programs such as EL Summits or EL training courses;&lt;br /&gt;
*        Send you information about your relationship or transactions with us, account alerts, or other communications, such as newsletters to which you have subscribed;&lt;br /&gt;
*        Process and respond to your inquiries or to request your feedback;&lt;br /&gt;
*        Conduct analytics, research, and reporting, including to synthesize and derive insights from your use of our Services;&lt;br /&gt;
*        Evaluate job candidates during our hiring process; and&lt;br /&gt;
*        Comply with the law and protect the safety, rights, property, or security of Eco-Libre, the Services, our users, and the general public&lt;br /&gt;
&lt;br /&gt;
Please note that we may combine information that we collect from you and about you (including automatically collected information) with information we obtain about you from our affiliates and/or non-affiliated third parties, and use such combined information in accordance with this Privacy Policy.&lt;br /&gt;
&lt;br /&gt;
We may aggregate and/or de-identify information collected through the Services. We may use de-identified and/or aggregated data for any purpose, including without limitation for research and marketing purposes.&lt;br /&gt;
&lt;br /&gt;
=== 4.     When We Disclose Your Information ===&lt;br /&gt;
&lt;br /&gt;
We may disclose and/or share your information under the following circumstances:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Service Providers.&#039;&#039;&#039; We may disclose your information with third parties who perform services on our behalf, including without limitation, event management, candidate selection, marketing, customer support, data storage, data analysis and processing, and legal services.&lt;br /&gt;
&lt;br /&gt;
For example, when you apply for a scholarship, grant, fellowship, or to be selected to participate in one of our other programs, EL may share that information with the individuals designated to select participants in, and help manage, those programs, which may include people not employed by Eco-Libre.&lt;br /&gt;
&lt;br /&gt;
Or, when you register for an event, we may share your information with vendors, third party contractors, partner organizations, and volunteers for the purpose of organizing and running the event and related activities.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039; Legal Compliance and Protection of Eco-Libre and Others.&#039;&#039;&#039; We may disclose your information if required to do so by law or on a good faith belief that such disclosure is permitted by this Privacy Policy or reasonably necessary or appropriate for any of the following reasons: (a) to comply with legal process; (b) to enforce or apply our this Privacy Policy, or other contracts with you, including investigation of potential violations thereof; (c) enforce our Charter including the Code of Conduct and policies contained and incorporated therein, (d) to respond to your requests for customer service; and/or (e) to protect the rights, property, or personal safety of Eco-Libre, our agents and affiliates, our users, and the public. This includes exchanging information with other companies and organizations for fraud protection, and spam/malware prevention, and similar purposes.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Business Transfers.&#039;&#039;&#039; As we continue to develop our business, we may engage in certain business transactions, such as the transfer or sale of our assets. In such transactions, (including in contemplation of such transactions, e.g., due diligence) your information may be disclosed. If any of Eco-Libre’ assets are sold or transferred to a third party, customer information (including your email address) would likely be one of the transferred business assets.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Affiliated Companies.&#039;&#039;&#039; We may disclose your information with current or future affiliated companies.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Consent.&#039;&#039;&#039; We may disclose your information to any third parties based on your consent to do so.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Aggregate/De-identified Information.&#039;&#039;&#039; We may disclose de-identified and/or aggregated data for any purpose to third parties, including advertisers, promotional partners, and/or others.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Eco-Libre Volunteers.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
o   In connection with you Eco-Libre Volunteer application, we may provide your information to the individuals you’ve selected to vouch for you, and with those reviewing your application, including the Membership Council whose members include people not employed by Eco-Libre and who are located in various countries around the world.&lt;br /&gt;
&lt;br /&gt;
o   If you vouch for someone’s application to the Eco-Libre Volunteer program, your information will be shared with those reviewing the application, including the Membership Council, and if you provide a positive vouching statement, that statement will be shared with the applicant if and when they are admitted for membership.&lt;br /&gt;
&lt;br /&gt;
o   Once you are an Eco-Libre Volunteer, we may provide you with a public profile page,  pre-populated with certain information you provided in your application such as your name, areas of interest, images or other content you upload, which will be publicly displayed to anyone who visits the site.&lt;br /&gt;
&lt;br /&gt;
=== 5.     Legal Basis for Processing Personal Data ===&lt;br /&gt;
&lt;br /&gt;
The laws in some jurisdictions require companies to tell you about the legal ground they rely on to use or disclose information that can be directly linked to or used to identify you. To the extent those laws apply, our legal grounds for processing such information are as follows:&lt;br /&gt;
&lt;br /&gt;
* To Honor Our Contractual Commitments to You. Much of our processing of information is to meet our contractual obligations to provide services to our users.&lt;br /&gt;
&lt;br /&gt;
* Legitimate Interests. In many cases, we handle information on the ground that it furthers our legitimate interests in ways that are not overridden by the interests or fundamental rights and freedoms of the affected individuals, these include:&lt;br /&gt;
** Customer service&lt;br /&gt;
** Marketing, advertising, and fundraising&lt;br /&gt;
** Protecting our users, personnel, and property&lt;br /&gt;
** Managing user accounts&lt;br /&gt;
** Organizing and running events and programs&lt;br /&gt;
** Analyzing and improving our business&lt;br /&gt;
** Managing legal issues&lt;br /&gt;
We may also process information for the same legitimate interests of our users and business partners.&lt;br /&gt;
&lt;br /&gt;
* Legal Compliance. We may need to use and disclose information in certain ways to comply with our legal obligations.&lt;br /&gt;
&lt;br /&gt;
* Consent. Where required by law, and in some other cases where legally permissible, we handle information on the basis of consent. Where we handle your information on the basis of consent, you have the right to withdraw your consent; in accordance with applicable law.&lt;br /&gt;
&lt;br /&gt;
=== 6.     Online Analytics ===&lt;br /&gt;
&lt;br /&gt;
We may use third-party web analytics services (such as Google Analytics) on our Services to collect and analyze the information discussed above, and to engage in auditing, research, or reporting. The information (including your IP address) collected by various analytics technologies described in the “Cookies and Other Tracking Technologies” section above will be disclosed to or collected directly by these service providers, who use the information to evaluate your use of the Services, including by noting the third-party website from which you arrive to our Site, analyzing usage trends, assisting with fraud prevention, and providing certain features to you. To prevent Google Analytics from using your information for analytics, you may install the Google Analytics Opt-out Browser Add-on by clicking[https://tools.google.com/dlpage/gaoptout  here].&lt;br /&gt;
&lt;br /&gt;
=== 7.     Your Choices and Data Subject Rights ===&lt;br /&gt;
&lt;br /&gt;
You have various rights with respect to the collection and use of your information through the Services.  Those choices are as follows:&lt;br /&gt;
&lt;br /&gt;
* Email Unsubscribe – You may unsubscribe from our marketing emails at any time by clicking on the “unsubscribe” link at the bottom of each newsletter or by emailing legal@creativecommons.org with your request.&lt;br /&gt;
* Fundraising Analytics – You may opt out of CC’s fundraising analytics activities by contacting legal@creativecommons.org with your request.&lt;br /&gt;
* Account Preferences – If you have registered for an account with us through our Services, you can update your account information or adjust your email communications preferences by logging into your account and updating your settings.&lt;br /&gt;
* EU Data Subject Rights – Individuals in the European Economic Area (“EEA”) and other jurisdictions have certain legal rights (subject to applicable exceptions and limitations) to obtain confirmation of whether we hold certain information about them, to access such information, and to obtain its correction or deletion in appropriate circumstances. You may have the right to object to our handling of your information, restrict our processing of your information, and to withdraw any consent you have provided. To exercise these rights, please email us at legal@creativecommons.org with the nature of your request. You also have the right to go directly to the relevant supervisory or legal authority, but we encourage you to contact us so that we may resolve your concerns directly as best and as promptly as we can.&lt;br /&gt;
&lt;br /&gt;
=== 8.     International Transfers ===&lt;br /&gt;
&lt;br /&gt;
Our computer systems are currently based in the United States and the United Kingdom and the majority of our contractors are based in the United States or Canada. As described above in the “When We Disclose Your Information” section, we may share your information with trusted service providers or business partners in countries other than your country of residence, including the United States, in accordance with applicable law. This means that some of your information may be processed in the United States, which may not offer the same level of protection as the privacy laws of your jurisdiction. By providing us with your information, you acknowledge any such transfer, storage or use.&lt;br /&gt;
If we provide any information about you to any third parties information processors located outside of the EEA, we will take appropriate measures to ensure such companies protect your information adequately in accordance with this Privacy Policy and other data protection laws to govern the transfers of such data.&lt;br /&gt;
&lt;br /&gt;
=== 9.     Security Measures ===&lt;br /&gt;
&lt;br /&gt;
We have implemented technical, physical, and organizational security measures to protect against the loss, misuse, and/or alteration of your information. These safeguards vary based on the sensitivity of the information that we collect and store. However, we cannot and do not guarantee that these measures will prevent every unauthorized attempt to access, use, or disclose your information since despite our efforts, no Internet and/or other electronic transmissions can be completely secure.&lt;br /&gt;
&lt;br /&gt;
=== 10.  Children ===&lt;br /&gt;
&lt;br /&gt;
The Services are intended for users over the age of 18 and are not directed at children under the age of 13. If we become aware that we have collected personal information (as defined by the Children’s Online Privacy Protection Act) from children under the age of 13, or personal data (as defined by the EU GDPR) from children under the age of 16, we will take reasonable steps to delete it as soon as practicable.&lt;br /&gt;
&lt;br /&gt;
=== 11.  Data Retention ===&lt;br /&gt;
&lt;br /&gt;
We retain the information we collect for as long as necessary to fulfill the purposes set forth in this Privacy Policy or as long as we are legally required or permitted to do so. Information may persist in copies made for backup and business continuity purposes for additional time.&lt;br /&gt;
&lt;br /&gt;
=== 12.  Third-Party Links and Services ===&lt;br /&gt;
&lt;br /&gt;
The Services may contain links to third-party websites (e.g., social media sites like Facebook and Twitter), third-party plug-ins (e.g., the Facebook “like” button and Twitter “follow” button), and other services. If you choose to use these sites or features, you may disclose your information not just to those third-parties, but also to their users and the public more generally depending on how their services function. Eco-Libre is not responsible for the content or privacy practices of such third party websites or services. The collection, use and disclosure of your information will be subject to the privacy policies of the third party websites or services, and not this Privacy Policy. We encourage you to read the privacy statements of each and every site you visit.&lt;br /&gt;
&lt;br /&gt;
=== 13.  Changes to this Privacy Policy ===&lt;br /&gt;
&lt;br /&gt;
We will continue to evaluate this Privacy Policy as we update and expand our Services, and we may make changes to the Privacy Policy accordingly. We will post any changes here and revise the date last updated above. We encourage you to check this page periodically for updates to stay informed on how we collect, use and share your information. If we make material changes to this Privacy Policy, we will provide you with notice as required by law.&lt;br /&gt;
&lt;br /&gt;
=== 14.  Questions About this Privacy Policy ===&lt;br /&gt;
&lt;br /&gt;
If you have any questions about this Privacy Policy or our privacy practices, you can contact us at: https://eco-libre.org/contact&lt;br /&gt;
&lt;br /&gt;
The Eco-Libre Privacy Policy is dedicated to the public domain under the [https://creativecommons.org/licenses/by-sa/4.0/ CC-BY-SA-4.0 license]. You are free to use and adapt this Privacy Policy and any applicable Supplemental Privacy Policy Terms for your own purposes. However, please keep in mind that this Privacy Policy may not be completely suitable for your situation. Eco-Libre strongly encourages you to seek the advice of your own attorney before repurposing this Privacy Policy on your own site.&lt;/div&gt;</summary>
		<author><name>Maltfield</name></author>
	</entry>
	<entry>
		<id>https://wiki.eco-libre.org/index.php?title=Eco-Libre:Terms_of_Service&amp;diff=72</id>
		<title>Eco-Libre:Terms of Service</title>
		<link rel="alternate" type="text/html" href="https://wiki.eco-libre.org/index.php?title=Eco-Libre:Terms_of_Service&amp;diff=72"/>
		<updated>2026-04-26T21:41:39Z</updated>

		<summary type="html">&lt;p&gt;Maltfield: moved the license section to the end&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
Developer Certificate of Origin&lt;br /&gt;
Version 1.1&lt;br /&gt;
&lt;br /&gt;
Copyright (C) 2004, 2006 The Linux Foundation and its contributors.&lt;br /&gt;
&lt;br /&gt;
Everyone is permitted to copy and distribute verbatim copies of this&lt;br /&gt;
license document, but changing it is not allowed.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Developer&#039;s Certificate of Origin 1.1&lt;br /&gt;
&lt;br /&gt;
By making a contribution to this project, I certify that:&lt;br /&gt;
&lt;br /&gt;
(a) The contribution was created in whole or in part by me and I&lt;br /&gt;
    have the right to submit it under the open source license&lt;br /&gt;
    indicated in the file; or&lt;br /&gt;
&lt;br /&gt;
(b) The contribution is based upon previous work that, to the best&lt;br /&gt;
    of my knowledge, is covered under an appropriate open source&lt;br /&gt;
    license and I have the right under that license to submit that&lt;br /&gt;
    work with modifications, whether created in whole or in part&lt;br /&gt;
    by me, under the same open source license (unless I am&lt;br /&gt;
    permitted to submit under a different license), as indicated&lt;br /&gt;
    in the file; or&lt;br /&gt;
&lt;br /&gt;
(c) The contribution was provided directly to me by some other&lt;br /&gt;
    person who certified (a), (b) or (c) and I have not modified&lt;br /&gt;
    it.&lt;br /&gt;
&lt;br /&gt;
(d) I understand and agree that this project and the contribution&lt;br /&gt;
    are public and that a record of the contribution (including all&lt;br /&gt;
    personal information I submit with it, including my sign-off) is&lt;br /&gt;
    maintained indefinitely and may be redistributed consistent with&lt;br /&gt;
    this project or the open source license(s) involved.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Privacy Policy=&lt;br /&gt;
&lt;br /&gt;
By using this website, you agree to our [[Eco-Libre:Privacy policy|Privacy Policy]]&lt;br /&gt;
&lt;br /&gt;
=Code of Conduct=&lt;br /&gt;
&lt;br /&gt;
By using this website, you agree to our [[Eco-Libre:Code_of_Conduct|Code of Conduct]]&lt;br /&gt;
&lt;br /&gt;
=Attribution=&lt;br /&gt;
* Linux Foundation - https://developercertificate.org/&lt;br /&gt;
&lt;br /&gt;
=License=&lt;br /&gt;
&lt;br /&gt;
Copyright (C) 2023 Michael Altfield and Eco-Libre&lt;br /&gt;
&lt;br /&gt;
The contents of this wiki are under the [https://creativecommons.org/licenses/by-sa/4.0/ CC BY-SA version 4.0] license.&lt;br /&gt;
&lt;br /&gt;
The contents here is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the CC BY-SA License for more details.&lt;br /&gt;
&lt;br /&gt;
=Further Reading=&lt;br /&gt;
* CERN&#039;s DCO vs CLA https://ospo.docs.cern.ch/recommendations/CLAs-and-DCOs/&lt;br /&gt;
* https://wiki.eco-libre.org/wiki/Maltfield_Log/2026&lt;/div&gt;</summary>
		<author><name>Maltfield</name></author>
	</entry>
	<entry>
		<id>https://wiki.eco-libre.org/index.php?title=Eco-Libre:Terms_of_Service&amp;diff=71</id>
		<title>Eco-Libre:Terms of Service</title>
		<link rel="alternate" type="text/html" href="https://wiki.eco-libre.org/index.php?title=Eco-Libre:Terms_of_Service&amp;diff=71"/>
		<updated>2026-04-26T21:40:54Z</updated>

		<summary type="html">&lt;p&gt;Maltfield: added redlink for a CoC&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
Developer Certificate of Origin&lt;br /&gt;
Version 1.1&lt;br /&gt;
&lt;br /&gt;
Copyright (C) 2004, 2006 The Linux Foundation and its contributors.&lt;br /&gt;
&lt;br /&gt;
Everyone is permitted to copy and distribute verbatim copies of this&lt;br /&gt;
license document, but changing it is not allowed.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Developer&#039;s Certificate of Origin 1.1&lt;br /&gt;
&lt;br /&gt;
By making a contribution to this project, I certify that:&lt;br /&gt;
&lt;br /&gt;
(a) The contribution was created in whole or in part by me and I&lt;br /&gt;
    have the right to submit it under the open source license&lt;br /&gt;
    indicated in the file; or&lt;br /&gt;
&lt;br /&gt;
(b) The contribution is based upon previous work that, to the best&lt;br /&gt;
    of my knowledge, is covered under an appropriate open source&lt;br /&gt;
    license and I have the right under that license to submit that&lt;br /&gt;
    work with modifications, whether created in whole or in part&lt;br /&gt;
    by me, under the same open source license (unless I am&lt;br /&gt;
    permitted to submit under a different license), as indicated&lt;br /&gt;
    in the file; or&lt;br /&gt;
&lt;br /&gt;
(c) The contribution was provided directly to me by some other&lt;br /&gt;
    person who certified (a), (b) or (c) and I have not modified&lt;br /&gt;
    it.&lt;br /&gt;
&lt;br /&gt;
(d) I understand and agree that this project and the contribution&lt;br /&gt;
    are public and that a record of the contribution (including all&lt;br /&gt;
    personal information I submit with it, including my sign-off) is&lt;br /&gt;
    maintained indefinitely and may be redistributed consistent with&lt;br /&gt;
    this project or the open source license(s) involved.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=License=&lt;br /&gt;
&lt;br /&gt;
Copyright (C) 2023 Michael Altfield and the Eco-Libre Team&lt;br /&gt;
&lt;br /&gt;
The contents of this wiki are under the [https://creativecommons.org/licenses/by-sa/4.0/ CC BY-SA version 4.0] license.&lt;br /&gt;
&lt;br /&gt;
The contents here is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the CC BY-SA License for more details.&lt;br /&gt;
&lt;br /&gt;
=Privacy Policy=&lt;br /&gt;
&lt;br /&gt;
By using this website, you agree to our [[Eco-Libre:Privacy policy|Privacy Policy]]&lt;br /&gt;
&lt;br /&gt;
=Code of Conduct=&lt;br /&gt;
&lt;br /&gt;
By using this website, you agree to our [[Eco-Libre:Code_of_Conduct|Code of Conduct]]&lt;br /&gt;
&lt;br /&gt;
=Attribution=&lt;br /&gt;
* Linux Foundation - https://developercertificate.org/&lt;br /&gt;
&lt;br /&gt;
=Further Reading=&lt;br /&gt;
* CERN&#039;s DCO vs CLA https://ospo.docs.cern.ch/recommendations/CLAs-and-DCOs/&lt;br /&gt;
* https://wiki.eco-libre.org/wiki/Maltfield_Log/2026&lt;/div&gt;</summary>
		<author><name>Maltfield</name></author>
	</entry>
	<entry>
		<id>https://wiki.eco-libre.org/index.php?title=Eco-Libre:Privacy_policy&amp;diff=70</id>
		<title>Eco-Libre:Privacy policy</title>
		<link rel="alternate" type="text/html" href="https://wiki.eco-libre.org/index.php?title=Eco-Libre:Privacy_policy&amp;diff=70"/>
		<updated>2026-04-26T21:34:05Z</updated>

		<summary type="html">&lt;p&gt;Maltfield: /* 3.     How We Use Your Information */ change CC stuff to EL stuff&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This Privacy Policy (“Policy”) explains the information collection, use, and sharing practices of Eco-Libre (“EL”, “we,” “us,” and “our”).&lt;br /&gt;
&lt;br /&gt;
This Policy is incorporated into and part of Eco-Libre Terms of Use located at https://wiki.eco-libre.org/wiki/Eco-Libre:Terms_of_Service.&lt;br /&gt;
&lt;br /&gt;
Unless otherwise noted on a particular website or service hosted by Eco-Libre, this Policy describes and governs the information collection, use, and sharing practices of Eco-Libre with respect to your use of our websites that link to this Privacy Policy, including: https://eco-libre.org, https://www.eco-libre.org, https://phplist.eco-libre.org, and https://wiki.eco-libre.org (collectively, the “Websites”), and the services we provide through our Websites and/or host on our servers, and the services available through them are referred to as the “Services”).&lt;br /&gt;
&lt;br /&gt;
Before you use or submit any information through or in connection with the Services, please carefully review this Privacy Policy. By using any part of the Services, you understand that your information will be collected, used, and disclosed as outlined in this Privacy Policy. IF YOU DO NOT AGREE TO THIS PRIVACY POLICY, PLEASE DO NOT USE THE SERVICES.&lt;br /&gt;
&lt;br /&gt;
=== 1.     Our Principles ===&lt;br /&gt;
&lt;br /&gt;
Eco-Libre has designed this policy to be consistent with the following principles:&lt;br /&gt;
&lt;br /&gt;
*   Privacy policies should be human readable and easy to find.&lt;br /&gt;
*   Data collection, storage, and processing should be simplified as much as possible to enhance security, ensure consistency, and make the practices easy for users to understand. &lt;br /&gt;
*  Data practices should meet the reasonable expectations of users.&lt;br /&gt;
&lt;br /&gt;
=== 2.     Information We Collect ===&lt;br /&gt;
&lt;br /&gt;
We collect information in multiple ways, including when you provide information directly to us; when we passively collect information from you, such as from your browser or device; and from third parties.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Information You Provide Directly to Us&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
We will collect any information you provide to us. We may collect information from you in a variety of ways, such as when you: (a) create an online account, (b) apply for to become an Eco-Libre volunteer, (c) create an account for one of our Services, (d) make a donation or purchase, (e) register for an event, (f) apply for a scholarship, grant, or fellowship, (g) contact us or provide feedback, (h) sign a petition distributed by Eco-Libre, (i) upload your creative work or images, (j) subscribe to our newsletter, or (k) apply for a job at Eco-Libre. This information may include but is not limited to your name, email address, phone number, mailing address, payment information, photo, geographic location, and your social media handles.  We may also collect additional demographic and other information about you in connection with our conferences and events (e.g., dietary and other preferences), and the provision of this information to us by you is optional.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Information that Is Automatically Collected&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Device/Usage Information&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
We may automatically collect certain information about the computer or devices (including mobile devices or tablets) you use to access the Services. As described further below, we may collect and analyze (a) device information such as IP addresses, location information (by country and city), unique device identifiers, IMEI and TCP/IP address, browser types, browser language, operating system, mobile device carrier information, and (b) information related to the ways in which you interact with the Services, such as referring and exit web pages and URLs, platform type, the number of clicks, domain names, landing pages, pages and content viewed and the order of those pages, statistical information about the use of the Services, the amount of time spent on particular pages, the date and time you used the Services, the frequency of your use of the Services, error logs, and other similar information. As described further below, we may use third-party analytics providers and technologies, including cookies and similar tools, to assist in collecting this information.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Cookies and Other Tracking Technologies&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
We also collect data about your use of the Services through the use of Internet server logs and online tracking technologies, like cookies and/or tracking pixels. A web server log is a file where website activity is stored. A cookie is a small text file that is placed on your computer when you visit a website, that enables us to: (a) recognize your computer; (b) store your preferences and settings; (c) understand the web pages of the Services you have visited and the referral sites that have led you to our Services; (d) enhance your user experience by delivering content  specific to your inferred interests; (e) perform searches and analytics; and (f) assist with security administrative functions. Tracking pixels (sometimes referred to as web beacons or clear GIFs) are tiny electronic tags with a unique identifier embedded in websites, online ads and/or email, and that are designed to provide usage information like ad impressions or clicks, measure popularity of the Services and associated advertising, and to access user cookies. We may also use tracking technologies in our license buttons and/or icons that you can embed on other sites/services to track the website addresses where they are embedded, gauge user interaction with them, and determine the number of unique viewers of them. If you receive email from us (such as a newsletter, campaign updates, or other ongoing email communications from EL), we may use certain analytics tools, such as clear GIFs, to capture data such as whether you open our message, click on any links or banners our email contains, or otherwise interact with what we send. This data allows us to gauge the effectiveness of our communications and marketing campaigns.  As we adopt additional technologies, we may also gather additional information through other methods.&lt;br /&gt;
&lt;br /&gt;
Please note that you can change your settings to notify you when a cookie is being set or updated, or to block cookies altogether. Please consult the “Help” section of your browser for more information (e.g.,[http://windows.microsoft.com/en-US/windows-vista/Block-or-allow-cookies  Internet Explorer];[https://support.google.com/chrome/answer/95647?hl=en  Google Chrome];[http://kb.mozillazine.org/Cookies#Firefox  Mozilla Firefox]; or[http://support.apple.com/kb/PH5042  Apple Safari]). Please note that by blocking any or all cookies, you may not have access to certain features or offerings of the Services.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; Information from Third Parties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
We may also collect information about you or others through third parties. For example, if you apply for to become an Eco-Libre volunteer, we may collect information from the references or vouchers you identified in your membership application.  To the extent permitted by law, we may also collect information from third parties, including public sources, social media platforms, and marketing and market research firms. Depending on the source, this information collected from third parties could include name, contact information, demographic information, information about an individual’s employer, information to verify identity or trustworthiness, and information for other fraud or safety protection purposes.&lt;br /&gt;
&lt;br /&gt;
=== 3.     How We Use Your Information ===&lt;br /&gt;
&lt;br /&gt;
We may use the information we collect from and about you to:&lt;br /&gt;
&lt;br /&gt;
*        Fulfill the purposes for which you provided it;&lt;br /&gt;
*        Evaluate your application for a scholarship, grant, fellowship, or to become an Eco-Libre Volunteer;&lt;br /&gt;
*        Distribute funds to scholarship and grant recipients;&lt;br /&gt;
*        Provide and improve the Services, including to develop new features or services, promote EL community collaboration, take steps to secure the Services, and for technical and customer support;&lt;br /&gt;
*        Fundraise, accept donations, or process purchases of EL merchandise;&lt;br /&gt;
*        Host events and programs such as EL Summits or EL training courses;&lt;br /&gt;
*        Send you information about your relationship or transactions with us, account alerts, or other communications, such as newsletters to which you have subscribed;&lt;br /&gt;
*        Process and respond to your inquiries or to request your feedback;&lt;br /&gt;
*        Conduct analytics, research, and reporting, including to synthesize and derive insights from your use of our Services;&lt;br /&gt;
*        Evaluate job candidates during our hiring process; and&lt;br /&gt;
*        Comply with the law and protect the safety, rights, property, or security of Eco-Libre, the Services, our users, and the general public&lt;br /&gt;
&lt;br /&gt;
Please note that we may combine information that we collect from you and about you (including automatically collected information) with information we obtain about you from our affiliates and/or non-affiliated third parties, and use such combined information in accordance with this Privacy Policy.&lt;br /&gt;
&lt;br /&gt;
We may aggregate and/or de-identify information collected through the Services. We may use de-identified and/or aggregated data for any purpose, including without limitation for research and marketing purposes.&lt;br /&gt;
&lt;br /&gt;
=== 4.     When We Disclose Your Information ===&lt;br /&gt;
&lt;br /&gt;
We may disclose and/or share your information under the following circumstances:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Service Providers.&#039;&#039;&#039; We may disclose your information with third parties who perform services on our behalf, including without limitation, event management, candidate selection, marketing, customer support, data storage, data analysis and processing, and legal services.&lt;br /&gt;
For example, when you apply for a scholarship, grant, fellowship, or to be selected to participate in one of our other programs, CC may share that information with the individuals designated to select participants in, and help manage, those programs, which may include people not employed by Eco-Libre.&lt;br /&gt;
&lt;br /&gt;
Or, when you register for an event, we may share your information with vendors, third party contractors, partner organizations, and volunteers for the purpose of organizing and running the event and related activities.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039; Legal Compliance and Protection of Eco-Libre and Others.&#039;&#039;&#039; We may disclose your information if required to do so by law or on a good faith belief that such disclosure is permitted by this Privacy Policy or reasonably necessary or appropriate for any of the following reasons: (a) to comply with legal process; (b) to enforce or apply our Master Terms and this Privacy Policy, or other contracts with you, including investigation of potential violations thereof; (c) enforce our Charter including the Code of Conduct and policies contained and incorporated therein, (d) to respond to your requests for customer service; and/or (e) to protect the rights, property, or personal safety of Eco-Libre, our agents and affiliates, our users, and the public. This includes exchanging information with other companies and organizations for fraud protection, and spam/malware prevention, and similar purposes.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Business Transfers.&#039;&#039;&#039; As we continue to develop our business, we may engage in certain business transactions, such as the transfer or sale of our assets. In such transactions, (including in contemplation of such transactions, e.g., due diligence) your information may be disclosed. If any of Eco-Libre’ assets are sold or transferred to a third party, customer information (including your email address) would likely be one of the transferred business assets.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Affiliated Companies.&#039;&#039;&#039; We may disclose your information with current or future affiliated companies.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Consent.&#039;&#039;&#039; We may disclose your information to any third parties based on your consent to do so.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Aggregate/De-identified Information.&#039;&#039;&#039; We may disclose de-identified and/or aggregated data for any purpose to third parties, including advertisers, promotional partners, and/or others.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;CCGN Membership.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
o   In connection with you CCGN membership application, we may provide your information to the individuals you’ve selected to vouch for you, and with those reviewing your application, including the Membership Council whose members include people not employed by Eco-Libre and who are located in various countries around the world.&lt;br /&gt;
o   If you vouch for someone’s application to the CCGN, your information will be shared with those reviewing the application, including the Membership Council, and if you provide a positive vouching statement, that statement will be shared with the applicant if and when they are admitted for membership.&lt;br /&gt;
&lt;br /&gt;
o   Once you are a CCGN member, we may provide you with a public profile page, editable by you, and pre-populated with certain information you provided in your application such as your name, areas of interest, images or other content you upload, which will be publicly displayed to anyone who visits the site while logged in with their CCID. Other information contained in your profile such as your biographical information, email address, languages spoken, country of residence, social media account information, or URL details will be displayed only to CC and CCGN members.&lt;br /&gt;
&lt;br /&gt;
=== 5.     Legal Basis for Processing Personal Data ===&lt;br /&gt;
&lt;br /&gt;
The laws in some jurisdictions require companies to tell you about the legal ground they rely on to use or disclose information that can be directly linked to or used to identify you. To the extent those laws apply, our legal grounds for processing such information are as follows:&lt;br /&gt;
&lt;br /&gt;
* To Honor Our Contractual Commitments to You. Much of our processing of information is to meet our contractual obligations to provide services to our users.&lt;br /&gt;
&lt;br /&gt;
* Legitimate Interests. In many cases, we handle information on the ground that it furthers our legitimate interests in ways that are not overridden by the interests or fundamental rights and freedoms of the affected individuals, these include:&lt;br /&gt;
** Customer service&lt;br /&gt;
** Marketing, advertising, and fundraising&lt;br /&gt;
** Protecting our users, personnel, and property&lt;br /&gt;
** Managing user accounts&lt;br /&gt;
** Organizing and running events and programs&lt;br /&gt;
** Analyzing and improving our business&lt;br /&gt;
** Managing legal issues&lt;br /&gt;
We may also process information for the same legitimate interests of our users and business partners.&lt;br /&gt;
&lt;br /&gt;
* Legal Compliance. We may need to use and disclose information in certain ways to comply with our legal obligations.&lt;br /&gt;
&lt;br /&gt;
* Consent. Where required by law, and in some other cases where legally permissible, we handle information on the basis of consent. Where we handle your information on the basis of consent, you have the right to withdraw your consent; in accordance with applicable law.&lt;br /&gt;
&lt;br /&gt;
=== 6.     Online Analytics ===&lt;br /&gt;
&lt;br /&gt;
We may use third-party web analytics services (such as Google Analytics) on our Services to collect and analyze the information discussed above, and to engage in auditing, research, or reporting. The information (including your IP address) collected by various analytics technologies described in the “Cookies and Other Tracking Technologies” section above will be disclosed to or collected directly by these service providers, who use the information to evaluate your use of the Services, including by noting the third-party website from which you arrive to our Site, analyzing usage trends, assisting with fraud prevention, and providing certain features to you. To prevent Google Analytics from using your information for analytics, you may install the Google Analytics Opt-out Browser Add-on by clicking[https://tools.google.com/dlpage/gaoptout  here].&lt;br /&gt;
&lt;br /&gt;
=== 7.     Your Choices and Data Subject Rights ===&lt;br /&gt;
&lt;br /&gt;
You have various rights with respect to the collection and use of your information through the Services.  Those choices are as follows:&lt;br /&gt;
&lt;br /&gt;
* Email Unsubscribe – You may unsubscribe from our marketing emails at any time by clicking on the “unsubscribe” link at the bottom of each newsletter or by emailing legal@creativecommons.org with your request.&lt;br /&gt;
* Fundraising Analytics – You may opt out of CC’s fundraising analytics activities by contacting legal@creativecommons.org with your request.&lt;br /&gt;
* Account Preferences – If you have registered for an account with us through our Services, you can update your account information or adjust your email communications preferences by logging into your account and updating your settings.&lt;br /&gt;
* EU Data Subject Rights – Individuals in the European Economic Area (“EEA”) and other jurisdictions have certain legal rights (subject to applicable exceptions and limitations) to obtain confirmation of whether we hold certain information about them, to access such information, and to obtain its correction or deletion in appropriate circumstances. You may have the right to object to our handling of your information, restrict our processing of your information, and to withdraw any consent you have provided. To exercise these rights, please email us at legal@creativecommons.org with the nature of your request. You also have the right to go directly to the relevant supervisory or legal authority, but we encourage you to contact us so that we may resolve your concerns directly as best and as promptly as we can.&lt;br /&gt;
&lt;br /&gt;
=== 8.     International Transfers ===&lt;br /&gt;
&lt;br /&gt;
Our computer systems are currently based in the United States and the United Kingdom and the majority of our contractors are based in the United States or Canada. As described above in the “When We Disclose Your Information” section, we may share your information with trusted service providers or business partners in countries other than your country of residence, including the United States, in accordance with applicable law. This means that some of your information may be processed in the United States, which may not offer the same level of protection as the privacy laws of your jurisdiction. By providing us with your information, you acknowledge any such transfer, storage or use.&lt;br /&gt;
If we provide any information about you to any third parties information processors located outside of the EEA, we will take appropriate measures to ensure such companies protect your information adequately in accordance with this Privacy Policy and other data protection laws to govern the transfers of such data.&lt;br /&gt;
&lt;br /&gt;
=== 9.     Security Measures ===&lt;br /&gt;
&lt;br /&gt;
We have implemented technical, physical, and organizational security measures to protect against the loss, misuse, and/or alteration of your information. These safeguards vary based on the sensitivity of the information that we collect and store. However, we cannot and do not guarantee that these measures will prevent every unauthorized attempt to access, use, or disclose your information since despite our efforts, no Internet and/or other electronic transmissions can be completely secure.&lt;br /&gt;
&lt;br /&gt;
=== 10.  Children ===&lt;br /&gt;
&lt;br /&gt;
The Services are intended for users over the age of 18 and are not directed at children under the age of 13. If we become aware that we have collected personal information (as defined by the Children’s Online Privacy Protection Act) from children under the age of 13, or personal data (as defined by the EU GDPR) from children under the age of 16, we will take reasonable steps to delete it as soon as practicable.&lt;br /&gt;
&lt;br /&gt;
=== 11.  Data Retention ===&lt;br /&gt;
&lt;br /&gt;
We retain the information we collect for as long as necessary to fulfill the purposes set forth in this Privacy Policy or as long as we are legally required or permitted to do so. Information may persist in copies made for backup and business continuity purposes for additional time.&lt;br /&gt;
&lt;br /&gt;
=== 12.  Third-Party Links and Services ===&lt;br /&gt;
&lt;br /&gt;
The Services may contain links to third-party websites (e.g., social media sites like Facebook and Twitter), third-party plug-ins (e.g., the Facebook “like” button and Twitter “follow” button), and other services. If you choose to use these sites or features, you may disclose your information not just to those third-parties, but also to their users and the public more generally depending on how their services function. Eco-Libre is not responsible for the content or privacy practices of such third party websites or services. The collection, use and disclosure of your information will be subject to the privacy policies of the third party websites or services, and not this Privacy Policy. We encourage you to read the privacy statements of each and every site you visit.&lt;br /&gt;
&lt;br /&gt;
=== 13.  Changes to this Privacy Policy ===&lt;br /&gt;
&lt;br /&gt;
We will continue to evaluate this Privacy Policy as we update and expand our Services, and we may make changes to the Privacy Policy accordingly. We will post any changes here and revise the date last updated above. We encourage you to check this page periodically for updates to stay informed on how we collect, use and share your information. If we make material changes to this Privacy Policy, we will provide you with notice as required by law.&lt;br /&gt;
&lt;br /&gt;
=== 14.  Questions About this Privacy Policy ===&lt;br /&gt;
&lt;br /&gt;
If you have any questions about this Privacy Policy or our privacy practices, you can contact us at: https://eco-libre.org/contact&lt;br /&gt;
&lt;br /&gt;
The Eco-Libre Privacy Policy is dedicated to the public domain under the [https://creativecommons.org/licenses/by-sa/4.0/ CC-BY-SA-4.0 license]. You are free to use and adapt this Privacy Policy and any applicable Supplemental Privacy Policy Terms for your own purposes. However, please keep in mind that this Privacy Policy may not be completely suitable for your situation. Eco-Libre strongly encourages you to seek the advice of your own attorney before repurposing this Privacy Policy on your own site.&lt;/div&gt;</summary>
		<author><name>Maltfield</name></author>
	</entry>
</feed>