Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Release it on Fdroid #4

Open
spazziale opened this issue Dec 9, 2023 · 34 comments
Open

Release it on Fdroid #4

spazziale opened this issue Dec 9, 2023 · 34 comments

Comments

@spazziale
Copy link

No description provided.

@farfromrefug
Copy link
Collaborator

@marc0x1 thanks but no plan yet. it is already on izzyondroid

@spazziale
Copy link
Author

@marc0x1 thanks but no plan yet. it is already on izzyondroid

Thanks anyway! Keep in mind that izzyondroid is kinda "unofficial" and the fdroid main repo is more popular

PS: Your app is fantastic

@farfromrefug
Copy link
Collaborator

farfromrefug commented Dec 10, 2023

@marc0x1 you are right and to be honest I have 2 issues with fdroid even though I LOVE thé concept:

  • it s not really eco friendly. all apps and all their dependencies (which can be pretty big) have to be rebuild on each release. i understand why but it really bugs me. i much prefer the trust approach that izzyondroid rely on.
  • I use a cross platform framework which is not yet 100% supported in frdoid build process

and thank you for the kind words! makes want to do more open source ;)

@NA0341
Copy link

NA0341 commented Dec 17, 2023

Yeah getting reproducible builds on the F-Droid repo might be challenging.

There needs to be an easier way for users to learn about other F-Droid repos and access them.

@locness3
Copy link

perhaps @IzzySoft could help here :)

@IzzySoft
Copy link

With what? Any issues with the app in my repo? If it's about F-Droid.org, I'm currently not active there.

@farfromrefug
Copy link
Collaborator

@IzzySoft no issue with the app on izzyondroid. everything perfect !

@farfromrefug
Copy link
Collaborator

@IzzySoft I hâve one question about metadata. now that to have on this repo separated metadata in two inside fast lane/metadata, how does your updater knows which folder to pick for com.akylas.documentscanner app?
you told you supported it buy I dont see how it would pick the right one .
thanks

@IzzySoft
Copy link

That's a configuration item on my end. If I shall pick a specific one, let me know which. Other than F-Droid where you need to put it into a specific location or it won't be fetched, in my repo I can define any URL as "Fastlane root" (i.e. the directory where the locale-specific stuff starts; usually /fastlane/metadata/android).

@farfromrefug
Copy link
Collaborator

farfromrefug commented Dec 21, 2023

@IzzySoft OK thanks. so this is the path for the new metadata ( for com.akylas.documentscanner): https://github.com/Akylas/com.akylas.documentscanner/tree/master/fastlane%2Fmetadata%2Fcom.akylas.documentscanner%2Fandroid

i am about to release my second app from that repo. will let you know to see If izzyondroid can pick up both apps
thanks again

@IzzySoft
Copy link

OK, I've adjusted the path here accordingly. But as soon as the second app shows up, we have quite another problem: your tag names. I have no idea if my script can work with the naming pattern you use there. So it has no way to keep the releases of the two apps apart if I cannot pin it to a tag name pattern. Separate apps should use separate repositories. Such mixes lead to complications, earlier or later. And if on each release (or on each second release) I get error mails from my updater and have to adjust manually, I will simply have to disable updates.

Wuff. Looks like I've underestimated myself there. I've adjusted the YAML for your app here to

AutoUpdateMode: Version ^com.akylas.documentscanner/.+/%c$
UpdateCheckMode: Tags

so it should only consider tags matching that regular expression. Then I manually triggered an update check:

