-
-
Notifications
You must be signed in to change notification settings - Fork 3.1k
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
Discussion: dropping android 5&6 support #2874
Comments
First, what benefit are there to dropping android 5? It seems most of the benefits would come from dropping 5, 5.1 and 6? Why not defer all the trauma until then, when it's more worth it? BTW You can have distinct names on playstore (e.g. termux-app and termux-app5). That's how people do "lite" versions. |
I think we should target Android 7 directly. We could create some kind of For the package repo at termux.net perhaps the best thing is to leave the current one as is, to avoid people from updating and breaking their environment, and add a new repo alongside it. This would be in combination with updating the Termux app so that new installations get that repo automatically, and it could automatically replace the old repo with the new in For the apps, I think we should bump the required api version to avoid having Android 5 and 6 users installing the app and get a subpar experience with non-supported packages. Those knowledgeable enough can always work around it by finding an earlier app version on e.g. F-Droid if they really need it. Thoughts?
One small thing that can be dropped is the libutil package, since the functions implemented there are built into bionic as of Android 6.0. |
Couldn't agree more. Android 6 seems to be on half way of many stuff. Doesn't seem worth bumping if that's our target. |
I'm curious about third party repos. |
Perhaps y'all could handle them apt-level, like: deb https://termux.net/lollipop stable main
deb https://termux.net/marshmellow stable main
deb https://termux.net/nougat stable main
deb https://termux.net/oreo stable main
deb https://termux.net/pie stable main or deb https://termux.net/l stable main
deb https://termux.net/m stable main
deb https://termux.net/n stable main
deb https://termux.net/o stable main
deb https://termux.net/p stable main |
Seems the right approach.
Seems risky... I'm not sure people on older android versions are more likely to be across the android ecosystem... How to check that https://f-droid.org/en/packages/com.termux/ has not been altered? Is there some other way to keep the present app version available? One solution is to leave the app as it is, and create a new version with a new name ( Or, download the ols version directly from termux.net? (since it's already trusted for packages). |
Targeting android 7 straight away sounds good to me! @fornwall how is the current user distribution? How many percent are using android 5 or 6?
@hyperpallium Cool, thanks for that information. I guess all packages need to be recompiled with this new PREFIX if it is to be usuable.
I think the other way around sounds more reasonable. We can update apt and have a script replace "termux.net stable main" with "termux.net android-old main" if the android version is 5 or 6. We then wait a few months and hope that the wast majority of old android users have had their repo changed.
Same here then really, feels like the main com.termux app should target up-to-date devices, but we could perhaps have another app targeting android 5 & 6.
@aiisuika The differences between the android versions aren't that big, so this might be slightly overkill, taking up 5x as much diskspace on the server. Also, people might not bother to build/test for different android versions, it would require quite a lot of extra time spent in emulators, it's a neat idea though! |
@vishalbiswas I can handle it in this way:
|
Yes (it's also hardcoded in the app). A key advance of termux over other terminals is packages modified for android's directory structure. But they are now compiled to termux's directory structure (literally, This enables different termux's to use the same repository without recompilation. It also enables "self-hosting", in the sense of developing termux within termux itself. The version being developed having a different name (and |
@hyperpallium This is task is not easy and may have some bad effects (at least if PREFIX is long). See sample for bash how this is done: https://github.com/xeffyr/Alpine-Term/blob/master/env-packages/packages/bash/bash-4.4_config-top.h.patch.
Unfortunately, it does not enable "self-hosting". At least because of difference between NDK's clang and one provided in Termux. It also not possible to compile big packages on device (out of ram at least on LLVM). |
@xeffyr There's many packages to change, but... it seems to me the places needing the There could be a test for the length of
I beg to differ, as I have compiled and installed the termux app, in termux (no PC). For the app, there's only a little C, and clang worked fine (invoked as The main work was a bash script to replace the gradle files. There's still some rough edges, but it basically works e.g. vim and curl are installed and work, after |
This is the user distribution of active installs of the Termux app from the Play store:
Here active means: |
Actually, we only patch cases where the path is hard-coded into source files directly. Often paths end up in binaries after configuration from the build system (as in That said, dynamic prefix would be interesting, I've created #2902 for that! |
@fornwall strikingly close to 1/3 each to 5/6, 7 and 8. A third is a lot... @Grimler91 My first question would have been better as: What are the benefits to users? [ Making development easier is important. But, like businesses that start placing operations ahead of customers, it can be the beginning of the end (unless it's a monopoly). Maybe there are great benefits to users, e.g. maybe fullscreen mode? ] |
Inb4 |
My (google, oneplus, LineageOS) devices are all on 9, is the % of Android 9 users unknown? I'd drop support for anything older than 6, because LineageOS is a free upgrade and supporting botnets on insecure devices is not cool; |
One that is not an option on all devices and for some other reasons.
So only around ⅕ of the current users can keep using Termux...? Don't get me wrong, I'm all for getting rid of the LD_{LIBRARY_PATH,PRELOAD} annoyances, being able to actually use patchelf and whatever else Android 7 brings, but "screw 'em" probably isn't the way to go about this. |
Only Android 5/6 may be 'dropped'. There also plans for creating separate repositories for Android 5 and 7. Android 5 will receive only critical updates for packages, i.e. bug fixes but nothing new. |
what bout an "emulated" libc.so that's actually proot with some changes that'd also allow for users, groups, binfmt, ect... |
@Bakaika
|
i mean, libc.so where i/o operations are replaced with translated ones, faking of users, mounting, ect... like proot. |
@Bakaika No, this won't work here as it is impossible to intercept system calls with this way. You have to use ptrace() here so program like proot is needed.
proot does not do mounting and I'm not sure that there are people that can implement a userspace EXT4 driver usable with proot (even in read-only mode).
QEMU is not proot and I'm not talking about user-mode emulation. I'm about system emulation which actually gives much more than proot: full Linux distribution with real root permissions (on VM level) will provide multiuser environment, mounting and everything else but only on VM level. The main point of Termux is to provide an environment similar to Linux distributions. It does not provide root, |
Turning it around, there are benefits for 5/6, for having a separate app, as changes have already been made for 7 and 8 that adversely affect 5/6. Examples I know of (I expect there are more):
|
Fine suggestion because support for things like DT_RPATH can be added. Thus I think stuff like LinuxBrew and third party relocatable binaries will work. Whatever, keep a termux-old on fdroid. |
I don't think this would be a good idea at all: plenty of people still use old devices that stopped getting Android updates years ago, as @fornwall's stats show. Those devices are plenty fast enough to use Termux: I actually build LLVM on a 2014-vintage 32-bit Android/ARM device with 3 GB of RAM and that's stuck on Android 6, without a problem. The benefits discussed here are fairly small and could probably be done now by changing the Termux build and scripts to be more customized for the different Android versions. Of course, I don't support these old Android versions for Termux, and you may be sick of doing it: I don't know how much work it is. But I think it'd be a mistake to cut the userbase like this anytime soon. |
I suppose it won't be possible to do (local) audio output with such setup? (In other words, we cannot make use of our own libraries and the ones in Android at the same time like now?) |
I've lollipop aarch64 device. Can you send the APK for me to test?
Sent from My Asus Pegasus X005
Pada tanggal Rab, 19 Des 2018 19.05 Twaik Yont <notifications@github.com
menulis:
… @xeffyr <https://github.com/xeffyr> Can you please make bootstrap & repo
for armeabi-v7a arch? I have no aarch64 devices.
@tomty89 <https://github.com/tomty89> Audio support will be available
after adding libhybris support.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
<#2874 (comment)>,
or mute the thread
<https://github.com/notifications/unsubscribe-auth/ACr9NLAcA1n9rb_hnozujj1N1G6Mw5o9ks5u6iuZgaJpZM4W068h>
.
|
@benyaminl Read it again: #2874 (comment) |
@twaik Now added support for ARM. Links are updated. |
@xeffyr what is wrong with glibc then? Many packages are well supported on glibc than musl or others at the cost of being heavyweight. I have run some stuff w/ glibc loader. Especially nano and patchelf appear to work. But there needs to be some more investigation on LD_LIBRARY_PATH. Perhaps all binaries should be just built / patched with custom rpath and loader ld-linux-armhf.so.3. Interestingly it allows to use So glibc is interesting at least as a package. Well, if all this experiment goes well we may see a Also, I think gentoo prefix for android used their glibc in prefix dir. They probably failed because they didn't have a terminal nor built binaries for one explicitly (although there was a sourceforge repo for terminal ide). I am unsure how it is at the current state. |
@extremenerd mussl is lightweight libc. That is important on mobile devices. Nothing in termux-packages changes: packages are still built from source using build.sh script and packed to debs. The only change is libc. |
It's really hard to understand glibc's internals to make right changes in it.
Yes, many packages were developed relying on glibc as standard. Glibc won't significantly reduce the amount of patches needed to compile software in Termux. It also won't allow you to normally use binaries copied from Linux distributions - don't forget that Termux's file system layout is far different. Also, musl-based programs don't need rpath/runpath/ld_libary_path.
Then patch & compile it yourself 😁.
No, I won't do glibc branch.
Gentoo prefix is broken by design. They even didn't changed the paths and some progs searched in |
Seems your build working on my ASUS Pegasus X005 with Lollipop 5.1 No warning error on Lollipop 5.1 ( For Android 5.0, I've one but it's not broken because the architecture is x86, dunno why) I just tried dumb thing, maybe another thing to test? Thanks |
Let's perhaps take the bionic/musl/glibc discussion somewhere else (new issue?) as I believe it is only partly related to the android 5&6 drop. Such a transition would need way more testing before it can happen compared to a split of the repos into android 5&6 and android >=7 I guess. Anyways, so roughly 35 % of users use android 5 or 6 which is a quite large part of the users. When would a android 5&6 drop feel justified? At 20 %? 10 %? |
10% off them I think. Because until today many company still produce died
Android device. 😑
Sent from My Asus Pegasus X005
Pada tanggal Jum, 4 Jan 2019 22.07 Henrik Grimler <notifications@github.com
menulis:
… Let's perhaps take the bionic/musl/glibc discussion somewhere else (new
issue?) as I believe it is only partly related to the android 5&6 drop.
Such a transition would need way more testing before it can happen compared
to a split of the repos into android 5&6 and android >=7 I guess.
Anyways, so roughly 35 % of users use android 5 or 6 which is a quite
large part of the users. When would a android 5&6 drop feel justified? At
20 %? 10 %?
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
<#2874 (comment)>,
or mute the thread
<https://github.com/notifications/unsubscribe-auth/ACr9NA4DQ5ynr71a38Yh4-n-bd30b-jeks5u_24tgaJpZM4W068h>
.
|
As I commented above, I think, that depends on the maintenance of the legacy branch. If it's just a freeze of feature/packages with updates still provided, I wouldn't mind doing it even at current distribution level. |
Is there any new update? There may be a number of users who have upgraded their Android version already. |
Could be the option isn't dropping lollipop please? |
@benyaminl It is the problem with the timing rather than whether doing so. Anyway we need to drop Lollipop support later as Lollipop is already outdated. |
@Wetitpig Once we will find a different hosting, we will create a separate repository. Then Android 5/6 drop. So question is not in "time". |
No. Lollipop repo will continue exist some time. |
This was discussed in the termux development sessions, summaries of the discussions can be find on the wiki here: https://wiki.termux.com/wiki/Dev:Development_Sessions for those interested (full logs of conversations are found on gitter in the termux/dev channel and they are also sent to the termux-dev mailing list: https://groups.io/g/termux-dev). |
The master branch is now for Android 7.0 and later and is available for alpha testing on bintray. Join https://gitter.im/termux/dev or the mirrorred IRC channel #termux/development on freenode if you want to help testing (aarch64 devices only initially). The termux.net repo will continue to be updated as previously, only that the packages will now come from the |
So, lets officially start the discussion about dropping android 5 support.
This concerns both the apps and termux-packages but lets gather the discussion here.
What about all the packages?
I suggest that we create an "android 5" branch which won't receive updates but might be useful for people stuck on android 5. We could then also set up a separate android 5 repo or (preferably I guess) let someone who's actually using android 5 host and maintain it.
If we create a separate android 5 repo, how do we inform all android 5 users and simplify the transition between? Posts in all community groups? A temporary new motd message?
What about the apps?
Should we create android 5 branches for the apps as well? Would it be possible to have termux-app as well as termux-app5 on playstore (or would it somehow conflict since both apps are installed into com.termux)?
Do we even want to bump the minimum android version for the apps as well or is it enough to bump the API_LEVEL in build-package.sh?
What should we so when we've bumped the required android version?
We have at least one
if version == lollipop
that can be removed.There's probably some patches for packages that can be dropped (identifying which ones might be tedious though).
Most of the cool changes, like the possibility to stop using LD_LIBRARY_PATH will have to wait until we drop android 6 support.
@monoidic did some experiments with this in #2429.
What other changes/benefits have I not thought about?
The text was updated successfully, but these errors were encountered: