2012-11-18 UTC
kennyluck, kennyluck_, tantek, simeons and zztr joined the channel
# 01:41 simeons I have a question I'd appreciate some guidance on: if the goal of a microformat is to attach a flag to a DOM element, would the mere presence of the microformat be sufficient? In other words, the only reason for the microformat to exist would be to attach a boolean piece of meta-data whose value is always true.
# 01:43 tantek simeons, microformats class names add semantics to elements, just as tag names do e.g. "p", "h1", "blockquote"
kennyluck joined the channel
# 01:45 tantek none of those are typically interpreted as "flags" or "boolean", we don't say that "p" or "h1" are boolean flags on a DOM element for example
# 01:46 tantek where did you get the phrasing about "goal … attach a flag to a DOM element" ?
# 01:46 tantek and "… attach a boolean piece of meta-data whose value is always true …" ? I've never heard semantic expressions stated that way before. Is that from a particular URL?
# 01:47 simeons hey, tantek! I haven't run into you at a conference in over a decade.
# 01:47 simeons the verbiage comes from the problem I have to solve
# 01:47 simeons one possible solution involves creating a new microformat. this is de novo work so no URL
# 01:48 simeons Here is the problem definiiton:
# 01:48 tantek rarely is the solution a new microformat. what's the problem you're trying to solve?
# 01:49 tantek (more often the solution is better explanation/documentation of how to use existing microformats to solve the new problem)
# 01:49 simeons Attach meta-data to potentially any piece of content in a Web page to identify that the content should not be "shared".
# 01:49 simeons "shared" here is a fuzzy term, typically related to certain programmatic functionality of social network plugins
# 01:49 simeons specific use case:
# 01:50 tantek could you rephrase that in terms of what a user would do?
# 01:50 simeons 1. A blogger wants to enable her users to share more content on Pinterest.
# 01:50 tantek I believe permalinks solve that problem currently :)
# 01:51 simeons 2. Blogger installs Wordpress plugin that enables "auto-sharing" of any image, meaning, it drops a "Pin It" button on any image.
# 01:51 simeons 3. Blogger doesn't want to share some images
# 01:52 simeons Q: how does the blogger signal to the plugin (or one of several existing plugins) which images should not be shared (the less frequent exception case)
# 01:52 simeons How would a permalink solve this?
# 01:52 tantek for 2-3, it's more reliable to signal the positive ("wants to share") rather than the negative
# 01:53 simeons Yup, but that would be terrible for the blogger and will never be adopted
# 01:53 simeons Have to focus on the users and the users want to mark up the exceptions
# 01:53 tantek the converse would be worse for the blogger, if they forgot to mark some content as don't share and then it was shared.
# 01:53 simeons that's what they want
# 01:54 simeons it makes sense
# 01:54 tantek I haven't encountered users that want to remember to mark things as things NOT to do
# 01:54 tantek they typically instead share with a restricted set
# 01:54 simeons it also makes sense in the case of third-party services integrating into blogs
# 01:54 tantek UIs don't say "don't share with random people"
# 01:54 simeons they wouldn't want their "control" images, e.g., buttons, to be shared
# 01:54 tantek they all do sharing prefs based on *positive* statements
# 01:54 tantek so no, I dispute that marking up negative exceptions is what's right for users
# 01:55 simeons Tantek, I'm seeing this problem right now with a dozen+ bloggers
# 01:55 tantek as demonstrated by existing interfaces (which all provide only *positive* exceptions, not negative
# 01:55 simeons You are thinking of a different interface
# 01:55 simeons There are two "input" mechanisms here:
# 01:56 simeons 1. manual content entry, typically in Wordpress (85+% market share)
# 01:57 simeons 2. completely automated, third party, machine-generated content, e.g., my company (Swoop) injecting images into blog content based on what bloggers ask us to do
# 01:57 Loqi !calc 2. completely automated, third party, machine-generated content, e.g., my company (Swoop) injecting images into blog content based on what bloggers ask us to do
# 01:58 simeons In both cases, meaning both a human and a system, need a way to tell an "auto-sharing" plugin not to share certain images
# 01:58 simeons Marking up which images to share will never work with UGC
# 01:58 tantek I think that's going to be an endless dyke plugging task
# 01:58 simeons the whole reason for the existence of the auto-sharing plugins is that bloggers don't want to markup by hand
# 01:59 simeons The second source--machine-generated content--is perfectly sustainable
# 01:59 tantek sounds like the plugins need to be improved, rather than the bloggers doing the markup
# 01:59 simeons The first source--human-generated--is also sustainable since the images that should not be shared are the exceptions
# 01:59 tantek it's not maintainable/sustainable because bloggers (WordPress) install plugins that post or embed other things to their blog, other images, etc.
# 01:59 simeons The plugin implementations are far less than perfect
# 02:00 simeons However, that's not the reality
# 02:00 tantek and having to "fix" every one of those is unsustainable
# 02:00 tantek marking up such negatives is just a future whack-a-mole tax that you'd be imposing on bloggers
# 02:00 simeons The reality is that there is demand for auto-sharing and there are several plugins that provide this and they have fast growing downloads
# 02:00 tantek I've actually been seeing a bit more of a backlash against all the auto-sharing hype
# 02:01 simeons The net result is broken pages and bloggers having to choose between installing the plugins they want to use vs. not
# 02:01 tantek and for a while lots of sites where NASCAR-buggering up their UIs with every share button available
# 02:01 tantek but there's been a huge backlash due to performance problems
# 02:01 tantek I was working on this whole problem space for a while - Web Actions
# 02:01 tantek in fact, still am, but more of a backburner kind of thing
# 02:01 simeons In the meantime, though, if there is a super-simple standard for identifying what not to share, it is possible to get the plugin authors to respect it
# 02:02 simeons the key is that is has to be *insanely* simple
# 02:02 simeons like a single class name
# 02:02 tantek yeah - we've not had much (any?) success with such "not to XYZ" type formats/standards etc.
# 02:02 tantek the biggest unintended failure has of course been rel="no-follow"
# 02:03 simeons Well, I'm not sure there was ever a real problem they were solving before
# 02:03 simeons can't stop the spammers
# 02:03 simeons very tough problem
# 02:03 tantek but now most of the social content silos put rel="no-follow" on *first* party links
# 02:03 simeons so, with something like h-no-share, my company alone can put it on thousands of sites
# 02:04 tantek e.g. everything you link to on Twitter, Facebook etc. is all no-followed
# 02:04 tantek even though you're not a 3rd party on your own profile
# 02:04 simeons and the bloggers and blog networks we use can spread to about 30,000 bloggers
# 02:04 simeons Yup, no-follow is a mess
# 02:04 tantek the worst is that "no-follow" is totally misnamed
# 02:04 simeons Publishers protecting themselves in a way
# 02:05 tantek I think this is a problem in general with such negative functionality framing
# 02:05 simeons Never let reason stand in the way of how people use a standard :)
# 02:05 tantek you end up promising something you can't deliver
# 02:05 tantek and it gets twisted into whatever people want it to mean
# 02:05 simeons we could restrict this "no-share" thing to images
# 02:06 simeons to give it stronger semantics
# 02:06 simeons and less chance of being used in strange ways
# 02:06 tantek doesn't matter - e.g. browser plugins will ignore it
# 02:06 tantek what you're really looking for is something like "do-not-show-a-share-widget"
# 02:06 simeons I think I did not explain the plugin behavior
# 02:07 simeons you are correct
# 02:07 tantek and that's VERY different from the implied meaning of "no-share"
# 02:07 simeons what these plugins do is they float a Pin It button in the image
# 02:08 tantek is this for *any* widget or the specific widget that your company makes?
# 02:08 simeons and this button can show even in control images, e.g., action buttons, or images a designer is using to show text
# 02:08 tantek e.g. are you going to get the "AddThis" and "ShareThis" makers to respect your additional markup?
# 02:09 simeons We and lots of others that put content in blogs are affected because the plugins try to put Pin It buttons everywhere -- they don't know what's content that makes sense to share and what's not
# 02:09 simeons they even try to put Pin It buttons in images that are smaller than the button itself
# 02:09 simeons that's crappy implementation but bloggers are so hungry for pins
# 02:10 simeons they install the plugins anyway
# 02:10 simeons AddThis/ShareThis is not a problem
# 02:10 simeons They don't float UI over arbitrary DOM elements w/o being asked first
# 02:10 tantek a-ha - "the plugins try to put Pin It buttons everywhere -- they don't know what's content that makes sense to share and what's not" - I think ARIA might already have a solution for this!
# 02:10 simeons The ShareThis guys are behind this
# 02:10 tantek images that are "content" vs. decorative or UI
# 02:10 simeons I talked to the founder yesterday
# 02:10 tantek not only do we not need a new microformat for this, we don't need a microformat at all
# 02:11 simeons how would you single this?
# 02:11 tantek the key is again, NOT doing a negative framing
# 02:11 tantek identifying what is the common positive framing of these things you don't want "pins" next to
# 02:11 tantek and I think the key aspect is that they are presentational rather than content
# 02:12 simeons I like that shift in semantics
# 02:12 simeons not sure what to call it though
shaners joined the channel
# 02:18 tantek the nice thing is, that by re-using the existing semantic ARIA role attribute for this functionality, and doing so consistent with its semantics, you'll be at least incrementally improving the accessibility of such sites too
# 02:18 simeons here is a use case that cannot (from my reading) be served by this
# 02:18 simeons let me find a link for yo
# 02:19 tantek shaners - because root microformats classes start with "h-"
# 02:19 simeons If you are not running adblock, you should see Swoop UI (button and perhaps icons)
# 02:20 tantek and we're essentially saying that an h-as-note is a more specific kind h-entry
# 02:20 simeons These are all actionable and hold interesting content behind
# 02:21 simeons role=presentation would instruct the user agent to hide them, preventing access to valuable free content (savings, etc.)
# 02:21 shaners tantek: i'll wait till you and simeons are done with this thread. then we can hash this out. i don't to intermingle these two conversations
# 02:21 tantek shaners - there's not much more to your question than what I said above.
# 02:21 simeons from the blog post you suggested: "For any element with a role of presentation and which is not focusable, the user agent MUST NOT expose the implicit native semantics of the element (the role and its states and properties) to accessibility APIs. However, the user agent MUST expose content and descendant elements that do not have an explicit or inherited role of presentation."
# 02:22 tantek simeons - the cryptic spec text you quote is difficult to interpret, and by attempting to literally interpret it you will likely come to the wrong conclusions.
# 02:22 tantek e.g. "user agent MUST NOT expose the implicit native semantics" - seriously WTF
# 02:23 simeons 'cos I'd love to be able to use something as simple as role="presentation"
# 02:23 tantek nearly every word there is loaded with particulars dependent on the context
# 02:23 simeons I hope none of the standards I was involved with at W3C, OASIS and JCP did this but, you know what, I can hardly be confident :)
# 02:23 tantek so as long as the images you're marking up *are* presentational (rather than content posted by the user), then yes, role="presentation" is correct
# 02:24 tantek calling things "user agents" instead of browsers
# 02:24 tantek renaming URL to URI to IRI instead of just sticking with "URL" as the term
# 02:24 simeons fake attempts at generality
# 02:24 tantek nearly all standards specs obfuscate their meaning to a ridiculously high level of abstraction to the point where only a handful of people on the planet can read/understand them
# 02:24 simeons like pompous academic talk
# 02:24 tantek a bunch of us are *trying* to fix this, slowly, incrementally, painfully
# 02:25 simeons yeah, I pulled out of standards work after becoming disillusioned
# 02:25 simeons easy though: I was helping create the Web Services standards mess
# 02:25 tantek some of us just started (and joined) other standards work instead ;)
# 02:26 tantek the infamous WS-* (expanded as WS-deathstar) stack!
# 02:26 simeons OK, thanks for your help on this and for pushing back
# 02:26 tantek simeons I took a look at the recipe URL you posted
# 02:27 simeons do you think role=presentation makes sense for the icons & button?
# 02:27 simeons (if you saw any icons)
# 02:27 tantek and big green Thanksgiving backing questions button
# 02:28 simeons an auto-sharing plugin would try to put "Pin It" buttons inside those images
# 02:28 simeons creating a total mess on the page
# 02:29 tantek the button is more "UI" than presentational but I think there's something for that too
# 02:29 simeons while it would make total sense to put a Pin It button on a big picutre of the recipe
jfranusic joined the channel
# 02:29 simeons In this particular case, we make the button HTML
# 02:29 simeons the only image is the Swoop logo (little infinity symbol on the left)
# 02:30 simeons that is clearly presentational
# 02:30 tantek I'm guessing that "button" doesn't work at all without JS
# 02:30 simeons Swoop doesn't work w/o JS
# 02:30 simeons nor does much of sharing, interactive adtech, etc.
# 02:31 simeons We have a technology called slinks (Swoop links) that can at least make some of the JS-rendered content URL addressable
kennyluck joined the channel
# 02:31 tantek as does anybody else's that follow Twitter's example
# 02:31 simeons All social networks are moving away from that
# 02:32 simeons but it's where the world is going
# 02:32 tantek and you can tell they're poorly coded by the huge amounts of memory and markup they use
# 02:32 simeons having talked so some of the devs there, it's not going to change anytime soon
# 02:32 tantek people are dumping G+ and FB buttons because of perf
# 02:32 simeons yup, well known
# 02:33 simeons we ask to be loaded last 'cos I don't want to slow the site down
# 02:33 simeons 10+% of cases we never get to load
# 02:33 Loqi !calc 10+% of cases we never get to load
# 02:33 simeons because someone higher up can't complete execution
# 02:33 simeons JS on the Web is truly a mess
# 02:35 simeons so, presentation and button
# 02:36 tantek since those are the two you have use-cases for
# 02:36 tantek we'll worry about other roles if those don't fit
# 02:36 tantek and when I say worry about - I mean research the cryptic W3C specs for
# 02:37 simeons yes, that's the type of bedtime reading that will put me right to sleep
# 02:37 simeons I'll have to do this in the morning
# 02:37 simeons careful: I may take you up on this
# 02:37 tantek but for now, I think role="presentation" and role="button" should work for your purposes to start with.
# 02:38 tantek it's ok, it's likely useful that I have deeper understanding of the cryptic role stuff
# 02:38 tantek I'm also relieved to not have to invent anything new to make such things work
# 02:38 tantek and *hopefully* have some accessibility improving side-effects as well
# 02:39 simeons yes, I like both of these, too
# 02:39 simeons last thing I wanted to do was create a new thing, even if it was as simple as a single CSS class name
# 02:39 tantek no problem - it's been an interesting exploration.
# 02:40 simeons have a great weekend
# 02:40 tantek it's amazing how if you stay in this field long enough, the same problems start to come up (sometimes years later, but still)
# 02:40 tantek we can't always use previous solutions, but it's better when we're able to.
# 02:42 tantek also - you may be interested in /join #indiewebcamp for such discussions
simeons joined the channel
# 02:51 shaners tantek: here's my concern / confusion of h-as-TYPE:
# 02:52 shaners it's an extra layer of namespace prefixing. no other microformat does that. (right?)
# 02:52 tantek nothing is namespace prefixing in microformats
# 02:53 tantek if you're interpreting the microformats2 prefixes as namespace prefixes, you've already gotten it wrong.
# 02:53 shaners tantek: ok. fine. not namespaces. but you know what i mean.
# 02:53 tantek not this abstract "namespacing" concept which causes far more problems than anything it solves in terms of data, data formats etc.
# 02:54 shaners fine. forget i ever said namespace. just sub prefix for namespace.
# 02:55 shaners (subclass in the abstract sense, not the html class sense)
# 02:55 tantek there's no class hierarchy in microformats, that's maybe where you're getting confused
# 02:56 shaners ok. let me step back for a second and try a different approach.
# 02:57 shaners excluding these h-as- microformats, are there any mfs that are a more specific version of a different microformat?
# 03:01 tantek I think there was some interaction between hListing, hProduct, hReview that I need to re-assess
# 03:01 shaners would you say that the "as-" part of "h-as-note" is a namespace?
# 03:02 tantek since the ActivityStreams terms (e.g. names for object types) are defined by another organization, they most closely map to vendor extensions
# 03:02 shaners since it's pretty explicitly referring to Activity Streams
# 03:02 tantek "namespace" carries all kinds of baggage which I don't think you mean
# 03:04 tantek shaners, whenever you're tempted to use the term "namespaces" in reference to data, content, formats, please read this first to see exactly what you're implying about something you're labeling a "namespace" : http://microformats.org/wiki/namespaces
# 03:04 shaners in the atom representation of Activity Streams, they use Atom proper namespaces, don't they?
# 03:04 tantek in short, prefixes are *sometimes* ok/good/useful, whereas namespaces are always horrible in content
# 03:04 tantek and such XML namespaces have already been shown to be a failure on the web
# 03:05 tantek there's a handful of namespace academics that cling to them still, but for the most part they are either ignored or derided
# 03:06 tantek notice how the XML namespaced Atom spec itself was abandoned by the ActivityStreams folks for a JSON representation - without any namespaces.
# 03:06 shaners oh, i'm certainly not advocating for using xml like namespaces in html or anywhere
# 03:06 shaners the vendor prefix angle makes more sense in my brain now
# 03:07 shaners i didn't realize there were already docs on this for uf2
# 03:09 shaners relatedly: Activity Streams pieces (basically parts of speech in a sentence): actor, verb, object, target.
# 03:10 tantek ActivityStreams is problematic in that regard
# 03:10 tantek so no, it doesn't make sense to just map the entire ActivityStreams model 1:1 to microformats
# 03:10 tantek but that's more of an #indiewebcamp discussion (the problem(s) with ActivityStreams)
# 03:13 shaners If AS in Atom land is an extension to Atom. And as- is a vendor specific prefix. And h-as-note is essentially a "vendor specific" more specific kind of .h-entry.
# 03:13 tantek left a message for you in #indiewebcamp about AS problems
# 03:13 shaners Then, doesn't it follow that it's a mf vendor specific property
# 03:13 tantek the JSON AS model abandons Atom and is independent of it
# 03:13 tantek so the entire "if …" statement you provide falls over on the first clause
# 03:14 tantek Atom is now a legacy export for backward compat
# 03:14 tantek anyway, check out #indiewebcamp and the reading there. will follow-up there later.
simeons, kennyluck_, Soopaman, kennyluck and tantek joined the channel
Soopaman, simeons_, tobyink and tantek joined the channel
tobyink, sarspazam, nonge and kennyluck joined the channel
lgedeon joined the channel
kennyluck, tobyink, Soopaman and barnabywalters joined the channel
kennyluck, tobyink, sarspazam_, Soopaman, barnabywalters, tantek and polvo joined the channel
Soopaman joined the channel
Soopaman joined the channel