I am wondering what could be the best/most appropriate workflow for a Whonix contributor?
The following are my findings and please educate me if I am wrong or there is a better approach. I will be really appreciate. Also, please feel free to share any useful additional information.
While nothing speaks against it, I don’t think it is usual practice / any useful to rename the origin which in this case is Whonix to anything else. Never saw this practice anywhere. Easier / “better” would be:
Once one has cloned all of Whonix’s source code, one could use the mygrep. Like changing the name of a variable or when renaming a file, it is useful to grep all the meaningful (that is excluding licenses and git folders etc) Whonix source files for references. That way any interaction between packages could be found.
Not sure if forking Whonix is convenient or if Whonix is doing something it could do better in order to make that process more standardized / simpler.
Another trick that saves me tons of time navigating and jumping through the file in a Whonix package is to use projectile. It is an emacs package that will consider all the files in a directory as part of a project. When wanting to jump from one file to another, type C-c p f and hit TAB, one will see all the available files in a project (Whonix package).
“If true, the directories /home, /root and /run/user are made inaccessible and empty for processes invoked by this unit”. This means systemd Tor can’t see anything in these file. Therefore, when testing a configuration file or a snowflake binary with Tor, don’t put it in these three directories.
When writing a bash script, one may use a function call that is provided by another script. A uniformed looking comment will greatly help with the readability of code by telling the reader where this function call or variable is provided or set.
Whonix flavor comments are like this:
## provides: function_call_a # note it is not function_call_a()
source /path/to/another/script
(many lines away)
## sets: $variable_a
function_call_a
echo "$variable_a"
Therefore, whenever you have no clue where the function call or a variable is provided or set, simply search it within the same file.