Aether on mobile?


#1

Hey, @b

Aether is an amazing project, I really like the idea! Congrats on the launch! I think the most adoption will come when there is a web or mobile app. Do you think it’s possible to have p2p on mobile devices? So far I have never heard of any apps that can do that, since they cannot always be on and support the network.

Another approach would be to have a lot of trusted nodes around the world and then use mobile apps and web apps just as a client to them. However, this takes away the control from the users. What do you think would be the possible approaches here?


#2

Short answer: mobile would be the holy grail.

Long answer: as you’ve pointed out, there are a few challenges for this. Aether is designed with a longer term view, so it actually is able to support mobile, eventually. Specifically, Aether is composed of three separate processes, backend, frontend and client. In a desktop app, these run in separate containers. Backend is the part that communicates with other nodes, frontend is the part that compiles the network into a human readable community, and client is the UI.

So, in a desktop app, all three of these work together. In a mobile app, you cannot have a backend - because it’s too expensive in terms of battery power required, CPU, or just plain old network communication needed. Also in most mobile platforms the apps can’t stay backgrounded for a long time.

The way Aether solves this problem is that Aether backends can do two nice things:

a) They are zero knowledge, which means the backend does not know the person sitting on the frontend/client. So you can have backends as public utilities, in your coffee shop, in a public park, and so on.
b) Multiple frontends can connect to one backend.

So what this means is, when you have a mobile app, that would just run the frontend, and it would actually just connect to a backend and get updates from it. This is nice, because the mobile app only needs to be concerned with connecting to the backend, and it does not need to stay online all the time — the backend will do the job of staying online and collecting the new information job, and whenever the frontend connects back, it will deliver the new updates to the frontend.

All this is already in place. I do not yet support ‘mounting’ a frontend onto an existing backend yet, but with some deliberation and cleanup work, that will be possible.

So this will also allow you to run your backend on a VPS in cloud, and make your desktop app only connect to your VPS to talk to the backend. Which makes you always online, always getting updates, 24/7, even when your computer is closed. Most people should not need this, because by default Aether can fairly quickly get updates from the network even when it was closed for a while. But in the case you want to treat it like email (you run your email server on a VPS and your mail client connects to it), you will be able to.


#3

@b, this is great! Brilliant idea. Perhaps you could charge for mobile apps, and with earnings buy hosting in a random country each time to have a backend running there. Telegram supposedly owns servers in many countries around the world, so they can’t be shut down easily. This would be a similar concept. Or may be reward users (somehow) that run multiple backends in containers on their PCs, to serve mobile users.

keep up the great work! Do you accept contributions? I would love to help, especially with frontend.


#4

Yep — I do actually want people to do this themselves on a cafe they frequent (maybe talk to the cafe owner first, haha) or in a local hacker space. Backends are just public service with no private information so they should be easy to spin up with no configuration, and kill on a moments notice.

What I’m thinking about is even creating these little ‘Aether boxes’ made of raspberry pi’s and sell them, and each of which comes with an already running aether backend in it. you just plug them into an ethernet connection and boom you have an always online aether backend in your home for your family.

For contributions, I would like to eventually accept it, but for now I’m too hair on fire to be able to think about that. Contributions require a decent amount of training in the codebase, so that means for every contributor I have to walk them through the code and train them in how to do things in ways that it interacts with other systems in safe ways. Training a contributor is a significant time investment that puts me into negative benefit and the contributors usually don’t stick around very long, on average it is a losing time investment. But if there are people very interested and very willing to stay for the long term, why not? I just need to make the contributor program and expectations clear by structuring it and posting it publicly.

For the time being the way I take community contributions is through bug reports, feature requests and in funding so I can actually focus on Aether full time. The easiest way to do that is through Patreon.