- From: Owen Shepherd <owen.shepherd@e43.eu>
- Date: Fri, 5 Dec 2014 18:00:12 +0000
- To: James M Snell <jasnell@gmail.com>, public-socialweb@w3.org
- Message-ID: <CAHUXVy6m_h3pu4P=RaOnb9oSmjibmWLD2sKyg2C1ezM+h8RefA@mail.gmail.com>
On 5 Dec 2014 17:48, "James M Snell" <jasnell@gmail.com> wrote: > > Let's look at the problem a different way: I'm a social application > platform. A user hands me some arbitrary piece of content (a blog > post, a wiki page edit, a status update, etc). When I get this > content, I want to create an Activity that communicates to the rest of > the world that something happened. Looking at the content, how am I > supposed to know that it contains a mention? Is the user only allowed > to mention people my system is aware of? If not, how do I determine > who or what is actually being mentioned. In order to mention people, > does the content the user give me HAVE to be HTML? If it's not HTML, > how do I determine what is a mention and what isn't? The content the user gives you can be in any format you want - its a UI issue and out of scope. The data you syndicate/pass through the API should be AS2 JSON with embedded HTML with optional inline metadata. > Once I receive that content and make the determination that it > contains a mention, whatever I do afterwards really is not all that > important. I can set the audience targeting fields, add things to the > as:tag property, send appropriate push notifications, etc. None of > that is really all that critical to scope out. But this is the important bit - how we interoperability convey that data. > The options put forward so far seem reasonable to me: > > 1. If it's plain text content, using @[id|display] is straight forward > and simple. My application can look at the plain text, determine what > is going on, and just do the right thing. I don't see any plain text content in AS2 so it's irrelevant. > 2. If it's HTML, some embedded microdata with > itemtype="http://www.w3.org/ns/activitystreams#Mention" or > typeof="Mention" or class="h-mention" or whatever works just fine. Sure. I Prefer RDFA over microdata because it's more concise and a better model, but inline metadata markup in our content makes sense as an optional feature. > 3. If it's JSON-LD, using the audience targeting and tag properties work great. LD being the whole syntax and transport model... > The key point is that given these three types of content, I can have a > reliable means of examining the content and determining that it > includes a mention. The only content you need to /examine/ is that coming in through your own UI. That is a matter for you and you alone. For everything else, as:tag/mention should be what you need. > - James > > On Thu, Dec 4, 2014 at 4:18 PM, Owen Shepherd <owen.shepherd@e43.eu> wrote: > > What's the semantic of mentioning somebody? Is my message supposed to be > > delivered to them, etc? Can I mention a non-entity? How does all of this fit > > together with tags? (I think the latter are probably orthogonal). > > > > Now, with that out of the way: > > > > If the purpose is to involve somebody in the conversation, then the correct > > method is to address them, by placing them in the "to" or "cc" property of > > the object > > If the purpose is just to let somebody know that they were mentioned, then > > we should of course add a mention property to the ActivityStreams schema. > > > > Now, I would suggest that, for the latter: > > > > There is a "mentions" property, which indicates that this object mentions > > something else (this would presumably be a list/in RDF, permitted to have > > multiple values) > > There is a "mention" activity, which is how the protocol lets you know that > > you were mentioned > > > > Now, as for "inline in content" metadata > > > > ActivityStreams' "content" property is HTML. That should be our primary > > focus. I don't really see a need for a method for encoding mentions in > > "plain text" content, because ActivityStreams doesn't carry such content > > The ActivityStreams schema is a linked data schema, which means that we can > > use RDF-y things to reference it. So it would seem that the natural syntax > > for mentioning somebody in HTML would be something like RDFa. In the RDFa vs > > Microdata comparison, RDFa wins here because it supports multiple > > vocabularies in a much smoother manner, doesn't have the impedance mismatch, > > and is a W3C REC. > > Therefore, I would suggest that we make a non-normative recommendation that > > producers mark up any inline mentions in RDFa, preferably Core 1.1. This > > would end up looking something like > > The ActivityStreams 2.0 spec editor is <a property="as:mentions" > > href="http://www.chmod777self.com/">James Snell</a> > > (or, for things which have an "@id" not equal to their URI) > > One of the chairs of the W3C Social Working Group is <a > > property="as:mentions" resource="acct:evan@e14n.com" > > href="https://e14n.com/evan">Evan Prodromou</a> > > > > Thereby any agent which wants to implement custom display can find the > > "as:mentions" properties, look at their target, and annotate them > > appropriately. > > > > For tags.. I'm not sure of the value of inline tagging at all for us. Its > > something Twitter does because of its' intentionally constrained environment > > that I'm not sure we should emulate. That's not to say that an implementaton > > can't emit hashtag references or whatever, but I'm not sure what utility we > > get from some form of inline tag referencing. Tagging is meta data of the > > purest form. > > > > > > > > Owen Shepherd > > http://owenshepherd.net | owen.shepherd@e43.eu > > > > On 4 December 2014 at 17:40, Ben Werdmüller <ben@withknown.com> wrote: > >> > >> > >> Theoretically I'd implement plain-text, HTML and JSON-LD versions, and > >> these suggestions seem reasonable. (In practice, I'd also add mf2 markup, > >> but of course, this is perfectly compatible with that.) > >> > >> I guess the thing I'm still concerned about is denoting mentions with an > >> @-sign. Is that a convention we're happy to accept across all platforms? Is > >> there a way for other platforms to say "I actually use a + or a ~ instead"? > >> > >> > >> On Thu, Dec 4, 2014 at 4:53 PM, James M Snell <jasnell@gmail.com> wrote: > >>> > >>> While I'm sympathetic to the HTML-markup approach being "the most > >>> flexible" option, I definitely question whether it's the right answer > >>> in all cases. For instance, if I'm sending a JSON-formatted push > >>> notification to a native mobile application, why would I force the > >>> application to use an HTML parser to extract the necessary metadata > >>> from a short snippet of text when a regex would do just fine? Second, > >>> it can become extremely verbose. Yes, I'll grant that when the > >>> @mention is actually rendered to the user in HTML it ought to be > >>> converted to a microdata/microformat type structure, but it should be > >>> possible to do in "plain text" also. > >>> > >>> Perhaps, then, we define things so that they can be represented both > >>> ways, with a simple translation between them: > >>> > >>> Mentions: > >>> > >>> In plain-text: > >>> @[http://www.twitter.com/jasnell|jasnell] > >>> > >>> In HTML: > >>> <span itemscope > >>> itemtype="http://www.w3.org/ns/activitystreams#Mention"> > >>> <a itemprop="href" href="http://www.twitter.com/jasnell"> > >>> <span itemprop="displayName">jasnell</span> > >>> </a> > >>> </span> > >>> > >>> (or) > >>> > >>> <span vocab="http://www.w3.org/ns/activitystreams#" typeof="Mention"> > >>> <a property="href" href="http://www.twitter.com/jasnell"> > >>> <span property="displayName">jasnell</span> > >>> </a> > >>> </span> > >>> > >>> In JSON-LD: > >>> > >>> { > >>> "@context": "http://www.w3.org/ns/activitystreams", > >>> "@type": "Mention", > >>> "href": "http://www.twitter.com/jasnell", > >>> "displayName": "jasnell" > >>> } > >>> > >>> Hashtags: > >>> > >>> In plain-text: > >>> #[http://www.twitter.com/hashtags/socialwg|socialwg] > >>> > >>> In HTML: > >>> <span itemscope itemtype="http://www.w3.org/ns/activitystreams#Tag"> > >>> <a itemprop="href" href="http://www.twitter.com/hashtags/socialwg "> > >>> <span itemprop="displayName">socialwg</span> > >>> </a> > >>> </span> > >>> > >>> (or) > >>> > >>> <span vocab="http://www.w3.org/ns/activitystreams#" typeof="Tag"> > >>> <a property="href" href="http://www.twitter.com/hashtags/socialwg "> > >>> <span property="displayName">socialwg</span> > >>> </a> > >>> </span> > >>> > >>> In JSON-LD: > >>> > >>> { > >>> "@context": "http://www.w3.org/ns/activitystreams", > >>> "@type": "Tag", > >>> "href": "http://www.twitter.com/hashtags/socialwg", > >>> "displayName": "socialwg" > >>> } > >>> > >>> - James > >>> > >>> On Thu, Dec 4, 2014 at 4:21 AM, Ben Werdmüller <ben@withknown.com> wrote: > >>> > > >>> > We've been considering various options for this in Known. I strongly > >>> > disagree with using Markdown or similar syntax for human-readable > >>> > content, > >>> > because that creates a burden to support a wholly different notation in > >>> > applications that are almost certainly web-based at some level. I do > >>> > think > >>> > HTML with embedded microformats / microdata is the most flexible option > >>> > for > >>> > this scenario. (It also doesn't tie applications into Twitter-style > >>> > @-syntax > >>> > - there's no need to let them dictate the convention.) > >>> > > >>> > Dave's approach for structured data also makes sense to me. You include > >>> > the > >>> > bare content, and then metadata that allows you to apply your own > >>> > markup, > >>> > rather than including some other microsyntax in bare text. That again > >>> > gives > >>> > application developers the most flexibility, although I would go so far > >>> > as > >>> > to change "username" to "@foo" in his example, to also allow different > >>> > notations. It then becomes a simple search and replace, with a strong > >>> > suggestion that usernames are prefixed with some notation to prevent > >>> > accidents with greedy searches. > >>> > > >>> > On Wed, Dec 3, 2014 at 7:36 PM, Dave Wilkinson <wilkie@xomb.org> wrote: > >>> >> > >>> >> How does this work when people put HTML as the content? Does this get > >>> >> parsed before or after entities are parsed? What happens when agents > >>> >> that > >>> >> see this as html don't parse them out? > >>> >> > >>> >> You'd have to really lock down how to parse the content field and what > >>> >> is/isn't acceptable there and what to do to remove ambiguity when you > >>> >> actually want some of that syntax to be untouched. > >>> >> > >>> >> I'd assume this isn't about routing. We have solutions for that. You > >>> >> just > >>> >> tag the object with who is mentioned, who it is going to, what it is > >>> >> in > >>> >> reply to, etc. > >>> >> > >>> >> This is just about marking up the content, which can currently be in > >>> >> any > >>> >> form? Right now, you'd just have "@foo" in your content, and the > >>> >> object > >>> >> would have an array of mentions which you would use to map the > >>> >> username to a > >>> >> domain and you would just mark it up as you need to. The convention is > >>> >> to > >>> >> look for an @ sign, although we don't (nobody does) specify the valid > >>> >> characters for a handle. > >>> >> > >>> >> The only better way I can think of is not to enforce some new markup > >>> >> language semantics within already arbitrary markup, but rather to just > >>> >> simply place in that mentions array the position and length of the > >>> >> substring > >>> >> in the content that represents the handle. Then I'd just replace that > >>> >> substring with my markup, whatever that is for my purpose, or if I > >>> >> don't > >>> >> care, I just display the content with whatever the publisher cared to > >>> >> use > >>> >> ("<a></a>" tag, @foo, +foo, etc) and it would already be presentable. > >>> >> Sooooo > >>> >> simple. > >>> >> > >>> >> My basic thesis: it's not content, it's metadata. while the html > >>> >> microformat folks can get away with it, it seems very out of place > >>> >> here. > >>> >> > >>> >> (I admit I am not able to write AS2 just from memory) > >>> >> > >>> >> { > >>> >> "content": "Hello @foo", > >>> >> "mentions": [{ > >>> >> "type": "person", > >>> >> "url": "http://example.com/foo > >>> >> "displayName": "Foo Bar" > >>> >> "username": "foo", > >>> >> "mentionedAt": [6, 4] > >>> >> }] > >>> >> } > >>> >> > >>> >> I can then turn that into "Hello <a href='http://example.com/foo '>Foo > >>> >> Bar</a>" or "Hello @<a href='http://example.com/foo'>foo</a>" or > >>> >> "Hello +<a > >>> >> href='http://example.com/foo'>foo</a>" or whatever. Conversely, if it > >>> >> is > >>> >> html in the content, the substring would be the entire anchor tag, > >>> >> maybe. It > >>> >> would be very obvious that it would always indicate the position in > >>> >> the > >>> >> content before any processing is done. > >>> >> > >>> >> On Wed, Dec 3, 2014 at 2:14 PM, Matthew Marum > >>> >> <vp-projects@opensocial.org> > >>> >> wrote: > >>> >>> > >>> >>> The use of @[id|label]. > >>> >>> > >>> >>> Matt > >>> >>> > >>> >>> On 12/3/14, 12:48 PM, "James M Snell" <jasnell@gmail.com> wrote: > >>> >>> > >>> >>> >On Wed, Dec 3, 2014 at 9:25 AM, Matthew Marum > >>> >>> ><vp-projects@opensocial.org> wrote: > >>> >>> >[snip] > >>> >>> >> > >>> >>> >> "@[Users:seed_paul_id:Paul] can you please help with this > >>> >>> >> opportunity?" > >>> >>> >> > >>> >>> >> > >>> >>> >> The first two parts form a unique identifier within a Sugar > >>> >>> >> instance > >>> >>> >> and > >>> >>> >> the final part is the display label. Frankly, I’m not sure why we > >>> >>> >> wouldn’t use the precedent that Twitter API has established here > >>> >>> >> in > >>> >>> >>terms > >>> >>> >> of syntax. I’ll leave any potential legal concerns to the > >>> >>> >> lawyers. > >>> >>> >> > >>> >>> > > >>> >>> >Which syntax specifically from the Twitter API? > >>> >>> > > >>> >>> >- James > >>> >>> > >>> >>> > >>> >>> > >>> >> > >>> > > >>> > > >>> > > >>> > -- > >>> > Ben Werdmuller > >>> > CEO & co-founder, Known > >>> > withknown.com | werd.io > >>> > +1 (312) 488-9373 > >>> > > >>> > Known, Inc | 421 Bryant St | San Francisco, CA 94107 > >> > >> > >> > >> > >> -- > >> Ben Werdmuller > >> CEO & co-founder, Known > >> withknown.com | werd.io > >> +1 (312) 488-9373 > >> > >> Known, Inc | 421 Bryant St | San Francisco, CA 94107 > > > >
Received on Friday, 5 December 2014 18:00:46 UTC