IndieWebCamp September 25 through October 2, 2015

This is an automatically-generated summary of the IndieWebCamp wiki edits from September 25 through October 2, 2015

Table of Contents

New Pages

Changed Pages

New Pages


Created by on September 26

  • Sat, September 26 draft stub, brainstorming link, next steps
  • Sat, September 26 more next steps
  • Tue, September 29 /* Brainstorming */ list which types I plan on writing up an algorithm for first
  • Tue, September 29 /* Brainstorming */ note other types being considered, and refine criteria
  • Tue, September 29 draft with license, methodology, algorithm, next steps, references, see also
  • Tue, September 29 /* Algorithm */
  • Tue, September 29 feedback
  • Tue, September 29 add explicit Participate section to header with links to Feedback, Issues, IRC
  • Tue, September 29 /* Next steps */ explicitly note plan to to use W3C wiki, github, irc if spec is accepted as an editor's draft in the Social Web WG
  • Tue, September 29 /* Other Types Under Consideration */ jam per request from KevinMarks
  • Tue, September 29 FAQ / What about a photo reply
  • Tue, September 29 /* What about a photo reply */ .
  • Tue, September 29 put algorithm first, methodology second as explanation for aspects of it
  • Tue, September 29 Use cases / Synthesizing explicit type formats
  • Tue, September 29 Implementations section / Granary
  • Wed, September 30 Normative References h-entry for property names in the algorithm, Activity Streams for JSON, microformats2-parsing for canonical microformats2 JSON, cite normative references inline where needed
  • Wed, September 30 /* Issues */
  • Wed, September 30 /* Issues */
  • Wed, September 30 /* Issues */ videos
  • Wed, September 30 /* Algorithm */ use summary property if no content property, per issue from aaronpk re: summary
  • Wed, September 30 /* Issues */ resolved issue lack of content should use summary as fallback
  • Wed, September 30 /* Other Types Under Consideration */ add more types under consideration as pointed out by aaronpk. invitation, tag-of
  • Wed, September 30 /* Algorithm */ add line-breaks to make ORs and THENs clearer
  • Wed, September 30 /* Issues */ note name.contains(content)
  • Wed, September 30 resolved issue, "unknown" is worse than "note" as fallback, display/presentation is outside the scope of this specification
  • Wed, September 30 resolve issue, reject video for now due to only one "current" u-video example. all other video examples are old or don't use u-video
  • Wed, September 30 /* Methodology */ recent (< 1 year old) permalinks
  • Wed, September 30 /* Issues */ respond to remaining issues with questions
  • Wed, September 30 /* Next steps */
  • Wed, September 30 /* Issues */ add example of name.contains(content), ask if there are examples of content.startswith(name)
  • Wed, September 30 /* Issues */
  • Wed, September 30 /* See Also */
  • Wed, September 30 status, editor's draft, mature enough though for implementation and feedback!
  • Wed, September 30 link implementations

Post Type Discovery specifies an algorithm for determining the type of a post by what properties it has and potentially what value(s) they have, which helps avoid the need for explicit post types that are being abandoned by modern post creation UIs.

This is an Editor's Draft yet mature enough to encourage implementations and feedback therefrom!
Wiki (Feedback, Open issues)
IRC: #indiewebcamp on Freenode
Tantek Çelik
Per CC0, to the extent possible under law, the editor(s) and contributors have waived all copyright and related or neighboring rights to this work. In addition, as of 2015-09-30, the editor(s) and contributors (2015-04-07 onward) have made this specification available under the Open Web Foundation Agreement Version 1.0.


Use cases

Both creation user interfaces, and post presentation designs are evolving to directly use the presence or absence of specific properties (and their values) directly, rather than depending on any kind of explicit "post type", thus why bother discovering a post type in the first place? This section documents the (few) use-case(s) that is/are known to date.

Synthesizing explicit type formats

There are existing formats that require explicit post types (e.g. ActivityStreams), and code that consumes them expects explicit post types. Post type discovery enabling automatic synthesizing of such formats from posts that merely have a set of content related properties.


The Post Type Discovery algorithm ("the algorithm") discovers the type of a post given a data structure representing a post with a flat set of properties (e.g. Activity Streams (1.0 or 2.0) JSON, or JSON output from parsing [microformats2]), each with one or more values, by following these steps until reaching the first "it is a(n) ... post" statement at which point the "..." is the discovered post type.

  1. If the post has an "rsvp" property with a valid value,

    Then it is an RSVP post.
  2. If the post has an "in-reply-to" property with a valid URL,

    Then it is a reply post.
  3. If the post has a "repost-of" property with a valid URL,

    Then it is a repost (AKA "share") post.
  4. If the post has a "like-of" property with a valid URL,

    Then it is a like (AKA "favorite") post.
  5. If the post has a "photo" property with a valid URL,

    Then it is a photo post.
  6. If the post has a "content" property with a non-empty value,

    Then use its first non-empty value as the content
  7. Else if the post has a "summary" property with a non-empty value,

    Then use its first non-empty value as the content
  8. Else it is a note post.
  9. If the post has no "name" property

      or has a "name" property with an empty string value (or no value)

    Then it is a note post.
  10. Take the first non-empty value of the "name" property
  11. Trim all leading/trailing whitespace
  12. Collapse all sequences of internal whitespace to a single space (0x20) character each
  13. Do the same with the content
  14. If this processed "name" property value is NOT a prefix of the processed content,

    Then it is an article post.
  15. It is a note post.

Quoted property names in the algorithm are defined in [h-entry].


There are two important aspects to the methodology of the Post Type Discovery algorithm: scope (why is something explicitly in the algorithm), and order (why is something where it is in the algorithm).

The algorithm could attempt to cover innumerable potential hypothetical post types, or take an evidence based approach, focusing on real world publishing practices. This specification does the latter, specifically by placing a minimum bar of documented real world publishing practices of different visually apparent post types on the open web at recent (< 1 year old) permalinks, each with at least three independent implementations that have converged on what properties (and potentially values thereof) they have to imply their visually apparent post types. As a result of being evidence based, it is likely this specification will expand over time as more apparent post types are published by more convergent implementations.
The algorithm must also specify an order (e.g. of precedence) that various properties (and their values) imply various post types. The algorithm is ordered by post types that are in general "richer" in terms of content as well as show greater cognitive effort by the author.

Other Types Under Consideration

Other types are being considered and will be included in the future iterations of the algorithm based on convergence of publishing patterns and critical mass of adoption thereof.

Next steps

This section is for the editor, and may provide hints at updates to come for this specification.


Feel free to leave feedback about the draft here, please sign your name with ~~~~!


Open issues on this specification are documented here.

  • Some of the entries on have just a name, or a name and "featured" image, but no content or summary. Maybe the only way to tell this is an article is to go look at the canonical URL.
  • The article vs. note check currently says to check if name is a prefix of content, but this fails the common auto-generated "name" case, where the name contains everything in the post including the content. I have had better luck checking name.contains(content) instead of content.startswith(name) 21:24, 29 September 2015 (PDT)
    • Note with an implied "name" that contains the "content":
    • What if we made it an OR? That is "name.contains(content) OR content.startswith(name)" means this is a note? Tantek 22:15, 29 September 2015 (PDT)
      • I can't think of anyone who gives their notes an explicit title that is a prefix of the content. The markup would be odd <div class="e-content"><span class="p-name">This is note</span> with a title that is a prefix</div>. I don't feel too strongly about it, but if we can't come up with any real-world examples, it's probably not worth complicating the spec with content.startswith(name)


  • In an h-feed, an entry may have a name and summary but no content. In this case it is an article, but step 6 would have already classified it as a note since there is no content. Perhaps update this step to read "If the post has no "content" property and no "summary" property"?
    • Steps 6 and following have been updated to use "summary" as a fallback for "content". Tantek 21:02, 29 September 2015 (PDT)
  • It appears that a post with no content and no name would be classified as a note. Would it be better for a possible result of this algorithm to be "unknown"?
    • No. By having the known fallback of a note post, implementation for both publishing and consuming code is more predictable, and reliable. Tantek 21:40, 29 September 2015 (PDT)
  • For example, when determining the post type of a comment, I may not want to display anything if the content and name are empty since it would just look like an empty post.
    • What you display is up to you (outside the scope of this specification), and "post type" should only be one aspect of what you use to decide what to display or present. Tantek 21:40, 29 September 2015 (PDT)
  • There are several examples of people publishing video posts. Can we add "If the post has a "video" property with a valid URL, then it is a video post." before checking for the "photo" property? (Video posts often have a photo property as a fallback for consumers that don't understand video posts and to show a thumbnail of the video in a feed)
    • There is only one recent example of people publishing video posts with u-video (Ben Roberts), one person no longer publishing (last was 2+ years ago), and no other examples with u-video.[1] One < three - thus video stays as "under consideration" for now. Tantek 22:08, 29 September 2015 (PDT)


What about a photo reply

Q: What about a reply that includes a photo?

A: It's a reply.

Q2: Should that show up as a "photo" post?

A2: It should show up as a "reply" and not be in a user's published feed of their photos. The user-centric design here is to treat replies separately, because in practice, when users post replies to others' posts, and include a photo, the photos typically assume the context of that other post, and would look odd outside of it (e.g. in a generic "photos" feed). In addition, by not including reply photos in a user's feed of their photos, it gives the user the freedom to reply to other posts with whatever they wish, including photos, and not have those reply-specific photos pollute their streams of "their stuff" that their followers subscribe to.

A2a: From a presentation perspective, a reply should primarily be displayed as a reply first, and then adapt accordingly to whatever other properties it may have.


Implementations, in progress, partial, or complete, of Post Type Discovery.


Granary synthesizes ActivityStreams, microformats2, and Atom from various input feeds and sources, and as such has some code that can be considered in progress or even a partial implementation of Post Type Discovery:

Normative References

  • [Activity Streams 1.0]
    • for canonical Activity Streams 1.0 JSON
  • [Activity Streams 2.0]
    • for canonical Activity Streams 2.0 JSON
  • [h-entry] - h-entry microformats 2 vocabulary
    • for definitions of property names used in the algorithm
  • [microformats2] - microformats2 parsing
    • for canonical microformats2 JSON output

Informative References

See Also

events listing

Created by on September 25

  • Fri, September 25 prompted by tantek and dfn added by tantek
  • Fri, September 25 IndieWeb Examples, add subheads, Articles with one article via KevinMarks, see also
  • Fri, September 25 /* Articles */ note quoted responses to the article in IRC
  • Fri, September 25 manually, IndieWebCamp Events

An events listing is a page or portion of a page (like on a homepage) of an indieweb site that shows a list of events, perhaps including some subset of their event, invitation, and RSVP posts, displayed as a list or grid of some sort.


IndieWeb Examples


Jeena Paradies has post an automatic listing of his upcoming events since 2015-??-??



This community keeps a manually edited summary of upcoming events on:


Tantek Çelik has manually posted a brief summary of three upcoming events that he is going to, perhaps speaking at, or organizing, on the bottom of his home page since 2012(rough guestimate ? need to lookup exact year/date)


See Also

negative reasoning

Created by on September 28

negative reasoning is a form of deductive prose reasoning that has a negation conditional and/or a negation result, and is an anti-pattern because negation conditionals tend to be a misframing, and negation results are rarely actionable, thus rarely productive.


Examples of negative reasoning:

"You cannot x without y"[1]
Instead: With y you can x
"I am not convinced x"[2]
"I am convinced not x"[3]
Instead: I am convinced y

See Also


Created by on October 1

pay what you will

Created by on September 28

  • Mon, September 28 prompted by tantek and dfn added by tantek
  • Mon, September 28 add flickstagram

Pay what you will is business-model based on a donation button or other UX that allows and encourages the user of a service to pay what they think the service is worth.


Flickstagram is a service which imports your Instagram photos to your Flickr account. People have paid anywhere from $1 to $10 after using this service.

screenshot safe

Created by on September 25

screenshot safe is the act or description of making the body of a post visible on a typical desktop window with a large enough font size that others can take a screenshot of that window, and use it as a full screen image in a presentation to convey the point your post is making.


Created by on September 28

micropub-xmpp-bot is an experimental XMPP chat bot for posting notes, replies, likes, and reposts to sites that support Micropub.

Created by Kyle Mahan in September 2015.

open source:

How to use it

Give it a shot by XMPP chatting with (If it's offline, ping "kylewm" on IRC).

Notably, it uses an out-of-band redirect_uri handler that prompts the user to copy/paste their auth code.

See Also


Created by on September 26

  • Sat, September 26 prompted by voxpelli and dfn added by voxpelli

Jaiku was an early competitor to Twitter that was very popular in certain communities. Was bought and shut down by Google.

featured image

Created by on September 25

  • Fri, September 25 prompted by tantek and dfn added by KartikPrabhu

featured image is featured


Created by on October 2

rebuild is a feature on some silos (like Pinterest) that prompts the user on their home page, likely after they have not logged in for a while, to rebuild their home feed (followings) by clearing out everything they follow and starting from scratch.

Changed Pages


7 edits by,,,


5 edits by,,


4 edits by,,


3 edits by,


3 edits by,


3 edits by,,
  • Sun, September 27 /* Clients */ add xmpp chat bot
  • Mon, September 28 /* micropub-xmpp-bot */ note date, link to its own page, explicitly note open source
  • Wed, September 30 /* Create */ clarify array properties with single value

IRC People

2 edits by,


2 edits by

it is considered

2 edits by


2 edits by


2 edits by,

Main Page

1 edits by
  • Fri, September 25 assume next HWC is 2015-10-07 unless we hear otherwise about HWC Edi


1 edits by

Homebrew Website Club

1 edits by
  • Fri, September 25 /* Getting Started or Restarting */ HWC Edi - rhiaro is leaving us

weasel word

1 edits by


1 edits by
  • Fri, October 2 dfn, linky linky, use generic versions of pin-specific terms, note pinning involves user-chosen URL+image in the UX

content management system

1 edits by
  • Fri, October 2 /* Why write your own */ Articles advocating your own (from 2003)


1 edits by

Posts about the IndieWeb

1 edits by


1 edits by


1 edits by


1 edits by