Merge remote-tracking branch 'origin/docs'

This commit is contained in:
Cheng 2024-08-28 17:58:03 +08:00
commit 60e21e7586
No known key found for this signature in database
8 changed files with 171 additions and 76 deletions

34
.gitattributes vendored
View File

@ -4,23 +4,23 @@
# Force the following filetypes to have unix eols and encoding, so that Windows does not break them. # Force the following filetypes to have unix eols and encoding, so that Windows does not break them.
# If a file is going to be used on linux and windows, we want it invariant, # If a file is going to be used on linux and windows, we want it invariant,
# rather than automatically translated, because automatic translation always screw things up. # rather than automatically translated, because automatic translation always screw things up.
* text=auto eol=lf encoding=utf-8 whitespace=trailing-space,space-before-tab,tabwidth=4 * text=auto eol=lf encoding=utf-8, whitespace=trailing-space,space-before-tab,tabwidth=4
.gitignore text eol=lf encoding=utf-8 whitespace=trailing-space,space-before-tab,tabwidth=4 .gitignore text eol=lf encoding=utf-8, whitespace=trailing-space,space-before-tab,tabwidth=4
.gitattributes text eol=lf encoding=utf-8 whitespace=trailing-space,space-before-tab,tabwidth=4 .gitattributes text eol=lf encoding=utf-8, whitespace=trailing-space,space-before-tab,tabwidth=4
.gitmodules text eol=lf encoding=utf-8 whitespace=trailing-space,space-before-tab,tabwidth=4 .gitmodules text eol=lf encoding=utf-8 whitespace=trailing-space,space-before-tab,tabwidth=4
*.sh text eol=lf encoding=utf-8 whitespace=trailing-space,space-before-tab,tabwidth=4 diff=bash *.sh text eol=lf encoding=utf-8 whitespace=trailing-space,space-before-tab,tabwidth=4 diff=bash
*.c text eol=lf encoding=utf-8 whitespace=trailing-space,space-before-tab,tabwidth=4 *.c text eol=lf encoding=utf-8 whitespace=trailing-space,space-before-tab,tabwidth=4
*.cpp text eol=lf encoding=utf-8 whitespace=trailing-space,space-before-tab,tabwidth=4 diff=cpp *.cpp text eol=lf encoding=utf-8 whitespace=trailing-space,space-before-tab,tabwidth=4 diff=cpp
*.rs text eol=lf encoding=utf-8 whitespace=trailing-space,space-before-tab,tabwidth=4 diff=rust *.rs text eol=lf encoding=utf-8 whitespace=trailing-space,space-before-tab,tabwidth=4 diff=rust
*.py text eol=lf encoding=utf-8 whitespace=trailing-space,space-before-tab,tabwidth=4 diff=python *.py text eol=lf encoding=utf-8 whitespace=trailing-space,space-before-tab,tabwidth=4 diff=python
*.h text eol=lf encoding=utf-8 whitespace=trailing-space,space-before-tab,tabwidth=4 *.h text eol=lf encoding=utf-8 whitespace=trailing-space,space-before-tab,tabwidth=4
*.txt text eol=lf encoding=utf-8 whitespace=trailing-space,space-before-tab,tabwidth=4 *.txt text eol=lf encoding=utf-8 whitespace=trailing-space,space-before-tab,tabwidth=4
*.html text eol=lf encoding=utf-8 whitespace=trailing-space,space-before-tab,tabwidth=4 diff=html *.html text eol=lf encoding=utf-8 whitespace=space-before-tab,tabwidth=4 diff=html
*.htm text eol=lf encoding=utf-8 whitespace=trailing-space,space-before-tab,tabwidth=4 diff=html *.htm text eol=lf encoding=utf-8 whitespace=space-before-tab,tabwidth=4 diff=html
*.md text eol=lf encoding=utf-8 whitespace=trailing-space,space-before-tab,tabwidth=4 diff=markdown *.md text eol=lf encoding=utf-8 whitespace=trailing-space,space-before-tab,tabwidth=4 diff=markdown
*.pandoc text eol=lf encoding=utf-8 whitespace=trailing-space,space-before-tab,tabwidth=4 *.pandoc text eol=lf encoding=utf-8 whitespace=trailing-space,space-before-tab,tabwidth=4
*.css text eol=lf encoding=utf-8 whitespace=trailing-space,space-before-tab,tabwidth=4 diff=css *.css text eol=lf encoding=utf-8 whitespace=trailing-space,space-before-tab,tabwidth=4 diff=css
*.manifest text eol=lf encoding=utf-8 whitespace=trailing-space,space-before-tab,tabwidth=4 *.manifest text eol=lf encoding=utf-8 whitespace=trailing-space,space-before-tab,tabwidth=4
makefile text eol=lf encoding=utf-8 makefile text eol=lf encoding=utf-8

