CT-005: Contributing to Monero anonymously
This is the 5th report in the new Cypherpunk Transmission series.
Motivation
Anyone can anonymously contribute code to the Monero software. Although the project’s centralized Git repository is currently hosted on Github, an account is not required to submit a patch.
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
git
1 is installed on your system- you already have a copy of the latest monero software on your system (CT-0022)
- 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.
Feedback
Let me know if you find this helpful and, depending on interest, I will do my best to post a new Cypherpunk Transmission report every (other?) Monday.
Questions, edits and suggestions are always appreciated @ /about/.
-3RA
Credit goes to gnuteardrops from monero.graphics for the amazing xkcd graphic. Work and xkcd Script font licensed under CC BY-NC 3.0.