Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

External profiles followed by local users show no statuses #145

Open
mgrzeca opened this issue Oct 15, 2024 · 4 comments
Open

External profiles followed by local users show no statuses #145

mgrzeca opened this issue Oct 15, 2024 · 4 comments
Labels
enhancement New feature or request

Comments

@mgrzeca
Copy link

mgrzeca commented Oct 15, 2024

Currently, when an external profile is followed by a local user, its content appears empty—none of its statuses are initially visible. A helpful feature is the link that allows users to view the statuses on the profile’s original server. This behavior is similar to how Mastodon and Pixelfed servers function.

However, a more user-friendly option would be to include a button that allows users to fetch statuses (along with reactions and comments) to the local server on demand. This would synchronize the external profile with its local copy, making it easier to engage with content directly from the local instance.

This issue has been described in detail at the following link:

w3c/activitypub#450

@mczachurski
Copy link
Contributor

This is certainly a functionality worth considering 🤔.

I assume that retrieving statuses would be feasible; however, obtaining comments and likes seems unlikely. These elements are typically not retrievable directly through the ActivityPub API. Another challenge would be maintaining the correct order of statuses. It is not possible to „insert” a new status into an arbitrary position in the database. Status IDs are generated according to the ‘snowflake’ algorithm and are sorted based on their ID numbers.

@mczachurski mczachurski added the enhancement New feature or request label Oct 19, 2024
@mgrzeca
Copy link
Author

mgrzeca commented Oct 20, 2024

Actually, the first 41 most significant bits of a Snowflake ID represent a timestamp, which means you can substitute it with a past date from the status being retrieved from the remote server. This should solve the issue of inserting a status into any arbitrary position in the database.

Unless we're thinking about different Snowflake algorithms, the one commonly referred to as Snowflake ID should address the challenge of placing statuses in the correct order.

@mgrzeca
Copy link
Author

mgrzeca commented Nov 14, 2024

It seems to be an obvious limitation of the Frostflake library—there’s no method for generating an ID based on a timestamp passed as an argument. Reading the Frostflake code, I get the impression that performance was the primary focus for its creators, which might explain the absence of such a method. Without changing the library or extending Frostflake, it’s unlikely that this could be implemented in a practical way. Am I right?

@mczachurski
Copy link
Contributor

Yes. But we can try to download statues as "unlisted". Thus they will appear on local timeline but not on the user's timelines. Still not perfect but I don't have other ideas for now.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

2 participants