Add docs and mod version bumping
Added and modified documentation for the contribution process. Added the code of conduct file. Modified bump version's conf to auto create tags and commits.
This commit is contained in:
227
README.md
227
README.md
@@ -1,216 +1,29 @@
|
||||
[](code_of_conduct.md)
|
||||
# Welcome to Veilid
|
||||
|
||||
# Veilid
|
||||
- [From Orbit](#from-orbit)
|
||||
- [Run a Node](#run-a-node)
|
||||
- [Development](#development)
|
||||
|
||||
## Introduction
|
||||
## From Orbit
|
||||
|
||||
## Obtaining the source code
|
||||
The first matter to address is the question "What is Veilid?" The highest-level description is that Veilid is a peer-to-peer network for easily sharing various kinds of data.
|
||||
|
||||
```shell
|
||||
git clone --recurse-submodules git@gitlab.com:veilid/veilid.git
|
||||
```
|
||||
Veilid is designed with a social dimension in mind, so that each user can have their personal content stored on the network, but also can share that content with other people of their choosing, or with the entire world if they want.
|
||||
|
||||
## Dependencies
|
||||
The primary purpose of the Veilid network is to provide the infrastructure for a specific kind of shared data: social media in various forms. That includes light-weight content such as Twitter's tweets or Mastodon's toots, medium-weight content like images and songs, and heavy-weight content like videos. Meta-content such as personal feeds, replies, private messages, and so forth are also intended to run atop Veilid.
|
||||
|
||||
### GNU/Linux
|
||||
## Run a Node
|
||||
The easiest way to help grow the Veilid network is to run your own node. Every user of Veilid is a node, but some nodes help the netowrk more than others. These network support nodes are heavier than the node a user would establish on their phone in the form of a chat or social media application. A cloud based virtual private server (VPS), such as Digital Ocean Droplets or AWS EC2, with high bandwidth, processing resources, and up time availability is cruicial for building the fast, secure, and private routing that Veilid is built to provide.
|
||||
|
||||
Development of Veilid on GNU/Linux requires a Debian variant such as Debian
|
||||
itself, Ubuntu or Mint. Pull requests to support other distributions would be
|
||||
welcome!
|
||||
To run such a node, establish a Debian or Fedora based VPS and install the veilid-server service. To make this process simple we are hosting package manager repositories for .deb and .rpm packages. See the [installing](./INSTALL.md) guide for more information.
|
||||
|
||||
## Development
|
||||
If you're inclined to get involved in code and non-code development, please check out the [contributing](./CONTRIBUTING.md) guide. We're striving for this project to be developed in the open and by people for people. Specific areas in which we are looking for help include:
|
||||
|
||||
Running the setup script requires:
|
||||
* Android SDK and NDK
|
||||
* Rust
|
||||
|
||||
You may decide to use Android Studio [here](https://developer.android.com/studio)
|
||||
to maintain your Android dependencies. If so, use the dependency manager
|
||||
within your IDE. If you plan on using Flutter for Veilid development, the Android Studio
|
||||
method is highly recommended as you may run into path problems with the 'flutter'
|
||||
command line without it. If you do so, you may skip to
|
||||
[Run Veilid setup script](#Run Veilid setup script).
|
||||
|
||||
* build-tools;33.0.1
|
||||
* ndk;25.1.8937393
|
||||
* cmake;3.22.1
|
||||
* platform-tools
|
||||
* platforms;android-33
|
||||
|
||||
#### Setup Dependencies using the CLI
|
||||
|
||||
|
||||
You can automatically install the prerequisites using this script:
|
||||
|
||||
```shell
|
||||
./install_linux_prerequisites.sh
|
||||
```
|
||||
|
||||
Otherwise, you may choose to use Android `sdkmanager`. Follow the installation
|
||||
instructions for `sdkmanager`
|
||||
[here](https://developer.android.com/studio/command-line/sdkmanager), then use
|
||||
the command line to install the requisite package versions:
|
||||
|
||||
```shell
|
||||
sdkmanager --install "platform-tools"
|
||||
sdkmanager --install "platforms;android-33"
|
||||
sdkmanager --install "build-tools;33.0.1"
|
||||
sdkmanager --install "ndk;25.1.8937393"
|
||||
sdkmanager --install "cmake;3.22.1"
|
||||
```
|
||||
|
||||
Export environment variables and add the Android SDK platform-tools directory to
|
||||
your path.
|
||||
|
||||
```shell
|
||||
cat << EOF >> ~/.profile
|
||||
export ANDROID_SDK_ROOT=<path to sdk>
|
||||
export ANDROID_NDK_HOME=$ANDROID_SDK_ROOT/ndk/25.1.8937393
|
||||
export PATH=\$PATH:$ANDROID_SDK_ROOT/platform-tools
|
||||
EOF
|
||||
```
|
||||
|
||||
#### Run Veilid setup script
|
||||
|
||||
Now you may run the Linux setup script to check your development environment and
|
||||
pull the remaining Rust dependencies:
|
||||
|
||||
```shell
|
||||
./setup_linux.sh
|
||||
```
|
||||
|
||||
#### Run the veilid-flutter setup script (optional)
|
||||
|
||||
If you are developing Flutter applications or the flutter-veilid portion, you should
|
||||
install Android Studio, and run the flutter setup script:
|
||||
|
||||
```shell
|
||||
cd veilid-flutter
|
||||
./setup_flutter.sh
|
||||
```
|
||||
|
||||
|
||||
### macOS
|
||||
|
||||
Development of Veilid on MacOS is possible on both Intel and ARM hardware.
|
||||
|
||||
Development requires:
|
||||
* Android Studio
|
||||
* Xcode, preferably latest version
|
||||
* Homebrew [here](https://brew.sh)
|
||||
* Android SDK and NDK
|
||||
* Rust
|
||||
|
||||
You will need to use Android Studio [here](https://developer.android.com/studio)
|
||||
to maintain your Android dependencies. Use the SDK Manager in the IDE to install the following packages (use package details view to select version):
|
||||
* Android SDK Build Tools (33.0.1)
|
||||
* NDK (Side-by-side) (25.1.8937393)
|
||||
* Cmake (3.22.1)
|
||||
* Android SDK 33
|
||||
* Android SDK Command Line Tools (latest) (7.0/latest)
|
||||
|
||||
#### Setup command line environment
|
||||
|
||||
Export environment variables and add the Android SDK platform-tools directory to
|
||||
your path.
|
||||
|
||||
```shell
|
||||
cat << EOF >> ~/.zshenv
|
||||
export ANDROID_SDK_ROOT=$HOME/Library/Android/sdk
|
||||
export ANDROID_NDK_HOME=$HOME/Library/Android/sdk/ndk/25.1.8937393
|
||||
export PATH=\$PATH:$HOME/Library/Android/sdk/platform-tools
|
||||
EOF
|
||||
```
|
||||
|
||||
#### Run Veilid setup script
|
||||
|
||||
Now you may run the MacOS setup script to check your development environment and
|
||||
pull the remaining Rust dependencies:
|
||||
|
||||
```shell
|
||||
./setup_macos.sh
|
||||
```
|
||||
|
||||
#### Run the veilid-flutter setup script (optional)
|
||||
|
||||
If you are developing Flutter applications or the flutter-veilid portion, you should
|
||||
install Android Studio, and run the flutter setup script:
|
||||
|
||||
```shell
|
||||
cd veilid-flutter
|
||||
./setup_flutter.sh
|
||||
```
|
||||
|
||||
### Windows
|
||||
|
||||
**TODO**
|
||||
|
||||
## Running the Application(s)
|
||||
|
||||
### Veilid Server
|
||||
|
||||
In order to run the `veilid-server` locally:
|
||||
|
||||
```shell
|
||||
cd ./veilid-server
|
||||
cargo run
|
||||
```
|
||||
|
||||
In order to see what options are available:
|
||||
|
||||
```shell
|
||||
cargo run -- --help
|
||||
```
|
||||
|
||||
#### Configuration
|
||||
|
||||
`veilid-server` has a wealth of configuration options. Further documentation on
|
||||
the format of the `veilid-server.conf` file may be found [in the project /doc
|
||||
directory](./doc/config/veilid-server-config.md).
|
||||
|
||||
When running `veilid-server` in a Unix-like environment, the application will
|
||||
look for its config file under `/etc/veilid-server/`. If the config file is not
|
||||
found in this location, `veilid-server` will follow the XDG user directory spec
|
||||
and look in `~/.config/veilid-server`.
|
||||
|
||||
When running under Windows, the `veilid-server.conf` file may be created at
|
||||
`C:\Users\<user>\AppData\Roaming\Veilid\Veilid\`, and when running under macOS,
|
||||
at `/Users/<user>/Library/Application Support/org.Veilid.Veilid`.
|
||||
|
||||
### Veilid CLI
|
||||
|
||||
In order to connect to your local `veilid-server`:
|
||||
|
||||
```shell
|
||||
cd ./veilid-cli
|
||||
cargo run
|
||||
```
|
||||
|
||||
Similar to `veilid-server`, you may see CLI options by typing:
|
||||
|
||||
```shell
|
||||
cargo run -- --help
|
||||
```
|
||||
|
||||
## Building the Application
|
||||
|
||||
### Linux Packages
|
||||
|
||||
Veilid server and cli can be built locally using the
|
||||
[Earthly](https://earthly.dev/) framework. After [installing earthly on your
|
||||
local machine](https://earthly.dev/get-earthly), you may use the `earthly` cli
|
||||
to initiate a build:
|
||||
|
||||
```shell
|
||||
earthly +package-linux
|
||||
```
|
||||
|
||||
This will assemble all dependencies and build `.deb` packages for both amd64 and
|
||||
arm64 platforms. Earthly, built on Docker, caches build layers, so after a
|
||||
longer first build, subsequent builds should be much quicker.
|
||||
|
||||
During development, you may want to kick off specific build steps. To see a list
|
||||
of the build steps configured, consult the `Earthfile`, or you may use the
|
||||
`earthly` cli:
|
||||
|
||||
```shell
|
||||
earthly ls
|
||||
```
|
||||
* Flutter/Dart
|
||||
* Python
|
||||
* Gitlab DevOps and CI/CD
|
||||
* Documentation
|
||||
* Security reviews
|
||||
* Linux packaging
|
||||
Reference in New Issue
Block a user