Skip to content
This repository has been archived by the owner on Jul 21, 2024. It is now read-only.

Commit

Permalink
Add metadata
Browse files Browse the repository at this point in the history
  • Loading branch information
OzymandiasTheGreat committed Jul 17, 2022
1 parent bda8330 commit 52f570e
Show file tree
Hide file tree
Showing 7 changed files with 178 additions and 0 deletions.
56 changes: 56 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
# Void

Welcome to Void, a decentralized, private, and secure
messenger for the 21st century.

![Void apps running on Android and Linux](./scr/preview.png)

-----
Alpha Warning: Void is alpha-quality software built on
alpha-quality libraries. While it works most of the time,
crashes and data loss are to be expected.

Do not use for anything other than testing.

------

Void aims to be a social network for the modern age.
One that doesn't track you, lock you in, or make you
the product.

While that is the ultimate goal, right now Void is just
a messenger. You can chat with peers as long as you
know their identity public key. On mobile this is
a `screamingvoid://peer/{64 char hex string}` URI
that you can open and the app will pick it up.
Handling custom URI's on desktop is a little trickier
without installation, so the preview app does not
currently do it.

You can find the preview apps on the releases page.

If you wish to see Void achieving it's goals and
growing consider sponsoring me, the primary and for
now, only, developer. Developing Void is very time consuming and there's lots of work to be done, as
the stack Void is built around does not support
environments outside of node.js, so just getting
the app to run on mobile involves considerable amount
of work and lots of native code.

If you decide to become a sponsor you can see available
options to support me in the sidebar. Currently you
become a patron on Patreon for recurring donations or
alternatively use DonorBox to support me.

For more information about available features, known
bugs, and things to come check individual packages in
the source tree.

Most packages in this monorepo are released under MIT
license, and every package includes LICENSE file you
can double check.

Some packages may be missing readmes. Documenting
things is important but time consuming, and at this
stage in development requires many rewrites as things
break and change often. I'll get to it eventually.
21 changes: 21 additions & 0 deletions apps/app/LICENSE
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
The MIT License (MIT)

Copyright (c) 2022 Tomas Ravinskas

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
44 changes: 44 additions & 0 deletions apps/app/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
# Void App

This the official/reference client for the Void network. It's built on React
Native and uses async event based interface to communicate with the core.

It's developed alongside the core and aims to implement every feature available
in the core. It runs on most modern platforms, however I can only test Linux
(Ubuntu LTS) and Android (10). It should run on Windows and Mac as is, but iOS
will probably require minor adjustments to the source to behave correctly.

Some things like theming are haphazardly thrown together and will change as the
code matures.

Network changes are not currently handled. This works mostly ok on desktop,
but on mobile switching from Wi-Fi to mobile data (or the reverse) is likely
to result in hard crash. Even if the app doesn't crash, the rebinding of
network interface DOES NOT happen automatically yet, so you'll need to log out
and log back in for the client to continue to function.

Another thing that is icky on mobile is the battery optimization handling.
I'm looking for a way to opt out of it, but as it is the app might randomly
be killed by the OS without warning. Always check for the "Connected to Void
network" notification.

## Building

### Dev

You need 2 terminals to run the dev client.

In first terminal run `yarn web` for the desktop version or `npx react-native start`
for the mobile version.

In the second terminal run `yarn tauri dev` for the desktop version or
`npx react-native (run-android|run-ios)` for the mobile version.

### Production

To build the production version run `yarn sidecar && yarn tauri build` for
the desktop version or `cd android && ./gradlew assembleRelease` for the
mobile version.

I don't actually know how to build the iOS version as I have no Apple compatible
dev environment.
21 changes: 21 additions & 0 deletions packages/core/LICENSE
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
The MIT License (MIT)

Copyright (c) 2022 Tomas Ravinskas

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
23 changes: 23 additions & 0 deletions packages/core/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
# Void (Core library)

This is the official/reference library for connecting to the Void network.
As it is P2P network, every instance is both a client and a server.
As such the library needs to run in the background continuously to function
correctly.

As can be seen in the reference app this is best achieved with library code
running in separate (service) process and communicating with it asynchronously.

The library is built around Hypercore 10 (alpha) and Hyperswarm 5 (alpha).
The switch to Hyperswarm 6 will happen as soon as libudx bindings are complete
for the mobile ecosystem. The library uses libsodium for additional crypto
not provided by hyper-libraries. This is to keep dependencies minimal as
hyper-libraries also depend on libsodium.

Currently only chat (1-to-1 and group) is implemented. True to it's P2P nature,
group chat is actually more reliable, as even peers that are offline can propagate
updates as long as at least 1 online peer has seen those updates.

As I work out the design of the network, I will eventually post a DESIGN doc
here specifying how peers interact with the network and each other. This is
far from finished and I'm actively working on it, so it will take some time.
13 changes: 13 additions & 0 deletions packages/fs/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,19 @@
Node 16's fs API implemented on top of [react-native-fs](https://github.com/itinance/react-native-fs)
Implementation is mostly complete and fully tested.

-----
WARNING: After using this library, or rather react-native-fs, for a while,
I've encountered a bug where new writes rarely write previously written data
rather than current data. I'm unable to minimally reproduce this, but it happens
regularly in production, resulting in corrupted data.

As I'm failing to reliably reproduce this and with the adoption of JSI, I'm
considering rewriting this library as JSI interface to filesystem.

For now DO NOT USE IN PRODUCTION.

-----

- Async callback and `fs/promises` APIs are fully implemented.
- Sync API cannot currently be implemented because of react-native/native bridge.
- `promisify` API should work, but I haven't tested it yet.
Expand Down
Binary file added scr/preview.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.

0 comments on commit 52f570e

Please sign in to comment.