RocketChat / Rocket.Chat.Cordova

Rocket.Chat Cross-Platform Mobile Application via Cordova (DEPRECATED)
MIT License
104 stars 109 forks source link

Add Rocket.Chat Android app on the F-Droid FOSS catalogue #104

Closed BackIsBachus closed 5 years ago

BackIsBachus commented 8 years ago

Hello,

Since Rocket.Chat and the Rocket.Chat app are Free and Open Source Softwares could you consider putting the Android app on F-Droid, a catalog for FOSS applications on Android. It would allow those who do not wish to not use (or as little as possible) the services from Google (here the Play Store) to easily have access to the Rocket.Chat Android app.

Since the app is under the MIT license there shouldn't be any problem but it would require updating both the Play Store and F-Droid after each release.

Want to back this issue? Post a bounty on it! We accept bounties via Bountysource.

geekgonecrazy commented 8 years ago

@BackIsBachus do you have any info on submitting to F-Droid and if there are any api's we could use to automate this as part of our build process? The easier it is for us to automate, the more likely it is that we will include it :smile:

BackIsBachus commented 8 years ago

I'm nor very knowledgeable about how works F-Droid but from what I read it seems that you have to submit your app before it is accepted into the catalogue. You can do that by posting it here or if you can and want to speed up the process directly follow the instruction here. I think the last link can help you automate the update of the app on F-Droid.

I'm not really sure how to do this with app built with Cordova though (I'll try to find more info on that in the next few day).

xenithorb commented 8 years ago

+1

Very much would like to see this please. Or on Aptoide. I don't use Google services, except GCM through microG GmsCore (floss gcm connector)

wohali commented 8 years ago

@geekgonecrazy Here's the walkthrough of how to add a new app to F-Droid. Here are their requirements for an app to be accepted. As previously mentioned you meet the Licensing requirements, and I don't think you use any closed-source binary blobs that they would reject.

Note, you won't be building the apk for them, rather they want to know how to build the apk from your repo. You'll be writing a build recipe for their system to build your app on their infrastructure. Be sure to include pointers to your issue tracker (here on GH) and any donations link to help funnel in those tasty donations! :smile_cat:

I tried working out how to build the apk from your repo myself but I'm afraid your documentation on apk generation is a bit...sparse, and I'm not very fluent with Cordova.

If there is something I can do to help this along, let me know. I'd be willing to toss $20 or so your way if that would help :)

geekgonecrazy commented 8 years ago

@wohali thanks for the info! I didn't realize F-Droid worked this way. Reminds me a bit of Gentoo and other Linux distros :)

herbsmn commented 7 years ago

I see that you added a "help wanted" tag. Can you make a list of tasks that need accomplished in order for feature to be added so that we can help you out?

geekgonecrazy commented 7 years ago

@herbsmn from my understanding the big piece we don't have that we need to be listed... We need an F-DROID build script to compile the app.

herbsmn commented 7 years ago

@geekgonecrazy

"The F-Droid server does not directly publish an APK online, instead the F-Droid server needs a buildable source to build an APK from. This way the server guarantees that the resulting APK accurately represents the source code without any hidden anti-features." https://f-droid.org/wiki/page/Inclusion_How-To

From what I understand, F-Droid needs your buildable source, instead of the other way around.

I suggest that one of the Rocket Chat Cordova developers create an initial submission here: https://f-droid.org/forums/forum/submission-queue/

After that, you can follow these steps to speed the process up a bit: https://gitlab.com/fdroid/fdroiddata/blob/master/CONTRIBUTING.md

valessiobrito commented 7 years ago

+1

herbsmn commented 7 years ago

hello?

geekgonecrazy commented 7 years ago

@herbsmn we haven't had the extra time to look into doing this currently. We do post apk's with every release. So we make it possible to get by with out Google Play.

Thanks for your continued patience :smile:

herbsmn commented 7 years ago

