about summary refs log tree commit diff
path: root/content/posts
diff options
context:
space:
mode:
authorNgô Ngọc Đức Huy <huyngo@disroot.org>2021-07-04 22:15:07 +0700
committerNgô Ngọc Đức Huy <huyngo@disroot.org>2021-07-04 22:15:07 +0700
commit21441e59a38307815aab6b231e202e6527a62da5 (patch)
tree792a60da1dbc650bbdb0987f3c642277dadc06e8 /content/posts
parent2cff8d62190a7b95db1cc612cf75e22523b6ee86 (diff)
downloadblog-21441e59a38307815aab6b231e202e6527a62da5.tar.gz
Add new post
Diffstat (limited to 'content/posts')
-rw-r--r--content/posts/2021-07-03-decentral-contribution.md107
1 files changed, 107 insertions, 0 deletions
diff --git a/content/posts/2021-07-03-decentral-contribution.md b/content/posts/2021-07-03-decentral-contribution.md
new file mode 100644
index 0000000..3bb06e4
--- /dev/null
+++ b/content/posts/2021-07-03-decentral-contribution.md
@@ -0,0 +1,107 @@
+---
+title: "Contribute to decentralized hosting service"
+date: 2021-07-03
+draft: true
+lang: en
+categories: [ blog ]
+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
+
+![Illustration of how it works][git-pr-il]
+
+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
+[git-pr-il]: /images/git-pr.png
+[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.