GithubHelp home page GithubHelp logo

fdroid version about aves HOT 66 CLOSED

deckerst avatar deckerst commented on June 13, 2024 17
fdroid version

from aves.

Comments (66)

Lowxorx avatar Lowxorx commented on June 13, 2024 8

I took a look at their policy and process.

One blocker is that the app currently uses Firebase for analytics and crash reporting. The related anti-features are opt-in and Aves can run fine without them, but crash reporting has been essential for me to identify issues that I would never discover by myself. So, for now, Firebase is a must in the main flavour.

In principle I am not against creating another flavour specifically for F-Droid, stripped of Firebase. But there is currently a technical limitation: Flutter, the framework used by Aves, cannot handle flavours with different dependencies, so I can't define a flavour with Firebase and another without.

Until the Flutter issue above is resolved or F-Droid loosens their policy, I cannot submit Aves for inclusion.

I hope that F-Droid will not loosens its policy towards users' privacy, that would be a betrayal of their basic principles! That said, if you're also concerned about the questionable policies regarding the data collected on Firebase, you can always use a free crash analysis solution (I'm thinking of ACRA for example)
Don't take this as a negative criticism, you are doing a great job!

from aves.

IzzySoft avatar IzzySoft commented on June 13, 2024 6

Yeeeha! I just pushed the "merge" button. Aves should show up at F-Droid.org within a few days now!

For those curious: Review part 1 and part2.

Thanks a ton, @deckerst – that's a really great addition to the F-Droid catalog 😍

from aves.

deckerst avatar deckerst commented on June 13, 2024 6

Done

from aves.

deckerst avatar deckerst commented on June 13, 2024 5

I took a look at their policy and process.

One blocker is that the app currently uses Firebase for analytics and crash reporting. The related anti-features are opt-in and Aves can run fine without them, but crash reporting has been essential for me to identify issues that I would never discover by myself. So, for now, Firebase is a must in the main flavour.

In principle I am not against creating another flavour specifically for F-Droid, stripped of Firebase. But there is currently a technical limitation: Flutter, the framework used by Aves, cannot handle flavours with different dependencies, so I can't define a flavour with Firebase and another without.

Until the Flutter issue above is resolved or F-Droid loosens their policy, I cannot submit Aves for inclusion.

from aves.

flexagoon avatar flexagoon commented on June 13, 2024 5

@deckerst

As I said, this is my opinion, but you're free to fork and do whatever. Beauty of open-source

Obviously I am legally allowed to do this. But you are the creator of the app after all, so if you don't want me to do this, I won't.

These few users do not represent users in general, so it's a shame that they have so much influence on what's visible on alternative stores like F-Droid.

F-Droid is already the "foss app store" which (in the main repository) only allows 100% FOSS apps. So the userbase of F-Droid mostly consists of people who want FOSS apps as well. And I don't want to distribute the fork on anywhere else except F-Droid, your app will stay the only one on Google Play.

Also I think that creating a fork for that will save you some time, because you will no longer need to maintain a separate flavor that you don't personally need just for the few users who do.

from aves.

IzzySoft avatar IzzySoft commented on June 13, 2024 5

With the app in my repo for a while now, I today wondered why I don't have it on one of my devices. Just installed it on a test device and found out why: Google Maps. Well, good thing is the app does not connect to GMaps directly but "just" to Mapbox. I'd really love to be "degraded to pure FOSS" please as you've put it, and have OSM instead πŸ˜‰

That said (without any malice in mind), I don't feel "degraded to pure FOSS", but rather "elevated" – as with "pure FOSS" I don't have to guess what's done with my data. I know, no guarantees – but chances are much lower that some "evil player" picks at them. No offense meant, and I'd trust you won't do such a thing willingly; but with proprietary things you cannot even tell for sure what it really does and so we all have to "trust blindly".

Having an Aves version "degraded to pure FOSS" would be the absolute icing on my cake; didn't take me longer than a minute to love the app…So maybe there's a chance?

from aves.

realmain avatar realmain commented on June 13, 2024 4

To me that's a deal breaker, as I use an API key for Google Maps (which is a major part of the app), and I won't let this key be public.

Can you instead move over to OpenStreetMaps and use their API?

from aves.

Ilithy avatar Ilithy commented on June 13, 2024 4

Highly interested in a fully libre fork of Aves

Identically for me, I use a smartphone (Pixel) under grapheneos for this reason (exclude Google from my digital life), I would love Aves to be free of Google crap.

Thanks ❀️

from aves.

deckerst avatar deckerst commented on June 13, 2024 4

Aves v1.7.5 is available. With this release a few changes of interest to this thread:

  • there's now a libre flavour,
  • the izzy and libre flavour makes the user choose a map layer before seeing the map (in other words, no call to Google Maps if the user does not want it).

Recap of version differences here.

@IzzySoft About the libre flavour, the app ID is deckers.thibault.aves.libre, distinct from the normal app ID deckers.thibault.aves for all the other flavours. A "fat" APK for this flavour is already built and attached to the release. The gradle file has been modified to make sure that all the proprietary plugins and dependencies are guarded depending on flavours, but I've played with fdroidserver and it yields false positives, detecting google/crashlytics/huawei stuff as problematic even though they are not used for the libre flavour. So I'll let you request and handle things on the F-Droid side.

As far as I'm concerned Aves is now buildable without proprietary stuff:

# ./scripts/pub_get_all.sh
# ./scripts/update_flutter_version.sh
# ./scripts/apply_flavor_libre.sh
# flutter build apk -t lib/main_libre.dart --flavor libre

You can check the GitHub release workflow for reference.

from aves.

flexagoon avatar flexagoon commented on June 13, 2024 3

@alexanderadam actually I wanted to create a fully FOSS fork of Aves and publish it to F-Droid (only if @deckerst is fine with that, of course). Though I can't tell you a specific time when I'll try to do it. Most likely not in the next few months.

from aves.

flexagoon avatar flexagoon commented on June 13, 2024 3

@alexanderadam no, this repository does not accept PRs and deckerst doesnt plan to. I think it would make sense to create a separate Aves-FOSS project, like Telegram-FOSS is for Telegram.

from aves.

deckerst avatar deckerst commented on June 13, 2024 3

Would you consider that, maybe – so no data goes that way "by default" at least?

Yes, for the izzy build only. I'll keep the map layer provided by local mobile services as default for play and huawei.

Of course a "full floss flavor" would be even better – but that might also be a lot of work.

Another flavour is actually trivial. I already set up all the infra for the play/huawei/izzy flavours. I explained reasons above why I kept GMaps so far.

If it works out, the FOSS build could be provided via F-Droid.org, while the current build could remain with my repo.

That's interesting. If both builds are available to F-Droid users (i mean, users who added your repo would still have access to the "full" build), then I'm willing to make and provide the "degraded" foss build alongside.

from aves.

IzzySoft avatar IzzySoft commented on June 13, 2024 3

That's interesting. If both builds are available to F-Droid users

That's the idea, yes. And as both are visible in the client, the "F/LOSS" one having a "suffix" to its applicationId (please make it an applicationId inside the flavor – I vaguely remember the F-Droid build system had issues with the applicationIdSuffix gradle feature, not sure if that's still the case) makes them show up in parallel if both repositories are enabled. If then the F-Droid one has a slightly different name as well (e.g. "Aves libre"), all confusion can be avoided. The full_description could even point out the differences plus where to get which version. I'd volunteer to provide the corresponding (suggested) phrasing then.