thanks for the response @geekgonecrazy. i started this thread on the forums: https://f-droid.org/forums/topic/rocket-chat-cordova/

amiryal commented 7 years ago

Others already mentioned fdroiddata/CONTRIBUTING.md. I would just like to add that following it would not only speed the process up a bit, but in my experience is a sure way of getting it in as fast as possible.

geekgonecrazy commented 7 years ago

What do users that download through F-Droid do for notifications?

xenithorb commented 7 years ago

I use F-droid exclusively, it notifies you when there are new packages available in their repository. It checks their main repo by default at an interval specified from within the app. F-Droid app do not update automatically, yet, due to certain system permission limitations, but they do provide a notification for when there is an updated package.

I assume challenges are similar to building for fedora in that you have to follow their very specific build process which may not jive totally with prebuilt libraries.

geekgonecrazy commented 7 years ago

Poor wording on my part. 😄

I meant like getting Push Notifications for the app. I assume many F-Droid users are not going to make use of Google Play or Google Play Services?

But yes, there will for sure be those challenges with this as well

xenithorb commented 7 years ago

Understood, on that front GCM is either not used or in my case, since I also use Signal where GCM is required, there is a FLOSS microG drop-in replacement for google services framework and friends.

https://microg.org

It's also a possibility that certain people will prefer to download certain apps through F-droid than other due to the nature of their open build system and trusting that process more than google play's black box.

Edit: meaning that they'll have normal google apps and will just perfer to download the app through F-droid

amiryal commented 7 years ago

Not being a mobile developer, my previous comment was written before I realised what Cordova is. My searching the net brought this project up: turtl/fdroid. This led me to the section in turtl/mobile/Makefile:

#fdroid: build-android
fdroid:
    rsync \
        -avz \
        --delete \
        --delete-excluded \
        --checksum \
        --exclude='build/' \
        --exclude='android/build/' \
        --exclude='.gradle/' \
        platforms/android/ ../fdroid/app

release-fdroid: fdroid
cd ../fdroid && ./scripts/release $(MOBILE_VERSION)

Where ../fdroid is where turtl/fdroid is cloned.

If something similar can be done in the Rocket.Chat.Cordova release process, then the resulting automatically generated project may be submitted to F-Droid. I couldn’t find com.lyonbros.turtl on fdroid/fdroiddata, though.

amiryal commented 7 years ago

Slightly off-topic: I’m new to Rocket.Chat, so wasn’t expecting any notifications yet. I installed the Android app from the releases page – does that use GCM?

Also, I’m using a self-hosted Rocket.Chat server – does that use GCM for pushing notifications?

amiryal commented 7 years ago

I believe that, in order to get accepted, the dependency on proprietary GCM will have to be removed in the project that gets submitted to fdroiddata.

xenithorb commented 7 years ago

@amiryal

Also, I’m using a self-hosted Rocket.Chat server – does that use GCM for pushing notifications?

Yes and no.

The way it works by default if you use any of the published apps (instead of building your own) is that your server sends a notification to the push gateway @ https://rocket.chat, which then in turn sends it to GCM and therefore your app. This is because the distributed app has a hard-coded GCM id that points to the rocket.chat push gateway as indicated above.

The only way to achieve true privacy [from the perspective of not sending data to rocket.chat, google is a whole other can of worms] is to:

  1. Build the app and change the GCM id yourself
    1. Distribute the app to your users
    2. Set the required information in Administration -> Certificates and Keys

