taquiones.net is a Fediverse instance that uses the ActivityPub protocol. In other words, users at this host can communicate with people that use software like Mastodon, Pleroma, Friendica, etc. all around the world.

This server runs the snac software and there is no automatic sign-up process.

Site description
Mi instancia en el fediverso
Admin email
root@taquiones.net
Admin account
@victor@taquiones.net

Search results for tag #activitypub

@reiver ⊼ (Charles) »
@reiver@mastodon.social

I may have written a JSON-LD schema for JSON Resume.

It is defined in terms of ActivityPub.
For example:

'Resume' is a sub-type of an ActivityPub 'Object'. There are some new fields defined. Etc.

...

Now the question is — where do I put it?

Do I create a pull-request to the JSON Resume resume-schema repo?

Do I create a FEP?

Do I put it somewhere else?

Daniel Supernault »
@dansup@mastodon.social

Loops Playlists will soon federate!

They will likely only be compatible with other Loops servers as we're using a new type of OrderedCollection.

Loops Playlists feature

Alt...Loops Playlists feature

@reiver ⊼ (Charles) »
@reiver@mastodon.social

My personal desire would be to create a format from scratch (because you are in control, you get something bespoke to your needs, and it is personally satisfying), but —

I think there is probably an advantage to using something (such as JSON resume) that already has wide adoption.

I guess that makes me inclined towards the latter.

...

So, if I go that way, I would have to decide: plain JSON or JSON-LD.

@reiver ⊼ (Charles) »
@reiver@mastodon.social

RE: mastodon.social/@reiver/116597

More on a resume / CV on the Fediverse on Social Web.

Another option could be to use something like "JSON resume":

jsonresume.org/

github.com/jsonresume/resume-s

It seems to be popular.

It isn't JSON-LD. Although I think it would be straightforward to translate it to JSON-LD, if that was desired.

@reiver ⊼ (Charles) »
@reiver@mastodon.social

On Tags (including Hash-Tags) in ActivityPub.

2/

A new version of ActivityPub could extend the type of "tag" from:

Object | Link

to:

Object | Link | xsd:string

And that would make the following valid ActivityPub:

"tag": ["apple", "banana", "cherry"]

Of course, it would have to be specified how to interpret this. (Ex: as "type":"Hashtag", or whatever.)

@reiver ⊼ (Charles) »
@reiver@mastodon.social

On Tags (including Hash-Tags) in ActivityPub.

1/

I think new developers coming to ActivityPub want to write something like:

"tag": ["apple", "banana", "cherry"]

It is unfortunate that that isn't valid ActivityPub. But, that it must instead be:

"tag": [
{
"type": "Hashtag",
"name": "#apple"
},
{
"type": "Hashtag",
"name": "#banana"
},
{
"type": "Hashtag",
"name": "#cherry"
}
]

...

@reiver ⊼ (Charles) »
@reiver@mastodon.social

RE: mastodon.social/@reiver/116597

There is also the other question of — would the resume / CV be JSON-LD.

On one hand, if it was in JSON-LD, it would make it machine-legible similar to ActivityPub.

On the other hand, I don't think anyone is going to write JSON-LD (especially HTML embedded in a JSON string value) by hand. But, I do think some people will want to write their resume by hand.

It feels like user-experience is fighting with JSON-LD based machine-legibility.

@reiver ⊼ (Charles) »
@reiver@mastodon.social

How could you represent a resume / CV on the Fediverse and Social Web? Where would you put it? Etc?

I think it is tempting to put the whole resume in the Actor document.

But, it is probably better for the Actor document to point (rather than include) it. And, have the resume / CV live somewhere else.

It should probably be done in a way that let's people have multiple resumes / CV. For example, for different roles / career tracks, etc.

@reiver ⊼ (Charles) »
@reiver@mastodon.social


CONGRATULATIONS!

The operation succeeded, and you are now a participant in the Social Web Incubator Community Group. A separate form lets you resign the group.

Alt...CONGRATULATIONS! The operation succeeded, and you are now a participant in the Social Web Incubator Community Group. A separate form lets you resign the group.

django »
@django@social.coop

RE: mediaformat.org/2026/05/postin

Hey look, first post from a custom client using ActivityPub API

Evan Prodromou 🇨🇦🇺🇸🇬🇷🇵🇸 »
@evan@cosocial.ca

For the , we need a profile of OAuth to use for accessing the actor's data. There's a suggested flow here:

github.com/swicg/activitypub-a

There's an example client here:

swicg.github.io/activitypub-ap

It tries discovery via RFC 8414 or getting the endpoints straight from the actor.

It then provisions a client ID using CIMD, FEP d8c2, or DCR (in that order).

It then tries to do an authorization code flow.

I'm interested in seeing it tested with more ActivityPub API servers.

@reiver ⊼ (Charles) »
@reiver@mastodon.social

Remote Inbox Architecture

2/

The Remote Inbox server deals with incoming activities, objects, etc, from other users..

