Satellite-im / Uplink-Deprecated

(Pre-Release Software) Secure, Encrypted, P2P chat written atop Warp, IPFS, LibP2P, Dioxus and many more awesome projects and protocols.
Other
24 stars 3 forks source link


Uplink

Privacy First, Modular, P2P messaging client built atop Warp.


Uplink is written in pure Rust with a UI in Dioxus (which is also written in Rust). It was developed to be a new foundation for the basic implementation of Warp features in a universal application.

The goal should be to build a hyper-customizable application that can run anywhere and support extensions.

Features

// TODO

Contributing

Guidelines for contributing are located in the CONTRIBUTING.md.

Prerequisites

You'll need to install the required dependencies for your system in order to build and develop on Uplink. See the table below for help installing them on your system. Mac setup depends on Homebrew.

Distribution Commands
Debian & Ubuntu apt get -y libgtk-3-dev clang libavcodec-dev libavformat-dev libavutil-dev pkg-config libwebkit2gtk-4.0-dev libappindicator3-dev protobuf-compiler
Arch pacman -S gtk3 cmake protobuf
MacOS Homebrew xcode-select --install, brew install protobuf cmake rustup-init gstreamer gst-plugins-base gst-plugins-good gst-plugins-bad gst-plugins-ugly gst-libav gst-rtsp-server gst-editing-services --with-orc --with-libogg --with-opus --with-pango --with-theora --with-libvorbis --with-libvpx --enable-gtk3
Windows Install rust, git, cmake, llvm, ffmpeg, and protoc, see below

Building from source

Linux

// TODO

Windows

Install the following

Then clone this repo and run cargo build. That's it. You will have a .exe file at .\target\debug\uplink.exe. cargo run does the same and runs the exe so try that too.

Mac

// TODO

Running

To run the app in dev mode simply run cargo run.

The executable has a few command line options that might come in handy:

Extra Options

You can specify a window title and a custom path for storage which is useful for local AB testing. cargo run -- --title "User 1" --path .user1

Note: You can also pass these options directly to the binary by omitting the --.

Local Testing

To spawn multiple instances of the app execute the test script test/physical/launch_physical_test.sh. This will spawn two named windows with local cache files in a .temp directory.

Please also read through the Physical Testing Checklist and ensure functionality before submitting a PR.

Resetting Data

It's often necessary to reset your account for development, to do so just delete any .temp and .warp files within this project. Note that on most *nix based systems the .warp file is stored in your home directory unless otherwise configured.

Troubleshooting

If you see something about cmake or protoc then you likely need to install those and get them in your path. Often times just restarting your shell helps. Other errors are fixed with updating packages cargo update or getting the nightly rustup update; rustup default nightly or stable rustup update; rustup default stable version of rust.

If you have this error

Blocking waiting for file lock on package cache

the fix is

rm -rf ~/.cargo/.package-cache

Debugging

Contributions

All contributions are welcome! Please keep in mind we're still a relatively small team and any work done to make sure contributions don't cause bugs or issues in the application is much appreciated.