6
.gitmodules vendored
View File

@ -1,12 +1,12 @@
[submodule "libsodium"] [submodule "libsodium"]
path = libsodium path = libsodium
url = ../libsodium.git url = git://rho.la/libsodium.git
branch = rho-fork branch = rho-fork
[submodule "mpir"] [submodule "mpir"]
path = mpir path = mpir
url = ../mpir.git url = git://rho.la/mpir.git
branch = rho-fork branch = rho-fork
[submodule "wxWidgets"] [submodule "wxWidgets"]
path = wxWidgets path = wxWidgets
url = ../wxWidgets.git url = git://rho.la/wxWidgets.git
branch = rho-fork branch = rho-fork

View File

@ -1,51 +1,77 @@
--- About
title: >- -----
README
--- Wallet is open source software intended to become the manager of hierarchical
deterministic keys for a social network that a superset of the Bitmessage social net,
for securely pseudonymous uncensorable public communication,
and securely private communication. (Telegraph looks like
it will not be private for much longer).
You cannot have truly end to end encryption, except you control your own keys directly.
To make an actually useful social net requires a lot of engineers doing a lot of work, which requires funding, which requires a a profit model. The current business plan being to [eat SWIFT's lunch](./docs/manifesto/SWIFT.html), by creating an environment in which one can create and operate the necessary Daos.
The rest of the documentation is in Pandoc markdown, rather than Gitea or Github markdown, so you will have to build it before any of these links work.
[pre alpha documentation (mostly a wish list)](docs/index.htm) [pre alpha documentation (mostly a wish list)](docs/index.htm)
[copyright © and license](./license.txt) [copyright © and license](./license.txt)
Prerequisites
---------
pre-requisite, Pandoc to build the html documentation from the markdown files. pre-requisite, Pandoc to build the html documentation from the markdown files.
Windows pre-requisites: Visual Studio and git-bash Windows pre-requisites: Visual Studio and git-bash. This software is supposed to be cross platform, and is unlikely to get traction with highly motivate early adopters unless it is cross platform, but currently only builds on Windows.
Download
---------
To obtain the source code from which the project can be built, To obtain the source code from which the project can be built,
including this README.html, from the bash command line (git-bash in windows). including this README.html, from the bash command line (git-bash in windows).
```bash ```bash
git clone --recurse-submodules missing url # assuming Pandoc is installed, and git-bash if you are on
# windows
git clone --recurse-submodules https://gitea.rho.la/cheng/wallet.git
wallet/docs/mkdocs.sh
``` ```
To build the docs, you need pandoc on the path. The above download relies on `https` for security, but `https` is vulnerable to enemy action by any adversary sufficiently powerful to have a certificate authority in his pocket, so our identity model relies on ssh keys, not domain names, so if you intend to make contributions, it would be preferable to create an account on `gitea.rho.la` with a fake email,
upload your ssh public key to that account, and clone using `ssh` instead of `https`
```bash2 ```bash
cd wallet/docs git clone --recurse-submodules gitea@gitea.rho.la:cheng/wallet.git
./mkdocs.sh wallet/docs/mkdocs.sh
``` ```
To build the docs, including the license file, you need Pandoc on the path.
```bash
cd wallet
docs/mkdocs.sh
```
Setup
------
To configure and build the required third party libraries in windows, then To configure and build the required third party libraries in windows, then
build the program and run unit test for the first time, you need to have build the program and run unit test for the first time, you need to have
Visual studio build tools at their default location) Visual studio build tools at their default location)
```bash2 ```bash
cd wallet cd wallet
./winConfigure.bat msvc/winConfig.bat
``` ```
Or, if you are in the command shell or power shell, Or, if you are in the command shell or power shell,
```bat ```bat
.\winConfigure.bat msvc\winConfigure.bat
``` ```
After a pull from remote in which the submodules have changed, the pull After a pull that gives you a status of modified submodules, a to fix the submodules
fails to automatically update the submodules by default, and when you
switch or checkout branches, the switch fails to automatically switch
and checkout the brances.
After a pull that gives you a status of modified submodules.
```bash ```bash
git submodule update --init --recursive --remote git submodule update --init --recursive --remote

52
RELEASE_NOTES.html Normal file
View File

