Skip to content

(Pre-Release Software) Secure, Encrypted, P2P chat written atop Warp, IPFS, LibP2P, Dioxus and many more awesome projects and protocols.

License

Notifications You must be signed in to change notification settings

Satellite-im/Uplink-Deprecated

Repository files navigation

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:

  • --path which changes the folder used for storage, currently it's .warp but later it will go somewhere else
  • --title which comes in handy if you have more than one window open

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

  • run uplink as follows: RUST_LOG=debug target/debug/uplink
  • in another terminal (by default ~/.warp/logs), tail the log file, follow it, and grep for uplink: tail -f <file_name> | grep uplink

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.

About

(Pre-Release Software) Secure, Encrypted, P2P chat written atop Warp, IPFS, LibP2P, Dioxus and many more awesome projects and protocols.

Resources

License

Stars

Watchers

Forks

Packages

No packages published