Identity portability and ActivityPub
The Zotum queueing issue Sunday night gave me the opportunity to try out Hubzilla's instance portability and using the clone of my channel (on Netzgemeinde) during an outage for the first time.
Within Hubzilla
Hubzilla itself handled everything really well. Because I'd already set up the clone, I could just log into the clone and post from there using my primary identity. The posts appeared quickly on both my channel page and on the public stream on my primary instance despite the issues that primary instance was also having with other functionality. Everything appeared as though it had been posted from the single primary identity. This is exactly as I'd expected.
With ActivityPub
With ActivityPub things worked a little differently to how I'd expected, and I'd like to note that here to check whether I've understood correctly how it should be working, and whether it is working as intended.
What I'd expected
I had expected posts sent via the clone during the outage to eventually appear on ActivityPub as having been sent from my primary identity (the same way things had worked within Hubzilla). I had always understood this wouldn't happen until the primary instance was restored, because ActivityPub depends on connecting to the primary instance to collect posts sent from my primary identity.
Also, I had expected any ActivityPub user tagged in posts sent from my primary identity via the clone to eventually see those posts and receive notifications as normal, so my use of a clone on Hubzilla was invisible to them and the only impact to them of the outage was the delay in receiving my posts.
What happened
Posts I sent via my primary instance during the outage appeared on ActivityPub later, after the instance recovered, and any users tagged did receive notifications. This was as expected.
Posts I sent via the clone during the outage never appeared on ActivityPub as sent from my primary identity. Instead, it seems they were seen by ActivityPub as having been sent from the cloned identity.
In practice, this meant that the posts were invisible, because my ActivityPub contacts are only following ("connected to", in Hubzilla terms) my primary identity, not the clone.
The only post sent via the clone during the outage that is visible to me now in ActivityPub is one that tagged a Mastodon account. No notification was ever received by that account because the account is not following the cloned identity. The post, with the tag, is visible on the ActivityPub profile page of the cloned identity, but you have to go and look for it to know that it's there. Posts that did not tag anyone are not visible.
Implications
If identity portability works with ActivityPub to keep identity consistent (so posts always appear to have come from the primary identity), the way I had expected, the cost is a delay to post delivery during outages of the primary instance. During outages, ActivityPub contacts will be unreachable. Only if an instance never recovers will those messages never arrive. Providing it recovers, interactions with ActivityPub will be seamless aside from the delay.
If identity portability works with ActivityPub the way it currently seems to be set up, the cost is that from the perspective of ActivityPub users, there is no identity portability. Posts sent from primary identities via cloned instances by Hubzilla users, believing ActivityPub will behave the same way as Hubzilla, may never be seen by ActivityPub contacts even if they are tagged. There will be no notifications for these posts. Posts that tag no one will not appear even on the profile pages for the primary identity within ActivityPub.
For posts sent from primary identities via cloned instances to be visible to ActivityPub contacts, all of those contacts must follow both the primary identity and the identity on the cloned instance - two different addresses. If they have to do this, they are essentially operating with two separate identities. If they interact with posts sent via the clone, their interactions will not be sent to the primary identity but to the clone (I'm not sure what will happen to these interactions when they are received within Hubzilla).
Questions
1. Have I understood the current behaviour correctly?
2. Is the current behaviour working as it should?