Obtainium-like installer for Sailfish - Harpoon

Hey folks,

[EDIT] Please use github issues to report problems and propose improvements. I’m very happy to work together with anyone finding it useful to perfect it for their use case. Thank you!

Obtainium is such a handy tool for app distribution on Android so I though we ought to have one here as well: Harpoon.

TL;DR: Harpoon manages app installations and updates for users directly from gihub/codefloe/codeberg repo release tags. No app stores or central repositories needed.

As a user, you need to type in the repository URL and that’s it.

As an app dev, just do what you alrady do. But if you want to make it very easy for users to add your repo, add a QR code to your repo that users can scan so they don’t have to type the URL.

Based on my reasearch, this didn’t exist yet. If, however, one already did. Sorry!

LLMs were used to create this app.

10 Likes

That’s probably true… but also, what apps would this be better for?
CHUM seems to be a better option in general.

It is also quite unclear what you mean by repo - sometimes it sounds like source code repo, and sometimes it sounds like package repo. Surely this doesn’t build apps from source?

Yeah sorry. I could be clearer with the terms.

Obtainium, and therefore Harpoon directly operates with the developer’s sourcecode repo (github, codefloe etc). That means that the developer doesn’t need to submit or upload their builds naywhere. As long as they publish builds with release tags Harpoon can pick them up directly from there.

It definitely doesn’t replace chum, just servers a bit different usecase. Testing early stage apps and keeping them updated is pretty much the usecase.

3 Likes

:backhand_index_pointing_up: this contradicts that :backhand_index_pointing_down: (well, is inconsistent anyway)

Unless you specifically made it care about source code, that’s not inherently needed for grabbing rpms off of wherever.

How many apps are there that are in this limbo state?
If you’re going to build and manually upload, you might as well do it to OpenRepos - or if you are going to automate you might as well use CHUM.

I like the de-centrality aspect of it. :flexed_biceps:

How would it work though? You say, i don’t need to change anything? But i normally don’t have my rpm’s in my repo. They are published to github/openrepos or perhaps chum soon.

Does it depend on gihub or other provider structures? Or could I use it with my self hosted, for example gitea repo?

PS: I’m sorry.. you wrote it. Github, Codeberg, Codefloe. It would be really nice if it worked with self hosted solutions like Gitlab or less complex ones.

1 Like

Hmm. Not based on my experience. Many apps publish builds directly on their repo.
For example:

Most app devs have a pipeline pushing releases out already.

Not in my experience - especially not here anyway.
I publish rpms on GitHub for only one of my apps unless something extraordinary happens.
That’s not a place i expect people to go fishing for releases - it is mostly for having old versions available if i break something.

No they don’t - not here anyway. (Not counting CHUM).

By not changing anything, I mean if you’re already publishing builds on your repo. The structure is standard. All the Forges already support it Let’s take a project that exist and I have nothing to do with, for example here:

Tags == releases.

So if you type in “github.com/HtheB/futo-keyboard-sailfish” to the Harpoon add-app box, it will just start following release tags on the repo and installs updates when available.

On Android, this release approach is very common. I’m not sure how common it is on Sailfish. So I might be a bit off with my “no need to change anything”

And, yes, it’s standard but it differs a bit between servers. Github does it a bit differently from Forgejo servers but the Harpoon code is trying to detect what type server it is reading and adapt. So it should work on your own hosted instance as well. Especially if you’re running a Forgejo one.

2 Likes

Seems like a nice addition!
Obtainium is a very popular solution for certain android users. I think the idea is that you trust the developer and not the builder/packages like f-droid or chum. I always prefered f-droid but here you can trust what sources were used to build.

4 Likes

Got you. Thanks for correcting my wrong assumption.

Awesome, great work. I was wondering if something like this exists for SailfishOS. I used it quite a bit on android. It’s true however that so far i didn’t install anything directly from a repo on my Jolla Phone. Except for the RawFish app that i am curious about. And yeah exactly when i was looking up RawFish i thought that it would be cool to have obtanium for it lol

2 Likes

my wish has come through… :slightly_smiling_face:

3 Likes

Could not add your Reis app from Codeberg:

Thanks for reporting! I’m able to reproduce, looking into it and updating asap.

2 Likes

Can the app update itself?

yes. If you add its own repo. (there is a shortcut to do so).

1 Like

That is probably something I have to fix, I don’t think I have set up a build pipeline yet or proper releases

2 Likes

Yeah, sorry, like @aegg says, there’s no binary builds in the repo so Harpoon can’t install it.

But it is also a bug on my side. The app should explain what is going on and not failing silently like it does now. I’m fixing that.

1 Like

I struggle with adding Rockpool too:

1 Like

I’d say that’s expected, as the Rockpool repository doesn’t have any GitHub releases:

2 Likes