@ -0,0 +1,52 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
<head>
<meta charset="utf-8" />
<meta name="generator" content="pandoc" />
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes" />
<title>Release Notes</title>
<style>
code{white-space: pre-wrap;}
span.smallcaps{font-variant: small-caps;}
div.columns{display: flex; gap: min(4vw, 1.5em);}
div.column{flex: auto; overflow-x: auto;}
div.hanging-indent{margin-left: 1.5em; text-indent: -1.5em;}
ul.task-list{list-style: none;}
ul.task-list li input[type="checkbox"] {
width: 0.8em;
margin: 0 0.8em 0.2em -1.6em;
vertical-align: middle;
}
.display.math{display: block; text-align: center; margin: 0.5rem auto;}
</style>
<link rel="stylesheet" href="docs/pandoc_templates/style.css" />
<link rel="shortcut icon" href="docs/rho.ico">
<!--[if lt IE 9]>
<script src="//cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.3/html5shiv-printshiv.min.js"></script>
<![endif]-->
</head>
<body>
<div class="logo-header">
<a href="docs/manifesto/motivation.html">
<img src="docs/pandoc_templates/logo.svg" id="logo-graphic" alt="logo">
<div style="height:18px;"></div>
<div id="Rhocoin"></div>
</a>
</div>
<div class="button-bar">
<a href="README.html">readme</a>
<a href="LICENSE.html">license</a>
<a href="NOTICE.html">notice</a>
<a href="RELEASE_NOTES.html">release notes</a>
</div>
<header id="title-block-header">
<h1 class="title">Release Notes</h1>
<p>To build and run <a href="./README.html">README</a></p>
<p><a href="docs/index.htm">pre alpha documentation (mostly a wish list)</a> (In order to read these on this local system, you must first execute the document build script <code>mkdocs.sh</code>, with <code>bash</code>, <code>sed</code> and <code>pandoc</code>)</p>
<p>This software is pre alpha and should not yet be released. It does
not work well enough to even show what it would do if it was
working</p>
<p style="background-color: #ccffcc; font-size: 80%;"><a rel="license" href="http://creativecommons.org/licenses/by/4.0/"><img alt="Creative Commons License" style="border-width:0" src="https://i.creativecommons.org/l/by/4.0/80x15.png" /></a>&nbsp;reaction.la gpg key 154588427F2709CD9D7146B01C99BB982002C39F<br />This work is licensed under the <a rel="license" href="http://creativecommons.org/licenses/by/4.0/">Creative Commons Attribution 4.0 International License</a>.</p>
</body>
</html>

View File

@ -26,7 +26,7 @@ $endfor$
<link rel="shortcut icon" href="$targetDocroot$rho.ico"> <link rel="shortcut icon" href="$targetDocroot$rho.ico">
$for(header-includes)$ $for(header-includes)$
$endfor$ $endfor$
$header-includes$ $header-includes$
$if(math)$ $if(math)$
$if(mathjax)$ $if(mathjax)$
<script src="https://polyfill.io/v3/polyfill.min.js?features=es6"></script> <script src="https://polyfill.io/v3/polyfill.min.js?features=es6"></script>

View File

@ -131,7 +131,7 @@ identified cryptographically, rather than through the domain name system.
then at the root of your repository then at the root of your repository
```bash ```bash
ssh-keygen -t ed25519 -f .git/gandalf #to create your key pair ssh-keygen -t ed25519 - C gandalf -f .git/gandalf #to create your key pair
git config user.signingkey .git/gandalf.pub #tell git to use this key pair git config user.signingkey .git/gandalf.pub #tell git to use this key pair
git config user.name gandalf #will be ignored git config user.name gandalf #will be ignored
git config user.email gandalf@ #fake email will be ignored git config user.email gandalf@ #fake email will be ignored
@ -146,7 +146,7 @@ git config include.path ../.gitconfig #sets various defaults, ssh signing among
displayed by the git aliases of `.gitconfig` displayed by the git aliases of `.gitconfig`
The nym in `.gitsigners` is the one that matters, though `user.email` The nym in `.gitsigners` is the one that matters, though `user.email`
and `user.name` should be the same or sufficiently similar to and `user.name` should be the same or sufficiently related to
show you are not up to anything funny. show you are not up to anything funny.
# No race, sex, religion, nationality, or sexual preference # No race, sex, religion, nationality, or sexual preference
@ -242,47 +242,17 @@ attempts to develop software is going to survive. Linux is a dead man walking.
# Style # Style
Contributions should be gpg signed.
Never use any email address on a gpg key related to this project
unless it is only used for project purposes, or a fake email, or the
email of an enemy. We don't want Gpg used to link different email
addresses as owned by the same entity, and we don't want email
addresses used to link people to the project, because those
identities would then come under state and quasi state pressure.
if you add the recommended repository configuration defaults to your local repository configuration
```bash
git config --local include.path ../.gitconfig
```
This will implement signed commits and will insist that you have `gpg` on your path,
and that you have configured a signing key in your local config.
This may be inconvenient if you do not have `gpg` installed and set up.
`.gitconfig` adds several git aliases: `.gitconfig` adds several git aliases:
1. `git utcmt` to do a commit without recording your timezone in the git history 1. `git utcmt` to do a commit without recording your timezone in the git history
1. `git lg` to display the gpg trust information for the last few commits. 1. `git lg` to display the .gitsigner trust information for the last few commits.
For this to be useful you need to import the repository public key
`public_key.gpg` into gpg, and `lsign` that key.
1. `git graph` to graph the commit tree with signing status 1. `git graph` to graph the commit tree with signing status
1. `git alias` to display the git aliases. 1. `git alias` to display the git aliases.
To only pull signed commits from people you have listed:
```bash
git config merge.verifySignatures true
gpg --import public_key.gpg
gpg --lsign 096EAE16FB8D62E75D243199BC4482E49673711C
```
We ignore the Gpg Web of Trust model, and instead use the Zooko We ignore the Gpg Web of Trust model, and instead use the Zooko
identity model. identity model.
We use Gpg signatures to verify that remote repository code We use ssh signatures to verify that remote repository code
is coming from an unchanging entity, not for Gpg Web of Trust. Web is coming from an unchanging entity, not for Gpg Web of Trust. Web
of Trust is too complicated and too user hostile to be workable or safe. of Trust is too complicated and too user hostile to be workable or safe.
No one ever used it in the intended manner. No one ever used it in the intended manner.

