hCard microformat Validator (beta, of course)

This is an unofficial validator¹/conformance checker of the hCard microformat.

Po polsku En français
(translations welcome!)

Input

URL

Check entire XHTML or HTML page by entering its HTTP URL.

Fragment

Paste well-formed XHTML fragment or complete document containing hCard.

Upload

Upload HTML or XHTML file to validate it. For this to work your browser must be setting MIME types properly.

Example

If searching for hCards in the wild is tiring, check one of the test-cases:

Browse examples

API & Other

Any page by Referer

<a href="http://hcard.geekhood.net/referrer/">Validate hCards</a>

Bookmarklet

hCard?

RESTful JSON API

Send GET request to http://hcard.geekhood.net/?url=URL to validate&output=json.

Output will be roughly compatible with the Validator.nu JSON API. Likely to change in the future.

Please use this API for validation, not just as an converter/extraction tool.


Send Feedback

You can send feedback via e-mail or the form below.

If you're reporting a bug or have a suggestion, don't forget to include example hCard code.

Result

Congratulations! No errors found.

  1. hCard #1

    • Warn: hCard microformat in <address>

      This will be interpreted as vCard of the contact point for the page (e.g. page owner, webmaster).

      More info

    Formatted name
    gRegor Morrill
    Photo URL http://0.gravatar.com/avatar/aca81ab5bf69a4626c91edc811cea208?s=16&d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D16&r=PG
    URL https://gregorlove.com/
    Name Given Name
    gRegor
    Family Name
    Morrill
  2. hCard #2

    • Warn: hCard microformat in <address>

      This will be interpreted as vCard of the contact point for the page (e.g. page owner, webmaster).

      More info

    • Info: Implied nickname from fn

      You can add n property to prevent it, or use fn and nickname on the same element to make it explicit.

      More info

    Formatted name
    Martijn
    Photo URL http://0.gravatar.com/avatar/a9f47f86e88c589944f97747e0fffff9?s=16&d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D16&r=PG
    URL http://vanderven.se/martijn/
    Nickname
    Martijn
  3. hCard #3

    • Warn: hCard microformat in <address>

      This will be interpreted as vCard of the contact point for the page (e.g. page owner, webmaster).

      More info

    • Info: Implied nickname from fn

      You can add n property to prevent it, or use fn and nickname on the same element to make it explicit.

      More info

    Formatted name
    Tantek
    Photo URL http://0.gravatar.com/avatar/02cd45622e90350cc061aaaa02229195?s=16&d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D16&r=PG
    URL http://tantek.com/
    Nickname
    Tantek
  4. hCard #4

    • Warn: hCard microformat in <address>

      This will be interpreted as vCard of the contact point for the page (e.g. page owner, webmaster).

      More info

    • Info: Implied nickname from fn

      You can add n property to prevent it, or use fn and nickname on the same element to make it explicit.

      More info

    Formatted name
    Tantek
    Photo URL http://0.gravatar.com/avatar/02cd45622e90350cc061aaaa02229195?s=16&d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D16&r=PG
    URL http://tantek.com/
    Nickname
    Tantek
  5. hCard #5

    • Warn: hCard microformat in <address>

      This will be interpreted as vCard of the contact point for the page (e.g. page owner, webmaster).

      More info

    • Info: Implied nickname from fn

      You can add n property to prevent it, or use fn and nickname on the same element to make it explicit.

      More info

    Formatted name
    waterpigs.co.uk/
    Photo URL http://0.gravatar.com/avatar/4a57cddee3c50aefa893005dcdd33b64?s=16&d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D16&r=PG
    URL http://waterpigs.co.uk/
    Nickname
    waterpigs.co.uk/

File source

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head profile="http://gmpg.org/xfn/11">
	<meta http-equiv="content-type" content="text/html; charset=utf-8" />
	<title>Microformats  </title>
	<link rel="stylesheet" type="text/css" media="screen, projection" href="http://microformats.org/wordpress/wp-content/themes/microformats/style.css" />
	<link rel="stylesheet" type="text/css" media="print" href="http://microformats.org/wordpress/wp-content/themes/microformats/css/print.css" />
	<!--[if lte IE 6]>
    <link rel="stylesheet" type="text/css" media="screen, projection" href="http://microformats.org/wordpress/wp-content/themes/microformats/css/ie.css" />	    
	<![endif]-->
	<!--[if lte IE 5.5]>
    <link rel="stylesheet" type="text/css" media="screen, projection" href="http://microformats.org/wordpress/wp-content/themes/microformats/css/ie5.css" />	    
	<![endif]-->
	<link rel="shortcut icon" type="image/ico" href="/favicon.ico" />
	<link rel="alternate" type="application/rss+xml" title="RSS 2.0" href="http://microformats.org/feed" />
</head>
<body>

<div id="wrap">
	<div id="header">
		<h1>		    <img src="http://microformats.org/wordpress/wp-content/themes/microformats/img/logo.gif" width="144" height="36" alt="microformats" />
		</h1>
			
		<ul id="nav">
		<li class="active"><a href="/blog" title="Microformats.org Home">Blog</a></li>
<li><a href="/wiki/" title="The microformats.org documentation and specifications">Wiki</a></li>
<li><a href="/wiki/irc" title="Join and read discussion forum to discuss and develop microformats">Discuss</a></li>
<li><a href="/wiki/about" title="What are microformats?">About</a></li>
<li><a href="/wiki/code-tools" title="Snippets and tools to help you publish microformats">Code &amp; Tools</a></li>
<li><a href="/wiki/get-started" title="A little guide on how to publish your first hCard">Get Started</a></li>
		</ul>
	</div>
		
	<hr class="hide" />
	

	<div id="content" class="hfeed">
		<h2 id="home-title">Latest microformats news <a href="http://microformats.org/feed" title="link to RSS feed" id="feed-link"><img src="http://microformats.org/wordpress/wp-content/themes/microformats/img/xml.gif" width="23" height="13" alt="Feed" /></a></h2>
			
					<div class="entry hentry">
				<h3 class="entry-title" id="post-469"><a href="http://microformats.org/2017/06/22/improving-the-php-mf2-parser" rel="bookmark" title="Permanent Link to Improving the php-mf2 parser">Improving the php-mf2 parser</a></h3>
                <div class="entry-content">
				    <p>During the past year, the popular <a href="https://github.com/indieweb/php-mf2">php-mf2</a> microformats parser has received quite a few improvements. My site runs ProcessWire and one of the plugins for it uses php-mf2, so I have been spending some time on it.</p>
<p>My own experience with microformats started when I discovered the <a href="http://microformats.org/wiki/hcard">hCard microformat</a>. I was impressed with the novelty of adding some simple HTML classes around contact information and having a browser extension parse it into an address book. Years later, when I started to get involved in the IndieWeb community, I learned a lot more about microformats2 and they became a key building block of my personal site.</p>
<p>php-mf2 is now much better at backwards-compatible parsing of microformats1. This is important because software should be able to consistently consume content whether it’s marked up with microformats1, microformats2, or a combination. An experimental feature for parsing language attributes has also been added. Finally, it’s now using the microformats test suite. Several other parsers use this test suite as well. This will make it easier to catch bugs and improve all of the different parsers.</p>
<p>php-mf2 is a stable library that’s ready to be installed in your software to start consuming microformats. It is currently used in <a href="https://withknown.com">Known</a>, <a href="https://wordpress.org/plugins/semantic-linkbacks/">WordPress plugins</a>, and <a href="https://modules.processwire.com/modules/webmention/">ProcessWire plugins</a> for richer social interactions. It’s also used in tools like <a href="https://github.com/aaronpk/XRay">XRay</a> and <a href="https://microformats.io">microformats.io</a>. I’m looking forward to more improvements to php-mf2 in the coming year as well as more software using it!</p>
<p>Original published at: <a href="https://gregorlove.com/2017/06/improving-the-php-mf2-parser/">https://gregorlove.com/2017/06/improving-the-php-mf2-parser/</a></p>
                </div>
                                
				<ul class="post-info">
					<li><a class="updated" href="http://microformats.org/2017/06/22/improving-the-php-mf2-parser" rel="bookmark" title="Permanent Link to Improving the php-mf2 parser">
                            <span class="value-title" title="2017-06-22T09:13:53"> </span>
                            June 22nd, 2017                        </a>
                    </li>
					<li>
					    <address class="author vcard">                
					    <a class="url fn" href="https://gregorlove.com/">
					        <img alt='' src='http://0.gravatar.com/avatar/aca81ab5bf69a4626c91edc811cea208?s=16&amp;d=http%3A%2F%2F0­.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb­6523536%3Fs%3D16&amp;r=PG' class='avatar avatar-16 photo' height='16' width='16' />					        gRegor Morrill					    </a>
					    </address>
					</li>
					<li><span>Comments Off</span></li>
                    <li>
                                            </li>
				</ul>
			</div>
					<div class="entry hentry">
				<h3 class="entry-title" id="post-458"><a href="http://microformats.org/2017/06/20/evolving-for-12-years" rel="bookmark" title="Permanent Link to Evolving for 12 Years">Evolving for 12 Years</a></h3>
                <div class="entry-content">
				    <p>For the 12th birthday of microformats.org (congratulations!) <a class="h-card" href="http://tantek.com/">Tantek</a> asked the community if any of us would like to highlight whatever we liked in a guest post. I am taking this opportunity to talk about my favourite feature of microformats: its constant evolvement.</p>
<p>Sometimes it feels like a standard is done. Sometimes it feels like a standard is abandoned before its time. In a few special cases a standard keeps evolving. I think we can agree that microformats goes in the latter category. This is hugely thanks to the fact that anyone can help it grow.</p>
<p>As you read this, <a href="https://github.com/microformats/h-event/issues/2">work is being done</a> to upgrade <a href="http://microformats.org/wiki/h-event">h-event</a> from a Draft to a full Specification. This prompted a few of us to have a look at what people are doing with the format. As it turns out: it has departed from the Draft!</p>
<p><a href="https://indieweb.org/">The IndieWeb community</a> is putting events in their feeds, interleaving them with other items (like blog posts) that use <a href="http://microformats.org/wiki/h-entry">h-entry</a>. To make the events fit within this context properties are being copied over from h-entry, properties completely new to h-event. Somehow these separate implementations introduced <em>the same</em> properties, showing how h-event is evolving quicker than its Draft Specification without splintering it in lots of different versions. Naturally evolving the format forwards!</p>
<p>Then there are the small, fringe changes. Work on <a href="http://microformats.org/wiki/h-card-brainstorming#Pronouns">pronouns in h-cards</a> has been mostly dormant since 2015. I spent time with it during <a href="https://indieweb.org/2017/Nuremberg">IndieWebCamp Nuremberg</a> and came to <a href="http://wiki.zegnat.net/microformats/pronoun">a completely different conclusion</a> on how to mark-up my pronouns. The beauty there is that anyone can do the same! All it takes is to put something on your site, like the IndieWeb community did with h-event, and tell the world about this piece of extra information they now have access to.</p>
<p>Here is to one more year of constantly tinkering with our HTML and giving more meaning to the information we publish 🥂</p>
                </div>
                                
				<ul class="post-info">
					<li><a class="updated" href="http://microformats.org/2017/06/20/evolving-for-12-years" rel="bookmark" title="Permanent Link to Evolving for 12 Years">
                            <span class="value-title" title="2017-06-20T07:09:08"> </span>
                            June 20th, 2017                        </a>
                    </li>
					<li>
					    <address class="author vcard">                
					    <a class="url fn" href="http://vanderven.se/martijn/">
					        <img alt='' src='http://0.gravatar.com/avatar/a9f47f86e88c589944f97747e0fffff9?s=16&amp;d=http%3A%2F%2F0­.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb­6523536%3Fs%3D16&amp;r=PG' class='avatar avatar-16 photo' height='16' width='16' />					        Martijn					    </a>
					    </address>
					</li>
					<li><span>Comments Off</span></li>
                    <li>
                                            </li>
				</ul>
			</div>
					<div class="entry hentry">
				<h3 class="entry-title" id="post-447"><a href="http://microformats.org/2016/06/22/microformats-org-at-11" rel="bookmark" title="Permanent Link to microformats.org at 11">microformats.org at 11</a></h3>
                <div class="entry-content">
				    <p><a href="http://julieannenoying.com/2016/06/20/happy-birthday-microformats/"><img style="display:block;text-align:center;margin:0 auto;max-width:100%" src="http://julieannenoying.com/wp-content/uploads/2016/06/ermergerd.jpg" alt="ERMERGERD!!! (excited girl holding a large microformats logo) HERPER BERTHDER!!!" /></a><br />
