1. php-mf2 v0.3.0 is released! This long overdue update contains a variety of bugfixes and new features:

    • Requires PHP 5.4 at minimum (PHP 5.3 is EOL)
    • Licensed under CC0 rather than MIT
    • Merges Pull requests #70, #73, #74, #75, #77, #80, #82, #83, #85 and #86.
    • Variety of small bug fixes and features including improved whitespace support, removal of style and script contents from plaintext properties
    • All PHPUnit tests passing finally
    • Many thanks to @aaronpk, @diplix, @dissolve, @dymcx @gRegorLove, @jeena, @veganstraightedge and @voxpelli for all your hard work opening issues and sending and merging PRs!



  2. New release: php-mf2 v0.2.12 is out!

    In this version: bugfixes! Improved implied name parsing! Merged pull requests! Full details and contributor list in the changelog.

    In related news, the packagist website has been updated and looks very nice! Unfortunately all of my version links are now broken though. And apparently php-mf2 has been installed almost 3000 times (using composer, which is not even the most common installation method) — WOW! Here’s the to the next 3000, and more :)

  3. Great to hear this is happening! I can’t attend in person but will try to make it remotely if you have IRC/talky or some such thing!

  4. @acegiak that’s hilarious — OTTOMH, h-review p-rating is assumed to be between 0 and 5 as a fallback if no best/worst are given (and even if just best is given, 0 could be assumed to be “worst”). So you could totally publish something like:

    <span class="p-rating">1</span>/<span class="p-best">10</span>
  5. Working on I’m coming to realise that there are at least two usefully distinct levels of semantic data on the web:

    There’s the basic “object” level at which microformats act, defining simple, basic-level objects like posts and people with properties like name, phone and content.

    Then there’s the level at which HTML works, marking up blocks of text and creating a tree of elements, each of which gives context to the text it contains, for example blockquote elements for containing content from another source, code elements for “computer code” (might be some space to make that more useful — who’s up for adding the type attribute to code?) and so on.

    So what? So these are the two sufficiently standardised levels at which content on the web can be made portable, and mutually understood by many parties. Any additional undefined semantics introduced by author-defined classnames and the meaning communicated by their default styling is unportable, and will be lost when that content is viewed elsewhere (for example shown in a reader or as a cross-site comment.

    So how can you tell if your content is sufficiently portable? For the object-level (microformats) a validator like indiewebify.me can be used. Strangely, there aren’t as many tools for the markup level, but one surefire way to check is to disabled CSS in your browser. Is your content still understandable using only the default styles? If so it’s probably pretty portable.

  6. Initial draft of a logo:

    Got stuck for inspiration (trees are cliché and, in the UK, ironically associated with the conservatives) so looked on wikipedia, and found this beautiful photo by Stephen Ausmus:

    So made a stylised version for a laugh, and actually really like it. It shares some colours with the indiwebcamp logo

    whilst remaining stylistically separate and visualises a lot of principals: a centralised node split up into a more diverse ecosystem, but still connected by the green strands of standards (many of which are , also associated with the colour green).

    Still a WIP though — thoughts?

  7. php-mf2 users: requesting your feedback for Mf2\fetch() microformats-from-URL function just added to dev-master. I want to get this nice and polished before adding it to a versioned release, and would appreciate feedback, specifically on the documentation and debugging support.

  8. Thoughts about whilst reading Lakoff’s Women, Fire and Dangerous Things — mf vocabularies e.g. h-card, h-entry, h-event are basic-level categories, the level at which:

    • it is easiest for humans to learn and reason about,
    • we have the shortest, most common names for them,
    • defined by how we interact with them

    E.g. h-entry ≈ “post”

    • short name
    • extremely common on the web
    • well-defined interaction patterns e.g. writing, posting, replying, reading, browsing through a feed, searching for/within, liking, reposting, quoting etc.

    Rather than RDF or schema.org which seek to create pure, objectivist, hierarchies of categories — our brains simply don’t work like that.

  9. Last night: built commenting on posts direct from my feedreader using — video demo:

    Example replies sent using this technique: 1, 2

    Next up: cleaning code, implementing likes, distilling learnt knowledge into diagrams, code.

    Futher reading:

  10. Thomas Steiner: Getting started w/ #microformats2 http://microformats.org/2014/03/05/getting-started-with-microformats2 …. @BarnabyWalters, is http://waterpigs.co.uk/php-mf2  100% correct w/ single elem & > 1 type?

    @tomayac for example like this?

    <a class="h-card h-org">Hypothetica Inc.</a>

    php-mf2 gives

        "items": [
                "type": [
                "properties": {
                    "name": [
        "rels": [

    which is correct, one microformat with multiple vocabularies, which effectively allows multiple vocabularies to be mixed, e.g. you can have a h-review which is also an h-entry.