From 0d06be065b874030ab460f092ca07bab95c81096 Mon Sep 17 00:00:00 2001 From: Shane Howley Date: Mon, 18 Dec 2017 16:46:42 +0000 Subject: [PATCH] Update development instructions --- README.md | 47 ++++++++++++++++++++++++++++++++++++++++------- 1 file changed, 40 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index 80990df..1dcab78 100644 --- a/README.md +++ b/README.md @@ -6,7 +6,7 @@ Decentralized messaging application based on PSS. Onyx is the beginning of our next phase of development on a fully-decentralized messaging platform. It relies on a secure messaging protocol in the Ethereum core called [PSS](https://github.com/ethersphere/go-ethereum/tree/pss/swarm/pss). -## Installing +## Installation To install Onyx, download and install the latest release binaries for your platform from our [releases page](https://github.com/thusfresh/onyx/releases). @@ -22,6 +22,12 @@ This application is an alpha product and is currently suitable for testing purpo - **Reliability**: PSS does not provide deliverability guarantees. When remotely installed, however, the [onyx-server](https://github.com/MainframeHQ/onyx-server) is designed to store messages sent to you while you are offline. As long as PSS delivers them successfully to your Mainframe mailboxing service, they should be waiting for you when you open your desktop or mobile app again. If you are running in the default mode, which runs the mailbox service only locally, any messages sent to you while your app is not running will be lost. - **Performance**: We have not sufficiently tested this version for large-scale use. All messages are stored in a global state file that gets updated with each new message that is received. We anticipate that this will not scale well. The message store was created quickly for the alpha, and will require a more robust implementation in our next phase of development. + +PSS & Swarm are currently in rapid development and as such, the build of swarm that we're currently using (to have a working PSS implementation) has the following known limitations from what is expected in the next release of swarm: + +- **Network Formation**: The network discovery protocol is not currently usable which means that the nodes in the network cannot optimise their routing tables to ensure good routing of messages. In order to ensure routing despite this, all "client" nodes are configured to connect to the network through the same permanent bootnode. +- **File Storage**: The file storage functionality is not currently usable which means that files uploaded to swarm would not be fetchable later. In order to retain the file upload feature, we are running a separate swarm gateway on https://onyx-storage.mainframe.com using a different build of swarm with usable file storage. + ## Get in touch! Although this release is not officially supported, we really want to hear your feedback. If you become aware of a bug or have a great idea about a feature that would make Mainframe more awesome, please submit an issue on our [issues page](https://github.com/thusfresh/onyx/issues). @@ -32,7 +38,7 @@ We would also love to chat with you on the Mainframe app! To converse with us th * Austin Craig: `0x049b12d92928e83c5813e7f6e87b25c3d3d13750d26eb42a4205b7752a1d3f8f3e7f09d455741b9198d15ed8eaa40b2c477901a96c6f861b7f46cc5b38a91e7bba` * Brad Hagen: `0x047d7e236d470739b173d06e7d602020104dcc17e172fc1a87b23d802a66c78e1d5edb2c8b0bcaf8a51aab1dfccd17a79956368d541712045972b740dd2add417f` * Carl Youngblood: `0x04247be9d69b6e48f81f1b59bcb4cd13474d708e37d13952e5c89de39e2797eec1f0295a0140f29278d5363c07b2ebf9e5b4b821dccdbc453d3bc516df3ba8538f` -* Clement Jaquier: `0x04a5e89b2a943981c78c391e10cf937fec8c0d5d8f979f24b794ae5758d3b4ec7495686b056485539ea7f367827da08252ee59de7bef7e26e750ae2815a7a05c31` +* Clément Jaquier: `0x04a5e89b2a943981c78c391e10cf937fec8c0d5d8f979f24b794ae5758d3b4ec7495686b056485539ea7f367827da08252ee59de7bef7e26e750ae2815a7a05c31` * Diogo Perillo: `0x0432145fbf8bdc9ee9cdfaf9f09c1c9cfbf03d746ed8995c0f0b1b13b981b6623768f3098f95101da5243fb5bfbb6a7197c5fe4279235a718de227a3259d827bb1` * Jacek Królikowski: `0x04e6d33cc247a26498acd4a16a52914b93c2d0a97984f4a05bb08461b46e0cee975a3f6196458b17272747558f989c7389fb41bc9cfe1ddfbc7ec1215d9a92f936` * Luca Tavazzani: `0x047c32067adf821dd855af247c87d4ef16e083a8bff507849e5347c90b90c77cad6eca4b8a05f744c29827b76ce208e67ad84dcb0a39e190eace1aa1f06e5fa067` @@ -53,13 +59,26 @@ PSS is a connectionless communication protocol that provides dark routing capabi ## Development -You need a running Swarm node serving a WebSocket server on `localhost:8546` for PSS and a HTTP server on `localhost:8500`. -These values can be changed using the environment variables `SWARM_WS_URL` and `SWARM_HTTP_URL`. +After you pull this repository, to install all the dependencies run +``` +yarn +``` + +The app requires an [onyx-server](https://github.com/MainframeHQ/onyx-server) instance to connect to - you will be prompted when you state the app. This can be run separately, following the instructions in that repository, or can be run locally inside the electron process. To run locally, binaries for geth and swarm are required, and can be built from a known good version for the local architecture using the yarn task: +``` +yarn build:binaries +``` -After you pull this repository, run `yarn` to install all the dependencies. +Run +``` +yarn start +``` +to start the development server for the frontend. It will serve it on `localhost:3000`. -Run `yarn start` to start the development server for the frontend. It will serve it on `localhost:3000`. -Once ready, you can run `yarn electron` to start the electron app, connecting to Swarm and creating a GraphQL server for the frontend. +Once ready, you can state the electron app with +``` +yarn electron +``` ### Project structure @@ -69,6 +88,20 @@ Once ready, you can run `yarn electron` to start the electron app, connecting to - `public`: assets that will be added to the `build` folder - `src`: source code +### Releases + +To build a release for the local architecture, run +``` +yarn build:binaries +yarn dist +``` + +To cross-compile for MacOS, Windows, Linux, run +``` +yarn build:binaries:mwl +yarn dist -mwl +``` + ## Contributing Thanks for your interest in our project! Feel free to examine our list of potential enhancements on our [issues page](https://github.com/thusfresh/onyx/issues) and help us implement them. Feel free to submit an feature request or bug report yourself as well.