http://microformats.org/wiki/api.php?action=feedcontributions&user=61.95.31.117&feedformat=atomMicroformats Wiki - User contributions [en]2024-03-28T11:37:55ZUser contributionsMediaWiki 1.38.4http://microformats.org/wiki/index.php?title=hcalendar&diff=1811hcalendar2005-09-30T08:07:19Z<p>61.95.31.117: /* Introduction */</p>
<hr />
<div>= hCalendar =<br />
<br />
hCalendar is a simple open, distributed calendaring and events format, based on the iCalendar standard ([http://www.ietf.org/rfc/rfc2445.txt RFC2445]), suitable for embedding in (X)HTML, Atom, RSS, and arbitrary XML. hCalendar is one of several open [[microformats|microformat]] standards.<br />
<br />
__TOC__<br />
<br />
== Draft Specification ==<br />
<br />
=== Editor ===<br />
[http://tantek.com/ Tantek Çelik] ([http://technorati.com Technorati, Inc])<br />
<br />
=== Authors ===<br />
* [http://tantek.com/ Tantek Çelik], [http://technorati.com Technorati, Inc]<br />
* [http://suda.co.uk/ Brian Suda]<br />
<br />
=== Copyright ===<br />
{{MicroFormatCopyrightStatement2004}}<br />
<br />
=== Patents ===<br />
{{MicroFormatPatentStatement}}<br />
<br />
=== Inspiration and Acknowledgments ===<br />
Thanks to:<br />
* Adam Bosworth for leading the [http://wiki.oreillynet.com/foocamp04/index.cgi?HTMLForCalendars FOO Camp 2004 HTML For Calendars presentation] which brought together a critical mass of interested parties.<br />
<br />
<br />
<br />
== Introduction ==<br />
The iCalendar standard ([http://www.ietf.org/rfc/rfc2445.txt RFC2445]), has been broadly interoperably implemented (e.g. Apple's "iCal" application built into MacOSX).<br />
<br />
In addition, bloggers often discuss events on their blogs -- upcoming events, writeups of past events, etc. With just a tad bit of structure, bloggers can discuss events in their blog(s) in such a way that spiders and other aggregators can retrieve such events, automatically convert them to iCalendar, and use them in any iCalendar application or service.<br />
<br />
This specification introduces the '''hCalendar''' format, which is a 1:1 representation of the aforementioned iCalendar standard, in semantic XHTML. Bloggers can both embed hCalendar events directly in their web pages, and style them with CSS to make them appear as desired. In addition, hCalendar enables applications to retrieve information about such events directly from web pages without having to reference a separate file.<br />
<br />
== Semantic XHTML Design Principles ==<br />
<br />
{{semantic-xhtml-design-principles}}<br />
<br />
== Format ==<br />
<br />
=== In General ===<br />
<br />
The iCalendar standard ([http://www.ietf.org/rfc/rfc2445.txt RFC2445]) forms the basis of hCalendar.<br />
<br />
Note: the editor and authors of this specification are tracking the [http://lists.osafoundation.org/pipermail/ietf-calsify/ "iCal-Basic" effort] and intend to base the core hCalendar profile on iCal-Basic. See references for a link to the current draft.<br />
<br />
The basic format of hCalendar is to use iCalendar object/property names in lower-case for class names, and to map the nesting of iCalendar objects directly into nested XHTML.<br />
<br />
=== More Semantic Equivalents ===<br />
<br />
However, for some properties there is a more semantic equivalent, and therefore they get special treatment, e.g.:<br />
* <code>URL</code> in iCalendar becomes <code><a class="url" href="...">...</a></code> inside the element with <code>class="vevent"</code> in hCalendar.<br />
* <code>ATTENDEE</code> in iCalendar may in hCalendar be represented by an [[hcard]].<br />
<br />
=== Singular vs. Plural Properties ===<br />
<br />
For properties which are singular (e.g. "N" and "FN" from vCard), the first descendant element with that class should take effect, any others being ignored.<br />
<br />
For properties which can be plural (e.g. "TEL" from vCard), each class instance should create a instance of that property. Plural properties with subtypes (e.g. TEL with WORK, HOME, CELL from vCard) can be optimized to share a common element for the property itself, with each instance of subtype being an appropriately classed descendant of the property element. <br />
<br />
=== Human vs. Machine readable ===<br />
If an <code>&lt;abbr&gt;</code> element is used for a property, then the '<code>title</code>' attribute of the <code>&lt;abbr&gt;</code> element is the value of the property, instead of the contents of the element, which instead provide a human presentable version of the value. This specification recommends that such <code>&lt;abbr&gt;</code> elements be used for the following iCalendar properties:<br />
* DTSTART, DTEND, DURATION, RDATE, RRULE<br />
<br />
== Example ==<br />
<br />
Here is a sample event in an iCalendar:<br />
<pre><nowiki><br />
BEGIN:VCALENDAR<br />
PRODID:-//XYZproduct//EN<br />
VERSION:2.0<br />
BEGIN:VEVENT<br />
URL:http://www.web2con.com/<br />
DTSTART:20051005<br />
DTEND:20051007<br />
SUMMARY:Web 2.0 Conference<br />
LOCATION:Argent Hotel\, San Francisco\, CA<br />
END:VEVENT<br />
END:VCALENDAR<br />
</nowiki></pre><br />
and an equivalent event in hCalendar format with various elements optimized appropriately. See [[hcalendar-example1-steps]] for the derivation.<br />
<br />
<pre><nowiki><br />
<span class="vevent"><br />
<a class="url" href="http://www.web2con.com/"><br />
<span class="summary">Web 2.0 Conference</span>: <br />
<abbr class="dtstart" title="2005-10-05">October 5</abbr>-<br />
<abbr class="dtend" title="2005-10-07">7</abbr>,<br />
at the <span class="location">Argent Hotel, San Francisco, CA</span><br />
</a><br />
</span><br />
</nowiki></pre><br />
which could be displayed as:<br />
<br />
[http://www.web2con.com/ Web 2.0 Conference: October 5-7, at the Argent Hotel, San Francisco, CA]<br />
<br />
Note 1: The product information is not necessary since hCalendar is an interchange format. When transforming hCalendar back into iCalendar, the transforming engine should add its own product ID.<br />
<br />
Note 2: A surrounding &lt;span class="vcalendar"&gt; element is optional, and is left out as such. It is optional since the context of a vcalendar is implied when a vevent is encountered. The implied context/scope is that of the document. Authors may explicitly use elements with class="vcalendar" to wrap sets of vevents that all belong to the same calendar, e.g. when publishing multiple calendars on the same page.<br />
<br />
Note 3: The version information is unnecessary in hCalendar markup directly since the version will be defined by the profile of hCalendar that is used/referred to in the 'profile' attribute of the <head> element.<br />
<br />
Note 4: ISO8601 dates (required by iCalendar) are not very human friendly. In addition, the year is often understood implicitly by humans from the context. Thus <code>&lt;abbr&gt;</code> elements are used to simultaneously provide a human friendly date and/or time in the visible contents of the element, while placing the respective machine parsable comprehensive ISO8601 datetime in the 'title' attribute.<br />
The notation YYYY-MM-DD should be used for better readability.<br />
<br />
== Examples in the wild ==<br />
This section is '''informative'''.<br />
<br />
The following sites have implemented hCalendar, and thus are a great place to start for anyone looking for examples "in the wild" to try parsing, indexing, organizing etc. If events on your pages are marked up with hCalendar, feel free to add it to the top of this list. Once the list grows too big, we'll make a separate wiki page.<br />
<br />
* [http://www.asdvbonaparte.nl/ ASDV Bonaparte] is a Dutch debating society. Their events calendar has been marked up with the hCalendar conventions.<br />
* [http://www.thisiscmon.com/ C'MON] is a rock band from Canada, and their [http://www.thisiscmon.com/shows/ tour dates] have been marked up by [http://www.d2digitalmedia.com/ Ray Dickman] with hCalendar.<br />
* [http://chocnvodka.blogware.com/blog Suw Charman] has marked up [http://suw.org.uk/archives/category/events/ her events] with hCalendar.<br />
* [http://www.blogbusinesssummit.com/ Blog Business Summit] has published their [http://www.blogbusinesssummit.com/details.htm event details] marked up with hCalendar.<br />
* [http://evdb.com EVDB], the Events and Venues database, publishes all events with hCalendar.<br />
* [http://upcoming.org Upcoming.org] publishes all events and lists of events with hCalendar.<br />
* The [http://laughingsquid.com/squidlist/calendar/ Laughing Squid Calendar] events, [http://laughingsquid.com/squidlist/calendar/9949/2005/5/9 e.g. this party], now supports hCalendar.<br />
* [http://paulschreiber.com/blog/ Paul Schreiber]'s [http://concerts.shrub.ca/ Sunnyvale House Concerts] site publishes hCalendar event information for upcoming concerts. In addition the [http://concerts.shrub.ca/shows Past Shows] page contains hCalendar events for all past concerts.<br />
* [http://www.complexspiral.com/ Complex Spiral Consulting], both in the "Events" box on left side, and the separate [http://www.complexspiral.com/events/ Events page]. <br />
* [http://tantek.com/log Tantek's Thoughts], specifically the "Events" roll in the right-most column.<br />
* [http://suda.co.uk/projects/holidays/ Lesser Known Holidays], a list of holidays on [http://suda.co.uk suda.co.uk] that can be imported via iCal and hCal so you can compare actual transformation versus intended.<br />
* [http://norman.walsh.name/2005/itinerary/ Norm Walsh's travel schedule] use hCalendar as well as GRDDL.<br />
* [http://www.policyawareweb.org/2005/ftf2/paw-mtg Policy Aware Web (PAW) Project Meeting] uses hCalendar to record date-related decisions, and uses a vtodo microformat to record action items.<br />
* The [http://www.kiez-ev.de/ Kiez] is a small cinema and has published its [http://www.kiez-ev.de/programm.htm program] marked up with hCalendar.<br />
<br />
== Implementations ==<br />
This section is '''informative'''.<br />
<br />
The following implementations have been developed which either generate or parse hCalendars. If you have an hCalendar implementation, feel free to add it to the top of this list. Once the list grows too big, we'll make a separate wiki page.<br />
<br />
Generation:<br />
* [http://hybernaut.com/upcoming-hcal Drupal Upcoming.org syndication module emits hCalendar]<br />
* [http://theryanking.com/ Ryan King] has an [http://theryanking.com/microformats/hcalendar-creator.html hCalendar creator].<br />
<br />
Conversion:<br />
* [http://george.hotelling.net/90percent/ George] has built a [http://george.hotelling.net/90percent/geekery/greasemonkey_and_microformats.php Greasemonkey user script that detects hCalendar events and allows users to easily add them to their calendar application(s)].<br />
* [http://blogmatrix.blogmatrix.com/ David Janes] has produced a [[Greasemonkey]] [http://www.blogmatrix.com/include/microformat-find.user.js script] that finds many microformat elements, including hCalendar events, and [http://blog.davidjanes.com/mtarchives/2005_08.html#003379 provides a popup menu of actions]. The hCalendar to vCalendar conversion is done internally within the script.<br />
* [http://suda.co.uk/projects/X2V/ X2V] parses hCalendar and produces a .ics (iCalendar) stream. Note: needs to be updated to track changes in the specification as they occur.<br />
* [http://dev.w3.org/cvsweb/2001/palmagent/ palmagent] by [[User:DanC]] includes toICal.xsl and test materials; it works much like xhtml2vcal.xsl in X2V. See also: [http://www.w3.org/2002/12/cal/ RDF Calendar workspace] with icalendar test materials.<br />
* [http://web.mit.edu/glasser/www/JSCalendar/ JSCalendar] parses hCalendar and produces a displayable HTML table/CSS-based calendar.<br />
<br />
== References ==<br />
=== Normative References ===<br />
* [http://www.w3.org/TR/2002/REC-xhtml1-20020801/ XHTML 1.0 SE]<br />
* [[hcard|hCard]]<br />
* [http://www.ietf.org/rfc/rfc2445.txt iCalendar RFC2445]<br />
<br />
=== Informative References ===<br />
* [http://w3.org/TR/REC-CSS1 CSS1]<br />
* [http://tantek.com/log/2004/09.html#hcalendar hCalendar term introduced and defined on the Web, 20040930]<br />
* [http://wiki.oreillynet.com/foocamp04/index.cgi?HTMLForCalendars FOO Camp 2004 HTML For Calendars presentation, 20040911]<br />
* [http://wiki.oreillynet.com/foocamp04/index.cgi?SimpleSemanticFormats FOO Camp 2004 Simple Semantic Formats presentation, 20040910]<br />
* [http://www.ietf.org/internet-drafts/draft-royer-ical-basic-02.txt iCal-Basic draft 02]<br />
* Contributed from http://developers.technorati.com/wiki/hCalendar<br />
* [http://www.w3.org/TR/xhtml11 XHTML 1.1]<br />
<br />
==== Related Reading ====<br />
* [http://lists.osafoundation.org/pipermail/ietf-calsify/ IETF-calsify archives]<br />
* [http://www.livejournal.com/users/jwz/444651.html jwz - Hula] (required reading)<br />
* [http://www.jwz.org/doc/groupware.html Groupware Bad by Jamie Zawinski] crystalizes the reason for hCalendar ('''emphasis''' added):<br />
<blockquote>"Right now people can do that by publishing .ics files, but it's not trivial to do so, and it's work on the part of other people to look at them. '''If it's not HTML hanging off our friend's home page that can be viewed in any browser on a public terminal in a library, the bar to entry is too high and it's useless.'''"</blockquote><br />
<br />
* [http://muddybranch.thejkgroup.com/ Jason Klemow's blog]<br />
* [http://www.softwarestudio.org/iCal/2445Issues.html RFC2445 Issues List]<br />
* [http://ietf.webdav.org/calsify/ CALSIFY WG Links And Resources]<br />
* [http://theryanking.com/microformats/hcalendar-creator.html hCalendar Creator]<br />
=== Similar Work ===<br />
* [[XOXO]]<br />
<br />
== Discussions ==<br />
<br />
This specification is a work in progress. As additional aspects are discussed, understood, and written, they will be added. There is a separate document where we are keeping our brainstorms and other explorations relating to hCalendar:<br />
<br />
* [[hcalendar-brainstorming]]<br />
<br />
* See also [http://www.technorati.com/cosmos/referer.html blogs discussing this page].<br />
<br />
=== Q&A ===<br />
* If you have any questions about hCalendar, check the [[hcalendar-faq]], and if you don't find answers, add your questions!<br />
<br />
=== Issues ===<br />
* Please add any issues with the specification to the separate [[hcalendar-issues]] document.</div>61.95.31.117http://microformats.org/wiki/index.php?title=hcalendar&diff=1807hcalendar2005-09-30T08:06:46Z<p>61.95.31.117: /* Introduction */</p>
<hr />
<div>= hCalendar =<br />
<br />
hCalendar is a simple open, distributed calendaring and events format, based on the iCalendar standard ([http://www.ietf.org/rfc/rfc2445.txt RFC2445]), suitable for embedding in (X)HTML, Atom, RSS, and arbitrary XML. hCalendar is one of several open [[microformats|microformat]] standards.<br />
<br />
__TOC__<br />
<br />
== Draft Specification ==<br />
<br />
=== Editor ===<br />
[http://tantek.com/ Tantek Çelik] ([http://technorati.com Technorati, Inc])<br />
<br />
=== Authors ===<br />
* [http://tantek.com/ Tantek Çelik], [http://technorati.com Technorati, Inc]<br />
* [http://suda.co.uk/ Brian Suda]<br />
<br />
=== Copyright ===<br />
{{MicroFormatCopyrightStatement2004}}<br />
<br />
=== Patents ===<br />
{{MicroFormatPatentStatement}}<br />
<br />
=== Inspiration and Acknowledgments ===<br />
Thanks to:<br />
* Adam Bosworth for leading the [http://wiki.oreillynet.com/foocamp04/index.cgi?HTMLForCalendars FOO Camp 2004 HTML For Calendars presentation] which brought together a critical mass of interested parties.<br />
<br />
<br />
<br />
== Introduction ==<br />
The iCalendar standard ([http://www.ietf.org/rfc/rfc2445.txt RFC2445]), has been broadly interoperably implemented (e.g. Apple's "iCal" application built into MacOSX).<br />
<br />
In addition, bloggers often discuss events on their blogs -- upcoming events, writeups of past events, etc. With just a tad bit of structure, bloggers can discuss events in their blog(s) in such a way that spiders and other aggregators can retrieve such events, automatically convert them to iCalendar, and use them in any iCalendar application or service.<br />
<br />
This specification introduces the '''hCalendar''' format, which is a 1:1 representation of the aforementioned iCalendar standard, in semantic XHTML. Bloggers can both embed hCalendar events directly in their web pages, and style them with CSS to make them appear as desired. In addition, hCalendar enables applications to retrieve information about such events directly from web pages without having to reference a separate files.<br />
<br />
== Semantic XHTML Design Principles ==<br />
<br />
{{semantic-xhtml-design-principles}}<br />
<br />
== Format ==<br />
<br />
=== In General ===<br />
<br />
The iCalendar standard ([http://www.ietf.org/rfc/rfc2445.txt RFC2445]) forms the basis of hCalendar.<br />
<br />
Note: the editor and authors of this specification are tracking the [http://lists.osafoundation.org/pipermail/ietf-calsify/ "iCal-Basic" effort] and intend to base the core hCalendar profile on iCal-Basic. See references for a link to the current draft.<br />
<br />
The basic format of hCalendar is to use iCalendar object/property names in lower-case for class names, and to map the nesting of iCalendar objects directly into nested XHTML.<br />
<br />
=== More Semantic Equivalents ===<br />
<br />
However, for some properties there is a more semantic equivalent, and therefore they get special treatment, e.g.:<br />
* <code>URL</code> in iCalendar becomes <code><a class="url" href="...">...</a></code> inside the element with <code>class="vevent"</code> in hCalendar.<br />
* <code>ATTENDEE</code> in iCalendar may in hCalendar be represented by an [[hcard]].<br />
<br />
=== Singular vs. Plural Properties ===<br />
<br />
For properties which are singular (e.g. "N" and "FN" from vCard), the first descendant element with that class should take effect, any others being ignored.<br />
<br />
For properties which can be plural (e.g. "TEL" from vCard), each class instance should create a instance of that property. Plural properties with subtypes (e.g. TEL with WORK, HOME, CELL from vCard) can be optimized to share a common element for the property itself, with each instance of subtype being an appropriately classed descendant of the property element. <br />
<br />
=== Human vs. Machine readable ===<br />
If an <code>&lt;abbr&gt;</code> element is used for a property, then the '<code>title</code>' attribute of the <code>&lt;abbr&gt;</code> element is the value of the property, instead of the contents of the element, which instead provide a human presentable version of the value. This specification recommends that such <code>&lt;abbr&gt;</code> elements be used for the following iCalendar properties:<br />
* DTSTART, DTEND, DURATION, RDATE, RRULE<br />
<br />
== Example ==<br />
<br />
Here is a sample event in an iCalendar:<br />
<pre><nowiki><br />
BEGIN:VCALENDAR<br />
PRODID:-//XYZproduct//EN<br />
VERSION:2.0<br />
BEGIN:VEVENT<br />
URL:http://www.web2con.com/<br />
DTSTART:20051005<br />
DTEND:20051007<br />
SUMMARY:Web 2.0 Conference<br />
LOCATION:Argent Hotel\, San Francisco\, CA<br />
END:VEVENT<br />
END:VCALENDAR<br />
</nowiki></pre><br />
and an equivalent event in hCalendar format with various elements optimized appropriately. See [[hcalendar-example1-steps]] for the derivation.<br />
<br />
<pre><nowiki><br />
<span class="vevent"><br />
<a class="url" href="http://www.web2con.com/"><br />
<span class="summary">Web 2.0 Conference</span>: <br />
<abbr class="dtstart" title="2005-10-05">October 5</abbr>-<br />
<abbr class="dtend" title="2005-10-07">7</abbr>,<br />
at the <span class="location">Argent Hotel, San Francisco, CA</span><br />
</a><br />
</span><br />
</nowiki></pre><br />
which could be displayed as:<br />
<br />
[http://www.web2con.com/ Web 2.0 Conference: October 5-7, at the Argent Hotel, San Francisco, CA]<br />
<br />
Note 1: The product information is not necessary since hCalendar is an interchange format. When transforming hCalendar back into iCalendar, the transforming engine should add its own product ID.<br />
<br />
Note 2: A surrounding &lt;span class="vcalendar"&gt; element is optional, and is left out as such. It is optional since the context of a vcalendar is implied when a vevent is encountered. The implied context/scope is that of the document. Authors may explicitly use elements with class="vcalendar" to wrap sets of vevents that all belong to the same calendar, e.g. when publishing multiple calendars on the same page.<br />
<br />
Note 3: The version information is unnecessary in hCalendar markup directly since the version will be defined by the profile of hCalendar that is used/referred to in the 'profile' attribute of the <head> element.<br />
<br />
Note 4: ISO8601 dates (required by iCalendar) are not very human friendly. In addition, the year is often understood implicitly by humans from the context. Thus <code>&lt;abbr&gt;</code> elements are used to simultaneously provide a human friendly date and/or time in the visible contents of the element, while placing the respective machine parsable comprehensive ISO8601 datetime in the 'title' attribute.<br />
The notation YYYY-MM-DD should be used for better readability.<br />
<br />
== Examples in the wild ==<br />
This section is '''informative'''.<br />
<br />
The following sites have implemented hCalendar, and thus are a great place to start for anyone looking for examples "in the wild" to try parsing, indexing, organizing etc. If events on your pages are marked up with hCalendar, feel free to add it to the top of this list. Once the list grows too big, we'll make a separate wiki page.<br />
<br />
* [http://www.asdvbonaparte.nl/ ASDV Bonaparte] is a Dutch debating society. Their events calendar has been marked up with the hCalendar conventions.<br />
* [http://www.thisiscmon.com/ C'MON] is a rock band from Canada, and their [http://www.thisiscmon.com/shows/ tour dates] have been marked up by [http://www.d2digitalmedia.com/ Ray Dickman] with hCalendar.<br />
* [http://chocnvodka.blogware.com/blog Suw Charman] has marked up [http://suw.org.uk/archives/category/events/ her events] with hCalendar.<br />
* [http://www.blogbusinesssummit.com/ Blog Business Summit] has published their [http://www.blogbusinesssummit.com/details.htm event details] marked up with hCalendar.<br />
* [http://evdb.com EVDB], the Events and Venues database, publishes all events with hCalendar.<br />
* [http://upcoming.org Upcoming.org] publishes all events and lists of events with hCalendar.<br />
* The [http://laughingsquid.com/squidlist/calendar/ Laughing Squid Calendar] events, [http://laughingsquid.com/squidlist/calendar/9949/2005/5/9 e.g. this party], now supports hCalendar.<br />
* [http://paulschreiber.com/blog/ Paul Schreiber]'s [http://concerts.shrub.ca/ Sunnyvale House Concerts] site publishes hCalendar event information for upcoming concerts. In addition the [http://concerts.shrub.ca/shows Past Shows] page contains hCalendar events for all past concerts.<br />
* [http://www.complexspiral.com/ Complex Spiral Consulting], both in the "Events" box on left side, and the separate [http://www.complexspiral.com/events/ Events page]. <br />
* [http://tantek.com/log Tantek's Thoughts], specifically the "Events" roll in the right-most column.<br />
* [http://suda.co.uk/projects/holidays/ Lesser Known Holidays], a list of holidays on [http://suda.co.uk suda.co.uk] that can be imported via iCal and hCal so you can compare actual transformation versus intended.<br />
* [http://norman.walsh.name/2005/itinerary/ Norm Walsh's travel schedule] use hCalendar as well as GRDDL.<br />
* [http://www.policyawareweb.org/2005/ftf2/paw-mtg Policy Aware Web (PAW) Project Meeting] uses hCalendar to record date-related decisions, and uses a vtodo microformat to record action items.<br />
* The [http://www.kiez-ev.de/ Kiez] is a small cinema and has published its [http://www.kiez-ev.de/programm.htm program] marked up with hCalendar.<br />
<br />
== Implementations ==<br />
This section is '''informative'''.<br />
<br />
The following implementations have been developed which either generate or parse hCalendars. If you have an hCalendar implementation, feel free to add it to the top of this list. Once the list grows too big, we'll make a separate wiki page.<br />
<br />
Generation:<br />
* [http://hybernaut.com/upcoming-hcal Drupal Upcoming.org syndication module emits hCalendar]<br />
* [http://theryanking.com/ Ryan King] has an [http://theryanking.com/microformats/hcalendar-creator.html hCalendar creator].<br />
<br />
Conversion:<br />
* [http://george.hotelling.net/90percent/ George] has built a [http://george.hotelling.net/90percent/geekery/greasemonkey_and_microformats.php Greasemonkey user script that detects hCalendar events and allows users to easily add them to their calendar application(s)].<br />
* [http://blogmatrix.blogmatrix.com/ David Janes] has produced a [[Greasemonkey]] [http://www.blogmatrix.com/include/microformat-find.user.js script] that finds many microformat elements, including hCalendar events, and [http://blog.davidjanes.com/mtarchives/2005_08.html#003379 provides a popup menu of actions]. The hCalendar to vCalendar conversion is done internally within the script.<br />
* [http://suda.co.uk/projects/X2V/ X2V] parses hCalendar and produces a .ics (iCalendar) stream. Note: needs to be updated to track changes in the specification as they occur.<br />
* [http://dev.w3.org/cvsweb/2001/palmagent/ palmagent] by [[User:DanC]] includes toICal.xsl and test materials; it works much like xhtml2vcal.xsl in X2V. See also: [http://www.w3.org/2002/12/cal/ RDF Calendar workspace] with icalendar test materials.<br />
* [http://web.mit.edu/glasser/www/JSCalendar/ JSCalendar] parses hCalendar and produces a displayable HTML table/CSS-based calendar.<br />
<br />
== References ==<br />
=== Normative References ===<br />
* [http://www.w3.org/TR/2002/REC-xhtml1-20020801/ XHTML 1.0 SE]<br />
* [[hcard|hCard]]<br />
* [http://www.ietf.org/rfc/rfc2445.txt iCalendar RFC2445]<br />
<br />
=== Informative References ===<br />
* [http://w3.org/TR/REC-CSS1 CSS1]<br />
* [http://tantek.com/log/2004/09.html#hcalendar hCalendar term introduced and defined on the Web, 20040930]<br />
* [http://wiki.oreillynet.com/foocamp04/index.cgi?HTMLForCalendars FOO Camp 2004 HTML For Calendars presentation, 20040911]<br />
* [http://wiki.oreillynet.com/foocamp04/index.cgi?SimpleSemanticFormats FOO Camp 2004 Simple Semantic Formats presentation, 20040910]<br />
* [http://www.ietf.org/internet-drafts/draft-royer-ical-basic-02.txt iCal-Basic draft 02]<br />
* Contributed from http://developers.technorati.com/wiki/hCalendar<br />
* [http://www.w3.org/TR/xhtml11 XHTML 1.1]<br />
<br />
==== Related Reading ====<br />
* [http://lists.osafoundation.org/pipermail/ietf-calsify/ IETF-calsify archives]<br />
* [http://www.livejournal.com/users/jwz/444651.html jwz - Hula] (required reading)<br />
* [http://www.jwz.org/doc/groupware.html Groupware Bad by Jamie Zawinski] crystalizes the reason for hCalendar ('''emphasis''' added):<br />
<blockquote>"Right now people can do that by publishing .ics files, but it's not trivial to do so, and it's work on the part of other people to look at them. '''If it's not HTML hanging off our friend's home page that can be viewed in any browser on a public terminal in a library, the bar to entry is too high and it's useless.'''"</blockquote><br />
<br />
* [http://muddybranch.thejkgroup.com/ Jason Klemow's blog]<br />
* [http://www.softwarestudio.org/iCal/2445Issues.html RFC2445 Issues List]<br />
* [http://ietf.webdav.org/calsify/ CALSIFY WG Links And Resources]<br />
* [http://theryanking.com/microformats/hcalendar-creator.html hCalendar Creator]<br />
=== Similar Work ===<br />
* [[XOXO]]<br />
<br />
== Discussions ==<br />
<br />
This specification is a work in progress. As additional aspects are discussed, understood, and written, they will be added. There is a separate document where we are keeping our brainstorms and other explorations relating to hCalendar:<br />
<br />
* [[hcalendar-brainstorming]]<br />
<br />
* See also [http://www.technorati.com/cosmos/referer.html blogs discussing this page].<br />
<br />
=== Q&A ===<br />
* If you have any questions about hCalendar, check the [[hcalendar-faq]], and if you don't find answers, add your questions!<br />
<br />
=== Issues ===<br />
* Please add any issues with the specification to the separate [[hcalendar-issues]] document.</div>61.95.31.117http://microformats.org/wiki/index.php?title=introduction&diff=1825introduction2005-09-30T03:25:29Z<p>61.95.31.117: /* Evolution of Web Design */</p>
<hr />
<div>__NOTOC__<br />
<br />
= Introduction to Microformats =<br />
<br />
Related: [[press]], [[presentations]], [[suggested-reading]]<br />
<br />
<br />
== Stub note ==<br />
<br />
This page is a stub and could certainly use some contributions, especially from folks new to [[microformats]], and what key points and details from their perspective helped explain to them what microformats are, why they matter, what benefits they provide to web designers, information architects, web developers, web programmers etc. - [http://tantek.com/log/ Tantek]<br />
<br />
== Why Microformats ==<br />
<br />
Why did we come up with microformats?<br />
<br />
In short, microformats are the convergence of a number of trends:<br />
# a logical next step in the evolution of web design and information architecture<br />
# a way for self-publishers to publish richer information themselves, without having to rely upon centralized services<br />
# an acknowledgment that "traditional" metadata efforts have either failed or taken so long to garner any adoption, that a new approach was necessary<br />
# a way to use (X)HTML for data.<br />
<br />
__TOC__<br />
<br />
<br />
=== Evolution of Web Design ===<br />
<br />
In the beginning (1990), there was [http://www.w3.org/MarkUp/ HTML] and it was good. It was simple, minimal, and used to semantically markup user visible data (text) and share it on the World Wide Web.<br />
<br />
Then came the [http://en.wikipedia.org/wiki/Browser_wars browser wars] (1994-1999) where dominant browser manufacturers took their turns introducing "innovative" presentational tags, giving the typical web author/designer what they wanted: a semblance of control over the presentation of their webpages. The result: [http://www.w3.org/TR/REC-html32 HTML 3.2] "standardized" these defacto presentational innovations.<br />
<br />
The introduction of [http://www.w3.org/TR/REC-CSS1 CSS1] (1996) and the semantically richer [http://www.w3.org/TR/REC-html40/ HTML4] (1998) brought a glimmer of hope, but it wasn't until years later (2000-2001), with the introduction of fully compliant (or almost) implementations of CSS1/HTML4 (IE5/Mac, IE6/Windows, Netscape 6) that it became practical for web designers to depend on CSS in their web pages. Leaders in the community began to furiously adopt and promote CSS (even if it took [http://www.tantek.com/log/2004/07.html#ie5macbandpass a] [http://tantek.com/CSS/Examples/boxmodelhack.html hack] [http://www.tantek.com/CSS/Examples/midpass.html or] [http://tantek.com/CSS/Examples/highpass.html two]) and the efficiencies and enhanced productivity that separating presentation from markup brought them, yet remained a small vocal minority.<br />
<br />
The introduction of the Wired News redesign in 100% CSS, and the beautiful [http://csszengarden.com/ CSS Zen Garden] (2002-2003) was CSS's tipping point. With the clear and obvious presentation of visual beauty and broad creativity, designers world-wide "got it" and realized that this was the future of web design. The presentational markup of <code>&lt;FONT&gt;</code>, <code>&lt;TABLE&gt;</code>, and <code>spacer.gif</code> were tossed aside by any and all self-respecting web designers, who discovered the near infinite flexibility of <code>&lt;div&gt;</code>, <code>&lt;span&gt;</code>, and the 'class' attribute. A few in the community even began adopting some of the more semantic elements in HTML: <code>&lt;p&gt;</code>, <code>&lt;h1&gt;</code>...<code>&lt;h6&gt;</code>, <code>&lt;ol&gt;</code>, <code>&lt;ul&gt;</code>, <code>&lt;li&gt;</code>, <code>&lt;em&gt;</code>, <code>&lt;strong&gt;</code>. Leaders in the community exercised the semantic limits of strict HTML4 (experimented with XHTML) and documented [http://www.simplebits.com/publications/solutions/ best practices].<br />
<br />
As the community followed rapidly in the footpaths they had worn, the leaders began to run into the limits of semantic (X)HTML. Other subcultures were attempting to rewrite the world in their own language(s) (<abbr title="Resource Description Framework">[http://www.w3.org/RDF/ RDF]</abbr>, "plain" <abbr title="eXtensible Markup Language">[http://www.w3.org/XML/ XML]</abbr>, <abbr title="Scalable Vector Graphics">[http://www.w3.org/TR/SVG/ SVG]</abbr>), yet not having much of an impact on the World Wide Web, which required human presentable data, compatible with the browsers people already used. [http://en.wikipedia.org/wiki/Social_software Social Software] and [http://en.wikipedia.org/wiki/Blogs Blogs], written by this new generation of web designers and programmers, began to take off. <br />
<br />
Natural patterns emerged from the way people used blogging systems, putting things into lists, for example lists of other bloggers (known as blogrolls), and annotating them with information representing relationships such has having met, friends, family, etc. The first microformat, <abbr title="XHTML Friends Network">[http://gmpg.org/xfn/ XFN]</abbr>, was designed to match these behaviors, and [http://tantek.com/log/2003/12.html#L20031215t0830 introduced to the blogging community] (2003-2004), who adopted it within weeks. The [http://gmpg.org GMPG] was formed as a home for XFN, and documented a few key [http://gmpg.org/principles design principles] later adopted for microformats. The key notion, that semantic (X)HTML could be extended, had been introduced and accepted by the community.<br />
<br />
By understanding, using, and combining semantic (X)HTML building blocks, as well as determining that semantic (X)HTML could be validly extended via new rel, meta name, and class values, defined in (X)HTML profiles in the [http://gmpg.org/xmdp XMDP format], the community began to design and develop many more microformats (2004-2005). More patterns emerged from the blogging community, and each aggregate human behavior drove the design of simple, adaptive microformats to meet its needs. Creative Commons licensing became popular and [[rel-license]] was proposed. Outlines and lists: [[xoxo|XOXO]]. Contact info: [[hcard|hCard]]. Calendars and events [[hcalendar|hCalendar]].<br />
<br />
Using these new found building blocks, the web design and information architecture communities were no longer limited by the predefined semantics of HTML4 (nor did they have to compromise human presentation and ease of authoring which other attempts sorely lacked). 2005 may well be the year that microformats became the next step in the evolution of the web.<br />
<br />
=== The Appeal to Simplicity ===<br />
<br />
* Microformats are a simple effort which has appealed to many frustrated with previous complex efforts. One parallel that can be drawn is to REST in the web services world, i.e. see this [http://www.windley.com/archives/2005/07/microformats.shtml comparison of microformats and REST].<br />
* See also: [http://www.justinleavesley.com/journal/2005/7/28/web-services-and-the-innovators-dilemma.html Web Services and the Innovators Dilemma] by Justin Leavesley<br />
<br />
== See Also ==<br />
* [http://thedredge.org/ Andrew D. Hume] has written a blog post [http://thedredge.org/2005/07/introducing-microformats/ introducing microformats] and another one on [http://usabletype.com/articles/2005/usable-microformats/ usable microformats].<br />
* See microformat [[presentations]] for more background and introductory material on [[microformats]].<br />
* Recent [[press]] interviews and articles are also a good introduction.<br />
* [[suggested-reading]]<br />
<br />
== Miscellaneous Reference ==<br />
<br />
These are various intro-related links/articles which I haven't figured out yet how to incorporate. You may find them of interest. - [http://tantek.com/log/ Tantek]<br />
<br />
* [http://www.betaversion.org/~stefano/linotype/news/93/ Data First vs. Structure First]<br />
** [http://tantek.com/log/ Tantek] says: In many ways it is actually *far* worse than that post conveys. The "typical" programmer literally loves spending far more time worrying about and designing the structure for structure's sake, than data, and even less so, "real world" data (current behaviors etc.). Hence we have taken the directly opposite tack with microformats when looking to solve a problem.<br />
*** Zeroeth, define the real-world problem. If you can't do this, then stop.<br />
*** First, look at real-world usage (data).<br />
*** Second, what previous standards are people actually using today? If there is more than one, then lean towards those with the better adoption.<br />
***And only after those first two do we bother to pay attention to theoretical standards, those that have been invented (whether by individuals, committees), but haven't seen much if any actual adoption.<br />
* [http://lists.w3.org/Archives/Public/www-rdf-interest/2000Mar/0103 2000-03-21 Dan Connolly on human-consumable information]: ('''strong emphasis''' added)<br />
** I believe that one of the best ways to transition into RDF, if not a long-term deployment strategy for RDF, is to '''manage the information in human-consumable form (XHTML) annotated with just enough info to extract''' the RDF statements that the human info is intended to convey. In other words: using a relational database or some sort of native RDF data store, and spitting out HTML dynamically, is a lot of infrastructure to operate and probably not worth it for lots of interesting cases. '''We all know that we have to produce a human-readable version of the thing... why not use that as the primary source?'''</div>61.95.31.117