I had mentioned somewhere else earlier (can't find it) about possibly having the Cordova app acquire GCM id and keys from the server (since this is possible), in which case it would alleviate the strain on Rocket.Chat's gateway, enhance user privacy, and also be aligned with the install instructions that ask you to go acquire GCM info from google and fill it out.

The reality is that GCM API key and GCM Project Number are totally useless and unused if Enable Gateway: true is set and also useless until you build and distribute your own app.

Unfortunately that idea was shot down because they couldn't also achieve the same thing with APN. (Which I honestly didn't see a relation, if it works better for one why suffer because you can't do it for the other?)

xenithorb commented 7 years ago

All proprietary software need be removed, yes.

herbsmn commented 7 years ago

This issue came up with Signal. Someone wrote a fork that removed GCM push notifications are placed them with rudimentary WebSocket-ONLY support. https://github.com/JavaJens/TextSecure

xenithorb commented 7 years ago

Right, but since that's not well maintained and doesn't work very well (and its forks and sister repos are harassed and legally threatened by Moxie himself) what most people do is use the repo @ http://eutopia.cz which also serves the websocket-only build but also the "LibreSignal build" that somehow still uses GCM.

It's a sad situation where google has cornered the market so deeply when it comes to push messaging on android that there's literally no alternative, especially when their operating system is completely hostile to anything that does something simple like poll a server at a long interval. They've done exactly what they needed to do to make sure everyone except apple users has to use GCM, that's for sure.

I'm not sure what the answer is here.

geekgonecrazy commented 7 years ago

Unfortunately that idea was shot down because they couldn't also achieve the same thing with APN. (Which I honestly didn't see a relation, if it works better for one why suffer because you can't do it for the other?)

I think its still an option on the table.

We're looking at:

alexgleason commented 7 years ago

Hi all,

@ccwalker22 and I created an F-Droid repo that contains RocketChat. Feel free to use it in the interim while we wait for a more permanent solution.

https://f-droid.candlewaster.co/

herbsmn commented 7 years ago

Hey @inputmice, how do you do notifcations in Conversations without GCM? These guys are interested in doing the same thing, I think.

herbsmn commented 7 years ago

Does this way of doing notifications make sense for Rocket Chat Cordova? https://github.com/siacs/Conversations/blob/082c06a486fe4cdb8870680a33836f40d570d1fd/src/main/java/eu/siacs/conversations/services/NotificationService.java

mddvul22 commented 7 years ago

@geekgonecrazy earlier in this thread, you mention that Rocket Chat posts the apk with each release. Where are those apks available for download? I see https://github.com/RocketChat/Rocket.Chat.Cordova/releases but that doesn't seem to be current anymore. Looks like the latest release is 2.5.0 but that page shows 2.4.0.

geekgonecrazy commented 7 years ago

It appears when a release was released to play store a version wasn't tagged here.

@RocketChat/core can who ever tagged a release push the tag here? I can upload the apk, just not sure what commit should be tagged.

marmistrz commented 6 years ago

@herbsmn XMPP does an idle TCP on port 5222, so does Conversations, AFAIK.

On my phone (CM13.0/OnePlus 3) it works perfectly. But I have friends whose Android knows better what they don't need to communicate and kills the connection. But Conversations has an option to keep a persistent notification to prevent the system from killing the connection. Workaround for stupid Android design decisions, but works.

You can see this article: https://gultsch.de/xmpp_2016.html

schaengel commented 6 years ago

Any update on this issue, by the way there was no cordova release since aug 2016. So is this issue valid here or in the android app issue thread?

Stemby commented 6 years ago

https://github.com/RocketChat/Rocket.Chat.Android/issues/26 seems to be the current thread.

martinszy commented 5 years ago

1) The app is currently on f-droid, so I think the issue should be closed.

2) The app is not updating. At least in my phone is stuck in 3.2.0, but the f-droid catalog is aware of 3.4.1 as you can see here: https://gitlab.com/fdroid/fdroiddata/blob/master/metadata/chat.rocket.android.yml

What can be done?

mddvul22 commented 5 years ago

This page still shows the latest version available in Fdroid as being 3.2.0:

https://f-droid.org/en/packages/chat.rocket.android/

geekgonecrazy commented 5 years ago

Going to close this. All issues related to that listing should go on https://github.com/rocketchat/rocket.chat.android

alexanderadam commented 5 years ago

Just for clarification: the Kotlin version has already the open F-Droid issues #2250, #2339 and #2179.