<?xml version="1.0" encoding="utf-8"?>
<!-- 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153
-->
<?xml-stylesheet type="text/xsl" href="https://rollerweblogger.org/roller-ui/styles/rss.xsl" media="screen"?><rss version="2.0" 
  xmlns:dc="http://purl.org/dc/elements/1.1/"
  xmlns:atom="http://www.w3.org/2005/Atom" >
<channel>
  <title>Blogging Roller</title>
  <link>https://rollerweblogger.org/roller/</link>
    <atom:link rel="self" type="application/rss+xml" href="https://rollerweblogger.org/roller/feed/entries/rss?tags=wip" />
  <description>Dave Johnson on open web technologies, social software and software development</description>
  <language>en-us</language>
  <copyright>Copyright 2026</copyright>
  <lastBuildDate>Tue, 28 Apr 2026 07:02:22 +0000</lastBuildDate>
  <generator>Apache Roller 6.1.5</generator>
  <item>
    <guid isPermaLink="true">https://rollerweblogger.org/roller/entry/wip_feed_based_integration</guid>
    <title>WIP #6: Feed-based Integration</title>
    <dc:creator>Dave Johnson</dc:creator>
    <link>https://rollerweblogger.org/roller/entry/wip_feed_based_integration</link>
    <pubDate>Mon, 8 Oct 2012 10:38:43 +0000</pubDate>
    <category>Web Development</category>
    <category>atom</category>
    <category>feeds</category>
    <category>rss</category>
    <category>wip</category>
<atom:summary type="html">&lt;p&gt;&lt;i&gt;This is the sixth in my series of Web Integration Patterns. Check out the intro at this URL &lt;a href=&quot;http://rollerweblogger.org/roller/entry/web_integration_patterns&quot;&gt;http://rollerweblogger.org/roller/entry/web_integration_patterns&lt;/a&gt;&lt;/i&gt;&lt;/p&gt;

&lt;h3&gt;Synopsys&lt;/h3&gt;

&lt;p&gt;This pattern is about integrating web sites and applications by using standard feed formats to convey timely information, updates, status messages, events and other things from one web application to another.&lt;/p&gt;

&lt;h3&gt;Motivations&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Take advantage of the many tools and services that can produce, consume, aggregate and build work-flows around feeds as a way to integrate web applications.&lt;/li&gt;
&lt;li&gt;Use a standards-based approach to ensure that that widest range of feed producers and consumers can be supported. Make it so everybody who needs can read your feeds.&lt;/li&gt;
&lt;/ul&gt;</atom:summary><description>&lt;p&gt;&lt;i&gt;This is the sixth in my series of Web Integration Patterns. Check out the intro at this URL &lt;a href=&quot;http://rollerweblogger.org/roller/entry/web_integration_patterns&quot;&gt;http://rollerweblogger.org/roller/entry/web_integration_patterns&lt;/a&gt;&lt;/i&gt;&lt;/p&gt;

&lt;h3&gt;Synopsys&lt;/h3&gt;

&lt;p&gt;This pattern is about integrating web sites and applications by using standard feed formats to convey timely information, updates, status messages, events and other things from one web application to another.&lt;/p&gt;

&lt;h3&gt;Motivations&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Take advantage of the many tools and services that can produce, consume, aggregate and build work-flows around feeds as a way to integrate web applications.&lt;/li&gt;
&lt;li&gt;Use a standards-based approach to ensure that that widest range of feed producers and consumers can be supported. Make it so everybody who needs can read your feeds.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;Related Patterns&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Search Integration&lt;/li&gt;
&lt;li&gt;Web APIs&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A feed is a list of entries, each with an timestamp, ID, title, content and metadata like categories and tags. Entries are arranged in reverse chronological order. The entries in a feed can represent just about anything from blog entries, Flickr photos, YouTube videos, source-code change sets or tasks in a change management system. A feed is an XML resource that is available at a URL. If you want updates, then you poll that URL, ideally using HTTP Conditional GET so that you only pull down the feed when it has been updated.&lt;/p&gt;

&lt;p&gt;Generally speaking there are two standard feed formats in use on the web: &lt;a href=&quot;http://cyber.law.harvard.edu/rss/rss.html&quot;&gt;RSS&lt;/a&gt; and &lt;a href=&quot;http://www.atomenabled.org/developers/syndication/atom-format-spec.php&quot;&gt;Atom&lt;/a&gt;, both are based on XML. Both use different element names, for example: what Atom calls &amp;quot;entries&amp;quot; RSS calls &amp;quot;items.&amp;quot; Because these standard formats are so widely supported, providing a feed is an effective way to share updates from your web site or application.&lt;/p&gt;

