#social 2018-12-21

2018-12-21 UTC
aaronpk joined the channel
#
rialtate[m]
I can't seem to find anywhere the "type" attribute is defined. Are there any rules for what this string can be? (I mean for extension object types of course)
#
rialtate[m]
Meaning acceptable chars, etc
#
rialtate[m]
I assume there must be some restrictions because context mapping ("foo:whatever") has to follow the : format
xmpp-social joined the channel
#
JasonRobinson[m]
@rialtate:matrix.org: as long as your document is proper json there should be no restrictions? Unless I misunderstood the question sorry
#
rialtate[m]
Json-ld has about 6 chapters on the subject and about all I can grok is that colons are indeed handled specially... But if I understand correctly then by using a context map explicitly I can have an IRI with colons in it (after an anchor perhaps) but then it might still need to be % escaped. Probably better just to avoid colon altogether
#
Chocobozzz
Hello everyone, i would like to implement playlists in peertube and i would like to have some feedbacks regarding how i imagine to represent them in ap voc. I plan to use the "Collection" object https://www.w3.org/TR/activitystreams-vocabulary/#dfn-collection but I'm not sure how to specify the objects (contained in the playlist) position
#
Chocobozzz
do you have some ideas? (or know an existing ap software that implements playlists?)
#
Chocobozzz
rialtate[m]: i'm sorry i don't understand
#
rialtate[m]
Chocobozzz: a Collection of Audio objects
#
rialtate[m]
Sorry you asked position... OrderedCollection
#
rialtate[m]
There is also the Listen activity
#
Chocobozzz
rialtate[m]: yes but in https://www.w3.org/TR/activitypub/#collections it is said "An OrderedCollection MUST be presented consistently in reverse chronological order."
#
Chocobozzz
a playlist is not ordered chronologically
#
rialtate[m]
Oh yeah. I've always thought that rule is dumb
#
Chocobozzz
or maybe it concerns only the collections presented in the document (outbox, followers etc)
#
rialtate[m]
Yeah reading that it seems to be specific to ActivityPub OrderedCollections defined in that section, although it could definitely be worded better
#
Chocobozzz
Okay thanks rialtate[m]. But if i use ordered collections, I think I should add a "position" field in the Add activity https://www.w3.org/TR/activitypub/#add-activity-outbox
#
Chocobozzz
and for reorders, I would just have to "Remove" the entry that is moved, and "Add" to its new position
#
rialtate[m]
Move activity? I could swear there was a before and after property but I guess not. I think that would be cleaner though
#
Chocobozzz
A Create activity with the Move object? (https://www.w3.org/TR/activitystreams-vocabulary/#dfn-move) it's a good idea!
#
Chocobozzz
But I think the purpose of this Move is to move an object from a collection to another collection
#
rialtate[m]
Huh? No Move is an Activity so no Create
#
rialtate[m]
Origin and Target don't *have* to be different collections... Not if you add the position or before/after properties
#
rialtate[m]
Technically they don't even have to be collections. You could Move a Page to a different url for example
#
Chocobozzz
Okay! For the Move in Create, in fact I thought we were supposed encapsulate non listed activities in https://www.w3.org/TR/activitypub/#server-to-server-interactions in a Create activity
#
rialtate[m]
So maybe even like { type:Move, origin: { position:1 }, target: { position: 5 } }
#
rialtate[m]
Lol not 100% sure thats valid
#
rialtate[m]
What part says wrapping it? I don't see it
#
Chocobozzz
I cannot find it, you must be right. There is no reason we cannot use directly AS activities since AP extends it
#
Chocobozzz
I have to change my "View" and "Dislike" implementations then
#
rialtate[m]
Numbering with just position might be ambiguous though. Complete(r) object: { type:Move, object: uniqid, origin: { id:collection1, position:3 }, target: { id:collection1, after:othersongid } }
#
Chocobozzz
nice, but I don't think we need the position in origin since the reveiver should know where the object is
#
Chocobozzz
receiver*
#
rialtate[m]
True
#
rialtate[m]
It might help for making sure activities processed out of order don't go haywire, that was my instinct anyway
#
Chocobozzz
And if position might be ambiguous, maybe I should use "after" in the Add activity too: { type: Add, object: ID, actor: ID, target: { id: collection1, after: othervideoId } (if no "after", it means we add the video inside an empty playlist)
#
rialtate[m]
I suppose that's why Updates require the complete object. Come to think of it, playlists are short enough collections that sending an Update with the new ordering might be a better way to go anyway
#
Chocobozzz
it was indeed also a solution, because if a remote instance does not receive just 1 Add or Move, it could mess up the whole playlist
#
rialtate[m]
The spec sorely needs object versioning, or some kind of directed graph
#
Chocobozzz
an update seems to be more robust and simpler
#
rialtate[m]
Without versioning multiple actors doing updates and clock slew, all bets are off :)
#
Chocobozzz
yep :/
#
rialtate[m]
I suppose the authoritative server could make some kind of version number in the fragment be a signifier and then the remote implementations can be sort of naive while it deconflicts according to the owner's policies
#
rialtate[m]
Might work :-p
#
Chocobozzz
Yep sure, like an "updated date". Then the receiver does not process data where the date is < of its last update date
#
rialtate[m]
If they are too naive they might think the fragment signifies a unique document, and if you did the updated date thing as a field, in order for signatures to work it would have to be the remote time that would still suffer from clock sync :(
#
Chocobozzz
right
#
rialtate[m]
Seems to be a recurring theme with this protocol that there are a ton of ways to represent things that all have different problems and no "good" way to represent certain things, well most things, other than basic microblogging, and even that has a ton of issues :/
#
rialtate[m]
Hmm... Maybe clock sync isn't such a problem if the "current" time is in the http sig/header...
#
rialtate[m]
I don't remember if that's capable of microsecond resolution though.. Maybe not
#
rialtate[m]
Even with microseconds sync would be ok but slew still a problem sigh
ben_thatmust joined the channel
#
sknebel
vasilakisfil: just saw your questions about microformats etc: #indieweb-dev on Freenode is a better place for those
vitalyster, jdormit, distopico, KjetilK, raucao, edsu, puck, rhiaro, martijnvdven, nightpool[m], erincandescent, zauberstuhl[m], csarven, pantherse and decentral1se joined the channel
#
dansup
Chocobozzz: I think FunkWhale might have implemented this already
decentral1se joined the channel