$ iod repo get com.akylas.documentscanner
com.akylas.documentscanner: looking for 'https://api.github.com/repos/Akylas/com.akylas.documentscanner/releases'
com.akylas.documentscanner: checking tag 'com.akylas.documentscanner/android/github/1.2.5/15'
com.akylas.documentscanner: lastRelNo set to '15', checking for files
com.akylas.documentscanner: Upstream file date (2023-12-21 22:20) is newer than ours (2023-12-21 19:46).
com.akylas.documentscanner: returning ['15','https://github.com/Akylas/com.akylas.documentscanner/releases/download/com.akylas.documentscanner/android/github/1.2.5/15/app-arm64-v8a-release.apk',1703193609]
com.akylas.documentscanner: 14/15, https://github.com/Akylas/com.akylas.documentscanner/releases: https://github.com/Akylas/com.akylas.documentscanner/releases/download/com.akylas.documentscanner/android/github/1.2.5/15/app-arm64-v8a-release.apk
- Grabbing update for com.akylas.documentscanner: OK
- Checking 'repo/com.akylas.documentscanner_15.apk' for libraries and malware …
com.akylas.documentscanner: check if repo contains FUNDING.yml
com.akylas.documentscanner: looking for 'https://api.github.com/repos/Akylas/com.akylas.documentscanner/contents/.github'
com.akylas.documentscanner: FUNDING.yml already up-to-date.
com.akylas.documentscanner: calling 'getFastlaneMeta(github,[host:github.com,owner:Akylas,repo:com.akylas.documentscanner,path:/fastlane/metadata/com.akylas.documentscanner/android])'
com.akylas.documentscanner: FastlaneFeatures title,shortdesc,fulldesc,changelogs,icon,featureGraphic,screenshots
com.akylas.documentscanner: looking for 'https://api.github.com/repos/Akylas/com.akylas.documentscanner/contents/fastlane%2Fmetadata%2Fcom.akylas.documentscanner%2Fandroid'
com.akylas.documentscanner: looking for 'https://api.github.com/repos/Akylas/com.akylas.documentscanner/contents/fastlane%2Fmetadata%2Fcom.akylas.documentscanner%2Fandroid%2Fen-US'
com.akylas.documentscanner: looking for 'https://api.github.com/repos/Akylas/com.akylas.documentscanner/contents/fastlane%2Fmetadata%2Fcom.akylas.documentscanner%2Fandroid%2Fen-US%2Fchangelogs'
com.akylas.documentscanner: looking for 'https://api.github.com/repos/Akylas/com.akylas.documentscanner/contents/fastlane%2Fmetadata%2Fcom.akylas.documentscanner%2Fandroid%2Fen-US%2Fimages'
com.akylas.documentscanner: looking for 'https://api.github.com/repos/Akylas/com.akylas.documentscanner/contents/fastlane%2Fmetadata%2Fcom.akylas.documentscanner%2Fandroid%2Fen-US%2Fimages%2FphoneScreenshots'
com.akylas.documentscanner: looking for 'https://api.github.com/repos/Akylas/com.akylas.documentscanner/contents/fastlane%2Fmetadata%2Fcom.akylas.documentscanner%2Fandroid%2Ffr-FR'
com.akylas.documentscanner: looking for 'https://api.github.com/repos/Akylas/com.akylas.documentscanner/contents/fastlane%2Fmetadata%2Fcom.akylas.documentscanner%2Fandroid%2Ffr-FR%2Fchangelogs'
com.akylas.documentscanner: looking for 'https://api.github.com/repos/Akylas/com.akylas.documentscanner/contents/fastlane%2Fmetadata%2Fcom.akylas.documentscanner%2Fandroid%2Ffr-FR%2Fimages'
com.akylas.documentscanner: looking for 'https://api.github.com/repos/Akylas/com.akylas.documentscanner/contents/fastlane%2Fmetadata%2Fcom.akylas.documentscanner%2Fandroid%2Ffr-FR%2Fimages%2FphoneScreenshots'
com.akylas.documentscanner: checking locale 'en-US'
com.akylas.documentscanner: updating 'metadata/com.akylas.documentscanner/en-US/full_description.txt'
com.akylas.documentscanner: updating 'metadata/com.akylas.documentscanner/en-US/short_description.txt'
com.akylas.documentscanner: updating 'metadata/com.akylas.documentscanner/en-US/title.txt'
com.akylas.documentscanner: updating 'metadata/com.akylas.documentscanner/en-US/changelogs/15.txt' from '15.txt'
com.akylas.documentscanner: updating 'repo/com.akylas.documentscanner/en-US/featureGraphic.png'
com.akylas.documentscanner: updating 'repo/com.akylas.documentscanner/en-US/icon.png'
com.akylas.documentscanner: updating 'repo/com.akylas.documentscanner/en-US/phoneScreenshots/1_en-US.png'
com.akylas.documentscanner: updating 'repo/com.akylas.documentscanner/en-US/phoneScreenshots/2_en-US.png'
com.akylas.documentscanner: updating 'repo/com.akylas.documentscanner/en-US/phoneScreenshots/3_en-US.png'
com.akylas.documentscanner: cross-checking for obsolete screenshots
com.akylas.documentscanner: screenshots in Fastlane: 1_en-US,2_en-US,3_en-US
com.akylas.documentscanner: local screenshots checked: 1_en-US,2_en-US,3_en-US
com.akylas.documentscanner: checking locale 'fr-FR'
com.akylas.documentscanner: updating 'metadata/com.akylas.documentscanner/fr-FR/full_description.txt'
com.akylas.documentscanner: updating 'metadata/com.akylas.documentscanner/fr-FR/short_description.txt'
com.akylas.documentscanner: updating 'metadata/com.akylas.documentscanner/fr-FR/title.txt'
com.akylas.documentscanner: updating 'metadata/com.akylas.documentscanner/fr-FR/changelogs/15.txt' from '15.txt'
com.akylas.documentscanner: updating 'repo/com.akylas.documentscanner/fr-FR/featureGraphic.png'
com.akylas.documentscanner: updating 'repo/com.akylas.documentscanner/fr-FR/icon.png'
com.akylas.documentscanner: updating 'repo/com.akylas.documentscanner/fr-FR/phoneScreenshots/1_en-US.png'
com.akylas.documentscanner: updating 'repo/com.akylas.documentscanner/fr-FR/phoneScreenshots/2_en-US.png'
com.akylas.documentscanner: updating 'repo/com.akylas.documentscanner/fr-FR/phoneScreenshots/3_en-US.png'
com.akylas.documentscanner: cross-checking for obsolete screenshots
com.akylas.documentscanner: screenshots in Fastlane: 1_en-US,2_en-US,3_en-US
com.akylas.documentscanner: local screenshots checked: 1_en-US,2_en-US,3_en-US

I didn't think this would work, but it obviously does – as the log clearly shows it found versionCode: 15 (the %c was matched against the 15 from the tag name). So if you wish, I could even try

AutoUpdateMode: Version ^com.akylas.documentscanner/.+/github/[^/]+/%c$
UpdateCheckMode: Tags

to skip the betas. Looks like I did a better job with my framework than I knew 🙈 Guess I just never encountered such a tag naming pattern before to test it against…

@farfromrefug
Copy link
Collaborator

@IzzySoft amazing work! yes that github tag filter is perfect!
i know one repo for multiple apps is not easy but it has its advantages. just like monorepo which is now quite common in the JS world
thanks again

@IzzySoft
Copy link

If it really works and we do not run into issues, I can hardly object 🙈 So do you want me to nail it to the RegEx above (including the /github/ part)?

@farfromrefug
Copy link
Collaborator

@IzzySoft Yes sorry thought you already did start using it. It look perfect. How do you handle alpha/test version? I am thinking of sometimes create a test release just for github with sentry enabled. I would prefer you would not pick it up.
I guess i could use github_test instead of github in the tag

@IzzySoft
Copy link

thought you already did start using it.

No, I wasn't sure if that#s what you wanted 😉 Is set up now, and manually triggering an update seems to confirm it works. For real we'll see that as soon as another tag name pattern shows up.

How do you handle alpha/test version? I am thinking of sometimes create a test release just for github with sentry enabled. I would prefer you would not pick it up.

Easiest way to ensure that would be making those "pre-releases". Those are currently skipped for your app. Another variant is using a tag name that doesn't match the RegEx above. If you e.g. use /github-debug/ or, as you already mentioned, /github_test/ instead of /github/, the tag/release would be ignored as well.

@farfromrefug
Copy link
Collaborator

farfromrefug commented Dec 28, 2023