then I'm willing to make and provide the "degraded" foss build alongside.

Wonderful 🀩 I'll then help getting it to F-Droid.org (disclosure: I'm one of the maintainers there).

from aves.

deckerst avatar deckerst commented on June 13, 2024 3

Cf https://gitlab.com/fdroid/fdroiddata/-/merge_requests/12154

from aves.

IzzySoft avatar IzzySoft commented on June 13, 2024 3

Stand by for the next index: build monitor shows successful build of 3 Aves APKs 🀩 So Aves will show up before the weekend probably.

from aves.

IzzySoft avatar IzzySoft commented on June 13, 2024 2

When I run your tool on the izzy and libre apk bundled with the v1.7.5 release I get this:

Yes, I indeed only checked the results in my repo – thus the "izzy" flavor. OK, then I misunderstood – apologies!

Anyway, I will submit the a packaging request and let them deal with it.

Good idea! There are other members in our team who are much more familiar with these realms and then would help to get it on. Thanks a lot!

from aves.

deckerst avatar deckerst commented on June 13, 2024 1

@flexagoon thanks for the link to catcher, I'll take a look!

Regarding F-Droid, I should probably give an update instead of letting this issue rot. Firebase is not actually what's blocking me now. I've discovered that F-Droid cannot handle API keys as a secret. To me that's a deal breaker, as I use an API key for Google Maps (which is a major part of the app), and I won't let this key be public.

