From 21441e59a38307815aab6b231e202e6527a62da5 Mon Sep 17 00:00:00 2001 From: Ngô Ngọc Đức Huy Date: Sun, 4 Jul 2021 22:15:07 +0700 Subject: Add new post --- content/posts/2021-07-03-decentral-contribution.md | 107 +++++++++++++++++++++ 1 file changed, 107 insertions(+) create mode 100644 content/posts/2021-07-03-decentral-contribution.md (limited to 'content/posts') 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. -- cgit 1.4.1