Sharing Redux
Sharing has been discussed before, but since it keeps coming up I think it's worth taking another look at from a high level point of view.
Use cases
I think in order to understand why people keep asking for it it makes sense to look at the use cases where it's most helpful on iOS/Android, and how these could fit into our ecosystem. Some example use cases, translated from mobile to GNOME:
Browser:
- Send current website to chat contact
- Save current website in Pocket
- Share current website as part of a Mastodon post
Text Editor:
- Send current file to chat contact
- Open current file in other editor
Software:
- Send Flathub link to app to a chat contact
- Send Flatpak app bundle to my other computer
Differences to clipboard
We already sort of have a kind of universal sharing system: Copy/paste. In order to be worth it the new sharing system would have to offer some unique advantages over that.
Sharing on mobile:
- Content -> share -> choose contact/action
- No secondary actions via clipboard
- System recipient chooser UI
- What can be shared where is explicit
- Requires apps to expose recent/frequent contacts and the like
- Unpredictable if there's going to be a confirm/editing step in the app
Copy/paste:
- Content -> copy -> switch apps -> paste
- Content stays in clipboard afterwards
- Reuse standard app UI for choosing recipients
- What can be shared where is implicit, you only find out when pasting
- Needs no collaboration from apps
Advantages of sharing
- One less step for frequent contacts
- Allows sharing to other devices
Analysis
I think part of the reason why previous efforts to implement this kind of thing didn't go anywhere is that we're missing some fundamental building blocks to make this kind of system better than copy/paste. I think in particular we'd need at least one of these, ideally both:
- Chat apps exposing their contacts
- Airdrop style local sharing between devices
I think the first one in particular would be hard, since it'd mean coming up with an API (probably an FDO standard), implementing it across our stack, and then getting Signal, Telegram, et al to implement it. However, without it I'm not sure how much sense this feature makes since it doesn't have much to offer over the clipboard...