The front-end can get the inbox (and other feeds') data from the Remote Inbox server.

(You'd probably want to store cached data from the Fediverse elsewhere from these two servers, as I've said before. But, that is a separate thread.)

@reiver ⊼ (Charles) »
@reiver@mastodon.social

Remote Inbox Architecture

1/

This, the Remote Inbox Architecture, is an architecture for a Fediverse back-end server that I think could be useful.

Here is how it works — there are (at least) 2 servers involved: (1) the main back-end server, and (2) a remote inbox server.

The actor file on main back-end server "points" the inbox to the remote server.

It separates the user's content from the front-end related functionality

...

@reiver ⊼ (Charles) »
@reiver@mastodon.social

On moving an actor's content.

4/

Or, instead of using the ActivityPub 'Update' activity —

Couldn't we use the ActivityPub 'Move' activity.

w3.org/TR/activitystreams-voca

With the "origin" and "target" fields.

Where "origin" contains the old ID URL, and "target" contains the new ID URL.

.

        {
            "@context": "https://www.w3.org/ns/activitystreams",

            "origin":   "htps://example.com/users/joeblow/objects/150197",
            "target":   "http://host.example/~/objects/019e37",
        }

Alt... { "@context": "https://www.w3.org/ns/activitystreams", "origin": "htps://example.com/users/joeblow/objects/150197", "target": "http://host.example/~/objects/019e37", }

@reiver ⊼ (Charles) »
@reiver@mastodon.social

On moving an actor's content.

3/

There a many different conventions we could come up with to allow an ActvityPub 'Update' activity to be used to change an object's "id" field.

We (the Fediverse developer community) just need to pick one that everyone is willing to implement.

For example, perhaps the "origin", "result", or "target" field should be used:

w3.org/TR/activitystreams-voca

w3.org/TR/activitystreams-voca

w3.org/TR/activitystreams-voca

Or —

...

@reiver ⊼ (Charles) »
@reiver@mastodon.social

On moving an actor's content.

2/

Could an ActivityPub 'Update' activity be used to move objects from one server to another server?

Could an 'Update' activity be used to change an object's "id" field?

After all, the "id" is used to identity what is being changed. It is the targeting mechanism.

How can you provide the old "id" to target the (old) object you want to change the "id" of, while also providing a new "id"?

w3.org/TR/activitypub/#update-

...

7.3 Update Activity

For server to server interactions, an Update activity means that the receiving server SHOULD update its copy of the object of the same id to the copy supplied in the Update activity. Unlike the client to server handling of the Update activity, this is not a partial update but a complete replacement of the object.

The receiving server MUST take care to be sure that the Update is authorized to modify its object. At minimum, this may be done by ensuring that the Update and its object are of same origin.

Alt...7.3 Update Activity For server to server interactions, an Update activity means that the receiving server SHOULD update its copy of the object of the same id to the copy supplied in the Update activity. Unlike the client to server handling of the Update activity, this is not a partial update but a complete replacement of the object. The receiving server MUST take care to be sure that the Update is authorized to modify its object. At minimum, this may be done by ensuring that the Update and its object are of same origin.

@reiver ⊼ (Charles) »
@reiver@mastodon.social

On moving an actor's content.

1/

One of the things that comes up on the Fediverse from time to time — is the ability for people to move their accounts.

For example, someone started off at:

@joeblow@example.com

But, now wants to "move" to:

@misterx@host.example

There is a mechanism to do that.

That mechanism moves their followers, their followees, BUT —

It does NOT move their content over!

That is a problem. Could we address this‽

...

pixelfed boosted

Daniel Supernault »
@dansup@mastodon.social

I've been working on improving Loops federation in preparation to reuse it and it's powerful builder/handler/validation pattern for Pixelfed!

This will solve many federation issues in Pixelfed, like missing comment threading, mentions, blocks and unblocks and much more.

Then I will abstract it into a reusable Laravel package, so any laravel project can easily add federation support in minutes

I also submitted a NLnet grant application for this 🤞

github.com/dansup/laravel-acti

@reiver ⊼ (Charles) »
@reiver@mastodon.social

ActivityPub being treated as JSON is a good thing.

5/

JSON-LD has similar complexity to RDF. They are actually related formats.

ActivityPub uses JSON-LD, and thus has the potential for the same type of developer user-experience problems as RSS 1.0.

But I think ActivityPub is its own "RSS 2.0".

Why‽ Because people can and do treat ActivityPub as JSON (rather than JSON-LD).

That is a strength. It makes ActivityPub much simpler and easier to understand than JSON-LD.

@reiver ⊼ (Charles) »
@reiver@mastodon.social

ActivityPub being treated as JSON is a good thing.

4/

RSS 2.0 won the RSS war.

I think the reason RSS 2.0 beat RSS 1.0 is because the RDF-based syntax of RSS 1.0 made it complex. It made it too complex.

While both RSS 1.0 and RSS 2.0 were XML-based, RSS 2.0 wasn't RDF-based. RSS 2.0's syntax was much simpler and easier to understand.

I think that was a big reason why RSS 2.0 won — it had a better developer user-experience.

...

@reiver ⊼ (Charles) »
@reiver@mastodon.social

ActivityPub being treated as JSON is a good thing.

3/

It would be reasonable for anyone to assume that RSS 2.0 is a newer version of RSS 1.0. And there were many who tried to promote that view.

But, really they were completely different formats.

The "RSS" in 1.0 and 2.0 didn't even stand for the same thing.

1.0 RSS = RDF Site Summary

2.0 RSS = Really Simple Syndication

...

@reiver ⊼ (Charles) »
@reiver@mastodon.social

ActivityPub being treated as JSON is a good thing.

2/

There are different versions of RSS.

Most people who know of RSS (if they even know it at all) know of RSS 2.0. But, it wasn't the only version of RSS.

(RSS isn't even the first technology of its kind.)

When the online developer community became aware of RSS, there was a fight between two version of RSS:

RSS 1.0 versus RSS 2.0

...

@reiver ⊼ (Charles) »
@reiver@mastodon.social

ActivityPub being treated as JSON is a good thing.

1/

Some of us are old enough to remember RSS and blogs.

Some of us are old enough to remember the absurd levels of hype that blogs and RSS attracted — similar to the modern AI hype and recent crypto hype. During that era, it felt like everyone any their pet cat wanted a blog with an RSS feed. During that era, there was a get-rich-quick fever around blogs and RSS.

Web-Browsers even added built-in support for RSS.

@reiver ⊼ (Charles) »
@reiver@mastodon.social

I think ActivityPub Partial Updates won't work well with attachments or tags.

Not unless there is a way to reliably just target the item in the attachments or tags array that you want to modify. AFAIK, there isn't.

You have to download the old version of the whole attachments or tags array first, update it locally, and then upload the whole (updated) thing. This creates a race-condition.

See also: mastodon.social/@reiver/116446

Maho 🦝🍻 »
@mapache@hachyderm.io

Hear me out, if we can integrate these 4, in a seamless frictionless integrated experience for both, companies and users, we could have a nice alternative to that is actually not crap.

Any interest?

A diagram titled "An ActivityPub-based LinkedIn" is presented on a light blue background. The image features four colored rectangular boxes arranged in a grid around a central horizontal bar. The top row includes a light purple box with the text "Professional Profile and Badges" and "fediprofile," alongside a dark purple box with the text "Social Graph and Updates" and "mastodon." A dark blue horizontal bar in the center contains the text "Single Login Identity." The bottom row consists of a black box with the text "Job posts and discussions" and "lemmy," and an orange box with the text "Achievements and Certifications" and "badgefed."

Alt...A diagram titled "An ActivityPub-based LinkedIn" is presented on a light blue background. The image features four colored rectangular boxes arranged in a grid around a central horizontal bar. The top row includes a light purple box with the text "Professional Profile and Badges" and "fediprofile," alongside a dark purple box with the text "Social Graph and Updates" and "mastodon." A dark blue horizontal bar in the center contains the text "Single Login Identity." The bottom row consists of a black box with the text "Job posts and discussions" and "lemmy," and an orange box with the text "Achievements and Certifications" and "badgefed."

Week in Fediverse »
@weekinfediverse@mitra.social

🗳

Evan Prodromou 🇨🇦🇺🇸🇬🇷🇵🇸 »
@evan@cosocial.ca

For ActivityPub developers: in a Signature header, what is the key ID?

An actor ID:3
A public key object ID:11
Something else (please specify):1

Fedilab Apps »
@apps@toot.fedilab.app

is a new social network working with . This is not an app where you can connect your Mastodon, Pixelfed or PeerTube account.
There is no web version and no API because the ActivityPub server runs on the device itself. That's the whole challenge behind this project.
If there is more engagement, I plan to build a desktop version and even sync between different devices.

The official account for all announcements is @HolosSocial

More: holos.social/how-it-works

@reiver ⊼ (Charles) »
@reiver@mastodon.social

In ActivityPub, these are all equivalent:

"type":"Banana"

"type":["Banana"]

"type":{"@id":"Banana"}

"type":[{"@id":"Banana"}]

"type":{"id":"Banana"}

"type":[{"id":"Banana"}]

"@type":"Banana"

"@type":["Banana"]

"@type":{"@id":"Banana"}

"@type":[{"@id":"Banana"}]

"@type":{"id":"Banana"}

"@type":[{"id":"Banana"}]

Grow Your Own Services 🌱 »
@homegrown@social.growyourown.services

There are a LOT of Fediverse projects out there!

If you're a techy person interested in self-hosting Fediverse platforms, you might like to check out the "Delightful Fediverse" list which tries to feature every Fediverse project available:

🌱 codeberg.org/fediverse/delight

(It's worth noting the meaning of the emoji next to project names, as the status of different projects varies.)

Adam »
@adamsdesk@fosstodon.org

Updated: List of Helpful Mastodon Resources

- Add Connected Places
- Add delightful fediverse clients
- Add delightful fediverse deveopment
- Add delightful fediverse experience
- Remove orphan link

Handmade list of resources for the federated social network Mastodon covering, how to use, find an instance, find people, tools and more.

adamsdesk.com/posts/list-masto

The Real Grunfink »
@grunfink@comam.es

I've just published version 2.92 of , the simple, minimalistic instance server written in C. It includes the following changes:

Changed default: for newly created instances, disable_inbox_collection is set to true (see snac(8) for more information). The reason is because it seems to be used for harrasing people.

Changed default: for newly created instances, disable_history is set to true (see snac(8) for more information). The reason is because archived history files don't reflect reality after posts are deleted or modified (they always have been an ugly kludge).

Changed default: in previous versions, posts with a scope of unlisted were shown in public pages and RSS feeds. Now, they are no longer shown. If you want to get back to previous behaviour, use a new toggle in the User Settings section (see snac(1) for more information).

New admin configuration option: if the purge_static value is set to true in server.json, each user's static directory is explored and those files there that are no longer attached to any post or referenced anywhere are deleted. See snac(8) for more information about those cases where you may not want to enable this option.

Allow serving files from subdirectories of the static/ subdirectory (contributed by la_ninpre).

Minor tweak to webfinger code to handle Hubzilla's peculiarities.

Fixed a search case where URLs to GotoSocial statuses were misidentified as accounts.

Accounts that follow you are now marked with a thumb-up emoji, because followers are adorable people.

Fixed some account export errors.

Fixed an incorrect hash in post links.

Show an account's location link in the people page, if they have one.

Mastodon API: Fixed hashtags loosing the link after editing a post, minor tweak in access token processing (contributed by trondd555).

Drop usage of PATH_MAX (contributed by sergiodj).

New Polish translation (contributed by kpm).

Updated German and Czech translations (contributed by zen and pmjv).

https://comam.es/what-is-snac

If you find useful, please consider buying grunfink a coffee or contributing via LiberaPay.


@reiver ⊼ (Charles) »
@reiver@mastodon.social

How much Fediverse software would fail if the "to" or "cc" of an activity contained:

WWW.W3.ORG/ns/activitystreams#

Rather than:

w3.org/ns/activitystreams#Publ

I.e., an upper-case Internet domain.

WWW.W3.ORG versus www.w3.org

(What about WwW.w3.OrG?)

ozoned »
@ozoned@btfree.social

@reiver ⊼ (Charles) »
@reiver@mastodon.social

ActivityPub specifications don't seem to provide a way to do Idempotent POSTs to your outbox.

That seems like a problem for C2S to me.

Networks are unreliable. You cannot tell the difference between an unreceived request vs an unreceived response. You'll get unwanted identical duplicate activities.

Although it isn't difficult to solve — a convention just needs to be picked.

For example, a new Idempotency field could be added to the JSON-LD payload.

Week in Fediverse »
@weekinfediverse@mitra.social

Adam »
@adamsdesk@fosstodon.org

Updated: List of Helpful Mastodon Resources

- Add RSS Tooter
- Add Masto Reader

Handmade list of resources for the federated social network Mastodon covering, how to use, find an instance, find people, tools and more.

adamsdesk.com/posts/list-masto

Maho 🦝🍻 »
@mapache@hachyderm.io

I just added a new theme to @fediprofile , this time for those of your friends that want to showcase their portfolio of photos, so these are shown as a grid.

All the links would continue to be there just not as the main character.

@reiver ⊼ (Charles) »
@reiver@mastodon.social

@reiver ⊼ (Charles) »
@reiver@mastodon.social

There is a comparison that can be made between ActivityPub and Event-Sourcing.

3/

With ActivityPub, Activities are often applied to an object. That object gets assigned an ID in the form of a URL.

(And, by URL I mean URL, URI, IRI, etc.)

One doesn't have to read through all the Activities in an inbox, outbox, etc to get the final state of an object.

One can just get the JSON-LD document from the object's ID URL to get the final state.

@reiver ⊼ (Charles) »
@reiver@mastodon.social

There is a comparison that can be made between ActivityPub and Event-Sourcing.

2/

With Event-Sourcing, you can "project" the events to get another (often more peformant) view of the data in the events.

Without having to incur the cost of having to read all the events to figure out the final state.

...

@reiver ⊼ (Charles) »
@reiver@mastodon.social

There is a comparison that can be made between ActivityPub and Event-Sourcing.

1/

With Event-Sourcing, your source-of-truth is an append-only series of events.

Ex: USER_REGISTERED, EMAIL_ADDRESS_VERIFIED, PASSWORD_CHANGED, etc.

In ActivityPub, this is similar to the inbox, outbox, etc being an append-only series of Activity.

Ex: Create, Like, Undo, etc.

...

@reiver ⊼ (Charles) »
@reiver@mastodon.social

Just thinking out loud —

If we wanted to support resumable uploads in C2S API, then — we probably need some URL to upload the file chunks to.

When a user POST to their own outbox, the HTTP "201 Created" response will have a "Location" header that provides a URL.

Maybe that could be used as the upload URL.

Or, maybe the JSON-LD document at that URL might contain a URL under the "object" field that could be used as the upload URL.

Other options too

@reiver ⊼ (Charles) »
@reiver@mastodon.social

I can think of different ways to support resumable uploads with ActivityPub, but — just to see what others are doing —

PeerTube seems to have resumable uploads already.

PeerTube seems to use this protocol for it:

github.com/kukhariev/node-uplo

I like that it uses Content-Range in the protocol. I would have done the similar.

@reiver ⊼ (Charles) »
@reiver@mastodon.social

It seems as if the uploadMedia ActivityPub extension does not provide a way to resume an upload that didn't previously compete.

w3.org/wiki/SocialCG/ActivityP

If, for example, you are working with large files (such as video files) this would matter.

Because if you uploaded 1GB, and the upload stopped, you would want to resume at where it stopped, and not have to upload from the beginning again.

This would be important for ActivityPub C2S adoption.

Evan Prodromou 🇨🇦🇺🇸🇬🇷🇵🇸 »
@evan@cosocial.ca

Hooray movies! 🎉 🎥🍿

movies.pub/movie/Q107105860

UPDATE: I'm at the hackathon this weekend, working on mapping movies from Wikidata to ActivityPub objects. It's not for end users. If you don't like JSON, these URLs won't be for you.

I'll try to make that clear from now on.

It's nice for me to share my progress. If you don't like it or you don't care, please be as respectful to me as you would be to other people on the Fediverse sharing things they made.

william ⁂ maggos »
@wjmaggos@liberal.city

In the video in the post I just boosted, @anildash says is now boiling the frog in a slow move from email towards lock-in. And of course they work with Nazis etc.

What we need is an effort between newsletter publishers like etc and reader apps like @wallabag to build an ecosystem like podcasting. To make it smooth while remaining totally open. I'd argue for using in addition to RSS to support boosts. Then we need decentralized money.

🗳

Evan Prodromou 🇨🇦🇺🇸🇬🇷🇵🇸 »
@evan@cosocial.ca

Which of the top 4 Fediverse server projects will be the first to implement the ActivityPub API?

Mastodon:15
Pixelfed:4
Lemmy:1
PeerTube:3

Evan Prodromou 🇨🇦🇺🇸🇬🇷🇵🇸 »
@evan@cosocial.ca

Two fixes I submitted to are in the latest release. I am so amped to see this happen; I cannot emphasize enough how important it is for established platforms to support the ActivityPub spec correctly. I love seeing this happen. Thank you Misskey for making the Fediverse a slightly easier place to write software!

github.com/misskey-dev/misskey

Week in Fediverse »
@weekinfediverse@mitra.social

julian »
@julian@activitypub.space

Combining groups and payments into a fedi-forward service for content creators

Unfortunately I was only able to join for the third and last day of FediForum, but the energy was quite strong even then!

There were some interesting discussions with @ozoned@btfree.social @reiver@mastodon.social and others (@johannab@cosocial.ca, @j12t@j12t.social, etc) about fediverse payments and growing the open social web — this spanned two session slots, actually!

One thing that came out strongly was the need for content creators to get paid. This directly echoes @paige@masto.canadiancivil.com's talk from @fedimtl earlier this year. The other half was reflecting on the lack of appropriate value-adds for donators, such as private groups.

We have all of these things, but separately. Perhaps combining them into an easy-to-use service is the secret sauce that will open up the fediverse to content creators.[...]

There is work with the Interledger Foundation (@jeremiah@alpaca.gold) to make the financial side happen. There's ongoing work with CrowdBucks (@reiver@mastodon.social) to connect fediverse accounts with payment gateways. On the threadiverse side, each of us (NodeBB, Lemmy, Piefed) have support for private groups, but not federated private groups.

This might be an opportunity for the threadiverse implementors to work together (especially with @mayel@bonfire.cafe and the rest of the SWICG Groups Task Force (@groups)) to bring federate private groups out of the realm of theoretical possibility and into reality.

David Revoy »
@davidrevoy@framapiaf.org

Character study of the GoToSocial sloth, a future new member, when I'll be drawing the group of mascots of the Fediverse.

Directly inspired by the GotoSocial logo by @Anna − CC-BY-SA 4.0 gotosocial.org/


A digital sheet of concept with four time the same character: a tiny cute sloth. First post is happy with a little heart nearby their head. A pose expresses surprise. Another full body pose shows the sloth in a three, curious. Last pose is about the sloth eating leaves and being happy excited about it.

Alt...A digital sheet of concept with four time the same character: a tiny cute sloth. First post is happy with a little heart nearby their head. A pose expresses surprise. Another full body pose shows the sloth in a three, curious. Last pose is about the sloth eating leaves and being happy excited about it.

@reiver ⊼ (Charles) »
@reiver@mastodon.social

Both Mastodon and Pixelfed seem to attach images as ActivityPub/ActivityStreams "type" = 'Document'.

I would have expected "type" = 'Image'.

'Document' isn't wrong. It is valid.

But, I would have expected the more specific type of 'Image'.

@reiver ⊼ (Charles) »
@reiver@mastodon.social

I think it would be better if instead of Fediverse software outputting the following for ActivityPub/ActivityStreams Notes, Articles, etc:

"attributedTo": "mastodon.social/users/reiver",

It would instead output something more like:

"attributedTo": {
"id":"mastodon.social/users/reiver",
"type":"Person",
"name":"Charles",
"preferredUsername": "reiver",
"icon": {...},
"image": {...},
}

This way the Activity* document contains everything needed to render it.

Fedilab Apps »
@apps@toot.fedilab.app

For those who have questions about . I've seen a lot written recently, and since the project is young, it's normal that things stay ambiguous or get misunderstood. This is a thread, with one post per remark most often read, and a direct answer.

@reiver ⊼ (Charles) »
@reiver@mastodon.social

Was the original intent of the ActivityPub / ActivityStreams "name" field to be a title?

(It seems as if some software is using it that way.)

w3.org/TR/activitystreams-voca

@reiver ⊼ (Charles) »
@reiver@mastodon.social

What should the file-extension for ActivityPub / ActivityStreams documents be?

I.e., for application/activity+json data?

I've been using .activity

Ex: filename.activity

(The extension cannot be .json or .jsonld if you want to be able to detect it just based on the file-extension.)

What do you think?

@reiver ⊼ (Charles) »
@reiver@mastodon.social

RE: mastodon.social/@reiver/116471

If an ActivityPub Actor is something that has an "inbox" or an "outbox" (i.e., it could have just one or both) then —

Perhaps we should also be talking about "sources" and "sinks", too. Where —

An ActivityPub Source is an Actor with just an "outbox" (and no "inbox").

And, an ActivityPub Sink is an Actor with just an "inbox" (and no "outbox").

@reiver ⊼ (Charles) »
@reiver@mastodon.social

And, if this is the case, then every ActivityPub / ActivityStreams library should be on the look-out for "inbox" and "outbox" fields on everything.

Doesn't matter what it is. An "Event", an "Image", a "Link", a "Place", a "Video", even things in other namespaces.

@reiver ⊼ (Charles) »
@reiver@mastodon.social

What makes an ActivityPub Actor an Actor?

I think it is probably a bad idea to just restrict it to things with 'type': "Application", "Group", "Organization", "Person", and "Service". Restricting it to just those would mean you couldn't have new actor types (and sub-types) in the future.

So then, do we do it in a duck-typing way? And if "yes", how?

Maybe if something has an "inbox" OR and "outbox" it is an Actor. I.e., it could have just one of those.

@reiver ⊼ (Charles) »
@reiver@mastodon.social

Can an ActivityPub 'Place' also be an Actor?

w3.org/TR/activitystreams-voca

With followers, an outbox, etc.

That could be useful for both real-life places, and fictional places in stories, and in video games.

🗳

Fedilab Apps »
@apps@toot.fedilab.app

is a project that lets users run their own server on a device (Android/iOS). Would a desktop version interest you? For purists, dynamic DNS could replace the relay entirely, which is simply not realistic on mobile.
Main account: @HolosSocial
Your opinion?

Yes, with relay support:33
Yes, purist mode (no relay):23
No, mobile is enough:4
No interest:23

@reiver ⊼ (Charles) »
@reiver@mastodon.social

Should an ActivityPub 'Place' be used to represent a fictional place?

w3.org/TR/activitystreams-voca

Such as a fictional place in a story, or a video game?

Week in Fediverse »
@weekinfediverse@mitra.social

@reiver ⊼ (Charles) »
@reiver@mastodon.social

Would you play a Fediverse game?

Would you play a Fediverse game about Meta Humans?

julian »
@julian@activitypub.space

Catodon federating deletes of objects it doesn't own

Hey @panos@catodon.rocks, now that I'm tracking errors encountered, I've got a bit more visibility into things that normally would've just been caught and ignored.

Today I received a Delete(Object) from Catodon associated with a user from catodon.rocks.

Two things:

  1. Its object referenced an item outside of catodon.rocks, and so it failed NodeBB's actor-object match check. Normally people can't delete other peoples' posts, so I think this might be a mistake?

  2. The activity's audience matches the activity's attributedTo. While you're certainly allowed to put anything you want in there, threadiverse software uses it to point to a group actor. Wondering if this was intentional.

Thanks!

ruben boosted

your auntifa liza 🇵🇷 🦛 🦦 »
@blogdiva@mastodon.social

dot-social is confused with the because one of its strengths is how well it manages tags.

you can tell @MastodonEngineering focused on optimizing hashtags when they didn't have the server power needed for search. you can easily find info, people & communities with little server power.

so Mastodon.social is the target of because it is the site where you can see what’s possible with & that is not controlled by billionaire parasites 🧵…

@reiver ⊼ (Charles) »
@reiver@mastodon.social

3/

If Agents aren't going away (and instead represent a new type of Star Trek like user-experience) then —

Which makes things less worse:

(a) having them use Fediverse technologies?,

(b) having them popularize an alternative platform to the Fediverse?

...

Given the choices, I suspect that we are probably better of if they use Fediverse technologies.

@reiver ⊼ (Charles) »
@reiver@mastodon.social

2/

AI is absolutely hyped to absurd levels!

(A lot like how the Web, Linux & Open-Source, Blogs & RSS, etc were at one time hyped to absurd levels.)

There are many things that I suspect will survive the eventual AI bubble pop and crash.

AI Agents will probably be one of the things that survives.

Here is the thing...

@reiver ⊼ (Charles) »
@reiver@mastodon.social

1/

If you haven't been paying attention the happenings in AI, you may have missed that the attention has shifted away from the generative models (such as LLMs, and diffusion models, etc) to — Agents.

At first, a single Agent. And now, groups of Agents working together.

Interestingly, ActivityPub has a place for Agents. In fact, 2 places:

w3.org/TR/activitystreams-voca

w3.org/TR/activitystreams-voca

(Mastodon renders one of these as a "Bot" account.)

Week in Fediverse »
@weekinfediverse@mitra.social

Elena Brescacin »
@elettrona@poliversity.it

Thanks to @pfefferle I've learnt about tags.pub, a service that proposes to fill in the gap of missing fediverse-wide hashtag search; basically, following "@ [hashtag] @ tags . pub" you get posts from the global fediverse, tagged with that keyword.

This has created an issue though: being a WordPress user myself, I follow the "WordPress" hashtag. Well, after TagsPub integration into WordPress activitypub plugin, too many off topic sites came on my timeline. Because there's the questionable habit to place "WordPress as a hashtag, by creators who would like to get better discovered.
Can I say it rude? I've blocked at least a dozen accounts because they where photoblogs and I'm a totally blind user.
Does that mean they're spammers? NO. It means they use the wrong hashtag.
"WordPress" isn't the appropriate tag for indicating "this is my blog, come read it". The appropriate one is FediBlog.

Let me suggest Matthias Pfefferle and even @FediTips to explain it. This fact of "FediBlog" hashtag isn't too much publicized, and people ignore this.

@activitypub @fediverse @wordpress

3 ★ 2 ↺

Victor Moral ⁂ »
@victor@taquiones.net

@grunfink@comam.es, el autore de (el más mejor servidor del mundo mundial) clarifica en ese texto que la IA para contribuir mejor que no.
PRs must not incorporate any material generated by or with the assistance of any so-called "generative AI" tool or LLM.

The Real Grunfink »
@grunfink@comam.es

I've just published version 2.85 of , the simple, minimalistic instance server written in C. It includes the following changes:

Quoted posts are now shown.

Added metadata to remote users in the people page (contributed by dandelions).

Fixed memory leak (contributed by dandelions).

Fixed user matching (contributed by rakoo).

Rendering visibility conditionally, with lesser reach if needed (contributed by byte).

Added a button next to a follow notification to follow back.

Fixed typo in man page (contributed by spky).

Updated Czech and German translations (contributed by pmjv and zen).

https://comam.es/what-is-snac

If you find useful, please consider buying grunfink a coffee or contributing via LiberaPay.


Terence Eden »
@Edent@mastodon.social

RE: colours.bots.edent.tel/posts/6

Ok, I need some help, please.

The reply to this will have links to the QuoteRequest the bot received, the QuoteAuthorization which it saves, and the Accept message it returns.

Can anyone figure out why the Quote permissions aren't showing on external servers?

The Real Grunfink »
@grunfink@comam.es

I'm glad to announce the release of version 2.75 of , the simple, minimalistic instance server written in C. It includes the following changes:

Added support for scheduled posts (for this to work correctly, users will have to set their time zone, see below).

The user can now select a working time zone. This will be used to correctly parse the local date and time of a scheduled post.

Fixed incorrect poll vote format, which was causing problems in platforms like GotoSocial.

Mastodon API: added support for /api/v1/instance/peers.

Added a new snac-admin helper script (contributed by shtrophic).

In the web UI, posts are separated by the <hr hidden> tag; it's invisible in graphical browsers, but it separates post clearly in text-based browsers.

Some Finnish, Spanish, Czech and Russian translation updates and fixes.

https://comam.es/what-is-snac

If you find useful, please consider buying grunfink a coffee or contributing via LiberaPay.

This release has been inspired by the song Pictures on the Wall by .

The Real Grunfink »
@grunfink@comam.es

A week ago, I published a version of (a simple, minimalistic instance server written in C) that supported localisation of its web UI. Today, just seven days later, and thanks to collaborations, there are 10 languages already available.

You, people, are GREAT. Thank you very much.

1 ★ 1 ↺

Victor Moral ⁂ »
@victor@taquiones.net

We're all gonna die ☄ (@eschaton@comam.es)
https://comam.es/snac/eschaton

De la mano del muchache creador de , y su inagotable optimismo con el amor y la vida, nos llega ahora una instancia para saber si llega o no llega el meteorito de las narices.

Week in Fediverse »
@weekinfediverse@mitra.social

Ángel boosted

The Real Grunfink »
@grunfink@comam.es

I'm glad to announce the release of version 2.69 of , the simple, minimalistic instance server written in C. Again, this version has been possible thanks to the very valuable help from great people. It includes the following changes:

Added support for subscribing to LitePub (Pleroma-style) Fediverse Relays like e.g. https://fedi-relay.gyptazy.com to improve federation. See snac(8) (the Administrator Manual) for more information on how to use this feature.

Added support for following hashtags. This is only useful if your instance is subscribed to relays (see above).

Added support for a Mastodon-like /authorize_interaction webpoint entry, that allows following, liking and boosting from another account's Mastodon public web interface. To be able to use it, you must reconfigure your https proxy to redirect /authorize_interaction to snac (see snac(8)).

Some fixes to accept Event objects properly (like those coming from implementations like https://gancio.org/ or https://mobilizon.fr).

Added some caching for local Actor objects.

Hashtags that are not explicitly linked in a post's content are shown below it.

Fixed broken NetBSD build (missing dependency in Makefile.NetBSD).

The user profile can now include longitude and latitude data for your current location.

Mastodon API: implemented limit= on notification fetches (contributed by nowster), implemented faster min_id handling (contributed by nowster), obey the quiet public visibility set for posts, other timeline improvements (contributed by nowster).

Reduced RSA key size for new users from 4096 to 2048. This will be friendlier to smaller machines, and everybody else out there is using 2048.

If the SNAC_BASEDIR environment variable is defined and set to the base directory of your installation, you don't have to include the base directory in the command line.

Fixed a bug in the generation of the top page (contributed by an-im-dugud).

Added support for Markdown headers and underlining (contributed by an-im-dugud).

https://comam.es/what-is-snac

If you find useful, please consider contributing via LiberaPay: https://liberapay.com/grunfink/

This release has been inspired by the song Nine Hundred Miles by .

ruisan boosted

The Real Grunfink »
@grunfink@comam.es

Happy new year. I'm glad to announce the release of version 2.68 of , the simple, minimalistic instance server written in C. This release couldn't have been possible without the help of several fellow developers. It includes the following changes:

Fixed regression in link verification code (contributed by nowster).

Added ipv6 support for the https frontend connection (contributed by hb9hnt).

New "Like by URL" operation (contributed by dheadshot).

Added support for a Mastodon-like /share link sharing URL, like the one provided by sites like https://mastodonshare.com/ and such. To be able to use it, you must reconfigure your https proxy to redirect /share to snac (see snac(8)).

New linux landlock (sandboxing) support for enhanced security (contributed by shtrophic). It's still a bit experimental, so you have to enable it explicitly by recompiling with the WITH_LINUX_SANDBOX directive (e.g. make CFLAGS=-DWITH_LINUX_SANDBOX).

Some search fixes regarding repeated matches.

The export_csv cmdline operation now exports the CSV files inside a user's export/ subdirectory instead of the current directory.

All CSV files to be imported must now be stored inside a user's import/ subdirectory instead of the current directory.

Mastodon API: more timeline paging tunings (contributed by nowster), post language selected in apps is properly set.

The command-line operation note new reads the LANG environment variable to set the post's language.

A new command-line operation, note_unlisted, allows posting "unlisted" or "quiet public" posts.

The maximum number of entries in users' RSS feeds and in outboxes can now be set via the max_public_entries variable in the server.json file.

Fixed broken support for Audio objects.

Made xmpp and mailto URLs clickable.

https://comam.es/what-is-snac

If you find useful, please consider contributing via LiberaPay: https://liberapay.com/grunfink/

This release has been inspired by the painting Judith Slaying Holofernes by .

gyptazy boosted

The Real Grunfink »
@grunfink@comam.es

I'm glad to announce the release of version 2.65 of , the simple, minimalistic instance server written in C. It includes the following changes:

Added a new user option to disable automatic follow confirmations (follow requests must be manually approved from the people page).

The search box also searches for accounts (via webfinger).

New command-line action import_list, to import a Mastodon list in CSV format (so that Mastodon Follow Packs can be directly used).

New command-line action import_block_list, to import a Mastodon list of accounts to be blocked in CSV format.

https://comam.es/what-is-snac

If you find useful, please consider contributing via LiberaPay: https://liberapay.com/grunfink/


The Real Grunfink »
@grunfink@comam.es

I'm glad to announce the release of version 2.63 of , the simple, minimalistic instance server written in C. It includes the following changes:

The server can now act as a proxy for all image, audio or video media coming from other account's posts (both from the Web UI and the Mastodon API). This way, other servers will see media requests coming from the server IP, not the user's, improving privacy. This is controlled by setting the proxy_media boolean field to server.json to true.

The strict_public_timelines option introduced in the previous release now works correctly.

Fixed a crash when posting from the links browser.

Fixed some repeated images from Lemmy posts.

Fixed a crash when posting an image from the tooot mobile app.

Updated FreeBSD rc script: the server process is now managed by the daemon(8) utility (contributed by @stefano@bsd.cafe).

RSS feeds are now in 2.0 version instead of 0.91.

https://comam.es/what-is-snac

If you find useful, please consider contributing via LiberaPay: https://liberapay.com/grunfink/donate

This release has been inspired by the song New Moon (Dark Phase) by .

The Real Grunfink »
@grunfink@comam.es

I'm glad to announce the release of version 2.61 of , the simple, minimalistic instance server written in C. It includes the following changes:

Migration from a Mastodon account to a snac one has been implemented. Please see snac(8) (the administrator manual) for more information.

Mastodon API: fixed timelines/public (it was showing less posts that it should).

Fixed over-zealous caching to the public timeline.

Some HTML tweaks and fixes to the web interface.

https://comam.es/what-is-snac

If you find useful, please consider buying grunfink a coffee: https://ko-fi.com/grunfink

This release has been inspired by the painting The Hands Resist Him by .

Johannes Brakensiek »
@lazarus@fosstodon.org

Uhm, well, that's a completely reasonable collection of source code repositories. Software, everything written in basic by @grunfink

codeberg.org/grunfink

I'd like to use at least two of them: , the and static site generator and , an instance.

The Real Grunfink »
@grunfink@comam.es

I'm glad to announce the release of version 2.51 of , the simple, minimalistic instance server written in C. It includes the following changes:

Support for custom Emojis has been added; they are no longer hardcoded, but read from the emojis.json file at the server base directory. Also, they are no longer limited to string substitutions, but images as external URLs are also supported (see snac(8) for more information).

Fixed a bug that caused some notifications to be lost when coming from a user in the same instance.

Added an additional check for blocked instances (sometimes, posts from blocked sites that were ancestors of legit posts were 'leaking' into the timeline).

On OpenBSD, if the disable_email_notifications server flag is set to true, unveil() is not called for the execution of the /usr/sbin/sendmail binary and pledge() doesn't set the exec promise.

https://comam.es/what-is-snac

If you find useful, please consider buying grunfink a coffee: https://ko-fi.com/grunfink

This release has been inspired by the album Eternal Embers by .


Maho 🦝🍻 »
@mapache@hachyderm.io

Part 3 of "A Guide to Implementing ActivityPub in a Static Site (or Any Website)" is just out the oven!

In this blog post, I explain how to make your blog discoverable in the Fediverse as an account, and also address some of the annoying pitfalls I encountered.

Full article here: maho.dev/2024/02/a-guide-to-im

If you like it don't forget to follow the @blog !

-sites -development -web