Contributing to Monero anonymously
~169sOverview: Anyone can potentially contribute code to the Monero software 'anonymously'. Although the project's centralized Git repository is currently hosted on Github, an account is not required to submit a patch.
Motivation
Git is a distributed version control system and its design allows development to continue uninterrupted by any Github outages, errors and potential bans.
This is not a version control or C++ programming guide. Instead, it should serve as a reminder that Git is not Github, and anonymous contributions to Monero are indeed possible and welcome.
Assumptions
-
git1 is installed on your system - you already have a copy of the latest monero software2 on your system
- basic terminal, git knowledge
1. Configure Git identity
Let's first set up your well-known alias (a name and email - doesn't need to be a real address) that will be baked into your commits.
Open up a terminal in your local monero repository directory and type in:
git config user.name "Anon5589"
git config user.email "anon5589@inter.net"
Note: replace name and email accordingly; optionally use the --global flag if you want to set up a global identity, for all projects.
A quick git config --list should now output:
user.name=Anon5589 user.email=anon5589@inter.net
The settings are saved in .git/config.
2. Make a change
Assuming you have updated the copyright year in README.md, you can add the modified file to the index and create a new commit:
git add README.md
git commit -m "README: update copyright year"
Note: display the commit logs with git log.
3. Prepare the patch
git format-patch HEAD -1 --stdout > new-update.patch
cat new-update.patch to see the formatted patch for the last commit. Output should be similar to this:
From 13f5aff0990a61cba2381e11d6fa7dd351b1290c Mon Sep 17 00:00:00 2001
From: Anon5589 <anon5589@inter.net>
Date: Mon, 14 Nov 2022 14:12:00 -0700
Subject: [PATCH] README: update copyright year
---
README.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/README.md b/README.md
index 0ab1a8f31..dd02c2e10 100644
--- a/README.md
+++ b/README.md
@@ -1,6 +1,6 @@
# Monero
-Copyright (c) 2014-2022 The Monero Project.
+Copyright (c) 2014-2023 The Monero Project.
## Table of Contents
--
2.38.0
4. Send the patch
Post the patch to any pastebin3 site that is JS-free and select a long timeout/expiration date.
While you could send the patch via email, it is recommended to share the pastebin link in the #monero-dev4 chatroom to avoid delays.
All you have to do now is to wait for feedback from the community.
Observations
- patches submitted over IRC should ideally be high quality
- patches should generally be self contained (one patch per separate issue, feature, or logical change)
- use descriptive commit messages
- squash (merge) related patches whenever possible
- it is recommended to PGP sign commits
- read CONTRIBUTING.md5 to learn more about the process
- adapt this to your own threat model/workflow (ie. use tor to download source, share patch;)
That's it. You can now start contributing to Monero anonymously, without a Github account.