-
Notifications
You must be signed in to change notification settings - Fork 0
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
Schema #1
Comments
Hashtags should probably use the as:Hashtag object type. |
Good catch, updated! |
I don't think Collection is correct at the top level here, instead it's the "follow recommendations" that are the collection. i also don't think "auto follow" is necessarily a good idea, I'd think of these more as recommendations where you can choose to follow some of the accounts or all, ditto with following hashtags. Finally, I don't think "auto blocking" belongs in starter kits, but in a separate system, nor account privacy/reach settings, since it'd be difficult to map this accurately across different fediverse software. |
Also, the Collection can be mixed typed, i.e., one collection can include both Person/Group actors and Hashtags, it's then up to software to choose how to display the collection, whether as a simple list or as separated out by object type. Additionally, a starter pack for the Fediverse should almost certainly recommend instances that a new person may want to join. (Gosh I wish we had an Instance/Server object type) |
The current structure here of everything sorted out by Object type means that you cannot reuse the Collection pagination logic |
Good point, I've updated it, let me know what you think! |
To further expand on this:
I think Starter Packs are fundamentally different to Safety Packs, the former helps you get started somewhere and follow a bunch of people. The latter is after you have an account, though may be recommended by the former. In a Starter Pack it's a one-time type of deal, not a subscription to a list of people to follow, where as for Safety Packs, that's an ongoing and evolving need, safety doesn't just happen once, it continues to happen constantly. Special care also needs to be taken to make sure retractions happen correctly (which I think are likely beyond the Add / Remove semantics of Collections). I do think Safety Packs could be built off the ideas I put fourth in the background information for my FIRES project. |
For hashtags, I'd omit the |
For Actors, you probably also want to include some additional properties, e.g., |
Hey Dan, good stuff, thanks for putting something forward. If I'm understanding your concept correctly, it's intended to offer a starter kit specific to each ActivityPub server, and it's either auto-applied or suggested to new users when they create an account on that server. The past few weeks I've been discussing a version of ActivityPub starter packs with various people that has more flexible interaction modes: being created and shared by users, giving people the option to mention a starter pack in a post so clients can show specific UI for it (mainly a "follow all" button but also ways to explore the contents of the starter pack), and established accounts on different servers being able and encouraged to use and share starter packs from around the fediverse. I'm personally a fan of the idea to build starter packs that can be used backwards-compatibly by people on current versions of AP platforms without specific starter pack support, by implementing starter packs as "boost bots" (actors of type My design notes can be found here. I'm told Newsmast has a version of starter packs planned that matches my concept fairly closely. Neither of us have started a proper implementation yet. Do you think it's possible to adapt your spec to fit these additional ideas too, or are the concepts too different? Some relevant discussion threads I participated in:
|
Great to see this created! Two really good ideas here - server specific packs, and ones which replicate the Bluesky experience, where they have been very successful, passed around independent of servers. We have boost bot tech as @jfietkau mentions which could be repurposed for this. We’re just finishing an application of this approach to Fediverse custom feeds. Not underway yet on starter packs - just joining the discussion at the moment |
why? the
why is the
why?
this isn't an activity, it's a Collection object more generallyi see a lot of problems with this conceptually. the schema has problems, sure, but those can be fixed; what is far more important is that i don't see any protocol or behavioral considerations here:
there is a lot of thought that needs to be put into such a proposal before even getting to a schema, and unfortunately i'm not seeing any of it anywhere here. |
For
This is correct, but for a user using a starter pack to join an existing server, hashtag recommendations may make sense.
The |
actors can be any type. just because mastodon restricts you to 5 types doesn't mean that everyone else has to use only those 5 types |
I'd argue against requiring approval to add people to new packs, but they should be notified with a button to remove themselves on demand. |
Generally speaking, for these "opt in or opt out" questions, I like to ask myself what is the kind way to treat people who have never heard of $thing and don't have time to investigate every new feature. We don't have an existing consent mechanism that matches starter packs exactly, but my feeling is that the I've been thinking something along these lines:
I've been planning to treat #nobot as a general opt-out since in my concept, each starter pack is a bot account. Maybe that doesn't apply if you're working purely with lists. On top of that, notifying someone when they're added to a starter pack and giving the option to self-remove makes sense. Within the possibilities afforded by current implementations, someone blocking the actor that corresponds to the starter pack could be interpreted as "I want no part of this". It would be nice to have a way to say "allow all" and "deny all", but that's a bit harder unless all starter packs go through a central server. Is this the right place to discuss this type of starter pack? If it's extremely out of scope for what Pixelfed starter kits are trying to accomplish, then I don't want to be rude about pushing this. But my impression is still that the schema would ultimately not be all that different and that it's worth avoiding having a handful of mutually incompatible types of ActivityPub starter packs with slightly different features. |
You have |
Depending on answers to the general questions raised by @trwnh, I’m surprised the schema does not include a field for “notes”/“comments” in each item. |
After mulling it over for a bit... Schema suggestionsI suggest adding the following two properties to your base structure:
I'm also inclined to agree with @trwnh's suggestion of coining a sub type of MockupWay off in utopian future dream land, with support for rich rendering of starter packs in all clients and servers, they might look something like this if I attach one of my own starter packs to a public post: You can do a one-click "follow all", or if you click on the splash image or the title, you'd get a detail UI along these lines: Note that this only covers consuming starter packs. The authoring UI would likely be a bit more involved, but could probably piggyback on existing list management features, for platforms that have those. Backward compatibilityI already mentioned that one of my design constraints is getting these things into people's hands soon, like on the order of single-digit months (low single digits ideally). That means I don't want to rely on every server and client out there implementing specific support, releasing updated versions, waiting for people to upgrade, etc. So to make these starter packs work with the facilities that we can currently use, I propose that we come up with a way to (optionally) wrap a starter pack in a service actor to make it followable, taggable, and otherwise interactable. So you'd have something potentially like this:
The above is a bog-standard service actor except for the These service actors could be implemented and hosted on a purpose-specific ActivityPub server. With no changes to current clients or servers, they would be followable by people on ActivityPub platforms, thereby adding all public posts by members to the follower's home feed, like a LitePub relay or one of those feed bots by Newsmast. The bot could also made to be smart enough to reply with a "follow me to subscribe to this starter pack" Going forward, ActivityPub platforms could add support for Pro:
Contra:
Authoring starter packsA specific web UI to create starter packs could be hosted on the bespoke AP server. It would let people authenticate with their AP account via OAuth and then let them put together starter packs by adding individual accounts, setting titles and descriptions and whatnot, maybe customizing the splash image a bit. Adding accounts would follow the safety constraints discussed in my earlier comment (subject to change by recommendation of more qualified people, e.g. how to handle federated moderation reports on a starter pack or its service actor). I'm kinda handwaving this part of the process right now. I'll just say that I believe that authoring starter packs can be a slightly higher friction process (e.g. log in on an external website) without necessarily being disastrous. I'm sure there are more details to figure out, but this comment is already long enough, plus if any of the above accidentally made me sound competent at this, I need you to know that I'm still just a lil ActivityPub baby and I don't know how to namespace or how to LD a JSON and if you ask me I should really not be in charge of this 🤯 but someone's gotta do the work, so let's go. |
@jfietkau on
You could have the starter pack actor respond to follow requests with a direct note back saying "check my following instead" And then link to the |
Hmm, that would work for forcing direct follow relationships, but it would ruin the "one click to subscribe to a starter pack" value that I'm rather attached to. I would prefer to untangle those service actor follow relationships at some point though. Maybe when platforms add explicit support for starter packs, they could go through the existing ones they know of and turn local followers of starter pack service actors into direct follow requests for each of the starter pack's members. Then again, we might still like to keep a record of which starter packs someone has subscribed to. Something I haven't spent much time thinking on is what to do with changes to starter packs. If the follow is through a service actor, followers always see posts by everyone currently in the starter pack and that's it. But if in the future I click "follow all" on a starter pack and the curator later adds more accounts to that pack, do I want to auto-follow those as well? What about removals? Or should starter packs be immutable once published? Maybe what we should do is disable the "Follow all" button if the person is already following everyone in the starter pack, and re-enable it if they're not. Needing to periodically re-check my favorite starter packs in case new people have been added to them might be the path of least unpleasant surprises.
These could be merged, good point. |
i'm hesitant to drag the conversation into technical details again because i'd still like to see more protocol and behavior considerations as a pre-requisite to schema discussions, but i think this is close enough to respond to: re: using
|
For @jfietkau's:
We could offer that via a website through which you sign-in with your account ( That's already what I was intending to do for my "starter pack" service thing. |
That sounds encouraging to me, thanks!
The "see more" thing would be the default action if you click the title or the splash image. I included the "follow all" button for cases where you trust the starter pack's curator and really do just want to follow their recommendations without checking each of them one by one. I think some Bluesky starter packs get quite large and many people like a busy feed. Let me see if I understand the danger part. A malicious starter pack could make you follow (1) spammers (2) fake accounts impersonating people you would have otherwise liked to follow (3) people who intend to cause you direct harm. Any of these experiences could range from annoying to unsettling to potentially dangerous. So yeah, following a malicious starter pack could be bad. The question is under what circumstances you would follow a malicious starter pack. There are many people I follow whose starter packs I would trust blindly, but in practice I'm probably obsessive enough about my home feed to check them over in detail anyway. I think some people might not care as much, and would click "follow all" on starter packs made by their friends. Is the danger of someone clicking "follow all" on a dodgy starter pack large enough that we should take the quick option away from people? I mean, at worst you're following some bad actors. That doesn't give them access to anything in particular and is fairly quickly reverted. I don't know how people feel about this point in general. My gut feeling is having a "follow all" action for those who want it is valuable. How exactly does Bluesky do it, what does their UI for this look like? I can't easily find a screenshot.
This goes hand in hand with the
Re: semantics of Re: should a starter pack itself "be" an actor: should it? I mean above you did write "might as well", but tbh I see them more as just some passive information, like in Dan's original proposal up top where they're a flat list of objects. My design for wrapping a But also, when someone in the future wants to share a starter pack they made in a platform that supports them, it would make sense to me to let them attach a starter pack to a
This is true and I think it's sadly unavoidable in this design when using service actors to fan out posts to followers. or at least I can't think of a way to avoid it.
I would like to offer this separate web UI as well, in addition to the boosting service actor. The way it enables direct follow relationships is a big advantage. I just don't want it to be the only way to follow a starter pack. Clicking an external link, vetting if the website is trustworthy enough to OAuth my Mastodon account, entering my instance name, doing the OAuth process, and then triggering the subscribe action... that's a long process with a lot of friction. You'll lose a chunk of people at every single one of those steps. The fediverse has had "high friction" starter packs for a while (see Academics on Mastodon, FediRoster, Fedi Garden, ...) that take minutes of work to import. The thing that makes Bluesky starter packs so successful is their ease of use. You see someone on your feed posting a cool starter pack, you click "follow" and you're done. Without starter pack support in future versions of platforms, I think the service actor concept (which, again, can coexist with a separate website with OAuth support) is the only way that gets us there before 2026. |
Oops, I probably should have tagged you both, sorry. @trwnh @ThisIsMissEm I'll also temper my last comment a little after sleeping on it: I've seen "starter packs" and follow recommendation lists for manual one-by-one adding and with CSV ex-/import for mass following. I have not seen the OAuth + Follow API approach done in practice anywhere yet. As much as I still think requiring authentication on an external website is friction, I also think it will be much more convenient than handing people a four step howto on importing CSV follow lists. Anyhow, it sounds like Dan's first public prototype is due out any moment, so we'll see live and in public which parts of this discussion have already been incorporated. 😀 |
StarterKit Extension Documentation
Specification
Base Structure
Properties
@context
type
id
name
summary
totalItems
items
published
updated
Item Types
The
items
array can contain two types of objects:Person Objects
type
id
name
Hashtag Objects
type
id
name
Example Activity
The text was updated successfully, but these errors were encountered: