about summary refs log tree commit diff
path: root/content/posts/2021-07-03-decentral-contribution.md
blob: 56b0a79ce907b7ca362b48406f92267e5530a191 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
---
title: "Contribute to decentralized hosting service"
date: 2021-07-03
lang: en
categories: [ blog, dev, software ]
tags: [tech, foss, git, hosting, contribution, decentralization, "pull request"]
translationKey: "decentral-contribution"
---

So, a few days ago I've had a conversation from my Pleroma account concerning
SourceHut and git hosting in general.  Original thread [here][orig-thread].

So in short, OP wanted to move out of GitHub, for some reasons, probably
because it is:

- centralized
- non-free[^0]
- hosted by Microsoft
- have been hostile to developers
- exploit free software[^1]

How ironic, because *free software developers* use a *non-free service* for
development, which is a *centralized* service that wraps around a
*decentralized* protocol.

## Decentralized hosting

Let's ignore that thread for a moment.  If you want to avoid GitHub (and you
should), there are two solutions:

- Use some other hosted instances, like codeberg.org or notabug.org
- Self-host your own instance, using free software like gitlab, gitea, or even
    a barebone git server like cgit

But this decentralization introduces a (not) new problem: how to contribute to
another project, when the project is hosted on a different instance than yours?
There are three options:

- Create yet another account to contribute
- *Meh I can leave them be*
- Make a ***[pull request][git-pr]***

But how do you make a *pull request* without having an account there?  If you
clicked on the link above, you can see how:

1. host their clone somewhere publicly available---could be anywhere
2. push up a branch with the change
3. contact you via email or slack or whatever to "request" that you "pull" the
   changes in that branch/remote
4. feedback/discussion continues out of band, contributor can push updates to
   the branch, you can pull them down to review

<picture>
  <source srcset="/images/git-pr.webp" type="image/webp">
  <img src="/images/git-pr.png" alt="Illustration of how it works">
</picture>

In fact, this is described as [one of the common workflows][git-workflow] for
git and is what happens behind the scene in GitHub pull request (except a
GitHub PR pull directly to maintainer's remote and the remotes must be hosted
by them).

## Mailing list workflow

It is reasonable to assume everyone has an email.  After all, most services
require emails for registration, and more importantly, to `git commit` you have
to set an email value.  On the contrary it's not reasonable to assume someone
have a GitHub account.  Therefore, it makes perfect sense to accept
contribution via email, regardless of your hosting service or main contribution
model.

Without an explicit instruction, the contributor can find the maintainer's
email address via git commits.  However, this raises a problem: the
communication is private.  Thus, a public mailing list is important for an open
atmosphere.

[SourceHut][sourcehut] makes this easier: it provides mailing lists that you
can use for issue tracking, discussion, and contribution.  It is free software,
and works without JavaScript, which provides a clean and lightweight UI, though
it might not be as eye-catching as some people expected, but that's subjective.

I am aware that one of the project maintainers had (have?) been rude towards
others inside the free software community, and therefore many people wouldn't
want to support him.  However, the project is free software and licensed under
an AGPL license, which means you can:

- self host your own instance
- maintain your own fork so you don't have to depend on them

And if you really don't want to use anything associated with him, I'd still
hope you would host a mailing list for your free software projects.  Let's keep
the free software development stay away from proprietary platforms and keep it
decentralized!

---

Disclaimer: I'm not affiliated with codeberg.org, notabug.org, or sr.ht

[orig-thread]: https://merveilles.town/@maxc/106502916709836497
[git-pr]: https://merveilles.town/@nasser/106504758341988490
[git-workflow]: https://git-scm.com/about/distributed
[sourcehut]: https://sourcehut.org/

[^0]: I know [services can't be free or non-free](https://www.gnu.org/philosophy/network-services-arent-free-or-nonfree.html),
  but I still use it in the sense that the application that runs the service
  isn't free.
[^1]: The most recent example is Copilot, which mass-exploited free software
  for training a code-generating model.