So pure F-droid distribution seems out (unless there's a sensible solution to the API key conundrum) but, starting with the next release, Aves will likely be on IzzyOnDroid.

from aves.

deckerst avatar deckerst commented on June 13, 2024 1

So pure F-droid distribution seems out (unless there's a sensible solution to the API key conundrum) but, starting with the next release, Aves will likely be on IzzyOnDroid.

IzzyOnDroid has in the end the same constraints as F-Droid: they dislike Crashlytics and Google Maps.

from aves.

flexagoon avatar flexagoon commented on June 13, 2024 1

but the priority to me is the resulting app, not an ideology

Yeah, I already figured that out, that's fine, I'm not an extreme Stallman-like "closed-source-should-be-illegal" opensource ambassador either, although I like the ideology and prefer using FOSS software whenever possible. What I'm saying is that a lot of people who use opensource software have degoogled devices, so you probably shouldn't just completely ignore that part of the userbase.

Are there ML components on the custom ROMs you mentioned

Lineage and Calyx don't have any. Graphene optionally supports installing Google Services in a sandboxed environment, so it kinda does.

But afaik developers of the opensource apps usually use some opensource ML libraries, and instead of bundling models with the app itself, the model is downloaded when you launch the app (eg. on the first launch you see a message like "Do you want to optionally instal models to enable AI features of the app?", and if you click yes, the models are downloaded and installed.)

from aves.

deckerst avatar deckerst commented on June 13, 2024 1

The app is now on IzzyOnDroid! πŸŽ‰

Edit: I forgot to mention it, but the app distributed on IzzyOnDroid is functionally the same as the one on Play. The only difference is that it does not include Crashlytics.

@strider72 several features would be unlocked by using some ML:

  • face detection
  • image labeling
  • text extraction
  • selfie segmentation

All of these are important to some users, but some others will think they are useless or even scary (making these optional will be essential). I intend to tackle them in the (distant) future, but I'll need to find a performant library that does not increase the app size too much. Anyway, I don't need to decide now. Many other items have priority over this.

I'll close this issue. For distribution on F-Droid proper, I explained in the comments above the reasons why it's not happening. If you have ideas for workarounds that do not involve self-hosting or removing features, feel free to reach out.

from aves.

alexanderadam avatar alexanderadam commented on June 13, 2024 1

Oh, okay. I wasn't aware of that. 😱
In that case you're obviously right by creating an own fork. πŸ‘

Please ping me, once you created it.

from aves.

flexagoon avatar flexagoon commented on June 13, 2024 1

@alexanderadam deckerst actually explained why PRs are not accepted: #159

from aves.

seniorm0ment avatar seniorm0ment commented on June 13, 2024 1

Highly interested in a fully libre fork of Aves. Until then I will not use or suggest others to use. Sorry.

from aves.

deckerst avatar deckerst commented on June 13, 2024 1

Where can one perform that switch? I mean, make it the default before "something is called" (found it only in the info map itself, not in the global settings).

At the moment, users can only change the map layer through the map overlay (the one in Info page, as well as the full map page), but not from the app settings, as you've correctly assessed. The setting is sticky, though, so you don't need to do it again. I may revisit the settings page, but I'm careful as there are already a lot of settings and i try to avoid superfluous and redundant ones.

And is it possible to use/define other OSM layers

I'd like to eventually allow users to add custom layers. It's geeky by nature (with URLs, API keys...) but it would unlock useful layers that i won't make built-in (e.g. for licensing reasons, as I explained above for original OSM tiles).

from aves.

IzzySoft avatar IzzySoft commented on June 13, 2024 1

@deckerst I'm not an Android dev or build expert myself, so I'm afraid I cannot much help with those details. But of course we have some members in our team who are familiar with such things. So may I recommend to either simply open a Request for Packaging aka RFP (the easy approach and generally a good start as you get first indications from our scanners) or go straight for a merge request at fdroiddata if you dare (the "straight-forward approach" giving you even more details and hopefully results in it being merged, thus Aves becoming available at F-Droid)? Discussion would then take place there, where it belongs. And I can pick up there as well, being one of the maintainers πŸ˜„

While at least the RFP path is easy enough for even the average user to go, if you prefer I can open that one for you.

from aves.

IzzySoft avatar IzzySoft commented on June 13, 2024 1

And tooted already. 🎺 LOUDLY πŸ™ˆ

from aves.

realmain avatar realmain commented on June 13, 2024

This is the inclusion policy that must be met to be able to submit. More info about submitting can be found here.

Here is the issue tracker to request your package to be available on F-Droid. After submitting, they can assist on what is needed to be done (if anything) to get it on F-Droid.

from aves.

deckerst avatar deckerst commented on June 13, 2024

I intend to try ACRA. I just need to find some free hosting that can accommodate its backend.

from aves.

flexagoon avatar flexagoon commented on June 13, 2024

@deckerst check out the catcher package on pub.dev (link). It doesnt need a server afaik, just an email adress (there actually are a lot of ways Catcher can handle crashes, like Discord or Slack crash reports. You definitely should check it out)

from aves.

flexagoon avatar flexagoon commented on June 13, 2024

You can also use https://sentry.io. It can work as a standalone library, or you can configure Catcher (link in my previous comment) to send crash reports to Sentry

Using it with Catcher will be more private tho, because if you use it standalone, you can't make error reporting optional

from aves.

deckerst avatar deckerst commented on June 13, 2024

Let's distinguish the OSM editing API from their tiles. For Aves it's the tiles that I need, and the OSM tile usage policy is sensible: the tile servers are not free, so heavy use is forbidden. I don't want to rely on a service that cannot scale.

I added a few free alternative tile layers (the Stamen and Humanitarian OSM ones), but I certainly don't want the default (or worse, only) tile provider to be one of these. I will not abuse free services that depend on donations and good will.

from aves.

strider72 avatar strider72 commented on June 13, 2024

How do all the FOSS map apps that use OSM do it? Are they basically just cheating?

from aves.

deckerst avatar deckerst commented on June 13, 2024

Maybe I'm wrong and OSM is happy with mobile apps using it, as they may not consider it heavy usage.

By principle though, I don't want to adopt a solution that will break if someone somewhere at OSM decides to block calls from this app.

from aves.

flexagoon avatar flexagoon commented on June 13, 2024

How do all the FOSS map apps that use OSM do it? Are they basically just cheating?

What apps are you talking about? The most popular mobile OSM apps are Maps.Me/Organic Maps and OsmAnd, and they both use their own tile servers

from aves.

strider72 avatar strider72 commented on June 13, 2024

It's entirely possible "they host their own copies" is the answer

from aves.

flexagoon avatar flexagoon commented on June 13, 2024

@deckerst do you know how much resources OSM tileservers consume? If it's not too resource heavy, then I can host a tileserver for you on my RasPi

from aves.

deckerst avatar deckerst commented on June 13, 2024

It's kind of you to suggest, but I'd rather not depend on an individual. Anyway, I've prepared a flavor of the app (for the next release, likely next week) that should satisfy Izzy's criteria.

from aves.

flexagoon avatar flexagoon commented on June 13, 2024

It's kind of you to suggest, but I'd rather not depend on an individual. Anyway, I've prepared a flavor of the app (for the next release, likely next week) that should satisfy Izzy's criteria.

Yeah, I've seen that, that's great. Tho I dont know how good Izzy will be in the long run, since I saw that you plan to implement some ML stuff in the future, and that will increase the app size which is already almost too big for Izzy

from aves.

deckerst avatar deckerst commented on June 13, 2024

The APK size limit for Izzy is 30 MB. Actually, the universal APK of Aves is already too big, that's why the Izzy flavoured app is built as split APKs (one per ABI). The split APK for armeabi-v7 currently sits at 13.3 MB.

As for ML, it's likely to be via ML Kit (the on-devices API from Google) so that it does not cost me anything, and it's already available to many people. I believe the ML models are not necessarily bundled with the app, so the file size is probably not the issue here. Rather, it will increase the number of non-free dependencies! We'll see. I don't know when I'll get to these features anyway.

from aves.

flexagoon avatar flexagoon commented on June 13, 2024

it will increase the number of non-free dependencies!

This and also it'll break those features on De-Googled devices. So yeah, I suggest agains MLKit but unfortunately I'm also not aware of any opensource face recognition libraries (I only know Tesseract for text recognition)

Edit: oh wait, there's OpenCV

from aves.

deckerst avatar deckerst commented on June 13, 2024

Could you expand on the "De-Googled devices"? Do you mean devices where Google services are not possibly available (because of diplomacy or industry issues), or devices where the device owner decided to boycott the company?

from aves.

flexagoon avatar flexagoon commented on June 13, 2024

I mean both, but mainly the second case, because those (including me) are one of the main use cases for using opensource apps. Ppl who use custom ROMs like LineageOS, CalyxOS, GrapheneOS, etc.

from aves.

deckerst avatar deckerst commented on June 13, 2024

I'm afraid we'll have a fundamental divergence of opinion about the topic. I open-source my code because I have no reason to close-source it. If possible I also use open-source code, but the priority to me is the resulting app, not an ideology. In other words: I do not develop an "open-source app", but I develop an "app" and that app happens to be mostly open-source.

To get back to the Google services, I think the way multiple apps can all benefit from the same set of on-devices services is neat. No need for each app to be bloated with various versions of large libraries. As far as I know, other ecosystems (like Huawei) provide similar on-devices services and I'm willing to make alternate versions tailored to these ecosystems (if there's demand).

As for free/libre software, I'm only vaguely aware of microG (which seems a brilliant idea but probably doesn't cover this). Are there ML components on the custom ROMs you mentioned? Is there a way for apps to use them without shipping their own versions?