&lt;p&gt;&lt;b&gt;Elements of Atom&lt;/b&gt; (from my 2006 &lt;a href=&quot;http://rollerweblogger.org/roller/entry/tri_xml_2006_presentation&quot;&gt;presentation on Atom&lt;/a&gt;)&lt;/p&gt;
&lt;p&gt;
&lt;img src=&quot;http://rollerweblogger.org/roller/mediaresource/fa22fadc-9cf5-4bd6-8e2e-d6ce4e0a603f&quot; alt=&quot;Atom feed model&quot;&gt;
&lt;/p&gt;

&lt;p&gt;Another flavor of feeds is &lt;a href=&quot;http://activitystrea.ms/specs/json/schema/activity-schema.html&quot;&gt;ActivityStrea.ms&lt;/a&gt;, which is essentially a feed format with a &lt;a href=&quot;http://activitystrea.ms/specs/json/schema/activity-schema.html&quot;&gt;schema&lt;/a&gt; for representing about 70 different types of activities. These activities can be social network activities like &lt;i&gt;share&lt;/i&gt; or &lt;i&gt;friend&lt;/i&gt; and they can also be business activities like &lt;i&gt;assign&lt;/i&gt;, &lt;i&gt;resolve&lt;/i&gt; or &lt;i&gt;schedule&lt;/i&gt;. One advantage of using the ActivityStrea.ms standard is that it has both an &lt;a href=&quot;http://activitystrea.ms/specs/atom/1.0/&quot;&gt;Atom&lt;/a&gt; and a &lt;a href=&quot;http://activitystrea.ms/specs/json/1.0/&quot;&gt;JSON mapping&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;Producing Feeds&lt;/h3&gt;

&lt;p&gt;Feed-based Integration is listed as a basic pattern because it can be very easy to implement. The ability to produce feeds is built-in to many different types of web applications from blog and wikis to continuous integration servers. If you are writing your own web application, you can choose to use XML tools to produce your feeds, a templating engine or a dedicated feed toolkit like &lt;a href=&quot;https://rometools.jira.com/secure/Dashboard.jspa&quot;&gt;ROME&lt;/a&gt;. You&#146;ll find plenty of XML tools and templating engines no matter what language you are using.&lt;/p&gt;

&lt;p&gt;Which type of feed should you produce? That depends. Atom is the most complete specification and is a true IETF standard, so often it is the right choice. To make the right decision, you have to consider who is going to be consuming your feeds. If your consumers prefer RSS, them give them that. If your consumers prefer JSON over XML, then consider ActivityStrea.ms in JSON flavor.&lt;/p&gt;

&lt;h3&gt;Consuming Feeds&lt;/h3&gt;

&lt;p&gt;You can use a wide variety of tools to parse and process feed data. For example, there are many web sites and services that can digest feeds and trigger other events and processing. Services such as &lt;a href=&quot;http://pipes.yahoo.com/pipes/&quot;&gt;Yahoo Pipes&lt;/a&gt; and &lt;a href=&quot;https://ifttt.com/dashboard&quot;&gt;If This Then That&lt;/a&gt; can read feeds, process each item and perform other actions based on item values. &lt;/p&gt;

&lt;p&gt;&lt;b&gt;Processing a feed with Yahoo Pipes&lt;/b&gt; (from &lt;a href=&quot;http://blog.earth2marsh.com/2009/09/prioritizing-podcasts-with-google.html&quot;&gt;Marsh Gardiner&amp;#39;s post&lt;/a&gt;)&lt;/p&gt;
&lt;p&gt;
&lt;img src=&quot;http://rollerweblogger.org/roller/mediaresource/62bbcf12-3c87-4964-8eab-6b5482c97e4f&quot; alt=&quot;Yahoo Pipes&quot;&gt;
&lt;/p&gt;

&lt;p&gt;You&#146;ll also find a variety of JavaScript widgets that can parse and display feeds in a website. Most web portal and software with a web dashboard features will include a component that can display feeds. And, of course, you can use a reader that supports RSS/Atom feeds, such as Google Reader or Feedly or FlipBoard, to monitor and read feeds.&lt;/p&gt;

&lt;p&gt;If you need to add RSS/Atom reading features to your own software, you can use standard XML parsing tools and, for most language, you&#146;ll find that there are open source libraries specifically designed for parsing feeds.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://manning.com/dmjohnson&quot;&gt;
&lt;img src=&quot;http://rollerweblogger.org/roller/mediaresource/62e51883-23ad-4c45-9182-fbe2085f33d3&quot; alt=&quot;book: RSS and Atom in Action&quot; align=&quot;right&quot;&gt;&lt;/a&gt;For more information in producing and consuming feeds, &lt;a href=&quot;http://manning.com/dmjohnson&quot;&gt;RSS and Atom in Action&lt;/a&gt;. Also, you might find my presentation on &lt;a href=&quot;http://rollerweblogger.org/roller/entry/tri_xml_2006_presentation&quot;&gt;Beyond Blogging: Atom Format and Protocol&lt;/a&gt; useful.&lt;/p&gt;

&lt;h3&gt;Beyond the basics&lt;/h3&gt;

&lt;p&gt;Feeds are a great way to do simple integrations, but there are limitations and there will be times you&#146;ll need to go beyond the basics with RSS and Atom feeds. Here&amp;#39;s an example. Normally, with feeds, clients have to repeatedly poll the feed URL for updates. This is annoying, and inefficient, even with HTTP Conditional GET. To address this problem, you can setup a &lt;a href=&quot;https://code.google.com/p/pubsubhubbub/&quot;&gt;PubSubHubub&lt;/a&gt; server that will subscribe to feeds and will then notify other subscribers instantly when updates are available, so that those other subscribers don&#146;t have to poll.&lt;/p&gt;

&lt;p&gt;Another problem is that, if you don&#146;t poll often enough, you might miss some updates and they may &#147;scroll&#148; off the bottom of the feed before you see them. Feed providers can address this problem by supporting &lt;a href=&quot;http://tools.ietf.org/html/rfc5005&quot;&gt;Feed Paging and Archiving&lt;/a&gt;, which allows clients to use next and previous links to &#147;page&#148; back to feed items that are no longer in the first page of the feed.&lt;/p&gt;

&lt;p&gt;One more beyond-the-basics item to mention is the related pattern Web APIs, which we&amp;#39;ll cover later. Web APIs are listed as a related pattern to Feed-based Integration. That&amp;#39;s because feeds have been used as the basis for several &amp;quot;Web APIs&amp;quot; or protocols. These protocols specify how to use HTTP POST, GET, PUT and DELETE and create, retrieve, update and delete web resources that are represented as feed entries. Examples are the IETF&amp;#39;s &lt;a href=&quot;http://www.atomenabled.org/developers/protocol/atom-protocol-spec.php&quot;&gt;Atom Protocol&lt;/a&gt;, Microsoft&amp;#39;s &lt;a href=&quot;http://www.odata.org/&quot;&gt;OData&lt;/a&gt; and Google&amp;#39;s &lt;a href=&quot;https://developers.google.com/gdata/docs/directory&quot;&gt;GData&lt;/a&gt; APIs.&lt;/p&gt;

&lt;p&gt;That&#146;s it for Feed-based Integration. In my next posts, we&amp;#39;ll move in to the Advanced Patterns.&lt;/p&gt;</description>  </item>
  <item>
    <guid isPermaLink="true">https://rollerweblogger.org/roller/entry/html5_microdata_and_schema_org</guid>
    <title>HTML5 Microdata and Schema.org</title>
    <dc:creator>Dave Johnson</dc:creator>
    <link>https://rollerweblogger.org/roller/entry/html5_microdata_and_schema_org</link>
    <pubDate>Thu, 9 Feb 2012 08:48:06 +0000</pubDate>
    <category>Web Development</category>
    <category>html5</category>
    <category>linkeddata</category>
    <category>wip</category>
<description>&lt;p&gt;Worth a read and related to my Web Integration Patterns post on &lt;a href=&quot;http://rollerweblogger.org/roller/entry/wip_embedded_properties_in_html&quot;&gt;Embedded Properties in HTML&lt;/a&gt;:&lt;/p&gt;
&lt;blockquote&gt;
HTML5 Microdata and Schema.org:HTML5 Microdata and Schema.org
On June 2, 2011, Bing, Google, and Yahoo! announced the joint effort Schema.org. When the big search engines talk, Web site authors listen. This article is an introduction to Microdata and Schema.org. The first section describes what HTML5, Microdata and Schema.org are, and the problems they have been designed to solve. With this foundation in place section 2 provides a practical tutorial of how to use Microdata and Schema.org using a real life example from the cultural heritage sector. Along the way some tools for implementers will also be introduced. Issues with applying these technologies to cultural heritage materials will crop up along with opportunities to improve the situation.&lt;/blockquote&gt;
</description>  </item>
  <item>
    <guid isPermaLink="true">https://rollerweblogger.org/roller/entry/wip_resource_preview</guid>
    <title>WIP: Resource Preview</title>
    <dc:creator>Dave Johnson</dc:creator>
    <link>https://rollerweblogger.org/roller/entry/wip_resource_preview</link>
    <pubDate>Fri, 3 Jun 2011 09:00:35 +0000</pubDate>
    <category>Web Development</category>
    <category>asf</category>
    <category>oslc</category>
    <category>resourcepreview</category>
    <category>uipreview</category>
    <category>wip</category>
<atom:summary type="html">&lt;p&gt;&lt;i&gt;This is the fourth in my series of Web Integration Patterns. Check out the intro at this URL &lt;a href=&quot;http://rollerweblogger.org/roller/entry/web_integration_patterns&quot;&gt;http://rollerweblogger.org/roller/entry/web_integration_patterns&lt;/a&gt;&lt;/i&gt;&lt;/p&gt;

&lt;p&gt;&lt;b&gt;Synopsis&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;Enhance links shown in HTML pages so that users can hover, mouse-over, or use some other gesture, to view a preview of the resource at the other end of the link.&lt;/p&gt;

&lt;p&gt;&lt;b&gt;Motivations&lt;/b&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Make it convenient for a user to get information about a link but without having to navigate to the link and without having to leave the current web page in the browser.&lt;/li&gt;
&lt;li&gt;Make applications appear to be part of one integrated whole by enabling them to delegate to each other&amp;#39;s user interfaces for preview display.&lt;/li&gt;
&lt;/ul&gt;</atom:summary><description>&lt;p&gt;&lt;i&gt;This is the fourth in my series of Web Integration Patterns. Check out the intro at this URL &lt;a href=&quot;http://rollerweblogger.org/roller/entry/web_integration_patterns&quot;&gt;http://rollerweblogger.org/roller/entry/web_integration_patterns&lt;/a&gt;&lt;/i&gt;&lt;/p&gt;

&lt;p&gt;&lt;b&gt;Synopsis&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;Enhance links shown in HTML pages so that users can hover, mouse-over, or use some other gesture, to view a preview of the resource at the other end of the link.&lt;/p&gt;

&lt;p&gt;&lt;b&gt;Motivations&lt;/b&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Make it convenient for a user to get information about a link but without having to navigate to the link and without having to leave the current web page in the browser.&lt;/li&gt;
&lt;li&gt;Make applications appear to be part of one integrated whole by enabling them to delegate to each other&amp;#39;s user interfaces for preview display.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;b&gt;Complements&lt;/b&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://rollerweblogger.org/roller/entry/wip_links&quot;&gt;Links&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Delegated Resource Creation &amp;amp; Selection&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://rollerweblogger.org/roller/entry/wip_common_navigation&quot;&gt;Common Navigation&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This pattern allows users to view a preview of links that are displayed in a web page. This preview might be a simple tool-tip with plain-text, a more rich JavaScript-driven display with hyper-text and graphics, or it might be a thumbnail view of the page at the other end of the link.&lt;/p&gt;

&lt;p&gt;Resource Preview works well for web applications that use the &lt;a href=&quot;http://rollerweblogger.org/roller/entry/wip_links&quot;&gt;Links&lt;/a&gt; pattern for integration and use links to establish relationships between resources. If a user is looking at a Bug Report, for example, they might see a list of links to associated resources like attachments to the bug, test cases impacted by the bug, etc. The user can hover over links and see a preview with key information for each link, without leaving the current web page that they are on. Below are three different approaches to applying the Resource Preview pattern in web applications.&lt;/p&gt;

&lt;h3&gt;Approach #1: Preview Site offers previews to other applications&lt;/h3&gt;

&lt;p&gt;With this approach, there is a special preview site that crawls a set of web sites and creates Resource Previews of the web pages of those sites. Then, web sites that wish to display previews on links use some special JavaScript magic to display those previews. An example of this preview site approach is &lt;a href=&quot;http://www.snap.com/&quot;&gt;Snap.com&lt;/a&gt;&#146;s &lt;a href=&quot;http://www.snap.com/snapshots.php&quot;&gt;Snap-Shots&lt;/a&gt; service. Anybody with a web site can sign up for the service, get some special HTML code that can be added to their site to display a graphical and thumbnail-style preview whenever a user hovers over a link.&lt;/p&gt; 

&lt;p&gt;Here&#146;s an example of a Snap.com preview on the company&#146;s blog:&lt;/p&gt;

&lt;img src=&quot;http://rollerweblogger.org/roller/mediaresource/d5be1c22-5263-4286-a025-6fc2aa7f4c44&quot; alt=&quot;Snap.com preview&quot;&gt;

&lt;p&gt;The advantages of the preview site approach are participating sites don&#146;t have to do anything except for adding a small bit of JavaScript code to enable previews. The disadvantage is that the automatically generated previews often can&#146;t offer more than a page title, thumbnail image and perhaps a short excerpt from the page being previewed. Also, it&#146;s interesting to note that  there was a &lt;a href=&quot;http://thenextweb.com/2008/01/26/snapcom-to-critics-you-wanna-step-outside/&quot;&gt;backlash&lt;/a&gt; against Snap-Shots and some people thought they were distracting and gimmicky. Regardless of that criticism, this approach to Resource Previews is not very interesting from a Web Integration Patterns point of view because the focus is making one site more useful and interactive, and not integrating with others.&lt;/p&gt;

&lt;h3&gt;Approach #2: Application creates and displays previews as needed&lt;/h3&gt;

&lt;p&gt;With this approach, an application that needs to provide preview creates the previews that it needs and take case of displaying them. The best known examples of this approach are probably the preview features built into Microsoft&#146;s Bing and Google&#146;s search engine. This approach is also not very interesting as a WIP because its all about making one site more useful, not integrating with others.&lt;/p&gt;

&lt;p&gt;Here&#146;s an example of a Resource Preview in Microsoft Bing:&lt;/p&gt;

&lt;img src=&quot;http://rollerweblogger.org/roller/mediaresource/46c0d83d-597e-4dad-8eaa-1ada5e933795&quot; alt=&quot;Bing preview&quot;&gt;

&lt;h3&gt;Approach #3: Applications offer previews of their own resources&lt;/h3&gt;

&lt;p&gt;This approach is to enable web applications provide previews of their own resources and make them available via a simple protocol. The best example of this approach is &lt;a href=&quot;http://open-services.net/bin/view/Main/OslcCoreUiPreview&quot;&gt;OSLC UI Preview&lt;/a&gt;, which is part of the &lt;a href=&quot;http://open-services.net&quot;&gt;OSLC specifications&lt;/a&gt;. The OSLC specs are designed to enable integration between ALM tools, but can be applied to integrating web applications of almost any stripe. Applications that implement OSLC UI Preview provide a UI Preview for each resource, one that provides a summary of the resource and links to large and small previews of the resource. &lt;/p&gt;

&lt;p&gt;Here&#146;s an example of an &lt;a href=&quot;http://fusionforge.org/plugins/mediawiki/wiki/fusionforge/index.php/OslcCompactPreviewTooltips&quot;&gt;OSLC UI Preview from FusionForge&lt;/a&gt;, an open source ALM suite:&lt;/p&gt;

&lt;img src=&quot;http://rollerweblogger.org/roller/mediaresource/ad5008ea-2010-4873-9140-fdad5d87c2fc&quot; alt=&quot;FusionForge preview&quot;&gt;

&lt;p&gt;Here&#146;s an example of a Resource Preview from &lt;a href=&quot;https://jazz.net/projects/rational-team-concert/&quot;&gt;IBM Rational Team Concert&lt;/a&gt;, which also implements the OSLC UI Preview spec:&lt;/p&gt;

&lt;img src=&quot;http://rollerweblogger.org/roller/mediaresource/95919538-b750-4ba8-b96f-272f5b020d46&quot; alt=&quot;RTC preview&quot;&gt;

&lt;p&gt;There are several advantages to this approach. Preview-providing applications have complete control over the content and appearance of previews for their resources. Preview-consuming applications don&#146;t have to create and format them, they just display what comes back from the provider. No special preview site is needed to enable previews. Another advantage to this approach to Resource Previews is the OSLC UI Preview specification, which defines an open and standard way to provide and consume previews.&lt;/p&gt;

&lt;h3&gt;Wrapping up&lt;/h3&gt;

&lt;p&gt;I&amp;#39;ve explained what I call the Resource Pattern and three different ways that I&amp;#39;ve seen it used. Resource Preview is a good way to add value to the &lt;a href=&quot;http://rollerweblogger.org/roller/entry/wip_links&quot;&gt;Links&lt;/a&gt; pattern and to make links even more useful. The best way to implement this pattern is to ask all web applications that want to integrate to offer Resource Previews via a standard protocol such as OSLC UI Preview, and to display them whenever a user hovers over a link.&lt;/p&gt;
</description>  </item>
  <item>
    <guid isPermaLink="true">https://rollerweblogger.org/roller/entry/oslc_core_spec_final</guid>
    <title>OSLC Core v2 specification now FINAL</title>
    <dc:creator>Dave Johnson</dc:creator>
    <link>https://rollerweblogger.org/roller/entry/oslc_core_spec_final</link>
    <pubDate>Wed, 1 Jun 2011 14:38:13 +0000</pubDate>
    <category>IBM</category>
    <category>asf</category>
    <category>linkeddata</category>
    <category>oslc</category>
    <category>rest</category>
    <category>wip</category>
<description>&lt;p&gt;&lt;img src=&quot;http://rollerweblogger.org/roller/mediaresource/04fe2c5b-9719-4e13-9221-70a0645b48e0&quot; align=&quot;right&quot; hspace=&quot;5&quot;&gt;
I&amp;#39;ve been working on the OSLC Core specification for about 1.5 years now as workgroup lead, and &lt;a href=&quot;http://open-services.net&quot;&gt;OSLC&lt;/a&gt; fits squarely under the &amp;quot;open web technologies&amp;quot; and &lt;a href=&quot;http://rollerweblogger.org/roller/entry/web_integration_patterns&quot;&gt;Web Integration Patterns&lt;/a&gt; topics of this blog, so I&amp;#39;m blogging this happy news. &lt;/p&gt;

&lt;p&gt;Here&amp;#39;s the announcement From the OSLC Core Workgroup mailing list:&lt;/p&gt;

&lt;pre&gt;
From: Dave Johnson
To: oslc-core (a) open-services.net, community (a) open-services.net
Subject: OSLC Core v2 specification now FINAL

Today [1], I&amp;#39;m very happy to announce that the OSLC Core v2
specification is FINAL.

The OSLC Core v2 specification [2] defines a set of REST and Linked
Data-based patterns, resources and protocols for integration of application 
and product lifecycle resources (ALM and PLM). It&amp;#39;s designed to be the
foundation for all other OSLC domain specifications and there are now
three final OSLC specifications that are based on the Core, those
being the OSLC Change Management (CM) [3], OSLC Quality Management
(QM) [4] and OSLC Requirements Management (RM) [5] specs.

I&amp;#39;d like to thank all of the members of the OSLC Core Workgroup and
community for their hard work, critical thinking and ability to work
together in such a productive and pleasant way. Also, special thanks
to those OSLC domain workgroups who rebased their work on the Core and
development teams that provided excellent feedback along the way.

Thanks,
- Dave

--
David M. Johnson
OSLC Core Workgroup Lead
IBM Rational Software


[1] Move to final was proposed last week, along with a small set of
changes which have since been applied to the specification. 
[2] &lt;a href=&quot;http://open-services.net/bin/view/Main/OslcCoreSpecification&quot;&gt;OslcCoreSpecification&lt;/a&gt;
[3] &lt;a href=&quot;http://open-services.net/bin/view/Main/CmSpecificationV2&quot;&gt;CmSpecificationV2&lt;/a&gt;
[4] &lt;a href=&quot;http://open-services.net/bin/view/Main/QmSpecificationV2&quot;&gt;QmSpecificationV2&lt;/a&gt;
[5] &lt;a href=&quot;http://open-services.net/bin/view/Main/RmSpecificationV2&quot;&gt;RmSpecificationV2&lt;/a&gt;
&lt;/pre&gt;

&lt;p&gt;I really do have another &lt;a href=&quot;http://rollerweblogger.org/roller/entry/web_integration_patterns&quot;&gt;Web Integration Patterns&lt;/a&gt; post on the way shortly, so stay tuned.&lt;/p&gt;</description>  </item>
  <item>
    <guid isPermaLink="true">https://rollerweblogger.org/roller/entry/wip_embedded_properties_in_html</guid>
    <title>WIP: Embedded Properties in HTML</title>
    <dc:creator>Dave Johnson</dc:creator>
    <link>https://rollerweblogger.org/roller/entry/wip_embedded_properties_in_html</link>
    <pubDate>Thu, 7 Apr 2011 21:57:52 +0000</pubDate>
    <category>Web Development</category>
    <category>asf</category>
    <category>html</category>
    <category>rdf</category>
    <category>rdfa</category>
    <category>wip</category>
<atom:summary type="html">&lt;p&gt;&lt;i&gt;This is the third in my series of Web Integration Patterns. Check out the intro at this URL &lt;a href=&quot;http://rollerweblogger.org/roller/entry/web_integration_patterns&quot;&gt;http://rollerweblogger.org/roller/entry/web_integration_patterns&lt;/a&gt;&lt;/i&gt;&lt;/p&gt;

&lt;p&gt;&lt;b&gt;Synopsis&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;Enable easier integration and better search across integrated web applications and sites by using standard mechanisms (e.g. Microformats, RDFa) to embed property values in HTML pages.&lt;/p&gt;</atom:summary><description>&lt;p&gt;&lt;i&gt;This is the third in my series of Web Integration Patterns. Check out the intro at this URL &lt;a href=&quot;http://rollerweblogger.org/roller/entry/web_integration_patterns&quot;&gt;http://rollerweblogger.org/roller/entry/web_integration_patterns&lt;/a&gt;&lt;/i&gt;&lt;/p&gt;

&lt;p&gt;&lt;b&gt;Synopsis&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;Enable easier integration and better search across integrated web applications and sites by using standard mechanisms (e.g. Microformats, RDFa) to embed property values in HTML pages.&lt;/p&gt;

&lt;p&gt;&lt;b&gt;Motivations&lt;/b&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Enable integrated web applications to read, parse and make use of each others data&lt;/li&gt;
&lt;li&gt;Enable better search across integrated web applications&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;b&gt;Related Patterns&lt;/b&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://rollerweblogger.org/roller/entry/wip_links&quot;&gt;Links&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Web APIs&lt;/li&gt;
&lt;li&gt;Linked Data + REST&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In this pattern, you define different types of resources or &#147;objects,&amp;quot; and the properties may be associated with each, or you adopt an existing vocabulary. You define a way to embed type information and properties values into HTML, by embedding name and value pairs in a way invisible to a user or by marking up strings of visible text as property values, or you adopt an existing technique.&lt;/p&gt;

&lt;p&gt;For example, a cooking web site could share recipe data using this pattern by presenting each recipe with embedded property values to make it easy for other web applications, mash-ups and search engines to parse out the different parts of the recipe, title, ingredients list, list of steps, etc. This is a real example, by the way, &lt;a href=&quot;http://www.google.com/support/webmasters/bin/answer.py?answer=173379&quot;&gt;Google indexes recipe data in HTML pages&lt;/a&gt; marked up in either Microformat-style or RDFa.&lt;/p&gt;

&lt;p&gt;If you present each web page as a resource with a type, or multiple types, and embedded property values then you don&#146;t need to define and provide a special &#147;REST API&#148; to allow other web applications to access your data. &lt;/p&gt;

&lt;p&gt;This pattern can enable more powerful search capabilities across integrated web application because search engine&#146;s can be aware of and provide special indexing for those different types of resources and properties.&lt;/p&gt;

&lt;p&gt;There are at least three different standard ways to embed data in HTML: Microformats, HTML Microdata and RDFa, each of which I&#146;ll explain below.&lt;/p&gt;

&lt;h4&gt;Microformats&lt;/h4&gt;

&lt;img src=&quot;http://rollerweblogger.org/roller/mediaresource/237ec029-cb39-4f8f-988e-806fb6abf912&quot; alt=&quot;Microformats logo&quot; align=&quot;right&quot; width=&quot;180&quot; height=&quot;50&quot;&gt;

&lt;p&gt;&lt;a href=&quot;http://en.wikipedia.org/wiki/Microformat&quot;&gt;According to Wikipedia&lt;/a&gt; &#147;Microformats emerged as part of a grassroots movement to make recognizable data items (such as events, contact details or geographical locations) capable of automated processing by software, as well as directly readable by end-users.&#148; A community grew around Microformats and this community has worked to define Microformats for a variety of use cases. The &lt;a href=&quot;http://microformats.org&quot;&gt;microformats.org&lt;/a&gt; web site lists nine microformats, including &lt;a href=&quot;http://microformats.org/wiki/hcard&quot;&gt;hCard&lt;/a&gt; for sharing contact information, &lt;a href=&quot;http://microformats.org/wiki/hcalendar&quot;&gt;hCalendar&lt;/a&gt; for sharing events and hReview for sharing movie and book reviews.&lt;/p&gt;

&lt;p&gt;The basic idea of Microformats is to use existing HTML element attributes, specifically rel and class, to convey types of things and properties of those things. Here&#146;s an example from Wikipedia: to represent information about a geographic location in HTML, the &lt;a href=&quot;http://microformats.org/wiki/geo&quot;&gt;Geo Microformat&lt;/a&gt; uses the syntax below:
&lt;/p&gt;

&lt;pre&gt;

   The birds roosted at
     &amp;lt;span class=&amp;quot;geo&amp;quot;&amp;gt;
     &amp;lt;span class=&amp;quot;latitude&amp;quot;&amp;gt;52.48&amp;lt;/span&amp;gt;,
     &amp;lt;span class=&amp;quot;longitude&amp;quot;&amp;gt;-1.89&amp;lt;/span&amp;gt;
   &amp;lt;/span&amp;gt;&lt;/pre&gt;

&lt;p&gt;The outer-most span&#146;s class element indicates the type &amp;quot;geo&amp;quot; and the inner spans carry the &amp;quot;latitude&amp;quot; and &amp;quot;longitude&amp;quot; property values.&lt;/p&gt;

&lt;p&gt;If you want to take advantage of Microformats in web application integration, then you pick one of the existing formats or you invent a new one, ideally by working with the Microformats community to do so. &lt;/p&gt;

&lt;p&gt;Another approach for implementing Embedded Properties in HTML is HTML itself.&lt;/p&gt;

&lt;h4&gt;HTML(5) Microdata&lt;/h4&gt;

&lt;img src=&quot;http://rollerweblogger.org/roller/mediaresource/a5dd6440-5fcd-4b48-9d56-fe71dd0862d5&quot; alt=&quot;HTML5 logo&quot; align=&quot;right&quot; width=&quot;100&quot; height=&quot;100&quot;&gt;

&lt;p&gt;&lt;a href=&quot;http://www.w3.org/TR/2011/WD-microdata-20110405/&quot;&gt;HTML Microdata&lt;/a&gt; is a W3C working draft, a specification that defines ways to embed property values in HTML. As Mark Pilgrim &lt;a href=&quot;http://diveintohtml5.org/extensibility.html#what-is-microdata&quot;&gt;explains in Dive Into HTML5&lt;/a&gt;, HTML Microdata &#147;annotates the DOM with scoped name/value pairs from custom vocabularies.&#148; This is very similar to what Microformats do, but instead of &#147;overloading&#148; the class attribute, HTML Microdata adds some new HTML attributes to enable embedded property values.&lt;/p&gt;

&lt;p&gt;HTML Microdata enables you to mark-up an HTML element as an item that contains properties. You do this via the &lt;b&gt;itemscope&lt;/b&gt; attribute, you indicate the item&#146;s type via the &lt;b&gt;itemtype&lt;/b&gt; attribute and each property is indicated by the &lt;b&gt;itemprop&lt;/b&gt; attribute. Here&#146;s an example, also from Pilgrim&#146;s book:&lt;/p&gt;

&lt;pre&gt;

   &amp;lt;TABLE itemscope itemtype=&amp;quot;http://data-vocabulary.org/Person&amp;quot;&amp;gt;
     &amp;lt;TR&amp;gt;&amp;lt;TD&amp;gt;Name&amp;lt;TD&amp;gt;Mark Pilgrim
     &amp;lt;TR&amp;gt;&amp;lt;TD&amp;gt;Link&amp;lt;TD&amp;gt;
       &amp;lt;span itemprop=&amp;quot;url&amp;quot;&amp;gt;
       &amp;lt;A href=# onclick=goExternalLink()&amp;gt;http://diveintomark.org/&amp;lt;/A&amp;gt;
       &amp;lt;/span&amp;gt;
   &amp;lt;/TABLE&amp;gt;

&lt;/pre&gt;

&lt;p&gt;The table element defines the scope of the item and the type of the item is a URL &lt;a href=&quot;http://www.data-vocabulary.org/Person/&quot;&gt;http://data-vocabulary.org/Person&lt;/a&gt; which indicates that the item represents a person. The enclosed span element carries the &#147;url&#148; property of the person.&lt;/p&gt;

&lt;p&gt;It&#146;s good to have a standard way to encode types, scope and property values in HTML, but you also need standard vocabularies of types and properties to make this approach successful. There are some HTML Microdata vocabularies defined at data-vocabulary.org and HTML Microdata can also be used with RDF, opening up a huge number of vocabularies.&lt;/p&gt;

&lt;h4&gt;RDFa&lt;/h4&gt;

&lt;img src=&quot;http://rollerweblogger.org/roller/mediaresource/26e3fa3f-a271-4d98-a6a8-356b02610c4d&quot; alt=&quot;RDFa Logo&quot; align=&quot;right&quot;&gt;

&lt;p&gt;&lt;a href=&quot;http://www.w3.org/2010/02/rdfa/&quot;&gt;RDFa&lt;/a&gt; is a W3C recommendation, a specification that defines ways to embed RDF data in HTML and XHTML. Like HTML Microdata, RDFa adds new attributes to HTML to enable this. Let&#146;s look at an example from the &lt;a href=&quot;http://en.wikipedia.org/wiki/RDFa&quot;&gt;Wikipedia page on RDFa&lt;/a&gt;, which uses two of these attributes &lt;b&gt;about&lt;/b&gt; and &lt;b&gt;property&lt;/b&gt;:&lt;/p&gt;

&lt;pre&gt;
 
   &amp;lt;div xmlns:dc=&amp;quot;http://purl.org/dc/elements/1.1/&amp;quot;
     about=&amp;quot;http://www.example.com/books/wikinomics&amp;quot;&amp;gt;
     &amp;lt;span property=&amp;quot;dc:title&amp;quot;&amp;gt;Wikinomics&amp;lt;/span&amp;gt;
     &amp;lt;span property=&amp;quot;dc:creator&amp;quot;&amp;gt;Don Tapscott&amp;lt;/span&amp;gt;
     &amp;lt;span property=&amp;quot;dc:date&amp;quot;&amp;gt;2006-10-01&amp;lt;/span&amp;gt;
   &amp;lt;/div&amp;gt;

&lt;/pre&gt;

&lt;p&gt;The above example embeds some property values about the book Wikinomics, which is identified by URL http://www.example.com/books/wikinomics. The example provides a title, creator and date values about that resource, and it doesn&#146;t say what type of resource exists at the URL, but it could.&lt;/p&gt;

&lt;p&gt;The advantage of the RDFa approach is that it ties in with the growing RDF / Linked Data movement, and the huge number of vocabularies from almost every field of endeavor. RDFa has some momentum and has been adopted by Facebook in its &lt;a href=&quot;http://ogp.me/&quot;&gt;OpenGraph Protocol&lt;/a&gt; and &lt;a href=&quot;http://www.readwriteweb.com/archives/w3c_pleased_with_semantic_web_adoption.php&quot;&gt;Best Buy&lt;/a&gt; for exposing catalog data in standard ways. However, HTML Microdata can also be used with RDF, so RDFa is not the only way to go if you favor Linked Data.&lt;/p&gt;

&lt;h4&gt;Wrapping up&lt;/h4&gt;

&lt;p&gt;We&amp;#39;ve talked about three different ways to implement Embedded Properties in HTML, so which one do you choose? It&amp;#39;s not to me whether one of these techniques will dominate. Google is hedging its bet, so to speak, by indexing all three types of data. If you don&amp;#39;t already have a favorite, one way to choose is to look at what others in your community, company or &amp;quot;industry vertical&amp;quot; are doing. The &lt;a href=&quot;http://en.wikipedia.org/wiki/Network_effect&quot;&gt;network effect&lt;/a&gt; applies here, so if one technique is already favored amongst web application or sites in your space, then go with that.&lt;/p&gt;

&lt;p&gt;Next up: Resource Preview&lt;/p&gt;
</description>  </item>
  <item>
    <guid isPermaLink="true">https://rollerweblogger.org/roller/entry/wip_common_navigation</guid>
    <title>WIP: Common Navigation</title>
    <dc:creator>Dave Johnson</dc:creator>
    <link>https://rollerweblogger.org/roller/entry/wip_common_navigation</link>
    <pubDate>Sun, 27 Mar 2011 10:08:44 +0000</pubDate>
    <category>Web Development</category>
    <category>asf</category>
    <category>jazz</category>
    <category>lotusconnections</category>
    <category>patterns</category>
    <category>ux</category>
    <category>wip</category>
<atom:summary type="html">&lt;p style=&quot;font-style:italic;&quot;&gt;
This is the second in my series of Web Integration Patterns. Check out the intro at this URL &lt;a href=&quot;http://rollerweblogger.org/roller/entry/web_integration_patterns&quot;&gt;http://rollerweblogger.org/roller/entry/web_integration_patterns&lt;/a&gt;&lt;/p&gt;

&lt;p style=&quot;font-weight:bold;&quot;&gt;
Synopsis&lt;/p&gt;

&lt;p&gt;Make separate web sites and applications appear to be one by using common user interface elements for navigation.&lt;/p&gt;
</atom:summary><description>&lt;p style=&quot;font-style:italic;&quot;&gt;
This is the second in my series of Web Integration Patterns. Check out the intro at this URL &lt;a href=&quot;http://rollerweblogger.org/roller/entry/web_integration_patterns&quot;&gt;http://rollerweblogger.org/roller/entry/web_integration_patterns&lt;/a&gt;&lt;/p&gt;

&lt;p style=&quot;font-weight:bold;&quot;&gt;Synopsis&lt;/p&gt;

&lt;p&gt;Make separate web sites and applications appear to be one by using common user interface elements for navigation.&lt;/p&gt;

&lt;p style=&quot;font-weight:bold;&quot;&gt;
Motivations&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Provide easy navigation between integrated web sites &amp;amp; applications.&lt;/li&gt;
&lt;li&gt;Make separate web sites appear to be one and parts of the same overall user interface.&lt;/li&gt;
&lt;/ul&gt;

&lt;p style=&quot;font-weight:bold;&quot;&gt;
Related patterns&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://rollerweblogger.org/roller/entry/wip_links&quot;&gt;Links&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This pattern is an extension of the Links pattern. The idea is to use links combined with common user interface (UI) elements, as a way to provide navigation between integrated sites and to make the separate sites appear to be parts of a whole application. This pattern is usually implemented via a banner with links, a tabs or some other type of menu component.&lt;/p&gt;

&lt;p&gt;To make this work, somebody has to create the common navigation, give it an attractive design, decide which web sites or applications are included in the navigation. Consequently, this pattern works well for a set of web sites owned by the same organization, or a suite of packaged web applications.&lt;/p&gt;

&lt;h3&gt;Pros and Cons&lt;/h3&gt;

&lt;p&gt;The advantages of Common Navigation are that it works, it does make separate web sites seem to be part of one integrated whole and it&amp;#39;s relatively easy to implement. One disadvantage of this approach is that the Common Navigation elements can either conflict with, in a visual sense, or distract from the web sites themselves. But if you&amp;#39;re selling a suite of web applications, you&amp;#39;ve got control of whole design and you can solve this problem.&lt;/p&gt;

&lt;h3&gt;Examples&lt;/h3&gt;

&lt;p&gt;Here are some examples of Common Navigation that I see almost everyday. The first is Google.&lt;/p&gt;

&lt;p style=&quot;font-weight:bold;&quot;&gt;Common Navigation in Google web applications&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://gmail.com&quot;&gt;Google Mail&lt;/a&gt;, Calendar and other Google apps all share a Common Navigation bar across the top of the page. Google decides which apps appear in the menu, and the tech blogs whine whenever an item is moved or removed from the line-up. This is  a pretty shallow integration: just links to applications and no more.&lt;/p&gt;

&lt;img src=&quot;http://rollerweblogger.org/roller/mediaresource/50121a6f-4e8a-43a6-a13a-b01e11a1ca6c&quot;&gt;

&lt;p&gt;Now, let&amp;#39;s see a deeper example.&lt;/p&gt;

&lt;p style=&quot;font-weight:bold;&quot;&gt;Common Navigation in IBM Lotus Connections&lt;/p&gt;

&lt;p&gt;IBM &lt;a href=&quot;http://www.ibm.com/software/lotus/products/connections/&quot;&gt;Lotus Connections&lt;/a&gt; is a suite of social software applications including social networking, blogs, wiki, forums, file sharing and etc. As you can see below, Common Navigation is used to provide links, not just to applications, but into specific parts of applications. For example, the Latest Entries page in the Blogs app, and the Wikis that I own vs. Public Wikis.&lt;/p&gt;

&lt;img src=&quot;http://rollerweblogger.org/roller/mediaresource/6284aed1-5625-4ae3-b387-b5e7ad5ba47d&quot;&gt;

&lt;p&gt;Next, another suite example.&lt;/p&gt;

&lt;p style=&quot;font-weight:bold;&quot;&gt;Common Navigation in IBM Rational Team Concert&lt;/p&gt;

&lt;p&gt;IBM Rational&amp;#39;s Jazz-based products use Common Navigation, but with a project-orientation, showing a user&amp;#39;s project&amp;#39;s within each application. You can see this below in &lt;a href=&quot;http://jazz.net/projects/rational-team-concert/&quot;&gt;Rational Team Concert&lt;/a&gt;. A development project spans different applications and may have requirements managed by one web application, defects tracked by another, test cases managed by a third and so on. Each user sees the right menu for their projects.&lt;/p&gt;

&lt;img src=&quot;http://rollerweblogger.org/roller/mediaresource/79dbc845-bfab-42a7-80b5-72f449394072&quot;&gt;

&lt;p&gt;Next, an example that&amp;#39;s not a suite of web applications.&lt;/p&gt;

&lt;p style=&quot;font-weight:bold;&quot;&gt;Common Navigation in StumleUpon&lt;/p&gt;

&lt;p&gt;Another example is &lt;a href=&quot;http://www.stumbleupon.com/&quot;&gt;StumbleUpon&lt;/a&gt;. When you use StumbleUpon, you see the banner at the top of every page. You press the Stumble! button and a you see a randomly selected web page from anywhere on the web, or from some specific category of web site, and you still see the StumbleUpon banner. The StumbleUpon banner makes the whole web seem like one big site, deigned for &amp;quot;stumbling&amp;quot; around and sharing the things you find with friends.&lt;/p&gt;

&lt;img src=&quot;http://rollerweblogger.org/roller/mediaresource/8a8b1e37-75e9-44fe-a1d4-494bdd2298e1&quot;&gt;

&lt;h3&gt;Wrapping up&lt;/h3&gt;

&lt;p&gt;I wasn&amp;#39;t sure that Common Navigation really deserved its own pattern, as it&amp;#39;s really just a simple and obvious application of the Links pattern, but I think this works. As always, feedback is welcome. What did I get wrong? What did I leave out?&lt;/p&gt;

&lt;p&gt;Next up: Web Annotations.&lt;/p&gt;
</description>  </item>
  <item>
    <guid isPermaLink="true">https://rollerweblogger.org/roller/entry/wip_links</guid>
    <title>WIP: Links</title>
    <dc:creator>Dave Johnson</dc:creator>
    <link>https://rollerweblogger.org/roller/entry/wip_links</link>
    <pubDate>Mon, 21 Mar 2011 06:49:23 +0000</pubDate>
    <category>Web Development</category>
    <category>atompub</category>
    <category>html</category>
    <category>linkeddata</category>
    <category>links</category>
    <category>rdf</category>
    <category>wip</category>
<atom:summary type="html">&lt;p style=&quot;font-style:italic;&quot;&gt;This is the first in my series of Web Integration Patterns. Check out the intro at this URL &lt;a href=&quot;http://rollerweblogger.org/roller/entry/web_integration_patterns&quot;&gt;http://rollerweblogger.org/roller/entry/web_integration_patterns&lt;/a&gt;&lt;/p&gt;

&lt;p style=&quot;font-weight:bold;&quot;&gt;Synopsis&lt;/p&gt;
&lt;p&gt;Use links as a way to integrate web sites &amp;amp; applications via navigation and relationships between resources.&lt;/p&gt;</atom:summary><description>&lt;p style=&quot;font-style:italic;&quot;&gt;This is the first in my series of Web Integration Patterns. Check out the intro at this URL &lt;a href=&quot;http://rollerweblogger.org/roller/entry/web_integration_patterns&quot;&gt;http://rollerweblogger.org/roller/entry/web_integration_patterns&lt;/a&gt;&lt;/p&gt;

&lt;p style=&quot;font-weight:bold;&quot;&gt;Synopsis&lt;/p&gt;
&lt;p&gt;Use links as a way to integrate web sites &amp;amp; applications via navigation and relationships between resources.&lt;/p&gt;

&lt;p style=&quot;font-weight:bold;&quot;&gt;Motivations&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Provide navigation between integrated web sites &amp;amp; applications&lt;/li&gt;
&lt;li&gt;Create meaningful relationships between web resources&lt;/li&gt;
&lt;/ul&gt;

&lt;p style=&quot;font-weight:bold;&quot;&gt;Related patterns&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://rollerweblogger.org/roller/entry/wip_common_navigation&quot;&gt;Common Navigation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://rollerweblogger.org/roller/entry/wip_embedded_properties_in_html&quot;&gt;Embedded Properties in HTML&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://rollerweblogger.org/roller/entry/wip_resource_preview&quot;&gt;Resource Preview&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Delegated Selection &amp;amp; Creation&lt;/li&gt;
&lt;li&gt;Linked Data &amp; REST&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The &lt;a href=&quot;http://en.wikipedia.org/wiki/World_Wide_Web&quot;&gt;web&lt;/a&gt; is the web and &lt;a href=&quot;http://en.wikipedia.org/wiki/Hypertext&quot;&gt;hypertext&lt;/a&gt; is hyper because of links. Links allow for the most deep and also the most shallow forms of integration. Links enable navigation and with some discipline, links can also express relationships between resources. There are a variety of ways to express links; the standard and most popular way is to use HTML, but there are others and I&#146;ll cover them below.&lt;/p&gt;

&lt;h4&gt;Links enable navigation&lt;/h4&gt;

&lt;p&gt;With links, you can provide navigation between web applications at the application, or the feature level. One example is providing a link from the blog application of a social software suite to the wiki, forums and other component applications. Another is providing a link from one application to one specific part or feature of another application. This type of linking is easy to implement but fairly shallow. It&#146;s convenience and not much more.&lt;/p&gt;

&lt;h4&gt;Links can express relationships&lt;/h4&gt;

&lt;p&gt;What&#146;s more useful and powerful, is using links to create meaningful relationships between the resources provided by web applications. For example, there&amp;#39;s obvious value linking a defect in a bug tracking system to the source code changes that fixed the bug in a source code management system. Or, you might link a Requirement resource to the Work-Item resources that implement it. By the way, those example are drawn from the &lt;a href=&quot;http://open-services.net/&quot;&gt;OSLC specs&lt;/a&gt; for &lt;a href=&quot;http://en.wikipedia.org/wiki/Application_lifecycle_management&quot;&gt;ALM&lt;/a&gt; / &lt;a href=&quot;http://en.wikipedia.org/wiki/Product_lifecycle_management&quot;&gt;PLM&lt;/a&gt; integration.&lt;/p&gt;

&lt;p&gt;If you want to use links to establish relationships, then you do have to have some discipline about the URLs you offer and the URLs you link to. You have to treat links with the same rigor and respect you&#146;d give primary and foreign keys in a relational database. For example, if you make a resource available in different formats, and each at a different URL, one that ends in &#147;.html&#148; and one with &#147;.xml&#148; and one with &#147;.json&#148; then you&#146;ve got three URLs that refer same resource. In this case, it&#146;s better to use Content Negotiation so you can offer one URL that others can use to link to the resource. &lt;/p&gt;

&lt;p&gt;One way to get yourself some link discipline is to adopt &lt;a href=&quot;http://www.w3.org/DesignIssues/LinkedData.html&quot;&gt;Linked Data&lt;/a&gt; and the &lt;a href=&quot;http://www.w3.org/RDF/&quot;&gt;RDF&lt;/a&gt; data model, which &#148;extends the linking structure of the Web to use URIs to name the relationship between things as well as the two ends of the link.&#148; See also the Web Annotations and Linked Data &amp;amp; REST pattern.&lt;/p&gt;

&lt;h4&gt;Links can be expressed in standard formats&lt;/h4&gt;

&lt;p&gt;The standard way to represent links on the web is through HTML and in HTML, links are expressed in a variety of ways, via anchor tags, via image tags, the link tag and others. There are other standard ways to express links, but none as popular as HTML. &lt;/p&gt;

&lt;p style=&quot;font-weight:bold;&quot;&gt;HTML&lt;/p&gt;

&lt;p&gt;In HTML, links can be expressed via the &lt;code&gt;&lt;a href=&quot;http://www.whatwg.org/specs/web-apps/current-work/#the-a-element&quot;&gt;&amp;lt;a&amp;gt;&lt;/a&gt;&lt;/code&gt; element, for expressing a hyperlink in text, and the &lt;code&gt;&lt;a href=&quot;http://www.whatwg.org/specs/web-apps/current-work/#the-link-element&quot;&gt;&amp;lt;link&amp;gt;&lt;/a&gt;&lt;/code&gt; element, for expressing a link to a resource associated with the page.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;&amp;lt;a&amp;gt;&lt;/code&gt; and &lt;code&gt;&amp;lt;link&amp;gt;&lt;/code&gt; links can specify not only the URL of the link but also the relationship type of the link, as well as content-type and language for the resource that lies at the other end of the link. For example, a link type of &lt;code&gt;rel=&#148;next&#148;&lt;/code&gt; indicates that a link points to the next page in a series of pages, or multi-page article. A link type of &lt;code&gt;rel=&#148;stylesheet&#148;&lt;/code&gt; indicates that the link is to style-sheet to be applied to the current page. There are a standard set of &lt;a href=&quot;http://www.whatwg.org/specs/web-apps/current-work/multipage/links.html#linkTypes&quot;&gt;link relationship types in the HTML spec&lt;/a&gt;. Here&amp;#39;s an example from this very blog page, the link to this blogs Atom feed:&lt;/p&gt;

&lt;pre&gt;


&amp;lt;link rel=&amp;quot;alternate&amp;quot; type=&amp;quot;application/atom+xml&amp;quot; title=&amp;quot;Recent Entries (Atom)&amp;quot;     
   href=&amp;quot;http://rollerweblogger.org/roller/feed/entries/atom&amp;quot; /&amp;gt; 


&lt;/pre&gt;

&lt;p style=&quot;font-weight:bold;&quot;&gt;Atom&lt;/p&gt;

&lt;p&gt;The Atom Syndication Format defines a &lt;code&gt;&lt;a href=&quot;http://tools.ietf.org/html/rfc4287#page-21&quot;&gt;&amp;lt;link&amp;gt;&lt;/a&gt;&lt;/code&gt; element, modeled on the one in HTML. Atom adds a length attribute, the size in bytes of the resource at the other end of the link. Atom defines some new links types, alternate, related, self and enclosure. Atom also allows new links to be added and a Atom &lt;a href=&quot;http://www.iana.org/assignments/link-relations/link-relations.xml&quot;&gt;link-type registry&lt;/a&gt; is maintained at IANA.org.  Here&#146;s an example link from the Atom comments feed for this blog:&lt;/p&gt;

&lt;pre&gt;


&amp;lt;link rel=&amp;quot;alternate&amp;quot; type=&amp;quot;text/html&amp;quot; href=
&amp;quot;http://rollerweblogger.org/roller/entry/apache_roller_5_0_rc3#comment-12941523&amp;quot; /&amp;gt;


&lt;/pre&gt;

&lt;p style=&quot;font-weight:bold;&quot;&gt;RDF&lt;/p&gt;

&lt;p&gt;Another standard way to express links is RDF, using any of the RDF serializations: RDF/XML, Turtle, N3 and soon, there will be a &lt;a href=&quot;http://www.w3.org/QA/2010/12/new_rdf_working_group_rdfjson.html&quot;&gt;W3C standard for RDF/JSON&lt;/a&gt;. Yes, there will be a standard way to express links in JSON and that&amp;#39;s good news. For now, we&amp;#39;re stuck with RDF/XML. In RDF/XML a link is expressed via the &lt;code&gt;rdf:resource&lt;/code&gt; attribute, so for example a link from a Requirement to the user that created the requirement might look like this:&lt;/p&gt;

&lt;pre&gt;


&amp;lt;dc:creator rdf:resource=&amp;quot;https://localhost:9443/user/676&amp;quot; /&amp;gt;


&lt;/pre&gt;

&lt;p&gt;&lt;a href=&quot;http://www.w3.org/RDF/&quot;&gt;RDF&lt;/a&gt; (&lt;a href=&quot;http://en.wikipedia.org/wiki/Resource_Description_Framework&quot;&gt;Wikipedia page&lt;/a&gt;) goes way beyond the couple dozen link attributes and relationship types provided by HTML and Atom. RDF provides ways to specify property values about any linked resource, and property values of each link.  RDF also provides ways to define &lt;a href=&quot;http://www.w3.org/TR/rdf-concepts/&quot;&gt;vocabularies&lt;/a&gt; of properties.&lt;/p&gt;

&lt;h4&gt;Wrapping up &lt;/h4&gt;

&lt;p&gt;It&amp;#39;s time to wrap-up. For better or worse, I&#146;ve written more than I expected to write and I&#146;m nowhere near done with the topic of links. I hope I&#146;ve covered the important parts. Comments are open so please correct me and make suggestions if you got some. This is the first pattern that I&#146;ve written up, so I&#146;m also interested in comments about the format, level of abstraction, value, etc. as well. &lt;/p&gt;

&lt;p&gt;Next up: Common Navigation.&lt;/p&gt;
</description>  </item>
  <item>
    <guid isPermaLink="true">https://rollerweblogger.org/roller/entry/web_integration_patterns</guid>
    <title>Web Integration Patterns</title>
    <dc:creator>Dave Johnson</dc:creator>
    <link>https://rollerweblogger.org/roller/entry/web_integration_patterns</link>
    <pubDate>Tue, 15 Mar 2011 09:30:40 +0000</pubDate>
    <category>Web Development</category>
    <category>asf</category>
    <category>patterns</category>
    <category>wip</category>
<atom:summary type="html">&lt;p&gt;In my &lt;a href=&quot;http://rollerweblogger.org/roller/entry/more_than_bloggy&quot;&gt;previous post&lt;/a&gt;, I promised to write a blog series on Web Integration Patterns. This post explains the concept and a bit about how I plan to write about it.&lt;/p&gt;

&lt;p&gt;What I&#146;m calling Web Integration Patterns are techniques for integrating software systems, web applications and web sites using the common technologies of the web. These patterns build on HTTP, HTML, JavaScript and sometimes JSON, RDF and XML to provide ways to integrate software systems and include both programmatic approaches and user interface integrations.&lt;/p&gt;</atom:summary><description>&lt;p&gt;In my &lt;a href=&quot;http://rollerweblogger.org/roller/entry/more_than_bloggy&quot;&gt;previous post&lt;/a&gt;, I promised to write a blog series on Web Integration Patterns. This post explains the concept and a bit about how I plan to write about it.&lt;/p&gt;

&lt;p&gt;What I&#146;m calling Web Integration Patterns are techniques for integrating software systems, web applications and web sites using the common technologies of the web. These patterns build on HTTP, HTML, JavaScript and sometimes JSON, RDF and XML to provide ways to integrate software systems and include both programmatic approaches and user interface integrations.&lt;/p&gt;

&lt;h4&gt;Not the same as Enterprise Integration Patterns&lt;/h4&gt;

&lt;p&gt;These patterns are different from &lt;a href=&quot;http://www.eaipatterns.com/&quot;&gt;Enterprise Integration Patterns&lt;/a&gt; (from the book of the same title). Those enterprise patterns make the most sense inside an organization where shared-databases and specifically messaging middle-wares are part of the common infrastructure. Web Integration Patterns assume only the web as common infrastructure, or at least the best of them do, and that means they can work equally as well in a controlled enterprise Intranet as they do on the big wild Internet. They can work well for a suite of web applications or a family of loosely related web sites.&lt;/p&gt;

&lt;h4&gt;Four categories of patterns covered&lt;/h4&gt;

&lt;p&gt;I plan to write about a dozen blog entries each covering one pattern, and I&#146;ll do at least one per week. I&#146;ll start with the basic patterns then introduce more advanced patterns. I&#146;ve organized the patterns into four groupings, listed below in the order that I will cover them:&lt;/p&gt;

(I&amp;#39;ll add links in below as I publish each pattern)

&lt;ul&gt;
&lt;li&gt;&lt;span style=&quot;font-weight:bold;&quot;&gt;Basic Patterns&lt;/span&gt;: fundamental patterns which are relatively easy to implement, and, mostly, possible on a website made up of static HTML pages.
&lt;ul&gt;
   &lt;li&gt;#1 &lt;a href=&quot;http://rollerweblogger.org/roller/entry/wip_links&quot;&gt;Links&lt;/a&gt;: Use links as a way to integrate web sites &amp; applications via navigation and relationships between resources.&lt;/li&gt;
   &lt;li&gt;#2 &lt;a href=&quot;http://rollerweblogger.org/roller/entry/wip_common_navigation&quot;&gt;Common Navigation&lt;/a&gt;: Make separate web sites and applications appear to be one by using common user interface elements for navigation.&lt;/li&gt;
   &lt;li&gt;#3 &lt;a href=&quot;http://rollerweblogger.org/roller/entry/wip_embedded_properties_in_html&quot;&gt;Embedded Properties in HTML&lt;/a&gt;: Enable easier integration and better search across integrated web applications and sites by using standard mechanisms (e.g. Microformats, RDFa) to embed property values in HTML pages.
   &lt;li&gt;#4 &lt;a href=&quot;http://rollerweblogger.org/roller/entry/wip_resource_preview&quot;&gt;Resource Preview&lt;/a&gt;: Enhance links shown in HTML pages so that users can hover, mouse-over, or use some other gesture, to view a preview of the resource at the other end of the link.&lt;/li&gt;
   &lt;li&gt;#5 &lt;a href=&quot;http://rollerweblogger.org/roller/entry/wip_widgets_and_gadgets&quot;&gt;Widgets and Gadgets&lt;/a&gt;: Allow other web sites and applications to integrate your site into their web pages by providing an embeddable user interface, commonly known as a Gadget or Widget&lt;/li&gt;
    &lt;li&gt;#6 &lt;a href=&quot;http://rollerweblogger.org/roller/entry/wip_feed_based_integration&quot;&gt;Feed-based Integration&lt;/a&gt; integrating web sites and applications by using standard feed formats, e.g. RSS and Atom, to convey timely information, updates, status messages, events and other information&lt;/li&gt;
&lt;/li&gt;&lt;/ul&gt;
&lt;/li&gt;

&lt;li&gt;&lt;span style=&quot;font-weight:bold;&quot;&gt;Advanced Patterns&lt;/span&gt;: more advanced patterns, which may require some server-side logic and infrastructure beyond a plain old web server.&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-weight:bold;&quot;&gt;Authentication Patterns&lt;/span&gt;: these are advanced patterns that concern authentication and authorization of users and web sites, including Single Sign On, OpenID and more.&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-weight:bold;&quot;&gt;Social Patterns&lt;/span&gt;: patterns from the world of social networking, including things like OpenSocial, Facebook apps and ActivityStreams.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Perhaps using the word &#147;patterns&#148; is a bit pretentious. I&#146;m no &lt;a href=&quot;http://en.wikipedia.org/wiki/Design_Patterns&quot;&gt;gang of four&lt;/a&gt; or even one, and I don&#146;t plan to give these patterns the comprehensive treatment examples that you&#146;d find in a patterns book. I won&#146;t be providing source code examples either. Still, I think Web Integration Patterns is the right name and format, so I&#146;m sticking with it.&lt;/p&gt;

&lt;p&gt;The first pattern that I&#146;ll cover is Links. More Later...&lt;/p&gt;</description>  </item>
  <item>
    <guid isPermaLink="true">https://rollerweblogger.org/roller/entry/more_than_bloggy</guid>
    <title>More than bloggy</title>
    <dc:creator>Dave Johnson</dc:creator>
    <link>https://rollerweblogger.org/roller/entry/more_than_bloggy</link>
    <pubDate>Mon, 7 Mar 2011 06:00:00 +0000</pubDate>
    <category>Web Development</category>
    <category>asf</category>
    <category>atom</category>
    <category>atompub</category>
    <category>rdf</category>
    <category>rss</category>
    <category>wip</category>
<atom:summary type="html">&lt;p&gt;I&#146;ve been meaning to write on this topic for a some time and to explain how I&#146;ve gone from being an advocate of RSS/Atom feeds, Atom Publishing Protocol and things bloggy to being a proponent of Linked Data (&lt;a href=&quot;http://www.readwriteweb.com/archives/linked_data_is_blooming_why_you_should_care.php&quot;&gt;video&lt;/a&gt;), Semantic Web, RDF and other things that I previously considered to be nuisances. I&amp;#39;ve also got a new topic and blog series to announce, so here goes.&lt;/p&gt;</atom:summary><description>&lt;p&gt;I&#146;ve been meaning to write on this topic for a some time and to explain how I&#146;ve gone from being an advocate of RSS/Atom feeds, Atom Publishing Protocol and things bloggy to being a proponent of Linked Data (&lt;a href=&quot;http://www.readwriteweb.com/archives/linked_data_is_blooming_why_you_should_care.php&quot;&gt;video&lt;/a&gt;), Semantic Web, RDF and other things that I previously considered to be nuisances. I&amp;#39;ve also got a new topic and blog series to announce, so here goes.&lt;/p&gt;

&lt;a href=&quot;http://rollerweblogger.org/roller/entry/tri_xml_2006_presentation&quot;&gt;&lt;img src=&quot;http://rollerweblogger.org/roller/mediaresource/563b18df-9abf-4354-9fe8-ea9fd26070bd&quot; align=&quot;right&quot; alt=&quot;screenshot of Intro to RSS/Atom presentation&quot;&gt;&lt;/a&gt;

&lt;p&gt;Once upon a time, I actually said &#147;&lt;a href=&quot;http://rollerweblogger.org/roller/entry/tri_xml_2006_presentation&quot;&gt;the web is bloggy&lt;/a&gt;&#148; in conference presentations and without shame. It sounds silly and, for a blog server developer self-serving, but it&#146;s true and it&#146;s still true to this day. So much of what we do on the web can be made more useful via feeds. That&#146;s because so many things can be usefully represented as a &lt;a href=&quot;http://www.intertwingly.net/blog/1472.html&quot;&gt;well formed log&lt;/a&gt; entry, i.e. a URL, title, date, description and a chunk of content. No matter whether your web application is Flickr, Twitter or IBM/Rational Team Concert, you can enable all sorts of interesting integrations and mashups by providing feeds.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://tools.ietf.org/html/rfc5023&quot;&gt;Atom Publishing Protocol&lt;/a&gt; (APP) applied the feed concept to web APIs, using a feed to represent a collection of entries and allowing API callers to use HTTP to create, retrieve, update and delete entries. Entries could be anything of course. In the case of Google&#146;s APP-based &lt;a href=&quot;http://code.google.com/apis/gdata/&quot;&gt;GData Protocol&lt;/a&gt;, entries are Calendar Events, Picasa Photo uploads or YouTube videos. In the case of the IBM/Lotus &lt;a href=&quot;http://publib.boulder.ibm.com/infocenter/ltscnnct/v2r0/index.jsp?topic=/com.ibm.connections.25.help/c_api_common_overview.html&quot;&gt;Connections API&lt;/a&gt;, entries are Forum Posts, Social  Network Profiles, File Uploads and more.&lt;/p&gt;

&lt;h4&gt;Feeds only get you so far&lt;/h4&gt;

&lt;p&gt;I&#146;m not going to argue that &lt;a href=&quot;http://www.techcrunchit.com/2009/05/05/rest-in-peace-rss/&quot;&gt;RSS is dead&lt;/a&gt; (or Atom) because I don&amp;#39;t believe that, but the feeds approach only gets you so far. With feeds, we agree on a small set of 
common properties, e.g. URL, title, date, description and content. Not all resources on the web have those properties and many resources have a lot more. So in some cases applying Atom means forcing things to fit into the Atom model and in some cases it means inventing new properties for Atom, something that is supported by Atom format.&lt;/p&gt;

&lt;h4&gt;APIs only get you so far&lt;/h4&gt;

&lt;p&gt;I&#146;m not going to argue that APP is dead or a &lt;a href=&quot;http://bitworking.org/news/425/atompub-is-a-failure&quot;&gt;failure&lt;/a&gt; either, but APP is an API approach and, for web integration, APIs only get you so far. It&#146;s definitely a good thing for developers when a web site or application provides an API, but if you have to integrate a set of N web sites and each has it&#146;s own API and (even if they&#146;re all based on APP) you&#146;re stuck doing N x N point-to-point integrations. APIs are not necessarily the best way, and certainly not the only way, to enable integrations on the web.&lt;/p&gt;

&lt;h4&gt;Linked Data&lt;/h4&gt;

&lt;a href=&quot;http://semanticweb.com/linked-data-an-introduction_b17148&quot;&gt;
&lt;img src=&quot;http://rollerweblogger.org/roller/mediaresource/6e1ca578-b5d4-4561-af0d-5a53409e941a&quot; align=&quot;right&quot; alt=&quot;Linked Data cloud diagram&quot;&gt;
&lt;/a&gt;

&lt;p&gt;Linked Data (&lt;a href=&quot;http://www.w3.org/DesignIssues/LinkedData.html&quot;&gt;W3C page&lt;/a&gt;) is a different approach. Instead of forcing everything to fit the blog model, Linked Data gives us a way to define common vocabularies of properties about resources on the web and, most importantly, the links between them. Linked Data enables integration by allowing sites to weave their resources into the interlinked web of data that is the web.&lt;/p&gt;

&lt;h4&gt;Next: Web Integration Patterns&lt;/h4&gt;

&lt;p&gt;These days, what&amp;#39;s important to me at work is &lt;a href=&quot;http://open-services.net&quot;&gt;integration&lt;/a&gt; and in my mind, Feeds, APIs and Linked Data are different &#147;patterns&#148; for web-based integrations. They can be used in complementary ways. Just as we have defined and cataloged &lt;a href=&quot;http://www.enterpriseintegrationpatterns.com/toc.html&quot;&gt;Enterprise Integration Patterns&lt;/a&gt;, I think it will be useful to do the same for Web Integration Patterns. I know I&amp;#39;ll learn something in the process. In my next posts, I&amp;#39;ll expand on this concept and after that, I&amp;#39;ll start cataloging, in an informal and bloggy way, the patterns that I&amp;#39;m familiar with. More later...&lt;/p&gt;
</description>  </item>
</channel>
</rss>