@IzzySoft pre release is perfect! thank you !
there is a new version up. we LL see if it picks it up
EDiT : actually no it is a pré release...

@IzzySoft
Copy link

there is a new version up. we LL see if it picks it up

That one was just picked up when I tested the updated RegEx with my comment above 😉

$ iod repo get com.akylas.documentscanner
com.akylas.documentscanner: looking for 'https://api.github.com/repos/Akylas/com.akylas.documentscanner/releases'
com.akylas.documentscanner: checking tag 'com.akylas.documentscanner/android/github/1.2.11/21'
com.akylas.documentscanner: lastRelNo set to '21', checking for files
com.akylas.documentscanner: Upstream file date (2023-12-27 21:36) is newer than ours (2023-12-27 19:36).
com.akylas.documentscanner: returning ['21','https://github.com/Akylas/com.akylas.documentscanner/releases/download/com.akylas.documentscanner/android/github/1.2.11/21/app-arm64-v8a-release.apk',1703709383]
com.akylas.documentscanner: 20/21, https://github.com/Akylas/com.akylas.documentscanner/releases: https://github.com/Akylas/com.akylas.documentscanner/releases/download/com.akylas.documentscanner/android/github/1.2.11/21/app-arm64-v8a-release.apk
- Grabbing update for com.akylas.documentscanner: OK
- Checking 'repo/com.akylas.documentscanner_21.apk' for libraries and malware …
…

actually no it is a pré release...

I do not see any pre-release (apart from 1.2.12 build 22, 4 days ago). As you know when you tag such: just check after 7 pm UTC (winter; 6 pm UTC summer) after tagging and you should see if it was picked.

@farfromrefug
Copy link
Collaborator

@IzzySoft awesome. perfect then!

@licaon-kter
Copy link

@NA0341

Yeah F-Droids enforcement that they build & sign the packages is rather questionable.

that's not true: https://f-droid.org/docs/Inclusion_How-To/#reproducible-builds

also a rather odd thing to say when this app is signed by Google in their store 🤷

While writing, I got the idea that you could publish an empty dummy package on F-Droid that get's updated over a regularly running CI pipeline (so the app get's pushed up) - and avertises the real application in the IzziOnDroid - Repo (with all repo details in the description).
That would allow you to advertise without having to care about issues or requests arising from users getting it from F-Droid.
And below you can write as to why you do not provide this software on F-Droid repo. 👍
I hope I could help you with this

malicious actions towards another FOSS project? Please stop helping.

@farfromrefug
Copy link
Collaborator

@licaon-kter not sure I understand the linked page completely. does that mean we can publish apks directly on f droid without fdroid server rebuilding it all (with dependencies) ?
I love everything about fdroid and their approach. my only concern is why the energy consumption and the complexity of building a Nativescript app

@licaon-kter
Copy link

@farfromrefug no, F-Droid main repo hosts only FOSS apps. You need to actually be able to build it to say "yes, it is FOSS".

If it's reproducible we can use the package signed by the developer.

@farfromrefug
Copy link
Collaborator

@licaon-kter well it is more than building it. it is building it and all its deps. which is not always easy and use a lot of CPU power on each new build. this is why I am sticking with only Izzy for all my Nativescript apps (which are 100% Foss)

@NA0341
Copy link

NA0341 commented Mar 9, 2024

@licaon-kter said:

that's not true: https://f-droid.org/docs/Inclusion_How-To/#reproducible-builds

It is true. They still build and sign it. But they now offer to sign it with Your key instead.
They do offer Reproducible builds as mentioned above.

also a rather odd thing to say when this app is signed by Google in their store 🤷

If you get things from Google, you sign up for several things you as the user should be aware of.
But afaik applications on the Play Store can be signed by the developers. I can install Updates from Google Play for applications I got and installed directly from the Developer. The Signatures are the same. Take Vivaldi for Android as an example.

malicious actions towards another FOSS project? Please stop helping.

A little general advice:

  • There's a big difference between words and actions.
  • If you consider sharing one's opinion, knowledge, experience to be malicious, I can tell you: the web is a place so dangerous that you'll lose sanity and go mentally ill if you stay any longer.
  • Just because someone put the FOSS, FLOSS or whatever label on their project doesn't mean it's "good".

F-Droid has several positive sides to it and can be considered a good project.
However: There's many cases where there has been a lot of controversies with F-Droid. And several of those discussions caused Devs to abandon the idea on publishing on F-Droid and telling users they don't want to get involved with a project whose owners are fixed on values which don't work well in the Software world (at least on Android), are resilient to facts and unable to adapt.

My real advice is to not get emotional when you want to achieve something. Emotions can be of great value to motivate and find new ideas. But they may make you blind, less precise and sloppy. Please keep that in mind.


As @farfromrefug mentioned, there's several challenges when having someone else build your software. Some Applications may do just fine when build by F-Droid. Others are better built by the developer itself.


I updated my previous comment to better reflect on the current subject (also for new visitors to this issue).

@licaon-kter
Copy link

licaon-kter commented Mar 9, 2024

But they now offer to sign it with Your key instead.

False, c'mon, try harder :)

But afaik applications on the Play Store can be signed by the developers

Not since Nov 2021 or so iirc...

Take Vivaldi for Android as an example.

True for older than Nov 2021, yes

there's several challenges when having someone else build your software

True, but the spirit of FOSS is to be able to do it, and not have your "helping hand" sabotaging it.

Take it this way: is it FOSS? Great. Can I build it? Ah, no, see, reasons, trust us...

Regarding your "ideas", imagine using F-Droid, wanting to install "ThisApp" and F-Droid deciding to install "DifferentApp" because "DifferentApp has developers that actually test code, not release buggy versions that they patch later".

My emotions are fine, I fail to see the fairness in the treatment, when F-Droid has an issue "oh my, so problematic", but apps are faultless always?

@NA0341
Copy link

NA0341 commented Mar 9, 2024

You're right. It is now mostly possible to publish apk's built by the developer.
(See F-Droid Docs » Reproducible Builds for example.)
Thanks for pointing that out.

Play Store & APK Signing: I checked it again. Keys on Aard2 GitHub release and Play Store version are the same. Same with Vivaldi. I compared using App Manager.
Google changed the signing back & forth a couple of times already. Maybe it is possible again to have your own signature.

Regarding your "ideas", imagine using F-Droid, wanting to install "ThisApp" and F-Droid deciding to install "DifferentApp" because "DifferentApp has developers that actually test code, not release buggy versions that they patch later".

That idea is about letting users who don't know of other repos find software that's to be found elsewhere. But I understand that this is something to be fixed by F-Droid itself (to properly notify users about other repos and available software) and that my suggestion is not a solution. So I removed it.

My emotions are fine

That's good to hear

I fail to see the fairness in the treatment, when F-Droid has an issue "oh my, so problematic", but apps are faultless always?

What do you mean by fairness?
I'm not pointing fingers at F-Droid saying "uhh, bad!" but rather share information I know to inform others.
OSS Document Scanner for example is ofc not faultless. And it doesn't nearly work as great or fast as Text Fairy.

But why would I treat it unfairly when I say that?

@licaon-kter
Copy link

@NA0341

Google changed the signing back & forth a couple of times already. Maybe it is possible again to have your own signature.

It is not, ask the developers here "Why" they chose Google to sign their APKs.

Of note, if the app is build reproducible, F-Droid can only host APKs that are NOT downloaded from Play, as those, signed by Google, would be corrupted with injected proprietary data.

But I understand that this is something to be fixed by F-Droid itself (to properly notify users about other repos and available software)

Why would it though? "Hello my name is NA0341, I'm boring so don't speak with me, speak with Izzy instead" right? That's how you work? I hope not...

But why would I treat it unfairly when I say that?

Somebody asked for its inclusion and you posted a FUD filled rant. Not sure why you did this, did F-Droid kick your dog? If you don't use F-Droid, that is fine, but others do and others might want F-Droid to build this app and host it. Can they get your permission? I hope they do.

@farfromrefug

it s not really eco friendly. all apps and all their dependencies (which can be pretty big) have to be rebuild on each release

