Skip to content
This repository has been archived by the owner on Mar 12, 2019. It is now read-only.

Commit

Permalink
Update development instructions
Browse files Browse the repository at this point in the history
  • Loading branch information
howleysv committed Dec 18, 2017
1 parent 6feb7dc commit 0d06be0
Showing 1 changed file with 40 additions and 7 deletions.
47 changes: 40 additions & 7 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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).
Expand All @@ -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).
Expand All @@ -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`
Expand All @@ -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

Expand All @@ -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.
Expand Down

0 comments on commit 0d06be0

Please sign in to comment.