logo
260712 |*| |a|

Contributing to Monero anonymously

~169s

Overview: 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.