from aves.

strider72 avatar strider72 commented on June 13, 2024

CalyxOS optionally runs microG, and Lineage can do so as well

from aves.

strider72 avatar strider72 commented on June 13, 2024

it will increase the number of non-free dependencies!

This and also it'll break those features on De-Googled devices. So yeah, I suggest agains MLKit but unfortunately I'm also not aware of any opensource face recognition libraries (I only know Tesseract for text recognition)

Edit: oh wait, there's OpenCV

I'm confused. When did face recognition enter the conversation? Does this app use face recognition?

from aves.

flexagoon avatar flexagoon commented on June 13, 2024

When did face recognition enter the conversation? Does this app use face recognition?

@strider72 it doesnt, but deckerst said that in the future Aves may have object and face recognition with Google ML Kit.

The discussion started here:
#29 (comment)

from aves.

flexagoon avatar flexagoon commented on June 13, 2024

By the way @deckerst, sorry for replying to a closed issue, but I've noticed that the Izzy flavour uses leaflet instead of Google Maps. Why does the Izzy version still have a dependency on Google Maps api then?

from aves.

deckerst avatar deckerst commented on June 13, 2024

sorry for replying to a closed issue

No worries, feel free to voice your opinion on any issue, open or closed.

Both flavours use the same set of maps : Google, Humanitarian OSM and the Stamen ones. Nothing has changed (unless I messed up in a surprising way!). And I already explained why having Google as the default is important, given that the others run on donation or good will.

Oh but maybe I know what's happening... If the Google services are not available on your device, Aves automatically hides the Google maps from the available layers, and picks another one randomly. But if you run the same APK on a device that has the Google services, the Google maps options should show up and be used as default. Were the Google Map layers available for you before with Aves v1.5.4 but not anymore with the Izzy flavour of Aves v1.5.5?

from aves.

alexanderadam avatar alexanderadam commented on June 13, 2024

I'll close this issue. For distribution on F-Droid proper, I explained in the comments above the reasons why it's not happening. If you have ideas for workarounds that do not involve self-hosting or removing features, feel free to reach out.

I'm not quite sure but if I understood this situation correctly, the only thing that's left would be this:

Firebase is not actually what's blocking me now. I've discovered that F-Droid cannot handle API keys as a secret.

Maybe a simple option to put an own API key in the settings could be the solution. Unless the key isn't available, the map button could be disabled.

Also I have the feeling that aves wouldn't cause too much traffic on OSM, would it?

I really love aves and it would seriously be great to have in on the official F-Droid repos.

from aves.

alexanderadam avatar alexanderadam commented on June 13, 2024

I wanted to create a fully FOSS fork of Aves and publish it to F-Droid

This sounds great but wouldn't it better if you'd rather provide PRs to the origin repo?
This way users could profit from fixes in both apps and increases the likelihood of having contributors at one place.

from aves.

deckerst avatar deckerst commented on June 13, 2024

Maybe a simple option to put an own API key in the settings could be the solution.

Let's think about regular users, who do not mind using the Google Maps services already on their device. Why would Aves force them to create their own API key to use them?

As for users who do not have the Google Maps services on their device, Aves already hides related features.

Anybody can use F-Droid to download and update the app, via the Izzy repo. I don't understand what the problem is.

create a fully FOSS fork of Aves and publish it to F-Droid (only if @deckerst is fine with that, of course)

If it's legal it's fine, you don't need my permission. That said, you won't get my blessing, as my opinion is the following: from a product perspective, the copycat culture is detrimental. Forking to provide a new product (with a new vision and active development) is great! But forking to provide the same product with tweaks is noisy: you get a dilution of product identity just to please a few vocal users. These few users do not represent users in general, so it's a shame that they have so much influence on what's visible on alternative stores like F-Droid.

As I said, this is my opinion, but you're free to fork and do whatever. Beauty of open-source.

from aves.

deckerst avatar deckerst commented on June 13, 2024

Maybe you're right. In any case, a FOSS believer will eventually do it so it might as well be you, being understanding and constructive as you are.

I like the concept of F-Droid repositories, like IzzyOnDroid, because it allows people to decide for themselves what kind of app they want, instead of being served on the main repository degraded "pure FOSS" versions of legitimate apps. I value freedom of choice and thinking in nuances, so this idea of purity is concerning to me.

from aves.

deckerst avatar deckerst commented on June 13, 2024

the app does not connect to GMaps directly but "just" to Mapbox. I'd really love to be "degraded to pure FOSS" please as you've put it, and have OSM instead

Aves does not use Mapbox, i wonder what makes you think so. Also, FOSS believers often present Google Maps and OSM as exclusive either-or offerings, but i do not think that way. Aves offers both Google Maps layers (if the device has the Google services installed) and some layers that use OSM tile data. If someone wants to use Aves without Google Maps they already can. They switch to another layer and move on.

Screenshot_20221103_133257_Aves

from aves.

IzzySoft avatar IzzySoft commented on June 13, 2024

Aves does not use Mapbox, i wonder what makes you think so.

2022-11-03_14 39 59

Thinking about it: That might be microG replacing GMaps in my case, so error in thinking on my end.

If someone wants to use Aves without Google Maps they already can.

Oh, nice – I wasn't aware of that (maybe we should point that out in the app description). Where can one perform that switch? I mean, make it the default before "something is called" (found it only in the info map itself, not in the global settings). And is it possible to use/define other OSM layers (e.g. Standard or Γ–PNV – cycling & Co would be overdoing it I guess) as well? Still:

Offending libs:
---------------
* Google Maps API (/com/google/android/gms/maps): NonFreeDep,NonFreeNet
* Google Mobile Services (/com/google/android/gms): NonFreeDep
* Google Maps for Flutter (/io/flutter/plugins/googlemaps): NonFreeNet

3 offenders.

The first 2 are non-free (proprietary) libs included with the app πŸ€·β€β™‚οΈ (just stating the obvious, no offense meant of course)

And that said: the more I discover inside Aves, the more I like it πŸ˜ƒ

from aves.

IzzySoft avatar IzzySoft commented on June 13, 2024

but I'm careful as there are already a lot of settings

Yes, that's often the conflict. A possible alternative would be allowing to set a layer before the "first call" – i.e. when it would be used for the first time (eg using a popup, as if the user had triggered the layer selector manually).

add custom layers

That sounds cool, thanks! I personally mostly miss the "standard layer", but custom layers indeed would unlock a lot of potential.

I explained above for original OSM tiles

Scrolling up I couldn't find the reference (will try Ctrl-F next – ah, there; wasn't there something with many custom/self-hosted tile servers being added meanwhile? And wouldn't the danger to be locked-out apply to Google as well? I don't dare asking to make that an option to select from, we just had that question. But if each user could use their own API key, that'd be covered again, yeah), but noticed another remark: I hope you won't add ML Kit, as that'd be another proprietary dependency…

from aves.

seniorm0ment avatar seniorm0ment commented on June 13, 2024

Not sure what I'm missing I skimmed the comments.
However if the non-free dependencies and non-free network services non-features could be fixed (removed) for a completely libre experience I'd install the app in a heartbeat.
Sounds like that is what is attempting to be done?

from aves.

deckerst avatar deckerst commented on June 13, 2024

Sounds like that is what is attempting to be done?

@seniorm0ment not by me. If people have the Google Mobile Services installed on their device, i don't see why Aves wouldn't connect to them.

from aves.

IzzySoft avatar IzzySoft commented on June 13, 2024

@deckerst I guess what @seniorm0ment was pointing at is that

Offending libs:
---------------
* Google Maps API (/com/google/android/gms/maps): NonFreeDep,NonFreeNet
* Google Mobile Services (/com/google/android/gms): NonFreeDep
* Google Maps for Flutter (/io/flutter/plugins/googlemaps): NonFreeNet

3 offenders.

will make an inclusion at F-Droid.org impossible. And as those libraries are proprietary, nobody but their developers can say for sure what they really do. Some of us have a "native mistrust" there – Google isn't exactly known as "the privacy respecters" but rather "the data collectors" πŸ˜‰

Which is also why I asked for that popup before showing a map for the first time:

A possible alternative would be allowing to set a layer before the "first call" – i.e. when it would be used for the first time (eg using a popup, as if the user had triggered the layer selector manually).

Would you consider that, maybe – so no data goes that way "by default" at least? Having GMaps selected as default would make it a single tap for those who don't care (or even prefer GMaps here), while us privacy folks would have a choice and then only need 2 taps (select OSM, confirm). A single time, on first call only. After that, the selection would be remembered as it is now. Should not be too hard I guess (in my naΓ―vity I imagine that configuration field being NULL initially, thus prompting the described popup, and after the popup was confirmed it has a value).

Of course a "full floss flavor" would be even better – but that might also be a lot of work. Thinking aloud: if someone provided that flavor as PR, would you welcome it? Just to clarify: "extra flavor", so your current build would stay but you additionally could provide a FOSS build. If so, we could open an issue for that to be marked with an "help wanted" label – and I'd even make a "service call" on the Fediverse to hopefully attract potential supporting devs. If it works out, the FOSS build could be provided via F-Droid.org, while the current build could remain with my repo (to e.g. make switching from Play easy – which can be quite useful when some update gets stuck in their review, which I've heard is not exactly a rare case). To avoid confusion, the FOSS flavor could have a .foss or .fdroid appended to the applicationId even.

from aves.

deckerst avatar deckerst commented on June 13, 2024

@IzzySoft the libre flavour is ready, but i work with applicationIdSuffixes and other weirdness in the gradle files, so I'd like to check things further with you. Would you mind emailing me to continue and get it to f-droid (without spamming everybody here)?

from aves.

IzzySoft avatar IzzySoft commented on June 13, 2024

Thanks @deckerst – and let me have a look:

A "fat" APK for this flavour is already built and attached to the release.

Cool! I just checked to make sure: my updater currently is nailed to only accept the ApkMatch: /izzy-armeabi-v7a/i (my repo cannot handle multiple APKs per release (yet) so I usually pick the one with the widest compatibility, which ATM is armeabi), so no conflicts.

The gradle file has been modified to make sure that all the proprietary plugins and dependencies are guarded depending on flavours, but I've played with fdroidserver and it yields false positives, detecting google/crashlytics/huawei stuff as problematic even though they are not used for the libre flavour.

Not sure how exactly you've set that up. At F-Droid's RFP repo that would be even "expected behavior" as issuebot there does not know about the flavors (how could it, as there's no way to specify any). That's usually "fixed" with the MR, where the build recipe specifies the flavor. But then, for some reason my library scanner still reports GMS & GMaps to be detected, so something must be in there. Using apktool I've extracted the smali, and indeed there's a directory for /com/google/android/gms containing auth, common, dynamite and maps – all with "code" inside, so not just stubs. I'm not familiar enough with Flutter to investigate the cause. flutter build apk -t lib/main_libre.dart --flavor libre definitely should take care to build the specified flavor (at F-Droid we usually run flutter config --no-analytics before pub get all to make sure it keeps the analytics stuff out – but as I didn't detect any of that here, that seems to be not needed).

Looking at the scripts you've listed, my guess is you include Maps (plugins/aves_map is not removed), which most likely pulls in Google Maps for Flutter – which then pulls in GMS as GMaps depends on it. Could that be?

Nevertheless: I'd recommend going ahead and opening an RFP with F-Droid. As you've already worked with fdroidserver, you might as well jump that step and directly open a merge request with your *.yml at fdroiddata. Someone with deeper Flutter knowledge will hopefully find time to find out and help around.

from aves.

deckerst avatar deckerst commented on June 13, 2024

When I run your tool on the izzy and libre apk bundled with the v1.7.5 release I get this:

tibo@redstart:~/code$ scanapk ~/Downloads/app-izzy-armeabi-v7a-release.apk 
W: Cant find 9patch chunk in file: "aO.9.png". Renaming it to *.png.
W: Cant find 9patch chunk in file: "Nk.9.png". Renaming it to *.png.
W: Cant find 9patch chunk in file: "s3.9.png". Renaming it to *.png.
W: Cant find 9patch chunk in file: "jZ.9.png". Renaming it to *.png.
W: Cant find 9patch chunk in file: "sn.9.png". Renaming it to *.png.
W: Cant find 9patch chunk in file: "uW.9.png". Renaming it to *.png.
W: Cant find 9patch chunk in file: "Tx.9.png". Renaming it to *.png.
W: Cant find 9patch chunk in file: "Pb.9.png". Renaming it to *.png.
W: Cant find 9patch chunk in file: "51.9.png". Renaming it to *.png.
W: Cant find 9patch chunk in file: "h-.9.png". Renaming it to *.png.
W: Cant find 9patch chunk in file: "m3.9.png". Renaming it to *.png.
W: Cant find 9patch chunk in file: "Hi.9.png". Renaming it to *.png.
W: Cant find 9patch chunk in file: "rj.9.png". Renaming it to *.png.
W: Cant find 9patch chunk in file: "z5.9.png". Renaming it to *.png.
W: Cant find 9patch chunk in file: "o1.9.png". Renaming it to *.png.
W: Cant find 9patch chunk in file: "YM.9.png". Renaming it to *.png.
No libsmali.jsonl entry for /com/shaded/fasterxml/jackson, this library will be ignored.

Libraries detected:
-------------------
* Android Support v4 (/android/support/v4): Development Framework, Apache-2.0
* AndroidX Activity (/androidx/activity): Utility, Apache-2.0
* Android Jetpack Annotations (/androidx/annotation): Utility, Apache-2.0
* Androidx Core (/androidx/core): Utility, Apache-2.0
* AndroidX Fragment (/androidx/fragment): UI Component, Apache-2.0
* Lifecycle (/androidx/lifecycle): Utility, Apache-2.0
* Android Multi Dex Library (/androidx/multidex): Utility, Apache-2.0
* Android Activity Saved State (/androidx/savedstate): Utility, Apache-2.0
* Startup (/androidx/startup): Utility, Apache-2.0
* Android Jetpack VersionedParcelable (/androidx/versionedparcelable): Utility, Apache-2.0
* Jetpack WindowManager Library (/androidx/window): Utility, Apache-2.0
* Glide (/com/bumptech/glide): Utility, BSD-2-Clause
* Google Maps API (/com/google/android/gms/maps): Map, Proprietary; NonFreeDep,NonFreeNet
* Google Mobile Services (/com/google/android/gms): Development Framework, Proprietary; NonFreeDep
* Flutter (/io/flutter): Development Framework, BSD-3-Clause
* Google Maps for Flutter (/io/flutter/plugins/googlemaps): Map, BSD-3-Clause; NonFreeNet
* url_launcher (/io/flutter/plugins/urllauncher): Utility, BSD-3-Clause
* flutter printing (/net/nfet/flutter/printing): Utility, Apache-2.0
* Android-TiffBitmapFactory (/org/beyka/tiffbitmapfactory): Utility, MIT
* Java MP4 Parser (/org/mp4parser): Utility, Apache-2.0
* ijkplayer (/tv/danmaku/ijk/media): Utility, LGPL-2.1-or-later

Offending libs:
---------------
* Google Maps API (/com/google/android/gms/maps): NonFreeDep,NonFreeNet
* Google Mobile Services (/com/google/android/gms): NonFreeDep
* Google Maps for Flutter (/io/flutter/plugins/googlemaps): NonFreeNet

3 offenders.

tibo@redstart:~/code$ scanapk ~/Downloads/app-libre-release.apk 
No libsmali.jsonl entry for /com/shaded/fasterxml/jackson, this library will be ignored.

Libraries detected:
-------------------
* Android Support v4 (/android/support/v4): Development Framework, Apache-2.0
* AndroidX Activity (/androidx/activity): Utility, Apache-2.0
* Android Jetpack Annotations (/androidx/annotation): Utility, Apache-2.0
* Androidx Core (/androidx/core): Utility, Apache-2.0
* AndroidX Fragment (/androidx/fragment): UI Component, Apache-2.0
* Lifecycle (/androidx/lifecycle): Utility, Apache-2.0
* Android Multi Dex Library (/androidx/multidex): Utility, Apache-2.0
* Android Activity Saved State (/androidx/savedstate): Utility, Apache-2.0
* Startup (/androidx/startup): Utility, Apache-2.0
* Android Jetpack VersionedParcelable (/androidx/versionedparcelable): Utility, Apache-2.0
* Jetpack WindowManager Library (/androidx/window): Utility, Apache-2.0
* Glide (/com/bumptech/glide): Utility, BSD-2-Clause
* Flutter (/io/flutter): Development Framework, BSD-3-Clause
* url_launcher (/io/flutter/plugins/urllauncher): Utility, BSD-3-Clause
* flutter printing (/net/nfet/flutter/printing): Utility, Apache-2.0
* Android-TiffBitmapFactory (/org/beyka/tiffbitmapfactory): Utility, MIT
* Java MP4 Parser (/org/mp4parser): Utility, Apache-2.0
* ijkplayer (/tv/danmaku/ijk/media): Utility, LGPL-2.1-or-later

No offending libs found.

The izzy flavour has the usual offenders and the libre flavour has no offending libs, as expected.

About F-Droid and gradle, it seems F-Droid can usually understand flavours when the yml file declares the flavour used, but that's only a thing for regular java/kotlin projects. For Flutter projects, F-Droid doc says the yml shouldn't specify the gradle favour, and instead just include it in the flutter build command. I guess that's why the F-Droid check script fails with false positives. And it's not only the GMS stuff. For example, their script fails because it doesn't know the Maven repo https://developer.huawei.com/repo/ (which is only used with the huawei flavour). Anyway, I will submit the a packaging request and let them deal with it.

from aves.

IzzySoft avatar IzzySoft commented on June 13, 2024

Great – and all pipelines passed, congrats! I've already started the review – but rather wait for my team mate concerning the ABI splits. He might also come up with ideas on reproducible builds: if you like those, that would be premium – if not, they are not mandatory.

from aves.

strider72 avatar strider72 commented on June 13, 2024

Suggestion: as people are unlikely to simultaneously have the libre and "regular" versions installed, you can just have the icon labelled "Aves" without the "libre".

Having said that, thank you for releasing on F-Droid! :-)

from aves.

IzzySoft avatar IzzySoft commented on June 13, 2024

@strider72 you'd never have to test things I guess, or wanted to compare? I did, and was quite glad that the icons had labels so I knew which was which πŸ˜‰ But admitted, such cases are rare.

from aves.

strider72 avatar strider72 commented on June 13, 2024

Heh. I've compared different apps all labelled 'Contacts". But I see your point. :-)

from aves.

IzzySoft avatar IzzySoft commented on June 13, 2024

@strider72 those at least (mostly) have different icons (unless they've kept the default Andy-Bot). At one point I had 3 different versions of Aves on the same device. Where it not for the different icons I would not have known which to delete πŸ™ˆ Well, actually I use adb uninstall <packageName> so I wasn't really lost at that point. But if you e.g. want to check whether a certain tasks works differently in a different build, different icons are really helpful.

from aves.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    πŸ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. πŸ“ŠπŸ“ˆπŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❀️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.