Thanks to <a class="h-card" href="http://julieannenoying.com/">Julie Anne Noying</a> for the meme birthday card.
</p>
<aside>
<div class="aside">
<p>
In this day and age of <a href="https://medium.com/@wob/the-sad-state-of-web-development-1603a861d29f">web frameworks that rise and fall</a> like seasonal fashion displays, <a href="https://medium.com/@anildash/the-end-of-thinkup-e600bc46cc56">bait-and-break APIs</a>, and <a href="https://indiewebcamp.com/site-deaths#2015">sudden site-deaths</a>, it’s nothing short of incredible that we’ve been able to continue evolving, improving, and growing microformats use for 11 years. All that incremental work has produced quite a lot since <a href="http://tantek.com/2015/171/t1/10th-anniversary-microformats">a year ago</a>. Most recently, we’ve made great progress with iterating, publishing, and deploying <a href="http://microformats.org/wiki/microformats2">microformats2</a> support.</p>
<p>I believe microformats.org has surived as a community, and microformats as a technology, by continuing to focus on solving smaller, simpler problems first, and then iterating only as needed with real world use-cases. It’s an approach I think works as a good starting point for nearly any project. -Tantek
</p>
</div>
</aside>
<h2 id="mf2-pubs-parsers">10,000s of microformats2 sites and now 10 microformats2 parsers</h2>
<p>
The past year saw a huge leap in the number of sites publishing <a href="http://microformats.org/wiki/microformats2">microformats2</a>, from 1000s to now 10s of thousands of sites, primarily by adoption in the <a href="https://indiewebcamp.com/">IndieWebCamp</a> community, and especially the excellent <a href="http://withknown.com/">Known publishing system</a> and continually improving <a href="https://indiewebcamp.com/Getting_Started_on_WordPress">WordPress plugins &amp; themes</a>.
</p>
<p>
New <a href="http://microformats.org/wiki/microformats2#Parsers">modern microformats2 parsers</a> continue to be developed in various languages, and this past year, four new parsing libraries (in three different languages) were added, almost doubling our previous set of six (in five different languages) that brought our year 11 total to 10 microformats2 parsing libraries available in 8 different programming languages.
</p>
<h2 id="mf2-parsing-spec">microformats2 parsing spec updates</h2>
<p>
The <a href="http://microformats.org/wiki/microformats2-parsing">microformats2 parsing specification</a> has made significant progress in the past year, all of it incremental iteration based on real world publishing and parsing experience, each improvement discussed openly, and tested with real world implementations. The microformats2 parsing spec is the core of what has enabled even simpler publishing <em>and</em> processing of microformats.
</p>
<p>
The specification has reached a level of stability and interoperability where fewer issues are being filed, and those that are being filed are in general more and more minor, although once in a while we find some more interesting opportunities for improvement.
</p>
<p>We reached a milestone two weeks ago of resolving all outstanding <a href="http://microformats.org/wiki/microformats2-parsing-issues">microformats2 parsing issues</a> thanks to <a class="h-card" href="https://willnorris.com/">Will Norris</a> leading the charge with a developer spec hacking session at the recent <a href="https://indiewebcamp.com/2016">IndieWeb Summit</a> where he gathered parser implementers and myself (as editor) and walked us through issue by issue discussions and consensus resolutions. Some of those still require minor edits to the specification, which we expect to complete in the next few days.
</p>
<p>One of the meta-lessons we learned in that process is that the wiki  really is less suitable for collaborative issue filing and resolving, and as of today are switching to using <a href="https://github.com/microformats/microformats2-parsing/issues">a GitHub repo for filing any new microformats2 parsing issues</a>.
</p>
<h2 id="mf2-parsers">more microformats2 parsers</h2>
<p>
The number of <a href="http://microformats.org/wiki/microformats2#Parsers">microformats2 parsers</a> in different languages continues to grow, most of them with deployed live-input textareas so you can try them on the web without touching a line of parsing code or a command line! All of these are open source (repos linked from their sections), unless otherwise noted. These are the new ones:
</p>
<ul>
<li><a href="http://microformats.org/wiki/microformats2#Elixir">Elixir</a> &#8211; created by <a class="h-card" href="https://github.com/ckruse">ckruse</a>.
</li>
<li><a href="http://microformats.org/wiki/microformats2#Haskell">Haskell</a> &#8211; created by <a class="h-card" href="https://unrelenting.technology/">myfreeweb</a>
</li>
<li><a href="http://microformats.org/wiki/microformats2#Java">Java</a> (2)</li>
</ul>
<p>
The Java parsers are a particularly interesting development as one is part of the upgrade to Apache Any23 to support microformats2 (thanks to <a href="https://twitter.com/hectorMcSpector/status/645313144676478977">Lewis John McGibbney</a>). <a href="http://any23.apache.org/download.html">Any23 is a library</a> used for analysis of various web crawl samples to measure representative use of various forms of semantic markup.
</p>
<p>
The other Java parser is <a href="https://github.com/kylewm/mf2j">mf2j, an early-stage Java microformats2 parser</a>, created by <a class="h-card" href="http://kylewm.com/">Kyle Mahan</a>.
</p>
<p>
The Elixir, Haskell, and Java parsers add to our existing in-development parser libraries in <a href="http://microformats.org/wiki/microformats2#Go">Go</a> and <a href="http://microformats.org/wiki/microformats2#Ruby">Ruby</a>. The Go parser in particular has recently seen a resurgence in interest and improvement thanks to Will Norris.
</p>
<p>
These in-development parsers add to existing production parsers, that is, those being used live on websites to parse and consume microformats for various purposes:
</p>
<ul>
<li><a href="http://microformats.org/wiki/microformats2#Javascript">Javascript</a> (cross-browser client-side, and Node)
</li>
<li><a href="http://microformats.org/wiki/microformats2#PHP">PHP</a>
</li>
<li><a href="http://microformats.org/wiki/microformats2#Python">Python</a>
</li>
</ul>
<p>
As with any open source projects, tests, feedback, and contributions are very much welcome! Try building the production parsers into your projects and sites and see how they work for you.
</p>
<h2 id="mf2-simpler">Still simpler, easier, and smaller after all these years</h2>
<p>
Usually technologies (especially standards) get increasingly complex and more difficult to use over time. With microformats we have been able to maintain (and in some cases improve) their simplicity and ease of use, and continue to this day to get testimonials saying as much, especially in comparison to other efforts:
</p>
<blockquote><p><a href="https://twitter.com/schofeld/status/648502325120737281">…hmm, looks like I should use a separate meta element: https://schema.org/startDate .<br />
<br />
Man, Schema is verbose. @microformats FTW!</a>
</p></blockquote>
<div class="h-cite">
<p>On the broader problem of schema.org verbosity (no matter the syntax), <a class="p-author h-card">Kevin Marks</a> wrote a very thorough blog post early in the past year:
</p>
<ul>
<li><cite><a class="u-url p-name" href="http://www.kevinmarks.com/microformatschema.html">Microformats 2 and Schema <time class="dt-published">2015-06-30</time></a></cite>
</li>
</ul>
</div>
<p>
More testimonials:
</p>
<blockquote><p><a href="https://twitter.com/robsonsobral/status/695243474048847872">I still prefer @microformats over microdata</a></p></blockquote>
<div class="quote-divider" style="text-align:center">* * *</div>
<blockquote><p><a href="https://twitter.com/robsonsobral/status/695260909095276544">@microformats are easier to write, easier to maintain and the code is so much smaller than microdata.</a></p></blockquote>
<div class="quote-divider" style="text-align:center">* * *</div>
<blockquote><p><a href="https://twitter.com/vlahan/status/742819320372334592">I am not a big fan of RDF, semanticweb, or predefined ontologies. We need something lightweight and emergent like the microformats</a></p></blockquote>
<p>
This last testimonial really gets at the heart of one of the deliberate improvements we have made to iterating on microformats vocabularies in particular.
</p>
<h2 id="mf2-vocabs">evolving h-entry</h2>
<p>
We have had an implementation-driven and implementation-tested practice for the microformats2 parsing specification for quite some time.
</p>
<p>
More and more we are adopting a similar approach to growing and evolving microformats vocabularies like <a href="http://microformats.org/wiki/h-entry">h-entry</a>.
</p>
<p>
We have learned to start vocabularies as minimal as possible, rather than start with everything you might want to do. That “start with everything you might want” is a common theory-first approach taken by a-priori vocabularies or entire &#8220;predefined ontologies&#8221; like schema.org&#8217;s 150+ objects at launch, very few of which (single digits?) Google or anyone bothers to do anything with, a classic example of premature overdesign, of <a href="https://en.wikipedia.org/wiki/YAGNI"><abbr title="you ain't gonna need it">YAGNI</abbr></a>).
</p>
<p>
With h-entry in particular, we started with an implementation filtered subset of hAtom, and since then have started documenting new properties through a few deliberate phases (which helps communicate to implementers which are more experimental or more stable)
</p>
<ol>
<li><a href="http://microformats.org/wiki/h-entry#Proposed_Additions">Proposed Additions</a> – when someone proposes a property, gets some sort of consensus among their community peers, and perhaps one more person to implementing it in the wild beyond themselves (e.g. as the IndieWebCamp community does), it&#8217;s worth capturing it as a proposed property to communicate that this work is happening between multiple people, and that feedback, experimentation, and iteration is desired.
</li>
<li><a href="http://microformats.org/wiki/h-entry#Draft_Properties">Draft Properties</a> &#8211; when implementations begin to consume proposed properties and doing something explicit with them, then a postive reinforcement feedback loop has started and it makes sense to indicate that such a phase change has occured by moving those properties to &#8220;draft&#8221;. There is growing activity around those properties, and thus this should be considered a last call of sorts for any non-trivial changes, which get harder to make with each new implementation.
</li>
<li><a href="http://microformats.org/wiki/h-entry#Core_Properties">Core Properties</a> &#8211; these properties have gained so much publishing and consuming support that they are for all intents and purposes stable. Another phase change has occured: it would be much harder to change them (too many implementations to coordinate) than keep them the same, and thus their stability has been determined by real world market adoption.
</li>
</ol>
<p>
The three levels here, proposed, draft, and core, are merely &#8220;working&#8221; names, that is, if you have a better idea what to call these three phases by all means propose it.
</p>
<p>
In h-entry in particular, it&#8217;s likely that some of the draft properties are now mature (implemented) enough to move them to core, and some of the proposed properties have gained enough support to move to draft. The key to making this happen is finding and citing documentation of such implementation and support. Anyone can speak up in the IRC channel etc. and point out such properties that they think are ready for advancement.
</p>
<h2 id="mf2-11-to-12">How we improve moving forward</h2>
<p>
We have made a lot of progress and have much better processes than we did even a year ago, however I think there’s still room for improvement in how we evolve both microformats technical specifications like the microformats2 parsing spec, and in how we create and improve vocabularies.
</p>
<p>It’s pretty clear that to enable innovation we have to ways of encouraging constructive experimentation, and yet we also need a way of indicating what is stable vs in-progress. For both of those we have found that real world implementations provide both a good focusing mechanism and a good way to test experiments.
</p>
<p>
In the coming year I expect we will find even better ways to explain these methods, in the hopes that others can use them in their efforts, whether related to microformats or in completely different standards efforts. For now, let’s appreciate the progress we’ve made in the past year from publishing sites, to parsing implementations, from process improvements, to continuously improving living specifications. Here&#8217;s to year 12.
</p>
<p>
Originally published at: <a href="http://tantek.com/2016/173/b1/microformats-org-at-11">tantek.com/2016/173/b1/microformats-org-at-11</a>.</p>
                </div>
                                
				<ul class="post-info">
					<li><a class="updated" href="http://microformats.org/2016/06/22/microformats-org-at-11" rel="bookmark" title="Permanent Link to microformats.org at 11">
                            <span class="value-title" title="2016-06-22T07:20:49"> </span>
                            June 22nd, 2016                        </a>
                    </li>
					<li>
					    <address class="author vcard">                
					    <a class="url fn" href="http://tantek.com/">
					        <img alt='' src='http://0.gravatar.com/avatar/02cd45622e90350cc061aaaa02229195?s=16&amp;d=http%3A%2F%2F0­.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb­6523536%3Fs%3D16&amp;r=PG' class='avatar avatar-16 photo' height='16' width='16' />					        Tantek					    </a>
					    </address>
					</li>
					<li><span>Comments Off</span></li>
                    <li>
                                            </li>
				</ul>
			</div>
					<div class="entry hentry">
				<h3 class="entry-title" id="post-437"><a href="http://microformats.org/2014/06/20/microformats-org-turns-9-upgrade-to-microformats2" rel="bookmark" title="Permanent Link to microformats.org turns 9 — upgrade to microformats2 and more">microformats.org turns 9 — upgrade to microformats2 and more</a></h3>
                <div class="entry-content">
				    <p>
<img style="float:left; max-width:33%" src="http://tantek.com/presentations/2012/07/html5-microformats2/microformats-logo.png" alt="microformats logo"/><br />
Nine years ago we launched <a href="http://microformats.org/">microformats.org</a> with a basic premise: that it is possible to express meaning on the web in HTML in a simple way—far simpler than the complex alternatives (XML) being promoted by mature companies and standards organizations alike.
</p>
<p>
Today microformats.org continues to be a gathering place for those seeking simpler ways to express meaning in web pages, most recently the growing <a href="http://indiewebcamp.com/">IndieWeb movement</a>.
</p>
<p style="clear:both">
Looking back nine years ago, none of the other alternatives promoted in the 2000s (even by big companies like Google and Yahoo) survive to this day in any meaningful way:
</p>
<ul>
<li><a href="http://microformats.org/wiki/Google_Base">Google Base</a> </li>
<li><a href="http://microformats.org/wiki/Google_Data">Google Data</a> </li>
<li>Yahoo&#8217;s <a href="http://microformats.org/wiki/CommonTag">CommonTag.org</a> </li>
<li>too many XML approaches to count</li>
</ul>
<p>
From this experience, we conclude that what large companies support (or claim to prefer) is often a trailing indicator (at best).
</p>
<p>
Large companies tend to promote more complex solutions, perhaps because they can afford the staff, time, and other resources to develop and support complex solutions. Such approaches fundamentally lack empathy for independent developers and designers, who don&#8217;t have time to keep up with all the complexity.
</p>
<p>
If there&#8217;s one value that&#8217;s at the heart of microformats&#8217; focus and continued evolution of <a href="http://microformats.org/wiki/simplicity">simplicity</a>, it is that empathy for independent developers and designers, for small consulting shops, for curious hobbyists who are most enabled and empowered by the simplest possible solutions to problems.
</p>
<p>
We now know that no amount of large company marketing and evangelism can make up for a focus on ever simpler solutions which take less time to learn, use, and reliably maintain. As long as we focus on that, we will create better solutions.
</p>
<h2 id="community-changes">Community Changes</h2>
<p>
Speaking of taking less time, we&#8217;ve learned some community lessons about that too. Perhaps the most important is that as a community we are far more efficiently productive using <em>just</em> <a href="http://microformats.org/wiki/IRC">IRC</a> and the wiki, than any amount of use of email. In fact, the microformats drafts that were developed wtih the most email (e.g. hAudio) turned out to be the hardest to follow and discuss (too many long emails), and sadly ended up lacking the simplicity that real world publishers wanted (e.g. last.fm).
</p>
<p>
Email tends to bias design and discussions towards those who have more time to read and write long emails, and (apparently) enjoy that for its own sake, than those who want to quickly research &amp; brainstorm, and get to actually <em>creating, building, and deploying</em> things with microformats.
</p>
<p>
Thus we&#8217;re making these changes effective today:
</p>
<ul>
<li><a href="http://microformats.org/wiki/IRC">IRC</a> for all microformats discussions, whether research, questions, or brainstorming</li>
<li><a href="http://microformats.org/wiki/email">email</a> only for occasional announcements and to direct people to IRC.</li>
<li><a href="http://microformats.org/wiki">wiki</a> for capturing questions, brainstorming, conclusions, and different points of view</li>
</ul>
<p>
We&#8217;re going to update the site to direct all discussion (e.g links) to the IRC channel accordingly.
</p>
<p>
Hope to see you there: <a href="irc://irc.freenode.net/microformats">#microformats on irc.freenode.net</a>
</p>
<h2 id="upgrading-to-uf2">Upgrading to microformats2</h2>
<p>
Over the past few years <a href="http://microformats.org/wiki/microformats2">microformats2</a> has proven itself in practice, with numerous sites both publishing and consuming, several open source parsing libraries, and a growing test suite. All the lessons learned from the evolution from original microformats, from RDFa, and from microdata have been incorporated into microformats2 which is now the simplest to both publish and parse.
</p>
<p>
It&#8217;s time to throw the switch and upgrade everything to <a href="http://microformats.org/wiki/microformats2">microformats2</a>. This means three things:
</p>
<h3 id="upgrading-microformats-org">Upgrading microformats.org</h3>
<p>
First, we&#8217;re starting by upgrading the links on the microformats.org home page to point to the microformats2 drafts, which are ready for use.
</p>
<p>
We&#8217;ll be incrementally upgrading the markup of the microformats.org site itself to use microformats2 markup.
</p>
<h3 id="upgrade-sites">Upgrade sites</h3>
<p>
Second, if you publish any kind of semantic information, start upgrading your web pages to microformats2 across the board.
</p>
<p>
If you&#8217;re concerned about what search engines claim to support, there are two approaches to choose from:
</p>
<ol>
<li>Know that search engines are a trailing indicator, and as microformats2 usage grows, they&#8217;ll index it as well.</li>
<li>Or: Use <em>one</em> classic microformat (supported by all major <a href="http://microformats.org/wiki/search_engines">search engines</a>) at top of your page, e.g. on the <code>&lt;body&gt;</code>, in addition to your microformats2 markup throughout your pages. Search engines only really care to summarize the primary topic or purpose of a web page in their &#8220;rich snippets&#8221; or &#8220;cards&#8221;, and thus that&#8217;s sufficient.
</li>
</ol>
<p>
Check out the latest <a href="http://microformats.org/wiki/validators">validators</a> which now include some microformats2 support as well!
</p>
<h3 id="upgrade-tools">Upgrade tools</h3>
<p>
Third, this is a call to upgrade all microformats supporting tools to microformats2. As nearly all of these are open source, this is an open call for contributions, updates, patches, etc. for:
</p>
<ul>
<li><a href="http://microformats.org/wiki/Operator">Operator</a> </li>
<li><a href="http://microformats.org/wiki/H2VX">H2VX</a> </li>
<li><a href="http://microformats.org/wiki/validators">validators</a> </li>
<li><a href="http://microformats.org/code/hcard/creator.html">hCard creator</a> </li>
<li><a href="http://microformats.org/code/hcalendar/creator.html">hCalendar creator</a> </li>
<li><a href="http://microformats.org/code/hreview/creator.html">hReview creator</a> </li>
</ul>
<p>
If it generates microformats, upgrade it to <em>instead</em> generate microformats2.
</p>
<p>
If it consumes microformats, upgrade it to <em>also</em> consume microformats2 (which may be most easily done by making use of one of the microformats2 <a href="http://microformats.org/wiki/parsers">parsers</a> that has backward compatible parsing built in).
</p>
<h2 id="uf-org-10-goal">10th Year Goal</h2>
<p>
As we enter the tenth year of microformats.org let&#8217;s make it our collective goal to upgrade our pages, our sites, and our tools to <a href="http://microformats.org/wiki/microformats2">microformats2</a>.
</p>
<p>
Our goal is to complete all the above upgrades by microformats.org&#8217;s tenth birthday, if not sooner. Let&#8217;s get to work.
</p>
<p>
Thanks to <a class="h-card" href="http://waterpigs.co.uk/">Barnaby Walters</a> and fellow microformats <a href="http://microformats.org/wiki/admins">admins</a> <a class="h-card" href="http://rohit.khare.org/">Rohit Khare</a>, <a class="h-card" href="http://kevinmarks.com/">Kevin Marks</a>, &amp; <a class="h-card" href="http://edward.oconnor.cx/">Ted O&#8217;Connor</a> for reviewing drafts of this post. Thanks to Kevin especially for some copy edits!
</p>
<p>This post was <a href="http://tantek.com/2014/171/b1/microformats-org-turns-nine">originally posted on tantek.com</a>.</p>
                </div>
                                <div class="post-tags">
                    <h4>Tags for this entry</h4>
                    <ul><li><a href="http://microformats.org/tag/microformats2" rel="tag">microformats2</a></li></ul>                </div>
                                
				<ul class="post-info">
					<li><a class="updated" href="http://microformats.org/2014/06/20/microformats-org-turns-9-upgrade-to-microformats2" rel="bookmark" title="Permanent Link to microformats.org turns 9 — upgrade to microformats2 and more">
                            <span class="value-title" title="2014-06-20T12:43:36"> </span>
                            June 20th, 2014                        </a>
                    </li>
					<li>
					    <address class="author vcard">                
					    <a class="url fn" href="http://tantek.com/">
					        <img alt='' src='http://0.gravatar.com/avatar/02cd45622e90350cc061aaaa02229195?s=16&amp;d=http%3A%2F%2F0­.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb­6523536%3Fs%3D16&amp;r=PG' class='avatar avatar-16 photo' height='16' width='16' />					        Tantek					    </a>
					    </address>
					</li>
					<li><span>Comments Off</span></li>
                    <li>
                                            </li>
				</ul>
			</div>
					<div class="entry hentry">
				<h3 class="entry-title" id="post-417"><a href="http://microformats.org/2014/03/05/getting-started-with-microformats2" rel="bookmark" title="Permanent Link to Getting Started With microformats2">Getting Started With microformats2</a></h3>
                <div class="entry-content">
				    <p>Classic microformats have been serving the web community’s need to extend HTML’s expressive power <a href="http://microformats.org/wiki/history#2004">since 2004</a>. Through an evolutionary, open, rigorous community process and human-first design principles, structured use of the <code>class</code> and <code>rel</code> attributes have paved the cowpaths of publishing data about people, places, events, reviews, products and more.</p>
