add forges comparison table

This commit is contained in:
humanacollaborator 2021-04-03 16:13:44 -04:00
parent 3ff46daddf
commit 18e3020a3b
4 changed files with 235 additions and 0 deletions

37
forge_comparison.md Normal file
View 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|

View File

@ -45,6 +45,7 @@
[42]: http://techrights.org/2017/03/15/still-using-patents-to-coerce
[43]: http://techrights.org/2017/02/27/microsoft-novell-v2-via-azure
[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
@ -74,6 +75,7 @@
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
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
"[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.

45
input_data/forges.sql Normal file
View 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
View 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