RoboSats / robosats

A simple and private bitcoin exchange
https://learn.robosats.com
GNU Affero General Public License v3.0
677 stars 134 forks source link

Upload the Android App to a F-Droid repository #1261

Closed KoalaSat closed 1 week ago

KoalaSat commented 2 months ago

Is your feature request related to a problem? Please describe. Users now have to access directly to the github page to be up to date with the Android app or using tools like obtanium. Would be great to have it available on a major F-Droid repository

KoalaSat commented 2 months ago

Hello @IzzySoft I was thinking on you while I was creating this issue, can we apply to have Robosats available in your repo? πŸ˜ƒ I'll take care of adding all the necessary configurations to the Android App, which I assume will be the same as we did for Nostros. Thanks in advance!

IzzySoft commented 2 months ago

I could include one of the per-ABI builds (arm64 probably). Scan results look good except for one thing that will at least need clarification:

Dangerous flags:
----------------
* usesCleartextTraffic
KoalaSat commented 2 months ago

I could include one of the per-ABI builds (arm64 probably). Scan results look good except for one thing that will at least need clarification:

Dangerous flags:
----------------
* usesCleartextTraffic

Probably introduced by the Tor engine library, the app only works over the Tor network.

IzzySoft commented 2 months ago

So it connects via a local (on-device) Tor proxy, with "cleartext" traffic just on-device?

KoalaSat commented 2 months ago

So it connects via a local (on-device) Tor proxy, with "cleartext" traffic just on-device?

The proxy is loaded in-app with this library https://github.com/05nelsonm/kmp-tor/ and 100% of the traffic pass through it because everything is a .onion call

IzzySoft commented 2 months ago

OK, that makes it easy:

usesCleartextTraffic: used only on-device to communicate with the integrated Tor proxy

Guess you've nailed that even to localhost via network security policy? If not, you might want to do that (sorry, cannot help you with setting that up as that's beyond my knowledge).

That said: There's no APK at the latest release. Do you want me to pick up pre-releases then, or shall I wait for the next release having an APK?

KoalaSat commented 2 months ago

@IzzySoft I'll take a look and do some test thanks!

We are planning to create the release this weekend, also we have a PR with the fastlane metadata, we'll ping you once we are ready 😁

Thank you again!

KoalaSat commented 2 months ago

Fastlane files ready for review https://github.com/RoboSats/robosats/pull/1270

IzzySoft commented 2 months ago

Reviewed :smiley: Just the full_description.txt needs a little formatting updates, as indicated.

KoalaSat commented 2 months ago

@IzzySoft we are ready to go 😁 https://github.com/RoboSats/robosats/releases/tag/v0.6.1-alpha

IzzySoft commented 2 months ago

Preparing the listing here then :smiley: Just one question left: Can the network service used be self-hosted? Is the server component FOSS? We might need the NonFreeNet or TetheredNet anti-feature here.

IzzySoft commented 2 months ago

PS: If you plan to get your app listed at F-Droid.org, the fastlane directory will need to go to the top level (root) of the repo. No issue for IzzyOnDroid where any custom location can be configured.

KoalaSat commented 2 months ago

PS: If you plan to get your app listed at F-Droid.org, the fastlane directory will need to go to the top level (root) of the

Okay @IzzySoft thanks for the hint we'll move it right now! πŸš€

IzzySoft commented 2 months ago

Please let me know when done, as I then need to update your app's config here as well :wink: And do not forget to answer the other questions please (server part):

Can the network service used be self-hosted? Is the server component FOSS? We might need the NonFreeNet or TetheredNet anti-feature here.

I know there are instructions for self-hosting – what is not clear is if one can choose that self-hosted server in the app itself. If not, it's TetheredNet. If the server part were not FOSS, it would be NonFreeNet.

Currently, your listing would look like this when "going live" around 6 pm UTC:

image

(just the TetheredNet description was updated to "Server URL is currently hardcoded")

KoalaSat commented 2 months ago

Can the network service used be self-hosted?

Not from the android app, all frontend clients are hardcoded to use very specific URL and there is no way for an end user to change it. The self-hosted options are meant to always refer to the web client, not the backend.

Is the server component FOSS?

Asking @Reckless-Satoshi to confirm, but I would say yes! You can find the list of main services for backend here https://github.com/RoboSats/robosats/blob/main/docker-compose.yml

IzzySoft commented 2 months ago

Thanks, then I got that correct with TetheredNet – and all is ready for the go-live later today. After checking, you are welcome to pick a badge to link there e.g. from your Readme (check the details; guess you might want one of the shields to accompany those already present there; shields are available in the detailed instructions here; you might wish to increase the cacheSeconds to something like 3600 or higher as updates won't happen more often than once a day, so 1h caching should be fine).

KoalaSat commented 2 months ago

thank you so much for the support!! I'll ping you once we move fastlane to the root πŸ˜ƒ

Reckless-Satoshi commented 2 months ago

Can the network service used be self-hosted? Is the server component FOSS? We might need the NonFreeNet or TetheredNet anti-feature here.

Yes. RoboSats has 2 components, the client (for example the Android app is a full client) and the coordinator (we could say this is "the server"). There is many clients and many coordinators. The coordinators are, of course, fully FOSS (this monorepo contains the coordinator codebase as well).

Anyone can run a coordinator, the only current limitation is that coordinators are whitelisted and hardcoded into the client (new coordinators must open an Issue and a PR in this repo for inclusion in the client).

In the near future, it would be trivial to add a feature for users to add new coordinators to their client through a form: although that might likely put users at risk...

IzzySoft commented 2 months ago

Thanks for clarification, @Reckless-Satoshi – that matches my guesses. Then we go with TetheredNet as configured for now. Once it's possible to configure the server URL in the app you'll simply let me know, and that anti-feature can be dropped again. Should such a feature not come we simply keep TetheredNet: it's rather a transparency hint than a "black mark". I can update its description if you suggest a different phrasing of course; I just wanted to keep it simple and easy to understand, even for beginners. Hope this is fine with you.

KoalaSat commented 2 months ago

@IzzySoft fastlane has been moved to root

IzzySoft commented 2 months ago

Eek, and forgive the blind me: fastlane/metadata/android/<locale> is where F-Droid.org would expect it :see_no_evil: See the freshly updated IzzyOnDroid Fastlane Documentation for details…

KoalaSat commented 2 months ago

Eek, and forgive the blind me: fastlane/metadata/android/<locale> is where F-Droid.org would expect it πŸ™ˆ See the freshly updated IzzyOnDroid Fastlane Documentation for details…

Oops! Okay then I'll change it, is it required also for Izzydroid? Should we do it asap?

IzzySoft commented 2 months ago

is it required also for Izzydroid?

Nope, not at all (see the link in my previous comment: at IzzyOnDroid, any entry-point works as it's configured for each app explicitly. I've already adjusted it to the current location. It will just be needed if you decide for a listing at F-Droid.org.

And if you wonder, here are some details on that "entry-point":

That's the "official" locations by Fastlane. F-Droid.org and IzzyOnDroid have some freedom of interpretation, so F-Droid.org e.g. also accepts /metadata/<locale> and IzzyOnDroid quite any place with the locales as next directory level.

TL;DR: Nothing urgent. Just let me know if and when you change it, and ideally before you make another release after having changed it (so the updater finds it).

KoalaSat commented 2 months ago

Great explanation! πŸ‘πŸ‘

KoalaSat commented 2 weeks ago

Hey @IzzySoft we just included a new feature on the latest pre-release where user can manually add external coordinators, guessing if with that we can earn to get that anti-feature out πŸ˜„ https://github.com/RoboSats/robosats/pull/1297

IzzySoft commented 2 weeks ago

Not before there's a new release including that :rofl: But yes. Please give me another ping then.

KoalaSat commented 1 week ago

Not before there's a new release including that 🀣 But yes. Please give me another ping then.

We are good to go :rocket: https://github.com/RoboSats/robosats/releases/tag/v0.6.3-alpha

IzzySoft commented 1 week ago

Heh – the IoD updater pulled that already in yesterday, so it's even live already :partying_face:

KoalaSat commented 1 week ago

Thank you @IzzySoft !!! closing this issue :smiley: