+ https://as-test-harness.mybluemix.net/#about
Amy added https://as-test-harness.mybluemix.net/#about to https://rhiaro.co.uk/bookmarks/
+ https://as-test-harness.mybluemix.net/#about
Amy added https://as-test-harness.mybluemix.net/#about to https://rhiaro.co.uk/bookmarks/
+ http://www.chmod777self.com/2014/10/w3c-activity-streams-first-public.html
Amy added http://www.chmod777self.com/2014/10/w3c-activity-streams-first-public.html to https://rhiaro.co.uk/bookmarks/
+ https://www.w3.org/wiki/Activity_Streams/Examples
Amy added https://www.w3.org/wiki/Activity_Streams/Examples to https://rhiaro.co.uk/bookmarks/
Recently I've been trying to wrap my head around the implicit vs. explicit post types debate (in the Social Web WG, indieweb community, and elsewhere). Here is some analysis of the different perspectives, and report on my own experiences so far.
I think each side of the debate about explicit vs implicit types are misaligned, due to conflation of Objects and Activities. I think Objects (like blogposts) needn't have explicit types, but Activities (like the act of creating a post) should do.
Thanks to Tantek, Aaron, elf Pavlik, Chris and everyone whose conversations I've listened in on in #social and #indiewebcamp IRC channels for discussing this stuff with/around me.
Indieweb development starts with thinking about UI. The reason for thinking about different kinds of posts comes from a desire to display some posts differently to others. But rather than declaring them outright, one can infer how to display them based on the properties of a post (see also IndieWeb Posts by aaronpk.
"explicit post/object types are architecture-centric design, rather than user-centric design" - tantek, #indiewebcamp irc
Another rationale against explicit post types is that it encourages posting clients to constrain users regarding what kind of posts they can create.
"...content types dictate the kinds of content you actually allow people to create with your software" - benwerd, The tyranny of content types
Most mainstream social networks now have a generic posting interface, that allows one to add things like photos, videos, people tags, etc, without forcing you to choose what type of post you want to make first.
Some people started with explicit post types and ran into problems when structuring their software around this idea. TODO: Citation from aaronpk in irc in March/April that I can't find right now.
If you include a slug for a post type in your URLs and decide to change the post type, this is definitely a pain. I figured this pretty early and dropped it from Slog'd. See also: Update URL Scheme issue for p3k.
On the other hand:
"but including type [in URL] because I like clustering by type in a day" - tantek, #indiewebcamp irc
... which I think relates to querying, discussed later.
Often photo-type-post vs article-type-post is thrown up: ie. if you start with an article, then edit it to add a photo, does the post type change? I completely agree that typing based on content doesn't make sense here. When I talk about post types, I'm referring to types for like, bookmark, repost, log/metrics (eg. food, sleep), where they may look like a note in terms of content, but aren't. I display different icons for all of these at the moment, and you'll note that twitter for example displays retweets differently in the timeline.
Conclusion: in the indieweb community, so far, everything created is considered a post
(a h-entry
in microformats), and display differences can be inferred from properties of the post.
title
.like-of
.in-reply-to
.ActivityStreams2.0 has explicit object types and explicit activity types. It's easy to conflate them; I think this is what is happening when discussing types in AS2 with indieweb people, and I certainly had this problem for a while.
Taking an action generates an Activity
, which might result
in an Object
(like a post).
Contrary to indieweb stuff so far, AS2 allows for the idea that not every action on the social web results in a post. Having been immersed in indieweblogworld for ages, this was briefly a hard sell, but then I started to think of social actions (activites) I might want to take - that it's reasonable to want to publish in a feed - that I probably don't need to create a post for. Eg:
I don't publish any of these activities on my site yet. There are some activities I do publish with posts (or plan to imminently), that don't necessarily (I might need convincing on some fronts) need to be posts:
An Activity
can be generated for any action.
Create
activity, for which the object
is the post created. Save
activity, for which the object
is the page and the result
is a post about my having bookmarked the page. Update
activity for which the object
is the post being edited, but there is no new post as a result
.Like
activity for which the object
is the post being liked, but there is no new post as a result
(if you're into that sort of thing, so far I'm not).I strongly feel that all Activity
should have URIs so that if it doesn't result
in a post, it can still be interacted with (eg. you can like my edit). (However, this presents another point for confusion: when do I like a post, and when do I like the fact you published it (the create activity). Anyway, this is for another time..).
Since activities are generated as a result of an action, not explicitly created by a user (unlike objects), arguments for not explicitly typing them fall down:
If you want to generate an activity stream from your actions, we do get an additional argument for explicit types of objects: it makes it much easier to generate a suitable Activity
.
Explicit types for objects or activities make it easy to query by type. Inferring types - particularly from a combination of properties - complicates this a lot. I recently temporarily dropped quicklinks to /articles and /notes in Slogd after removing sioc:BlogPost
and sioc:MicroblogPost
as explicit post types made it suddenly more complicated to get them. Given a stream of many people's activities from all over the place how do you filter for specific things?
Displaying an activity (the fact that someone did something) is different to displaying an object. You might want to form a sentence ("alice likes bob's tweet") without caring what the properties of the object
or possible result
are. It's easier to figure out how to display it if it just has a type, without needing to follow links to the object
or possible result
to infer what's going on.
I guess... If you want to take a bunch of objects and generate an activity stream from them, and they don't have explicit types, it's totally up to you (an implementation detail, aka plumbing) how you decide what types the corresponding Activity
s have.
I'm not sure if it would be nice to have something in the AS2.0 spec to help with consistently deciding how to infer activity types from object properties. Maybe it doesn't matter.
...Wait, is this ISSUE-4? Lack of explicit mention of activities or objects makes it hard to tell.
Activity
.Activity
-generating action needs to result in a post, but it's cool if it does.Activity
s need types. Object
s (like posts) do not (necessarily).Activity
types.I went through the lists of Activity
types and Object
types in current draft of AS2.0 vocab and did a first pass at things I am using, might use and probably won't use. I'll publish this in another post.
I drew lots of diagrams of how I'd turn my different types of posts into Activity
s based on their properties (how I'd infer activity types from object properties). I'll also type these up for another post.
Activity
is a subclass of Object
in AS2. Practical and conceptual differences could be discussed in more depth, but include things like ephemerality of activities vs objects.
Further discussion (possibly): https://lists.w3.org/Archives/Public/public-socialweb/2015Apr/0048.html
Last modified:
I'm serializing the microformats2 vocabulary into RDF; repo on github.
Disclaimer: This post is (not necessarily coherant) notes as I go along.
Useful notes by Tom Morris about mf2 to RDF mapping on the microformats wiki. I updated the namespace to use the one suggested there (http://microformats.org/profile/
).
Everything starting with h-
looks like it's a class. Typically RDF classes are capitalised so this makes me cringe, but I'll cope.
Woah, there are a lot of properties. Seventy unique properties. I didn't realise. On the wiki most don't have a description, many are duplicated in the list, and none of them seem to have their own description page (and thus no URIs to refer to them with). Pasting them into a spreadsheet was the quickest way to de-dup and alphabetise them. Now I'm working through one at a time, adding descriptions and mapping them to existing properties in FOAF (because many are obvious), VCard (because many (all?) are derived from this), ActivityStreams 2.0 (because SocialWebWG) and hesitantly Dublin Core and SIOC. Where they map to something well-described in RDF, I don't bother with rdfs:comment
and domain
and range
of their own, but I'll add for those with no good sameAs
mappings.
dt-reviewed
same as dt-published
? If not, why do reviews get special treatment with regards to differentiation between when they're written and published, and nothing else does?e-content
? Couldn't find one on the wiki, so made one up that is compatible with AS2.0 content, with additional caveat about including markup, which is explicit on the mf2 wiki: "The contents of something like a post, including markup and embedded elements."e-description
and e-instructions
sub-properties of e-content
?I keep getting caught out by AS2.0 terms that are in the JSON-LD document but are actually deprecated (the JSON-LD contains no information other than property and class names and sometimes types; I have to remember to check the written docs). Eg. as2:author
-> as2:attributedTo
.
category
. Am I missing something? Oh wait, tag
will do it.p-description
from p-summary
?p-education
should contain a nested h-card
(of school and location). Doesn't that mean it should be an e-
or have I misunderstood that completely?p-education
is "an education h-calendar
event" but h-calendar
doesn't exist, it's h-event
. Probably just a typo? Ditto p-experience
.name
property for Actors
(only displayName
). Interesting.label
'new in vCard4' but vCard4 says it's deprecated, and in any case was for address labels, so not sure what use this is in mf2.p-note
for specifically?p-reviewer
not just p-author
?sex
and gender-identity
are part of it, but all I can see is hasGender
.AS2.0 has rating
but it's explicitly defined as "a non-negative decimal number between 0.0 and 5.0 (inclusive) with one decimal place of precision". MF2 says it's a number between 1 and 5. I think even less specification is better, as ratings come in come in many forms. Anyway, because I'm not venturing into SKOS, I'm owl:sameAs
ing them for the time being.
Update: Dropped all domains and ranges because all properties in microformats2 are actually global.
Last modified: