Skip to content

[Scenario Analysis]: Sharing user level flatpaks between systems via systemd-homed over different architectures #6044

@MateusRodCosta

Description

@MateusRodCosta

Checklist

  • I agree to follow the Code of Conduct that this project adheres to.
  • I have searched the issue tracker for a feature request that matches the one I want to file, without success.

Suggestion

This isn't as much a feature request but instead a scenario analysys that I thought about and mentioned on Flatpak Matrix room. This is mostly due to systemd-home and Fedora Asahi on Apple Sillicon.

Essentially, if you install flatpaks in user mode (flatpak --user), the flatpaks are installed inside the user folder. systemd-homed allows you to have portable home folders, so one possibility would be to share the user home between two systems with either same architecture or different ones.

If you were to share between system of same architecture (such as two x86_64 systems), I would assume that as long as flatpak is properly setup there would be no issues. The same flatpaks are shared and there are virtually no changes.

My question really is about what if sharing between different architectures? (such as original x86_64 and a ARM64 system)

I know that if a system tries to run a binary for a different architecture it will usually fallback to QEMU with low performance, but I know that FEX exists for ARM to run x86 with more performance.

That would be if just using the same x86_64 flatpaks, I would assume the user could download the ARM64 variants either manually or flatpak could detect the need based on the host architecture. That assumes, of course, good deduplication between the same flatpak in different arches.

Somebody mentioned also that flatpak isn't smart enough to run the correct app based on arch, it only really runs the one set with "make-current".

So, to sum up, what would be needed for the cross-platform sharing of a flatpak installation to work?

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions