markusfisch / BinaryEye

Yet another barcode scanner for Android
https://play.google.com/store/apps/details?id=de.markusfisch.android.binaryeye
MIT License
1.26k stars 108 forks source link

Migration to Jetpack Compose #427

Closed meenbeese closed 6 months ago

meenbeese commented 6 months ago

Since the codebase is Kotlin-based, this task should be fairly easy. Support libraries are outdated and hinder the app’s improvement. Switching to Jetpack Compose would reduce the technical debt and simplify the feature creation.

markusfisch commented 6 months ago

Well, I see things a little differently.

Firstly, it is anything but easy to migrate a non-trivial app completely to Jetpack Compose. The official migration guide is recommending to build only new screens in Compose in an existing code base.

Migrating everything blindly would be an end in itself. And it may even be impossible at the moment. Of course, the user interface of this application is quite simple, so it should be possible, but it will certainly take some time. Mind you, just to get to where we are now. That is not a very efficient use of my time. I'd rather spend that time making actual improvements that my users can actually see and feel.

Then the outdated support libraries are not an obstacle. At least I can't see what improvements they are hindering. What these outdated libraries do is keep the app available for older Androids. This is something I really care about. I know it's not usually considered very important to take care of old devices, but I do.

Also, adding Jetpack Compose would increase technical debt because Jetpack Compose requires additional libraries. And because any dependency can become a burden, it's best to keep dependencies to a minimum.

Jetpack Compose is just another way to implement a user interface. The View-based approach is not obsolete and probably won't be anytime soon. Yes, Jetpack Compose can make things easier, but I see no benefit in migrating it just for the sake of it.

I want a project that is as simple as possible in terms of dependencies and maintenance. Using the latest technologies usually comes with a lot of bugs and headaches. For now, I'm not willing to invest that much time just to switch to a new technology that no user will ever know or care about.

But this is open source for a reason, and you can always prove me wrong 😉

meenbeese commented 6 months ago

I understand where you're coming from. Thanks for such a detailed response and reasoning, it is always nice to hear different opinions, even if I don't necessarily agree with them. :)