-
Notifications
You must be signed in to change notification settings - Fork 177
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
FOSS Version #1418
Comments
Hello, This is the tasks to achieve to be able to publish on F-Droid:
Already done:
In the long term: Element X Android codebase will be used to upgrade Element Android (the existing app). So at some point this work has to be done, to be able to release the new Element Android to F-Droid |
Current status is rather clean ( ahem https://gitlab.com/fdroid/rfp/-/issues/2556#note_1593343486 ), I mean one |
I'd like to encourage you to try to realize reproducible builds. It eliminates trust in F-Droid and ensures you are in control of the published software. It avoids issues when end users are using multiple stores for updates, but the same app is signed with different keys (assuming you'd/can use the same key for the play store and F-Droid variants). Publishing to F-Droid first non-reproducible and later turning on reproducible builds has its drawbacks, a cleaner approach would be to publish reproducibly from the start. For that you have to add the required code changes (new flavor, removed unfree dependencies, only/additionally building split APKs) and publishing those APKs somewhere (GitHub releases?). And maybe some compilation adjustments to make it reproducible. |
@Mynacol think you are missing some context. If this app is repro, great. But this app will die after a while and current app (non X) will be replaced with this one. Yet, to have that reproducible then, all the current users will need to uninstall & reinstall. There's no UI that informs as such and guide the users, at least not yet. The TWIF (this week in fdroid) blog posts are used to inform about such changes but not sure everybody is RSS subscribed to that :) |
It looks like Element X is to be published to F-Droid, with support for UnifiedPush, for the release of v0.4.2:
Related PR: #2248 |
@linsui told me they (fdroid) are still waiting for Element team to publish FOSS flavor's apk, so they can do reproducible build. |
@K4LCIFER read this thread at least https://gitlab.com/fdroid/fdroiddata/-/merge_requests/13829#note_1595843143 maybe https://gitlab.com/fdroid/rfp/-/issues/2556 too |
Only another 20 thousand years... |
Hi @bmarty, from what I see in LoggedInPresenter.kt and in my tests, the UnifiedPush provider seems to be properly working now. Are there any other steps we can help you with before pinging the F-Droid team? :) |
@SamyDjemai ping who about what? https://gitlab.com/fdroid/fdroiddata/-/merge_requests/13829 |
@licaon-kter I was referencing this message which seems to be outdated: #1418 (comment) |
Expand the threads and read F-Droid feedback and ara4n's answers, that's the status I guess...
yes, a place for F-Droid to grep the versionName and versionCode |
I think that instead of hardcoding the versionName and versionCode in this repo, we could use UpdateCheckData in HTTP mode and scrape the GitHub API for latest releases. UpdateCheckMode: HTTP
UpdateCheckData: 'https://api.github.com/repos/element-hq/element-x-android/releases?per_page=1|"name": "(\d+)|.|"tag_name": "v((?:[0-9]\d*)\.(?:[0-9]\d*)\.(?:[0-9]\d*))"' This way, the release process stays unchanged, and we can dynamically fetch versionCode and versionName from the latest GitHub release |
@SamyDjemai that line yields |
This works for me:
|
I've also reworked mine with simpler matching :) UpdateCheckMode: HTTP
UpdateCheckData: https://api.github.com/repos/element-hq/element-x-android/releases/latest|"name":"(\d+)-|.|"tag_name":"v(\d+\.\d+\.\d+)" I'd suggest using I'm getting this error:
@licaon-kter would we track specific commits of the repo, or only releases? If we do the latter, we should clean up the |
I've fixed that, let me test the rest
we usually get a Tag on checkupdate and use the commit hash but, with HTTP we can't get commit... |
What if we use |
there's no this works if we just ignore versionName (high goal: https://gitlab.com/fdroid/fdroidserver/-/issues/1047) or if upstream has Tag = versionName |
But the Git tags are in the
|
yup that does it
|
Great, thanks! From what I've assessed, in order to be compliant with F-Droid's inclusion policy, we still need to do the following:
@licaon-kter do you see any other blockers? do we want reproducible builds? |
current recipe does that
not a NEED, if it's on by default or opt-out, it will get a Tracking anti-feature, if it's off by default and opt-in, it will get nothing
mostly this yes
the big IF |
Maybe reopen until those 2-3 repro issues get fixed? |
Thanks for the diff @licaon-kter .
The values are store as GitHub secret so you do not have it when you build yourself.
For the diff in Is it possible that your build chain patch the code here?
This is the same root cause for the following diffs. There is also a diff in We should not use |
https://f-droid.org/docs/Inclusion_Policy/
they need to be here in your code or in the F-Droid recipe, no secrets allowed
we can do, yes
great |
Yes, you can put the values in the F-Droid recipe, and set environment variables as described, this is fine (sorry if it was not clear). The 3 values are in the diff you provided. Alternatively, you can put the values in the |
#2911 should help on the |
@licaon-kter #2911 has been merged, so I think the plan for us is to publish F-Droid APKs for the next release on Github v0.4.14. This should occur on June 4th. On your side: change the recipe about the 2 points mentioned above: the map keys and the git branch name. Hopefully the APKs will have the reproducible build green flag. |
I've already tested the map injection fix, will test the |
@bmarty tick-tock, 4-th was gone |
@licaon-kter They just bumped the version, in a few minutes the release will be out. 4b27cda |
Started a build First issue though, I can't know the versionCode for autoupdates, we used to pick it up from the APK name in past releases, eg. https://github.com/element-hq/element-x-android/releases/tag/v0.4.13 -> 40004130.apk -> but that's not a thing in latest https://github.com/element-hq/element-x-android/releases/tag/v0.4.14 |
Ok, can rename the file. -> Done. |
Ok, thanks, the question is, do you need that file or? maybe there's a way to name it so it's usable both by F-Droid and users that drop by (eg. Obtainium etc) |
This is the universal apk for gplay variant. I just renamed it manually so it was clear. The original name is the one provided by the playstore. |
Here's the first diff log: elem0414_2.log this looks like https://f-droid.org/docs/Reproducible_Builds/#embedded-build-paths with some ways to fix it here: https://gist.github.com/obfusk/61046e09cee352ae6dd109911534b12e not sure if the AndroidManifest.xml will be fixed too once baseline is |
Given that we can't get the release files without using the api which is rate limited, can you add a version.txt with version code in it? |
This has been merge in F-Droid metadata 🎆 /close this |
It has been published. |
For me it says the signing key has changed, is that expected? |
Thanks! I was actively waiting for https://f-droid.org/packages/io.element.android.x/ to return something. |
@networkException if you installed in the past from my builds then that's expected F-Droid hosts the verified reproducible builds from upstream now. |
@bmarty it does now, it takes a bit more after the index is published for the website to be generated |
@licaon-kter Should've been from the Google Play previously. Is upstream signing these differently? |
@networkException well yes, Google signs in Play, not the developer.... they forced all developers at some point, for new apps since Nov 2021 or so |
Hi, I wanted to raise some awareness for some objectives that the Android-FOSS community would enjoy seeing. Those are:
About Nr. 2: While Element-Android has github releases that one can use, they only provide the playstore version of the app. Furthermore, the version available on fdroid often lags behind playstore by a significant timespan. You might make the argument that fdroid only receives stable versions of the app after being tested by playstore users; However for pre-releases, github already provides the necessary facilities.
I hope this could gain some traction in the early development of Element-X.
The text was updated successfully, but these errors were encountered: