Events Interoperability: Validation, minimum requirements, common extensions

This thread should give an overview and discuss how current ActivityPub implementations that work with the Event object type handle them.

  1. Validation of events
  2. Minimum set of required attributes
  3. Common set of extended attributes.
3 Likes

I started a list to collect what different fediverse applications do when importing/validating an incoming remote event via ActivityPub.

This document is still likely far from being complete and correct. I hope it can be a good starting point.

2 Likes

What seems important:

  • Common handling of what events might get listed, and how they can be searched.
  • Way to handle event categories: common defaults and new ones as categories are very helpful filters for a search.
  • Way to sync the participant-count.
  • Common way to control per-object reply policy.
  • location
    • what types of address within the location should be supported
    • indicate that the event is solely online (and provide URL then)
  • Banner image
    • Whats the preferred “place” for it
    • Support of toot:focalPoint?
  • joinMode
  • Timezone control
  • Should contentMap, summaryMap, nameMap etc. be supported?

Proposals which include already implemented solutions will follow, feel free to add yours!

It would be cool if we could integrate something like this into one of my support tables.

This would be something to address depending on the results of #109 - Pastures: More debug-like or more production-like? - helge/funfedidev - Codeberg.org

Thanks for bringing this up. It took me some time to understand but seems great! After FOSDEM/OFFDEM I will come back to this, and ask you if I should need some more guidance, I hope thats O.K.

2 Likes

I think this thread could be a starting point for our discussion:

location

what types of address within the location should be supported ? indicate that the event is solely online (and provide URL then):

gancio example:
{
	"location": {
		"type": "Place",
		"name": "Nashville USA",
		"address": "Houston, Harris County, Texas, 77028, United States",
		"latitude": 29.8242366,
		"longitude": -95.2845581
	}
}
mobilizon example:
{
	"location": {
		"address": {
			"addressCountry": "France",
			"addressLocality": "Bourgoin-Jallieu",
			"addressRegion": "Isère",
			"postalCode": "38300",
			"streetAddress": "30 Avenue Alexandre Flemming",
			"type": "PostalAddress"
		},
		"id": "https://mobilizon.fr/address/e96ef587-9e7b-44ee-b96b-475b241adf5c",
		"latitude": 45.597374,
		"longitude": 5.243424,
		"name": "30 Avenue Alexandre Flemming",
		"type": "Place"
	}

}

  • location data (location name? address, what format? gps coords?)
  • online only events (attachment type link? isOnline attribute as mobilizon?)
  • mixed on/offline events (what about isOnline attribute then?)

at least a location or an attachment link are mandatory?
what about if we want to organize an event of which we do not yet know the location?
should we introduce a locationStatus like ['ONLINE', 'UNKNOWN', 'MIXED', 'IRL']?


Banner image

Whats the preferred “place” for it?

could we use attachments with type Document / Banner ?

Support of toot:focalPoint?

probably not mandatory?


joinMode

not mandatory?


Timezone control

not mandatory?


Should contentMap, summaryMap, nameMap etc. be supported?

not mandatory?


Common handling of what events might get listed, and how they can be searched.

should we implement a “follower only” event? how does this make any sense with applicationActor?


categories

Way to handle event categories: common defaults and new ones as categories are very helpful filters for a search.

starting point:

2 Likes

other people have already done this work, Core Public Event Vocabulary and Event - Schema.org Type.

For example, with respect to the topic on the type of place: eventAttendanceMode - Schema.org Property

We should find a synthesis between what is specified there and some properties that already have a place in Activity Pub: for example for images I see that in schema.org format there is image attribute while in AP we already have attachment, I would stay on the latter.

1 Like

Friendica has implemented the events as well. See here for a list of fields we support:

2 Likes

Thanks for that! Do you maybe also know/can quickly point us to how Friendica validates incoming events?

There a also some schema proposals for event schedules here: Modelling Opportunity Data 2.0

1 Like

We simply store the values. There is not a lot f validation here.

Some questions:

What do you think about multiple locations and or logical locations as stated in the specification?

location:

Indicates one or more physical or logical locations associated with the object.

At first I thought one could get around by using a property like Mobilizons isOnline. But as it seems a valid use case that in the future one only wants to reveal an online-link or a physical location to accepted attendees this is not possible anymore.

At OFFDEM we discussed about also noting whether the event has a physical location (secret or just not known yet) which would also cover hybrid (on and offline) events.

Looking forward to hear your thoughts!

I agree, none of these should be mandatory.

@les The ActivityPub specification also has an image attribute https://www.w3.org/ns/activitystreams#image. The link Activity Vocabulary leads to the object type Image not the property image, take care.

Indicates an entity that describes an image for this object. Unlike the icon property, there are no aspect ratio or display size limitations assumed.

I think that this one suites the best for a banner image of an event, what do you think? (forgetting for a moment, that other ActivityPub implementations exist…, I don’t know if this is used anywhere in the wild yet.)