<?xml version="1.0" encoding="UTF-8"?>
<!-- $Id: publishing-spring08.xml 781 2008-02-28 07:44:51Z dret $ -->
<?xslidy counter-separator=":&#160;" ?>
<?xslidy counter-format="full" ?>
<?xslidy extension-file="html" ?>
<?xslidy extension-link="" ?>
<?xslidy img-path="img" ?>
<?xslidy link-author="http://dret.net/netdret/" ?>
<?xslidy link-contents="./" ?>
<?xslidy link-glossary="http://dret.net/glossary/" ?>
<?xslidy link-home="./" ?>
<?xslidy listing-class="listing" ?>
<?xslidy listing-path="src" ?>
<?xslidy outline-class="outline" ?>
<?xslidy outline-title="Outline" ?>
<?xslidy outlink-mark="a" ?>
<?xslidy outlink-style="class(outlink)" ?>
<?xslidy part-slide-count="all" ?>
<?xslidy part-slide-text=" [*]" ?>
<?xslidy layout="ischool" ?>
<?xslidy xslidy-prefix="xslidy" ?>
<xslidy xmlns="http://dret.net/xmlns/xslidy/1" xmlns:xslidy="http://dret.net/xmlns/xslidy/1">
    <title short="Web-Based Publishing"><a href="./">Web-Based Publishing</a> (INFO 290-19)</title>
    <author short="E. Wilde"><a href="http://dret.net/netdret/" title="dret.net">Erik Wilde</a></author>
    <affiliation short="UC Berkeley ISchool"><a href="http://www.berkeley.edu/" title="University of California, Berkeley">UC Berkeley</a> <a href="http://ischool.berkeley.edu/" title="ISchool">School of Information</a></affiliation>
    <date short="Spring 2008">Spring Semester 2008</date>
    <copyright>2008 Erik Wilde</copyright>
	<layout>
		<slide class="cover" cover="slidycover">
			<h1><title/></h1>
			<h3><title level="xslidy"/></h3>
			<h5><author/>, <affiliation/><br/><date/></h5>
			<a rel="license" title="view full text of license" href="http://creativecommons.org/licenses/by-nc-sa/2.5/" class="bottom-align" style="margin-bottom : 2%">
				<table>
					<tr>
						<td align="left">
							<img alt="Creative Commons License" border="0" src="somerights20.png" height="31" width="88"/>
						</td>
						<td style="font-size : small ; line-height : 120% ; " valign="middle" align="left">
							<p>This work is licensed under a Creative Commons<br/>Attribution-NonCommercial-ShareAlike 2.5 License.</p>
						</td>
					</tr>
				</table>
			</a>
		</slide>
		<class>
        </class>
	</layout>
	<style type="text/css" src="xslidy-spring08.css"/>
	<index name="index.html">
		<category element="xml" class="xml"/>
		<category element="elem" class="xml elem"/>
		<category element="cssp" class="css"/>
		<category element="csss" class="css"/>
		<category element="css" class="css"/>
		<category element="xpathf" class="xpath"/>
		<category element="xpath" class="xpath"/>
		<category element="xslte" class="xslt elem"/>
		<category element="xslta" class="xslt"/>
		<category element="xslt" class="xslt"/>
		<category element="xq" class="xq"/>
		<category element="xsde" class="xsd elem"/>
		<category element="xsda" class="xsd"/>
		<category element="xsda" class="xsd"/>
		<category element="xsd" class="xsd"/>
		<category element="xlink" class="xlink"/>
		<category element="mime" class="mime"/>
		<category element="http" class="http"/>
		<category element="atom" class="atom"/>
	</index>
	<toc name="toc.html">
		<table rules="all" cellspacing="0" cellpadding="5" width="100%">
			<thead>
				<tr>
					<th>Date</th>
					<th>Subject</th>
					<th>Slides</th>
					<th>Resources</th>
				</tr>
			</thead>
			<tbody>
				<xslidy:for-each-presentation>
					<tr>
						<td align="right" valign="top"><xslidy:date/></td>
						<td valign="top"><b><xslidy:title/><span class="toggle">:</span></b> <span class="toggle"><span class="abstract"><xslidy:toc class="abstract"/></span></span></td>
						<td align="center"><xslidy:presentation-link title="Lecture Slides"><xslidy:title form="short"/></xslidy:presentation-link> <xslidy:slides>(*&#160;Slides)</xslidy:slides></td>
						<td><xslidy:toc class="resources"/></td>
					</tr>
				</xslidy:for-each-presentation>
			</tbody>
		</table>
	</toc>
    <toc name="290-19.xml">
		<course xmlns="urn:publicid:IDN+www.sims.berkeley.edu:schema:syllabusapp:syllabus:200404:en" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="urn:publicid:IDN+www.sims.berkeley.edu:schema:syllabusapp:syllabus:200404:en syllabus_schema.xsd">
			<generalInformation>
				<title>Web-Based Publishing</title>
				<units>3</units>
				<website>http://dret.net/lectures/publishing-spring08/</website>
				<departmentListing>
					<name>SIMS</name>
					<code>INFO</code>
					<courseNumber>290-19</courseNumber>
				</departmentListing>
				<schedule>
					<year>2008</year>
					<semester>S</semester>
					<startDate>2008-01-24</startDate>
					<endDate>2008-05-08</endDate>
				</schedule>
				<teachingTeam>
					<teacher>
						<typeCode>Professor</typeCode>
						<initials>EW</initials>
						<name>
							<givenName>Erik</givenName>
							<familyName>Wilde</familyName>
						</name>
						<contact>
							<email>dret@berkeley.edu</email>
							<phone>
								<type>Office</type>
								<number>+1-510-6432253</number>
							</phone>
							<website>http://dret.net/netdret/</website>
						</contact>
					</teacher>
				</teachingTeam>
				<gradingOptionCode>LG</gradingOptionCode>
				<description>
					<p>Web-Based Publishing refers to making available any information that is made accessible through a <em>Web-Based Service</em>. Thus, Web-based publishing refers to any publishing process that is based on Web technologies, but not necessarily as a delivery technology. Web-based publishing can also use non-Web technologies as a delivery platform, for example the new proprietary <em>Rich Internet Applications (RIA)</em> platforms <em>Adobe Integrated Runtime (AIR)</em> or <em>Microsoft Silverlight</em>, or mobile platforms such as <em>Android</em> or <em>OpenMoko</em>. There are two main differences between information systems built around Web-based publishing, and other approaches. The first difference is that the standards used for communicating between the delivery platform and the back end are open and widely deployed technologies, which makes it easy to find and use tools, developers, and reusable components. The second difference is that because of the flexibility of the involved technologies, such a scenario is ideally suited to implement easily adaptable multi-channel publishing platforms, which can aggregate and publish information from and to a large variety of different information sources and consumers.</p>
				</description>
			</generalInformation>
			<syllabus>
				<instructionFormatCode>LEC</instructionFormatCode>
				<dayPattern>
					<dayTime>
						<dayOfWeek>Th</dayOfWeek>
						<timeSpan>
							<startTime>08:30:00</startTime>
							<endTime>10:30:00</endTime>
						</timeSpan>
					</dayTime>
				</dayPattern>
				<location>110 South Hall</location>
				<classes>
					<xslidy:for-each-presentation>
						<class>
							<title><xslidy:title/></title>
							<date><xslidy:date form="short"/></date>
							<xslidy:if-toc class="abstract"><description><xslidy:toc class="abstract"/></description></xslidy:if-toc>
							<resourceList>
								<resource>
									<title>Lecture Notes</title>
									<url><xslidy:presentation-link element="" prefix="http://dret.net/lectures/publishing-spring07/"/></url>
								</resource>
								<xslidy:if-toc class="resources">
									<resource>
										<title>Additional Resources:</title>
										<comment><xslidy:toc class="resources"/></comment>
									</resource>
								</xslidy:if-toc>
							</resourceList>
						</class>
					</xslidy:for-each-presentation>
				</classes>
			</syllabus>
			<updated>
				<updateDate>2008-01-01</updateDate>
				<updateBy>dret</updateBy>
			</updated>
		</course>
    </toc>
    <presentation id="intro">
        <title short="Introduction">Introduction</title>
        <date>2008-01-24</date>
        <toc class="resources"><a href="../xml-fall07/" title="XML Foundations Course Fall 2007">XML</a>&#160;·  <a href="../web-fall07/" title="Web Architecture Course Fall 2006">Web</a></toc>
        <toc class="abstract">Web-Based Publishing refers to making available any information that is made accessible through a <em><a href="../services-spring08">Web-Based Service</a></em>. Thus, Web-based publishing refers to any publishing process that is based on Web technologies, but not necessarily as a delivery technology. Web-based publishing can also use non-Web technologies as a delivery platform, for example the new proprietary <em>Rich Internet Applications (RIA)</em> platforms <em>Adobe Integrated Runtime (AIR)</em> or <em>Microsoft Silverlight</em>, or mobile platforms such as <em>Android</em> or <em>OpenMoko</em>. There are two main differences between information systems built around Web-based publishing, and other approaches. The first difference is that the standards used for communicating between the delivery platform and the back end are open and widely deployed technologies, which makes it easy to find and use tools, developers, and reusable components. The second difference is that because of the flexibility of the involved technologies, such a scenario is ideally suited to implement easily adaptable multi-channel publishing platforms, which can aggregate and publish information from and to a large variety of different information sources and consumers.</toc>
		<slide>
			<title>Abstract</title>
			<p class="abstract"><toc class="abstract"/></p>
		</slide>
		<part>
			<title>Course Format</title>
			<slide>
				<title>Projects, Projects, Projects</title>
				<ul>
					<li>Projects in the fields <link href="field-location"/>, <link href="field-linked-data"/>, and <link href="field-feed-feeds"/></li>
					<li>Regular meeting time reserved for project work</li>
					<ul>
						<li>presentations about related work (research, projects, products)</li>
						<li>presentations about project plans and issues</li>
						<li>discussion of project plans and issues</li>
					</ul>
					<li>One fixed meeting slot per group per week</li>
					<ul>
						<li>discussion of project plans and issues</li>
						<li>assignment of presentations</li>
					</ul>
					<li>Overall workload should be 6-8h per week</li>
				</ul>
			</slide>
			<slide>
				<title>Course Results</title>
				<ul>
					<li>Final <link href="presentations"/></li>
					<ul>
						<li>presentations which briefly present the project results</li>
						<li>reports which describe the project and its results in greater detail</li>
					</ul>
					<li>Grade is based on:</li>
					<ul>
						<li>30% presentations during the semester</li>
						<li>30% final project presentation &amp; report</li>
						<li>40% project results</li>
					</ul>
				</ul>
			</slide>
			<slide id="field-location">
				<title>Location</title>
				<ul>
					<li><em>Place Markup Language (PlaceML)</em> for describing locations</li>
					<ul>
						<li>places can be described geographically (coordinates)</li>
						<li>places can be described with metadata (descriptions)</li>
						<li>place descriptions can be structured</li>
					</ul>
					<li>What applications can use place descriptions, and how?</li>
					<ul>
						<li>creating, editing, managing, and sharing location information</li>
						<li>connecting location-enabled devices with location descriptions</li>
					</ul>
					<li>In many cases location information can be mashed up</li>
					<ul>
						<li>combined with other information such as map data from map services</li>
						<li>integrated into other environments (<em>Facebook</em> or <em>OpenSocial</em>)</li>
					</ul>
				</ul>
			</slide>
			<slide id="field-linked-data">
				<title>Linked Data</title>
				<ul>
					<li>Data linking on the Web is rudimentary</li>
					<ul>
						<li>HTML has some primitive support in the document head</li>
						<li>microformats describe special-purpose links (e.g., to a license)</li>
					</ul>
					<li>The <em>Semantic Web</em> has stifled the development of the <q>plain Web</q></li>
					<ul>
						<li>anything that can be done on the Web can be done on the Semantic Web</li>
						<li>adoption is still non-existent outside of closed communities</li>
					</ul>
					<li>Links are good, following links is good</li>
					<ul>
						<li><em>XLink</em> is the Web's generalized linking language</li>
						<li>XLink is badly designed, underspecified, and unpopular</li>
						<li>a new link format must be accompanied by an access protocol</li>
					</ul>
				</ul>
			</slide>
			<slide id="field-feed-feeds">
				<title>Feed Technology</title>
				<ul>
					<li>Feeds are widely used to publish and reuse itemized information</li>
					<li>RSS and Atom provide formats for publishing feeds</li>
					<li>AtomPub is a format for providing write access to a feed</li>
					<li>Managing feeds currently is a manual process</li>
					<ul>
						<li>server configuration and not accessible through an API</li>
					</ul>
					<li>Feed descriptions are information items and can be put into a feed</li>
					<li><em>Feed Feeds</em> is feed metadata managed using feeds</li>
					<li>Standardized formats support distribution and sharing of information</li>
					<ol>
						<li>a <em>feed feed server</em> manages feed descriptions and supports AtomPub interactions</li>
						<li><em>feed publishers</em> can manage and publish their feed through a publisher interface</li>
						<li><em>feed consumers</em> can manage and share their feed subscriptions</li>
					</ol>
				</ul>
			</slide>
		</part>
        <part id="app-architecture">
			<title>Application Architecture</title>
			<slide>
				<title>Resources, REST, UI</title>
				<img style="width : 88% ; margin : 4% ; " src="web-app-tiers.png" title="Web Application Tiers"/>
			</slide>
			<slide>
				<title>Multiple UIs</title>
				<img style="width : 88% ; margin : 4% ; " src="web-app-multiple-ui.png" title="Web Application with Multiple UIs"/>
			</slide>
			<slide>
				<title>Mash-Ups</title>
				<img style="width : 88% ; margin : 4% ; " src="web-app-mashup.png" title="Mash-Up"/>
			</slide>
			<slide>
				<title>Mash-Apps</title>
				<img style="width : 88% ; margin : 4% ; " src="web-app-mashapp.png" title="Mash-App"/>
			</slide>
			<slide>
				<title>Web-Based Application</title>
				<ul>
					<li>Applications should ship data, not code</li>
					<ul>
						<li>REST-based back-ends can support any kind of interface</li>
						<li>shipping code is very client-specific and should be avoided</li>
					</ul>
					<li>Applications should focus on the service perspective</li>
					<ul>
						<li>how to deliver a service that can be easily used by others</li>
						<li>how to describe the service's data model for potential users</li>
						<li>how to control access and authenticate service users</li>
					</ul>
					<li>If possible, other services should be integrated</li>
					<ul>
						<li>if you need authentication, why not use <a href="http://openid.net/">OpenID</a>?</li>
						<li>if you need social networking, why not use <a href="http://code.google.com/apis/opensocial/">OpenSocial</a>?</li>
						<li>if you need location, why not use <a href="http://fireeagle.research.yahoo.com/">Fireeagle</a>?</li>
					</ul>
				</ul>
			</slide>
			<slide>
				<title>Rich Internet Application (RIA)</title>
				<ul>
					<li><em>Rich Internet Applications</em> are based on the idea of a smarter client</li>
					<ul>
						<li>Ajax applications ship JavaScript code for modern browsers</li>
						<li>Flash applications ship ActionScript code for flash players</li>
						<li>ActiveX applications ship Windows components for IE</li>
					</ul>
					<li>RIAs should be built on top of a RESTful service</li>
					<ul>
						<li>standard services will provide XML-based interactions</li>
						<li>Ajax-specific services may provide JSON representations</li>
					</ul>
					<li>Service and RIA should be completely separated</li>
					<ul>
						<li>if required, the service can be provided as an API</li>
						<li>if required, alternative UIs (e.g., purely Web-based) can be implemented</li>
					</ul>
				</ul>
			</slide>
        </part>
		<part>
			<title>Varia</title>
			<slide>
				<title>About Me</title>
				<ul>
					<li>Computer Science at <a href="http://www.tu-berlin.de/eng/">Technical University of Berlin (TUB)</a> (88-91)</li>
					<li>Ph.D. at <a href="http://www.ethz.ch/index_EN">ETH Zürich</a> (92-97)</li>
					<li>Post-Doc at <a href="http://www.icsi.berkeley.edu/">ICSI, Berkeley</a> (97/98)</li>
					<ul>
						<li>book on <q><a href="http://dret.net/netdret/publications#wil98">Technical Foundations of the World Wide Web</a></q>
						</li>
					</ul>
					<li>Various activities back in Switzerland (98-06)</li>
					<ul>
						<li>teaching at <a href="http://www.ethz.ch/index_EN">ETH Zürich</a> and <a href="http://www.fhnw.ch/">FHNW</a></li>
						<li>working as independent consultant (training, courses, consulting)</li>
						<li>research in <a href="http://dret.net/projects/">various XML-related areas</a></li>
					</ul>
					<li>Visiting Assistant Professor at the <a href="http://ischool.berkeley.edu/">School of Information</a> (since fall 2006)</li>
					<ul>
						<li><a href="../web-fall07">Web</a> and <a href="../xml-fall07">XML</a> courses in fall 2007</li>
						<li>technical director of the <a href="http://isd.ischool.berkeley.edu/">Information and Service Design (ISD) program</a></li>
					</ul>
				</ul>
			</slide>
			<slide>
				<title>About this Course</title>
				<ul>
					<li>Course Web page: <code><a href="./">http://dret.net/lectures/publishing-spring08/</a></code></li>
					<li>Course mailing list: subscribe at <code><a href="mailto:majordomo@ischool.berkeley.edu">majordomo@ischool.berkeley.edu</a></code></li>
					<ul>
						<li>no subject (leave blank)</li>
						<li>body of message: <code>subscribe wbp</code></li>
					</ul>
					<li>Letter grade based on presentations and course project (results and presentation)</li>
				</ul>
			</slide>
			<slide>
				<title>About these Slides</title>
					<ul>
						<li>Generated from <a href="http://dret.net/projects/xslidy/">XSLidy</a> <a href="./publishing-spring08.xml">XML</a></li>
						<li>Designed for online presentation and use (lots of links!)</li>
						<ul>
							<li>for printing, use <q>a</q> (all slides), and then <q>s</q> (smaller font) a couple of times</li>
						</ul>
						<li>A good real-world example for Web-based publishing</li>
						<ul>
							<li>Slidy is useful, but there is no support for structures and hyperlinking</li>
							<li>XSLidy adds these features by adding an XSLT transformation</li>
							<li>XSLidy is useful, but there is no interface (XML editing only)</li>
						</ul>
					</ul>
			</slide>
			<slide>
				<title>Additional Resources</title>
				<ul>
					<li>My <a href="http://dret.net/glossary/">Online Glossary at <code>http://dret.net/glossary/</code></a></li>
					<ul>
						<li>suggestions, updates, corrections are very welcome (really!)</li>
						<li>another exercise in how to use XML and XSLT for information management</li>
					</ul>
					<li>My <a href="http://dret.net/biblio/">bibliography at <code>http://dret.net/biblio/</code></a></li>
					<ul>
						<li>suggestions, updates, corrections are very welcome (really!)</li>
						<li>produced by an XML-centric system for managing bibliography data</li>
					</ul>
					<li>The <a href="http://www.w3.org/"><em>World Wide Web Consortium (W3C)</em></a></li>
					<ul>
						<li>headed by <em href="http://www.w3.org/People/Berners-Lee/">Tim-Berners Lee</em>, inventor of the Web (with <a href="http://en.wikipedia.org/wiki/Robert_Cailliau">Robert Cailliau</a>)</li>
					</ul>
					<li>The <a href="http://www.ietf.org/"><em>Internet Engineering Task Force (IETF)</em></a></li>
					<ul>
						<li>mainly Internet standards, but also responsible for URIs and HTTP</li>
					</ul>
				</ul>
			</slide>
		</part>
		<part>
			<title>Conclusions</title>
			<slide>
				<title>Projects!</title>
				<ul>
					<li>Create a project description until next week</li>
					<ol>
						<li>context, goals, and non-goals of the project</li>
						<li>deliverables in one-month phases (i.e., 3 phases)</li>
						<li>your project will be graded based on these goals!</li>
					</ol>
					<li>Next week we will discuss and assign projects</li>
					<li>If you don't have a project idea, just ask me …</li>
				</ul>
			</slide>
		</part>
    </presentation>
    <presentation id="projects">
        <title>Projects</title>
        <date>2008-01-31</date>
        <toc class="abstract">This week has a short introduction to <em>Mantis</em>, the issue tracking system that will be used for the course projects. Following this brief introduction, course projects will be discussed. The two projects are the <em>Map Mapper</em> project, which looks at ways to make map service URI interoperable across various services, and the <em>Feed Feeds</em> project, which is based on the idea of providing support for managing feed metadata. Both projects have back-end and front-end issues, and this course will mostly look at the front end issues.</toc>
		<slide>
			<title>Abstract</title>
			<p class="abstract"><toc class="abstract"/></p>
		</slide>
		<part id="mantis">
			<title>Mantis</title>
			<slide>
				<title>Issue Tracking</title>
				<ul>
					<li>Often used as a <em>bug tracking system</em> for software development</li>
					<li>Issues are anything which needs resolution</li>
					<ul>
						<li>bugs in an existing implementation</li>
						<li>requests for a <em>feature</em> which should be added</li>
						<li>ideas for <em>future features</em> which should be captured</li>
					</ul>
					<li>Issue tracking is not chatting</li>
					<ul>
						<li>please do not have conversations using the system</li>
						<li>each issue and each note should have substance to it</li>
					</ul>
					<li>Try to resolve issues to the point where they can be <em>closed</em></li>
				</ul>
			</slide>
			<slide>
				<title>Mantis Structure</title>
				<ul>
					<li>Users get a login and have access to the application</li>
					<li>Each installation can have multiple <em>projects</em></li>
					<ul>
						<li>users have access to the projects which are public or open to them</li>
					</ul>
					<li>Each project has a list of <em>issues</em></li>
					<ul>
						<li>the <em>category</em> describes which part of a project an issue is for</li>
						<li>the <em>severity</em> describes how important the issue is</li>
						<li>the <em>status</em> tracks an issue through its lifecycle (until it is <em>closed</em>)</li>
					</ul>
					<li><em>Categories</em> identify well-defined parts of a project</li>
					<ul>
						<li>issues entered for a category are assigned to a default user</li>
						<li>issue assignment can be changed manually at any time</li>
					</ul>
					<li>Adding <em>notes</em> to an issue can be done in two ways</li>
					<ul>
						<li>just adding a note without changing its status</li>
						<li>changing its status and then adding the note which describes the status change</li>
					</ul>
					<li>Issues can be <em>monitored</em> to get emails about activities</li>
				</ul>
			</slide>
		</part>
		<part id="mapmapper">
			<title>Map Mapper</title>
			<slide>
				<title>Mapping Map URIs</title>
				<ul>
					<li>Map URIs are specific to some map service</li>
					<ul>
						<li>they identify a location, but the location is hidden in the URI</li>
					</ul>
					<li>Location is becoming an important concept on the Web</li>
					<ul>
						<li>most services are silos for location information</li>
						<li>technically, this is caused by a lack of location support of the Web</li>
						<li>economically, this is caused by the services' interest to serve ads</li>
						<li>ideally, location on the Web should be identified by URI: <code href="geoloc:86.507942,28.031139" title="Mt. Everest">geoloc:86.507942,28.031139</code></li>
					</ul>
					<li>Map Mapper allows users to switch between map services</li>
					<ul>
						<li>as a <em>Greasemonkey script</em> it can dynamically rewrite map URIs</li>
						<li>as a <em>Firefox add-on</em> it could add some configuration interface</li>
						<li>the add-on could also rewrite the URI of the current page (<q>map switching</q>)</li>
					</ul>
				</ul>
			</slide>
			<slide>
				<title>Map Mapper Map (Read)</title>
				<listing src="mapmap-155.xml" line="31-43"/>
			</slide>
			<slide>
				<title>Map Mapper Map (Write)</title>
				<listing src="mapmap-155.xml" line="70-85"/>
			</slide>
			<slide id="map-mapper-client">
				<title>Client-Side Code</title>
				<ul>
					<li>Implement the mapping as a JavaScript library</li>
					<ul>
						<li>should be relatively easy (regexes supported in JavaScript)</li>
						<li>currently, the processing model is only implicitly defined (but <a href="http://dret.net/mantis/view.php?id=317">that will change</a>)</li>
					</ul>
					<li>Use the JavaScript library in a Greasemonkey script</li>
					<ul>
						<li>easy testing of the library on the client side</li>
						<li>no UI but maybe configuration through <q>customized code</q></li>
					</ul>
					<li>Use the JavaScript library in a Firefox add-on</li>
					<ul>
						<li>better integration into the browser</li>
						<li>UI for service preference or choice between one or all services</li>
						<li>mapping could also be applied to the address bar (<q>map switching</q>)</li>
					</ul>
					<li>Mapping table hardcoded into the script/library or loaded dynamically?</li>
				</ul>
			</slide>
			<slide id="map-mapper-server">
				<title>Server-Side Code</title>
				<ul>
					<li>Implement the mapping of URIs as a Web-based service</li>
					<li>Part of the <a href="../services-spring08">Web-Based Services Course</a></li>
					<li><link href="map-mapper-client">Greasemonkey and Add-On</link> could also use such a service</li>
					<li>Server-side implementation has always the latest mapping table</li>
					<li>Mapped URIs could be collected</li>
					<ul>
						<li>statistics about map service usage</li>
						<li>statistics about map URI parameter usage (extract extra infos for statistics only?)</li>
					</ul>
				</ul>
			</slide>
		</part>
		<part id="feedfeeds">
			<title>Feed Feeds</title>
			<slide>
				<title>Managing Feed Metadata</title>
				<ul>
					<li>Feed usage is already substantial and rising</li>
					<li>Feeds are <q>information on demand</q></li>
					<li>Feed management on the publishing side is non-existent</li>
					<ul>
						<li>some platforms provide support, but there is no independent service</li>
					</ul>
					<li>Feed management on the consumer side happens in feed readers</li>
					<ul>
						<li>lock-in to feed reader and no sharing of feed data with others</li>
						<li>inability to easily switch between feed readers</li>
					</ul>
					<li><q>Feed Feeds</q> are <em>feeds containing feed metadata</em> (i.e., meta-feeds)</li>
					<ul>
						<li>allows reuse of existing technologies and tools for handling feeds</li>
						<li>enables easy tracking of feed information by subscribing to a meta-feed</li>
						<li>publishing of feed information can be supported through <em>AtomPub</em></li>
					</ul>
				</ul>
			</slide>
			<slide>
				<title>Feed Management</title>
				<img style="height : 75% ; margin : 4% ; " src="feed-management.png" title="Feed Management"/>
			</slide>
			<slide>
				<title>Feed Publishers</title>
				<ul>
					<li>Feed publishers often have little support for managing feed information</li>
					<ul>
						<li>if they use a single platform, there may be some support for feed management</li>
						<li>in heterogeneous scenarios, managing feed information becomes very hard</li>
					</ul>
					<li>The <em>Feed Feed Web Service</em> provides feed metadata management</li>
					<ul>
						<li>the Web service can be accessed through its Atom/AtomPub interface</li>
						<li>an additional UI allows the manual management of feeds (categorization)</li>
						<li>additional features include generating <q>views</q> (directories) of feed feeds</li>
					</ul>
					<li>Feed publishers gain better control over their feeds</li>
					<ul>
						<li>better access for their customers to find certain feeds</li>
						<li>better understanding of the dependencies of feeds (aggregates/filters)</li>
					</ul>
				</ul>
			</slide>
			<slide>
				<title>Feed Consumers</title>
				<ul>
					<li>Feed consumers use a feed reader for feed management</li>
					<ul>
						<li>feed readers are limited in capabilities and device support</li>
						<li>feed subscriptions should be managed in an open way</li>
					</ul>
					<li>Feed feeds for consumers should be like <q>del.icio.us for feeds</q></li>
					<ul>
						<li>tagging of feeds and exploring the usage of feeds by others</li>
						<li>feed-specific features allow to link the feed URI with the resource URI</li>
						<li>tag-specific research can be applied to feed-specific tag spaces</li>
					</ul>
					<li>Information be publishers and consumers can be combined</li>
					<ul>
						<li>publishers get immediate feedback about tags, subscriptions, and collateral feeds</li>
						<li>consumers get information about the publishing context of the feed</li>
					</ul>
				</ul>
			</slide>
		</part>
		<part>
			<title>Conclusions</title>
			<slide>
				<title>Design and Implementation</title>
				<ul>
					<li>The first weeks should be mainly about thinking about design</li>
					<li>Thinking about implementation informs the design</li>
					<li>Use cases make design &amp; implementation more realistic</li>
					<li>Discussions help when making design &amp; implementation decisions</li>
				</ul>
			</slide>
		</part>
	</presentation>
    <presentation id="atompub">
        <title short="AtomPub">Atom Publishing Protocol (AtomPub)</title>
        <date>2008-02-28</date>
        <toc class="resources"><a href="http://atompub.org/rfc5032.html" title="Atom Publishing Protocol (AtomPub) RFC">Spec</a>&#160;· <a href="http://dret.typepad.com/dretblog/atom-landscape.html" title="Atom Landscape Overview">Atom&#160;Landscape</a></toc>
        <toc class="abstract"><em>Atom</em> is a read-only format for publishing entries and entry metadata in a feed. The <em>Atom Publishing Protocol (AtomPub)</em> is built on top of Atom for providing a protocol for submitting new entries to feeds. AtomPub introduces the concept of a <em>collection</em>, which is the set of entries which are managed through AtomPub and can be published as an Atom feed. AtomPub clients can add new entries to a collection using HTTP interactions, and AtomPub supports entries which are based on some XML format, as well as any other type of entry (such as images).</toc>
		<slide>
			<title>Abstract</title>
			<p class="abstract"><toc class="abstract"/></p>
		</slide>
		<slide>
			<title>Content Feeds</title>
			<ul>
				<li>Early Web content was static or updated very infrequently</li>
				<ul>
					<li>there was not yet the requirement to reuse content in different contexts</li>
				</ul>
				<li>Frequently updated Web content quickly became a very common scenario</li>
				<ul>
					<li>as commercial interests took over the Web, users should have a reason to re-visit a site</li>
					<li>presenting a steady stream of new content creates the image of a live Web site</li>
				</ul>
				<li>There are two major use cases where HTML is not sufficient</li>
				<ol>
					<li>users want an efficient way to get the updated content from a site</li>
					<li>sites want to aggregate updated content from other sites and re-publish it</li>
				</ol>
				<li><a href="../services-spring08/atom">Syndication formats</a> are designed to support these two use cases</li>
				<ul>
					<li>container formats for updated items</li>
					<li>a small amount of metadata about these items for automated processing</li>
				</ul>
			</ul>
		</slide>
		<part id="atompub">
			<title>Atom Publishing Protocol</title>
			<slide>
				<title>Syndication Format Protocols</title>
				<ul>
					<li><a href="http://www.livejournal.com/developer/protocol.bml">LiveJournal</a> (very simple text-based protocol)</li>
					<ul>
						<li>text-oriented protocol encoding the message in name/value-pairs</li>
						<li>very hard to adapt to any structure more complex than sets of flat values</li>
					</ul>
					<li>Blogger (now at <a href="http://code.google.com/apis/blogger/overview.html">Google</a> after <a href="http://web.archive.org/web/20031008161432/http://weblog.siliconvalley.com/column/dangillmor/archives/000802.shtml">Google bought Pyra</a>)</li>
					<ul>
						<li>no support for titles or any other sort of entry metadata</li>
						<li>protocol from the early days of blogging before tagging became popular</li>
					</ul>
					<li><a href="http://www.xmlrpc.com/metaWeblogApi">MetaWeblog</a> (an attempt to improve Blogger)</li>
					<ul>
						<li>extends Blogger using a very bad design (RSS XML as XML-RPC structure encoded as XML)</li>
					</ul>
					<li><em>Atom Publishing Protocol (AtomPub)</em> is an attempt to provide a clean alternative</li>
					<ul>
						<li>use the same document structures for feeds and the protocol interacting with them</li>
						<li>use a REST approach to provide a simple and Web-compatible protocol</li>
						<li>add <link href="atom-service-documents"/> and <link href="atom-category-documents"/> for additional tasks</li>
					</ul>
				</ul>
			</slide>
			<slide>
				<title>RESTified Syndication</title>
				<ul>
					<li>Atom is a format for retrieving a set of entries as a feed document</li>
					<ul>
						<li>feeds often are time-based and are refreshed periodically or whenever needed</li>
						<li>feeds can use any other strategy for deciding what to publish</li>
					</ul>
					<li>Read-only access to feeds should be complemented by full access</li>
					<ul>
						<li>full access needs the <q>CUD</q> out of the <q>CRUD</q> set of operations</li>
						<li>many Web-centric technologies try to build on the Web's REST model of interaction</li>
					</ul>
					<li>AtomPub builds on Atom and adds a REST-based protocol on top of it</li>
					<ul>
						<li><http>POST</http> for creating new entries (sending the request to the collection)</li>
						<li><http>PUT</http> for updating existing entries (overwriting the existing entry)</li>
						<li><http>DELETE</http> for deleting entries from a collection</li>
					</ul>
				</ul>
			</slide>
				<slide>
					<title>AtomPub Data Model</title>
					<img src="atompub-data-model.png" style="height : 72% ; margin : 2% ; " title="AtomPub Data Model"/>
				</slide>
			<slide>
				<title>Workspaces, Collections, Resources</title>
				<ul>
					<li>AtomPub's top-level concept is a <em>workspace</em></li>
					<ul>
						<li>workspaces are used to group collections</li>
						<li>AtomPub makes no assumptions about how workspaces are managed</li>
					</ul>
					<li>AtomPub's core concept is the <em>collection</em></li>
					<ul>
						<li>collections are used for managing and organizing resources</li>
						<li>Atom feed documents are representations of collections</li>
					</ul>
					<li>Members of a collection can be <em>entry</em> and <em>media</em> resources</li>
					<ul>
						<li>entry resources represent metadata+data and are represented as Atom entries</li>
						<li>media resources can have any media type and are the data described by entries</li>
						<li>a <em>media link entry</em> is a metadata entry associated with a media resource</li>
					</ul>
				</ul>
			</slide>
			<slide>
				<title>Creating Media Resources</title>
				<pre>POST /edit/ HTTP/1.1
Host: media.example.org
Content-Type: image/png
Slug: The Beach
Content-Length: nnn

...binary data...</pre>
				<pre>HTTP/1.1 201 Created
Date: Fri, 7 Oct 2005 17:17:11 GMT
Content-Length: nnn
Content-Type: application/atom+xml;type=entry;charset="utf-8"
Location: http://example.org/media/edit/the_beach.atom

&lt;?xml version="1.0"?>
&lt;entry xmlns="http://www.w3.org/2005/Atom">
  &lt;title>The Beach&lt;/title>
  &lt;id>urn:uuid:1225c695-cfb8-4ebb-aaaa-80da344efa6a&lt;/id>
  &lt;updated>2005-10-07T17:17:08Z&lt;/updated>
  &lt;author>&lt;name>Daffy&lt;/name>&lt;/author>
  &lt;content type="image/png" src="http://media.example.org/the_beach.png"/>
  &lt;link rel="edit-media" href="http://media.example.org/edit/the_beach.png" />
  &lt;link rel="edit" href="http://example.org/media/edit/the_beach.atom" />
&lt;/entry></pre>
			</slide>
			<slide>
				<title>Protocol Summary</title>
					<table border="1" cellpadding="20" style="width : 90% ; margin : 2% ; ">
						<thead>
							<tr valign="top">
								<th>Resource</th>
								<th>HTTP Method</th>
								<th>Representation</th>
								<th>Description</th>
							</tr>
						</thead>
						<tbody>
							<tr valign="top">
								<td>Introspection</td>
								<td>
									<http>GET</http>
								</td>
								<td><link href="atom-service-documents">Atom Service Document</link></td>
								<td>Enumerates a set of collections and lists their URIs and other information about the collections</td>
							</tr>
							<tr valign="top">
								<td>Collection</td>
								<td>
									<http>GET</http>
								</td>
								<td>Atom Feed</td>
								<td>A list of member of the collection (this may be a subset of all entries in the collection)</td>
							</tr>
							<tr valign="top">
								<td>Collection</td>
								<td>
									<http>POST</http>
								</td>
								<td>Atom Entry</td>
								<td>Create a new entry in the collection</td>
							</tr>
							<tr valign="top">
								<td>Member</td>
								<td>
									<http>GET</http>
								</td>
								<td>Atom Entry</td>
								<td>Get the Atom Entry</td>
							</tr>
							<tr valign="top">
								<td>Member</td>
								<td>
									<http>PUT</http>
								</td>
								<td>Atom Entry</td>
								<td>Update the Atom Entry</td>
							</tr>
							<tr valign="top">
								<td>Member</td>
								<td>
									<http>DELETE</http>
								</td>
								<td>n/a</td>
								<td>Delete the Atom Entry from the collection</td>
							</tr>
						</tbody>
					</table>
			</slide>
			<slide id="atom-service-documents">
				<title>Service Documents</title>
				<blockquote>Service Documents represent server-defined groups of Collections, and are used to initialize the process of creating and editing resources.</blockquote>
				<ul>
					<li>The <q>real</q> top-level construct of AtomPub is the <em>workspace</em></li>
					<ul>
						<li>collections on a server are organized into different workspaces</li>
						<li>workspaces have no AtomPub semantics and no operations can be performed on them</li>
					</ul>
					<li>Service documents list constraints on the members of collections</li>
					<ul>
						<li><atom>accept</atom> specifies a comma-separated list of media ranges (with <code>entry</code> as special value)</li>
						<li><atom>categories</atom> defines the list of categories that can be applied to members (can be <code>fixed</code>)</li>
						<li>AtomPub servers are likely to reject operations not satisfying these constraints</li>
					</ul>
					<li>AtomPub does not specify a way how to discover service documents</li>
				</ul>
			</slide>
			<slide>
				<title>Service Document Example</title>
				<listing src="atom-service.xml"/>
			</slide>
			<slide id="atom-category-documents">
				<title>Category Documents</title>
				<ul>
					<li>Categories are important for creating and reading entries</li>
					<ul>
						<li>they may contain metadata using any classification scheme</li>
					</ul>
					<li><link href="atom-service-documents"/> contain a list of allowed categories</li>
					<ul>
						<li>the categories may be embedded or they may be available elsewhere</li>
					</ul>
					<li>AtomPub defines a document format for standalone category documents</li>
					<ul>
						<li>a useful interface between AtomPub systems and other systems using classification schemes</li>
					</ul>
					<li>AtomPub makes no assumptions beyond categories as a controlled vocabulary</li>
					<ul>
						<li>applications may choose to use more elaborate models (taxonomies, thesauri, ontologies)</li>
						<li>managing and exposing this more complex structure is beyond the scope of AtomPub</li>
					</ul>
				</ul>
			</slide>
			<slide>
				<title>Category Document Example</title>
				<listing src="atom-category.xml"/>
			</slide>
		</part>
		<part id="atompub-extensions">
			<title>AtomPub Add-Ons</title>
			<slide>
				<title>Extensibility</title>
				<ul>
					<li>AtomPub is designed around Atom's very basic model of feeds and entries</li>
					<li>Atom is strict on extensibility and allows extensions of various kinds</li>
					<li>AtomPub supports Atom's extensibility and also allows extensions</li>
					<li>Atom's built-in bias also is part of AtomPub's bias</li>
					<ul>
						<li>time is the primary key for managing and accessing entries</li>
						<li>authentication and authorization are treated as orthogonal issues</li>
					</ul>
					<li>AtomPub can be extended by adding new <q>modules</q></li>
					<li>AtomPub can be extended by <link href="gdata">adding features and repackaging it</link></li>
				</ul>
			</slide>
			<slide>
				<title>Atom Publishing Protocol Feature Discovery</title>
				<ul>
					<li>Collections often support more than the basic AtomPub features</li>
					<li><a href="http://tools.ietf.org/html/draft-snell-atompub-feature">draft-snell-atompub-feature</a> proposes a generic method for supporting feature discovery</li>
					<li>Collections may contain <atom>f:features</atom> elements for indicating supported features</li>
					<li>AtomPub servers can also publish separate <em>feature documents</em></li>
					<ul>
						<li>these documents then can be referred to from multiple collections</li>
					</ul>
					<li>Features are not described, they are only identified</li>
					<ul>
						<li>features are identified by URI and feature descriptions simply list URIs</li>
						<li>URIs may or may not help in finding descriptions of features</li>
					</ul>
				</ul>
			</slide>
			<slide>
				<title>Atom Syndication Format Tombstones</title>
				<ul>
					<li>Atom and AtomPub have no explicit indication about removed entries</li>
					<ul>
						<li>if an entry is removed, it will not be part of the feed anymore</li>
					</ul>
					<li><a href="http://tools.ietf.org/html/draft-snell-atompub-tombstones">draft-snell-atompub-tombstones</a> proposes a mechanism for representing deleted entries</li>
					<li>Deleted entries appear as special entries in a feed</li>
					<ul>
						<li><atom>at:deleted-entry</atom> elements represent deleted entries in a feed</li>
					</ul>
					<li>Feeds may contain links to feed that are used for managing deleted entries</li>
					<ul>
						<li>the <atom>trash</atom> relation allows a feed to link to a trash feed</li>
					</ul>
					<li>This proposal introduces well-defined ways for deleting and undeleting feed entries</li>
				</ul>
			</slide>
			<part id="gdata">
				<title>GData</title>
				<slide>
					<title>GData &amp; AtomPub</title>
					<ul>
						<li><a href="http://code.google.com/apis/gdata/">Google's GData</a> provides access to many Google services</li>
						<ul>
							<li>based on AtomPub (and thus Atom) and allows AtomPub interactions with GData services</li>
							<li>extends AtomPub with features such as <a href="http://code.google.com/apis/gdata/reference.html#Queries">queries</a>, <a href="http://code.google.com/apis/gdata/batch.html">batch operations</a>, and <a href="http://code.google.com/apis/gdata/auth.html">authentication</a></li>
							<li>uses some of the <a href="http://www.opensearch.org/">OpenSearch</a> fields for returning search results</li>
						</ul>
						<li>Google provides code for various programming languages</li>
						<ul>
							<li>mostly <a href="http://code.google.com/apis/gdata/clientlibs.html">client libraries</a>, available in Java, .NET, PHP, Python, Objective-C, and JavaScript</li>
						</ul>
						<li>GData's query format allows queries based on Atom's core metadata</li>
					</ul>
					<pre title='Return all entries of category "Fritz"'>http://www.example.com/feeds/jo/-/Fritz</pre>
					<pre title='Return all entries of categories "Fritz" and "Laurie"'>http://www.example.com/feeds/jo/-/Fritz/Laurie</pre>
					<pre title='Return all entries of categories "Fritz" or "Laurie"'>http://www.example.com/feeds/jo/-/Fritz%7CLaurie</pre>
					<pre title='Return all entries of categories "Fritz" and not "Laurie"'>http://www.example.com/feeds/jo/-/Fritz/-Laurie</pre>
				</slide>
				<slide>
					<title>GData Contact entry</title>
					<listing src="gdata-contact-entry.xml"/>
				</slide>
			</part>
			<part id="locatompub">
				<title>LocAtomPub</title>
				<slide>
					<title>Location-Aware AtomPub</title>
					<ul>
						<li>LocAtomPub extends Atom and AtomPub to become location-aware</li>
						<li>Locations can be lat/long geolocations or place names</li>
						<li>Atom needs to be extended to support location</li>
						<ul>
							<li><a href="http://www.georss.org/">GeoRSS</a> does something similar but is restricted to geolocation</li>
							<li>LocAtomPub allows locations to be physical or symbolic</li>
						</ul>
						<li>AtomPub needs to be extended to support location vocabularies</li>
						<ul>
							<li>uploading geolocation entries is a simple feature (optional or required)</li>
							<li>location vocabularies can be seen as equivalent to <link href="atom-category-documents"/></li>
							<li>there has to be a well-defined format for defining location vocabularies</li>
						</ul>
						<li>AtomPub needs to be extended to support queries</li>
						<ul>
							<li>querying based on categories is supported by <link href="gdata"/> as well</li>
							<li>querying by location needs a more expressive query model</li>
						</ul>
					</ul>
				</slide>
				<slide>
					<title>LocAtom Entry</title>
					<listing src="locatom-entry.xml"/>
				</slide>
				<slide>
					<title>UCB PlaceML</title>
					<listing src="ucb-placeml.xml" line="1-21"/>
				</slide>
			</part>
		</part>
        <part>
			<title>Conclusions</title>
			<slide>
				<title>Writeable Atom</title>
				<ul>
					<li>AtomPub extends Atom with a protocol for posting entries</li>
					<li>AtomPub is limited in its capabilities</li>
					<ul>
						<li>supports Atom's very basic metadata vocabulary</li>
						<li>no well-defined support for <em>collection hierarchies</em></li>
						<li>does not scale very well for posting large numbers of entries</li>
					</ul>
					<li>Extensibility can solve some of these limitations</li>
				</ul>
			</slide>
        </part>
    </presentation>
    <presentation id="presentations">
        <title short="Presentations">Project Presentations</title>
        <date>2008-05-08</date>
        <toc class="resources"></toc>
        <toc class="abstract">...</toc>
		<slide>
			<title>Abstract</title>
			<p class="abstract"><toc class="abstract"/></p>
		</slide>
	</presentation>
</xslidy>