View File

@ -258,3 +258,42 @@ Setup is also decribed as ridiculously easy -- compare and contrast with much gr
And the huge disadvantage that it only exists for Nix 23.05, while the latest "stable" (not very stable at all) release is 24.05 And the huge disadvantage that it only exists for Nix 23.05, while the latest "stable" (not very stable at all) release is 24.05
It also has only a minimal nginx setup. Not at all sure what will happen when I combine it with a real nginx setup. It also has only a minimal nginx setup. Not at all sure what will happen when I combine it with a real nginx setup.
We have to pin to a particular release: The following code is an example of such pinning
```nix
{ config, pkgs, ... }: {
imports = [
# builtins.fetchTarbll pins Nixos to a particular release, prevents the lastest release (24.05)from being default installed.
(builtins.fetchTarball {
# Pick a release version you are interested in and set its hash, e.g.
url = "https://gitlab.com/simple-nixos-mailserver/nixos-mailserver/-/archive/nixos-23.05/nixos-mailserver-nixos-23.05.tar.gz";
# To get the sha256 of the nixos-mailserver tarball, we can use the nix-prefetch-url command:
# release="nixos-23.05"; nix-prefetch-url "https://gitlab.com/simple-nixos-mailserver/nixos-mailserver/-/archive/${release}/nixos-mailserver-${release}.tar.gz" --unpack
sha256 = "0000000000000000000000000000000000000000000000000000";
})
];
mailserver = {
enable = true;
fqdn = "mail.example.com";
domains = [ "example.com" ];
# A list of all login accounts. To create the password hashes, use
# nix-shell -p mkpasswd --run 'mkpasswd -sm bcrypt'
loginAccounts = {
"user1@example.com" = {
hashedPasswordFile = "/a/file/containing/a/hashed/password";
aliases = ["postmaster@example.com"];
};
"user2@example.com" = { ... };
};
# Use Let's Encrypt certificates. Note that this needs to set up a stripped
# down nginx and opens port 80.
certificateScheme = "acme-nginx";
};
security.acme.acceptTerms = true;
security.acme.defaults.email = "security@example.com";
}
```

View File

@ -3073,13 +3073,21 @@ directory url (with no trailing backslash).
### Git Daemon ### Git Daemon
Now integrated into Git, needs no separate install.
When correctly set up, the url for repo foo.git is `git://host/foo`
git-daemon will listen on port 9418. By default, it will allow access to any directory that looks like a git directory and contains the magic file git-daemon-export-ok. git-daemon will listen on port 9418. By default, it will allow access to any directory that looks like a git directory and contains the magic file git-daemon-export-ok.
This is by far the simplest and most direct way of allowing the world to get at your git repository. This is by far the simplest and most direct way of allowing the world to get at your git repository.
[Git documentation for Git daemon](https://git-scm.com/docs/git-daemon)
[Git Book for Git daemon](https://git-scm.com/book/en/v2/Git-on-the-Server-Git-Daemon)
### Gitweb ### Gitweb
Does much the same thing has git-daemon, makes your repository public with a Does much the same thing as git-daemon, makes your repository public with a
prettier user interface, and somewhat less efficient protocol. prettier user interface, and somewhat less efficient protocol.
Gitweb provides a great deal of UI for viewing and interacting with your Gitweb provides a great deal of UI for viewing and interacting with your