<p>Microformats2 is the next big effort by the community to improve how microformats are authored, parsed and defined. Version two has multiple working open source implementations which independents are using in production and is easier to publish and consume than ever.</p>
<p>In this series of guides I’ll show you how to be the next site publishing and consuming microformats.</p>
<p class="info">You can see how a microformats parser sees your markup by pasting any of the code samples below into <a href="http://waterpigs.co.uk/php-mf2">this php-mf2 sandbox</a>. Go ahead and experiment with adding more properties and see what happens!</p>
<h2>Incremental Steps</h2>
<p>In order to demonstrate some of the differences between microformats 2 and Classic Microformats/other competing technologies, I’ll use the process of content-out markup — going from plain text to HTML and finally adding a sprinkling of microformats. Let’s start with my favourite example: mentioning a person.</p>
<p>As plain text:</p>
<pre><code>Barnaby Walters </code></pre>
<p>With HTML:</p>
<pre><code>&lt;a href="http://waterpigs.co.uk"&gt;Barnaby Walters&lt;/a&gt; </code></pre>
<p>With classic microformats:</p>
<pre><code>&lt;span class="vcard"&gt;&lt;a class="fn n url" href="http://waterpigs.co.uk"&gt;Barnaby Walters&lt;/a&gt;&lt;/span&gt;</code></pre>
<p>That’s 37 extra characters and a whole extra nested element just to say “This link is to a person”, not to mention the strangely named root classname (vcard? I thought this was an hcard?) and multiple cryptic <code>fn n</code> classnames. Competing technologies are typically even longer and messier.</p>
<p>With microformats 2 this all becomes much simpler:</p>
<pre><code>&lt;a class="h-card" href="http://waterpigs.co.uk"&gt;Barnaby Walters&lt;/a&gt; </code></pre>
<p>Weighing in at only 15 characters, this is quicker to type, easier on the eyes and easier to remember.</p>
<p>There are two fundamental changes in microformats 2 which make this helium-esque lightness possible: Implied Properties and prefixed classnames.</p>
<h2>Implied Properties</h2>
<p>When you give <code>class=h-card</code> to an element, you’re saying “This element represents a person”. In many cases the element will be simple; just a name, perhaps with a link or photo. Why should you add extra elements and classnames just to tell a dumb computer which bit is the name, URL or photo URL when that information is already expressed by the markup?</p>
<p>Implied properties save you from this tedium. When you specify an element as an h-card without explicitly defining which parts are the name, url or photo url, the parser will figure out what you meant. And it’s not just for h-cards either — thanks to the new generic parsing in microformats 2, this shorthand works for any microformat.</p>
<h2>Prefixed Classnames</h2>
<p>Classic microformats used plain classnames which looked like any other (e.g. <code>vcard</code>, <code>n</code> or <code>note</code>). There were a few problems with this — classnames would clash, cause false positives or be thrown away by developers who weren’t microformats-aware (“these classnames aren’t doing anything!”).</p>
<p>This also meant parsers were tricky to write, as each one had to maintain a long list of classnames used by each microformats, resulting in many parsers quickly going out of date.</p>
<p>Prefixing classnames solves both of these problems: semantic microformats2 classnames are set apart from styling hooks, and parsers can figure out which classnames to look for, cutting down on maintenance. There are 5 prefixes:</p>
<ul>
<li><code>h-*</code> root classnames specify that an element is a microformat, e.g. <code>&lt;span class="h-card"&gt;</code></li>
<li><code>p-*</code> specifies an element as a plain-text property, e.g. <code>&lt;span class="p-name"&gt;My Name&lt;/span&gt;</code></li>
<li><code>u-*</code> parses an element as a URL, e.g. <code>&lt;a class="u-url" href="/"&gt;&lt;/a&gt;</code></li>
<li><code>dt-*</code> parses an element as a date/time, e.g. <code>&lt;time class="dt-published" datetime="2013-05-02 12:00:00" /&gt;</code></li>
<li><code>e-*</code> parses an element’s whole inner HTML, e.g. <code>&lt;div class="e-content"&gt;</code></li>
</ul>
<p>I’ll demonstrate the use of all of these prefixes with some real-world examples.</p>
<p>Firstly, another h-card, more fleshed out than the earlier example. This might be the sort that you put on your homepage:</p>
<pre><code>&lt;div class="h-card"&gt;
  &lt;p&gt;&lt;img class="u-photo" href="/me.png" alt="" /&gt;&lt;/p&gt;
  &lt;p class="p-name"&gt;
    &lt;a href="u-url" href="http://waterpigs.co.uk"&gt;Barnaby Walters&lt;/a&gt;
  &lt;/p&gt;
&lt;/div&gt;</code></pre>
<p>p-name, u-url and u-photo are fairly standard properties you’ll see over and over again. Another improvement in microformats 2 is increasing consistency between different microformat specifications — again, making them easier to authors to remember and consumers to understand. A nice side effect is that a single element can be more than one type of microformat at once — for example a h-entry and h-review.</p>
<p>To demonstrate <code>dt-*</code> and <code>e-*</code>, here’s a note (like a tweet or short blog post), marked up using <code>h-entry</code>:</p>
<pre><code>&lt;article class="h-entry"&gt;
  &lt;div class="e-content p-summary p-name"&gt;
    &lt;p&gt;Just writing a guide to using &lt;a href="http://microformats.org/wiki/microformats-2"&gt;
microformats-2&lt;/a&gt;&lt;/p&gt;
  &lt;/div&gt;
  &lt;time class="dt-published" datetime="2013-05-01 12:00:00"&gt;20 minutes ago&lt;/time&gt; 
&lt;/article&gt; </code></pre>
<p>Here, I want the HTML inside the content to be passed to the parser, so I mark it up as <code>e-*</code>. Notice I’m also specifying that content as the summary and name — one element can be parsed as multiple properties.</p>
<p>I’m using the <code>time</code> element to mark up the time this note was published. Because I’ve prefixed the classname with <code>dt-</code> and it’s on a <code>time</code> element, parsers know to look in the <code>datetime</code> attribute if it exists.</p>
<h2>Combining Microformats</h2>
<p>The third area in which microformats2 improves on the previous version is in combining microformats and making each microformat specification more reusable — for example, both a person or an event might have an address, so it makes sense to reuse the same markup for both.</p>
<p>There are many reasons to combine microformats — say you want to specify the author of a blog post or review. You would do so by making the p-author of the post an h-card:</p>
<pre><code>&lt;article class="h-entry"&gt;
  &lt;p class="p-author h-card"&gt;Barnaby Walters&lt;/p&gt;
  &lt;p class="p-content"&gt;Blah blah blah&lt;/p&gt;
  … </code></pre>
<p>Or a comment on an article, via <code>h-cite</code>s as <code>p-comment</code>s:</p>
<pre><code>
  …
  &lt;article class="p-comment h-cite"&gt;
    &lt;p class="p-author h-card"&gt;Jón Jónsson&lt;/p&gt;
    &lt;p class="p-summary"&gt;Woah that’s insightful.&lt;/p&gt;
    &lt;p&gt;&lt;a class="u-url" href="http://jonsson.com/replies/1"&gt;
      &lt;time class="dt-published" datetime="2014-03-01T14:00:25+00:00&gt;
        2014-03-01 14:00
      &lt;/time&gt;
    &lt;/a&gt;&lt;/p&gt;
  &lt;/article&gt;
&lt;/article&gt; </code></pre>
<p>The reason comments are <code>h-cite</code>s instead of <code>h-entry</code>s is that <code>h-entry</code> implies syndication — it’s something you’ve posted, or have re-posted, whereas a comment is a reference to a post on another site.</p>
<p>Or the address of a person or event, using <code>h-adr</code>:</p>
<pre><code>&lt;div class="h-event"&gt;
  &lt;h1 class="p-name"&gt;Microformats Meetup&lt;/h1&gt;
  &lt;p&gt;Join us at &lt;b class="p-adr h-adr"&gt;
    &lt;span class="p-street-address"&gt;Some Bar&lt;/span&gt;,
    &lt;span class="p-locality"&gt;Someplace&lt;/span&gt;&lt;/b&gt;
  &lt;/p&gt;
&lt;/div&gt; </code></pre>
<h2>Further Reading</h2>
<p>Hopefully this overview tickled your interest and gave you a firm foundation from which to base further investigation. To learn more about the topics covered in this post, see the following URLs:</p>
<ul>
<li>The <a href="http://microformats.org/wiki/microformats-2">Microformats 2 Wiki</a>, specifically:</li>
<li><a href="http://microformats.org/wiki/microformats-2-parsing">Microformats 2 Parsing</a></li>
<li><a href="http://microformats.org/wiki/microformats2-prefixes">Microformats 2 Prefixes</a></li>
<li>The <a href="http://waterpigs.co.uk/presentations/microformats-2/#slide-2">Microformats 2: What’s New</a> presentation I gave at Exeter Web</li>
</ul>
<p>This article reposted from <a class="u-repost-of" href="http://waterpigs.co.uk/articles/getting-started-with-microformats2/">Getting Started With microformats2 on waterpigs.co.uk</a>, and is the first of a series covering microformats2. Be sure to follow <a href="http://waterpigs.co.uk/articles">my articles feed</a> to be notified about the others. I also post <a href="http://waterpigs.co.uk/notes?tagged=microformats">notes</a> about microformats quite often. They&#8217;re syndicated to <a href="https://twitter.com/barnabywalters">my twitter account</a> too.</p>
                </div>
                                
				<ul class="post-info">
					<li><a class="updated" href="http://microformats.org/2014/03/05/getting-started-with-microformats2" rel="bookmark" title="Permanent Link to Getting Started With microformats2">
                            <span class="value-title" title="2014-03-05T16:48:53"> </span>
                            March 5th, 2014                        </a>
                    </li>
					<li>
					    <address class="author vcard">                
					    <a class="url fn" href="http://waterpigs.co.uk/">
					        <img alt='' src='http://0.gravatar.com/avatar/4a57cddee3c50aefa893005dcdd33b64?s=16&amp;d=http%3A%2F%2F0­.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb­6523536%3Fs%3D16&amp;r=PG' class='avatar avatar-16 photo' height='16' width='16' />					        waterpigs.co.uk/					    </a>
					    </address>
					</li>
					<li><a href="http://microformats.org/2014/03/05/getting-started-with-microformats2#comments" title="Comment on Getting Started With microformats2">1 Comment</a></li>
                    <li>
                                            </li>
				</ul>
			</div>
				
		
	<h3 id="archive-link">Browse all entries by month in the <a href="/blog/" class="more">blog archive</a></h3>

	</div>

<hr class="hide" />
   
<div id="sidebar">    
<div id="text-137140391" class="box widget widget_text"><div class="box-inner"><h3>What are microformats?</h3>			<div class="textwidget"><p><img src="/wordpress/wp-content/themes/microformats/img/mf-lg-ora.gif" alt="" id="about-logo" />Designed for humans first and machines second, microformats are a set of simple, open data formats built upon existing and widely adopted standards. <a href="/wiki/about" class="more">Learn more about microformats</a></p></div>
		</div></div><div id="text-137140392" class="box widget widget_text"><div class="box-inner"><h3>Microformat specifications</h3>			<div class="textwidget"><dl id="mf-list">
               <dt>People and Organizations </dt>
               <dd><a href="/wiki/h-card">h-card</a>, <a href="http://microformats.org/wiki/xfn"><abbr title="XHTML Friends Network">XFN</abbr></a></dd>
               <dt>Calendars and Events</dt> 
               <dd><a href="/wiki/h-calendar">h-calendar</a></dd>
               <dt>Opinions, Ratings and Reviews</dt>
               <dd><a href="/wiki/h-review">h-review</a></dd>
               <dt>Licenses:</dt>
               <dd><a href="/wiki/rel-license">rel-license</a></dd>
               
               <dt>Tags, Keywords, Categories</dt>
               <dd><a href="/wiki/rel-tag">rel-tag</a></dd>
               <dt>Lists and Outlines</dt>
               <dd><a href="/wiki/xoxo">XOXO</a></dd>
               <dt>More…</dt>
               <dd>See <a href="/wiki/">the list of all microformats</a></dd>
            </dl></div>
		</div></div><div id="text-137140393" class="box widget widget_text"><div class="box-inner"><h3>Upcoming Events</h3>			<div class="textwidget"><ul>
    <li><a href="http://microformats.org/wiki/events">See microformats events on the wiki</a></li>
    <li><a href="http://indiewebcamp.com/events">See also <strong>IndieWebCamp Events!</strong></a></li>
</ul></div>
		</div></div><div id="categories-137139891" class="box widget widget_categories"><div class="box-inner"><h3>Post Categories</h3>		<ul>
	<li class="cat-item cat-item-22"><a href="http://microformats.org/category/events" title="Events about or including microformats; parties, conferences and hack days.">Events</a>
</li>
	<li class="cat-item cat-item-1"><a href="http://microformats.org/category/news" title="View all posts filed under News">News</a>
</li>
	<li class="cat-item cat-item-39"><a href="http://microformats.org/category/this-week" title="This Week in Microformats is a semi-regular update of what&#039;s happened on the microformats.org wiki and mailing lists.">This Week in Microformats</a>
</li>
		</ul>
</div></div>      
    <div class="box">
        <div class="box-inner">
            <form method="get" id="search" action="/index.php">
	<div>
		<input type="text" value="search blog" name="s" id="search-text" onfocus="if(this.value=='' || this.value=='search blog'){this.value='';}" onblur="if(this.value==''){this.value='search blog';}" />
		<input type="image" id="search-submit" alt="Search" src="http://microformats.org/wordpress/wp-content/themes/microformats/img/btn-search.gif" />
	</div>
</form>        </div>
    </div>

    <div class="box">
        <div class="box-inner">
                    </div>
    </div>

</div> <!-- end #sidebar -->

<hr class="hide" />

<div id="footer">
	<p>Powered by <a href="http://wordpress.org">WordPress</a> | <a href="http://mediatemple.net/">(mt) media temple</a> | <a href="http://no-www.org/">No WWW</a>.	
		<!-- 24 queries. 0.297 seconds. -->
	</p>
</div>

</div> <!-- end #wrap -->
<link rel='stylesheet' id='openid-css'  href='http://microformats.org/wordpress/wp-content/plugins/openid/f/openid.css?ver=519' type='text/css' media='all' />

<!-- c(~) -->
<script src="http://www.google-analytics.com/urchin.js" type="text/javascript">
</script>
<script type="text/javascript">
_uacct = "UA-1889385-1";
urchinTracker();
</script>
</body>
</html>


Parsed source

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head profile="http://gmpg.org/xfn/11">
	<meta http-equiv="content-type" content="text/html; charset=utf-8"/>
	<title>Microformats  </title>
	<link rel="stylesheet" type="text/css" media="screen, projection" href="http://microformats.org/wordpress/wp-content/themes/microformats/style.css"/>
	<link rel="stylesheet" type="text/css" media="print" href="http://microformats.org/wordpress/wp-content/themes/microformats/css/print.css"/>
	<!--[if lte IE 6]>
    <link rel="stylesheet" type="text/css" media="screen, projection" href="http://microformats.org/wordpress/wp-content/themes/microformats/css/ie.css" />	    
	<![endif]-->
	<!--[if lte IE 5.5]>
    <link rel="stylesheet" type="text/css" media="screen, projection" href="http://microformats.org/wordpress/wp-content/themes/microformats/css/ie5.css" />	    
	<![endif]-->
	<link rel="shortcut icon" type="image/ico" href="/favicon.ico"/>
	<link rel="alternate" type="application/rss+xml" title="RSS 2.0" href="http://microformats.org/feed"/>
</head>
<body>

<div id="wrap">
	<div id="header">
		<h1>		    <img src="http://microformats.org/wordpress/wp-content/themes/microformats/img/logo.gif" width="144" height="36" alt="microformats"/>
		</h1>
			
		<ul id="nav">
		<li class="active"><a href="/blog" title="Microformats.org Home" shape="rect">Blog</a></li>
<li><a href="/wiki/" title="The microformats.org documentation and specifications" shape="rect">Wiki</a></li>
<li><a href="/wiki/irc" title="Join and read discussion forum to discuss and develop microformats" shape="rect">Discuss</a></li>
<li><a href="/wiki/about" title="What are microformats?" shape="rect">About</a></li>
<li><a href="/wiki/code-tools" title="Snippets and tools to help you publish microformats" shape="rect">Code &amp; Tools</a></li>
<li><a href="/wiki/get-started" title="A little guide on how to publish your first hCard" shape="rect">Get Started</a></li>
		</ul>
	</div>
		
	<hr class="hide"/>
	

	<div id="content" class="hfeed">
		<h2 id="home-title">Latest microformats news <a href="http://microformats.org/feed" title="link to RSS feed" id="feed-link" shape="rect"><img src="http://microformats.org/wordpress/wp-content/themes/microformats/img/xml.gif" width="23" height="13" alt="Feed"/></a></h2>
			
					<div class="entry hentry">
				<h3 class="entry-title" id="post-469"><a href="http://microformats.org/2017/06/22/improving-the-php-mf2-parser" rel="bookmark" title="Permanent Link to Improving the php-mf2 parser" shape="rect">Improving the php-mf2 parser</a></h3>
                <div class="entry-content">
				    <p>During the past year, the popular <a href="https://github.com/indieweb/php-mf2" shape="rect">php-mf2</a> microformats parser has received quite a few improvements. My site runs ProcessWire and one of the plugins for it uses php-mf2, so I have been spending some time on it.</p>
<p>My own experience with microformats started when I discovered the <a href="http://microformats.org/wiki/hcard" shape="rect">hCard microformat</a>. I was impressed with the novelty of adding some simple HTML classes around contact information and having a browser extension parse it into an address book. Years later, when I started to get involved in the IndieWeb community, I learned a lot more about microformats2 and they became a key building block of my personal site.</p>
<p>php-mf2 is now much better at backwards-compatible parsing of microformats1. This is important because software should be able to consistently consume content whether it’s marked up with microformats1, microformats2, or a combination. An experimental feature for parsing language attributes has also been added. Finally, it’s now using the microformats test suite. Several other parsers use this test suite as well. This will make it easier to catch bugs and improve all of the different parsers.</p>
<p>php-mf2 is a stable library that’s ready to be installed in your software to start consuming microformats. It is currently used in <a href="https://withknown.com" shape="rect">Known</a>, <a href="https://wordpress.org/plugins/semantic-linkbacks/" shape="rect">WordPress plugins</a>, and <a href="https://modules.processwire.com/modules/webmention/" shape="rect">ProcessWire plugins</a> for richer social interactions. It’s also used in tools like <a href="https://github.com/aaronpk/XRay" shape="rect">XRay</a> and <a href="https://microformats.io" shape="rect">microformats.io</a>. I’m looking forward to more improvements to php-mf2 in the coming year as well as more software using it!</p>
<p>Original published at: <a href="https://gregorlove.com/2017/06/improving-the-php-mf2-parser/" shape="rect">https://gregorlove.com/2017/06/improving-the-php-mf2-parser/</a></p>
                </div>
                                
				<ul class="post-info">
					<li><a class="updated" href="http://microformats.org/2017/06/22/improving-the-php-mf2-parser" rel="bookmark" title="Permanent Link to Improving the php-mf2 parser" shape="rect">
                            <span class="value-title" title="2017-06-22T09:13:53"> </span>
                            June 22nd, 2017                        </a>
                    </li>
					<li>
					    <address class="author vcard">                
					    <a class="url fn" href="https://gregorlove.com/" shape="rect">
					        <img alt="" src="http://0.gravatar.com/avatar/aca81ab5bf69a4626c91edc811cea208?s=16&amp;d=http%3A%2F%2F0­.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb­6523536%3Fs%3D16&amp;r=PG" class="avatar avatar-16 photo" height="16" width="16"/>					        gRegor Morrill					    </a>
					    </address>
					</li>
					<li><span>Comments Off</span></li>
                    <li>
                                            </li>
				</ul>
			</div>
					<div class="entry hentry">
				<h3 class="entry-title" id="post-458"><a href="http://microformats.org/2017/06/20/evolving-for-12-years" rel="bookmark" title="Permanent Link to Evolving for 12 Years" shape="rect">Evolving for 12 Years</a></h3>
                <div class="entry-content">
				    <p>For the 12th birthday of microformats.org (congratulations!) <a class="h-card" href="http://tantek.com/" shape="rect">Tantek</a> asked the community if any of us would like to highlight whatever we liked in a guest post. I am taking this opportunity to talk about my favourite feature of microformats: its constant evolvement.</p>
<p>Sometimes it feels like a standard is done. Sometimes it feels like a standard is abandoned before its time. In a few special cases a standard keeps evolving. I think we can agree that microformats goes in the latter category. This is hugely thanks to the fact that anyone can help it grow.</p>
<p>As you read this, <a href="https://github.com/microformats/h-event/issues/2" shape="rect">work is being done</a> to upgrade <a href="http://microformats.org/wiki/h-event" shape="rect">h-event</a> from a Draft to a full Specification. This prompted a few of us to have a look at what people are doing with the format. As it turns out: it has departed from the Draft!</p>
<p><a href="https://indieweb.org/" shape="rect">The IndieWeb community</a> is putting events in their feeds, interleaving them with other items (like blog posts) that use <a href="http://microformats.org/wiki/h-entry" shape="rect">h-entry</a>. To make the events fit within this context properties are being copied over from h-entry, properties completely new to h-event. Somehow these separate implementations introduced <em>the same</em> properties, showing how h-event is evolving quicker than its Draft Specification without splintering it in lots of different versions. Naturally evolving the format forwards!</p>
<p>Then there are the small, fringe changes. Work on <a href="http://microformats.org/wiki/h-card-brainstorming#Pronouns" shape="rect">pronouns in h-cards</a> has been mostly dormant since 2015. I spent time with it during <a href="https://indieweb.org/2017/Nuremberg" shape="rect">IndieWebCamp Nuremberg</a> and came to <a href="http://wiki.zegnat.net/microformats/pronoun" shape="rect">a completely different conclusion</a> on how to mark-up my pronouns. The beauty there is that anyone can do the same! All it takes is to put something on your site, like the IndieWeb community did with h-event, and tell the world about this piece of extra information they now have access to.</p>
<p>Here is to one more year of constantly tinkering with our HTML and giving more meaning to the information we publish 🥂</p>
                </div>
                                
				<ul class="post-info">
					<li><a class="updated" href="http://microformats.org/2017/06/20/evolving-for-12-years" rel="bookmark" title="Permanent Link to Evolving for 12 Years" shape="rect">
                            <span class="value-title" title="2017-06-20T07:09:08"> </span>
                            June 20th, 2017                        </a>
                    </li>
					<li>
					    <address class="author vcard">                
					    <a class="url fn" href="http://vanderven.se/martijn/" shape="rect">
					        <img alt="" src="http://0.gravatar.com/avatar/a9f47f86e88c589944f97747e0fffff9?s=16&amp;d=http%3A%2F%2F0­.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb­6523536%3Fs%3D16&amp;r=PG" class="avatar avatar-16 photo" height="16" width="16"/>					        Martijn					    </a>
					    </address>
					</li>
					<li><span>Comments Off</span></li>
                    <li>
                                            </li>
				</ul>
			</div>
					<div class="entry hentry">
				<h3 class="entry-title" id="post-447"><a href="http://microformats.org/2016/06/22/microformats-org-at-11" rel="bookmark" title="Permanent Link to microformats.org at 11" shape="rect">microformats.org at 11</a></h3>
                <div class="entry-content">
				    <p><a href="http://julieannenoying.com/2016/06/20/happy-birthday-microformats/" shape="rect"><img style="display:block;text-align:center;margin:0 auto;max-width:100%" src="http://julieannenoying.com/wp-content/uploads/2016/06/ermergerd.jpg" alt="ERMERGERD!!! (excited girl holding a large microformats logo) HERPER BERTHDER!!!"/></a><br/>
Thanks to <a class="h-card" href="http://julieannenoying.com/" shape="rect">Julie Anne Noying</a> for the meme birthday card.
</p>
<aside>
<div class="aside">
<p>
In this day and age of <a href="https://medium.com/@wob/the-sad-state-of-web-development-1603a861d29f" shape="rect">web frameworks that rise and fall</a> like seasonal fashion displays, <a href="https://medium.com/@anildash/the-end-of-thinkup-e600bc46cc56" shape="rect">bait-and-break APIs</a>, and <a href="https://indiewebcamp.com/site-deaths#2015" shape="rect">sudden site-deaths</a>, it’s nothing short of incredible that we’ve been able to continue evolving, improving, and growing microformats use for 11 years. All that incremental work has produced quite a lot since <a href="http://tantek.com/2015/171/t1/10th-anniversary-microformats" shape="rect">a year ago</a>. Most recently, we’ve made great progress with iterating, publishing, and deploying <a href="http://microformats.org/wiki/microformats2" shape="rect">microformats2</a> support.</p>
<p>I believe microformats.org has surived as a community, and microformats as a technology, by continuing to focus on solving smaller, simpler problems first, and then iterating only as needed with real world use-cases. It’s an approach I think works as a good starting point for nearly any project. -Tantek
</p>
</div>
</aside>
<h2 id="mf2-pubs-parsers">10,000s of microformats2 sites and now 10 microformats2 parsers</h2>
<p>
The past year saw a huge leap in the number of sites publishing <a href="http://microformats.org/wiki/microformats2" shape="rect">microformats2</a>, from 1000s to now 10s of thousands of sites, primarily by adoption in the <a href="https://indiewebcamp.com/" shape="rect">IndieWebCamp</a> community, and especially the excellent <a href="http://withknown.com/" shape="rect">Known publishing system</a> and continually improving <a href="https://indiewebcamp.com/Getting_Started_on_WordPress" shape="rect">WordPress plugins &amp; themes</a>.
</p>
<p>
New <a href="http://microformats.org/wiki/microformats2#Parsers" shape="rect">modern microformats2 parsers</a> continue to be developed in various languages, and this past year, four new parsing libraries (in three different languages) were added, almost doubling our previous set of six (in five different languages) that brought our year 11 total to 10 microformats2 parsing libraries available in 8 different programming languages.
</p>
<h2 id="mf2-parsing-spec">microformats2 parsing spec updates</h2>
<p>
The <a href="http://microformats.org/wiki/microformats2-parsing" shape="rect">microformats2 parsing specification</a> has made significant progress in the past year, all of it incremental iteration based on real world publishing and parsing experience, each improvement discussed openly, and tested with real world implementations. The microformats2 parsing spec is the core of what has enabled even simpler publishing <em>and</em> processing of microformats.
</p>
<p>
The specification has reached a level of stability and interoperability where fewer issues are being filed, and those that are being filed are in general more and more minor, although once in a while we find some more interesting opportunities for improvement.
</p>
<p>We reached a milestone two weeks ago of resolving all outstanding <a href="http://microformats.org/wiki/microformats2-parsing-issues" shape="rect">microformats2 parsing issues</a> thanks to <a class="h-card" href="https://willnorris.com/" shape="rect">Will Norris</a> leading the charge with a developer spec hacking session at the recent <a href="https://indiewebcamp.com/2016" shape="rect">IndieWeb Summit</a> where he gathered parser implementers and myself (as editor) and walked us through issue by issue discussions and consensus resolutions. Some of those still require minor edits to the specification, which we expect to complete in the next few days.
</p>
<p>One of the meta-lessons we learned in that process is that the wiki  really is less suitable for collaborative issue filing and resolving, and as of today are switching to using <a href="https://github.com/microformats/microformats2-parsing/issues" shape="rect">a GitHub repo for filing any new microformats2 parsing issues</a>.
</p>
<h2 id="mf2-parsers">more microformats2 parsers</h2>
<p>
The number of <a href="http://microformats.org/wiki/microformats2#Parsers" shape="rect">microformats2 parsers</a> in different languages continues to grow, most of them with deployed live-input textareas so you can try them on the web without touching a line of parsing code or a command line! All of these are open source (repos linked from their sections), unless otherwise noted. These are the new ones:
</p>
<ul>
<li><a href="http://microformats.org/wiki/microformats2#Elixir" shape="rect">Elixir</a> – created by <a class="h-card" href="https://github.com/ckruse" shape="rect">ckruse</a>.
</li>
<li><a href="http://microformats.org/wiki/microformats2#Haskell" shape="rect">Haskell</a> – created by <a class="h-card" href="https://unrelenting.technology/" shape="rect">myfreeweb</a>
</li>
<li><a href="http://microformats.org/wiki/microformats2#Java" shape="rect">Java</a> (2)</li>
</ul>
<p>
The Java parsers are a particularly interesting development as one is part of the upgrade to Apache Any23 to support microformats2 (thanks to <a href="https://twitter.com/hectorMcSpector/status/645313144676478977" shape="rect">Lewis John McGibbney</a>). <a href="http://any23.apache.org/download.html" shape="rect">Any23 is a library</a> used for analysis of various web crawl samples to measure representative use of various forms of semantic markup.
</p>
<p>
The other Java parser is <a href="https://github.com/kylewm/mf2j" shape="rect">mf2j, an early-stage Java microformats2 parser</a>, created by <a class="h-card" href="http://kylewm.com/" shape="rect">Kyle Mahan</a>.
</p>
<p>
The Elixir, Haskell, and Java parsers add to our existing in-development parser libraries in <a href="http://microformats.org/wiki/microformats2#Go" shape="rect">Go</a> and <a href="http://microformats.org/wiki/microformats2#Ruby" shape="rect">Ruby</a>. The Go parser in particular has recently seen a resurgence in interest and improvement thanks to Will Norris.
</p>
<p>
These in-development parsers add to existing production parsers, that is, those being used live on websites to parse and consume microformats for various purposes:
</p>
<ul>
<li><a href="http://microformats.org/wiki/microformats2#Javascript" shape="rect">Javascript</a> (cross-browser client-side, and Node)
</li>
<li><a href="http://microformats.org/wiki/microformats2#PHP" shape="rect">PHP</a>
</li>
<li><a href="http://microformats.org/wiki/microformats2#Python" shape="rect">Python</a>
</li>
</ul>
<p>
As with any open source projects, tests, feedback, and contributions are very much welcome! Try building the production parsers into your projects and sites and see how they work for you.
</p>
<h2 id="mf2-simpler">Still simpler, easier, and smaller after all these years</h2>
<p>
Usually technologies (especially standards) get increasingly complex and more difficult to use over time. With microformats we have been able to maintain (and in some cases improve) their simplicity and ease of use, and continue to this day to get testimonials saying as much, especially in comparison to other efforts:
</p>
<blockquote><p><a href="https://twitter.com/schofeld/status/648502325120737281" shape="rect">…hmm, looks like I should use a separate meta element: https://schema.org/startDate .<br/>
<br/>
Man, Schema is verbose. @microformats FTW!</a>
</p></blockquote>
<div class="h-cite">
<p>On the broader problem of schema.org verbosity (no matter the syntax), <a class="p-author h-card" shape="rect">Kevin Marks</a> wrote a very thorough blog post early in the past year:
</p>
<ul>
<li><cite><a class="u-url p-name" href="http://www.kevinmarks.com/microformatschema.html" shape="rect">Microformats 2 and Schema <time class="dt-published">2015-06-30</time></a></cite>
</li>
</ul>
</div>
<p>
More testimonials:
</p>
<blockquote><p><a href="https://twitter.com/robsonsobral/status/695243474048847872" shape="rect">I still prefer @microformats over microdata</a></p></blockquote>
<div class="quote-divider" style="text-align:center">* * *</div>
<blockquote><p><a href="https://twitter.com/robsonsobral/status/695260909095276544" shape="rect">@microformats are easier to write, easier to maintain and the code is so much smaller than microdata.</a></p></blockquote>
<div class="quote-divider" style="text-align:center">* * *</div>
<blockquote><p><a href="https://twitter.com/vlahan/status/742819320372334592" shape="rect">I am not a big fan of RDF, semanticweb, or predefined ontologies. We need something lightweight and emergent like the microformats</a></p></blockquote>
<p>
This last testimonial really gets at the heart of one of the deliberate improvements we have made to iterating on microformats vocabularies in particular.
</p>
<h2 id="mf2-vocabs">evolving h-entry</h2>
<p>
We have had an implementation-driven and implementation-tested practice for the microformats2 parsing specification for quite some time.
</p>
<p>
More and more we are adopting a similar approach to growing and evolving microformats vocabularies like <a href="http://microformats.org/wiki/h-entry" shape="rect">h-entry</a>.
</p>
<p>
We have learned to start vocabularies as minimal as possible, rather than start with everything you might want to do. That “start with everything you might want” is a common theory-first approach taken by a-priori vocabularies or entire “predefined ontologies” like schema.org’s 150+ objects at launch, very few of which (single digits?) Google or anyone bothers to do anything with, a classic example of premature overdesign, of <a href="https://en.wikipedia.org/wiki/YAGNI" shape="rect"><abbr title="you ain't gonna need it">YAGNI</abbr></a>).
</p>
<p>
With h-entry in particular, we started with an implementation filtered subset of hAtom, and since then have started documenting new properties through a few deliberate phases (which helps communicate to implementers which are more experimental or more stable)
</p>
<ol>
<li><a href="http://microformats.org/wiki/h-entry#Proposed_Additions" shape="rect">Proposed Additions</a> – when someone proposes a property, gets some sort of consensus among their community peers, and perhaps one more person to implementing it in the wild beyond themselves (e.g. as the IndieWebCamp community does), it’s worth capturing it as a proposed property to communicate that this work is happening between multiple people, and that feedback, experimentation, and iteration is desired.
</li>
<li><a href="http://microformats.org/wiki/h-entry#Draft_Properties" shape="rect">Draft Properties</a> – when implementations begin to consume proposed properties and doing something explicit with them, then a postive reinforcement feedback loop has started and it makes sense to indicate that such a phase change has occured by moving those properties to “draft”. There is growing activity around those properties, and thus this should be considered a last call of sorts for any non-trivial changes, which get harder to make with each new implementation.
</li>
<li><a href="http://microformats.org/wiki/h-entry#Core_Properties" shape="rect">Core Properties</a> – these properties have gained so much publishing and consuming support that they are for all intents and purposes stable. Another phase change has occured: it would be much harder to change them (too many implementations to coordinate) than keep them the same, and thus their stability has been determined by real world market adoption.
</li>
</ol>
<p>
The three levels here, proposed, draft, and core, are merely “working” names, that is, if you have a better idea what to call these three phases by all means propose it.
</p>
<p>
In h-entry in particular, it’s likely that some of the draft properties are now mature (implemented) enough to move them to core, and some of the proposed properties have gained enough support to move to draft. The key to making this happen is finding and citing documentation of such implementation and support. Anyone can speak up in the IRC channel etc. and point out such properties that they think are ready for advancement.
</p>
<h2 id="mf2-11-to-12">How we improve moving forward</h2>
<p>
We have made a lot of progress and have much better processes than we did even a year ago, however I think there’s still room for improvement in how we evolve both microformats technical specifications like the microformats2 parsing spec, and in how we create and improve vocabularies.
</p>
<p>It’s pretty clear that to enable innovation we have to ways of encouraging constructive experimentation, and yet we also need a way of indicating what is stable vs in-progress. For both of those we have found that real world implementations provide both a good focusing mechanism and a good way to test experiments.
</p>
<p>
In the coming year I expect we will find even better ways to explain these methods, in the hopes that others can use them in their efforts, whether related to microformats or in completely different standards efforts. For now, let’s appreciate the progress we’ve made in the past year from publishing sites, to parsing implementations, from process improvements, to continuously improving living specifications. Here’s to year 12.
</p>
<p>
Originally published at: <a href="http://tantek.com/2016/173/b1/microformats-org-at-11" shape="rect">tantek.com/2016/173/b1/microformats-org-at-11</a>.</p>
                </div>
                                
				<ul class="post-info">
					<li><a class="updated" href="http://microformats.org/2016/06/22/microformats-org-at-11" rel="bookmark" title="Permanent Link to microformats.org at 11" shape="rect">
                            <span class="value-title" title="2016-06-22T07:20:49"> </span>
                            June 22nd, 2016                        </a>
                    </li>
					<li>
					    <address class="author vcard">                
					    <a class="url fn" href="http://tantek.com/" shape="rect">
					        <img alt="" src="http://0.gravatar.com/avatar/02cd45622e90350cc061aaaa02229195?s=16&amp;d=http%3A%2F%2F0­.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb­6523536%3Fs%3D16&amp;r=PG" class="avatar avatar-16 photo" height="16" width="16"/>					        Tantek					    </a>
					    </address>
					</li>
					<li><span>Comments Off</span></li>
                    <li>
                                            </li>
				</ul>
			</div>
					<div class="entry hentry">
				<h3 class="entry-title" id="post-437"><a href="http://microformats.org/2014/06/20/microformats-org-turns-9-upgrade-to-microformats2" rel="bookmark" title="Permanent Link to microformats.org turns 9 — upgrade to microformats2 and more" shape="rect">microformats.org turns 9 — upgrade to microformats2 and more</a></h3>
                <div class="entry-content">
				    <p>
<img style="float:left; max-width:33%" src="http://tantek.com/presentations/2012/07/html5-microformats2/microformats-logo.png" alt="microformats logo"/><br/>
Nine years ago we launched <a href="http://microformats.org/" shape="rect">microformats.org</a> with a basic premise: that it is possible to express meaning on the web in HTML in a simple way—far simpler than the complex alternatives (XML) being promoted by mature companies and standards organizations alike.
</p>
<p>
Today microformats.org continues to be a gathering place for those seeking simpler ways to express meaning in web pages, most recently the growing <a href="http://indiewebcamp.com/" shape="rect">IndieWeb movement</a>.
</p>
<p style="clear:both">
Looking back nine years ago, none of the other alternatives promoted in the 2000s (even by big companies like Google and Yahoo) survive to this day in any meaningful way:
</p>
<ul>
<li><a href="http://microformats.org/wiki/Google_Base" shape="rect">Google Base</a> </li>
<li><a href="http://microformats.org/wiki/Google_Data" shape="rect">Google Data</a> </li>
<li>Yahoo’s <a href="http://microformats.org/wiki/CommonTag" shape="rect">CommonTag.org</a> </li>
<li>too many XML approaches to count</li>
</ul>
<p>
From this experience, we conclude that what large companies support (or claim to prefer) is often a trailing indicator (at best).
</p>
<p>
Large companies tend to promote more complex solutions, perhaps because they can afford the staff, time, and other resources to develop and support complex solutions. Such approaches fundamentally lack empathy for independent developers and designers, who don’t have time to keep up with all the complexity.
</p>
<p>
If there’s one value that’s at the heart of microformats’ focus and continued evolution of <a href="http://microformats.org/wiki/simplicity" shape="rect">simplicity</a>, it is that empathy for independent developers and designers, for small consulting shops, for curious hobbyists who are most enabled and empowered by the simplest possible solutions to problems.
</p>
<p>
We now know that no amount of large company marketing and evangelism can make up for a focus on ever simpler solutions which take less time to learn, use, and reliably maintain. As long as we focus on that, we will create better solutions.
</p>
<h2 id="community-changes">Community Changes</h2>
<p>
Speaking of taking less time, we’ve learned some community lessons about that too. Perhaps the most important is that as a community we are far more efficiently productive using <em>just</em> <a href="http://microformats.org/wiki/IRC" shape="rect">IRC</a> and the wiki, than any amount of use of email. In fact, the microformats drafts that were developed wtih the most email (e.g. hAudio) turned out to be the hardest to follow and discuss (too many long emails), and sadly ended up lacking the simplicity that real world publishers wanted (e.g. last.fm).
</p>
<p>
Email tends to bias design and discussions towards those who have more time to read and write long emails, and (apparently) enjoy that for its own sake, than those who want to quickly research &amp; brainstorm, and get to actually <em>creating, building, and deploying</em> things with microformats.
</p>
<p>
Thus we’re making these changes effective today:
</p>
<ul>
<li><a href="http://microformats.org/wiki/IRC" shape="rect">IRC</a> for all microformats discussions, whether research, questions, or brainstorming</li>
<li><a href="http://microformats.org/wiki/email" shape="rect">email</a> only for occasional announcements and to direct people to IRC.</li>
<li><a href="http://microformats.org/wiki" shape="rect">wiki</a> for capturing questions, brainstorming, conclusions, and different points of view</li>
</ul>
<p>
We’re going to update the site to direct all discussion (e.g links) to the IRC channel accordingly.
</p>
<p>
Hope to see you there: <a href="irc://irc.freenode.net/microformats" shape="rect">#microformats on irc.freenode.net</a>
</p>
<h2 id="upgrading-to-uf2">Upgrading to microformats2</h2>
<p>
Over the past few years <a href="http://microformats.org/wiki/microformats2" shape="rect">microformats2</a> has proven itself in practice, with numerous sites both publishing and consuming, several open source parsing libraries, and a growing test suite. All the lessons learned from the evolution from original microformats, from RDFa, and from microdata have been incorporated into microformats2 which is now the simplest to both publish and parse.
</p>
<p>
It’s time to throw the switch and upgrade everything to <a href="http://microformats.org/wiki/microformats2" shape="rect">microformats2</a>. This means three things:
</p>
<h3 id="upgrading-microformats-org">Upgrading microformats.org</h3>
<p>
First, we’re starting by upgrading the links on the microformats.org home page to point to the microformats2 drafts, which are ready for use.
</p>
<p>
We’ll be incrementally upgrading the markup of the microformats.org site itself to use microformats2 markup.
</p>
<h3 id="upgrade-sites">Upgrade sites</h3>
<p>
Second, if you publish any kind of semantic information, start upgrading your web pages to microformats2 across the board.
</p>
<p>
If you’re concerned about what search engines claim to support, there are two approaches to choose from:
</p>
<ol>
<li>Know that search engines are a trailing indicator, and as microformats2 usage grows, they’ll index it as well.</li>
<li>Or: Use <em>one</em> classic microformat (supported by all major <a href="http://microformats.org/wiki/search_engines" shape="rect">search engines</a>) at top of your page, e.g. on the <code>&lt;body&gt;</code>, in addition to your microformats2 markup throughout your pages. Search engines only really care to summarize the primary topic or purpose of a web page in their “rich snippets” or “cards”, and thus that’s sufficient.
</li>
</ol>
<p>
Check out the latest <a href="http://microformats.org/wiki/validators" shape="rect">validators</a> which now include some microformats2 support as well!
</p>
<h3 id="upgrade-tools">Upgrade tools</h3>
<p>
Third, this is a call to upgrade all microformats supporting tools to microformats2. As nearly all of these are open source, this is an open call for contributions, updates, patches, etc. for:
</p>
<ul>
<li><a href="http://microformats.org/wiki/Operator" shape="rect">Operator</a> </li>
<li><a href="http://microformats.org/wiki/H2VX" shape="rect">H2VX</a> </li>
<li><a href="http://microformats.org/wiki/validators" shape="rect">validators</a> </li>
<li><a href="http://microformats.org/code/hcard/creator.html" shape="rect">hCard creator</a> </li>
<li><a href="http://microformats.org/code/hcalendar/creator.html" shape="rect">hCalendar creator</a> </li>
<li><a href="http://microformats.org/code/hreview/creator.html" shape="rect">hReview creator</a> </li>
</ul>
<p>
If it generates microformats, upgrade it to <em>instead</em> generate microformats2.
</p>
<p>
If it consumes microformats, upgrade it to <em>also</em> consume microformats2 (which may be most easily done by making use of one of the microformats2 <a href="http://microformats.org/wiki/parsers" shape="rect">parsers</a> that has backward compatible parsing built in).
</p>
<h2 id="uf-org-10-goal">10th Year Goal</h2>
<p>
As we enter the tenth year of microformats.org let’s make it our collective goal to upgrade our pages, our sites, and our tools to <a href="http://microformats.org/wiki/microformats2" shape="rect">microformats2</a>.
</p>
<p>
Our goal is to complete all the above upgrades by microformats.org’s tenth birthday, if not sooner. Let’s get to work.
</p>
<p>
Thanks to <a class="h-card" href="http://waterpigs.co.uk/" shape="rect">Barnaby Walters</a> and fellow microformats <a href="http://microformats.org/wiki/admins" shape="rect">admins</a> <a class="h-card" href="http://rohit.khare.org/" shape="rect">Rohit Khare</a>, <a class="h-card" href="http://kevinmarks.com/" shape="rect">Kevin Marks</a>, &amp; <a class="h-card" href="http://edward.oconnor.cx/" shape="rect">Ted O’Connor</a> for reviewing drafts of this post. Thanks to Kevin especially for some copy edits!
</p>
<p>This post was <a href="http://tantek.com/2014/171/b1/microformats-org-turns-nine" shape="rect">originally posted on tantek.com</a>.</p>
                </div>
                                <div class="post-tags">
                    <h4>Tags for this entry</h4>
                    <ul><li><a href="http://microformats.org/tag/microformats2" rel="tag" shape="rect">microformats2</a></li></ul>                </div>
                                
				<ul class="post-info">
					<li><a class="updated" href="http://microformats.org/2014/06/20/microformats-org-turns-9-upgrade-to-microformats2" rel="bookmark" title="Permanent Link to microformats.org turns 9 — upgrade to microformats2 and more" shape="rect">
                            <span class="value-title" title="2014-06-20T12:43:36"> </span>
                            June 20th, 2014                        </a>
                    </li>
					<li>
					    <address class="author vcard">                
					    <a class="url fn" href="http://tantek.com/" shape="rect">
					        <img alt="" src="http://0.gravatar.com/avatar/02cd45622e90350cc061aaaa02229195?s=16&amp;d=http%3A%2F%2F0­.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb­6523536%3Fs%3D16&amp;r=PG" class="avatar avatar-16 photo" height="16" width="16"/>					        Tantek					    </a>
					    </address>
					</li>
					<li><span>Comments Off</span></li>
                    <li>
                                            </li>
				</ul>
			</div>
					<div class="entry hentry">
				<h3 class="entry-title" id="post-417"><a href="http://microformats.org/2014/03/05/getting-started-with-microformats2" rel="bookmark" title="Permanent Link to Getting Started With microformats2" shape="rect">Getting Started With microformats2</a></h3>
                <div class="entry-content">
				    <p>Classic microformats have been serving the web community’s need to extend HTML’s expressive power <a href="http://microformats.org/wiki/history#2004" shape="rect">since 2004</a>. Through an evolutionary, open, rigorous community process and human-first design principles, structured use of the <code>class</code> and <code>rel</code> attributes have paved the cowpaths of publishing data about people, places, events, reviews, products and more.</p>
<p>Microformats2 is the next big effort by the community to improve how microformats are authored, parsed and defined. Version two has multiple working open source implementations which independents are using in production and is easier to publish and consume than ever.</p>
<p>In this series of guides I’ll show you how to be the next site publishing and consuming microformats.</p>
<p class="info">You can see how a microformats parser sees your markup by pasting any of the code samples below into <a href="http://waterpigs.co.uk/php-mf2" shape="rect">this php-mf2 sandbox</a>. Go ahead and experiment with adding more properties and see what happens!</p>
<h2>Incremental Steps</h2>
<p>In order to demonstrate some of the differences between microformats 2 and Classic Microformats/other competing technologies, I’ll use the process of content-out markup — going from plain text to HTML and finally adding a sprinkling of microformats. Let’s start with my favourite example: mentioning a person.</p>
<p>As plain text:</p>
<pre xml:space="preserve"><code>Barnaby Walters </code></pre>
<p>With HTML:</p>
<pre xml:space="preserve"><code>&lt;a href="http://waterpigs.co.uk"&gt;Barnaby Walters&lt;/a&gt; </code></pre>
<p>With classic microformats:</p>
<pre xml:space="preserve"><code>&lt;span class="vcard"&gt;&lt;a class="fn n url" href="http://waterpigs.co.uk"&gt;Barnaby Walters&lt;/a&gt;&lt;/span&gt;</code></pre>
<p>That’s 37 extra characters and a whole extra nested element just to say “This link is to a person”, not to mention the strangely named root classname (vcard? I thought this was an hcard?) and multiple cryptic <code>fn n</code> classnames. Competing technologies are typically even longer and messier.</p>
<p>With microformats 2 this all becomes much simpler:</p>
<pre xml:space="preserve"><code>&lt;a class="h-card" href="http://waterpigs.co.uk"&gt;Barnaby Walters&lt;/a&gt; </code></pre>
<p>Weighing in at only 15 characters, this is quicker to type, easier on the eyes and easier to remember.</p>
<p>There are two fundamental changes in microformats 2 which make this helium-esque lightness possible: Implied Properties and prefixed classnames.</p>
<h2>Implied Properties</h2>
<p>When you give <code>class=h-card</code> to an element, you’re saying “This element represents a person”. In many cases the element will be simple; just a name, perhaps with a link or photo. Why should you add extra elements and classnames just to tell a dumb computer which bit is the name, URL or photo URL when that information is already expressed by the markup?</p>
<p>Implied properties save you from this tedium. When you specify an element as an h-card without explicitly defining which parts are the name, url or photo url, the parser will figure out what you meant. And it’s not just for h-cards either — thanks to the new generic parsing in microformats 2, this shorthand works for any microformat.</p>
<h2>Prefixed Classnames</h2>
<p>Classic microformats used plain classnames which looked like any other (e.g. <code>vcard</code>, <code>n</code> or <code>note</code>). There were a few problems with this — classnames would clash, cause false positives or be thrown away by developers who weren’t microformats-aware (“these classnames aren’t doing anything!”).</p>
<p>This also meant parsers were tricky to write, as each one had to maintain a long list of classnames used by each microformats, resulting in many parsers quickly going out of date.</p>
<p>Prefixing classnames solves both of these problems: semantic microformats2 classnames are set apart from styling hooks, and parsers can figure out which classnames to look for, cutting down on maintenance. There are 5 prefixes:</p>
<ul>
<li><code>h-*</code> root classnames specify that an element is a microformat, e.g. <code>&lt;span class="h-card"&gt;</code></li>
<li><code>p-*</code> specifies an element as a plain-text property, e.g. <code>&lt;span class="p-name"&gt;My Name&lt;/span&gt;</code></li>
<li><code>u-*</code> parses an element as a URL, e.g. <code>&lt;a class="u-url" href="/"&gt;&lt;/a&gt;</code></li>
<li><code>dt-*</code> parses an element as a date/time, e.g. <code>&lt;time class="dt-published" datetime="2013-05-02 12:00:00" /&gt;</code></li>
<li><code>e-*</code> parses an element’s whole inner HTML, e.g. <code>&lt;div class="e-content"&gt;</code></li>
</ul>
<p>I’ll demonstrate the use of all of these prefixes with some real-world examples.</p>
<p>Firstly, another h-card, more fleshed out than the earlier example. This might be the sort that you put on your homepage:</p>
<pre xml:space="preserve"><code>&lt;div class="h-card"&gt;
  &lt;p&gt;&lt;img class="u-photo" href="/me.png" alt="" /&gt;&lt;/p&gt;
  &lt;p class="p-name"&gt;
    &lt;a href="u-url" href="http://waterpigs.co.uk"&gt;Barnaby Walters&lt;/a&gt;
  &lt;/p&gt;
&lt;/div&gt;</code></pre>
<p>p-name, u-url and u-photo are fairly standard properties you’ll see over and over again. Another improvement in microformats 2 is increasing consistency between different microformat specifications — again, making them easier to authors to remember and consumers to understand. A nice side effect is that a single element can be more than one type of microformat at once — for example a h-entry and h-review.</p>
<p>To demonstrate <code>dt-*</code> and <code>e-*</code>, here’s a note (like a tweet or short blog post), marked up using <code>h-entry</code>:</p>
<pre xml:space="preserve"><code>&lt;article class="h-entry"&gt;
  &lt;div class="e-content p-summary p-name"&gt;
    &lt;p&gt;Just writing a guide to using &lt;a href="http://microformats.org/wiki/microformats-2"&gt;
microformats-2&lt;/a&gt;&lt;/p&gt;
  &lt;/div&gt;
  &lt;time class="dt-published" datetime="2013-05-01 12:00:00"&gt;20 minutes ago&lt;/time&gt; 
&lt;/article&gt; </code></pre>
<p>Here, I want the HTML inside the content to be passed to the parser, so I mark it up as <code>e-*</code>. Notice I’m also specifying that content as the summary and name — one element can be parsed as multiple properties.</p>
<p>I’m using the <code>time</code> element to mark up the time this note was published. Because I’ve prefixed the classname with <code>dt-</code> and it’s on a <code>time</code> element, parsers know to look in the <code>datetime</code> attribute if it exists.</p>
<h2>Combining Microformats</h2>
<p>The third area in which microformats2 improves on the previous version is in combining microformats and making each microformat specification more reusable — for example, both a person or an event might have an address, so it makes sense to reuse the same markup for both.</p>
<p>There are many reasons to combine microformats — say you want to specify the author of a blog post or review. You would do so by making the p-author of the post an h-card:</p>
<pre xml:space="preserve"><code>&lt;article class="h-entry"&gt;
  &lt;p class="p-author h-card"&gt;Barnaby Walters&lt;/p&gt;
  &lt;p class="p-content"&gt;Blah blah blah&lt;/p&gt;
  … </code></pre>
<p>Or a comment on an article, via <code>h-cite</code>s as <code>p-comment</code>s:</p>
<pre xml:space="preserve"><code>
  …
  &lt;article class="p-comment h-cite"&gt;
    &lt;p class="p-author h-card"&gt;Jón Jónsson&lt;/p&gt;
    &lt;p class="p-summary"&gt;Woah that’s insightful.&lt;/p&gt;
    &lt;p&gt;&lt;a class="u-url" href="http://jonsson.com/replies/1"&gt;
      &lt;time class="dt-published" datetime="2014-03-01T14:00:25+00:00&gt;
        2014-03-01 14:00
      &lt;/time&gt;
    &lt;/a&gt;&lt;/p&gt;
  &lt;/article&gt;
&lt;/article&gt; </code></pre>
<p>The reason comments are <code>h-cite</code>s instead of <code>h-entry</code>s is that <code>h-entry</code> implies syndication — it’s something you’ve posted, or have re-posted, whereas a comment is a reference to a post on another site.</p>
<p>Or the address of a person or event, using <code>h-adr</code>:</p>
<pre xml:space="preserve"><code>&lt;div class="h-event"&gt;
  &lt;h1 class="p-name"&gt;Microformats Meetup&lt;/h1&gt;
  &lt;p&gt;Join us at &lt;b class="p-adr h-adr"&gt;
    &lt;span class="p-street-address"&gt;Some Bar&lt;/span&gt;,
    &lt;span class="p-locality"&gt;Someplace&lt;/span&gt;&lt;/b&gt;
  &lt;/p&gt;
&lt;/div&gt; </code></pre>
<h2>Further Reading</h2>
<p>Hopefully this overview tickled your interest and gave you a firm foundation from which to base further investigation. To learn more about the topics covered in this post, see the following URLs:</p>
<ul>
<li>The <a href="http://microformats.org/wiki/microformats-2" shape="rect">Microformats 2 Wiki</a>, specifically:</li>
<li><a href="http://microformats.org/wiki/microformats-2-parsing" shape="rect">Microformats 2 Parsing</a></li>
<li><a href="http://microformats.org/wiki/microformats2-prefixes" shape="rect">Microformats 2 Prefixes</a></li>
<li>The <a href="http://waterpigs.co.uk/presentations/microformats-2/#slide-2" shape="rect">Microformats 2: What’s New</a> presentation I gave at Exeter Web</li>
</ul>
<p>This article reposted from <a class="u-repost-of" href="http://waterpigs.co.uk/articles/getting-started-with-microformats2/" shape="rect">Getting Started With microformats2 on waterpigs.co.uk</a>, and is the first of a series covering microformats2. Be sure to follow <a href="http://waterpigs.co.uk/articles" shape="rect">my articles feed</a> to be notified about the others. I also post <a href="http://waterpigs.co.uk/notes?tagged=microformats" shape="rect">notes</a> about microformats quite often. They’re syndicated to <a href="https://twitter.com/barnabywalters" shape="rect">my twitter account</a> too.</p>
                </div>
                                
				<ul class="post-info">
					<li><a class="updated" href="http://microformats.org/2014/03/05/getting-started-with-microformats2" rel="bookmark" title="Permanent Link to Getting Started With microformats2" shape="rect">
                            <span class="value-title" title="2014-03-05T16:48:53"> </span>
                            March 5th, 2014                        </a>
                    </li>
					<li>
					    <address class="author vcard">                
					    <a class="url fn" href="http://waterpigs.co.uk/" shape="rect">
					        <img alt="" src="http://0.gravatar.com/avatar/4a57cddee3c50aefa893005dcdd33b64?s=16&amp;d=http%3A%2F%2F0­.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb­6523536%3Fs%3D16&amp;r=PG" class="avatar avatar-16 photo" height="16" width="16"/>					        waterpigs.co.uk/					    </a>
					    </address>
					</li>
					<li><a href="http://microformats.org/2014/03/05/getting-started-with-microformats2#comments" title="Comment on Getting Started With microformats2" shape="rect">1 Comment</a></li>
                    <li>
                                            </li>
				</ul>
			</div>
				
		
	<h3 id="archive-link">Browse all entries by month in the <a href="/blog/" class="more" shape="rect">blog archive</a></h3>

	</div>

<hr class="hide"/>
   
<div id="sidebar">    
<div id="text-137140391" class="box widget widget_text"><div class="box-inner"><h3>What are microformats?</h3>			<div class="textwidget"><p><img src="/wordpress/wp-content/themes/microformats/img/mf-lg-ora.gif" alt="" id="about-logo"/>Designed for humans first and machines second, microformats are a set of simple, open data formats built upon existing and widely adopted standards. <a href="/wiki/about" class="more" shape="rect">Learn more about microformats</a></p></div>
		</div></div><div id="text-137140392" class="box widget widget_text"><div class="box-inner"><h3>Microformat specifications</h3>			<div class="textwidget"><dl id="mf-list">
               <dt>People and Organizations </dt>
               <dd><a href="/wiki/h-card" shape="rect">h-card</a>, <a href="http://microformats.org/wiki/xfn" shape="rect"><abbr title="XHTML Friends Network">XFN</abbr></a></dd>
               <dt>Calendars and Events</dt> 
               <dd><a href="/wiki/h-calendar" shape="rect">h-calendar</a></dd>
               <dt>Opinions, Ratings and Reviews</dt>
               <dd><a href="/wiki/h-review" shape="rect">h-review</a></dd>
               <dt>Licenses:</dt>
               <dd><a href="/wiki/rel-license" shape="rect">rel-license</a></dd>
               
               <dt>Tags, Keywords, Categories</dt>
               <dd><a href="/wiki/rel-tag" shape="rect">rel-tag</a></dd>
               <dt>Lists and Outlines</dt>
               <dd><a href="/wiki/xoxo" shape="rect">XOXO</a></dd>
               <dt>More…</dt>
               <dd>See <a href="/wiki/" shape="rect">the list of all microformats</a></dd>
            </dl></div>
		</div></div><div id="text-137140393" class="box widget widget_text"><div class="box-inner"><h3>Upcoming Events</h3>			<div class="textwidget"><ul>
    <li><a href="http://microformats.org/wiki/events" shape="rect">See microformats events on the wiki</a></li>
    <li><a href="http://indiewebcamp.com/events" shape="rect">See also <strong>IndieWebCamp Events!</strong></a></li>
</ul></div>
		</div></div><div id="categories-137139891" class="box widget widget_categories"><div class="box-inner"><h3>Post Categories</h3>		<ul>
	<li class="cat-item cat-item-22"><a href="http://microformats.org/category/events" title="Events about or including microformats; parties, conferences and hack days." shape="rect">Events</a>
</li>
	<li class="cat-item cat-item-1"><a href="http://microformats.org/category/news" title="View all posts filed under News" shape="rect">News</a>
</li>
	<li class="cat-item cat-item-39"><a href="http://microformats.org/category/this-week" title="This Week in Microformats is a semi-regular update of what's happened on the microformats.org wiki and mailing lists." shape="rect">This Week in Microformats</a>
</li>
		</ul>
</div></div>      
    <div class="box">
        <div class="box-inner">
            <form method="get" id="search" action="/index.php" enctype="application/x-www-form-urlencoded">
	<div>
		<input type="text" value="search blog" name="s" id="search-text" onfocus="if(this.value=='' || this.value=='search blog'){this.value='';}" onblur="if(this.value==''){this.value='search blog';}"/>
		<input type="image" id="search-submit" alt="Search" src="http://microformats.org/wordpress/wp-content/themes/microformats/img/btn-search.gif"/>
	</div>
</form>        </div>
    </div>

    <div class="box">
        <div class="box-inner">
                    </div>
    </div>

</div> <!-- end #sidebar -->

<hr class="hide"/>

<div id="footer">
	<p>Powered by <a href="http://wordpress.org" shape="rect">WordPress</a> | <a href="http://mediatemple.net/" shape="rect">(mt) media temple</a> | <a href="http://no-www.org/" shape="rect">No WWW</a>.	
		<!-- 24 queries. 0.297 seconds. -->
	</p>
</div>

</div> <!-- end #wrap -->
<link rel="stylesheet" id="openid-css" href="http://microformats.org/wordpress/wp-content/plugins/openid/f/openid.css?ver=519" type="text/css" media="all"/>

<!-- c(~) -->
<script src="http://www.google-analytics.com/urchin.js" type="text/javascript" xml:space="preserve">
</script>
<script type="text/javascript" xml:space="preserve">
_uacct = "UA-1889385-1";
urchinTracker();
</script>
</body>
</html>

Credits

Written by . Icons are from Tango Icon Library. Test cases include hCard Acid test by Dmitry Baranovskiy, examples from microformats.org and hCard test suite.

Source code is available under the BSD license.


¹ It's not a validator in the XML/SGML sense.