android-oss-release-tracker icon indicating copy to clipboard operation
android-oss-release-tracker copied to clipboard

Similar Project, Combine Forces?

Open S7venLights opened this issue 2 years ago • 5 comments

https://github.com/ImranR98/Obtainium

S7venLights avatar Nov 20 '22 19:11 S7venLights

They do appear to be similar. Making some assumptions here (open to corrections). Just looking at their GitHub I would say the differences are:

Obtanium installs apps for you and requires permissions to install apps on the device. My app does not install the apps for you and does not require this permission, it will send you to the webpage where you can download the apk yourself. 'Install app' permission could then be given to your web browser or file browser and not to me.

Obtainium also needs other additional permissions such as to run on startup and alarm manager (to poll for updates?). My app requires you to open it to check for updates and currently does not run on a schedule or send notifications.

My app requires the 'query installed packages' permission to determine which version (if any) you have installed. Because Obtanium doesn't have this permission I'm assuming that they're tracking those details internally to their app, meaning that if you install the application direct from the website Obtanium won't be able to see the it.

Obtanium says that they use web scraping for some data which may break with webpage changes. My app uses GitHub and GitLab APIs for repo information, and files such as build.gradle to determine package name. These are less likely to change over time. If the project is not a standard Android project structure then my application may not be able to determine the packageName.

Obtanium is a more feature rich application. More apps sources, more settings.

Obtanium is written in Flutter. My app is standard Android+Kotlin.

Summary - Obtanium is trying to be closer to a feature rich alternative app store. My app is closer to the minimal RSS Tracker.

jroddev avatar Nov 20 '22 21:11 jroddev

So to be clear, I'm not a dev just a user of Obtainium so my knowledge is limited. I will answer in-line:

They do appear to be similar. Making some assumptions here (open to corrections). Just looking at their GitHub I would say the differences are:

Obtanium installs apps for you and requires permissions to install apps on the device. My app does not install the apps for you and does not require this permission, it will send you to the webpage where you can download the apk yourself. 'Install app' permission could then be given to your web browser or file browser and not to me.

Yes that's true I assume you want your app to function that way for security and trust. The convenience of installing in app in fewer clicks is worth it to me. I suppose one could give the user a setting/choice in app to download via browser or in app.

Obtainium also needs other additional permissions such as to run on startup and alarm manager (to poll for updates?). My app requires you to open it to check for updates and currently does not run on a schedule or send notifications.

One could argue this is better for security as you will get notified of updates sooner. Obtainium also hopes to be able to implement silent background updates, which would improve convenience and time sensitive updates security. But the flutter plugin that does this currently breaks other things. Do you not want your app to run at startup?

My app requires the 'query installed packages' permission to determine which version (if any) you have installed. Because Obtanium doesn't have this permission I'm assuming that they're tracking those details internally to their app, meaning that if you install the application direct from the website Obtanium won't be able to see the it.

You do have to manually add apps to obtainium but once the app has been downloaded in obtainium the first time it parses the apk for information.

Obtanium says that they use web scraping for some data which may break with webpage changes. My app uses GitHub and GitLab APIs for repo information, and files such as build.gradle to determine package name. These are less likely to change over time. If the project is not a standard Android project structure then my application may not be able to determine the packageName.

I might be wrong but I think at this point it's only a few sources that require web scraping. Github and Gitlab do use API's I think and Github also implements an optional personal access token (with no permissions) to reduce rate limits. It pulls package names from the downloaded APK.

Obtanium is a more feature rich application. More apps sources, more settings.

Obtanium is written in Flutter. My app is standard Android+Kotlin.

Yes he is not an android dev and uses flutter plugins. My thinking was if you worked together on some things maybe you could overcome some of the limitations of the plugins.

Summary - Obtanium is trying to be closer to a feature rich alternative app store. My app is closer to the minimal RSS Tracker.

Obtainium is trying to be an alternative to F-droid that let's you pull dev signed apps from the source. If this doesn't align with your goals no stress and I'm not trying to compare or diminish your work. I just thought in the spirit of FOSS you may like to know about each others apps and connect/contribute where possible.

One limitation to Git is not all devs release compiled APKs. As such, one needs to have F-droid installed alongside anyway.

S7venLights avatar Nov 21 '22 08:11 S7venLights

Other things that may interest you:

A store aiming to be a secure alternative: https://github.com/accrescent/accrescent

Octodroid a github for android project that I also use to track Github releases using githubs built in 'custom watch options' I can watch a repo for just releases. https://github.com/slapperwan/gh4a

S7venLights avatar Nov 21 '22 08:11 S7venLights

Thanks for sharing

jroddev avatar Nov 22 '22 21:11 jroddev

@S7venLights sorry I somehow missed your long post and only responded to the latest one. Thanks for providing more details.

I wouldn't consider myself an Android dev either so I'm not sure what would be required to get unattended updates working.

Notifications are something I would like to add when I find time. I agree that the benefit of getting updates sooner outweighs the concerns about running in background. For the moment it makes OSS Tracker a bit leaner.

GitHub rate limiting is the other big item. I may be able to take some inspiration from how Obtainium does it. It currently puts a cap on how many GitHub repos my app can track.

I appreciate you sharing familiar projects. I hadn't seen any of these before I started building.

jroddev avatar Nov 23 '22 21:11 jroddev