IndieWebCamp is a 2-day creator camp focused on growing the independent web

note

📝 A note is a post that is typically short unstructured* plain text, written & posted quickly, that has its own permalink page.

Creating, publishing, and owning your own notes is a key step towards reducing dependence on Twitter.

*Though unstructured meaning without a heading/title or any other explicit structure, notes can include several lines of text or even lists using "*" or numerical markers due to common whitespace support.

Why

Most of the reasons why apply quite strongly to publishing your notes on your own website. In addition:

  • Simplest post building block. All posts have a simple text component, whether name, caption, comment, or text equivalent. Build notes first, and then you have a building block you can build upon for every other post type. This is the smallest step you can take to owning the timestamped content you publish.
  • Do better than Twitter, here are a few ways. Choose those that matter to you:
    • presentation: your notes permalink pages can be cleaner and have more informative presentation (e.g. a facepile of all favorites/retweets, not just a few) than tweet permalinks
    • interactivity: better auto-linking and auto-embedding than proprietary Twitter Cards, multiple embeds instead of just one. E.g. use the CASSIS auto_link function which works better than Twitter's auto-linking/embedding.
    • navigation: providing next/previous and other navigation links
    • direct linking: direct hyperlinks rather than t.co wrappers around your links
    • speed: load simpler HTML+CSS note pages rather than all of the JS that Twitter depends on.
    • editability: you can edit your own notes, you cannot edit tweets.
    • flexibility: post notes longer than 140 characters.

IndieWeb Examples

Here are documented examples of IndieWebCamp participants' sites that support publishing notes and do so (i.e. before POSSEing to silos). In date order (earliest first) :

Tantek

Tantek Çelik using Falcon on tantek.com since 2010-01-01.

Brennan Novak

Brennan Novak on brennannovak.com since 2010-07-17.

Barnaby Walters

Barnaby Walters using Taproot on Waterpigs.co.uk since 2012-03-24 (note shows 2012-04-14 updated date, but POSSE tweet shows 2012-03-24 date). Notes previous to that one were imported/crossposted from diasp.org onto Waterpigs.co.uk (did not originate there).

Aaron Parecki

Aaron Parecki using p3k on aaronparecki.com since 2012-08-19.

Sandeep Shetty

Sandeep Shetty using Converspace on sandeep.io since 2012-11-05.

Tom Morris

Tom Morris using Ferocity on tommorris.org since 2013-03-21 (note POSSE tweet same day). Earlier "notes" on tommorris.org are likely a result of imports from Twitter and Tumblr archives rather than posts originating on tommorris.org.

Ben Werdmuller

Ben Werdmüller using idno on werd.io since 2013-05-31.

Amber Case

Amber Case using p3k on caseorganic.com since 2013-09-08 (note POSSE tweet same day).

Shane Becker

Shane Becker on iamshane.com since 2013-10-23 (note POSSE tweet same day).

Chloe Weil

Chloe Weil on Chloe Weil since 2013-12-03 (note POSSE tweet same day). See also related blog post:

  • 2013-12-04: Hipster: "I built Twitter."

Frederic

Frédéric de Villamil using publify on t37.net since 2014-01-10 (note POSSE tweet same day

Michael Bester

Michael Bester on michaelbester.com since 2014-01-13 (note POSSE tweet same day with permashortcitation support!). See also related blog post:

Glenn Jones

Glenn Jones on glennjones.net since 2014-01-15 (was since 2014-01-14 but that note appears to be gone!).

Kartik Prabhu

Kartik Prabhu on kartikprabhu.com since 2014-03-08.

Jeremy Keith

Jeremy Keith on adactio.com since 2014-05-27 (Note POSSE copy may say 2014-05-26 presumably because of timezone differences, Jeremy's is in BST, while a PDT viewer sees datetime adjusted accordingly). See also related blog post:

gRegor Morrill

gRegor Morrill on gregorlove.com since 2014-06-25

Common Aspects

There are certain UI elements which are common to most implementations. These include:

  • Profile photo (often with rounded corners)
  • Full Name (often emboldened)
  • Auto–linked URLs, usernames and #tags
  • Dates (sometimes relative, almost always the option to see real date)

Autolinking and embedding

Various sites/solutions auto-link and/or auto-embed URLs and other linkable things in notes.

recommendations:

  • auto-link URLs directly
    • even better: if the URL is to a known person, use their name as the link text and perhaps include a small icon of their face before their name.
  • auto-link @-names to Twitter profiles
    • even better: auto-link @-names to individual's indieweb sites and show their full name instead of Twitter handle. Obviously keep @-names in note content when POSSEing to Twitter.
  • auto-embed GIF/JPG/PNG URLs with <img src>, hyperlinked to the original
  • auto-embed MOV/OGV URLs with <video src>, hyperlinked to the original
  • auto-embed Youtube URLs with the equivalent Youtube <iframe src> embed (algorithmically convertible)

You can use the CASSIS auto_link function to do all the above (except the "even better" enhancements) automatically to a piece of plain text.

avoid:

  • auto-linking URLs through URLs shorteners (please don't break the web)
  • cluttering image/video embeds with extra text (e.g. name/title from destination)

Compare for example:

Less Common Aspects

  • username/nickname - as well as the full name, there’s often a silo-specific nickname/alias
  • URL to their indieweb home page
  • posting application/tool
  • posting location - aka geo
  • Link text instead of bare URLs. 1/4 of the implementations above have examples of this showing on the first page as of 2014-06-23; names here link to examples: Tom Morris and Michael Bester include the bare URL in addition to or instead of the link text in their syndicated copies. Not sure what Sandeep Shetty does because the example doesn't link to a syndicated copy; not sure what Barnaby Walters does because the links all appear after the point where the syndicated copy truncates. All of them also use bare URLs.

Location

Location (AKA Geo) of notes is somewhat rare and not very well done. Nonetheless, there are questions, use-cases, and examples.

Why location

Why? What's the point of posting a note/tweet with location information? (one that's not a checkin)

  • What does it do for me (as the user posting it)?
  • And what does it do for people reading my notes/tweets?
  • Why is it interesting/useful to anyone?

Related but different: checkins, events, photos with location.

Here are use-cases for why your notes should support location information:

Use-cases for posting geo / post location information with notes:

  • location specific service provider help
  • meetup in non-home city - specifically expressing being in the same (non-home) city
  • explicit I'm not home - indication of being in a non-home city
  • "help!" if you're in trouble - geolocating it would be useful
    • uncommon but urgent use-case.
    • though in a "help" situation it's faster to simply *type* where you are etc. than wait for geo location information to come-up, confirm, etc.
      • because geo information is so often "invisible" - it requires extra UI steps to make it work = extra time = not going to do it in an emergency
      • worse - devices get geo information wrong all the time - and having it be wrong in an emergency would be particularly bad
    • basically, lack of trust for device geo = not going to use it in a help situation
  • if you don't know where you are and need help, then some (even possibly error-prone) geo information may be better than nothing
    • but now we're talking quite a bit of an edge case.

How To Add Location

Use the p-location property to markup location information inside an h-entry.

In addition, use h-geo or h-adr to markup the details of your location information, whether lat/long coordinates or a structured address, respectively.

IndieWeb Location Examples

Silo location examples

Silo examples can be useful for research purposes and to help inform indieweb design.

Tweet with location

Live example:

Problems:

Past Example when Twitter used to show a map on tweet permalinks of the location:

Whitespace

(this may be worth breaking out into a separate page on /note-whitespace)

Typical silo notes implementations display most whitespace written in their posting interfaces. IndieWeb implementations should preserve whitespace also.

Why Preserve Whitespace

There are some interesting use cases to preserving white space, in particular line breaks.

Besides the obvious use-cases of poetry, paragraphs, and lists, there is for example, chess games (and moves!)

This leads us to the use case of indieweb spectator correspondence chess. That is, two players could play a chess game just by posting moves on their own indieweb sites as replies to each others' moves.

Perhaps chess moves (and resulting board state) could be posted as a special kind of note post type (a game-move or game-turn?) and then POSSE'd to Twitter with whitespace intact.

If the move is response to a move on another indiewebsite, then in addition to using webmention for move completion notification, the POSSE'd response move could also indicate with Twitter's in-reply-to-status-id the POSSE'd tweet of the previous move. See how to POSSE a comment/in-reply-to/rel-syndication for details of how to do this.

Such public posting of moves would also allow for anyone to jump in and attempt to play a next move by posting a reply move. The player of the previous move would then receive multiple webmentions and could decided which move (or both) to reply to in turn.

Indieweb whitespace thinking

Due to the expectations set by dominant silo implementations, any note authoring/composing UI should preserve line-breaks, blank lines, and multiple space characters when writing/authoring, displaying/presenting, and ideally, when syndicating (POSSE).

Especially now that even Twitter has set consistent expectations from its posting UI, there's a strong case that a user switching from Twitter to an indieweb note posting UI would expect whitespace and linebreaks to "just work".

Obviously indieweb implementations would have to preserve white-space in posting UI to storage to display round-trips. Then in the presentation they could either:

  • a. <br/> substitutions - Indieweb implementations could (are any already?) automatically insert <br> tags for linebreak whitespaces (similarly to auto-linking URLs in notes). But this wouldn't handle multiple sequential space characters.
  • b. white-space:pre-wrap - Alternatively (preferably) indieweb implementations should use white-space:pre-wrap similar to how Twitter does.

Thus b. white-space:pre-wrap seems to be the logical choice for indieweb implementations.

IndieWeb Whitespace Examples

Silo Whitespace Examples

Facebook

Facebook status updates are notes (no post title) that preserve sequential space characters and line breaks.

Google

Google+ posts are similarly just notes (no post title) that also preserve sequential space characters and line breaks.

Twitter

Twitter now has multiple implementations that preserve white space characters in presentation:

  • Twitter.com (as of ~2013-03-13)[1][2][3][4][5]
    • e.g. https://twitter.com/hotdogsladies/status/4809602603
    • based on a test ( Tantek 18:13, 15 April 2013 (PDT) ), when posting to Twitter.com, Twitter's server
      • preserves simple linebreaks
      • preserves multiple spaces between words
      • preserves spaces at the start of a line
      • but collapses multiple linebreaks into a maximum of one blank line between lines.
  • Twitter iOS client (previously: Tweetie)

Encoding - analysis of the above tweet:

  • View Source: The linebreaks are encoded as &#10; character entitites, without any visible line breaks in the code.
  • View Selection Source (FF) and Inspect Element (FF, Safari): The linebreaks appear to be simple "carriage return" characters (\r, ASCII 13), showing visible line breaks in the code.
  • In either case, the visual presentation of the whitespace characters is achieved using CSS:
    .js-tweet-text { white-space: pre-wrap; }

Contents


Screenshots

  • Barnaby Walters has a collection of annotated screenshots here, including examples from:
    • Facebook (Web UI)
    • Twitter (Web, Mac App)

Subtypes

Since notes are such a ubiquitous content posting type (Thanks to Twitter), it's no surprise that subtypes of notes are evolving for representing additional structure or types of information. Let's document them as they emerge.

Health Fitness Tracking

Main article: exercise

Tags: fitbit, pedometer, physical activity

Challenges:

Step Tracking

Syntax: number-of-steps #steps anything-extra

Examples:

BMI Tracking

Syntax: number #bmi

Examples:

microsyntax and picoformats

Main article: microsyntax

microsyntax and picoformats are broader efforts to briefly and readably structure information in pure/plain text form.

See:

Note Display

When displaying a note, it is customary to just display the note content and no explicit note title.

While this is fairly straightforward for a site itself (which often has its own post type information, perhaps even as an additional class name on the h-entry like h-as-note), for sites that display h-entrys from elsewhere it helps to have an algorithm to determining when is a note a note and should thus be displayed as such.

Note Type Algorithm

Summary: if the name of the h-entry is essentially the content of the entry, it's a note, just display the content (and no explicit name/title).

Algorithm for a parsed h-entry

  • set the tname to trim(name)
  • set the tcontent to trim(content)
  • if the tname == tcontent, then it's a note, return.
  • if the tname ends with an ellipsis ("..." or "…") then
    • drop the ellipsis character
    • if the tname is a prefix of tcontent, then it's a note, return
  • otherwise it's not a note

Related Patterns

FAQ

Questions about notes, implementing them, publishing them.

markdown or plain text

Q: As an implementer of notes on my own website, should I store markdown or just plain text and autolink/autoembed everything?

A: Typical implementations store plain text for notes and use an autolinker/embedder to create links and embedded images. E.g.:

  • Tantek on tantek.com uses Falcon which stores all notes as plain text entry-content inside an h-entry in a flat file.
  • ... add your implementation example here.

See also: storage.

how long should notes be

Q: As an implementer, what's the maximum size I should allow for notes?

A: Up to you and your own site needs! Typical implementations do not have note length limitations.

  • Tantek on tantek.com uses Falcon which has no explicit lenght limitation on notes, however as part of the publishing UI shows what will be POSSEd to Twitter and how many characters are remaining to do so without having to elide the text.
  • ... add your implementation example here.

how to display in a list

Q: When displaying a list of h-entry notes, e.g. in comments-presentation on a post, or in an indie reader, when should the name, or name+content, or just content be displayed?

A: See notes display for how to determine when to use a name or name+content and what to display accordingly.

See Also