silverpill

@silverpill@mitra.social · Joined ⁨Nov⁩ ⁨2021⁩

Developer of ActivityPub-based micro-blogging and content subscription platform Mitra. I help maintain the FEP repository and write my own FEPs too. Currently working on ActivityPub Next.

Matrix
@silverpill:unredacted.org
$XMR
48YM8jwJqDkeUvD38vepSXFeMZH1zsjbvGwTTuaNSSq6Q5GyeWaeiheAZUsSmNn72YdyLpw8geb4FL3opZfGbguJLUj8Mi9
PGP
0541 49E3 0F91 C6D7 8FFA C49C 955F 5A6E 2123 25F0
OMEMO fingerprint
689a2fb0ec87a9481fb45cb7d8870da6aeb4d8247bd69a39017701133b901f04
Matrix (backup)
@silverpill:poa.st

Replying to @⁨ozoramore_dev@social.t2arc.net⁩

@ozoramore_dev It's a cache, you can update it using this query: https://codeberg.org/silverpill/mitra/src/commit/8b5c382bc3c0ed9e536e66ce1f81045aef98e6d9/mitra_models/src/profiles/queries.rs#L90-L120

It updates only a single user, but I think removing WHERE actor_profile.id = $1 should be enough to update all users.

Summary card of repository silverpill/mitra, described as: Federated social networkCodeberg.orgmitra/mitra_models/src/profiles/queries.rs at 8b5c382bc3c0ed9e536e66ce1f81045aef98e6d9mitra - Federated social network

I added a list of recommended libraries to the ActivityPub developer guide:

https://codeberg.org/ap-next/ap-next/src/branch/main/guide.md#libraries

- activity (Go, used in GoToSocial)
- Fedify (JavaScript, used in Hollo and Ghost)
- Fedipub (Ruby, used in Manyfold)
- activitypub_federation (Rust, used in Lemmy)
- APx (Rust, used in Mitra)

This list only includes libraries that are actually used somewhere. Libraries that are not used, or used in projects with too few users are not included.

#fedidev #activitypub

Summary card of repository ap-next/ap-next, described as: ActivityPub NextCodeberg.orgap-next/guide.md at mainap-next - ActivityPub Next

Replying to @⁨Gargron@socialhub.activitypub.rocks⁩

The content attribute is to contain the WebFinger handle of the author's fediverse profile, i.e. username and domain separated by an @-symbol. A leading @ can be included and ignored when processing. This format was chosen for its user-friendliness, as this style of handle is what users would be used to seeing and typing when using most fediverse software.

This choice was criticized a lot when the feature was introduced. Meta tags are primarily read by machines, not humans, so user-friendliness shouldn't be a concern. Reliability, on the other hand, is worth taking into consideration. preferredUsername and the user part of a handle can be changed at any time. Actor ID is a more stable identifier and in my opinion is a better match for the fediverse:creator tag.

Replying to @⁨harblinger@wizard.casa⁩

@harblinger

>>>reply tagging

What do you think about federating these as quotes? Mitra supports multiple quotes per post (imageboard use case was taken into consideration when the feature was developed).

>>>(Cross-thread) markdown copy and quote posting

If you use the [[]] microsyntax, the link will be parsed as a quote:

[[https://wizard.casa/objects/019fc0a1-a9ef-7731-997e-40dd6864f469|>>1234567]]

I've updated the section describing the authentication of embedded objects in FEP-fe34 (Origin-based security model):

https://codeberg.org/fediverse/fep/src/commit/9ad3767987dae7e51d647768b655e93b82881343/fep/fe34/fep-fe34.md#embedding

It now covers the case where a signed embedded object is attributed to another local actor. That happens in federated groups and conversation containers where signed activities may be wrapped in Announce or Add activities.

Previously, the recommendation was to reject such activities when submitted via C2S API. Now the FEP recommends authenticating embedded objects (e.g. by looking up their IDs).

Another important change: anonymous objects are not ownerless anymore. Such object has the same owner as its parent object. It also inherits origin from its parent object, though that follows from the definition.

#fep_fe34

Summary card of repository fediverse/fep, described as: Fediverse Enhancement ProposalsCodeberg.orgfep/fep/fe34/fep-fe34.md at 9ad3767987dae7e51d647768b655e93b82881343fep - Fediverse Enhancement Proposals

FEP-5219: Groups and permissions has been updated:

https://codeberg.org/fediverse/fep/pulls/895/files

- The items in the affiliations collection are now required to be full Relationship objects with id, attributedTo and object properties. I think these objects should be self-contained and exist independently of the collection.
- Access to the collection MAY be limited (for example, when the group is private).

#fep_5219

Summary card of repository fediverse/fep, described as: Fediverse Enhancement ProposalsCodeberg.orgfepFediverse Enhancement Proposals

Replying to @⁨benpate@activitypub.space⁩

I don't know. Why do you want to use the existing vocabulary?

A descriptive activity name leads to a better developer experience:

- You can look at activity and instantly know what action is being performed.
- Servers that implement your FEP don't need to use heuristics, look up object, etc. to figure out what's going on.
- Servers that don't implement your FEP silently ignore unsupported activities, without wasting any resources.

Replying to @⁨benpate@activitypub.space⁩

As it stands now, Accept, Reject and Undo are identical to activities related to a follow relationship.

I suggest picking more descriptive names for activities:

- OfferEndorsement
- AcceptEndorsement
- RejectEndorsement
- UndoEndorsement

And maybe Endorse should be an object instead of activity? An endorser may want to update the endorsement metadata (content, image, tags).

Replying to @⁨graf@poa.st⁩

@graf There was a problem with sessions - Husky didn't handle token expiration correctly: https://github.com/captainepoch/husky/issues/162

But I don't use it myself, maybe this has been fixed already

Mitra uses access tokens with an expiration time and when a token expires, protected API endpoints start returning 401 Unauthorized. When that happens, Husky stops refreshing timelines but doesn't ...GitHubLog out when access token expires? · Issue #162 · captainepoch/huskyMitra uses access tokens with an expiration time and when a token expires, protected API endpoints start returning 401 Unauthorized. When that happens, Husky stops refreshing timelines but doesn't ...by silverpill

Replying to @⁨hongminhee@hollo.social⁩

@hongminhee @drfed

We are building a tool that checks whether an implementation supports a given FEP correctly. That saves developers from verifying everything by hand.

I am interested in this. What kind of tool you're building?

We have explored two approaches: Gherkin files (example: FEP-8b32) and JSON schemas (example: FEP-9967).

@helge worked on a tool that automatically validates activities against a JSON schema. The site is down now, but the code is available here: https://codeberg.org/funfedidev/schemas

I think this was a promising project.

cucumber.ioReference | CucumberGherkin uses a set of special keywords to give structure and meaning to