cryptee / web-client

Cryptee's web client source code for all platforms.
https://crypt.ee
Other
444 stars 22 forks source link

Add Cryptee to F-Droid #141

Closed candroid-man closed 2 years ago

candroid-man commented 2 years ago

On the Cryptee website, it states that you are unable to install the app from app stores because Google and Apple have created a monopoly which I agree with, however F-Droid, on the other hand, is perfect for this. F-Droid only hosts open-source software, is completely free to use for anyone including developers, and provides update notifications for end users which proves to be very convenient. As far as I know, there are absolutely no security risks in using F-Droid, and they also offer donations that go directly to the developer of the app, meaning they get 100% of the donation.

johnozbay commented 2 years ago

Hi there! 👋🏻

Thanks a lot for filing this! This question comes up every now and then, so I'll write a long answer here, and that way I refer others back to this thread in the future as well.


Unless things have changed or improved since I last checked, F-droid does not provide any added benefits to Cryptee that which we cannot accomplish with our PWA installation at the moment.

Here are a few common reasons we keep hearing from people asking us to check out f-droid, and here's why in my opinion we don't need f-droid, (or any other app store for that matter), why app stores (or f-droid) would serve us no benefit, yet take up a disproportionately large amount of time and financial resources from us.

Update Notifications

We already have update notifications for end-users, it's built into the app itself.

When there's a major update that is not a minor bugfix, you'll see the news button on Cryptee's home-screen start flashing. It's linked directly to our blog and whenever there's a major update, we post about it on our blog, and it starts blinking in the app. You can even subscribe to our blog via email or RSS, which thousands and thousands of people already do to stay up to date with Cryptee. To the best of my knowledge this actually provides a much better stay-up-to-date experience than F-Droid does. + All users (and even non-users who wish to subscribe to emails / rss) get to see and hear about updates, not just those who check F-Droid manually.

Installation / Offline Use etc.

Cryptee is built as a PWA, and you can install it using a compatible browser. (which on Android is pretty much any browser your can get your hands on at this point: Firefox, Chrome, Opera, Samsung etc anything really) Once installed, you can use Cryptee offline, just like any other installed app.

Installation trust model

I'd argue that the trust model is basically the same, if not better with PWAs. Here's why.

With something like F-Droid, the security / trust model is trust-on-first-use meaning that you're trusting f-droid that they are (or the repositories are) sending you / you're installing a valid and untampered copy of our software, and after installation, you're trusting them (or the repositories) to keep sending unmodified / untampered copies of our software, and our software (or the OS) to fact-check the signature / validity of the copy you've downloaded.

And at this point, even if you're an absolute expert in decompiling software, or monitoring incoming/outgoing connections, it's incredibly difficult to verify the software you've installed is indeed doing what it says it's doing.

With PWAs, the security / trust model is also trust-on-first-use, but better. Because instead of an intermediary / store like f-droid, you're effectively trusting us to send you a valid and untampered of our software, and similarly after installation, still only need to trust us (and no other third party) to keep sending unmodified / untampered software updates.

Best part is that, you don't need to be an expert in anything to fact check a PWA is doing what it says it's doing. Even if you know how to build blogs or simple websites or have basic html/css/js experience, – you can simply connect your device to your computer, – inspect the page's code, – see all the incoming / outgoing connections, – access the javascript right there and verify the code. Something you cannot do easily with any other installation method. (yay for open web)

Plus – You can always launch Cryptee, open up your account settings page, and on the top right corner you'll see the version of the app you're running, which will always match the commit hash you see here in this github repo. (So for example, at the moment of this writing, it's f596dac)

Push notifications etc

We can already send / use push notifications in PWAs on Android, f-droid or any other method of native-app installation does not bring any added benefit here. We simply don't have a need for push notifications of any kind for Cryptee at the moment.

Background sync

We can already do background sync using service workers in PWAs. So neither f-droid nor any other store installed native app brings us any added benefits here. The reason why we don't do this is because neither native apps, nor web apps, can encrypt stuff in the background while the app isn't open and running in the foreground. Simply put, operating systems restrict background activity to a certain length / memory / cpu usage, and it's not enough for heavy cryptographic compute operations. My best guess here is that they will never allow background cryptographic operations in the future either. Otherwise same thing would also allow background cryptocurrency-mining by malicious apps for example.

Share-targets / share-sheets

We can already add Cryptee as a share target on Android. So neither f-droid nor any other store installed native app brings us any added benefits here. The reason why we can't / don't make use of this right now is because we'd need to encrypt files in the background inside the share-sheet. Goes back to the previous point. But also, it's incredibly difficult to implement it correctly for client-side encrypted or end-to-end encrypted software. I won't get into detail, because the folks over at Wire wrote a great blog post detailing the challenges here.

Access to more or easier file storage etc than what a PWA installation provides.

This is an incorrect myth. On Android PWAs can make use of almost all the available storage space on a device. i.e. Chrome allows a PWA to use up to 80% of total disk space. So neither f-droid nor any other store installed native app brings us any added benefits here either.


At this point you might be rightfully asking, but then do you see any purpose for app-stores John?

Aside from an easy place to search / shop / find apps for the average user, and perhaps make their payments / subscriptions easier (as a consequence of which two huge monopoly companies like Apple/Google take massive and unfair pay-cuts, remove apps under political pressure and slow down updates) I don't think they provide any benefits anymore.

Plus – we'd need to maintain at the very least 4 - 5 different codebases for our app. For iOS, Android, Mac OS, Windows, and Web. (at best case scenario), which would cost us 5x more engineering time and 5x more in salaries. Result in stores taking 30% on our earnings, so now we're not only spending 4 - 5x more time and money, but also making 2/3rd the amount we were making before. For no added benefit at all.

Even if we were to simply package our PWA and ship it to f-droid, we lose time and resources maintaining yet one more platform, for no added benefit.

Finally, I'd say it's a safe bet that users who are technically savvy enough to know, understand and use f-droid, are also technically savvy enough to install PWAs. So that doesn't provide us any additional benefits either.

So in my opinion there isn't any benefit to having Cryptee on F-Droid or any other store at the moment, for the same reason why we can download apps, install and run on our computers without the need for an app store; on our phones, PWAs allow us to download install and use apps without the need for an app store just the same.

If there ever comes a day where we need access to some specific native APIs which PWA installations on Android don't provide for some reason (and I strongly doubt this would ever happen) – then we can blow the dust off this book, and reconsider having a native app for Cryptee on f-droid or play store or app store etc. But until then, we will be fighting the good fight to make PWAs more popular, as I am of the opinion that they represent the future for small companies like us.


Finally, please don't get me wrong, I'm completely open to ideas / reasons why we should be on f-droid, or other app stores if there ever exists a solid reason for it that will make a fundamental difference for Cryptee's users or us as a company. ✌🏻

So by all means, please leave a comment below and let us know if there's any reason why you think we should definitely be on f-droid. But as it stands, at the moment, I'm of the opinion that it's wiser for us to make better use of our already limited resources on improving Cryptee, and keeping our focus laser sharp.

Hoping these make sense,

Best,

J