add forges comparison table
This commit is contained in:
parent
3ff46daddf
commit
18e3020a3b
37
forge_comparison.md
Normal file
37
forge_comparison.md
Normal file
@ -0,0 +1,37 @@
|
|||||||
|
[//]: # (** DO NOT EDIT this file directly! ** It is auto-generated. Changes should be made to financial_institutions.sql or gen_forge_table.sh instead.)
|
||||||
|
|
||||||
|
# Directory of forges
|
||||||
|
## Whitelist
|
||||||
|
|
||||||
|
The following forges have no significant ethical issues:
|
||||||
|
|
||||||
|
| *forge* | *registration publicly open* | *software* | *Tor-hostile* | *sensitive info exposed to CloudFlare* | *forced re/hCAPTCHA* | *forced execution of non-free software* | *notes* |
|
||||||
|
|---|---|---|---|---|---|---|---|
|
||||||
|
[🧅](http://githidep2hynhdmutuv7n2tei4iie2c7lyqz5fes3r5zzoxe5dshtxyd.onion)|💀|gitea|n|n|n|n|**dead site**|
|
||||||
|
[framagit.org](https://framagit.org)|🟢|Gitlab (CE)|n|n|n|n||
|
||||||
|
[git.fuwafuwa.moe](https://git.fuwafuwa.moe)[🧅](http://git.fuwafuwaqtlkkxwc.onion)|🟢|gitea|n|n|n|n|SSH over Tor broken; HTTPS over Tor works|
|
||||||
|
[git.hardenedbsd.org](https://git.hardenedbsd.org)|🟢|Gitlab (CE)|n|n|n|n|possibly restricted to BSD efforts|
|
||||||
|
[git.jami.net](https://git.jami.net)|🟢|Gitlab (CE)|n|n|n|n|possibly restricted to Jami efforts|
|
||||||
|
[git.nixnet.services](https://git.nixnet.services)|🔴|gitea|n|n|n|n|used to be git.nixnet.xyz|
|
||||||
|
[git.sdf.org](https://git.sdf.org)|🟢|gitea|n|n|n|n|SSH over Tor broken (try HTTPS over Tor)|
|
||||||
|
[git.slashdev.space](https://git.slashdev.space)|🟢|gitea|n|n|n|n|SSH over Tor broken (try HTTPS over Tor)|
|
||||||
|
[git.teknik.io](https://git.teknik.io)|🔴|gitea|n|n|n|n||
|
||||||
|
[gitlab.freedesktop.org](https://gitlab.freedesktop.org)|🟢|Gitlab (CE)|n|n|n|n|possibly restricted to Freedesktop efforts|
|
||||||
|
[gitlab.gnome.org](https://gitlab.gnome.org)|🟢|Gitlab (CE)|n|n|n|n|possibly restricted to Gnome efforts|
|
||||||
|
[gitlab.torproject.org](https://gitlab.torproject.org)|🟢|Gitlab (CE)|n|n|n|n|open registration; repo creation possibly restricted; Google reCAPTCHA is [allegedley](https://lists.gnu.org/archive/html/repo-criteria-discuss/2021-03/msg00000.html) used, but [not at registration time](https://gitlab.onionize.space)|
|
||||||
|
[libregit.org](https://libregit.org)|🔴|gitea|n|n|n|n|reg by invite only|
|
||||||
|
[source.puri.sm](https://source.puri.sm)|🟢|Gitlab (CE)|n|n|n|n|open registration; *not* restricted to puri.sm efforts; no CAPTCHA (confirmed March 2021)|
|
||||||
|
[source.small-tech.org](https://source.small-tech.org)|🔴|Gitlab (CE)|n|n|n|n||
|
||||||
|
[sr.ht](https://sr.ht)|🟢|gitea|n|n|n|n|javascript-free|
|
||||||
|
[yerbamate.dev](https://yerbamate.dev)|💀|gitea|n|n|n|n|**dead site**|
|
||||||
|
|
||||||
|
## Blacklist
|
||||||
|
|
||||||
|
These forges have severe ethical or trust issues and should be boycotted:
|
||||||
|
|
||||||
|
| *forge* | *registration publicly open* | *software* | *Tor-hostile* | *sensitive info exposed to CloudFlare* | *forced re/hCAPTCHA* | *forced execution of non-free software* | *notes* |
|
||||||
|
|---|---|---|---|---|---|---|---|
|
||||||
|
git.feneas.org|🟢|Gitlab (CE)|n|n|⚒|☣|**forced h/reCAPTCHA**; reCAPTCHA impedes registration|
|
||||||
|
git.openprivacy.ca|⛔ (exclusive walled garden)|gitea|👁|n|n|n|Tor users get 404 - suspected botnet; [listed](https://codeberg.org/crimeflare/cloudflare-tor/src/branch/master/cloudflare_users/cloudflare_supporter.txt) as a Cloudflare supporter|
|
||||||
|
gitlab.com|⛔ (exclusive walled garden)|Gitlab (EE)|n|🌩|⚒|☣|**forced h/reCAPTCHA**; flagship instance running the *Enterprise Edition*; uses hCAPTCHA; heavily restricted with discriminatory policies|
|
||||||
|
|
@ -45,6 +45,7 @@
|
|||||||
[42]: http://techrights.org/2017/03/15/still-using-patents-to-coerce
|
[42]: http://techrights.org/2017/03/15/still-using-patents-to-coerce
|
||||||
[43]: http://techrights.org/2017/02/27/microsoft-novell-v2-via-azure
|
[43]: http://techrights.org/2017/02/27/microsoft-novell-v2-via-azure
|
||||||
[44]: https://www.gnu.org/software/repo-criteria-evaluation.html
|
[44]: https://www.gnu.org/software/repo-criteria-evaluation.html
|
||||||
|
[45]: https://ilyaigpetrov.medium.com/github-shadowbans-anti-censorship-coder-account-for-a-link-to-the-christchurch-shootings-video-c79a80b408a9
|
||||||
|
|
||||||
# Direct practical problems with using Microsoft Github
|
# Direct practical problems with using Microsoft Github
|
||||||
|
|
||||||
@ -74,6 +75,7 @@
|
|||||||
And for those not discouraged by that, [the sign-in page][6] is also broken.
|
And for those not discouraged by that, [the sign-in page][6] is also broken.
|
||||||
1. MS suppresses democracy by [blocking][7] Github access to a project
|
1. MS suppresses democracy by [blocking][7] Github access to a project
|
||||||
that facilitates protests in Catalonia.
|
that facilitates protests in Catalonia.
|
||||||
|
MS also [banned][45] the account of an anti-censorship developer.
|
||||||
1. Free software projects that rely on non-free software
|
1. Free software projects that rely on non-free software
|
||||||
"[put everyone at the whim of the groups and individuals who produce the tools they depend on][8],"
|
"[put everyone at the whim of the groups and individuals who produce the tools they depend on][8],"
|
||||||
and it puts free software developers in a position of hypocrisy.
|
and it puts free software developers in a position of hypocrisy.
|
||||||
|
45
input_data/forges.sql
Normal file
45
input_data/forges.sql
Normal file
@ -0,0 +1,45 @@
|
|||||||
|
create table if not exists forgesTbl (url_clrnet text,
|
||||||
|
url_onion text,
|
||||||
|
software text check(software in ('Gitea', 'gitlab_ce', 'gitlab_ee', 'Gogs', 'Sourcehut', 'other')) not null default 'other',
|
||||||
|
lst_kind text check(lst_kind in ('black', 'gray', 'white')) not null default 'white',
|
||||||
|
hrecaptcha text check(hrecaptcha in ('unavoidable', 'non-essential tasks', 'never')) not null default 'never',
|
||||||
|
dead boolean not null default 0,
|
||||||
|
openpubreg boolean not null default 1,
|
||||||
|
cflogin boolean not null default 0,
|
||||||
|
antitor boolean not null default 0,
|
||||||
|
forced_nfsw boolean not null default 0,
|
||||||
|
aws boolean not null default 0,
|
||||||
|
notes text,
|
||||||
|
primary key (url_clrnet,url_onion));
|
||||||
|
|
||||||
|
insert into forgesTbl (url_clrnet, dead) values ('https://yerbamate.dev',1);
|
||||||
|
insert into forgesTbl (url_clrnet, antitor, notes) values ('https://git.openprivacy.ca',1,'Tor users get 404 - suspected botnet; [listed](https://codeberg.org/crimeflare/cloudflare-tor/src/branch/master/cloudflare_users/cloudflare_supporter.txt) as a Cloudflare supporter');
|
||||||
|
insert into forgesTbl (url_clrnet, software, notes) values ('https://sr.ht','Sourcehut', 'javascript-free');
|
||||||
|
insert into forgesTbl (url_onion, dead) values ('http://githidep2hynhdmutuv7n2tei4iie2c7lyqz5fes3r5zzoxe5dshtxyd.onion', 1);
|
||||||
|
|
||||||
|
/* Gitea */
|
||||||
|
insert into forgesTbl (url_clrnet, software, openpubreg, notes) values ('https://git.nixnet.services','Gitea', 0, 'used to be git.nixnet.xyz');
|
||||||
|
insert into forgesTbl (url_clrnet, software, openpubreg) values ('https://git.teknik.io','Gitea',0);
|
||||||
|
insert into forgesTbl (url_clrnet, url_onion, software, notes) values ('https://git.fuwafuwa.moe','http://git.fuwafuwaqtlkkxwc.onion','Gitea','SSH over Tor broken; HTTPS over Tor works');
|
||||||
|
insert into forgesTbl (url_clrnet, software, notes) values ('https://git.slashdev.space','Gitea','SSH over Tor broken (try HTTPS over Tor)');
|
||||||
|
insert into forgesTbl (url_clrnet, software, openpubreg, notes) values ('https://libregit.org','Gitea',0,'reg by invite only');
|
||||||
|
insert into forgesTbl (url_clrnet, software, notes) values ('https://git.sdf.org','Gitea','SSH over Tor broken (try HTTPS over Tor)');
|
||||||
|
|
||||||
|
/* Gitlab */
|
||||||
|
insert into forgesTbl (url_clrnet, software) values ('https://framagit.org','gitlab_ce');
|
||||||
|
insert into forgesTbl (url_clrnet, software, hrecaptcha, notes) values ('https://git.feneas.org','gitlab_ce','unavoidable','reCAPTCHA impedes registration');
|
||||||
|
insert into forgesTbl (url_clrnet, software, notes) values ('https://git.hardenedbsd.org','gitlab_ce','possibly restricted to BSD efforts');
|
||||||
|
insert into forgesTbl (url_clrnet, software, notes) values ('https://git.jami.net','gitlab_ce','possibly restricted to Jami efforts');
|
||||||
|
insert into forgesTbl (url_clrnet, software, cflogin, hrecaptcha, notes) values ('https://gitlab.com','gitlab_ee',1,'unavoidable','flagship instance running the *Enterprise Edition*; uses hCAPTCHA; heavily restricted with discriminatory policies');
|
||||||
|
insert into forgesTbl (url_clrnet, software, notes) values ('https://gitlab.freedesktop.org','gitlab_ce','possibly restricted to Freedesktop efforts');
|
||||||
|
insert into forgesTbl (url_clrnet, software, notes) values ('https://gitlab.gnome.org','gitlab_ce','possibly restricted to Gnome efforts');
|
||||||
|
insert into forgesTbl (url_clrnet, software, hrecaptcha, notes) values ('https://gitlab.torproject.org','gitlab_ce','non-essential tasks','open registration; repo creation possibly restricted; Google reCAPTCHA is [allegedley](https://lists.gnu.org/archive/html/repo-criteria-discuss/2021-03/msg00000.html) used, but [not at registration time](https://gitlab.onionize.space)');
|
||||||
|
insert into forgesTbl (url_clrnet, software, notes) values ('https://source.puri.sm','gitlab_ce','open registration; *not* restricted to puri.sm efforts; no CAPTCHA (confirmed March 2021)');
|
||||||
|
insert into forgesTbl (url_clrnet, software, openpubreg) values ('https://source.small-tech.org','gitlab_ce',0);
|
||||||
|
|
||||||
|
update forgesTbl set forced_nfsw = 1 where hrecaptcha = 'unavoidable';
|
||||||
|
update forgesTbl set lst_kind = 'gray' where lst_kind = 'white' and (aws or (notes is not null and (notes like '%google_cloud_hosted%')));
|
||||||
|
update forgesTbl set lst_kind = 'black' where cflogin or antitor or forced_nfsw;
|
||||||
|
update forgesTbl set notes = '**Amazon AWS-hosted**'||case when notes is null then '' else '; '||notes end where aws;
|
||||||
|
update forgesTbl set notes = '**dead site**'||case when notes is null then '' else '; '||notes end where dead;
|
||||||
|
update forgesTbl set notes = '**forced h/reCAPTCHA**'||case when notes is null then '' else '; '||notes end where hrecaptcha = 'unavoidable';
|
151
tools/gen_forge_table.sh
Executable file
151
tools/gen_forge_table.sh
Executable file
@ -0,0 +1,151 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# Syntax: gen_forge_table.sh [text]
|
||||||
|
#
|
||||||
|
# Add "text" option to write the tables in simple text.
|
||||||
|
# Without the text option, all output will be markdown.
|
||||||
|
|
||||||
|
typeset -r db_file=$(mktemp --dry-run --suffix=.db)
|
||||||
|
|
||||||
|
typeset -A sym=([red_circle]=$'\xF0\x9F\x94\xB4'
|
||||||
|
[green_circle]=$'\xf0\x9f\x9f\xa2'
|
||||||
|
[test_tube]=$'\xf0\x9f\xa7\xaa'
|
||||||
|
[cloud_lightening]=$'\xf0\x9f\x8c\xa9'
|
||||||
|
[detective]=$'\xf0\x9f\x95\xb5'
|
||||||
|
[okhand]=$'\xF0\x9F\x91\x8C'
|
||||||
|
[eye]=$'\xf0\x9f\x91\x81'
|
||||||
|
[onion]=$'\xF0\x9F\xA7\x85'
|
||||||
|
[skull]=$'\xF0\x9F\x92\x80'
|
||||||
|
[vomit]=$'\xF0\x9F\xA4\xAE'
|
||||||
|
[noentry]=$'\xE2\x9B\x94'
|
||||||
|
[warning]=$'\xE2\x9A\xA0'
|
||||||
|
[biohaz]=$'\xE2\x98\xA3'
|
||||||
|
[hammerpick]=$'\xE2\x9A\x92')
|
||||||
|
|
||||||
|
#local red_circle='🔴'
|
||||||
|
#local green_circle='🟢'
|
||||||
|
#local test_tube='🧪'
|
||||||
|
#local cloud_lightening='🌩'
|
||||||
|
#local detective='🕵'
|
||||||
|
#local okhand='👌'
|
||||||
|
#local eye='👁'
|
||||||
|
#local onion=''
|
||||||
|
#local skull='💀'
|
||||||
|
#local noentry='⛔'
|
||||||
|
|
||||||
|
intro()
|
||||||
|
{
|
||||||
|
local lst=$1
|
||||||
|
|
||||||
|
case "$lst" in
|
||||||
|
white)
|
||||||
|
printf %s\\n 'The following forges have no significant ethical issues:'
|
||||||
|
;;
|
||||||
|
gray)
|
||||||
|
printf %s\\n 'These forges would normally be blacklisted, but due to the short whitelist they are set aside as a less evil compromise to those blacklisted. They should still be avoided if possible.'
|
||||||
|
;;
|
||||||
|
black)
|
||||||
|
printf %s\\n 'These forges have severe ethical or trust issues and should be boycotted:'
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
};#intro
|
||||||
|
|
||||||
|
table_populate()
|
||||||
|
{
|
||||||
|
sqlite3 "${db_file}" < input_data/forges.sql
|
||||||
|
};#table_populate
|
||||||
|
|
||||||
|
table_text()
|
||||||
|
{
|
||||||
|
# .ft B (bold font)
|
||||||
|
# .ft I (italics font)
|
||||||
|
# .ft P (previous font)
|
||||||
|
# .ll 6i (6 inch width)
|
||||||
|
|
||||||
|
for lst in white gray black
|
||||||
|
do
|
||||||
|
if [[ "$lst" == black ]]
|
||||||
|
then
|
||||||
|
url_clause="''"
|
||||||
|
else
|
||||||
|
url_clause="case when url_clrnet like '_%' then char(10)||'('||replace(url_clrnet,'https://','')||')||||||' else '' end"
|
||||||
|
fi
|
||||||
|
printf %s "# ${lst^}"'list
|
||||||
|
|
||||||
|
```
|
||||||
|
.TS
|
||||||
|
box tab(|);
|
||||||
|
c|c|c|c|c|c.
|
||||||
|
.ft BI
|
||||||
|
forge | Tor- | sensitive info | forced | forced execution | notes
|
||||||
|
| hostile | exposed to | re/hCAPTCHA | of non-free |
|
||||||
|
| | CloudFlare | | software |
|
||||||
|
.ft P
|
||||||
|
.T&
|
||||||
|
l|l|l|l|l|lp40.
|
||||||
|
'
|
||||||
|
sqlite3 "${db_file}" "select case when url_clrnet is null then '' else replace(url_clrnet,'https://','[')||']('||url_clrnet||')' end||'(placeholder)',
|
||||||
|
case when antitor then 'y' else 'n' end,
|
||||||
|
case when cflogin then 'y' else 'n' end,
|
||||||
|
case when hrecaptcha then 'y' else 'n' end,
|
||||||
|
case when forced_nfsw then 'y' else 'n' end,
|
||||||
|
case when notes is null then '' else 'T{
|
||||||
|
.ll 6i
|
||||||
|
'|| replace(replace(notes,'[',''),']',' ') ||'
|
||||||
|
T}' end||
|
||||||
|
$url_clause
|
||||||
|
from forgesTbl where lst_kind = '$lst'
|
||||||
|
order by url_clrnet collate nocase;"
|
||||||
|
|
||||||
|
printf %s '.TE
|
||||||
|
|
||||||
|
```
|
||||||
|
|
||||||
|
'
|
||||||
|
done
|
||||||
|
}; #table_text
|
||||||
|
|
||||||
|
table_md()
|
||||||
|
{
|
||||||
|
printf %s\\n "# Directory of forges"
|
||||||
|
|
||||||
|
for lst in white black
|
||||||
|
do
|
||||||
|
if [[ "$lst" == black ]]
|
||||||
|
then
|
||||||
|
name_clause="case when url_clrnet is null then '' else replace(url_clrnet,'https://','') end"
|
||||||
|
else
|
||||||
|
name_clause="case when url_clrnet is null then '' else replace(url_clrnet,'https://','[')||']('||url_clrnet||')' end"
|
||||||
|
fi
|
||||||
|
printf %s "## ${lst^}list
|
||||||
|
|
||||||
|
$(intro $lst)"'
|
||||||
|
|
||||||
|
| *forge* | *registration publicly open* | *software* | *Tor-hostile* | *sensitive info exposed to CloudFlare* | *forced re/hCAPTCHA* | *forced execution of non-free software* | *notes* |
|
||||||
|
|---|---|---|---|---|---|---|---|
|
||||||
|
'
|
||||||
|
sqlite3 "${db_file}" "select $name_clause||case when url_onion is null then '' else '[${sym[onion]}]('||url_onion||')' end,
|
||||||
|
case when dead then '${sym[skull]}' when cflogin or antitor then '${sym[noentry]} (exclusive walled garden)' when not openpubreg then '${sym[red_circle]}' else '${sym[green_circle]}' end,
|
||||||
|
case software when 'gitlab_ce' then 'Gitlab (CE)' when 'gitlab_ee' then 'Gitlab (EE)' else 'gitea' end,
|
||||||
|
case when antitor then '${sym[eye]}' else 'n' end,
|
||||||
|
case when cflogin then '${sym[cloud_lightening]}' else 'n' end,
|
||||||
|
case when hrecaptcha = 'unavoidable' then '${sym[hammerpick]}' else 'n' end,
|
||||||
|
case when forced_nfsw then '${sym[biohaz]}' else 'n' end,
|
||||||
|
case when notes is null then '|' else notes||'|' end
|
||||||
|
from forgesTbl where lst_kind = '$lst'
|
||||||
|
order by url_clrnet collate nocase;"
|
||||||
|
printf $'\n'
|
||||||
|
done
|
||||||
|
};#table_md
|
||||||
|
|
||||||
|
table_populate
|
||||||
|
|
||||||
|
case "$1" in
|
||||||
|
txt|text)
|
||||||
|
table_text | tbl | nroff -Tascii | uniq
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
printf '%s\n\n' '[//]: # (** DO NOT EDIT this file directly! ** It is auto-generated. Changes should be made to financial_institutions.sql or '"${0##*/}"' instead.)'
|
||||||
|
table_md
|
||||||
|
;;
|
||||||
|
esac
|
Loading…
Reference in New Issue
Block a user