Github servers run all the time, Izzy's servers consume power when they grep all the source repos to download APKs, Google Play servers consume serving your app etc. I do understand your concern, but it's a moot point by now.

I use a cross platform framework which is not yet 100% supported in frdoid build process

Node.js is plenty of supported, although F-Droid only hosts one NativeScript app: https://gitlab.com/fdroid/fdroiddata/-/blob/master/metadata/com.vishnuraghav.EnRecipes.yml#L115-L162

@farfromrefug
Copy link
Collaborator

farfromrefug commented Mar 9, 2024

@licaon-kter I 100% disagree with your point about energy. you are basically saying we already consume so we dont care if we consume more.
not my way of seeing life and certainly not my way of seeing the way the our industry/tech is going.
there is no small step, no small gain. everything count !

but if you both dont. mind let's stop that discussion there on github and let's keep focus on the original subject.
if you want to discuss more about all that I would happily discuss that somewhere else.

Edit : Nativescript has nothing to do with nodejs and that app on fdroid was actually not fully built but accepted mostly as is (the Nativescript runtime was not built).

@licaon-kter
Copy link

and that app on fdroid was actually not fully built but accepted mostly as is (the Nativescript runtime was not built).

So lines 91 to 106 don't build anything? Maybe I've read wrong those gradle commands then...

but if you both dont. mind let's stop that discussion there on github and let's keep focus on the original subject.

I agree, I only responded because the FUD post was unchallenged by anyone for months, as if the devs here believe the same false information.

@farfromrefug
Copy link
Collaborator

@licaon-kter it does not really build the runtime as in building the core of it. the runtime as it is built. in those lines uses pré built so libs for the actual core of the runtime which is v8.
if you want true foss for N app you need to build v8 (and we patch it!) so I will argue that app was accepted while actually using pré built library and fully building N runtime

@licaon-kter
Copy link

Then it will be reviewed and removed

@farfromrefug
Copy link
Collaborator

@licaon-kter well I hope it won't be done for the sake of the developer based on my comment. would be really unfare to him.
and it should be remember how big v8 is and how long the build takes (which comes back to my initial point).

@licaon-kter
Copy link

The rules are what they are, things slip, we try to fix them and learn from any mistakes.

@shuvashish76
Copy link

While writing, I got the idea that you could publish an empty dummy package on F-Droid that get's updated over a regularly running CI pipeline (so the app get's pushed up) - and avertises the real application in the IzziOnDroid - Repo (with all repo details in the description).

(Looks like somebody deleted their comment 👀)
Anyway this is the worst kind of advertisement. Something is proprietary or other issues... devs: lets publish a dummy but truly* FOSS promoting to download from 3rd party sources. Nice.
F-Droid has no such criteria against it, but it should be clearly prohibited, Anti-Features are not enough for these type of apps.. We the F-Droid users don't wanna use the app store filled with dummy apps.

That would allow you to advertise without having to care about issues or requests arising from users getting it from F-Droid.
And below you can write as to why you do not provide this software on F-Droid repo. 👍

If issues arising from users for F-Droid then that's the repository owner problem. There are better ways to handle it e.g. pinning an issue. Throwing the problem to F-Droid with dummy app with explanation is an severe issue. I'm sure F-Droid don't wanna handle such users asking about dummy app.
If you don't wanna publish on F-Droid that's perfectly fine but don't do these nonsense which has no usecase to F-Droid users.

@NA0341

That idea is about letting users who don't know of other repos find software that's to be found elsewhere. But I understand that this is something to be fixed by F-Droid itself (to properly notify users about other repos and available software) and that my suggestion is not a solution.

F-Droid never verify other repos, why would F-Droid promote 3rd party repos in their official client? It's the users' choice & responsibility to add/trust other repos.

@farfromrefug you may wanted to convert the issue to a discussion since they dragged unnecessary FUD topics about F-Droid.

@farfromrefug
Copy link
Collaborator

@shuvashish76 thanks for commenting. Good idea will do that when I am on my computer.
Thanks !

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

7 participants