<?xml version="1.0" encoding="iso-8859-1"?>
<!--
  TO DO:
  - replace all instances of "..." with <q>...</q>
  - replace Uniform Resource Locator with URI expanded
-->
<!-- DOCTYPE srf:article SYSTEM "http://localhost/pa/doc/srfANDbml/srf.dtd" -->
<!-- ENTITY trade  "&#8482;" --> <!-- trade mark sign, U+2122 ISOnum -->
<!-- ENTITY ccedil "&#231;" -->
<!-- ENTITY nbsp   "&#160;" -->
<srf:article xmlns:srf="http://www.xml-formats.org/ns/SRF"
             xmlns:bml="http://www.xml-formats.org/ns/BML">
<!--             xmlns:xhtml="http://www.w3.org/1999/xhtml" -->
  <bml:entry id="wagner02towards" name="Wagner2002b">
    <bml:unpublished>
      <bml:authors>
        <bml:author first="Holger" middle="Thomas" last="Wagner"
                    eMail="david@purple-sunshine.de"
                    homepage="http://www.purple-sunshine.de/" />
      </bml:authors>
      <bml:title>
        Towards an Integrated Approach to Collaborative Web Usage
      </bml:title>
      <bml:note>
        This is the diploma thesis of Holger Wagner at the Department of
        Computer Science at the Univerity of Munich. It has been supervised by
        Prof. Dr. Fran&#231;ois Bry and Dipl.-Inform. Michael Kraus.
      </bml:note>
      <bml:month>December</bml:month>
      <bml:year>2002</bml:year>
      <bml:abstract>
        While certain aspects of collaboration already take place in current
        usage of the World Wide Web, no dedicated and integrated system
        exists to support this kind of collaboration. Instead, existing
        means of communication are used, which is cumbersome in many cases.
        The present work is an attempt to develop an integrated
        approach to collaborative Web usage. The theoretical backgrounds
        for such an approach are laid out by the terminology and a survey
        of existing work. Relevant concepts are introduced and an
        architecture is selected from a variety of options. The feature
        set for a prototype is defined and that prototype - called
        teamXweb is implemented. An experiment conducted with that
        prototype is described as well as a follow-up user survey.
        Finally, future directions for the approach are discussed.
      </bml:abstract>
      <bml:keywords>
        <bml:keyword>bookmarks</bml:keyword>
        <bml:keyword>categorization</bml:keyword>
        <bml:keyword>collaboration</bml:keyword>
        <bml:keyword>communication</bml:keyword>
        <bml:keyword>communities</bml:keyword>
        <bml:keyword>information sharing</bml:keyword>
        <bml:keyword>meta-browser</bml:keyword>
        <bml:keyword>session history</bml:keyword>
        <bml:keyword>teamXweb</bml:keyword>
        <bml:keyword>navigation behavior</bml:keyword>
        <bml:keyword>Web usage</bml:keyword>
        
      </bml:keywords>
      <bml:url>http://www.pms.informatik.uni-muenchen.de/publikationen/diplomarbeiten/Holger.Wagner/index.html</bml:url>
    </bml:unpublished>
  </bml:entry>
  <!-- http://localhost/pa/doc/bibliography.xml -->
  <srf:bibliography type="external"
                    src="http://localhost/pa/doc/bibliography.xml" />
<!--                    src="http://www.pms.informatik.uni-muenchen.de/lehre/projekt-diplom-arbeit/navigation-track/doc/bibliography.xml" /> -->
  <srf:body>
    <!-- ===============            CONTENTS           =============== -->

    <srf:acknowledgements>
      <p>
        I'd like to express my appreciation for the very helpful,
        continuous and inspiring support of my supervisors Dr. François Bry
        and Michael Kraus.
        <br />
        I am very grateful to the following people who helped me conduct
        the experiment and user survey in their courses:
        Dr. Slim Abdennadher,
        Dr. Stefan Conrad,
        Dr. Norbert Eisinger,
        Tim Furche,
        Tobias Kiesling,
        Dr. Dr. Castulus Kolo,
        Dr. Hans Jürgen Ohlbach,
        Dan Olteanu,
        Sebastian Schaffert.
        <br />
        Many thanks to Martin Josko,
        for installing Tomcat at a server at the University of Munich and
        obtaining an academic license of Together Control Center, and
        to Robert Hofer for setting up a project server for the prototype.
        <br />
        For the navigation bar and <em>teamXweb</em> logo, many thanks to
        Kernzeit GmbH, in particular Robert Erb -
        you made <em>teamXweb</em> look cool!
        <br />
        Furthermore, I'd like to thank all the people who participated
        in the field test and answered the questionnaires, in particular those
        who gave me feedback with general comments, bug reports and feature requests.
        In particular, I appreciated very much the conversations with
        Sacha Berger and Felix Weigel, who reported a lot of bugs and gave
        me many suggestions on how to improve the system.
        <br />
        Last but not least, thanks to my beloved girl-friend and soul-mate
        Ngoc-Tram (Noki) Tran, for her love and for keeping me motivated when
        I needed it!
      </p>
    </srf:acknowledgements>

    <!-- ===============    SECTION 1  INTRODUCTION    =============== -->

    <srf:chapter id="Intro" title="Introduction">
      <p>
        The World Wide Web is a rich and complex space for retrieving all
        kinds of information in academic and commercial contexts. Many
        people are already collaborating in the effort to use this medium
        efficiently, but doing so without dedicated technical support.
        Instead, people are sending
        <acronym title="Uniform Resource Locator">URI</acronym>s pointing
        to documents they find interesting via eMail, with annotations
        that are lost when the eMail is deleted. Bookmark collections are
        manually converted to Web pages and uploaded to the Web - but
        peers must still be informed about the location of such pages
        and maintaining them is cumbersome. Some Web pages offer guestbooks,
        that are then used by an emerging community of people interested
        in the contents of such pages - but they all have different user
        interfaces.
      </p>
      <p>
        The present diploma thesis is an attempt to develop an integrated
        approach to collaborative Web usage - supporting these forms of
        collaboration with a software system that integrates features
        existing distributed among various applications into a
        consistent concept.
      </p>
      <p>
        To this end, first, a terminology is laid out, defining the terms
        relevant to the subject matter. Then, a variety of existing approaches
        in various disciplines is surveyed and their relevance disussed.
        These two sections have been included from previous work
        (<cite>[Wagner2002]</cite>) with minor stylistic improvements.
        They provide the fundament for the following chapters.
      </p>
      <p>
        In the first chapter, the concepts relevant to an integrated approach
        to collaborative
        Web usage are introduced: collaboration, communities, Web navigation,
        communication, categorization and privacy and security issues.
        <em>Privacy and security issues</em> is a somewhat modified version
        of a similar chapter in <cite>[Wagner2002]</cite> and included here
        for completeness. In the following chapter, the first step towards
        an implementation of these concepts is taken with the discussion of
        various options for an architecture for such a system.
      </p>
      <p>
        With the selected architecture, a set of features is possible, and
        many of these features have been chosen to be implemented in a
        prototype, called <em>teamXweb</em>. These features are discussed
        and the feature set is compared to existing Web browsers. The
        prototype has been implemented with the given architecture and
        the discussed features. While in <cite>[Wagner2002]</cite>, the
        features were still of a theoretical nature, a similar text has
        been used for the present work - but describing an actual system, which
        is illustrated by screenshots and a more detailed description.
      </p>
      <p>
        The prototype is then used for conducting an experiment, which is
        desribed in the following chapter. Finally, the whole work, including
        the results of the experiment are discussed and an outlook for
        the future is given.
      </p>

		<srf:newpage />

      <srf:section id="Terms" title="Terminology">
        <p>
          An effort to clarify the terminology for the broad area of the World-Wide
          Web has been summarized in <cite>[W3CWCA]</cite>.
          The following terms defined there may be relevant to the present work:
         </p>
         <ul>
           <li><a href="http://www.w3.org/1999/05/WCA-terms/#Resource"><dfn id="resource">resource</dfn></a></li>
           <li><a href="http://www.w3.org/1999/05/WCA-terms/#Link"><dfn id="link">link</dfn></a></li>
           <li><a href="http://www.w3.org/1999/05/WCA-terms/#Anchor"><dfn id="anchor">anchor</dfn></a></li>
           <li><a href="http://www.w3.org/1999/05/WCA-terms/#Client"><dfn id="client">client</dfn></a></li>
           <li><a href="http://www.w3.org/1999/05/WCA-terms/#Server"><dfn id="server">server</dfn></a></li>
           <li><a href="http://www.w3.org/1999/05/WCA-terms/#Proxy"><dfn id="proxy">proxy</dfn></a></li>
           <li><a href="http://www.w3.org/1999/05/WCA-terms/#User"><dfn id="User">user</dfn></a></li>
           <li><a href="http://www.w3.org/1999/05/WCA-terms/#Publisher"><dfn id="publisher">publisher</dfn></a></li>
           <li><a href="http://www.w3.org/1999/05/WCA-terms/#Core"><dfn id="WebCore">Web core</dfn></a></li>
           <li><a href="http://www.w3.org/1999/05/WCA-terms/#Resource2"><dfn id="WebResource">Web resource</dfn></a></li>
           <li><a href="http://www.w3.org/1999/05/WCA-terms/#Client1"><dfn id="WebClient">Web client</dfn></a></li>
           <li><a href="http://www.w3.org/1999/05/WCA-terms/#User1"><dfn id="UserSession">user session</dfn></a></li>
           <li><a href="http://www.w3.org/1999/05/WCA-terms/#Episode"><dfn id="episode">episode</dfn></a></li>
           <li><a href="http://www.w3.org/1999/05/WCA-terms/#Server1"><dfn id="serverSession">server session</dfn></a></li>
           <li><a href="http://www.w3.org/1999/05/WCA-terms/#Cookie"><dfn id="cookie">cookie</dfn></a></li>
           <li><a href="http://www.w3.org/1999/05/WCA-terms/#page"><dfn id="WebPage">Web page</dfn></a></li>
           <li><a href="http://www.w3.org/1999/05/WCA-terms/#Page"><dfn id="PageView">page view</dfn></a></li>
           <li><a href="http://www.w3.org/1999/05/WCA-terms/#Home"><dfn id="HostPage">host page</dfn></a></li>
           <li><a href="http://www.w3.org/1999/05/WCA-terms/#site"><dfn id="WebSite">Web site</dfn></a></li>
           <li><a href="http://www.w3.org/1999/05/WCA-terms/#Independen"><dfn id="IndependentWebPage">independent Web page</dfn></a></li>
           <li><a href="http://www.w3.org/1999/05/WCA-terms/#site1"><dfn id="WebSitePublisher">Web site publisher</dfn></a></li>
           <li><a href="http://www.w3.org/1999/05/WCA-terms/#Subsite"><dfn id="Subsite">subsite</dfn></a></li>
           <li><a href="http://www.w3.org/1999/05/WCA-terms/#Collection"><dfn id="WebCollection">Web collection</dfn></a></li>
        </ul>

        <p>
          In the present work,
          a <dfn id="WebUserCommunity">Web user community</dfn>
          is defined as a group of Web users that either have &quot;something&quot;
          in common or explicitely are members of a particular group.
          A more in-depth discussion of this term is subject of
          <a class="crossRef" href="Communities" />.
          Note that in the related work introduced in
          <a class="crossRef" href="RWHyperlinkAnalysis" />, a
          Web Community is defined as a set of related <em>Web page</em>s and has no
          direct relation to the users who view those pages.
          In the present work, the term
          <dfn id="WebContentCommunity">Web content community</dfn>
          is used for the latter type of Web communities to draw a clear line
          between the social user communities and the more technical view on
          communities resulting from considering Web pages.
        </p>
        <p>
          <dfn id="NavBehav" title="navigation behavior">Navigation behavior</dfn>
          is how particular users or a group of users navigate through the Web.
          <em>Navigation behavior</em> is an artefact of individuals' or
          communities' <dfn id="WebUsage">Web usage</dfn> over time.
          Two studies that try to analyze individual user's navigation behavior
          are introduced in
          <a class="crossRef" href="TrackingNavigationBehavior" />.
          Navigation behavior is discussed more in detail in
          <a class="crossRef" href="WebNavigation" />.
          A basic concept of <em>navigation behavior</em> can also be found in
          <a class="crossRef" href="SessionHistory" />, where the terms
          <em>navigation events</em> and <em>browsing state</em> are defined.
        </p>
        <p>
          <cite>[Kleinberg99]</cite> defines <dfn id="WebGraph">Web graph</dfn>
          as the directed graph consisting of Web pages (nodes) and <em>link</em>s
          between them (directed edges).
          The <em>Web graph</em> can also be seen as some sort of space populated
          by users, which may be a useful metaphor to support collaborative
          browsing.
        </p>
        <p>
          The traversal of this graph performed by users is generally called
          <dfn id="Browsing">browsing</dfn>.
          In the present work, while users are browsing the Web,
          they leave behind <dfn id="Trails">individual trails</dfn>
          that can be accumulated &quot;globally&quot; or for a specific
          group of users to <dfn id="Paths">(community) paths</dfn>.
          Note that <em>individual trails</em> and <em>(community) paths</em> can
          be represented as subgraphs of the <em>Web graph</em>, but other
          representations
          (<abbr id="eg" title="exempli gratia">e.g.</abbr>, sequences) are
          also possible.
        </p>

        <p>
          <cite>[Cheung]</cite> defines a <dfn id="WebTool">Web tool</dfn>
          as a software tool that helps users to retrieve, locate and manage
          Web documents. They classify Web Tools into five levels:
        </p>
        <table class="border"
               id="WebToolsOverview"
               summary="This table gives an overview of WebTools as they have been defined by [Cheung]">
          <caption>
            Classification of Web Tools after [Cheung]
          </caption>
          <tr>
            <td style="width:20%;"><dfn id="Level0WT" title="level 0 Web tool">Level 0 Web tool</dfn></td>
            <td>
              A software system that
              <q cite="Cheung">retrieves documents for a user under straight
              orders.</q>: the user must give the document's URI
              to the browser
              so that it can retrieve the document. It's not perfectly clear
              from the source, whether or not following links is a
              <em>level 0 Web tool</em> capability - but that is assumed for
              the present context.
              The common term for <em>level 0 Web tool</em>s is
              <dfn id="WebBrowser">Web browser</dfn>.
              Note however, that most currently available <em>Web browser</em>s extend the
              behavior where the user has to instruct the tool where and how to
              find the documents at least by history and bookmark mechanisms.
            </td>
          </tr>
          <tr>
            <td><dfn id="Level1WT" title="level 1 Web tool">Level 1 Web tool</dfn></td>
            <td>
              These tools provide
              <q cite="Cheung">a user-initiated searching facility for
              finding relevant Web pages</q>.
              The most common example are Internet
              search engines. Current <em>Web browser</em>s often integrate search engines
              into their interface.
            </td>
          </tr>
          <tr>
            <td><dfn id="Level2WT" title="level 2 Web tool">Level 2 Web tool</dfn></td>
            <td>
              Software systems that
              <q cite="Cheung">maintain user profiles and have an active
              component for notifying users whenever new relevant information is
              found</q> belong into this class of Web tools.
              The user profiles in this class
              of Web tools are usually static: the user enters his interests and
              the system looks for information matching those interests.
            </td>
          </tr>
          <tr>
            <td><dfn id="Level3WT" title="level 3 Web tool">Level 3 Web tool</dfn></td>
            <td>
              A more dynamic and deductive approach qualifies a <em>level 3 Web tool</em>.
              While for a <em>level 2 Web tool</em> the user needs to be aware
              of his interests and must be capable of expressing them to the tool,
              <em>level 3 Web tool</em>s attempt to infer the user profile by analyzing
              the user's behavior.
              This becomes particularly important as humans are not used to,
              and usually not capable of formalizing their browsing behavior or
              information needs because this is not needed in most every
              day situations (<cite>[Chalmers98]</cite>).
              An overview of some of the systems and their theoretical backgrounds
              is given in <a class="crossRef" href="RWRecSyst" />.
            </td>
          </tr>
          <tr>
            <td><dfn id="Level4WT" title="level 4 Web tool">Level 4 Web tool</dfn></td>
            <td>
              A <em>level 4 Web tool</em> should have
              <q cite="Cheung">the capability of learning the
              behavior of both information users and information sources</q>.
              Designing the architecture for such a tool is the objective of
              <cite>[Cheung]</cite>.
            </td>
          </tr>
        </table>

        <p>
          The objective of the present work is laying out the foundation for a
          <dfn id="CollWebTool">collaborative Web tool</dfn>,
          which is at least a <em>level 3 Web tool</em> that additionally supports the
          collaboration between its users. Note that most of the examples given in
          <a class="crossRef" href="RWRecSyst" /> are in some ways
          collaborative as they use matching of different user's profiles for their
          recommendations.
          The distinction between such recommender systems and
          <em>collaborative Web tools</em>
          is that the former use collaboration implicitely without
          necessarily letting the user even notice it. The latter, however, should
          provide means for users with similar interests to explicitely collaborate.
          For example, by sharing the information they find on a particular search task or
          making annotations to a particular document available to others.
        </p>
        <p>
          In the features of the prototype discussed in
          <a class="crossRef" href="ImplementedFeatures" />, the attempt to
          infer the user's profile is not made - instead the system only tracks
          the user behavior and he must explicitely mark his interests by
          bookmarking pages.
          While the concepts are quite interesting to discuss, the actual
          implementation is beyond the scope of the present work.
          However, a design goal of the prototype is easy extensibility with
          features like this and subsequent work may integrate the implementation
          of <em>level 3 Web tool</em> features.
        </p>

        <p>
          <cite>[Twidale]</cite> introduces a few interesting terms concerning
          (collaborative) browsing behavior:
        </p>
        <p>
          Tactics for searching information include
          <dfn id="Consulting">consulting</dfn>,
          which is described as asking a colleague for help but may also be used
          when strangers are asked for assistance.
          This has the advantage that the references are already filtered according
          to the taste of the consulted person.
          To <dfn id="Bibble">bibble</dfn>, is to use other searchers results,
          for example, published in the form of a bibliography for one's
          own search. However,
        </p>
        <blockquote cite="Twidale">
          <p>The results of most searches are not published as bibliographies but
            are private, local and temporary and consequently, from the perpective
            of future users, the information is lost. This means that the great
            majority of searches that are conducted fail to <em>bibble</em> properly;
            they fail to take advantage of previous results because there is no
            mechanism to support the sharing of this information.</p>
        </blockquote>
        <p>
          In an informal study conducted at the Lancaster University Library
          (referred to by <cite>[Twidale]</cite>)
          the following collaborative interactions have been observed (which
          are considered relevant to Web searching):
          <dfn id="JointSearch" title="joint search">Joint search:</dfn> small (2-4) groups of students
          working on a single terminal, involving frequent pointing at the
          terminal screen.
          <dfn id="CoordinatedSearch" title="coordinated search">Coordinated search:</dfn>
          a group where each
          participant works on his own terminal, sometimes competing to find the
          information and sometimes clustering around terminals like in
          <em>joint searches</em>.
          <dfn id="ChanceContact" title="chance contact">Chance contact</dfn>
          occurs when people happen
          to use the same resource and thus get in contact.
        </p>
        <blockquote cite="Twidale"><p><dfn id="GroupSearching" title="group searching">Group searching</dfn>
            takes place when two or more people share a common aim, and choose to
            coordinate their searching efforts.</p>
        </blockquote>
        <p>
          <dfn id="DiffGroupSearching" title="differentiated group searching">Differentiated group searching</dfn>
          expresses that the group members work in the same area, but their
          specific searching aims are different.
        </p>
        <p>
          <dfn id="SerendititousAltruism" title="serendipitous altruism">Serendipitous altruism</dfn>
          is used to describe the fact that
        </p>
        <blockquote cite="Twidale">
          <p>colleagues in a community may be willing
            to help each other's information searching even if they are not
            directly involved in the project.</p>
        </blockquote>
        <blockquote cite="Twidale">
          <p>If your colleagues know what you are working
            on and happen by accident, in the process of undertaking their own
            searches, to come across something that may be of interest, they
            may altruistically pass the information to you.</p>
        </blockquote>
        <p>
          As the cost for such help must be minimal for the help to be given, a tool
          for collaborative searching should support <em>serendipitous altruism</em>
          sufficiently.
        </p>

        <p>
          In <cite>[Twidale]</cite>, a distinction is made between
          <em>product-related</em> and <em>progress-related</em>
          information exchange between people.
          In <dfn id="ProductRelated">product-related information exchange</dfn>,
          the search results are discussed, while
          <dfn id="ProgressRelated">progress-related information exchange</dfn>
          deals with the process of searching (e.g., how to find
          certain types of information).
        </p>
      </srf:section>


      <srf:section id="Related" title="Existing Approaches: Web Analysis and Browsing Helper Systems">
        <p>
          There is a large body of literature that deals with different aspects
          of the Web which are relevant to the present work.
          The following sections are an attempt to classify that literature and
          provide the background to this project.
        </p>

        <srf:subsection id="TrackingNavigationBehavior" title="Analysis of Browsing Behavior">
          <p>
            In this section, some approaches of tracking and analyzing the
            navigation behavior of Web users are introduced and their
            results outlined.
            While <a href="RWUsageMining" class="crossRef" /> presents approaches
            that analyze server logfiles, this section is dedicated to
            client-side tracking of Web usage and the analysis of the collected
            data.
            The title <em>Analysis of Browsing Behavior</em> may
            seem applicable to both client- and server-side based approaches.
            However, server-side based approaches have several limitations so that
            the general term <em>browsing behavior</em> is reserved for client-side
            tracking in the present work, while <em>Web usage mining</em> as a more
            special term is used for server-side tracking.
            The body of existing work introduced in this section is very small
            compared to the large field of <em>Web usage mining</em> - in fact,
            only two studies have been found that analyze and elaborate upon the
            data collected on the navigation behavior by tracking users at the
            clients.
          </p>
          <p>
            However, there has been research on user strategies and usability of
            closed hypermedia systems preceding the
            <acronym id="WWW" title="World Wide Web">WWW</acronym>, which is beyond the scope
            of the current work, but provided a basis for <cite>[Catledge]</cite>.
            In their work, a modified version of
            <acronym id="ncsa" title="National Center for Supercomputing Applications">NCSA</acronym>'s
            XMosaic Web browser is used to capture all user interface level
            events of 107 users in an experiment lasting three weeks.
            While there are many other types of user events also included in the
            study (some specific to XMosaic, e.g.,
            <em>Reload Configuration Files</em>, or
            <em>Delay Image Loading On/Off</em>),
            the most important navigation-related user events are
            <em>following a hyperlink (52%)</em> and
            the <em>back command (41%)</em>.
            Much less often used are <em>opening a manually entered URI</em>,
            <em>using the hotlist</em> (<dfn id="hotlist">hotlist</dfn> is XMosaic's name for
            bookmarks)
            and the <em>forward command (2% each)</em>.
            <em>Opening local files (0.7%)</em>,
            <em>going to the home document (0.5%)</em> and
            <em>using the history list (0.1%)</em> are found to be the least
            used features.
            One possible explanation given for the minimal usage of history and
            bookmarks is the design of the interfaces to these functions.
          </p>
          <p>
            While XMosaic does provide a bookmark feature in its interface,
            many users tended to also use
            <q cite="Catledge">home pages as indexes to interesting places</q>,
            which provide a similar functionality as bookmarks but better
            layout control and customization.
          </p>
          <p>
            A finding on a more abstract level is that users tend to navigate
            within a small area of particular sites, the <em>individual trails</em>
            resembling a spoke and hub structure (when using a graph structure
            where using the back command results in going back to the previous
            node instead of moving to a new node within a sequence).
          </p>
          <p>
            Directions for the design of Web sites concluded from the results
            are that the most important information must be accessible within
            two to three hyperlinks of the initial home page. Different types
            of users are identified ("Serendipitous Browser",
            "General Purpose Browser" and "Searcher", taken from
            <cite>[Cove]</cite>) and offering different views of the pages for
            these different types of users is suggested.
          </p>
          <p>
            An approach more focussed on users' revisitation patterns and their
            implications on the design of revisitation tools in browsers has been
            taken by <cite>[Tauscher]</cite>. The design of current browsers'
            history mechanisms is explicitely criticized and an objective of the
            work is to motivate improved interface designs revisitation tools
            (within browsers or external,
            see <a href="RWRevisitationTools" class="crossRef" /> for examples).
          </p>
          <p>
            As in <cite>[Catledge]</cite>, a modified version of XMosaic is
            used to track the usage data. In fact, the modifications of the
            earlier study are used as a basis for the latter one, but a
            smaller set of actions are captured. A distinction is
            made between <em>navigation</em> and <em>non-navigation actions</em>,
            where hotlist management (add/delete/edit hotlist entry) belongs to
            the latter category. There is only one action <em>open URI</em>
            (making up 50% of the actions executed in the experiments) for the
            following methods of opening a new page:
          </p>
          <ul>
            <li>Anchor: using a hyperlink (82,7% of <em>open URI</em>)</li>
            <li>Keyboard: typing a URI into the URI field (6,8% of <em>open URI</em>)</li>
            <li>Hotlist: selecting a page from the hotlist (5,0% of <em>open URI</em>)</li>
            <li>Dialog: using the Open URI dialog (2,0% of <em>open URI</em>)</li>
            <li>History: selecting a page from the window history dialog (1,3% of <em>open URI</em>)</li>
            <li>Other: less frequent methods such as causing a page to display
               with an external application (2,2% of <em>open URI</em>)</li>
          </ul>
          <p>
            Just as in the previous study, the <em>back command</em> is used
            frequently (30%), and other actions are used seldom
            (e.g., <em>home (5%)</em>, <em>forward (0.8%)</em>,
            <em>new window (0.8%)</em> and <em>open local (0.2%)</em>).
            It is not clear, why <em>home</em>, <em>back</em> and <em>forward</em>
            are not included in <em>open URI</em>, as they all result in
            displaying a new URI.
            Possibly, this is done because the URI is not selected but taken
            from stored data the user can not directly access, as in the other
            actions subsumed under <em>open URI</em>.
          </p>
          <p>
            A very interesting finding of <cite>[Tauscher]</cite> is that the same
            pages are revisited very often, with a <em>recurrence rate</em>
            of 58%. The <dfn id="recRate">recurrence rate</dfn> is defined as
            <q cite="Tauscher">the probability that any URI visited is a repeat
            of a previous visit</q>. With the data of <cite>[Catledge]</cite>
            that has been reanalyzed in the study of <cite>[Tauscher]</cite>,
            the rate was even higher at 61%.
            The conclusion from that fact is that browser interfaces should help
            users revisiting pages - a few approaches are introduced in
            <a href="RWRevisitationTools" class="crossRef" />.
          </p>
          <p>
            Even though the recurrence rate is very high, many pages are
            visited only once (60%) or twice (19%), and many of the visited pages
            are entirely new (40%). Furthermore, while the major contribution to
            the high recurrence rate are the last few pages visited (by using
            the back command), 15% of recurrences are not within a list of the
            last 10 URIs visited.
          </p>
          <p>
            Finally, the little acceptance of current history facilities is
            explained with limitations of the interfaces. In particular, the
            effort for managing hotlists is considered a problem. Furthermore,
            histories are usually not easy enough to access and should be
            integrated better into the browser's user interface.
          </p>
          <p>
            While studies analyzing browsing behavior as and end in itself are
            rare, the browsing behavior of users is used for example in recommender
            systems as introduced in <a href="RWRecSyst" class="crossRef" />.
            As an example, <cite>[Goecks]</cite> has been chosen. The basic idea
            is that a user's interests may be deduced from certain aspects of
            his browsing behavior, which allows agents giving the user
            recommendations of potentially interesting pages based on his
            usage profile (see <a href="RWRecSyst" class="crossRef" /> for
            further information on recommender systems).
            An innovation of <cite>[Goecks]</cite> is that mouse
            and scrolling activity are added as parameters of the user's
            navigation behavior.
          </p>
          <p>
            To obtain this information, an agent using
            <em>Microsoft Internet Explorer 4.0</em>
            has been implemented. The agent captures information like the
            <em>number of hyperlinks clicked on a page</em>,
            the <em>amount of scrolling the user performed</em>, and
            <em>whether the user bookmarked the page</em>.
            No results comparable to those in the previously reviewed studies
            are available, as the objective of
            the work was not finding out about the navigation behavior, but
            using the navigation behavior as input for algorithms analyzing
            the user's interests.
          </p>
          <p>
            For the current project, the architectures used for collecting
            information on users' navigation behavior are quite interesting.
            Furthermore, the results of the studies concerning the usage of
            single-user browsers indicate which functions may be necessary for
            systems supporting collaborative Web usage.
            While improvements for existing revisitation functions are suggested
            here, examples are subject of
            <a href="RWRevisitationTools" class="crossRef" />.
          </p>
        </srf:subsection>

        <srf:subsection id="RWUsageMining" title="Web Usage Mining">
          <p>
            The term <dfn id="WebUsageMining">Web usage mining</dfn> has been
            suggested by <cite>[Cooley97]</cite>,
            as opposed to <dfn id="WebContentMining">Web content mining</dfn>,
            as a specific variation of <dfn id="WebMining">Web mining</dfn>.
            There, it is defined as
            <q cite="Cooley97">the automatic discovery of user access patterns
            from Web servers</q>,
            and in fact all of the work in this category deals with data from
            Web server logfiles - alternative architectures for capturing the
            usage data are only theoretically discussed in the survey of
            <cite>[Srivastava]</cite>, but according to the author's knowledge
            not used in practice in this field.
          </p>
          <p>
            The major objective of the work introduced in this section is
            to provide data for content providers so that they better understand
            their customer's use of their content.
            In that, the restriction to server logfiles - which prohibits logging
            the complete path of a user over multiple websites or gathering
            specific information about the navigation behavior
            (see <a href="TrackingNavigationBehavior" class="crossRef" />) -
            does not play a major role.
          </p>
          <p>
            However, <cite>[Srivastava]</cite>,
            a recent survey of the existing work in that area, broadens the
            definition of <em>Web usage mining</em> to include any Web data,
            allowing proxy and client level data collection as well.
            This makes sense as many of the techniques proposed in the given
            papers could easily be applied to client level logfiles even if that
            application may not have been considered by the authors.
            On the other hand, a large part of
            the complexity of <em>Web usage mining</em> is based on the challenge
            of extracting individual user's trails from logfiles of servers of
            the stateless <acronym id="http" title="HyperText Transfer Protocol">HTTP</acronym>,
            a problem that does not arise when the data is captured at the client.
          </p>
          <p>
            In <cite>[Pitkow]</cite>,
            some of the problems with server-side tracking are discussed and a
            terminology is suggested:
            An <dfn id="UnidentifiedUser">unidentified user</dfn> is defined as a user
            about whom no information is available. This can be the case when Web
            proxies operate between server and client.
            The default type of visitor on the World Wide Web is
            called <dfn id="SessionVisitor">session visitor</dfn>:
            an identifier can be inferred using
            heuristics based on the information available in server-logfiles, the
            Web site topology
            <abbr id="etc" title="et cetera (and other things / and so forth)">etc.</abbr>,
            or an identifier is explicitely created using cookies.
            To a certain extend, the former techniques can
            be used to even identify users behind firewalls, as it was done in
            <cite>[Pirolli]</cite>.
            A <dfn id="TrackedVisitor">tracked visitor</dfn> is defined as
            <q cite="Pitkow">a visitor who is uniquely and reliably
            identifiable across multiple visits to a site.</q>
            This seemingly can be achieved with long-term cookies.
            However, it should be added that this does not work when visitors
            use different browsers on the same machine / user account or
            different machines / user accounts.
            Finally, an <dfn id="IdentifiedVisitor">identified visitor</dfn>
            extends the <em>tracked visitor</em> with additional information.
            To a certain extend, such information can be automatically gathered
            from other sources - however, the common way is asking the users for
            that information.
            Either way the reliability of such information is very questionable
            unless the user profits of giving valid information.
          </p>
          <p>
            A major problem with server-side logfiles are the various levels of
            caching because it distorts the data significantly.
            If proxies and browsers cooperate, this can be circumvented
            by a method called <dfn id="CacheBusting">cache-busting</dfn> - this
            is tried by using HTTP headers indicating that the page should not
            be cached. If browsers or proxies ignore the relevant headers,
            cache-busting via HTTP headers fails.
            A more brutal approach that always works is adding a random dummy
            parameter to the URI, which causes the browser's or proxy's URI
            matching to fail and thus inhibits caching.
            Such techniques are questionable, however,
            as they interfere significantly with how the Web is supposed to work!
            After all, there are good reasons for caching and inhibiting this
            just to get better usage data (which raises privacy concerns in
            itself) calls for criticism.
          </p>

          <p>
            For the present work, <em>Web usage mining</em> is interesting
            because it provides some discussion and formal models for the
            <em>individual trails</em>
            users leave behind while browsing the Web as well as some discussion
            on how usage data can be gathered. Even though most papers of that field
            deal explicitely with server logfiles, many of the techniques could be
            adapted to client-side logging, usually in a simplified manner as some
            of the issues complicating the extraction of valid usage data from
            server-side logfiles inherently do not exist when using client-side
            logging.
          </p>
        </srf:subsection>

        <srf:subsection id="RWRecSyst" title="Recommender Systems">
          <p>
            <dfn id="recSys" title="recommender system">Recommender systems</dfn>
            are tools that recommend <em>Web page</em>s to a user that shall be
            interesting to that user.
            While <cite>[Terveen]</cite> includes
            <dfn id="recSupSyst">recommendation support systems</dfn>
            in their broad survey, where the recommendation process is not
            automated but instead users who want to share recommendations are
            supported, this section only includes systems that automatically
            compute the recommendations.
            <em>Recommendation support systems</em> are instead subject of
            <a href="RWColl" class="crossRef" />.
            The data used to compute recommendations can either be of a single
            user only, or of a community of users.
            While the latter implies some sort of collaboration,
            the focus is on the recommendations, and how those recommendations
            are computed is usually not visible to the user of the system -
            this draws another line between <em>recommender systems</em> and
            <em>collaborative Web usage</em> as described in
            <a href="RWColl" class="crossRef" />.
          </p>
          <p>
            <cite>[Terveen]</cite> presents a general framework for understanding
            recommender systems, including what is termed <em>collaborative Web
            usage</em> in this section. They define
            <dfn id="coBaRecSys" title="content-based recommender systems">content-based systems</dfn>
            as using only the preferences of the seeker and attempting to give
            recommendations based on similarity to items previously liked by
            that seeker. Content-based systems focus on learning the user's
            preferences and filtering new items according to those preferences.
            Examples of content-based systems are
            <cite>[Armstrong1997]</cite>,
            <cite>[Cheung]</cite>,
            <cite>[Goecks]</cite>.
          </p>
          <p>
            Systems that apply <dfn id="collFil">collaborative filtering</dfn>
            on the other hand, employ the ratings of other users and try to match
            those new items that other users with similar preferences have liked.
            Thus, the recommendation process is completely content-independent.
            Such systems focus on algorithms that discover similarities between
            user preferences to match people for gathering the recommendations.
            Examples of systems using collaborative filtering include
            <cite>[Pazzani]</cite>,
            <cite>[Rafter]</cite>,
            <cite>[Resnick1994]</cite>, and
            <cite>[Wasfi]</cite>.
          </p>
          <p>
            Collaborative filtering has been extended significantly by
            <cite>[Chalmers98]</cite>, by introducing the
            <dfn id="pathModel">path model</dfn>. To capture the context in
            which a particular information item is used, instead of using only single
            items, the paths of users (e.g., trails of users on the World Wide
            Web) are used to build both user profiles and recommendations based
            on these profiles.
          </p>
          <p>
            <cite>[Claypool]</cite> introduces a few problems with pure
            collaborative filtering:
            The <dfn id="eaRaPr">early rater problem</dfn> occurs with new
            items, that haven't been rated by any users. The same applies to
            new users, that have no profile which can be matched. The worst
            case of the <em>early rater problem</em> are new systems, where
            neither users, nor items have any ratings to compute
            recommendations from.
          </p>
          <p>
            The <dfn id="spPr">sparsity problem</dfn> plays a role in information
            domains where the number of items exceeds what individuals can
            absorb and rate. As this results in sparse matrices containing the
            ratings of all items for all users, recommendations are hard to
            compute from these sparse matrices.
          </p>
          <p>
            Finally, <dfn id="grSh">gray sheep</dfn> are people who do not
            consistently agree or disagree with any group of people.
            <em>Gray sheep</em> do not benefit from pure collaborative filtering
            systems as the system cannot judge their interests appropriately.
          </p>
          <p>
            Pure content-based systems are criticized as having
            <q cite="Claypool">difficulty in distinguishing between
            high-quality and low-quality information that is on the same topic.</q>
            With an increased number of items in general and for specific topics,
            this problem gets even worse and the quality of content-based
            recommendations is reduced.
          </p>
          <p>
            To solve these problems of pure collaborative and
            content-based filtering systems, a combination of both is suggested
            and an extensible architecture introduced.
            <cite>[Pazzani99]</cite> further extends this idea by including
            demographic information into the filtering process, and shows that
            the quality of recommendations is actually improved by using the
            combination.
          </p>
          <p>
            Other work on recommender systems includes <cite>[Liebermann]</cite> and
            <cite>[Maglio1997]</cite>. Both try to obtain a model of how
            the user searches the Web and give suggestions based on this model.
          </p>
          <p>
            For the ongoing project, an integration of automatic recommender
            system technology is a promising idea. While the main objective is
            helping people collaborate explicitely and provide an increased
            awareness of other people, the collected data can
            be used as input for any combination of the introduced techniques
            of automatically recommending interesting pages. Ideally, the
            recommendations are explained to the user, as suggested in
            <cite>[Herlocker]</cite>. This can further enhance the awareness of
            the community one browses the Web with.
          </p>
          <p>
            Another very interesting aspect of recommender systems in respect to
            the current work is that they usually recognize communities based on
            the various types of user profiles.
            While the pure recommender systems need those communities to base
            their recommendations upon, the communities can also be used to make
            people with similar interests meet each other.
            This idea is discussed by <cite>[Terveen]</cite>, including some of
            the privacy issues involved therein.
            Furthmore, such explicit communities based on user profiles may even
            be used to evaluate the quality of the community by asking its
            members whether they feel the community shares their interests or
            not.
            The privacy issues of such a system must be carefully weighted
            against the potential benefit for the users, ideally in a way that
            puts the freedom of choice to the user himself.
          </p>
        </srf:subsection>

        <srf:subsection id="RWHyperlinkAnalysis" title="Hyperlink and Content Analysis">
          <p>
            The body of work introduced in this section deals with analyzing
            the static structure of the Web defined by hyperlinks and/or content to
            find out relationships between pages and group pages into clusters,
            called <em>Web (content) communities</em>.
            Notice that content analysis is only introduced in connection with
            hyperlink analysis here. While content analysis surely is a very large
            field as well, it has been left out for the sake of brevity and
            may be included in subsequent work.
            Hyperlink analysis is usually a static approach that does not take
            into account user behavior. A recent survey of the work in this field
            and some terminology is given by <cite>[Efe]</cite>.
            The simplest and most obvious form of page <em>A</em> implicitely
            endorsing page <em>B</em> is a <em>direct link</em> from <em>A</em> to
            <em>B</em>. When a page <em>A</em> links to two other pages
            <em>B</em> and <em>C</em> that is called
            <dfn id="co-citation">co-citation</dfn> and it is assumed that
            <em>B</em> and <em>C</em> have some relevance to each other as well
            as to <em>A</em> (<cite>[Efe]</cite>).
            Another measure, also taken from <em>bibliometrics</em> (see below),
            is <dfn id="bibCoupl">bibliographic coupling</dfn>: the more
            links two pages <em>A</em> and <em>B</em> have in common, the
            higher their bibliographic coupling and thus, a higher similarity or
            relevance to each other is assumed (<cite>[Kleinberg]</cite>).
          </p>
          <p>
            One finding of hyperlink analysis is that Web pages can be categorized
            into <em>authorities</em> and <em>hubs</em>:
            <dfn id="authority" title="authority">authorities</dfn>
            are considered the best sources of information on a particular topic
            and <dfn id="hubs" title="hub">hubs</dfn> are collections of
            <em>link</em>s to those locations
            (e.g., <cite>[Chakrabarti]</cite>, <cite>[Kleinberg]</cite>,
            <cite>[Gibson1998b]</cite>).
            Discovering these pages is not a trivial task, and much of the
            work tries to find algorithms that efficiently handle this task.
            For examples, see <cite>[Dean]</cite>, <cite>[Flake]</cite>,
            <cite>[Gibson]</cite>, <cite>[Kleinberg]</cite>.
          </p>
          <p>
            Another interesting link topology is that of a
            <dfn id="webRing">web ring</dfn>: a set of related pages that link
            to each other one after the other. Each page <em>n</em> links to a
            previous page <em>n-1</em> which in turn links to <em>n</em>, and
            a subsequent page <em>n+1</em> which links back to <em>n</em>.
            Web rings are discovered for instance by the method of <cite>[Flake]</cite>.
          </p>
          <!-- FIX THIS and then maybe INCLUDE IT
          <p>
            <cite>[Gibson]</cite> names a few typical query types and the
            problems involved with them:
          </p>
          <ul>
            <li>
              <dfn id="broadTopic" title="broad-topic queries">Broad-topic queries</dfn>, e.g.
              finding information about Web browsers. A major concern for such
              queries is the <dfn id="abunProb">abundance problem</dfn>: too
              many pages are returned. If the relative authority of a page can
              be identified, this can help reduce the result set to the most
              interesting pages.
            </li>
            <li>
              <dfn id="specTopic" title="specific queries">Specific queries</dfn>, e.g.
              finding information about Web browsers. A major concern for such
              queries is the <dfn id="abunProb">abundance problem</dfn>: too
              many pages are returned. If the relative authority of a page can
              be identified, this can help reduce the result set to the most
              interesting pages.
            </li>
          </ul>
                  -->
          <p>
            According to
            <cite>[Gibson]</cite>, "link
            structures have been studied in hypertext research that predates the
            www", for example in
            <cite>[Botafogo]</cite>.
            A related field are <dfn id="bibliometrics">bibliometrics</dfn>,
            in which the patterns of citation
            among scientific papers is studied. A review can be found in
            <cite>[White]</cite>.
            Some of the connections between bibliometrics and hyperlink analysis
            are studied in
            <cite>[Larson]</cite>.
            A few important differences between scientific citations and Web links
            are
            (<cite>[Efe]</cite>):
          </p>
          <ul>
            <li>
              In scientific citations relevance, objectivity and information quality
              can be expected. Web links are usually more subjective and noisy.
            </li>
            <li>
              Web links also serve navigational purposes, while scientific
              citations always have (at least some) relevance to the content.
            </li>
            <li>
              Web links are dynamic, scientific citations are static. In particular,
              Web pages often mutually link each other - a phenomenon very rare to
              scientific work.
            </li>
          </ul>
          <p>
            For an example where content and hyperlink analysis is combined,
            see <cite>[Davison2000]</cite>. While other approaches only include
            the topology of the links, here the text in, and around the links
            is used - assuming that it somehow describes the pages linked to.
            In the experiment it is shown that the text within the anchors often
            represents at least a part of the target page.
          </p>
          <p>
            <cite>[Pirolli]</cite> attempts to improve Web navigation and
            assimilation by integrating hyperlink topology, page meta-information
            (like file size and URI), usage frequency and usage paths as well
            as text similarity between the pages. They have also defined a set
            of types of Web pages according to their roles:
          </p>
          <ul>
            <li>
              <dfn id="head">head page</dfn>: best starting point for a set of
              pages. There are two subclasses of head page:
              <dfn id="perHP">personal home pages</dfn> and
              <dfn id="orgHP">organizational home pages</dfn>.
            </li>
            <li>
              <dfn id="indexPage">index page</dfn>: basically the same as
              hubs, can often be identified by words like "index",
              "table of contents" or "toc" as part of their URI or title.
            </li>
            <li>
              <dfn id="srcIndexPage">source index page</dfn>: entry points and
              indices into a related information space. Quite similar to
              index page, but these are also head pages.
            </li>
            <li>
              <dfn id="referencePgs">reference page</dfn>s: pages that are
              used repeatedly to explain a concept or contains actual references.
              The subclass <dfn id="destPg">destination page</dfn> is used for
              pages that do not point anywhere else (e.g., expanded acronyms,
              copyright notices, and bibliographic references).
            </li>
            <li>
              <dfn id="contentPgs">content page</dfn>s serve no navigational
              purposes but only deliver information.
            </li>
          </ul>
          <p>
            While previous work concentrated mostly on the communities in
            themselves, <cite>[Toyoda]</cite> is also concerned
            with the relationships between those communities and a way of
            navigating between related communities.
            To that end, they have developed a technique for creating a
            community chart, which is a graph of which the nodes are communities
            and the the edges relationships between those communities. The
            edges are weighted, the weight representing the strength of
            the relationship.
          </p>
          <p>
            The major objective of this approach is improving the way the
            Web can be searched, organized and visualized.
            Another application of the results of such work
            is more specific targeting of advertisements.
            If the communities of which the visitors may be interested in certain
            products are known, the most authoritative pages can be used for
            effective advertising (<cite>[Efe]</cite>).
            Last but not least, finding out about the social and/or intellectual
            structure of the Web is an end in itself.
          </p>
          <p>
            In the context of the present work, the results of research dealing with
            hyperlink and/or content analysis may be valuable to define groups of
            documents that people look for information at.
            A user may then communicate with users currently visiting pages from
            the same group (a <em>Web user community</em> based on a
            <em>Web content community</em>) which may make it much easier to find
            the most interesting information by simply asking others.
            Hyperlink analysis may be extended by
            <!-- our approach by -->
            using the links actually followed by users instead of all links, and
            possibly even using <em>navigation behavior</em> information like how
            much time is spent with a page to improve the quality and relevance
            of the clusters.
            Intuitively, a page that a user returns to many times and from which
            he then visits other pages may be a good <em>hub</em> for the topic
            the user is currently interested in
            (see <a class="crossRef" href="TrackingNavigationBehavior" />).
            A page visited from such a hub that the user spends a lot of time with,
            possibly bookmarks it or saves it locally is probably a good
            <em>authority</em>.
          </p>
        </srf:subsection>

        <srf:subsection id="RWRevisitationTools" title="Revisitation and Annotation Tools">
          <p>
            Work dealing with the creation and integration of user interfaces for
            revisitation and annotations tools includes
            <cite>[Barret]</cite>,
            <cite>[Cockburn99a]</cite>,
            <cite>[Cockburn99b]</cite>,
            <cite>[Hascoet1999]</cite>,
            <cite>[Hascoet]</cite>,
            <cite>[Kaasten]</cite>,
            <cite>[Koch]</cite>,
            <cite>[Laurent]</cite>,
            <cite>[Li]</cite>, and
            <cite>[Tauscher]</cite>.
            In
            <cite>[Hascoet1999]</cite>,
            an attempt is made to integrate a short term history, a personal best of
            list, a list of unclassified documents to be read later, and an overview
            of an organized collection of bookmarks into a unified user interface.
            The model used for this integration, termed "document as user interface"
            by the authors, can also be used for navigation. While most browsers
            show bookmarks in a simple tree, BookMap uses a fisheye view that allows
            zooming in to and out of areas of interest, trading details for context.
            Another improvement to the handling of bookmarks is filtering -
            a technique also used by <cite>[Kaasten]</cite> and <cite>[Li]</cite>.
            While the keyword filter is quite simple, a special approach has been
            developed for filtering by date: instead of entering the dates
            manually, a slider is used that consumes minimal screen estate
            (see below). The length of the cursor represents the length of the
            period, and the position of the cursor represents the period itself.
          </p>

          <p>
            <cite>[Kaasten]</cite>
            deals with an integrated model for "back", history and bookmarks, based
            on a recency-ordered history list, in order to improve the usability.
            The "back-button" in current <em>Web browser</em>s is usually implemented as a
            <dfn id="stack" title="stack-based history">stack</dfn>,
            leading to problems as going back and then branching to another
            page destroys the old branch.
            A <dfn id="recency">recency-based history</dfn>, on the other hand, simply records
            the pages visited in the time-based sequence they are visited.
            A recency-based list not only avoids this
            problem but is also considered more intuitive to the users.
            While conventional bookmarks provide useful means of structuring the
            collection, this is considered "heavyweight" by <cite>[Kaasten]</cite>
            and a solution
            where bookmarks are replaced with "dogears" on the list of visited pages
            is proposed. Like in <cite>[Hascoet]</cite>,
            pages are represented via thumbnails, as this has been proven to be
            more effective than Web page titles or the URIs of the pages
            (<cite>[Cockburn99a]</cite>, <cite>[Cockburn99b]</cite>).
            Implicit bookmarks are somewhat similar to the best of list in the above
            work: by visualizing the page visit frequency a user can easily
            distinguish between pages that have been visited more or less often.
            By filtering, best of and bookmarks only lists can easily be created,
            as well as a simple form of content-based filtering, using the page's
            title or showing only pages from particular domains.
          </p>

          <p>
            <em>PowerBookmarks</em> introduced by <cite>[Li]</cite> is an
            information organization, sharing, and management tool. It supports
            advanced query, classification, and navigation functionalities on
            bookmark collections and also uses users' access patterns for
            features like automated bookmarking, document refreshing, and
            bookmark expiration. For example, when a user visits a Web page
            frequently, it can automatically be bookmarked.
          </p>

          <p>
            A major problem with revisitation tools is the "screen real estate"
            (<cite>[Cockburn99b]</cite>): as the Web pages the user actually wants
            to see usually require a lot of space on screen, revisitation tools
            compete with that space. Thus, the more space the tool requires, the
            more useful it must be for the user so that he does not hide it
            somewhere and thus stops using it. Therefore,
            <q cite="Cockburn99a">[r]evisitation tools must [...] maximise
            the value of the information they present, and do so using minimal
            screen real estate.</q>
          </p>
          <p>
            <cite>[Cockburn99a]</cite> also discusses various approaches to the
            structural organization of page display:
          </p>
          <ul>
            <li><dfn id="hasdt" title="hub-and-spoke dynamic trees">
              Hub-and-spoke dynamic trees</dfn>
              capture the user's navigation behavior well, by adding new pages,
              with edges to the pages they are linked from.
            </li>
            <li>With
              <dfn id="spatLayouts" title="spatial layouts">Spatial Layouts</dfn>
              the user can arrange the pages according to his taste, making it
              easier to remember a page's content by where it has been placed.
              This approach has a major disadvantage, namely that placing the
              pages is a heavy burden to the user.
            </li>
            <li><dfn id="siteMaps" title="site maps">Site maps</dfn>
              contain the complete contents of a particular site. These can
              be statically arranged which may make navigation easier - however,
              many included pages have usually not been visited before. Thus,
              instead of using this for revisitation it is probably more useful
              for finding new pages...
            </li>
            <li><dfn id="tempOrg" title="temporal organisation">Temporal organisation</dfn>
              is another example of a natural way of representation and
              facilitates finding previously visited pages by exploiting the
              user's memory of when he visited a certain page.
            </li>
          </ul>

          <p>
            There have been various approaches to annotating the WWW, some of which
            shall be introduced here. One major design issue with annotation
            systems is how the annotations are gathered, stored and presented.
            There are generally two classes of systems: systems that require
            software installation or configuration changes on the client-side
            (e.g., <cite>[Kahan]</cite>, <cite>[Laurent]</cite>, <cite>[Marais]</cite>), and
            systems that use standard internet technology like JavaScript to embed
            the functionality in standard <em>Web browser</em>s
            (e.g., <cite>[Koch]</cite>).
            The latter, however, usually requires changes on the Web server
            or the documents it provides, restricting annotations to pages that
            are prepared for taking annotations. An alternative is installing and
            using a proxy-server or similar architecture, where the original pages
            are rewritten to include the annotations. This approach has been
            used, but this is not covered here, see <cite>[Laurent]</cite>
            instead.
          </p>

          <p>
            <cite>[Koch]</cite> discusses the use of an annotation tool in
            academic courses. In such an environment, the need of enhancing the
            documents is not a problem as most relevant documents are usually
            accessible and can be easily changed.
          </p>

          <p>
            <em>Yawas</em>, the prototype introduced in <cite>[Laurent]</cite> is a
            Java and JavaScript based annotation tool that is implemented as
            a client-side proxy. It works with any Web browser due to its
            architecture and allows annotating both remote and local documents.
            Specific texts within Web pages can be highlighted and annotated
            and those annotations are stored locally, which circumvents
            privacy concerns. Sharing annotations is possible via import and
            export functions.
          </p>

          <p>
            A very promising project is Annotea (<cite>[Kahan]</cite>), a
            <acronym id="w3c" title="World Wide Web Consortium">W3C</acronym>
            <acronym id="lead" title="Live Early Adoption and Demonstration">LEAD</acronym>
            project for enhancing the W3C collaboration environment with
            annotations.
            For editing and viewing the annotations, which are stored on
            special purpose servers, an own Web client is available (Amaya).
            However, there are also add-ons for existing browsers including
            <em>Internet Explorer</em> and <em>Mozilla</em>.
          </p>
          <p>
            A major goal of Annotea is to re-use as much existing W3C technology
            as possible - consequently, open standards like RDF, XPointer, XLink
            and HTTP are used extensively. This simplifies extending Annotea and
            interoperating with other annotation systems. Another interesting
            aspect of Annotea is that annotations are typed with types defined
            by the users, allowing classification of annotations into classes
            like <em>comment</em>, <em>erratum</em> etc.
          </p>
          <p>
            While other approaches have a particular user interface included,
            Annotea is user interface independent. Clients can be implemented
            based on the standard protocols defined by the Annotea project.
          </p>
          <p>
            Finally, privacy and scalability concerns are circumvented by
            using multiple decentral annotation servers instead of a single
            server. This both allows collaboration among multiple users or even
            user groups (unlike client-side storage) and at the same time
            assures that the groups using a server can keep their information
            private.
          </p>

          <p>
            While annotation tools often are targetted at collaborative work,
            revisitation tools are usually single-user oriented. Privacy
            issues pose a major challenge when such information is used
            for collaboration, but especially small, limited groups where
            all participants know each other profit heavily from an integrative
            and collaborative approach to revisitation and annotation in the
            Web context.
            While challenging, finding a well-integrated solution for providing
            such services to a community may significantly change the way the Web
            is used. Obviously, such an approach should be based on and extend the
            models used for single-user revisitation and annotation tools.
          </p>
        </srf:subsection>

        <srf:subsection id="RWColl" title="Collaborative Web Usage">
          <p>
            A good starting point to find out why a tool for collaborative
            <em>Web usage</em> is needed is <cite>[Twidale]</cite>.
            It draws from some findings on how conventional libraries are used by
            students - namely, often in a collaborative manner - and these
            findings can be transferred to World-Wide Web usage.
            One interesting idea in this work is that not only information, but
            also people are considered an important thing one can search for:
          </p>
          <blockquote cite="Twidale">
            <p>We believe that browsing for people, their electronic
            representations or representations of their activities, is a
            neglected and important area.</p>
          </blockquote>
          <p>
            For a digital library that allows collaboration, the authors propose the
            following communication aspects:
          </p>
          <ul>
            <li>
              direct information exchange between individuals: "do you know?"
            </li>
            <li>
              direct information exchange between an individual and a group:
              "does anyone know?"
            </li>
            <li>
              <em>Searching for experts</em>: "who might know?". This can be
              implemented by profile matching (see the coherence with
              <a class="crossRef" href="RWRecSyst" />).
            </li>
            <li>
              <em>Coordinated searching</em>, which involves a lot of communication between
              participating users during the actual search.
            </li>
            <li>
              Making contacts. "For example, if a record is kept of books borrowed,
              or electronic documents inspected, then two users with overlapping
              'browsing habits' might be put in contact. Alternatively, if the system
              maintains 'interest profiles' for many of its users, these could be
              grouped together using a clustering algorithm."
              (As proposed in <a class="crossRef" href="RWRecSyst" />.)
            </li>
            <li>
              <em>Personal recommendation</em>:
              In this case, individuals are notified of the search results.
              <dfn id="grRec" title="group recommendation">Group recommendation</dfn>
              is basically the same except that a whole group is notified.
              In <em>similar searches</em>, this activity is
              done automatically, by discovering people who may be interested in
              the information via heuristics like their browsing behavior and
              passing the information on to them
              (see <a href="#Def_SerendipitousAltruism">serendipitous altruism...</a>).
            </li>
          </ul>

          <p>
            <cite>[Marais]</cite>
            define <dfn id="coopSurf">cooperative surfing</dfn> as activity
            of a community of users who cooperatively and asynchronously build
            up knowledge structures relevant to their group.
            They discuss design options and describe their own approach
            <em>Vistabar</em> that supports this activity.
            The options given include <em>custom browser</em>,
            <em>browser plug-in</em>, <em>applet</em>, <em>parasite</em>
            and <em>proxy</em>. A <dfn id="parasite">parasite</dfn> is defined
            as <q cite="Marais">an application that attaches itself to
            another executing application and is able to monitor and control
            it through a published
            <acronym id="api" title="Application Program(ming) Interface">API</acronym>.</q>
            These are analyzed
            according to the following criteria: <em>control over browser</em>,
            <em>monitoring</em>, <em>persistent presence</em>, <em>own UI</em>,
            <em>UI integration</em> and <em>extensibility</em>. In their discussion,
            the two most promising options were proxy and parasite, but as proxies
            lacked some features they required (lack of control because of caching,
            browser display cannot be driven etc.), the parasite approach was chosen.
            Their tool, for which they have coined the term <em>browserware</em>
            which stands for software components that are both aware of the browser
            and the user, supports features like a searchable index on all visited
            pages (based on the NI2 library which is also used by AltaVista),
            finding similar (related) pages, classifying pages, finding referring
            pages and associations to real world items via barcodes.
          </p>
          <p>
            A feature that may be particularly interesting for determining which
            sections of a larger document a user is interested in is also explained:
            <em>zipping</em>. This is done by determining the sections and subsections
            via their tags (<code>H1</code>, <code>H2</code>, etc.) and then allowing
            the user to collapse or expand those sections.
          </p>
          <p>
            For cooperative surfing in the context of <cite>[Marais]</cite>,
            bookmarks and annotations are supported. An interesting feature
            concerning bookmarks is that it is possible to store unclassified
            bookmarks which are automatically classified by the system. Other users
            may then change the classification if it doesn't fit well.
          </p>

          <p>
            A more recent, proxy-based approach is discussed in
            <cite>[Cabri]</cite>.
            In that work, synchronous browsing, which includes chat facilities and
            the like is the main center of attention. An architecture for a
            proxy-system that supports synchronous browsing is explained after a
            discussion on the different options: server-, client- or proxy-side.
            In fact, what is used is a combination of a proxy that also changes the
            documents it serves and applets that provide the client-side
            functionality (these are embedded into the original pages by the proxy).
            The features of the implemented system include user-management,
            caching pages, modifying pages, informing users which pages other users
            have retrieved and changing the colors of links that have been followed
            or that returned errors. An additional feature that may be interesting
            especially in an academic context is <em>master-slave browsing</em>,
            which allows one user to have all other users see the pages he selects.
            This may be also interesting for teams that want to watch each other's
            sessions simultanuously (of course, it would be a different feature as
            in this case, one would talk of <em>joining into a session</em>).
            Finally, images can be wrapped into applets so that they become sort
            of a shared blackboard, where users can point to areas within the
            image as well as painting into the image.
            The performance of the system is shown to be no hindrance to Web
            browsing.
          </p>

          <p>
            A broad overview on collaborative Web usage is also given by
            <cite>[Greenberg]</cite>. One very interesting finding reported
            therein is that voice communication is very important for real
            time collaboration, but has not been implemented by most systems.
          </p>

          <p>
            <cite>[Greenberg]</cite> then introduces <em>GroupWeb</em>.
            <em>GroupWeb</em> is implemented as an own Web browser,
            which allows some more features at the expense of forcing users to
            use another browser instead of the browser they are used to.
            In <em>GroupWeb</em>, <em>master-slave browsing</em> is also supported
            but here it is even possible to synchronize the scrolling of the page.
            Furthermore, telepointers allow participants to point to interesting
            parts of the pages currently displayed.
            Like in other approaches, group annotations are supported.
          </p>

          <p>
            In <cite>[Dieberger2000]</cite>, <em>CoWeb</em>, a collaborative
            Web space is introduced. It allows people to change the content
            and create new pages easily. Furthermore, discussions are supported.
            An interesting feature is that access history is visualized so that
            users can easily find out when other users have been visiting a
            page. This increases the community awareness. On the other hand,
            the architecture - a single Web server - limits the scope of the
            system significantly.
          </p>

          <p>
            As the objective of the present work is building an innovative tool
            for collaborative Web usage, the other approaches must be carefully
            examined and existing ideas must be integrated with approaches that
            have not previously been considered for collaborative Web usage.
            An important question to ask is "what is missing in those approaches?"
            The objective of finding a solution that integrates approaches
            - generalizing them - may lead to a system that either cannot be
            implemented or cannot be used, due to its complexity.
            Thus, a way must be found so that the integration simplifies instead
            of making things more complicated.
          </p>
        </srf:subsection>
      </srf:section>
    </srf:chapter>


    <!-- ===============       SECTION 2  CONCEPTS       =============== -->

	<srf:blankpage /><!-- assure it gets printed on 31 instead of 30 -->
	
    <srf:chapter id="Concepts" title="Relevant Concepts">
      <p>
        In this section, various concepts that are relevant to an integrated approach
        to collaborative Web usage are introduced.
      </p>
      <srf:section id="Collaboration" title="Collaboration">
        <p>
          <dfn id="dCollaboration" title="collaboration">Collaboration</dfn>
          is the process of multiple people or groups working together with
          a common goal.
          For example, a group of scientists working in the same field and
          sharing the results of their individual research do collaborate.
          While this could also be called
          <dfn id="cooperation">cooperation</dfn>, the
          relationship between people involved in collaboration is considered
          much closer. In particular, while cooperation may take place between
          competing parties, there's an atmosphere of trust and sharing
          information in a collaborative environment, and there is much more
          of a team spirit (<cite>[Maxwell]</cite>).
          Therefore, two competing companies may cooperate in the specification
          of a new standard that both are in need of - but this would not be
          called collaboration.
        </p>
        <p>
          This implies an important relationship between the terms
          that shall be made explicit:
          collaboration can be seen as a more specific description of
          working together than cooperation.
          Instances of collaboration are usually instances of cooperation,
          but instances of cooperation are usually not instances of
          collaboration.
          Therefore, providing a means for collaboration includes
          support for cooperation as well.
        </p>
        <p>
          While the difference between cooperation and collaboration is
          slight and the terms are used interchangeable in many contexts,
          the difference is important for
          collaborative Web usage, because the main aspect of
          working together in this context is sharing information
          in a very trustful manner. Thus, the
          attitude of people (or organizations) involved should allow
          sharing that information, and a system supporting
          collaborative Web usage may provide less information
          in an environment where people involved do not trust
          each other.
        </p>
        <p>
          Therefore, the difference between cooperation and collaboration
          within such a system may become apparent by the access permissions
          granted to the cooperating or collaborating parties.
          Naturally, cooperating parties would have
          more restrictive permissions than collaborating parties.
        </p>
        <p>
          The present work focusses on collaboration in the process of finding
          and dealing with information on the Web, as opposed to the creation
          of content for the Web.<!-- there is work on that... but I don't
          remember where and am too lazy too look it up now! -->
          This collaborative process can be supported with means for efficient
          communication (see <a class="crossRef" href="ConceptCommunication" />),
          as well as storage and visualization of both the path
          that lead to useful information and the information itself
          (see <a class="crossRef" href="WebNavigation" />). While
          visualization is only done in a textual manner in the present work,
          graphical visualizations of the paths leading to useful
          information is quite an interesting field relevant to the
          present work that would have been adressed if more time had been
          available.
        </p>
      </srf:section>

      <srf:section id="Communities" title="Communities">
        <p>
          The groups of people that are involved in such collaboration are termed
          <dfn id="dCommunities">communities</dfn> in this context.
          Communities can be created by users of the system, by privileged
          users (e.g., administrators) or by the system itself (automatically
          created communities).
          The people who belong to a community are called
          <dfn id="Members" title="members (of a community)">members</dfn>
          and their status of belonging to the group is called
          <dfn id="Membership" title="membership (of a community)">membership</dfn>.
          While the most obvious way of determining membership
          is by explicitely joining or leaving, communities can also be formed
          automatically.
        </p>
        <p>
          For example, if users have profiles including data about their
          interests, they can be matched into communities by matching these
          profiles. This can help bringing people with similar
          interests together. The profiles might also be deduced automatically,
          for example, by analyzing the pages that those users have retrieved
          (as described in <a class="crossRef" href="RWRecSyst" />).
        </p>
        <p>
          Another example are communities of visitors of Web pages. In a way,
          these communities exist even when they have no members. A person
          becomes a member of the community of current visitors of a Web page
          when he enters the page, and leaves the community when he leaves the
          page. However, he still is a member of the community of people who have
          visited that particular page in the past.
        </p>
        <p>
          This leads to the temporal aspect of membership
          (<dfn id="durationMembership">duration of membership</dfn>):
          in some communities, people quickly become members and leave after a
          short period of time,
          while with other communities, they remain members permanently once
          they have joined.
          Another temporal dimension is the
          <dfn id="durationCommunitySelf"
               title="duration of existence of a community">duration of existence of the community</dfn>:
          some communities
          may only exist for a short period of time while others last from the
          start of the system until the system is shut down permanently.
          In particular, some communities will cease to exist when they have
          no more members while others remain.
        </p>
        <p>
          Finally, membership can be open to everybody or restricted. For
          example, the owner of a group (or moderator) may have to approve
          each new member.
          Another mode of restricted membership is approval of other members
          (either all, a certain percentage or at least one member).
        </p>
      </srf:section>

      <srf:section id="WebNavigation" title="Web Navigation">
        <p>
          This section describes various aspects of navigating the Web.
        </p>
        <srf:subsection id="WebNavigationDocuments" title="Documents">
          <p>
            When a spatial metaphor is used, documents in the Web are like
            places that can be visited. There are a few technical details
            specific to the current World Wide Web providing a basis for a
            conceptual understanding of documents on the Web: traditionally,
            a document is a file on the server's filesystem. This file may
            consist of various sections and is stored in a folder. Very often,
            files stored in the same folder also have content that is related.
            Finally, a Web site resides on a specific domain, and very often,
            the pages of a domain are also related.
          </p>
          <p>
            Thus, from a more abstract perspective, the most obvious piece
            of information is a <dfn id="document">document</dfn>:
            The document is usually displayed as
            a continuous piece of information (e.g., a page in browser, in which
            the user may scroll), may be stored as a file on a server or is
            retrieved from the server through a single request.
            Within such a document, there are
            <dfn id="docLoc" title="document locations">locations</dfn>
            (reached by scrolling, could be selected or highlighted - or pointed
            to via the mouse pointer) and particular
            <dfn id="docSec" title="document sections">sections</dfn>
            (often having headlines or names, sometimes accessible through inline links).
            Documents are related in many ways to other documents.
            Such relationships between documents include:
          </p>
          <srf:newpage />
          <ul>
            <li>
              stored in the same (logical) folder on the server (as defined by
              its URI)
            </li>
            <li>stored on the same (logical) host (as defined by its URI)</li>
            <li>related via a hyperlink (source or target of that link)</li>
            <li>
              related via multiple hyperlinks (for example two documents that
              are link targets from the same source, see
              <a class="crossRef" href="RWHyperlinkAnalysis" />)</li>
            <li>
              related by content (similar content, content of page A required to
              understand content of page B and the like)
            </li>
          </ul>
          <p>
            Such relationships play an important role when Web navigation
            shall be understood because they allow viewing the data on various
            levels of abstraction. Sometimes it may be interesting to know
            exactly what location of a document most users spent most time on, while
            in other situations, the focus may be on how users navigate through
            many documents related to one topic to documents related to another
            topic.
          </p>
          <p>
            Some of these relationships are
            technically difficult to analyze. For that reason, an approach
            based on technical simplicity (e.g., analyzing the URI string) may
            be more appropriate than trying to discover and model more complex
            and potentially more interesting relationships. However, human users
            may often have a good intuition about relationships that could hardly
            be discovered automatically. In a collaborative system, such intuition
            could be collected and used to enhance the experience for all users.
          </p>
        </srf:subsection>
        <srf:subsection id="WebNavigationLinks" title="Following Links">
          <p>
            As reported in
            <a class="crossRef" href="TrackingNavigationBehavior" />, the
            most common navigation action is following a link.
            In the common environment (at the time of this writing), where
            Web content is usually viewed on desktop computers, a
            <dfn id="followLink" title="following a link">link is followed</dfn>
            by pointing to a marked area within the visual representation of
            the document, and clicking. The Web browser then usually replaces
            the current document with the document the link points to.
            As mentioned in
            the preceding section, this also implies a relationship between
            the two pages involved. With the current Web which is based on
            <acronym id="html" title="HyperText Markup Language">HTML</acronym> and
            therefore the relatively simple hyperlink model of HTML,
            that is actually all there is to say about links.
          </p>
          <p>
            However, another finding presented in
            <a class="crossRef" href="TrackingNavigationBehavior" /> indicates
            that the unidirectionality of the HTML hyperlinks is rather
            unnatural: namely, the frequency of usage of the back button.
            The existence of the back button in every browser already indicates
            that moving backwards to the origin of a link is a very important
            action in Web navigation and thus needs to be modelled. The fact
            that the back button is one of the most frequently used navigation
            actions also indicates that users do have a concept of
            "moving backwards" on the Web, even if this concept is not a part
            of the underlying hyperlink model.
          </p>
          <p>
            Another shortcoming of the HTML hyperlink model is that it does
            not explicitely define the action that the user agent is performing
            as a result of the user activating the link.
            While originally, the current page is simply replaced with the destination
            of the link, it may also be that the content of another frame or
            window is replaced, or a new window is opened, in which the
            target is displayed. Other possibilities are jumping to another section
            in the same document (possible in HTML, but not explicitely modelled)
            or adding the contents of the target in the current document at the
            location of the link.
            Furthermore, the user may choose to open
            a new window for the target as well as just storing the target
            to disk, or any other of the previously mentioned behaviors.
          </p>
          <p>
            Even though better hyperlink models that contain such functionality do exist
            (for an example, see <cite>[XLINK]</cite>), these are currently not
            very broadly used on the Web, which limits the usability of an
            application relying on these advanced models significantly.
          </p>
          <p>
            Finally, a user may also choose to manually enter an URI that shall
            replace the currently displayed page (or be displayed in a new
            window). In this case, the new document is usually not related to
            the previously displayed document - however, such an action may also be
            seen as following a hyperlink.
          </p>
        </srf:subsection>
        <srf:subsection id="WebNavigationHistory" title="Session History">
          <p>
            Another concept that is somewhat related to findings in
            <a class="crossRef" href="TrackingNavigationBehavior" /> is
            that of a session history. From the fact that the recurrence rate
            has been very high in the experiments mentioned there, it can be
            deduced that the documents a user has visited are very important, and
            it may follow that the same applies to documents visited within a
            community of users with a common goal.
          </p>
          <p>
            A user's <dfn id="History">history</dfn> is the sequence of
            navigation actions the user has performed while browsing the Web.
            These navigation actions can be accumulated in sessions. There are
            a few <em>natural</em> attributes of sessions, including:
          </p>
          <ul>
            <li>start/end time and therefore duration</li>
            <li>entry point (first visited document)</li>
            <li>the visited documents</li>
          </ul>
          <p>
            Furthermore, the user may add information to the session to make it
            more useful for later reuse and finding it among a large number
            of sessions:
          </p>
          <ul>
            <li>a name and/or description</li>
            <li>
              a type of session (e.g., searching for particular information,
              browsing to get an overview)
            </li>
          </ul>

          <p>
            The actual history (<abbr id="ie" title="id est">i.e.</abbr>, what the user did during a session) can
            be stored in many different ways and it seems that there is no
            unified approach that suits all needs perfectly. Five approaches
            shall be outlined here:
          </p>
          <ul>
            <li><strong>Time-Oriented Model ("simple event logfiles"):</strong><br />
              All actions (i.e., following a hyperlink, clicking the
              back button, opening a new window etc.) are stored sequentially in the
              order in which they are performed.
              This is the most simple and straightforward way of storing User
              Sessions. It requires no particular logic except capturing those
              actions with all their relevant parameters and storing them.
              An advantage of this approach is that no information is lost, as
              the user input is completely stored and can thus be completely
              reproduced.
              However, for most applications these logfiles will
              usually have to be converted into one of the following models
              because they contain too much information with too little
              structure. The underlying model is a simple list.<br />
              This model could be considered the generic model for representing
              sessions but cannot be used itself for most applications.
            </li>
            <li><strong>Display-Oriented Models:</strong><br />
              In this model, the windows and/or frames which are used to display the
              content are the central element.
              Within such a window or frame, any of the other models could be used
              for storage. For example, some structure could be added to the
              time-oriented model by grouping the actions according to the locations
              where they take place (e.g., frames and windows).
              This model is quite useful for capturing parallel sessions, where the
              user uses multiple windows and/or frames at the same time.
              One way of displaying the data in this model is by sequence diagrams
              as they are defined by the
              <acronym id="uml" title="Unified Modelling Language">UML</acronym>.
              Each window and/or frame is modeled as an object.
              Links can be modeled with method-calls either on the same window or
              pointing to another window.
              New windows can be opened (object construction) and closed
              (object destruction).<br />
              One way of representing this model is within some sort of matrix or
              optimized matrix (the resulting matrices are always very sparse, thus
              it makes sense to only store the elements that actually contain
              information). In such a matrix, the columns are the windows and/or
              frames and the rows can store pages, links or actions in a timed
              order. Two elements on the same row have happened concurrently, or
              represent a concurrent state (e.g., two pages being displayed at the
              same time in two different windows).
            </li>
            <li><strong>Document-Orientated Models:</strong><br />
              The document-oriented model puts the pages the user visits
              into a tree- or generic graph structure.
              Each new page is stored as the child of the page that it has been
              linked from.
              The hyperlinks in the document are the edges in the representation.
              While the nodes in this model are relatively simple (representation of
              the document, e.g., by its URI), the edges can get quite complex if
              no information shall get lost. For example, there may be different
              instances of hyperlinks in the source document pointing to the same
              target document, and it may be important to be able to distinguish those
              (of course, this problem exists in all approaches - but it is special
              in this case as such information is stored in the edges).
              Also, the specific action that is taken when a user uses a hyperlink
              may have to be stored (e.g., replace current document, open target
              in new window, save target to disk) and in many cases this may
              be very hard to model within a simple tree.<br />
              Furthermore, usage of the back button, manually entering URIs or using
              bookmarks or history - in other words: ways of replacing the current
              document with another document without using a hyperlink on that
              current document - must be modelled somehow and this is not trivial
              with the given model. There are a lot of options for
              storing new windows, cycles and other behaviour common to browsing
              the Web, some of which would require giving up the tree structure.
              For example, if two nodes pointing to the same URI are considered
              identical, using the back button would create an edge to the parent
              node of the current node.
              Therefore, the document-orientated model is not even one model but
              actually a rather general class with a diversity of possible instances.
              An in-depth discussion of this subject is beyond the scope of this
              work.<br />
              Document-oriented models may provide a very good basis for
              an intuitive graphical representation of a user's history, as
              it is probably close to how users perceive their own browsing
              behavior.
            </li>
            <li><strong>Link-Orientated Models:</strong><br />
              As the edges in the document-oriented model may become quite
              "heavy", an alternative may be using the way a document is reached
              (e.g., hyperlinks) as nodes, and the actual documents as edges.
              That way, edges contain only little additional information (URI
              of the document should be sufficient) and the nodes can be quite
              complex.
              While this may result in a more "natural" graph
              (rich nodes, light edges), and solves a few
              problems (e.g., manually entering an URI or using a bookmark can
              be modeled nicely as a node to which the resulting document is
              attached as an edge), it cannot be used to represent the most
              interesting structures in the Web: documents that link to many
              other documents can become "hubs". Therefore, this model is
              probably not useful for most applications. However, it leads
              to another option where both documents and links are modelled
              as nodes:
            </li>
            <li><strong>Document-Link Models:</strong><br />
              The synthesis of the previous two models is a directed graph
              where both documents and links (i.e., transitions between
              documents and events that cause documents to be displayed)
              are represented as nodes that are connected with simple edges.
              This approach has none of the limitations the previous
              two approaches had and could be used for visualizing the user
              history as well as analyzing how the Web is used.
              As the time-oriented model is sufficient for the present work and
              document-link models are much more useful with graphical visualizations
              that are not within the scope of this work,
              further work should develop actual models based on this approach.
            </li>
          </ul>
          <p>
            For a more in-depth discussion of user sessions and browsing contexts
            see <cite>[Kraus]</cite>.
          </p>
          <p>
            The session history is always recorded passively, without user
            interaction. However, for privacy reasons the users should be given
            the opportunity to switch history logging on and off and feedback
            should be provided about the state of history recording.
            For information on whether this feature is implemented in current
            browsers, see <a class="crossRef" href="FullFeatureMatrix" />.
          </p>
          <p>
            A format that could be used for user sessions is
            <cite>[LOGML]</cite>, which is based on
            <cite>[XGMML]</cite>.
            However, this format does not provide means to capture the user
            actions and thus would have to be enhanced significantly for
            this purpose.
          </p>

        </srf:subsection>
        <srf:subsection id="WebNavigationBookmarks" title="Bookmarks">
          <p>
            While the session history is recorded passively, without user
            interaction - and thus, there will usually be a lot of useless
            information recorded - bookmarks (also known as favorites or
            hotlists) are actively created by the user when he has found a page
            he finds interesting and that he thinks he wants to revisit.
          </p>
          <p>
            Aside of the location of the document that the bookmark represents,
            further information may be useful for later retrieval:
          </p>
          <ul>
            <li>title of the document</li>
            <li>thumbnail representation of the document</li>
            <li>date of bookmark storage</li>
            <li>date of last visit</li>
            <li>number of visits</li>
            <li>description, keywords, categorization</li>
          </ul>
          <p>
            One problem that occurs in multi-user-environments is that of
            <dfn id="bmIdendity" title="problem of identity of bookmarks">identity</dfn>:
            with a single user, the identity of the bookmark is
            simply given by the document it represents. With multiple users,
            however, there may be different additional information, so that
            either some concept of ownership needs to be implemented, or
            multiple instances of bookmarks to the same document need to be
            stored (and the relationship between them somehow needs to be
            stored as well).
          </p>
          <p>
            While bookmarks are usually stored separately from the history,
            having bookmarks that are connected to the history might provide
            some additional context which can be helpful. However, as this
            is further additional information making the bookmark much more
            specific, the problem of identity becomes even worse unless it is
            again defined by the document (that is two bookmarks pointing to the
            same document are considered equal).
          </p>
        </srf:subsection>
      </srf:section>
	<srf:newpage />
      <srf:section id="ConceptCommunication" title="Communication">
        <p>
          In a system that supports collaborative Web usage, multiple types
          of communication can be thought of. The first important dimension to
          consider is asynchronous <abbr title="versus">vs.</abbr> synchronous communication. In
          <dfn id="AsyncComm">asynchronous communication</dfn>,
          the <dfn id="recipient">recipient</dfn> receives the messages
          independently of the <dfn id="sender">sender</dfn>,
          possibly at a much later time. Sender
          and recipient need not be online simultanuously, and messages are
          stored persistently.
          Typical examples are mail, eMail, newsgroups and fax messages.
          A message on an answering machine is also a piece of asychronous
          communication.
        </p>
        <p>
          With
          <dfn id="SyncComm">synchronous communication</dfn> on the other hand,
          all the participants of the communication need to be present at the
          same time. Messages are received instantly and usually responded to
          quickly.
          A typical aspect of synchronous communication is that it
          is less structured than asynchronous communication, and the messages
          are usually much shorter.
          While asynchronous communication must be stored persistently by
          principle, most synchronous communication is not even suitable
          for being stored for later review due to its lack of structure.
          In fact, if such synchronous communication is stored persistently
          and made accessible to future recipients,
          it automatically becomes a form of asynchronous communication.
          Examples include face-to-face conversations,
          phone conversations or online chats.
        </p>
        <p>
          Another important dimension is
          <dfn id="moderatedComm" title="moderated communication">moderated</dfn>
          vs. <dfn id="unmoderatedComm">unmoderated communication</dfn>.
          While the common form of communication is
          <dfn id="unmoderated" title="unmoderated communication">unmoderated</dfn>,
          an intermediate <dfn id="moderator">moderator</dfn> can improve the quality
          of the communication by filtering messages that are not appropriate for
          the given context. Such a moderator may be a human being that gets
          messages for review, but it could also be a software agent that filters
          messages, for example if they contain certain keywords.
          <dfn id="modSyncComm" title="moderated synchronous communication">
            Moderated synchronous communication</dfn> may have sufficient structure
          and quality to be stored persistently and thus be reused as a form
          of asynchronous communication.
        </p>
        <p>
          Another important question concerning communication is whether it's
          one-to-self, one-to-one, one-to-many or many-to-many. For the present
          context, storing notes is also considered communication. That is the
          first case:
          <dfn id="one-to-self"  title="one-to-self communication">one-to-self</dfn>.
          These are messages that only the author of
          the message reads.
          While such communication is usually referred to as <em>notes</em>,
          considering this a special case of communication provides a good
          basis for integration of originally different things.
          A more typical form of communication is
          <dfn id="one-to-one" title="one-to-one communication">one-to-one</dfn>,
          where two people communicate with each other. These two forms of
          communication can be considered non-public. Private chats or eMail
          are typical examples.
        </p>
        <p>
          If there is one author and many recipients, with no or limited
          possibilities of the recipients to give the author feedback, that is
          called <dfn id="one-to-many">one-to-many communication</dfn>.
          An example within the context of
          a system for collaborative Web usage are notes stored on Web pages,
          that are publicly visible. A more general example is the publishing
          of Web pages itself.
        </p>
        <p>
          A typical example for
          <dfn id="many-to-many">many-to-many communication</dfn>
          are mailing-lists or
          newsgroups. Within the given system, communication within communities
          will usually be of that nature.
        </p>
        <p>
          Finally, and partly related, is the
          <dfn id="ScopeOfComm">scope of communication</dfn>. While
          in one-to-self and one-to-one, this is restricted by the type of
          communication, the information from one-to-many and many-to-many
          communications may be accessible to few or many people.
          For example, an annotation on a document is usually an instance of
          one-to-many communication. However, it may be visible only to a
          certain community or to all visitors of the document. In this respect,
          one-to-self communication can be seen as a special case of one-to-many
          communication, where the scope is only the author himself.
        </p>
      </srf:section>

      <srf:section id="Categorization" title="Categorization">
        <p>
          In a system for collaborative Web Usage, categorization plays an
          important role in many of the subsystems. A very good way to keep
          bookmarks usable is putting them into categories. If the number of
          communities exceeds a certain threshold, only categorization of
          communities will help the user find a community he is looking for
          (or finding out that community does not exist). Finally, if
          messages are stored persistently, communication will be much improved
          by allowing the user (automatically) putting the messages into
          folders, which are in fact again: categories.
        </p>
        <p>
          A particular problem that has to be solved in a multi-user environment
          is that there may be a lot of categories, possibly too many for a
          single user to keep up with.
          Furthermore, often there are different ways of categorizing the same
          things - often more a matter of taste than something that can be
          decided once and for all.
          Thus, a mechanism is needed to reduce
          the cognitive overload with too many categories for a single user
          while still allowing every user to access every category if they need
          to. In particular, if different ways of categorization exist, it must
          be possible to have the coexist without confusing users.
        </p>
        <p>
          A solution to this problem is keeping a general tree (or possibly
          a general graph) that includes
          all categories of all users, and user specific views that include only
          a subset of the general tree. If a user adds a category, he needs to
          decide where it belongs in this general tree (that is, which is the
          parent category of the new category). Thus, consistency is
          assured as it is not possible to add categories without awareness of
          the context (unfortunately, this does not prevent users from accidentally
          or intentionally putting categories where they do not belong).
          It may be useful to allow the same category having multiple parent
          categories (breaking up the tree structure into a more general graph).
        </p>
        <p>
          This general tree may grow to any complexity. For each user, however,
          there is a subset of this general large category tree, that only
          includes those categories that the user is interested in.
        </p>
        <p>
          From the perspective of datastructures, this means that in addition
          to the general tree, the user configurations need to be stored.
          The user specific tree configuration does not contain any
          categories - only whether or not a category from the main tree is
          displayed below a specific parent category.
          It is important, however, that it is not only possible to
          hide subtrees, but also paths. That way, it is possible to hide
          a complex structure while still providing access to a category
          anywhere within that structure.
        </p>
        <p>
          Furthermore, the items stored under a given category <em>C</em> may
          be visible to its parent category <em>D</em> if <em>C</em> is hidden
          (inheritance of a category's items to its parent category).
          That way, all items are always available. However, hiding items with
          their categories must also be possible (this depends on the
          particular use case).
        </p>
        <p>
          With such a special tree, additional actions are required, while in
          common trees, there are only three interesting actions: select an
          item, show children and hide children. For the multi-user-tree,
          the following additional actions need to be defined:
        </p>
        <ul>
          <li>
            <strong>Hide Node and its Subtree:</strong>
            Hides a node (e.g., category) and all its ancestors from the view.
            If the edge is store (parent node and node), this can be used to
            hide a category in one place while keeping it below another category.
          </li>
          <li>
            <strong>Show all Nodes:</strong>
            This is the reverse action to the previous action. As hidden nodes
            cannot be selected, only their parent nodes can be selected and all
            their children be put back to view. Depending on the user interface
            implementation, a more convenient method could be some sort of
            popup menu that allows selection of the desired node from a list
            of all hidden nodes of a given parent node.
          </li>
          <li>
            <strong>Hide Node and inherit Children:</strong>
            This can be used to flatten a deep tree. The node itself is hidden
            and all its children are shown as children of the node's parent node.
            However, the <em>weight</em> of the parent node may be significantly
            decreased this way. One consequence of the availability of this
            action is that the tree should be designed as deep as possible, with
            only few children for each node. While flattening such a tree is
            very easy with this feature, making a flat tree deeper is not
            possible.
          </li>
          <li>
            <strong>Shortcut Path:</strong>
            While in the previous action, all children of the hidden node are
            added to the node's parent node, this only adds a specific child.
            If repeatedly done, this allows removing complexity significantly,
            making a dense and rich tree very sparse.
          </li>
          <li>
            <strong>Inherit / Hide Items of Invisible Categories:</strong>
            A distinction must be made between categories and the items that
            belong to these categories. If this distinction is made, it is
            possible for each node that is hidden, to either hide or include
            the items belonging to the category represented by that node.
            With shortcut paths, it is necessary to allow inheriting items over
            multiple levels.
          </li>
        </ul>
        <p>
          For the usage of such a categorization in a system for collaborative
          Web usage, it may be useful to allow users using the view
          configuration of their fellows. That way, they can profit of the
          effort others have put into customizing their categories.
        </p>
        <p>
          Furthermore, default profiles could be provided with communities, so
          that each community could have its own categories while still being
          compatible with both its members's categories as well as the global
          set of categories (of which the member's categories are a subset).
          That way, a user
          could choose between the personal profile of himself or one of his
          fellows, and a public profile of one of the communities he is a member
          of.
        </p>
        <p>
          Future work may elaborate further on this, as researching this new
          approach to community-trees was not a priority of this thesis.
        </p>
      </srf:section>
      <srf:section id="Privacy" title="Privacy and Security Issues">
        <p>
          As the system is intended to capture a lot of information of and about
          its users, privacy is a major concern.
          In this section, the problem is generally discussed without going too
          much into details or solutions of the problems introduced.
          Privacy and security form an own scientific discipline which lies
          beyond the scope of this work - the section is included to point out
          the relevance of this discipline to the present work.
        </p>
        <p>
          While a maximum protection of
          privacy may be an important criterion for many users
          (see <cite>[Pitkow]</cite>), this conflicts with
          the intention of making the Web more personal and support collaborative
          Web usage. Thus, the challenge in this issue is balancing the protection
          of privacy with the display of personal information. One dimension of
          this is how much data is available about each user to which other users.
          <cite>[Terveen]</cite> suggested letting the users progressively reveal
          more about themselves, while they get to know the fellow users better
          (this is common practice with dating services).
        </p>
        <p>
          Another, but more fundamental, dimension is the architecture of the
          system, which has a major effect on the applicability of privacy
          concerns.
          If data is captured and stored on the clients alone, private data stays
          on private computers and as long as no one gets access to the computer,
          no privacy problem arises.
          This approach has been followed for instance by <cite>[Laurent]</cite>.
          However, collaboration can only take place if users exchange their
          data via other media (e.g., eMail or Web pages) - which is cumbersome in
          this approach.
          In fact, such a system does not support collaboration by itself, at all.
        </p>
        <p>
          A better solution is capturing and storing the data at some place that
          is only accessible by the team involved in collaboration. That way,
          the team members can only access other team members' data. Of course,
          the team members must have a trusty relationship. In this scenario,
          privacy issues do arise - however, it is an environment which is
          relatively easy to control and find consensus in, about measures against
          misuse of the data. A disadvantage is that team members can only use
          the system within the given boundaries.
        </p>
        <p>
          The most challenging architecture is a system that can be accessed
          from anywhere on the Internet. This does have some advantages: teams
          may connect from all over the world, users can use their accounts from
          all over the world - a lot more people use the system and thus
          a lot more information is available. Some possible features
          (e.g., collaborative filtering or synchronous communication with people
          on the same Web page) only make sense or even only are possible with
          a very large user base, which can only be attained in
          such an environment. However, privacy issues become a major concern
          with that architecture. Not only must it be secured well against hackers
          which may steal and misuse the data (which is much harder when the
          system resides behind a firewall). The intended usage is also
          problematic, as most users will not know anything about the other users.
        </p>
        <p>
          In <cite>[Bellotti]</cite>, a very useful design framework is given,
          which is based on
          <dfn id="control">control</dfn> and <dfn id="feedback">feedback</dfn>.
          <em>User</em>s should be able to
          control what information about them becomes available to which other
          users and when information is being captured, the users should be
          provided with feedback on this.
          A system for collaborative Web usage must implement
          mechanisms that allow its users to control all data that
          becomes available about them.
          To a certain extent, forcing a user to explicitely grant other
          users access rights already provides him with feedback about
          what others can find out about him. Further feedback (e.g., if someone
          actually views the available information) is probably not needed
          unless users forget about their own settings after some time.
        </p>
        <p>
          This section illustrates that the architecture plays a major role when
          privacy and security concerns shall be discussed. In fact, there are many
          ways to build a system for collaborative Web usage, and depending on
          a chosen architecture, sets of features are possible or impossible.
          Therefore, the next section deals with possible architectures of which
          one is chosen. After that, a set of features for a prototype built on that
          architecture is discussed.
        </p>
      </srf:section>
    </srf:chapter>

    <srf:chapter id="Architecture" title="Possible System Architectures">
      <p>
        This sections discusses the options for an architecture of the system.
        There are basically two logical units for which decisions have to be
        taken. The first logical unit is called <em>server</em>, as it
        is responsible for collecting, keeping and distributing the data
        required for collaboration. The major criterion such a server must
        satisfy is the ability to collect data on where on the Web a particular
        user is currently located. This also includes the ability to create
        a history of the user's action on the Web. Keeping and distributing the
        data is much simpler and much more common to servers, and thus needs
        less attention.
      </p>
      <p>
        The second logical unit is termed <em>client</em>. Depending on the
        choice made for the server, there may be no particular criteria for
        the client - in fact, some of the server centric options require no
        particular client implementation at all. However, data can also be
        collected on the client - and it turns out that this is even much
        more useful. In that case, clients can implement the required server
        functionality which leads to peer-to-peer systems. However, peer-to-peer
        architectures are included in the server centric approaches as the
        implemented functionality is typical for servers.
      </p>
      <p>
        If a client centric approach has been chosen, the major decision that
        must be taken is how that client is technically implemented. Among other
        things, the client must implement common browser functionality, and thus
        a few possibilities to achieve that are introduced.
      </p>
      <p>
        A major design goal is to make using the system as easy, comfortable
        and unobstrusive to the user as possible. Furthermore, the current
        location of the user on the Web needs to be determined exactly.
        The current location is required for any functionality where users
        who concurrently browse the Web shall collaborate (e.g., synchronous
        communication with people on the same Web page or Web site).
      </p>
      <p>
        As system architecture is much easier to understand with visual
        illustrations, most options are discussed based on deployment diagrams
        from the UML
        vocabulary. UML has been chosen because it is the de facto standard
        for expressing system architecture and the vocabulary is simple but
        still sufficient for the given purpose.
      </p>
      <p>
        Some of the following approaches (except peer-to-peer and metabrowser)
        are also discussed in
        <cite>[Marais]</cite>, <cite>[Cabri]</cite>, <cite>[Pitkow]</cite>, and
        <cite>[Srivastava]</cite>.
      </p>
      <srf:section id="ServerLoc" title="Options from a Server Centric Perspective">
        <p>
          Firstly, four options are introduced, which can be considered
          server centric. That is, a perspective is taken where data collection
          is seen from the server. This perspective has some implications on
          the solution which will be discussed at the appropriate place. A more
          client centric perspective is subject of the following section.
        </p>
        <srf:subsection id="AtWebServer" title="Web Server: The Source of Content">
           <p>
             As all Web servers store access logfiles, which could be used to
             infer usage data as described in
             <a class="crossRef" href="RWUsageMining" />, locating a server
             for the system right on a Web server comes to mind.
             This may also simplify storing, manipulating and including
             annotations to the documents, as they are easily accessible on
             the location where they are stored, a reason why some of the
             solutions introduced in
             <a class="crossRef" href="RWRevisitationTools" /> follow this
             approach.
           </p>
           <p>
             As <a class="crossRef" href="DeploymentWebserver" /> illustrates,
             in addition to the HTTP server the components required for the
             functionality of the collaboration system are installed on
             the Web server machine.
             No modifications are required on the machines of the users of
             the system.
           </p>
           <srf:figure id="DeploymentWebserver"
                       src="diagrams/DeploymentWebServer"
                       summary="The Web client communicates with the Web server on
                                which also the components for collaborative features reside.
                                When the client communicates with other Web servers,
                                no collaboration features are available."
                       width="1001" height="581" scale="0.6"
                       preferredFormat="svg">
             <caption>
               Illustration of Locating the Server at the Web Server
             </caption>
           </srf:figure>
           <p>
             The major limitation of this approach is that it can only be
             used with a very limited part of the Web - namely the content
             that is served by the Web server where the system is installed.
             While this may be acceptable in certain environments (e.g.,
             students participating in a lecture, where collaboration is
             only supposed to take place concerning the lecture materials
             stored on the server), it does not fit the decentral nature of the
             World Wide Web. Even in the environment given as example in the
             previous sentence, this limitation becomes apparent as soon as the
             lecture material links to pages on external servers.
           </p>
           <p>
             One possible extension to this approach would be a system that
             can and will easily be installed on many different, possibly
             related Web servers. If such a system would reach a certain
             acceptance and be spread widely on the Web so that many servers
             accessed (e.g., Web servers of many Universities) do in fact
             support this kind of collaboration, the limitation would be
             overcome. However, it is not very probable that such acceptance
             is reached. Administration of Web servers already is a complex
             task, and adding such a system would probably be vetoed by most
             server administrators. This would be a Web server based approach
             enhanced with peer-to-peer services as discussed in
             <a class="crossRef" href="PeerToPeer" />.
           </p>
           <p>
             Finally, the data collected in logfiles may not be sufficiently
             exact concerning the current location of users on the Web.
             For example, if a user clicks
             the back button, he leaves the document he is currently visiting,
             without notification to the server. Thus, the server still
             treats the user as if he still was on that page (e.g., show the user
             as a current visitor, potentially send messages from a chat about
             that page to the user).
             Even worse: The previously viewed document is usually recovered
             from the browser's
             cache, so the server is not notified with the new location.
             This would prevent any sort of synchronous collaboration taking
             place on any of the documents
             (the original document as well as the document
             reached by clicking the back button), and the problem occurs
             with documents cached at the browser as well as with documents
             cached at an intermediary proxy.
           </p>
        </srf:subsection>
        <srf:subsection id="AtWebProxy" title="Proxy: Some Intermediary">
           <p>
             In this approach, instead of having the components of the system
             on one Web server, they are located on a proxy server. This
             solution has also been used for annotation systems as described
             in <a class="crossRef" href="RWRevisitationTools" />. It removes
             the major limitation of the previous approach because all documents
             retrieved through the proxy (that is all documents the user retrieve)
             are automatically included, not only those of a specific Web server.
           </p>
           <p>
             The architecture looks quite similar to the previous approach as
             can be seen in <a class="crossRef" href="DeploymentProxy" />.
           </p>
           <srf:figure id="DeploymentProxy"
                       src="diagrams/DeploymentProxy"
                       summary="The client accesses all Web content via an intermediary proxy.
                                That proxy also provides the components for collaboration.
                                It forwards the requests from the client(s) to the servers
                                and the responses from the servers to the clients."
                       width="1001" height="581" scale="0.6"
                       preferredFormat="svg">
             <caption>
               Illustration of Locating the Server at an Intermediary Proxy
             </caption>
           </srf:figure>
           <p>
             While in the previous approach all users accessing the
             given Web server could take advantage of the installed system,
             in the proxy-based approach only those with access to the proxy
             could use the system. Whether or not this is an advantage depends
             on what the system shall be used for:
           </p>
           <p>
             If collaboration shall take place among a group of people that
             accesses the Internet from a company behind a firewall, for example, and
             all the people who shall collaborate are behind that same firewall,
             the proxy can also be installed behind the firewall. That way, the
             users and their data are protected from access outside of the
             firewall, which is a major increase of privacy and security.
           </p>
           <p>
             However, if people from different locations and networks need to
             collaborate, this may be a restriction. The system could be
             installed accessible from anywhere on the Internet, so theoretically,
             the problem could be solved. However, if some of the users are
             behind a firewall that allows accessing the Internet only via its
             own proxy, they cannot use the system at all.
           </p>
           <p>
              Another disadvantage of this approach is that the Web browsers
              of clients must be configured to use the proxy, and just like
              with Web servers, many of the events that may be interesting
              cannot be captured (e.g., usage of the back button). While there
              is no caching of documents on other proxies (if there are no
              additional intermediary proxies between the collaborative proxy
              and the client), the problem with browser caches remains and
              therefore, the current location of the user cannot be determined
              with sufficient accuracy.
           </p>
         </srf:subsection>
         <srf:subsection id="PeerToPeer" title="Client: Peer-to-Peer">
           <p>
             While in peer-to-peer systems, no dedicated server exists - and
             thus this option may be expected in the following section
             (<a class="crossRef" href="ClientLoc" />), it is located here
             because it deals with distributing the data and can be used as
             an extension to the previous two approaches. Furthermore, it
             is seen as the complementary of the independent server introduced
             in <a class="crossRef" href="AtIndependent" />.
           </p>
           <p>
             In the peer-to-peer approach, the data is distributed among many
             nodes and each node only stores the data it is <em>responsible</em>
             for. In the diagram shown in
             <a class="crossRef" href="DeploymentPeerToPeer" />, this is the
             data specific to a user - as the <em>peers</em> are the user's
             clients, located on the user's machines.
           </p>
           <srf:figure id="DeploymentPeerToPeer"
                       src="diagrams/DeploymentPeerToPeer"
                       summary="All collaboration components exist on all
                                peers, data is shared between each of them.
                                In this diagram, the peers are the Web clients
                                and are implemented in a collaboration that also
                                provides browsing functionality. However, the
                                peer-to-peer architecture could also be used
                                for Web servers or proxies. An optional mediator
                                distributes addresses of the (peer-to-peer) clients."
                       width="1001" height="581" scale="0.6"
                       preferredFormat="svg">
             <caption>
               Illustration of a Peer-to-Peer Architecture
             </caption>
           </srf:figure>
           <p>
             A similar architecture can also be used to overcome
             some of the problems of the previous approaches. For example,
             if many Web servers are enhanced with a system for collaboration,
             the collaboration systems may communicate and exchange data
             about the communities, users, and so on. If a user moves from one
             Web server, to another one, the systems may keep track with the
             user and thus assure continuity in sessions that exceed the
             boundaries of a single system.
           </p>
           <p>
             If many proxies would interact in a peer-to-peer-like manner, they
             might be configured to pass firewall boundaries that users are
             not allowed to pass (e.g., the systems may communicate via HTTP,
             possibly through firewall-proxies). Each node could be responsible
             for the users accessing the Internet via that node, and that way,
             users from different domains may collaborate.
           </p>
           <p>
             In summary, the peer-to-peer architecture can be used on different
             levels, enhancing approaches that are very limited otherwise.
           </p>
           <p>
             One disadvantage is that such a system is much more complex than
             centralized systems. For example, if there are only systems
             installed at the clients, these systems somehow need to find out
             about their peers. One way of achieving this - which may also
             be interesting from the privacy and security perspective - is
             only allowing access to and from other systems that the user
             has explicitely given to the system. For example, a user <em>A</em> might
             enter the IP adress of a peer system (of user <em>B</em>).
             User <em>B</em> then gets notified and has to grant access
             permissions to <em>A</em>.
           </p>
           <p>
             A more comfortable solution is having a mediator server that all
             clients register with, as shown in
             <a class="crossRef" href="DeploymentPeerToPeer" />. Clients only
             need to know the mediator server and can then provide the user
             with information about all other users registered with the same
             mediator server. This improved comfort comes at the price of
             less secured privacy because the mediator server may store
             information about its users. Even if that information is just that
             a collaborative system is installed on the given client, special
             care must be taken that no private data is stolen from the
             client itself.
           </p>
           <p>
             If such specialties are taken into account, peer-to-peer systems
             may however be the best solution to ensure privacy. No personal
             data needs to be stored on central servers, and the data may only
             be sent to other systems when the user explicitely allows sending
             the data. If it was not for time constraints concerning the
             implementation, this would be the preferred option from the server
             perspective. For pragmatic reasons, the architecture is based on
             the much simpler solution: a single independent server.
           </p>
         </srf:subsection>
         <srf:subsection id="AtIndependent" title="Independent Server">
           <p>
             The option complementary to the peer-to-peer solution is an
             independent server. Such an independent server centrally
             collects, stores and distributes all data relevant to the system.
             As such, it may be a major concern to people worrying about
             their privacy. However,
             the independent server is much easier to implement and has none
             of the disadvantages given for implementations on proxies or
             Web servers, except possibly the problem mentioned with firewalls in
             <a class="crossRef" href="AtWebProxy" />.
           </p>
           <p>
             The basic idea of that architecture is illustrated in
             <a class="crossRef" href="DeploymentIndependentServer" />, and
             close inspection of that diagram also shows the major limitation of
             that approach:
             an independent server on its own has no means of collecting
             Web usage data. While with proxies and Web servers, the data is
             accessible at the server itself, an independent server is
             dependent upon a component that feeds it with data on the
             current location and/or history of its users.
           </p>
           <p>
             This again illustrates how the independent server is on the same
             abstract level as the peer-to-peer solution, which is more
             general than Web server and proxy based approaches. The
             independent server could get its usage data from modified
             Web servers or proxy servers. The actual system would then reside
             on the independent server, while the modifications on Web or
             proxy servers are minimal (e.g., letting the independent
             server access the logfiles).
           </p>
           <p>
             The preferred solution - due to the restrictions in Web server and
             proxy based approaches, however, is that already shown in
             <a class="crossRef" href="DeploymentIndependentServer" />:
             a component residing on the client, which collects the data and
             sends it to the server. While this answers the question, who
             is responsible for collecting, storing and distributing the
             data (the independent server), a new question needs to be handled:
             how is this data collected on the client. This is the subject of
             the next section.
           </p>
           <srf:figure id="DeploymentIndependentServer"
                       src="diagrams/DeploymentIndependentServer"
                       summary="A collaborative client application that
                                directly gets the content from its sources
                                communicates with an independent collaboration
                                server that provides components for collaboration
                                features."
                       width="1001" height="581" scale="0.6"
                       preferredFormat="svg">
             <caption>
               Illustration of the Architecture with an Independent Server
             </caption>
           </srf:figure>
         </srf:subsection>
      </srf:section>
        <srf:section id="ClientLoc" title="Options from a Client Centric Perspective">
          <p>
            If data is not collected on a Web server or proxy, it somehow needs
            to be collected on the client. Four options of how this can be
            achieved are discussed in this section.
          </p>
          <srf:subsection id="CustomBrowser" title="Custom Browser Implementation">
            <p>
              A custom browser implementation would be the solution with the
              best possibilities of capturing data and integrating the various
              aspects of collaboration. The browser could communicate with an
              independent server as shown in
              <a class="crossRef" href="DeploymentIndependentServer" />,
              or implement a peer-to-peer communication model as shown in
              <a class="crossRef" href="DeploymentPeerToPeer" />. All features
              could be provided under an integrated user interface tailored
              specifically to the purpose of collaborative browsing on the
              Internet.
            </p>
            <p>
              A very obvious disadvantage for the users, however, is that they
              have to install a new piece of software (which may not even be
              possible in certain environments) and they also have to learn using
              that new software. If they have a favorite Web browser, they are
              unlikely to change their habits and use a new system instead.
            </p>
            <p>
              Furthermore, implementing a custom browser is a very complex and
              challenging task, which is way beyond the scope of the present work.
              Rendering
              HTML is a very complex task already, let alone handling of
              scripting languages, style sheets and providing an interface for
              commonly used plugins.
              Furthermore, the Web is a very quickly evolving technology, and
              thus a custom browser would have to be updated regularly to
              keep up with these changes.
              Even though external components could be
              used implementing some of the features, a complete browser still
              requires a lot more time than is available (and some of these
              components are quite expensive).
            </p>
          </srf:subsection>
          <srf:subsection id="BrowserPlugin" title="Plugin for Existing Browser">
           <p>
             The implementation effort is significantly reduced by only
             implementing the additional functionality the collaborative system
             requires as a browser plugin. This also solves the problem that
             users would have to learn a new interface.
           </p>
           <p>
             One disadvantage of the previous approach remains, however:
             installation on the client is required, and this may not be
             possible in certain environments. Furthermore, browser-plugins are
             usually just for enhancing the types of media that can be viewed
             with the browser. A system for collaborative Web browsing may
             require access to the browser which the plugin interfaces do
             not support (e.g., persistence over multiple documents).
           </p>
         </srf:subsection>
         <srf:subsection id="BrowserParasite" title="Parasite to an Existing Browser">
           <p>
             One very interesting option has been used by <cite>[Marais]</cite>
             (see <a class="crossRef" href="RWColl" />). The idea
             is accessing a browser (e.g., Netscape or Internet Explorer) via
             a published API. This provides more control than using a plugin,
             and it is much easier to keep a persistent state over various
             sessions. Basically, the browser could be used for rendering the
             HTML pages and the collaborative features could be implemented by
             the parasite.
           </p>
           <p>
             One major problem with this approach, however, is that such an API
             must be supported both by the operating system and browser
             implementation. While such an API is available under recent
             versions of Windows, it is proprietary and may change in future
             versions of the operating system.
             Furthermore, restriction to the Windows platform is not acceptable
             because in the academic environment where the system is tested, Linux
             is much more common. Therefore, this option is also
             cancelled.
           </p>
         </srf:subsection>
        </srf:section>
        <srf:section id="MetaBrowser" title="Selected Architecture: Meta-Browser as Web Application with Independent Server">
          <p>
             A new approach is needed, as all the previous options are either
             incomplete or fail to meet the criteria: ease and comfort for
             the users of the system and exactly determining the current
             location of the user in the Web.
             This approach will be described much more in detail, including some
             specific technical issues, because the approach implies some
             (technical) questions which must be answered before the
             approach can be accepted as the preferred solution.
           </p>
           <p>
             The idea is to implement the user interface of a Web browser in
             HTML and JavaScript on top of any common Web browser, the Web pages
             making up the user interface being served as a Web application by
             an independent collaboration server.
             Thus, the user can use his favorite browser and needs not install any
             additional software. However, as the HTML user interface replaces
             the user interface of the Web browser, all browsing events can be
             captured.
             The user can easily choose between tracked sessions and non-tracked
             sessions by simply opening a new ("clean") browser window for non-tracked
             sessions.
          </p>
          <p>
             To start a tracked session, the user only needs to open a start-page,
             which can easily be bookmarked.
             This start-page is served by the collaboration server which
             also acts as proxy for the content relevant to collaboration.
             After logging in (which is required for the collaboration features),
             the system is started by opening a new browser window and loading
             a special frameset that mimics a browser's user interface, as described
             below.
          </p>
          <p>
             The architecture of such a system is shown in
             <a class="crossRef" href="DeploymentMetaBrowser" />.
             Note that the proxy-server component is
             called <em>page processor</em> in the system, as its main
             responsibility is processing the documents (it also retrieves and
             forwards them, just like a proxy, but this is not what makes this
             component special).
           </p>
           <p>
             By using HTTP as communication protocol between client (meta-browser)
             and server, there are also no problems with firewalls. Even if
             HTTP proxies are located between the Web browser and the system
             server, no problems are to be expected as the whole Web application
             is served via standard HTTP - just like any other set of Web pages.
             If a user decides that he will use the system as default, he can
             use the system's start-page as the browser's home page.
             While common usage of the system does not require any browser
             configuration, setting a new home page can be seen as
             configuration effort - but it is simple and optional.
           </p>
           <srf:figure id="DeploymentMetaBrowser"
                       src="diagrams/DeploymentMetaBrowser"
                       summary="An independent server acts both as a proxy for
                                the actual content and a Web application server
                                for the collaborative features. On the clients,
                                any Web browser can be used to display the
                                collaborative Web application and the actual
                                Web contents. The same browser can also be used
                                to do non-collaborative Web browsing. A page
                                processor forwards the client's requests to the
                                original servers, processes the responses and
                                forwards them back to the clients."
                       width="1001" height="581" scale="0.6"
                       preferredFormat="svg">
             <caption>
               Illustration of the Meta-Browser Architecture
             </caption>
           </srf:figure>
           <p>
             The presentation required for browsing is simply a browser
             window without any navigation controls
             containing three frames. The upper, fixed size frame contains a
             combination of HTML and JavaScript to model the navigation
             user interface of the Web browser.
             This will be referred to as
             <dfn id="NavFrame">navigation frame</dfn>.
             It includes: a textfield for entering URIs, back and forward
             buttons, a button for opening new windows and bookmark controls
             (adding bookmarks, opening bookmarks etc.) and controls specific
             to the system for collaborative Web usage (e.g., for organizing
             communities, accessing communication features and logging off).
             The center frame contains the actual content of the Web pages viewed by
             the user. It is referred to as
             <dfn id="ContentFrame">content frame</dfn>
             and may contain any number of sub-frames, depending on the actual
             Web content. The content frame is equivalent to the area of a
             normal browser, which is used to display the Web documents.
             Finally, there is an <dfn id="OrientationFrame">orientation frame</dfn>
             in the lower part of the window.
             An example of what such a meta-browser may look like is given in
             <a class="crossRef" href="teamXwebScreenshot" />.
           </p>
           <p>
             When the user clicks on a link in a document, instead of directly
             sending the request to the original server, a little JavaScript method
             is called which does the following:
           </p>
           <ol>
             <li>
               Update the location textfield in
               the navigation frame (where the URI of the currently displayed document
               is shown).
             </li>
             <li>
               Send a request to the independent collaboration server, with the
               URI of the requested document as parameter.
             </li>
             <li>
               The collaboration server, acting as a proxy forwards the request to
               the original server.
             </li>
             <li>
               Unlike a common proxy, the collaboration server modifies the response
               from the original server so that all links will behave as required
               (not get the contents from the original server, but update the location
               textfield, send request to collaboration server etc.) This is
               called <dfn id="uriRewr">URI rewriting</dfn>, and by doing this,
               the client needs not be configured to use the proxy. Instead,
               the proxy is used for a specific frame (or window)
               from the moment the first processed page is
               displayed at the client (which happens at the startup of the
               system) and until the first non-processed page is shown.
             </li>
             <li>
               The (modified) response is displayed in the content frame or one
               of its subframes.
             </li>
           </ol>
           <p>
             This behavior is transparent to the underlying Web browser and its user.
           </p>
           <srf:figure id="teamXwebScreenshot"
                       src="diagrams/teamXwebScreenshot"
                       summary="A Screenshot of the Meta-Browser within the Opera Browser. The frames are marked with red rectangles: navigation frame, content frame and orientation frame."
                       width="1016" height="752" scale="0.6"
                       preferredFormat="gif">
             <caption>
               Screenshot of the Meta-Browser within a Browser (Opera)
             </caption>
           </srf:figure>
           <p>
             To allow the user opening the link in a new window, an
             icon displaying a window can be added behind the actual link.
             When the user clicks on the icon,
             an new system-window is opened, displaying the requested document in its
             content frame. Another option that may work with some browsers is modifying the
             popup menues via JavaScript.
           </p>
           <p>
             This solution has another major
             advantage: only the linked HTML-files go through the page processor,
             reducing server-load by using a more distributed approach
             (unlike a custom proxy-server implementation which might run
             into performance problems).
             The URIs of resources like images and sound files are not rewritten and
             thus directly loaded from the original server.
             However, with the same architecture, features like blackboard capabilities for
             images could be implemented by extending the page processor so that
             it handles <code>&lt;img&gt;</code> tags to provide
             blackboard capabilities as it was done in <cite>[Cabri]</cite>.
             <!-- this does not belong here!!!
             While originally, the navigation frame was meant to be implemented
             as a Java applet, it was first implemented as a combination of
             HTML and JavaScript which was later replaced with a Flash movie
             (also using JavaScript for most of the functionality).
             -->
           </p>
           <p>
             Obviously, special care must be taken when pages with frames are displayed.
             For example, a page that should be displayed in a subframe cannot be
             handled by simply putting it into the content frame because that would
             destroy the frameset. Also, links in the content that
             close the frameset by using <code>"_top"</code> would destroy the
             navigation frame, if the target was simply forwarded.
             If new windows are opened, they must be wrapped into our system so that
             tracking does not break.
             However, this approach also allows bookmarking any state of such a
             frameset, which is a major advantage compared to browser's bookmark
             capabilities.
             Furthermore, while framesets usually have a single title for all states,
             the system allows changing the title while browsing within the frameset
             (e.g., the original title plus the name of the hyperlink the user
             clicked on).
           </p>
           <p>
             The major limitation of this architecture is that not all Web pages
             are suitable for being modified in the required manner. In particular,
             Web pages using JavaScript, Java, Flash or other non-HTML based approaches
             for navigation. While with JavaScript - at least in theory - rewriting the
             relevant URIs and parts of the JavaScript code may be possible, the binary
             formats of Java and Flash make this more or less impossible.
             As the system is targeted to an academic environment, where such navigations
             are expected to be less common than in the commercial parts of the Web,
             this shortcoming is considered to be outweighed by the advantages.
           </p>
           <p>
             Another open but less serious problem is how links from external sources (newsgroup
             articles, eMail) are handled. If the user copies the URI into the
             location field, it works - if the user directly clicks on the link, it
             does not work. For this, drag and drop of hyperlinks would be a
             desirable feature. Even better would be integrating a newsreader
             and eMail-client into the system - but that is beyond the scope
             of the present work.
           </p>
           <p>
             A very detailed description of the implementation of this
             architecture is subject of
             <a class="crossRef" href="PageProcessing" />.
           </p>
       </srf:section>
    </srf:chapter>

    <srf:chapter id="ImplementedFeatures" title="Features for a Prototype">
      <p>
        In this section, the features of a system called <em>teamXweb</em>
        are described. <em>teamXweb</em> is a prototype that is used in
        experiments to find out about the usability and usage of a system to
        support collaborative usage of the Web. These features were
        originally defined in previous work (<cite>[Wagner2002]</cite>), this
        updated section describes the actual implementation.
      </p>
      <p>
        The original name of the prototype was <em>TeamWeb</em>, but
        a search for the term <em>TeamWeb</em> on
        <a href="http://www.google.de">Google</a> returns about 5,000 pages.
        With the keywords <em>TeamWeb</em>, <em>Web</em>, <em>usage</em> and
        <em>cooperative</em> respectively <em>collaborative</em> still
        7 respectively 12 hits are returned,
        three of the latter sample are pages of the original project's Website,
        though.
        The other hits link to organization's Web teams that are responsible
        for the organization's Web presence, independent Web design companies,
        Web sites about Web design.
        NetObjects has an architecture called <em>NetObjects TeamWeb&#8482;</em>
        which is used to support collaborative creation of Web sites
        <cite>[NetObjects]</cite>.
      </p>
      <p>
        Thus, the name has been changed to <em>teamXweb</em>, the <em>X</em>
        indicating that this is meant as the cross-product of team and Web.
        The new name seems to be unique - at least a search on
        <a href="http://www.google.de">Google</a> returns no results, which
        is a very reliable indicator that the term is not used at all, anywhere
        on the Web. The pronounciation remains the same, however - the
        <em>X</em> is silent...
      </p>

      <srf:section id="FeaturesCommunities" title="Communities">
        <p>
          The key concept for <em>teamXweb</em> are communities.
          The term <em>community</em> has been chosen instead of
          <em>group</em> to point out the broader
          sense in which the term can be used.
          A more in depth discussion of communities was subject of
          <a class="crossRef" href="Communities" />.
          In the prototype, communities are implemented as simple groups of
          people, and thus the term is used interchangeably in this section.
        </p>

        <p>
          <dfn id="communities" title="community">Communities</dfn> are sets of people,
          for instance a team working on a particular project.
          Such groups can be created by users, and other users
          can join or leave the group at any time.
          For enhanced security and comfort
          <dfn id="SecretGroups" title="secret groups">secret groups</dfn>
          are added, which can only be joined if their name is known and are
          not displayed in the community overview.
          Furthermore, it is possible to
          <dfn id="ClosedGroups" title="closed groups">close groups</dfn>
          (i.e., make it impossible to join or leave the group for all users).
          However, the community may still be visible to others.
          Finally, <dfn id="Subgroups" title="subgroups">subgroups</dfn> are
          only visible to members of their parent groups.
          This allows a sort of hierarchy, and in conjunction with
          the closed groups, a certain flexibility to partition the user base,
          which is also a useful feature for the experiment.
        </p>

        <p>
          Another type of community in the prototype are Web site respectively
          Web page related communities. Such communities exist for each Web site
          and Web page, and users automatically join and leave these communities
          when they enter or leave the Web site or Web page in question.
          Using communities for this also allows using all the features available to
          communities for Web sites and Web pages - in particular
          communication (see also <a class="crossRef" href="Communication" />)
          and community statistics (i.e., who is currently a
          member, who was a member before, see also
          <a class="crossRef" href="StatisticalInformation" />).
          This is one of the positive aspects of integration in the system.
        </p>

        <p>
          To support collaboration between community members while at the same
          time providing a high security for each user's privacy,
          users can give permissions to each community.
          This gives them <em>control</em> as it has been discussed in
          <a class="crossRef" href="Privacy" />.
          As default, none of these permissions are set.
          It may be useful to allow users changing this default, or - if the
          rights management gets more complex - choose among different presets
          for different security levels.
        </p>

        <p>
          In the prototype, there are user profiles where users can give
          information about themselves.
          While users can choose login names that are completely unrelated
          to their real name and thus have a certain level of anonymity,
          the atmosphere can be made more personal by using those profiles.
          However, whether other community members may see that profile or not
          is the first permission that must explicitely set for each community
          the user is a member of.
        </p>

        <p>
          The second permission is whether or not other members may see the user's
          bookmarks that are described in more detail in <a class="crossRef" href="Bookmarks" />.
          In the bookmarks window, the user can select each community
          he is a member of, and all bookmarks of all community members that have
          given that permission will be merged. It is also possible to view the
          bookmarks of an individual member of a community that has given that
          permission. In the first prototype, this applies to all bookmarks.
          However, this is considered a major limitation and in future versions,
          it should be possible to assign this permission per bookmark category.
          Thus, users can make their bookmarks available to different
          communities according to the communities' interests and according to
          the user's feeling of which bookmarks he wants to keep private and
          which he wants to be public.
        </p>

        <p>
          The same applies to the <em>user session</em>s in the <em>session history</em>
          (explained in <a class="crossRef" href="SessionHistory" />), which is
          the third permission that can be set. As all of the <em>navigation behavior</em>
          of a user is captured in his <em>session history</em>, this is the most sensitive
          information. Only allowing users to set this permission for all
          <em>user session</em>s, or none is an even more severe limitation than with
          bookmarks. However, the prototype had to be as simple as possible and
          in the testbed of the experiment, the user base is small enough
          and users are aware enough that this issue can be accepted.
          Furthermore, it could be worked around by using different users for
          different browsing tasks.
        </p>
      </srf:section>

	<srf:newpage />

      <srf:section id="SessionHistory" title="Session History">
        <p>
          The <dfn id="DefSessionHistory">session history</dfn>
          is the list of all
          <a class="explicit" href="#Def_UserSession"><em>user session</em></a>s,
          ordered as a sequence in time.
          Each <em>user session</em> consists of a list of
          <em>navigation events</em> and <em>browsing states</em>
          for each window that has been opened during the session.
          The <dfn id="BrowsingState" title="browsing state">browsing states</dfn>
          are usually equivalent to the URIs of
          the viewed pages.
          However, with framesets this simple approach is insufficient:
          in that case, a <em>browsing state</em> refers to the URIs in all the
          frames of the window, and if a single URI (i.e., document) changes, it
          is a new <em>browsing state</em>.
          <dfn id="NavigationEvent" title="navigation event">Navigation events</dfn>
          are the events with which each <em>browsing state</em> is entered and left.
          The following <em>navigation events</em> are available in and
          captured by the system:
        </p>

        <table class="border"
               id="NavigationEvents"
               summary="This table gives an overview of the navigation events
                        captured by teamXweb: Window opened, link followed,
                        form filled, URI entered, back, forward, home,
                        history state restored, bookmark state restored,
                        window closed.">
          <caption>Navigation events captured by teamXweb</caption>
          <tr>
            <th style="width='20%';">Navigation Event</th>
            <th style="width='80%';">Description</th>
          </tr>
          <tr>
            <td>Window opened</td>
            <td>
              When the user opens a new window. In most window's lists of
              <em>navigation events</em>, this is the first entry. This event can only
              occur when entering a state.
            </td>
          </tr>
          <tr>
            <td><em>Link</em> followed</td>
            <td>
              Whenever a user clicks on a hyperlink of a web page.
            </td>
          </tr>
          <tr>
            <td>Form filled</td>
            <td>
              Some sites (for instance, search-engines) use forms so that the user can
              enter information. When the user fills such a form and then sends it,
              some sort of reply will be sent. The process of filling a form,
              sending it and receiving the result is refered to by this
              Navigation Event.
            </td>
          </tr>
          <tr>
            <td>URI entered</td>
            <td>
              When the user manually enters a new URI and retrieves the document
              referred to by that URI.
            </td>
          </tr>
          <tr>
            <td>Back</td>
            <td>
              When the user clicks on the <em>back button</em> to fetch the previously
              viewed page.
            </td>
          </tr>
          <tr>
            <td>Forward</td>
            <td>
              When the user clicks on the <em>forward button</em> to fetch the page
              after the currently viewed page. As mentioned before, the history
              (<em>user session</em>) consists of a list of states and actions ordered
              in time. The problem of users going back and forth and
              branching to new links is irrelavant in this approach.
              As an advanced feature, the graph structure of the <em>user session</em>
              could be presented to the user for an improved history navigation.
              Besides implementation costs it must be noted, however, that many
              user's may have problems dealing with that complexity.
              <!--, as it has
              been shown in other work.
              <strong class="pending">PENDING: Look it up and quote correctly!</strong>
              -->
            </td>
          </tr>
          <tr>
            <td>Home</td>
            <td>
              When the user clicks on the <em>home button</em> to go to the
              first state in the list of the current window in the current session.
              The session can be repeated by clicking home followed by a number of
              clicks on forward.
            </td>
          </tr>
          <tr>
            <td>History State restored</td>
            <td>
              When the user restores a <em>browsing state</em> while browsing a <em>user session</em>.
            </td>
          </tr>
          <tr>
            <td>Bookmark restored</td>
            <td>
              When the user restores a <em>browsing state</em> by using a bookmark.
            </td>
          </tr>
          <tr>
            <td>Window closed</td>
            <td>
              When the user closes a window. This event can only occur when
              leaving a state.
            </td>
          </tr>
        </table>

        <p>
          A useful feature could be management of the individual <em>user session</em>s:
          each session could have a name, description and attributes like
          keywords to facilitate finding previous user sessions.
          A hierarchial categorization of the <em>user session</em>s may also be useful.
          This feature becomes particularly interesting in the context of
          communities, as described in <a class="crossRef" href="FeaturesCommunities" />, because a
          categorization may facilitate offering some <em>user session</em>s to
          other community members, while others are kept private or open to
          another community. Due to time constraints, this could not be
          implemented in the prototype.
        </p>
        <p>
          The user interface for the history is implemented as follows
          (see also <a class="crossRef" href="historyScreenshot" />):
        </p>
          <p>
            The history is divided by the individual user sessions. A particular
            user session is chosen by first requesting a list of sessions for either
            the current user or one of the communities the user is a member of
            (default: the current user). The user can select the party of which
            the user sessions shall be displayed from two comboboxes at
            the top (row) frame. The first combobox contains the user himself as
            the first entry, followed by a list of the communities the user is a
            member of (not site-communities, possibly that can be added later as
            "special feature"). The second combobox depends on the first combobox
            and has "all" as the first entry, followed by a list of the users
            of the selected community (only if the community allows requesting
            individual user's information, and/or if the user allows requesting
            such information). If the user himself is chosen from the communities
            combobox, or if the selected community does not allow viewing its
            users, the second combobox only contains the entry "all".
          </p>
           <srf:figure id="historyScreenshot"
                       src="diagrams/historyScreenshot"
                       summary="A screenshot of the teamXweb history dialog,
                                where the user can select a community, and if available
                                one of the members of the community. The sessions
                                are sorted by time and for each session, there
                                is a detailed description with each action listed."
                       width="1249" height="756" scale="0.5"
                       preferredFormat="gif">
             <caption>
               Screenshot of the teamXweb Session History
             </caption>
           </srf:figure>
          <p>
            Whenever the community-combobox is being changed, the person-combobox
            is set to the first entry. Whenever the person-combobox is changed
            (i.e., also when the user has changed the community-combobox), the
            table with the user sessions is updated to the current selection.
            The table with the user sessions is displayed in the bottom-left frame.
            The first entry is the "current session", if available in the current
            community/person-selection. The following entries are a list of all
            sessions, in reverse order (last session first),
            with start-time and end-time and a link
            that shows the contents of the UserSession in the bottom-right frame.
            Whenever a user session is selected, both the list of user-sessions
            and the contents of the currently selected user session are reloaded.
            The list of user-sessions (an HTML-table) has the currently selected
            user-session highlighted. The highlighting and accessing of user-sessions
            works with the indices of the user-sessions. Care must be taken with
            lists of user-sessions of communities, which are generated by
            accumulating all the community's user's lists (Community requires
            a method getUserSessions()).
          </p>
          <p>
            The selected user session is displayed in the bottom-right frame. On top,
            the start- and end-time is given, if available. The rest of the page is
            a reverse-order list of the states in the user session. In the first
            version, the states are represented simply by the URIs and titles of
            the pages, plus the time of visit. In a later version, additional
            information can be made available (e.g., framesets with names,
            open windows etc.) When a state of a session is selected, that state
            is restored in the content frame of the window from which the history
            has been opened.
          </p>
      </srf:section>

      <srf:section id="Bookmarks" title="Bookmarks">
        <p>
          This section describes the bookmarks in <em>teamXweb</em> and there are two
          important relations to mention between bookmarks and the session
          history:
          first, user sessions are obviously captured
          passively while the user browses, unlike bookmarks which must
          explicitely be set by the user.
          <!-- The second is conceptually more interesting: -->
          Second, bookmarks are also <em>browsing state</em>s.
          This latter relation is important because it justifies that the Browsing
          States of the session history need not be editable in any way, as this
          can be done by adding them as bookmarks and then editing the bookmark.
        </p>
           <srf:figure id="bookmarksScreenshot"
                       src="diagrams/bookmarksScreenshot"
                       summary="A screenshot of the teamXweb bookmarks dialog.
                                Note that the states of framesets can also be
                                stored as bookmarks."
                       width="1084" height="608" scale="0.57"
                       preferredFormat="gif">
             <caption>
               Screenshot of the teamXweb Bookmarks
             </caption>
           </srf:figure>
        <p>
          This implies that bookmarks can not only be set from the current page,
          as in most browsers, but also from the session history view. While
          browsing the session history, users may find certain entries especially
          interesting and put those entries to the bookmarks. Or he may feel
          the need to extract a certain Browser State from the session to add
          additional information - which is only possible with bookmarks.
        </p>

        <p>
          Which is the major difference between a bookmark and a Browser State:
          bookmarks are editable.
          Just like <em>user session</em>s, bookmarks can have names,
          descriptions further attributes, like keywords and be put into a
          hierarchy of categories.
          Thus, while bookmarks point to the same information in the Web as
          Browser States, they are more closely related to <em>user session</em>s in
          terms of how the user can archive them.
          Bookmarks are the smallest editable piece of information in the bookmarks
          section and <em>user session</em>s are the smallest editable piece of information
          in the session history.
        </p>

        <p>
          Finally, as bookmarks are equivalent to <em>browsing state</em>s, they can also
          capture different states of the same frameset. This distinguishes
          the bookmarks of <em>teamXweb</em> significantly from the bookmarks in most
          Web browsers, as they usually only store the starting page as
          bookmark.
          This feature is particularly useful with documentations like the
          Java API which rely on a frameset for comfortable navigation.
        </p>

        <p>
          The user interface for bookmarks is quite similar to the user interface
          for the history, as <a class="crossRef" href="bookmarksScreenshot" />
          illustrates. Notice that states of framesets can also be stored as
          bookmarks (<code>java.awt.Applet</code> in the Java API in the given
          example). While in the history screenshot
          (<a class="crossRef" href="historyScreenshot" />), a community had been
          selected (<em>TG Betatester</em>) and the history of all its members
          was shown (<em>Alle Mitglieder</em>), in the bookmarks screenshot
          the scope was set to the current user: <em>david (aktueller Benutzer)</em>.
        </p>
      </srf:section>
      <srf:section id="Communication" title="Communication">
        <p>
          While sharing bookmarks and history are key components to a system that
          shall support collaborative Web usage, they need to be complemented by
          support of the most important aspect of collaboration: communication.
          One objective of the project is to create a well-integrated platform for
          collaborative Web usage, and thus the system also provides
          communication features.
        </p>
        <p>
          As discussed in <a class="crossRef" href="ConceptCommunication" />,
          there are two dimensions of communication in the context of
          <em>teamXweb</em>:
          asynchronous vs. synchronous communication, and the target
          of communication.
          While synchronous communication (e.g., chat) is a very interesting
          feature when the system is used heavily and frequently by a large user
          base, synchronous communication is beyond the scope of the present work.
          Thus, only asynchronous communication is implemented.
        </p>
        <p>
          Users can send other users private notes, similar to eMail. The
          advantage of providing an alternative to eMail is mainly that the whole
          system is more integrated that way. However, in the long run it
          makes sense to integrate <em>teamXweb</em>'s messaging system with
          eMail so that users can choose which system to use without a break
          in the user interface.
        </p>
        <p>
          Communities are another target of communication, which makes
          communities a sort of message-board at the same time.
          The same discussion as before with eMail applies here with the
          relevant well-established communication services for communities:
          mailing-lists and newsgroups.
          However, the tight integration into <em>teamXweb</em> is even more
          important here than in user to user communication, and the
          integration of community communication justifies the integration of
          user to user communication even more.
        </p>
        <p>
          A long-term goal may be providing a proprietary interface to these
          services that is well-integrated into <em>teamXweb</em>, but using the open,
          well-known and well-accepted standards below the surface.
        </p>
        <p>
          Last but most important, notes can be left on Web sites and pages.
          This way, pages can be annotated and at the same time, a discussion
          about the content of the page can be held. When a user leaves a note
          on a Web site or page, he can choose to whom this note is visible:
          either it is a private note that only the user can see,
          or the note is visible to one of the communities he is a member of,
          or it is a public note that is visible to all users of the system.
        </p>
        <p>
          A major achievement of <em>teamXweb</em> concerning integration is
          illustrated by <a class="crossRef" href="communiScreenshot" />. This
          is the central overview of everything that has to do with communication.
          With this overview, the user can find out about messages he has sent
          or received as well as the communication within communities. Finally,
          even the annotations made on Web sites or Web pages are available in
          this view.
        </p>
        <p>
          While the natural places to find out about these latter forms
          of communication are the communities respectively Web sites or Web pages
          where the communication took place, this gives a quick overview.
          A user no longer has to browse to a specific Web page to find out
          there are no new messages. Instead, he can see all Web sites and pages
          with new messages (or: with any messages at all) in a quick overview.
        </p>
           <srf:figure id="communiScreenshot"
                       src="diagrams/communiScreenshot"
                       summary="Screenshot of the teamXweb communication overview
                                that illustrates how a high level of integration
                                is achieved by giving the user an overview of
                                all messages distributed at the various parts of
                                the system. This includes messages the user has
                                received from or sent to other users,
                                messages within communities and annotations on
                                domains and Web pages."
                       width="815" height="1007" scale="0.6"
                       preferredFormat="gif">
             <caption>
               Screenshot of the teamXweb Communication Overview
             </caption>
           </srf:figure>
        <p>
          The screenshot also illustrates how the scope of communication is
          handled with annotations on Web pages and Web sites: only those
          messages the current user is granted access to are displayed, for instance,
          public notes (<em>öffentliche Notiz</em>), notes for a specific
          community the user is a member of
          (<em>TG <acronym id="xml" title="eXtensible Markup Language">XML</acronym>-Praktikum</em>
          and <em>TG HS i18n and l10n</em>) as well as private notes
          of that particular user (<em>private Notiz</em>).
          If there were more communities / Web sites or
          pages with messages and the overview thus would become cluttered,
          implementing filtering for
          specific communications (communities / Web sites / Web pages) or
          specific scopes (private / public / specific communities) is
          straightforward. The user interface for selecting these parameters
          can be almost the same as with session history and bookmarks, as
          illustrated in <a class="crossRef" href="historyScreenshot" /> and
          <a class="crossRef" href="bookmarksScreenshot" />.
        </p>
      </srf:section>

      <srf:section id="StatisticalInformation" title="Statistical Information">
        <p>
          The same choice of scope as for communications - private, per
          community and public - is also
          available for the statistical information, which is displayed for each
          visited page, in the <em>orientation frame</em> below the actual page
          (see <a class="crossRef" href="teamXwebScreenshot" />).
          There are several types of statistical data which will be outlined in
          this section.
        </p>
        <p>
          For each page and site, the number of visits is shown as well as the
          number of visitors. As mentioned before, this can be referring to the
          user himself ("how often have I been on this page before?"), one of
          his communities or all <em>teamXweb</em> users.
        </p>
        <p>
          The same applies to the followed links: Whenever a user clicks a link
          on a page, a counter is increased and the most popular links are
          displayed in the statistics.
          For many people, however, it may be more interesting to see which
          links have lead to the page - and this information is also available.
          Thus, one can easily follow the most popular path towards a page
          backwards. As pointed out in <cite>[Gibson1998b]</cite>, this can also
          make finding good <em>hub pages</em> easy.
        </p>
      </srf:section>
<srf:newpage />
      <srf:section id="FeatureMatrix" title="Feature-Matrix">
        <p>
          To illustrate how <em>teamXweb</em> integrates collaboration features
          compared to other systems, a feature matrix with the most important
          features has been created.
          This matrix includes <em>teamXweb (ALPHA 5)</em> compared to
          major Web browsers (e.g. <em>Netscape</em>, <em>Mozilla</em>,
          <em>Opera</em>, or <em>Internet Explorer</em>) as well as
          major Web communities (e.g. <em>Yahoo</em>). The rows of the
          matrix contain a set of features, and the columns contain if, or how
          these features are implemented in the given system.
          Some features are considered <em>not applicable</em> to a given
          type of system,
          because the system cannot support these features in principle.
        </p>
        <p>
          A much more detailed detailed feature-matrix can be found in
          <a class="crossRef" href="FullFeatureMatrix" />. Note however,
          that this only includes a comparison of <em>teamXweb</em> with
          major browsers. Web communities are not included in that matrix
          as much of the data does not apply. Even though <em>teamXweb</em>
          provides a concept of communities very much like major Web
          communities, it is more like a Web browser and therefore can
          be better compared to Web browsers than to Web communities.
        </p>
        <table class="border" style="width:100%;font-size:8pt;"
               id="FeatureMatrix1brief"
               summary="This table compares the features of teamXweb with
                        with those of major Web browsers and communities.">
          <caption>
            Feature-Matrix comparing teamXweb, Major Web Browsers and Web Communities
          </caption>
      <tr><th>Features</th><th>teamXweb</th><th>Major Browsers</th><th>Major Communities</th></tr>
      <tr><th colspan="4" style="text-align:center;"><strong>Browsing</strong></th></tr>
      <tr>
        <th style="text-align:left;">Bookmarks</th>
        <td>
          <ul class="inTable">
            <li>more detailed</li>
            <li>supports framesets</li>
            <li>accessible from anywhere</li>
            <li>shared within communities</li>
          </ul>
        </td>
        <td>
          <ul class="inTable">
            <li>framesets: only one entry for many states!</li>
            <li>stored locally &#8658; no sharing</li>
          </ul>
        </td>
        <td>
          <ul class="inTable">
            <li>can be shared</li>
            <li>not integrated with browser</li>
          </ul>
        </td>
      </tr>
      <tr>
        <th style="text-align:left;">History</th>
        <td>
          <ul class="inTable">
            <li>same as bookmarks</li>
          </ul>
        </td>
        <td>
          <ul class="inTable">
            <li>same as bookmarks</li>
          </ul>
        </td>
        <td>
          <ul class="inTable">
            <li>not applicable</li>
          </ul>
        </td>
      </tr>
      <tr>
        <th style="text-align:left;"><strong>Navigation Support / Web Page Statistics</strong></th>
        <td>
          <ul class="inTable">
            <li>page / site visits</li>
            <li>current visitors</li>
            <li>links from document</li>
            <li>links to document</li>
          </ul>
        </td>
        <td>
          <ul class="inTable">
            <li>supported via external services
                (Mozilla integrates this very well)</li>
            <li>some browsers (e.g. Opera, Amaya) can show links
                from document in a separate window</li>
          </ul>
        </td>
        <td>
          <ul class="inTable">
            <li>not applicable</li>
          </ul>
        </td>
      </tr>
      <tr><th colspan="4" style="text-align:center;"><strong>Collaboration</strong></th></tr>
      <tr>
        <th style="text-align:left;">Communities</th>
        <td>
          <ul class="inTable">
            <li>supported</li>
          </ul>
        </td>
        <td>
          <ul class="inTable">
            <li>not applicable</li>
          </ul>
        </td>
        <td>
          <ul class="inTable">
            <li>central element</li>
          </ul>
        </td>
      </tr>
      <tr>
        <th style="text-align:left;">Asynchronous Communication</th>
        <td>
          <ul class="inTable">
            <li>within communities</li>
            <li>on Web pages / sites</li>
            <li>well-integrated</li>
          </ul>
        </td>
        <td>
          <ul class="inTable">
            <li>eMail functionality</li>
            <li>same application, but no integration with browsing</li>
          </ul>
        </td>
        <td>
          <ul class="inTable">
            <li>within communities</li>
          </ul>
        </td>
      </tr>
      <tr>
        <th style="text-align:left;">
          Synchronous Communication<srf:footnote localCode="fm1" localID="1">
              Not implemented in the current version of <em>teamXweb</em>,
              due to time constraints, but a important element of the concept.
           </srf:footnote>
		</th>
        <td>
          <ul class="inTable">
            <li>within communities</li>
            <li>on Web pages / sites</li>
            <li>well-integrated</li>
          </ul>
        </td>
        <td>
          <ul class="inTable">
            <li>via external applications, not tightly integrated</li>
          </ul>
        </td>
        <td>
          <ul class="inTable">
            <li>within communities</li>
            <li>instant messaging</li>
          </ul>
        </td>
      </tr>
      <tr>
        <th style="text-align:left;">Annotations</th>
        <td>
          <ul class="inTable">
            <li>well-integrated with communication</li>
          </ul>
        </td>
        <td>
          <ul class="inTable">
            <li>usually not supported (support only with plugins, native support in Amaya)</li>
          </ul>
        </td>
        <td>
          <ul class="inTable">
            <li>not applicable</li>
          </ul>
        </td>
      </tr>
    </table>

<!--
        <table class="border" style="width:100%;"
               id="FeatureMatrix1brief"
               summary="This table compares the features of teamXweb with
                        with those of major Web browsers.">
          <caption>
            Brief Feature-Matrix of teamXweb and Web Browsers
          </caption>
          <tr>
            <th colspan="2" rowspan="2">&#160;</th>
            <th colspan="2" style="text-align:center;">Browsers</th>
          </tr>
          <tr>
            <th style="text-align:center;width:15%;font-size:10pt;"><em>teamXweb</em></th>
            <th style="text-align:center;width:15%;font-size:10pt;">Major Browsers</th>
          </tr>
          <tr>
            <th style="width:3%;text-align:center;vertical-align:middle;" rowspan="27">
              F<br />e<br />a<br />t<br />u<br />r<br />e<br />s
            </th>
            <td colspan="3" style="vertical-align:top;"><strong>1 Common Browser Functionality</strong></td>
          </tr>
          <tr>
            <td style="width:67%;vertical-align:top;"><strong>1.1 Browsing</strong></td>
            <td style="text-align:center;vertical-align:top;">
              <img src="checked.gif" alt="[yes]" />
              <srf:footnote localCode="fm1" localID="1">
                Limitations of <em>teamXweb</em>: links currently cannot be
                opened in new windows, documents cannot be saved to disk
                and some pages may be displayed no as intended by the authors.
                With some pages, navigation may not work (if they are using
                non-HTML navigation, e.g., JavaScript, Java or Flash).
              </srf:footnote>
            </td>
            <td style="text-align:center;vertical-align:top;">
              <img src="checked.gif" alt="[yes]" />
            </td>
          </tr>
          <tr>
            <td colspan="3" style="vertical-align:top;"><strong>1.2.1 History</strong> (1.2 History and Bookmarks)</td>
          </tr>
          <tr>
            <td style="vertical-align:top;">1.2.1.1.1 Stack Based (1.2.1.1 Back Button)</td>
            <td style="text-align:center;vertical-align:top;">
              <img src="unchecked.gif" alt="[no]" />
            </td>
            <td style="text-align:center;vertical-align:top;">
              <img src="checked.gif" alt="[yes]" />
            </td>
          </tr>
          <tr>
            <td style="vertical-align:top;">1.2.1.1.2 Recency Based</td>
            <td style="text-align:center;vertical-align:top;">
              <img src="checked.gif" alt="[yes]" />
            </td>
            <td style="text-align:center;vertical-align:top;">
              <img src="unchecked.gif" alt="[no]" />
            </td>
          </tr>
          <tr>
            <td style="vertical-align:top;">1.2.1.2 History of Sessions</td>
            <td style="text-align:center;vertical-align:top;">
              <img src="checked.gif" alt="[yes]" />
            </td>
            <td style="text-align:center;vertical-align:top;">
              <img src="unchecked.gif" alt="[no]" />
            </td>
          </tr>
          <tr>
            <td style="vertical-align:top;">1.2.1.3 Browse History</td>
            <td style="text-align:center;vertical-align:top;">
              <img src="checked.gif" alt="[yes]" />
            </td>
            <td style="text-align:center;vertical-align:top;">
              <img src="checked.gif" alt="[yes]" />
              <srf:footnote localCode="fm1" localID="2">
                Amaya does not support browsing the history.
              </srf:footnote>
            </td>
          </tr>
          <tr>
            <td style="vertical-align:top;">1.2.1.3.1, 1.2.1.3.2 History Grouped by Sessions and Windows</td>
            <td style="text-align:center;vertical-align:top;">
              <img src="checked.gif" alt="[yes]" />
            </td>
            <td style="text-align:center;vertical-align:top;">
              <img src="unchecked.gif" alt="[no]" />
            </td>
          </tr>
          <tr>
            <td style="vertical-align:top;">1.2.1.3.3 History Grouped by Domains</td>
            <td style="text-align:center;vertical-align:top;">
              <img src="unchecked.gif" alt="[no]" />
            </td>
            <td style="text-align:center;vertical-align:top;">
              <img src="checked.gif" alt="[yes]" />
              <srf:footnote localCode="fm1" localID="3">
                Mozilla and Internet Explorer allow grouping the history by domains,
                Opera and Amaya do not.
              </srf:footnote>
            </td>
          </tr>
          <tr>
            <td style="vertical-align:top;">1.2.1.4-1.2.1.6 History with Framesets, Access Anywhere, Shared with Communities</td>
            <td style="text-align:center;vertical-align:top;">
              <img src="checked.gif" alt="[yes]" />
            </td>
            <td style="text-align:center;vertical-align:top;">
              <img src="unchecked.gif" alt="[no]" />
            </td>
          </tr>
          <tr>
            <td colspan="3" style="vertical-align:top;"><strong>1.2.2 Bookmarks</strong></td>
          </tr>
          <tr>
            <td style="vertical-align:top;">1.2.2.2, 1.2.2.7-1.2.2.8 Bookmarks on Framesets,
                           Access Anywhere, Shared with Communities
                           (see full matrix for 1.2.2.1 and 1.2.2.3-1.2.2.6)</td>
            <td style="text-align:center;vertical-align:top;">
              <img src="checked.gif" alt="[yes]" />
            </td>
            <td style="text-align:center;vertical-align:top;">
              <img src="unchecked.gif" alt="[no]" />
            </td>
          </tr>
          <tr>
            <td colspan="3" style="width:47%;vertical-align:top;"><strong>2 Collaboration</strong></td>
          </tr>
          <tr>
            <td style="vertical-align:top;">2.1 Work with Communities (create, modify, join)</td>
            <td style="text-align:center;vertical-align:top;">
              <img src="checked.gif" alt="[yes]" />
            </td>
            <td style="text-align:center;vertical-align:top;">
              <img src="unchecked.gif" alt="[no]" />
            </td>
          </tr>
          <tr>
            <td style="vertical-align:top;">2.2 Sending Messages to Other Users</td>
            <td style="text-align:center;vertical-align:top;">
              <img src="checked.gif" alt="[yes]" />
              <srf:footnote localCode="fm1" localID="4">
                Currently, only a proprietary messaging system is included.
                Integration of asynchronous communication via the standard protocols
                (SMTP, POP3, IMAP4) is planned for a future version.
              </srf:footnote>
            </td>
            <td style="text-align:center;vertical-align:top;">
              <img src="checked.gif" alt="[yes]" />
              <srf:footnote localCode="fm1" localID="5">
                Via the standard protocols SMTP, POP3 and IMAP4 (only Mozilla and Opera).
                EMail-adresses of other users must be known.
              </srf:footnote>
            </td>
          </tr>
          <tr>
            <td style="vertical-align:top;">2.3 Sending Messages to Community</td>
            <td style="text-align:center;vertical-align:top;">
              <img src="checked.gif" alt="[yes]" />
            </td>
            <td style="text-align:center;vertical-align:top;">
              <img src="unchecked.gif" alt="[no]" />
            </td>
          </tr>
          <tr>
            <td style="vertical-align:top;">2.4 Accessing Messages Anywhere</td>
            <td style="text-align:center;vertical-align:top;">
              <img src="checked.gif" alt="[yes]" />
            </td>
            <td style="text-align:center;vertical-align:top;">
              <img src="unchecked.gif" alt="[no]" />
            </td>
          </tr>
          <tr>
            <td style="vertical-align:top;">2.5 Synchronous Communication [Chat]</td>
            <td style="text-align:center;vertical-align:top;">
              <img src="checked.gif" alt="[yes]" />
              <srf:footnote localCode="fm1" localID="6">
                Not implemented, yet.
              </srf:footnote>
            </td>
            <td style="text-align:center;vertical-align:top;">
              <img src="checked.gif" alt="[yes]" />
              <srf:footnote localCode="fm1" localID="7">
                Mozilla: With an own client for the standard protocol IRC
                (no instant messaging). Opera has included ICQ.
              </srf:footnote>
            </td>
          </tr>
          <tr>
            <td style="vertical-align:top;">2.6 Chat with Users on Same Page</td>
            <td style="text-align:center;vertical-align:top;">
              <img src="checked.gif" alt="[yes]" />
              <srf:footnote localCode="fm1" localID="6" />
            </td>
            <td style="text-align:center;vertical-align:top;">
              <img src="unchecked.gif" alt="[no]" />
            </td>
          </tr>
          <tr>
            <td colspan="3" style="vertical-align:top;"><strong>2.7 Annotations</strong></td>
          </tr>
          <tr>
            <td style="vertical-align:top;">2.7.1 Annotations linked to Document Fragments</td>
            <td style="text-align:center;vertical-align:top;">
              <img src="unchecked.gif" alt="[no]" />
            </td>
            <td style="text-align:center;vertical-align:top;">
              <img src="unchecked.gif" alt="[no]" />
              <srf:footnote localCode="fm1" localID="8">
                This is supported by Amaya.
              </srf:footnote>
            </td>
          </tr>
          <tr>
            <td style="vertical-align:top;">2.7.2 Annotations linked to Documents</td>
            <td style="text-align:center;vertical-align:top;">
              <img src="checked.gif" alt="[yes]" />
            </td>
            <td style="text-align:center;vertical-align:top;">
              <img src="unchecked.gif" alt="[no]" />
              <srf:footnote localCode="fm1" localID="8" />
            </td>
          </tr>
          <tr>
            <td style="vertical-align:top;">2.7.3 Annotations linked to Domains</td>
            <td style="text-align:center;vertical-align:top;">
              <img src="checked.gif" alt="[yes]" />
            </td>
            <td style="text-align:center;vertical-align:top;">
              <img src="unchecked.gif" alt="[no]" />
            </td>
          </tr>
          <tr>
            <td style="vertical-align:top;">2.7.4, 2.7.6 Private / Public Annotations</td>
            <td style="text-align:center;vertical-align:top;">
              <img src="checked.gif" alt="[yes]" />
            </td>
            <td style="text-align:center;vertical-align:top;">
              <img src="unchecked.gif" alt="[no]" />
              <srf:footnote localCode="fm1" localID="8" />
            </td>
          </tr>
          <tr>
            <td style="vertical-align:top;">2.7.5 Community Annotations</td>
            <td style="text-align:center;vertical-align:top;">
              <img src="checked.gif" alt="[yes]" />
            </td>
            <td style="text-align:center;vertical-align:top;">
              <img src="unchecked.gif" alt="[no]" />
            </td>
          </tr>
          <tr>
            <td style="vertical-align:top;"><strong>2.8 Integrated Interface</strong></td>
            <td style="text-align:center;vertical-align:top;">
              <img src="checked.gif" alt="[yes]" />
            </td>
            <td style="text-align:center;vertical-align:top;">
              <img src="unchecked.gif" alt="[no]" />
              <srf:footnote localCode="fm1" localID="9">
                Internet Explorer even requires an own application for all communications
                tasks (eMail, newsgroups). In Mozilla and Opera, communication tasks are
                integrated into the application but have different looks and feels and
                require separate logins. Furthermore, annotations are not possible at all,
                so there is in particular no integration of annotations and other
                communications.
              </srf:footnote>
            </td>
          </tr>
          <tr>
            <td style="vertical-align:top;"><strong>3 Orientation / Statistics</strong></td>
            <td style="text-align:center;vertical-align:top;">
              <img src="checked.gif" alt="[yes]" />
            </td>
            <td style="text-align:center;vertical-align:top;">
              <img src="unchecked.gif" alt="[no]" />
            </td>
          </tr>
        </table>
        -->
        <srf:showfootnotes localCode="fm1" />
      </srf:section>
    </srf:chapter>
	<srf:blankpage />
    <srf:chapter id="ExperimentSurvey" title="Experiment and User Survey">
      <p>
        In order to test the acceptance and usage of the system, the prototype
        described in <a class="crossRef" href="ImplementedFeatures" /> has
        been implemented and a field experiment with various user groups
        has been conducted. This section describes the experiment,
        a follow-up user survey and the results. Firstly, however, the
        testbed in which the empirical research has been conducted is
        described.
      </p>
      <srf:section id="TestBed" title="Testbed">
        <p>
          As the system supports collaborative Web usage, groups in which
          this sort of collaboration could take place must be motivated to
          use the system. A few such groups are introduced as candidates for
          the field test. There were two periods for testing, one in the
          winter term 2001/2002 and another one in the summer term 2002.
          The candidate groups for the winter term included the following
          three courses of the Department of Computer Science at the
          University of Munich:
        </p>
        <p>
          <em><a href="http://www.pms.informatik.uni-muenchen.de/lehre/praktikum/xml-ecommerce/01ws02/">
          Praktikum "XML and E-Commerce"<br /></a></em> is a practical course for
          approximately 15 graduate students. The participants are expected to
          have solid know-how of Web technologies and Web usage. The tasks involved
          are expected to require a lot of information searching on the Web and
          this work is suggested to be done in teams of 3 or 4 people.
          From this group, the highest acceptance is expected and possibly
          valuable feedback on the system can obtained by these "power users". While
          in the other courses, the teams all work on the same tasks, the teams
          in this project will work on different tasks. However, it is very probable
          that the tasks require gathering similar information. Thus, this
          community may provide interesting information on how teams with different
          aims can loosely cooperate in information gathering.
        </p>
        <p>
          As the group is relatively small and a good technical know-how is
          expected from the members, it was chosen as the first group
          for the experiment. If problems are encountered at this stage, only
          few people are involved.
        </p>
        <p>
          <em><a href="http://www.pms.informatik.uni-muenchen.de/lehre/praktikum/progprakt/01ws02/progprakt.html">
          Programmierpraktikum (German)<br /></a></em> is a practical programming project with
          approximately 90 participants that have at least a basic know-how of
          programming and are expected to have used the Web previously. The tasks
          of the course will be accomplished by teams of 5 members and
          involves research on several programming issues and working with the Java APIs.
          These <dfn id="javaAPIs">Java APIs</dfn> are accessible via the Web and
          are structured in three frames, so this is a typical Use Case for the
          features that history and bookmarks work well with framesets.
          Information shall be gathered on how teams use the Web for solving their
          appointments, both with respect to the resources they use and how they
          interact while searching for those resources.
        </p>
        <p>
          Involving this group is scheduled two weeks after the first group
          started.
        </p>
        <p>
          <em><a href="http://www.dbs.informatik.uni-muenchen.de/Lehre/Info1/">
          Informatik I (German)<br /></a></em> is a lecture for beginners in computer science
          with approximately 500 participants. It deals with basic programming
          concepts and is focussed on functional programming. As programming
          language for examples and exercises, SML is used.
          Ideally, a large group can be motivated to voluntarily use the prototype
          when working for the lecture.
          Many members of that community are expected to start from the
          course's homepage which links to resources on the subjects introduced
          in the lecture. It shall be quite interesting to find out which
          other resources are used by individual students or groups of students.
          Possibly, active students annotate the course homepage with links to
          additional resources (this should be explicitely motivated).
        </p>
        <p>
          In this community there may be some people who are relatively new to
          computing in general and the World-Wide Web in particular.
          This may help finding out about the acceptance of such a system from
          inexperienced Web Users. Furthermore, by inviting a large group there is
          a chance of reducing the problem of a sparse user base which prohibits
          some of the more interesting features like site-related chats.
          Another interesting aspect of this community is that the system may help
          learning groups and other social contacts to emerge.
        </p>
        <p>
          This group was scheduled to be involved three weeks after the second
          group started. However, the amount of people participating from the
          first two groups was not sufficient to make predictions on how the
          system would work in the case of many people from the last group
          joining. Therefore, the experiment was not announced to this group.
          Instead, a heterogenous group of approximately 30 friends
          of the author was invited to try working with the prototype in no
          formalized setup. This group will be referenced as <em>others</em>.
        </p>
        <p>
          As this first phase of the experiment did not provide the expected
          data due to moderate participation, a second
          experiment was scheduled for the summer term 2002. In this second phase
          of the experiment, the following two courses were included:
        </p>
        <p>
          <em><a href="http://www.pms.informatik.uni-muenchen.de/lehre/seminar/internationalisation/02ss/">
          Hauptseminar "i18n and l10n", World Wide Web
          Internationalization and Localization (SS 2002)<br /></a></em>
          is a seminar for approximately 15 graduate students. The participants are expected to
          have basic know-how of Web technologies. The tasks involved
          are expected to require a lot of information searching on the Web,
          but there are no specific groups. However, the whole seminar can be
          seen as a community.
        </p>
        <p>
          <em><a href="http://www.fak12.uni-muenchen.de/vka/frame.htm?/vka/ethnoweb/ethnoweb.htm">
          Ethnologie@Internet (German)<br /></a></em>
          is a seminar for approximately 15 graduate students of ethnology.
          The seminar is meant as an introduction to the Internet, and thus
          participants are expected to be not too familiar with Internet
          technology. The schedule includes group work where participants
          are supposed to find out about Web sites about ethnology and rate
          them. This task is supposed to be accomplished under supervision
          in the University of Munich's main computer pool.
        </p>
      </srf:section>
      <srf:newpage />
      <srf:section id="Experiment" title="Experiment">
        <p>
          The experiment was meant to provide information about three
          variables:
        </p>
        <ul>
          <li>Acceptance in the Community</li>
          <li>Reliability of the Prototype</li>
          <li>Structure of the Visited Web</li>
        </ul>
        <p>
          For each group, there was a presentation of the system and participants
          were invited via eMail to use the system. As there was practically no
          significant participation in the first phase (even after a few reminders
          via the courses' mailing lists), in the second phase volunteers had to
          explicitely write their eMail-adresses on a list to indicate they
          were interested in participating in the experiment. This was done to
          bind the volunteers more formally to the experiment and assure they can be
          contacted for clarifications.
        </p>
        <p>
          From the first group (Praktikum "XML and E-Commerce"), of about
          12 people who participated in the course, two logged in to the
          system. One of them had two sessions, the other had 20 sessions.
          As expected, this group had the power users providing valuable
          informal feedback and expressed enthusiasm about the system in
          personal communications - unfortunately, this applied only to
          one single person.
        </p>
        <p>
          Three participants of the second group (Programmierpraktikum) signed
          on to the system, and they all signed on only once. The group
          had about 90 participants.
        </p>
        <p>
          Finally, in the second phase, the more formal mode of
          participation in the experiment showed some effect: five people
          signed in from each of the courses. Thus, during the second phase
          ten more people have used the prototype. However, only one person
          had four sessions, another had three sessions and the others only one
          or two.
        </p>
        <p>
          From the group of <em>others</em> who have been invited personally
          and did not belong to the formal testbed, one person had 10 sessions
          and was enthusiastic about the system. One had 5 sessions and at
          least found the system interesting and usable.
        </p>
        <p>
          From these results it becomes obvious that no reliable data could
          be obtained from the experiment. In particular, there was no
          instance of collaborative usage, which would have been the most
          interesting kind of usage in the experiment. These results may
          indicate that the acceptance for a system like this is very low,
          but other explanations are possible.
        </p>
        <p>
          To find out more about the acceptance and possible reasons why
          there were only three people using the system actively,
          it was then decided to move on to a survey which is discussed
          in <a class="crossRef" href="UserSurvey" />. However, some interesting
          anecdotal results from the experiment shall be reported here:
        </p>
        <p>
          During the sessions at Ethnologie@Internet, there was
          the opportunity to observe some of the participants while they
          used <em>teamXweb</em> for the first time. While one person could
          easily use the system and later provide detailed feedback about
          useful improvements, two other persons were obviously overcharged
          with handling the system both conceptually ("what is this good for?")
          and practically ("how can I use this?").
          This may indicate that the system was not intuitive enough for many
          of the people who tried working with it. Possibly, this is an
          explanation why even those who signed on to the system, often did not
          log on more often.
        </p>
        <p>
          As expected in <a class="crossRef" href="MetaBrowser" />, there were
          some limitations with displaying certain content of the Web. Even though
          this issue has been pointed out in all the presentations and all written
          introductions to the systems, some users were very frustrated when trying
          to work with commercial pages using Macromedia Flash extensively, or
          search engines using a lot of JavaScript for central navigation features.
          It may be interesting to conduct further experiments with a system
          that does not have this limitation.
        </p>
      </srf:section>
      <srf:section id="UserSurvey" title="User Survey">
        <p>
          One hypothesis explaining the low participation in the experiment is that
          many people did not have enough time to get involved in learning
          to work with a new and innovative system.
          All of the participants are students who have
          to spend extra time learning the system and using it for their
          academic tasks, and some informally mentioned too little time as
          reason for not even trying out the prototype in personal
          communications.
        </p>
        <p>
          Another potential hindrance for people may be concerns about their
          privacy. As the system stores Web usage data on a central server,
          privacy is indeed not particularly secured. Furthermore, the
          system uses cookies and JavaScript, which have a reputation of
          posing serious security risks to users that enable them. This has
          also been mentioned as a reason for not participating in personal
          communications.
        </p>
        <p>
          To test these hypothesis and gather further information on how
          people perceived the system, a questionnaire has been assembled
          and all the people involved in the two phases of the experiment
          have been invited to fill out that questionnaire. The questionnaire
          was implemented as a simple Web form and composed of only ten
          questions that could be answered in less than 10 minutes. This was
          done in the assumption that time was a reason for people not to
          participate and the invitation included a remark that answering
          the questionnaire would not be a time-consuming task.
        </p>
        <p>
          This lightweight nature of the user survey proved itself with
          significant participation.
          Of exactly 150 people that were asked to participate in the survey,
          38 filled out the questionnaire. One questionnaire has been returned
          blank, which may have been a technical accident and thus is ignored.
          Overall participation amounts to 25.3% which can be considered pretty
          good. For the full results of the user survey, see
          <a class="crossRef" href="ResultQuest" />.
        </p>
        <p>
          Not very surprisingly, most participants are studying computer
          science (29, which makes 76.3%). Other majors were hardly
          represented at all, as <a class="crossRef" href="ParticipationMajors" /> shows.
        </p>
        <table class="border" style="width:60%;"
               id="ParticipationMajors"
               summary="This table shows the majors of the students
                        participating in the experiment.">
          <caption>
            Majors of the Students Participating in the User Survey
          </caption>
          <tr>
            <th style="width:50%;text-align:center;">Group</th>
            <th style="width:25%;text-align:center;"># Replies</th>
            <th style="width:25%;text-align:center;">Quota</th>
          </tr>
          <tr><th style="text-align:left;">Computer Science</th>
              <td style="text-align:right;">29</td>
              <td style="text-align:right;">76.32%</td></tr>
          <tr><th style="text-align:left;">Ethnology</th>
              <td style="text-align:right;">2</td>
              <td style="text-align:right;">5.26%</td></tr>
          <tr><th style="text-align:left;">Anglistics</th>
              <td style="text-align:right;">1</td>
              <td style="text-align:right;">2.63%</td></tr>
          <tr><th style="text-align:left;">Computer Linguistics</th>
              <td style="text-align:right;">1</td>
              <td style="text-align:right;">2.63%</td></tr>
          <tr><th style="text-align:left;">Science of Politics</th>
              <td style="text-align:right;">1</td>
              <td style="text-align:right;">2.63%</td></tr>
          <tr><th style="text-align:left;">Psycho Linguistics</th>
              <td style="text-align:right;">1</td>
              <td style="text-align:right;">2.63%</td></tr>
        </table>
        <p>
          The participation relative to the various groups is reproduced in
          <a class="crossRef" href="ParticipationGroups" />. Three people have
          not answered the question which group they belonged to, which is why
          there are only 35 people by groups while 38 people answered
          altogether. Participation is distributed relatively evenly over the
          different groups, with better participation in <em>Ethnologie@Internet</em>.
          All values must be seen with precaution as the number of participants
          in each group is rather small and thus very error prone.
        </p>
        <table class="border" style="width:100%;"
               id="ParticipationGroups"
               summary="This table shows the participation in the user survey,
                        by groups and overall. Participation amounts to 25% both
                        overall and approximately in all of the groups
                        (range from 20% to 36%, mean is 26%).">
          <caption>
            Participation in the User Survey
          </caption>
          <tr>
            <th style="width:49%;text-align:center;">Group</th>
            <th style="width:17%;text-align:center;"># Members</th>
            <th style="width:17%;text-align:center;"># Replies</th>
            <th style="width:17%;text-align:center;">Quota</th>
          </tr>
          <tr>
            <th style="text-align:left;">Praktikum "XML and E-Commerce"</th>
            <td style="text-align:right;">12</td>
            <td style="text-align:right;">3</td>
            <td style="text-align:right;">25%</td>
          </tr>
          <tr>
            <th style="text-align:left;">Programmierpraktikum</th>
            <td style="text-align:right;">90</td>
            <td style="text-align:right;">18</td>
            <td style="text-align:right;">20%</td>
          </tr>
          <tr>
            <th style="text-align:left;">Ethnologie@Internet</th>
            <td style="text-align:right;">14</td>
            <td style="text-align:right;">5</td>
            <td style="text-align:right;">36%</td>
          </tr>
          <tr>
            <th style="text-align:left;">Hauptseminar "i18n and l10n"</th>
            <td style="text-align:right;">5</td>
            <td style="text-align:right;">1</td>
            <td style="text-align:right;">20%</td>
          </tr>
          <tr>
            <th style="text-align:left;">Others</th>
            <td style="text-align:right;">29</td>
            <td style="text-align:right;">8</td>
            <td style="text-align:right;">28%</td>
          </tr>
          <tr>
            <th style="text-align:left;">Overall</th>
            <td style="text-align:right;">150</td>
            <td style="text-align:right;">38 (35)</td>
            <td style="text-align:right;">25%</td>
          </tr>
        </table>
        <p>
          15 (39.5% of 38) participants said that they have created an account,
          only one person (2.6%) has only tried the guest account (however, others
          may have first used the guest account and later signed on - the statistical
          data from the experiment indicates that the guest account was used quite
          frequently, 63 times overall which includes a few logons for testing
          and demonstration purposes).
          13 (34.2%) have not yet tried <em>teamXweb</em> and 8 (21.1%) said
          they will not try the system. That means that a majority
          (21 people, 55.3%) has not ever seen the system except possibly
          during the presentations, which is consistent with the results from the
          experiment. This also means that only 37 of the 38 participants answered
          the question on whether they have used <em>teamXweb</em>.
        </p>
        <p>
          When asked for the reason why they did not or will not try the
          system, 6 (28.6% of 21, 15.8% of 38) said they did not see
          a use in the system. Other reasons (multiple selections were allowed)
          were insufficient time,
          concerns about security and privacy and general disinterest
          (3 persons each, 14.3% of 21, 7.9% of 38). Finally, two
          people said they simply did not want to join an experiment.
        </p>
        <p>
          The participants could also write an open answer to the question on
          why they did not try <em>teamXweb</em>. Two mentioned security
          concerns, however, one of them said the main reason was lack of
          time. Two participants of the <em>Programmierpraktikum</em> considered
          the system not useful for their task. A surprising result as use cases
          particular to that course (Java API, see
          <a class="crossRef" href="TestBed" />)
          have been introduced in the presentation and these two people answered
          the question whether they saw the presentation with yes.
        </p>
        <p>
          The 15 people who did create an account were asked why they did not
          use the system more often - only one of them had more than 10
          sessions, so 14 people were supposed to answer the question.
          Multiple selections were allowed and two answers
          indicating that the system was not considered useful
          (generally and due to the provided contents) were checked by
          four people each (29% of 14).
          Two people said they had forgotten their username
          and password (this was mentioned to the author in previous
          personal communications and a confirmation eMail was sent to new
          users with the data since that).
        </p>
        <p>
          The questionnaire contained a section where people who tried the system
          could evaluate various features of the system. For each feature, the
          importance and the quality of the implementation could be evaluated
          in two separate scales. The scale for the quality had six values from
          <code>very good = 1</code> to <code>insufficient = 6</code>, the scale for the
          importance also had six values, ranging from
          <code>important = 1</code> to <code>useless = 6</code>. This scale was
          compared to the German grade system which also ranges from 1 to 6, where
          1 to 4 indicate that a test or course was passed, while 5 and 6 indicate
          failure.
        </p>
              <srf:figure id="questUserInterface"
                          src="diagrams/questResultUserInterface"
                          summary="Shows how users evaluated importance and quality of
                                   the user interface of teamXweb. While importance was
                                   rated very high, the quality was rated medium to
                                   good."
                          width="350" height="250" scale="1.0"
                          preferredFormat="svg">
                <caption>User Interface</caption>
              </srf:figure>
        <p>
          This question has been answered by 17 people which leads to the conclusion
          that the one person that has not answered the first question did in fact
          use <em>teamXweb</em>. The first question was generally about the importance
          and quality of the user interface. As
          <a class="crossRef" href="questUserInterface" /> shows, the importance
          was rated very high by most people. One person found the user interface
          not very important (5 on the scale). The quality of the user interface of
          <em>teamXweb</em> was considered medium, with a tendency to good.
          The diagram shows a discrepancy between importance and
          quality, indicating that the quality of the user interface still needs
          improvements.
        </p>
              <srf:figure id="questResultNoInstallation"
                          src="diagrams/questResultNoInstallation"
                          summary="Shows how users evaluated importance and quality
                                   of having no need for installation of the system.
                                   This was considered very important and very well
                                   implemented."
                          width="350" height="250" scale="1.0"
                          preferredFormat="svg">
                <caption>No Installation</caption>
              </srf:figure>
        <p>
          One of the most important reasons for chosing the architecture discussed
          in <a class="crossRef" href="MetaBrowser" /> was that no installation is
          required at the clients. As it turned out in the experiment, this must be
          weighed against the display problems with some pages. So the second part
          of this question was about the feature of not requiring an installation.
          The exact wording was "Dass man es [teamXweb] ohne Installation direkt
          im Web starten kann" (that <em>teamXweb</em> can be started directly in the Web without
          installation).
        </p>
        <p>
          As <a class="crossRef" href="questResultNoInstallation" />
          shows, this has been considered both important and implemented well by
          most people. Only two people found this feature comparatively unimportant
          (12% of 17).
          This must be compared with a later question, where four people indicated that
          displaying all pages would be a desirable improvement and they would
          accept installing a plugin for this (11% of 38). From these
          results, the architectural decision taken in
          <a class="crossRef" href="Architecture" /> seems to have proven useful,
          but may still have to be extended.
        </p>
        <p>
          It does not satisfy the needs of all users, but it seems that more people
          appreciate needing no installation than people are having trouble
          with particular pages.
          The similarity between importance and quality may be an artefact due
          to the fact that importance and quality are dependent in this case:
          if the feature is considered important, its existence in a system will
          probably be considered a "good implementation".
        </p>
        <p>
          The following parts of this question were concerned with the collaboration
          features of <em>teamXweb</em>. It must be pointed out that the answers to
          these questions are of a rather theoretical nature, as participants could
          hardly use the system in the intended way.
          This is a consequence of the system not being used
          by enough related people concurrently to allow collaboration.
        </p>
        <p>
          Therefore, two features that were not originally intended for the
          system but "come with the system for free" were also evaluated:
          bookmarks and history can be accessed by the same user whereever he
          is. Unlike with common browsers, where these data are stored with
          the browser installation, <em>teamXweb</em> allows accessing the
          data anywhere a user has access to the Internet.
        </p>
        <p>
          The results are
          compiled in <a class="crossRef" href="QuestResults6" />.
          Generally, bookmarks are considered more important than history features
          (<a class="crossRef" href="questResultShareBookmarks" />
           and <a class="crossRef" href="questResultBookmarksAccessAnywhere" />
           vs. <a class="crossRef" href="questResultShareHistory" />
           and <a class="crossRef" href="questResultHistoryAccessAnywhere" />),
          and accessing history or bookmarks anywhere on the net was considered
          more important than sharing them
          (<a class="crossRef" href="questResultBookmarksAccessAnywhere" />
           and <a class="crossRef" href="questResultHistoryAccessAnywhere" />
           vs. <a class="crossRef" href="questResultShareBookmarks" />
           and <a class="crossRef" href="questResultShareHistory" />).
          The finding that Web browser's histories
          are not considered a very important feature is consistent with the
          findings of <cite>[Catledge]</cite> and <cite>[Tauscher]</cite> that
          were presented in
          <a class="crossRef" href="TrackingNavigationBehavior" />. There should
          be a correlation between how often a feature is used (findings of
          <cite>[Catledge]</cite> and <cite>[Tauscher]</cite>) and how important
          it is considered (findings from this user survey).
        </p>
        <p>
          A more interesting finding, however, may be that people seem to be more
          interested in features for themselves than in collaboration features.
          If the data is representative, this is a possible conclusion from the
          findings in this survey, and it would be a very good explanation for
          the results of the experiment. However, this is just a lightly based
          hypothesis and further research is needed to test this.
        </p>
        <p>
          Another aspect of <em>teamXweb</em> that may have to be improved,
          according to the results of the survey, is communication. Most people
          considered the quality of the implementation medium on the scale,
          while importance is considered relatively high both by the participants
          of the survey
          (see <a class="crossRef" href="questResultCommunityCommunication" />)
          and in <a class="crossRef" href="ConceptCommunication" /> and
          <a class="crossRef" href="Communication" />. Annotations, on the
          other hand seem to be accepted consistently in quality and importance
          as <a class="crossRef" href="questResultAnnotations" />
          illustrates.
        </p>
        <srf:newpage />
        <table style="width:100%;"
               id="QuestResults6"
               summary="This table compiles the results of the evaluation of
                        features required for collaboration.">
          <caption>Evaluation of Collaboration Features</caption>
          <tr>
            <td>
              <srf:figure id="questResultShareBookmarks"
                          src="diagrams/questResultShareBookmarks"
                          summary="Shows how users evaluated importance and
                                   quality of sharing bookmarks among communities.
                                   This has been considered important and well
                                   implemented."
                          width="350" height="250" scale="0.8"
                          preferredFormat="svg">
                <caption>Share Bookmarks</caption>
              </srf:figure>
            </td>
            <td>
              <srf:figure id="questResultBookmarksAccessAnywhere"
                          src="diagrams/questResultBookmarksAccessAnywhere"
                          summary="Shows how users evaluated importance and
                                   quality of being able to access their bookmarks
                                   anywhere on the Internet.
                                   This has been considered very important and well
                                   implemented."
                          width="350" height="250" scale="0.8"
                          preferredFormat="svg">
                <caption>Access Bookmarks Anywhere</caption>
              </srf:figure>
            </td>
          </tr>
          <tr>
            <td>
              <srf:figure id="questResultShareHistory"
                          src="diagrams/questResultShareHistory"
                          summary="Shows how users evaluated importance and
                                   quality of sharing their session history
                                   among communities.
                                   This has been considered more or less
                                   important and well implemented."
                          width="350" height="250" scale="0.8"
                          preferredFormat="svg">
                <caption>Share History</caption>
              </srf:figure>
            </td>
            <td>
              <srf:figure id="questResultHistoryAccessAnywhere"
                          src="diagrams/questResultHistoryAccessAnywhere"
                          summary="Shows how users evaluated importance and
                                   quality of being able to access their session history
                                   anywhere on the Internet.
                                   This has been considered moderately well implemented
                                   and a little less important."
                          width="350" height="250" scale="0.8"
                          preferredFormat="svg">
                <caption>Access History Anywhere</caption>
              </srf:figure>
            </td>
          </tr>
          <tr>
            <td>
              <srf:figure id="questResultCommunityCommunication"
                          src="diagrams/questResultCommunityCommunication"
                          summary="Shows how users evaluated importance and
                                   quality of communication within communities.
                                   This has been considered relatively important
                                   but only moderately well implemented."
                          width="350" height="250" scale="0.8"
                          preferredFormat="svg">
                <caption>Communication within Communities</caption>
              </srf:figure>
            </td>
            <td>
              <srf:figure id="questResultAnnotations"
                          src="diagrams/questResultAnnotations"
                          summary="Shows how users evaluated importance and
                                   quality of annotating Web resources.
                                   This has been considered relatively important
                                   and moderately well implemented."
                          width="350" height="250" scale="0.8"
                          preferredFormat="svg">
                <caption>Annotations</caption>
              </srf:figure>
            </td>
          </tr>
        </table>
        <p>
          Finally, four questions were asked directly to find out how to motivate
          people to use the system and what could be improved. For each area, there
          was a questions where participants had to select from a
          set of given answers and
          an open version of the question. The two most important ways of motivating
          people had to do with other people: 15 people indicated that friends
          recommending the system to them would be a good motivation, 13 said
          more people were already using the system would motivate them
          (39% respectively 34% of 38 participants; multiple selections were
          allowed, see also <a class="crossRef" href="Motivations" />).
          Therefore, if a core set of early adopters can be motivated to
          use the system, it is very probable that others will follow.
        </p>
        <p>
          Seven participants said that a private server not accessible by people who
          do not belong to the relevant community would be a motivation (18% of 38).
          This indicates that a well-secured peer-to-peer architecture outlined in
          <a class="crossRef" href="PeerToPeer" /> may improve usage of the system.
          Possibly, while it may not be feasible to install this system on a global
          basis, targetting the system at small installations with a few users may
          prove successful. In that case, a single, secured server located at
          the institution where members access the Internet may be sufficient and
          no peer to peer services required.
        </p>
        <table class="border" style="width:100%;"
               id="Motivations"
               summary="Results of the question what could motivate
                        the users to use the system more often.">
          <caption>
            Motivations to Use the System more often
          </caption>
          <tr>
            <th style="width:68%;text-align:center;">Answer</th>
            <th style="width:16%;text-align:center;"># Replies</th>
            <th style="width:16%;text-align:center;">Quota</th>
          </tr>
          <tr><th style="text-align:left;">Nothing</th>
              <td style="text-align:right;">1</td>
              <td style="text-align:right;">2.6%</td></tr>
          <tr><th style="text-align:left;">More, better Features</th>
              <td style="text-align:right;">6</td>
              <td style="text-align:right;">15.8%</td></tr>
          <tr><th style="text-align:left;">More People using it already</th>
              <td style="text-align:right;">13</td>
              <td style="text-align:right;">34.2%</td></tr>
          <tr><th style="text-align:left;">Friends that use and Recommend it</th>
              <td style="text-align:right;">15</td>
              <td style="text-align:right;">39.5%</td></tr>
          <tr><th style="text-align:left;">Getting Money for Using it</th>
              <td style="text-align:right;">4</td>
              <td style="text-align:right;">10.5%</td></tr>
          <tr><th style="text-align:left;">Paying Money for Using it</th>
              <td style="text-align:right;">0</td>
              <td style="text-align:right;">0.0%</td></tr>
          <tr><th style="text-align:left;">Private Server for my Community</th>
              <td style="text-align:right;">7</td>
              <td style="text-align:right;">18.4%</td></tr>
        </table>
        <p>
          It seems that there is no pressing need to add new features to the system:
          only six people said this could motivate them to use the system at all or
          more often (16% of 38), and the question concerning new features had
          a moderate rate of answers. The maximum was seven people (18%) asking
          for the possibility to send information into the system via standard eMail.
          Instead of considering this a new feature, it should be seen as a request
          for better integration with existing standards, a finding that is consistent
          with many of the answers to the open questions, for instance:
        </p>
        <ul>
          <li>
                  "Bookmarks möchte ich am liebsten im-/exportieren können [...] um mit
                  meinen bestehenden Bookmarks gleich losarbeiten zu können (evtl.
                  Formatstandards wie XBEL, Netscape-format?)" (A request for the possibility
                  to import and export bookmarks so that existing bookmarks can be used,
                  pointer to formats for this: XBEL and the format used by Netscape).
                  [From an answer to question 8].
              </li>
          <li>
                  "zb ein (httpS)-webinterface fuer pop/imap (evtl. mit ssl)
                  mailaccount [...]" (A request for an interface to standard eMail).
                  [From an answer to question 10].
              </li>
              <li>
                  "Die Gruppe kommunizierte [...] über Mailinglist. So lange der Umgang
                  mit dem TeamxWeb Tool nicht selbstverständlich ist, sollte man sich
                  überlegen, die Kommunikation automatisch an die Mailingliste zu
                  spiegeln, um auch technisch abgeneigte Mitglieder miteinzubeziehen
                  und um nicht zwei verschiedene Plattformen bei der gemeinsamen
                  Kommunikation zu haben." (Statement that the group involved in the
                  experiment used a mailing-list for communication and that the
                  communities' communication of teamXweb needs to be forwarded to the
                  mailing-list respectively the communication of the mailing-list needs
                  to be forwarded to the teamXweb community, in order to avoid
                  diverse communication platforms).
                  [From an answer to question 10].
              </li>
        </ul>
      </srf:section>
    </srf:chapter>
	<srf:blankpage />
    <srf:chapter id="discussion" title="Discussion">
      <p>
        The theoretical backgrounds for an integrated approach to
        collaborative Web usage have been established. Both the
        terminology has been clarified and a variety of existing
        approaches in various disciplines has been surveyed and
        their relevance disussed. On that basis, concepts relevant to
        such an integrated approach have been introduced:
        collaboration, communities, Web navigation,
        communication, categorization and privacy and security issues.
      </p>
      <p>
        An integrated approach to collaborative Web usage can be
        implemented with many different architectures that were
        introduced and discussed. In particular, some of these
        architectures can be combined and the advantages of such
        combinations have been outlined. As existing architectures did
        not meet the needs for the system, an approach that was
        termed <em>meta-browser</em> has been selected and explained
        in detail.
      </p>
      <p>
        With the given architecture and time constraints, a set of
        features for a prototype is possible. This set of features
        was discussed and finally compared to the feature-set of
        commonly used Web browsers.
      </p>
      <p>
        The prototype - called <em>teamXweb</em> - was implemented
        and tested with an experiment. As the experiment did not
        provide data with the expected density, it has been
        complemented with a user survey. The major limitation of the
        experiment was that no instance of actual collaboration took
        place, which also limits the reliability of some of the
        survey's results. Furthermore, more than half of the people
        who answered the questionnaire did not actually use the
        system at all.
      </p>
      <p>
        A system like <em>teamXweb</em> does not only have some
        inherent complexity but also confronts people with a new
        approach to using the Web. Aside of the effort to learn
        using such a new system efficiently, this requires from the
        potential users a shift in the way they think about the Web
        and how it is used. While very few early-adopters seem to
        be capable of performing this shift in thinking, most people
        will probably start using the system only after some others
        already use the system and recommend it to them,
        a typical "chicken-egg" problem
      </p>
      <p>
        While the core features and concepts of <em>teamXweb</em>
        have proven themselves a good basis,
        some improvements to <em>teamXweb</em> facilitating
        this process include:
      </p>
      <ul>
        <li>
          <strong>A more intuitive and easy to understand user-interface.</strong>
          In particular, as much complexity as possible must be
          hidden from the inexperienced user while allowing
          experienced users to access the whole potential of the
          system. One area that may need specific attention is
          communication.
        </li>
        <li>
          <strong>Avoid storing data that may raise privacy concerns.</strong>
          As history doesn't seem to be important to most people,
          removing the automatic capturing of history data may be a
          significant step towards that end.
          Instead, users may be given the possibility to <em>record</em>
          certain sessions they consider useful for later retrieval.
          Another approach is having <em>local</em>, <em>distributed</em>
          servers for <em>teamXweb</em> that only store the data
          relevant to their users and that are only accessible by
          those users, for example a dedicated server for an
          institution or project that only hosts relevant users and
          communities.
        </li>
        <li>
          <strong>Adapt architecture to user's needs.</strong>
          The architecture with the client implemented as a
          meta-browser Web application has proven helpful for many
          users and many situations. In particular, the possibility
          to access the system's data anywhere, without the need
          of installing any additional software has been appreciated.
          However, the problems with certain pages and the limited
          possibilities concerning the user interface establish the
          need for another solution. Ideally, the lightweight interface
          shall be kept, but complemented by a richer interface that
          may be an add-on to existing Web browsers. The Mozilla
          browser may provide a very useful framework for this with
          the XML User-Interface Language
          (<acronym id="xul" title="XML User-interface Language">XUL</acronym>).
          The idea behind XUL is creating user interfaces with XML,
          and the user interface of Mozilla is already implemented
          that way. Thus, <em>teamXweb</em> could be integrated
          smoothly into the browser.
          For an introduction to XUL, see <cite>[Deakin]</cite>.
        </li>
        <li>
          <strong>Integrate the system with existing standards.</strong>
          This way, the threshold for moving to the new system can be
          significantly reduced. In detail, this means:
          <ul>
            <li>Import and export of bookmark collections.</li>
            <li>Integration of standardized communication:
              <ul>
                <li>
                  Mailing-List functionality for Communities (i.e.,
                  a bridge between <em>teamXweb</em> and standard
                  eMail, allowing users to participate in discussions
                  via standard eMail).
                </li>
                <li>Bridge to existing annotations systems (e.g., Annotea).</li>
                <li>
                  Integration with existing Instant Messengers and
                  <acronym title="Internet Relay Chat">IRC</acronym>.
                </li>
              </ul>
            </li>
          </ul>
        </li>
      </ul>
      <p>
        Summing it up, there is significant need for further work
        in the areas of theoretical backgrounds (in particular,
        modelling Web navigation), implementation as well as
        gathering empirical data on the
        acceptance and usability of such an evolving system. It
        seems that the direction set in the present work is promising,
        but further steps are needed for realizing the goal
        of an integrated approach to collaborative Web usage.
      </p>
    </srf:chapter>

    <srf:appendix id="ImplementationDocumentation" title="System Implementation Documentation">
      <p>
        In this appendix, a brief overview of the implementation of
        <em>teamXweb</em> is given.
        Instead of going through the whole system on all abstraction levels,
        only aspects that are considered particularly interesting
        are selected. The appendix starts with a very abstract description
        of the system from the user's perspective.
        After that, the technologies used for the implementation are discussed.
        Then, an overview of the user interface of <em>teamXweb</em> is given.
        Finally, the processing of Web pages during
        a user's navigation through the Web is described in some detail,
        reaching to the level of source-code snippets.
        <!--
        <strong class="pending">PENDING (OPTIONAL):</strong>
        Finally, improvements to the system that can be applied in the
        future but couldn't implemented in the current version due to time
        constraints.
        -->
      </p>
      <p>
        For a discussion of the chosen
        architecture, see <a class="crossRef" href="MetaBrowser" />.
        As in <a class="crossRef" href="Architecture" />, the UML is used
        for illustrating the design with diagrams.
      </p>
      <p>
        As tool for analysis, design and implementing <em>teamXweb</em>, the
        <acronym id="ide" title="Integrated Development Environment">IDE</acronym>
        <dfn id="tog">Together Control Center</dfn> has been used.
        <em>Together</em> provides modelling with the diagrams defined by
        the UML and several additional proprietary diagrams. Furthermore,
        it provides a convenient sourcecode editor. The most important
        feature, however, is the so-called <dfn id="simRTE">simultanuous
        round-trip engineering</dfn>: whenever changes are applied to
        class diagrams, the source code is automatically updated - and
        if the source code is changed, all related class diagrams
        are updated. That way, it is very easy to switch between
        design and implementation phases, allowing quick iterations.
        Finally, an academic license for Together could be obtained
        for free by <cite>[Togethersoft]</cite>.
      </p>

		<srf:newpage />
      <srf:appsection id="UsersView" title="The User's Perspective">
      <p>
        For a very abstract view of the system from the user's perspective,
        see the Use Case diagram in <a class="crossRef" href="UseCases" />.
        The Use Cases are partitioned into five areas of functionality:
      </p>
      <ul>
        <li>User Management</li>
        <li>Common Browser Functionality</li>
        <li>History (includes Bookmark functionalities)</li>
        <li>Communities</li>
        <li>Communication</li>
      </ul>
      <p>
        The Use Cases concerning communities and communication are
        exclusively collaborative, while history includes non-collaborative
        Use Cases that are extended by collaborative Use Cases.
        User management is not collaborative
        in itself but is required for collaborative Use Cases.
      </p>
      <srf:figure id="UseCases"
                  src="diagrams/UseCases"
                  summary="This Use Case diagram gives an overview of the Use Cases
                           that teamXweb shall implement. It is divided
                           into the following areas of functionality:
                           User Management, Common Browser Functionality,
                           History, Communities and Communication. There
                           are two different types of actors: user and
                           authentificated user."
                  width="1001" height="581" scale="0.6"
                  preferredFormat="svg">
          <caption>
            Uses Cases for the teamXweb System
          </caption>
       </srf:figure>
      <p>
        There are two types of actors: <em>users</em> and
        <em>authentificated users</em>. The only functionality a
        <dfn id="actorUser">user</dfn> has access to is registering with the system
        or logging in to the system. During registration, the user chooses
        a unique user name and password that he can later use for logging
        in. After logging in, a user becomes an
        <dfn id="actorAuthUser">authentificated user</dfn>
        and can thus all of the functionality available to
        <em>authentificated users</em>. However, a
        <dfn id="guestAccount">guest account</dfn> has been added which
        allows users acting like <em>authentificated users</em> without
        having to register or login. There is only one guest account,
        however, so that all users logging in as guests share the same
        data.
      </p>
      <p>
        Use Cases concerning synchronous communication are drawn with
        white background because they are not implemented in the current
        system. All other Use Cases are drawn with a green background to
        indicate that these Use Cases have been implemented successfully.
      </p>
      <p>
        The process of registering with and logging in to the system is
        also illustrated with the Activity Diagram in
        <a class="crossRef" href="Login" />. It starts with an HTML-form
        being shown to the user. If the user is new, he can register
        by filling out a section for new users within that form, that
        requires entering a new username and a password that must be
        entered twice to avoid typing errors that would result in the
        inability to login at later times. If the username is not
        unique (i.e., another user already has used that name) or the
        passwords mismatch, the user is informed with an error message
        and must try it again. Otherwise, he enters the system.
      </p>
      <p>
        If the user has previously registered with the system, he is
        known to the system and should know his username and password
        that he can enter in another section of the login page. If
        the login data is correct, he enters the system. Otherwise
        he is given an error message and must try again. If he fails
        for three attempts, his session ends. The user interface elements
        involved in this process are explained in
        <a class="crossRef" href="WebApplication" />.
      </p>
      <srf:figure id="Login"
                  src="diagrams/Login"
                  summary="This Activity Diagram shows the process of
                           registering with or logging in to the system
                           from the user's perpective."
                  width="663" height="526" scale="0.8"
                  preferredFormat="svg">
          <caption>
            Activities for Registering with or Logging in to the System
          </caption>
       </srf:figure>
       </srf:appsection>
      <srf:appsection id="Technologies" title="Technologies Used for Implementing the System">
        <p>
          This section gives a brief overview of the technologies used
          for implementing <em>teamXweb</em>. These technologies are only
          explained insofar it is needed to explain the choice of the
          given technology. For more detailed information, see the
          relevant specifications and Web sites.
        </p>
        <p>
          As implementation language for the server, Java has been chosen.
          The major reason for this is that Java is not only a programming
          language, but a development platform with a large set of
          well-documented and consistent APIs that is used widely in
          the Web environment. At the time when the implementation
          was started, the
          <em>Java&#8482; 2 Standard Edition, Version 1.3.1
          (J2SE&#8482;)</em>
          <cite>[J2SE13]</cite> was the most current stable
          version of this development platform. Even though first preview
          releases of <em>Java&#8482; 2 Standard Edition, Version 1.4
          (J2SE&#8482;)</em>
          <cite>[J2SE14]</cite> were already available and
          used in early versions of the prototype, these
          had significant incompatibilities with other components that
          were used (Tomcat in particular) and thus later versions of
          the prototype have been implemented with the earlier version
          of Java (1.3.1).
        </p>
        <p>
          This was not an easy decision because the incompatibilities
          being fixed was just a question of time and there are significant
          improvements in <em>J2SE 1.4</em> that would have simplified
          development:
        </p>
        <ul>
          <li><em>Java Secure Socket Extension (JSSE)</em> has been integrated</li>
          <li>a set of APIs for processing XML has been added</li>
          <li>an API for regular expressions has been added</li>
        </ul>
        <p>
          These technologies had to be added externally when the older
          version of the Java Platform replaced the more recent one.
        </p>
        <p>
          In <em>J2SE 1.3</em>, there is no native support for
          <acronym id="ssl" title="Secure Socket Layer">SSL</acronym>.
          Therefore, no Web content delivered via a secure HTTP connection
          (protocol HTTPS) could be viewed with <em>teamXweb</em>.
          In order to ensure secure content can also be delivered,
          <em>Java&#8482; Secure Socket Extension (JSSE)</em> is added.
          See <cite>[JSSE]</cite> for details on this technology.
        </p>
        <p>
          XML is used for making various data in <em>teamXweb</em>
          persistent. XML is very suitable for this task because the
          data to be persisted is highly structured: users that belong to
          communities, Web pages that belong to Web sites, bookmarks and
          history. The only realistic alternative to using XML for this
          would be using an object oriented database. In fact, an
          object oriented database would have the advantage that no
          XML to Java-objects mapping is required. That way, persistence
          would have been less error prone and the implementation may have
          been easier. On the other hand, XML is human readable and
          can be processed in many ways (e.g., via XSL). Furthermore,
          most object oriented database systems are commercial and
          therefore could not be used for this project.
        </p>
        <p>
          For parsing and serializing XML, the Java XML parser
          <cite>[Crimson]</cite> was used. It is a small and simple
          XML parser for Java that is also used as the default parser
          for <dfn id="jaxp" title="Java[tm] API for XML Processing">JAXP</dfn>
          (see also <cite>[JAXP]</cite>).
          The XML data
          was accessed and processed by the application via
          <cite>[JDOM]</cite>. While <cite>[DOM]</cite> is a widely
          accepted standard for accessing and processing XML data from
          various programming languages, it is cumbersome to use from
          Java. <cite>[JDOM]</cite> is much more oriented on features
          specific to the Java Platform (e.g., Collections) and therefore
          integrates much better in a Java application.
        </p>
        <p>
          In early versions of the prototype, <em>regular expressions</em>
          were used to replace the original URIs in hyperlinks of the
          documents (for details why this is needed and what exactly is
          done, see <a class="crossRef" href="MetaBrowser" /> and
          <a class="crossRef" href="PageProcessing" />). Furthermore,
          String replacement is needed to fill data into templates and
          replace <code>&lt;</code> and <code>&gt;</code> with
          <code>&amp;lt;</code> and <code>&amp;gt;</code>.
          As <em>J2SE 1.3</em> does not
          support regular expressions natively, an external API was
          needed. Jakarta ORO (<cite>[JakartaORO]</cite>) was used
          because it was simple and easy to learn in replacement of
          the regular expression support in
          <em>J2SE 1.4</em>.
        </p>
        <p>
          In later versions of <em>teamXweb</em>, the processing of
          Web pages was done with <cite>[JTidy]</cite>.
          <cite>[JTidy]</cite> generates a
          <acronym id="dom" title="Document Object Model">DOM</acronym>-tree
          for any HTML document, even if it is <em>dirty</em> HTML
          not consistent with the standards. While the previous approach
          using regular expressions to find instances of
          <code>&lt;a href="<em>url</em>"&gt;</code> and replacing the
          <code><em>url</em></code>-part thereof worked in many cases,
          it failed when pages were too <em>dirty</em>. Furthermore,
          during the implementation and testing, many additional cases
          were discovered that needed processing - and writing regular expressions
          for each of these cases would have been cumbersome and
          significantly time consuming. Processing the documents
          via the DOM abstraction was a much more elegant and safe
          approach: instead of going through the document on the
          text-level, one can simply look for elements with a certain
          name (e.g., <code>&lt;a&gt;</code>) and replace the contents
          of specific attributes (e.g., <code>href</code>).
        </p>
        <p>
          As discussed in <a class="crossRef" href="MetaBrowser" />, large
          parts of the user interface of <em>teamXweb</em> are implemented
          using HTML with some added JavaScript functionality. The major
          advantage of this approach is that no client installation is
          required and it works with any graphical Web browser.
          While in early versions of <em>teamXweb</em>, even the navigation
          frame was done with HTML, the functionality accessible via
          hyperlinks that launched JavaScript methods, a much better look
          has been achieved by using a Flash movie that was designed
          by Kernzeit GmbH.
          The HTML navigation bar is still accessible for compatibility,
          but the Flash format has been used because it is the de-facto
          standard for animated vector graphics and available in most
          browser installations.
          The buttons in the Flash movie invoke the
          same JavaScript functions that were previously invoked by
          hyperlinks. The functionality and a few visual improvements
          to the navigation Flash movie have been added by the author
          of the present work. For the communication between the Flash movie
          running in the Flash plugin and the Web page,
          <dfn id="LiveConnect">LiveConnect</dfn> is used, which is available
          in most current browsers. For details on LiveConnect, see
          <cite>[Hoque]</cite>.
        </p>
        <p>
          The HTML pages making up the user interface are generated dynamically
          with <em>JavaServer Pages&#8482; (JSPs)</em>.
          An early approach in the
          prototype was using servlets (see below) and templates with placeholders
          that were dynamically replaced with the data to be shown at
          the client. This turned out very cumbersome to say the least.
          <em>Java Servlets</em>
          are used successfully for the controller part of the user
          interface, accepting HTTP requests and converting them
          to object oriented method calls to the relevant
          helper classes (subclasses of <code>ServletSupport</code>)
          as illustrated in <a class="crossRef" href="ServletDelegation" />
          and <a class="crossRef" href="PageProcessor" />.
          The view, however, consists mostly of template HTML and
          JavaScript code in which certain fragments are
          dynamically created.
          This is exactly what
          <em>JSPs</em> were invented for: general (X)HTML pages
          can be enhanced with so-called
          <dfn id="scriptlets">scriptlets</dfn> and special
          JSP-tags
          that are executed on the server to generate the desired
          output.
          See <a class="crossRef" href="WebApplication" /> for an
          overview of how the user interface has been implemented
          in <em>teamXweb</em>.
          For more detailed information on Java Servlets
          and JSPs, see the relevant specifications
          <cite>[JavaServlet]</cite> and <cite>[JSP]</cite> or the
          home page of Java Servlets and JavaServer Pages
          at <cite>[JavaServletJSPWeb]</cite>.
        </p>
        <p>
          Servlets and JSPs require a so-called
          <dfn id="servletContainer">servlet container</dfn> that
          provides the environment the Servlets and JSPs run in.
          For example, listening on a port for HTTP-requests and
          converting them to Java objects is done by the servlet
          container as well as compiling JSPs into Servlets
          and those Servlets into Java byte code. As servlet container,
          <em>Apache Tomcat 4.0</em> (<cite>[Tomcat]</cite>)
          has been chosen, as it
          is a non-commercial implementation of the specifications
          and is also used in the official Reference Implementation endorsed
          by the authors of the specifications (Sun Microsystems).
        </p>
        <p>
          After some users complained that they had forgotten their
          login data (see <a class="crossRef" href="UserSurvey" />),
          a functionality has been added to the system
          that an eMail is automatically sent to the users when
          they register with the system. Furthermore, users that
          still know their login name and have added their eMail
          address to their profile can make the system send them an
          eMail with their complete login data at any time.
          For sending these eMails, the <em>JavaMail API</em>
          (<cite>[JavaMail]</cite>) has
          been used as it provides a very easy to user interface
          to eMail functionality. In future versions of
          <em>teamXweb</em>, the <em>JavaMail API</em> could also
          be used to create a bridge between the proprietary
          communication system within <em>teamXweb</em> and
          standards based eMail communication.
        </p>
        <p>
          Finally, both for debugging and logging of normal operation,
          <cite>[Log4J]</cite> is used. This provides a convenient and
          highly configurable system for debug messages as well as
          system messages. The logging can be directed to different
          files depending on the origin of the log message, so that
          for example messages concerning user management are written
          to another file than messages concerning browsing
          behavior. While logging functionality is an integral part
          of the <em>J2SE 1.4</em>, Log4J also works with
          <em>J2SE 1.3</em>.
        </p>
      </srf:appsection>
      <srf:appsection id="WebApplication" title="User Interface of the System">
        <p>
          This section gives an overview of how the user interface of
          <em>teamXweb</em> has been implemented. It refers to screenshots
          in <a class="crossRef" href="MetaBrowser" />
          and <a class="crossRef" href="ImplementedFeatures" />.
          For illustrations, in addition to standard UML diagrams,
          also so-called <dfn id="WebAppDiag">Web Application Diagram</dfn>s
          are used.
          These are used because the UML does not provide a good way for
          giving an overview of a set of JSPs that make up the user interface
          of a Web application. This type of diagram is provided by
          <em>Together 5.5</em>, the IDE
          used for developing <em>teamXweb</em>. While this type of
          diagram has some limitation as provided by <em>Together</em>
          (e.g., only one type of relationship between JSPs can be expressed),
          using it is preferred over creating an own type of diagram
          because this would have required additional tools which could not
          be easily integrated into the development process.
        </p>
        <p>
          The Web Application Diagram uses rectangles with the text
          <code>JSP</code> and the name of the JSP below that text for
          representing JSPs.
          Notes can be added to the diagram in the way notes are added
          to common UML diagrams.
          There is only one type of relationship between
          two JSPs that can be expressed, which is used for
          "consists of (either frameset or inclusion)", "replaces" and
          "opens (in a new window)".
          This relationship is visualized with
          a line between two rectangles and even though the relationship is
          always directed, this is not visualized in the diagrams
          (which is considered a major limitation).
          Notice that not all relationships between JSPs are covered in the
          diagrams used in this section, to avoid cluttering the diagrams
          with lines.
          Colors have been used
          to make the diagram more expressive. See the notes in
          <a class="crossRef" href="teamXwebApp1" /> for details on how
          this is used, and also as an example of a Web Application Diagram.
        </p>
        <p>
          The user interface of <em>teamXweb</em> has been implemented
          loosely based on the
          <acronym id="mvc" title="Model-View-Controller">MVC</acronym>
          design pattern.
          While the pattern itself is not covered in this
          section (see <cite>[Burbeck]</cite> for an introduction),
          and <em>teamXweb</em> does not implement the pattern
          consistently, the usage of different technologies for view and
          controller is characteristic for the usage of this pattern
          in the Web environment: JSPs are used to implement the <em>view</em>
          and Servlets are used to implement the <em>controller</em>. The
          <em>model</em> is implemented separetely with a set of plain
          Java classes.
          Furthermore, in the controller part of
          the MVC pattern, <em>teamXweb</em> uses an own approach to
          ensure reusability of the application logic.
        </p>
      <srf:appsubsection id="UI-Model" title="Model">
        <p>
          The model of <em>teamXweb</em> includes classes representing
          browser components (e.g., a browser window), Web abstractions
          (e.g., Web site, Web page, link) and communication artefacts
          (e.g., Note) as well as users and communities. An abstract
          overview of the classes modelling the core system of
          <em>teamXweb</em> is shown in the Class Diagram in
          <a class="crossRef" href="TeamXWebOverview" />.
          <code>KnownWeb</code> is a class implementing the Singleton
          pattern, that provides access to all Web sites that have
          been previously visited with <em>teamXweb</em>. Via those
          Web sites, all Web pages can be reached.
        </p>
           <srf:figure id="TeamXWebOverview"
                       src="diagrams/TeamXWebOverview"
                       summary="An abstract overview of the core model of teamXweb."
                       width="1009" height="588" scale="0.6"
                       preferredFormat="svg">
             <caption>
               Core Model of teamXweb
             </caption>
           </srf:figure>
        <p>
          While the previous example is just the canonical model and
          therefore not much explanation is needed, the classes modelling
          communication are more technical and therefore, more interesting.
          Within <em>teamXweb</em>, there are four classes of objects that
          can receive <code>Note</code>s:
        </p>
        <ul>
          <li><code>User</code> (notes sent to a person)</li>
          <li><code>Community</code> (notes sent to a community)</li>
          <li><code>WebSite</code> (annotations on Web sites)</li>
          <li><code>WebPage</code> (annotations on Web pages)</li>
        </ul>
        <p>
          These classes implement an interface called <code>NoteBoard</code>,
          that has one single method, namely <code>getNoteManager()</code>.
          This is used to get the <code>NoteManager</code> that handles
          all functionality concerning notes.
        </p>
        <p>
          That way, a consistent handling of communication and notes is
          guaranteed and the related entities receiving notes are
          encapsulated from the complexity involved with communication.
          For an overview of the architecture explained, see the Class
          Diagram in <a class="crossRef" href="Notes" />.
        </p>
        <srf:newpage />
           <srf:figure id="Notes"
                       src="diagrams/Notes"
                       summary="An overview of the communication system of teamXweb."
                       width="1020" height="588" scale="0.6"
                       preferredFormat="svg">
             <caption>
               Communication in teamXweb
             </caption>
           </srf:figure>
      </srf:appsubsection>
      <srf:appsubsection id="UI-View" title="View">
        <p>
          The view-part of <em>teamXweb</em> basically consists
          of the following screens:
        </p>
        <ul>
          <li>
            <dfn id="startupScreen" title="startup-screen">Startup-Screen</dfn>
            with Login and Registration of new users
          </li>
          <li>
            <dfn id="browserWindow" title="browser window">Browser-Window</dfn>
            mimics the user interface of a Web browser
            (see <a class="crossRef" href="teamXwebScreenshot" /> for a screenshot)
          </li>
          <li>
            <dfn id="accountManagement" title="account manager">Account-Manager</dfn>
            is used to edit the user profile, change passwords or
            delete the account
          </li>
          <li>
            <dfn id="communityManager" title="community manager">Communities</dfn>
            shows all visible communities and is used for joining or
            leaving communities as well as adding, removing or changing
            communities
          </li>
          <li>
            <dfn id="communicator" title="communicator">Communicator</dfn>
            gives an overview of all messages in all areas of the system
            (see <a class="crossRef" href="communiScreenshot" /> for a screenshot)
          </li>
          <li>
            <dfn id="communication" title="communication view">Communication</dfn>
            shows the messages of a specific section
          </li>
          <li>
            <dfn id="history" title="history view">History</dfn>
            is used both for accessing the history and bookmarks
            (see <a class="crossRef" href="bookmarksScreenshot" />
            for a screenshot of
            how this looks for bookmarks and
            <a class="crossRef" href="historyScreenshot" />
            for a screenshot of the history view)
          </li>
          <li>
            <dfn id="noteEdit" title="note editor">Note Editor</dfn>
            is used for writing new notes
          </li>
        </ul>
        <p>
          Most of these screens consist of a set of JSPs that are either
          composed within are frameset or via inclusion
          (the JSP specification provides an inclusion mechanism with the
          element <code>&lt;jsp:include page="<em>name</em>.jsp" /&gt;</code>).
          Many JSPs are reused for different screens or different states
          of the same screen.
          Furthermore,
          a screen may have different JSPs being displayed one after the
          other.
        </p>
        <p>
          For example, the <em>startup-screen</em> is the entry point
          of the application. The JSP <em>Startup</em> in
          <a class="crossRef" href="teamXwebApp1" /> is basically just the
          page defining a frameset which consists of <em>CheckBrowser</em>
          and <em>StatusBar</em>.
          <em>StatusBar</em> is used in most screens for showing to the user
          when an action has been completed successfully or when an action has
          failed. <em>CheckBrowser</em> tests whether the browser used supports
          sessions (i.e., cookies) and JavaScript. If not, it displays a message
          to the user explaining how to switch the relevant features on in
          his browser. If the test is passed, <em>CheckBrowser</em> is
          automatically replaced with <em>Login</em>.
        </p>
        <p>
          <em>Login</em> provides a way for the user to select a user
          interface (with Flash navigation or just plain HTML navigation,
          see <a class="crossRef" href="Technologies" />) - and includes the JSPs
          <em>Authentificate</em>, <em>ResendLoginData</em>, <em>AddUser</em>
          and <em>GuestLogin</em>. This modular design has been chosen
          because <em>AddUser</em>, <em>Authentificate</em>
          and <em>ResendLoginData</em> can be reused
          when registering or logging in failed.
          If, for example, a user tried to register
          (using the section from <em>AddUser</em> that allows entering
          a new username and password) and either the name was wrong, or
          the passwords mismatched, <em>Login</em> is replaced with
          <em>AddUserFailed</em>. This page shows an error message and
          includes <em>AddUser</em> so that
          the user can try registering with another username (or type the
          passwords correctly).
          This process is also illustrated in <a class="crossRef" href="Login" />.
          When logging in fails (e.g., because the user entered a wrong
          password for an existing username), <em>AuthentificationFailed</em>
          is used, which includes <em>Authentificate</em>,
          <em>ResendLoginData</em> and <em>AddUser</em> (in the given order).
          With <em>ResendLoginData</em>, the user can enter his username and
          will be sent an eMail with username and password, as mentioned
          before in <a class="crossRef" href="Technologies" />.
        </p>
        <p>
          If login or registration of a new user was successful,
          <em>Login</em>, <em>AuthentificationFailed</em> or
          <em>AddUserFailed</em> (depending on whether login or registration
          was successful at the first attempt or the first attempt failed)
          is replaced with <em>Welcome</em>. <em>Welcome</em> then uses JavaScript
          to open a new window without any browser user interface elements
          and shows within that window the JSP <em>Window</em>. After this,
          the login process is finished and the system acts like a common
          browser with added collaboration features.
        </p>
           <srf:figure id="teamXwebApp1"
                       src="diagrams/teamXwebApp1"
                       summary="Web Application diagram with JSPs used for
                                logging in, the meta-browser, account management
                                and communities."
                       width="993" height="571" scale="0.6"
                       preferredFormat="svg">
             <caption>
               The JSPs modelling the GUI of teamXweb (Part 1)
             </caption>
           </srf:figure>
        <p>
          The previous example illustrates how JSPs are used to create the
          user interface of <em>teamXweb</em> and in particular, how they
          are used to compose screens either via inclusion or with framesets.
          Other complex screens are outlined in the following brief overview:
        </p>
        <ul>
          <li>
            <strong>(Browser-)Window</strong> consists of <em>StatusBar</em>,
            <em>PageStatistics</em>, <em>Navigation</em> and an area where
            the Web content is shown (if a document could not be loaded,
            <em>PageLoadingException</em> is shown).
            <em>Navigation</em> provides buttons
            to open <em>AccountManagement</em>, <em>Communicator</em> and
            <em>History</em> (either with session history or bookmarks).
            Each of these are opened in new windows, as is illustrated in
            <a class="crossRef" href="teamXwebApp1" /> by the blue background
            color.
          </li>
          <li>
            <strong>Communities</strong> opens a frameset that consists of
            <em>CommunityOverview</em> and <em>Community</em>. The overview
            is used to select an existing community or replacing the frame
            used to display <em>Community</em> with <em>AddCommunity</em>
            for adding new communities or <em>JoinSecretCommunity</em> for
            joining communities not in the public list of communities.
            <em>Community</em> can also be used to join or leave the community,
            modify permissions for the community or delete the community
            (see <a class="crossRef" href="teamXwebApp1" />).
          </li>
          <li>
            <strong>Communicator</strong> is complete in itself. However,
            it provides links that open <em>Communication</em> in an own
            window (see <a class="crossRef" href="teamXwebApp2" /> for
            an illustration).
          </li>
          <li>
            <strong>Communication</strong> is a frameset that consists of
            <em>ScopeSelector</em> (optional), <em>NoteOverview</em> and
            <em>Note</em>. <em>ScopeSelector</em> is only visible if
            the screen refers to annotations to a Web site or Web page.
            It is used to select whether private annotations, annotations
            of a specific community or public annotations shall be shown
            in <em>NoteOverview</em>. <em>NoteOverview</em> shows all
            notes or annotations of the given user, community or Web site or
            page. <em>Note</em> shows the actual note (see
            <a class="crossRef" href="teamXwebApp2" /> for
            an illustration).
          </li>
          <li>
            <strong>History</strong> is a frameset that always displays
            <em>CommunitySelector</em> and <em>UserSelector</em>
            in the top frame. With the <em>CommunitySelector</em>, the
            user can choose whether only his own bookmarks or sessions shall
            be shown, or that of a community he is a member of. If he
            selects a community, he can use <em>UserSelector</em> to choose
            whether the bookmarks or history of all members of that community
            shall be shown, or only those of a specific member of that community
            that has given the permission to view his history or bookmarks.
            In the lower frames, either <em>CategoryOverview</em> and
            <em>Bookmarks</em> are shown (if bookmarks are displayed), or
            <em>SessionOverview</em> and <em>UserSession</em> (in case of
            the history being shown).
          </li>
        </ul>
           <srf:figure id="teamXwebApp2"
                       src="diagrams/teamXwebApp2"
                       summary="Web Application diagram with JSPs used for
                                bookmarks and history, and communication."
                       width="981" height="461" scale="0.6"
                       preferredFormat="svg">
             <caption>
               The JSPs modelling the GUI of teamXweb (Part 2)
             </caption>
           </srf:figure>

        </srf:appsubsection>
        <srf:appsubsection id="UI-Controller" title="Controller">
        <p>
          The controller part of <em>teamXweb</em> has been implemented using
          Servlets. While in some cases, JSPs directly call other JSPs on
          user actions, the general pattern is that whenever the user invokes
          a functionality of the system, a Servlet is called that will process
          the user's request and send the user a JSP as updated view.
          The reason why this
          has not been achieved consistently is limited time. Therefore, the
          current implementation of <em>teamXweb</em> only partially implements
          the MVC pattern.
        </p>
        <p>
          However, in the parts of <em>teamXweb</em> implementing the
          controller part of the MVC pattern, an additional layer of abstraction
          has been added. Servlets are tied very closely to the Web environment
          and HTTP. To encapsulate this technology from the actual application,
          each Servlet has a corresponding helper servlet, called
          <code><em>Name</em>Support</code>.
          For an illustration of this pattern, see
          <a class="crossRef" href="ServletDelegation" />.
          <code><em>Name</em>Servlet</code> gets requests encapsulated in
          objects from the Servlet container, which in turn gets his requests
          from the client via HTTP. <code><em>Name</em>Servlet</code> then
          determines how the request must be handled and calls the relevant
          method in
          <code><em>Name</em>Support</code>. For a more
          detailed illustration of <code>TrackingServlet</code> and
          <code>TrackingSupport</code>, see
          <a class="crossRef" href="PageProcessor" />.
        </p>
        <p>
          By this encapsulation, much of the functionality of <em>teamXweb</em>
          could easily be integrated into a custom browser, a plugin or
          any other architecture that is not in need of communicating via
          HTTP. The surrounding application would simply call the methods
          of the helper classes, as it is currently done by the Servlets.
        </p>
           <srf:figure id="ServletDelegation"
                       src="diagrams/ServletDelegation"
                       summary="This Class Diagram illustrates how Servlets
                                in teamXweb use helper classes to implement
                                their functionality
                                the Servlets in the diagram convert HTTP
                                requests to method calls on the helper classes
                                which are subclasses of ServletSupport."
                       width="528" height="407" scale="0.8"
                       preferredFormat="svg">
             <caption>
               Controller Part of the teamXweb User Interface
             </caption>
           </srf:figure>
        </srf:appsubsection>
      </srf:appsection>
      <srf:appsection id="PageProcessing" title="Retrieving and Processing Web Pages">
        <p>
          The most important functionality required for the meta-browser
          architecture outlined in <a class="crossRef" href="MetaBrowser" />
          is replacing all links in the viewed documents with links that
          load the pages from the system, so that the user stays within
          the metabrowser. If this fails, the server no longer gets
          notifications while the user browses the Web, and Web pages can
          no longer be modified in a way that assures the metabrowser remains
          intact. Therefore, this functionality has been chosen as
          an example illustrating how <em>teamXweb</em> was implemented
          and how some of the technologies are used on a more detailed,
          technical level, including some source code fragments.
          This section describes the whole process of loading Web pages
          with <em>teamXweb</em>,
          both from the client's and from the server's perspective.
        </p>
        <srf:newpage />
           <srf:figure id="LoadingPage-Client"
                       src="diagrams/LoadingPage-Client"
                       summary="This Activity Diagram illustrates how a new
                                Web page is loaded to the client (e.g, after
                                a hyperlink has been followed), from the
                                client's perspective."
                       width="541" height="406" scale="0.8"
                       preferredFormat="svg">
             <caption>
               Loading a Web Page (Client Perspective)
             </caption>
           </srf:figure>
        <p>
          On the client, if the new page to be displayed is part
          of a frameset, the relevant frame must first be found. This
          is done with JavaScript, looking for the frame in the
          document's (HTML-)DOM. After that or if the page is loaded
          directly into the content frame, the location field that
          shows the URI of the currently viewed document is updated.
          Finally, the request is sent to the <em>teamXweb</em>-server.
          The page the server returns updates the title frame with
          the document's title and the statistics frame with the
          statistical data for the currently viewed document
          (or frameset). As this is done with further requests to
          the server, it is done more or less parallel.
          This whole process is illustrated with
          <a class="crossRef" href="LoadingPage-Client" />.
        </p>
        <p>
          The following JavaScript method implements the logic
          on the client and is included by the server with each
          document it sends to the client (among other methods).
          Hyperlinks in the document on the client
          call this method when the user uses them and they have
          no specified target(-frame). The method used for
          framesets (and opening new windows etc.) is much more
          complex and therefore not useful for this illustration.
        </p>
<pre><span class="comment">/* Loads <em>url</em> to the content frame, with optional additional <em>params</em>.
 * Parameters:
 * <em>key</em>:        the ID of the link (unique within the document)
 * <em>url</em>:        the URI of the document to be retrieved and processed
 * <em>params</em>:     any parameters with the URI ('?<em>par1</em>=<em>val1</em>&amp;<em>par2</em>=<em>val2</em>'-Syntax)
 * <em>userAction</em>: what exactly the user has done (e.g. following link,
 *             using bookmark, using history, opening window)
 */</span>
<span class="keyword">function</span> loadURIToContentFrame(key, url, params, userAction) {
<span class="comment">    // %<em>placeholder</em>% is replaced by the server before the page is sent to the client</span>
<span class="keyword">    var</span> newLocation = <span class="literal">"tracking?%PAR_ACTION%=%ACT_FOLLOW_LINK%"</span>
                          + <span class="literal">"&amp;%PAR_USER_ACTION%="</span> + userAction
                          + <span class="literal">"&amp;%PAR_WINDOW%=%window%"</span>
                          + <span class="literal">"&amp;%PAR_LINK_KEY%="</span> + key
                          + <span class="literal">"&amp;%PAR_FROM_FRAME%=%fromFrame%"</span>
                          + <span class="literal">"&amp;%PAR_TARGET_FRAME%=%fromFrame%"</span>
<span class="comment">                          // add ignored value to avoid browser caching</span>
                          + <span class="literal">"&amp;ignore="</span> + Math.round(Math.random()*<span class="literal">100000</span>);
<span class="comment">    // section is the fragment within a page ('http://[...]/<em>fileName</em>#<em>section</em>')</span>
<span class="keyword">    var</span> section = extractSection(url);
    <span class="keyword">if</span> (section) {
        newLocation += <span class="literal">"&amp;%PAR_SECTION%="</span> + section;
    }
    <span class="keyword">if</span> (params) {
        newLocation += params;
    }
    newLocation += <span class="literal">"&amp;%PAR_RESOURCE%="</span> +url; <span class="comment">// must always be last for #<em>section</em> to work</span>
<br />

<span class="comment">    // update location field</span>
<span class="keyword">    if</span> (top.TWFrameNavigation.document.FormLocation) {  <span class="comment">// HTML navigation-UI</span>
        top.TWFrameNavigation.document.FormLocation.LocationField.value = url;
    }
    <span class="keyword">if</span> (top.TWFrameNavigation.document.flashNav) {  <span class="comment">// Flash navigation-UI</span>
        top.TWFrameNavigation.document.flashNav.Setvariable(<span class="literal">"url"</span>, url);
    }

<span class="comment">    // request the page from the server (to the Content-Frame)</span>
    top.TWFrameContent.location.href = newLocation;

<span class="comment">    // show the text "Loading Page..." in the title-frame</span>
    top.TWFrameTitle.location.href = <span class="literal">"tracking/browserTitle.jsp?title=LoadingPage"</span>;
}</pre>
        <p>
          When a page has been loaded into the client and is being
          displayed, the following JavaScript code is executed
          (this is done by not encapsulating it within a method):
        </p>
<pre>
top.TWFrameTitle.location.href = <span class="literal">"tracking/browserTitle.jsp?title=<em>%TITLE%"</em></span>;

top.TWFrameStatsScope.document.FormLinksScope.<strong>random</strong>.value
                                              = Math.round(Math.random()*<span class="literal">100000</span>);
top.TWFrameStatsScope.document.FormLinksScope.submit();
</pre>
        <p>
          The first statement loads a JSP to the title frame that displays
          the title of the displayed page. <code>%TITLE%</code> is replaced
          by the server with the title of the document before the document
          (including this code) is sent to the client.
        </p>
        <p>
          To understand the following two statements, one must know
          that loading the statistical page is triggered from a form
          below that statistical page, in which the user can select
          the scope for which the statistics shall be applied (only
          himself, a community or all users). The first of the
          two statements sets the value of a hidden input
          field (<code>random</code>) in that form
          (<code>FormLinksScope</code>) to a random value to assure
          that the browser will not use its cache. Then, it simply
          submits the form - and the statistics are reloaded, just
          as if the user had selected another scope.
        </p>
        <p>
          No further parameters are required because the server
          stores the state, in particular which document the user
          is currently viewing. This leads to the discussion what
          happens on the server...
        </p>
        <p>
          The Activity Diagram in <a class="crossRef" href="LoadingPage-Server" />
          illustrates what happens on the server when a page is retrieved
          and processed. This will be explained in detail shorty, but first
          the Java classes implementing this functionality shall be introduced:
        </p>
        <p>
          The Class Diagram shown in <a class="crossRef" href="PageProcessor" />
          gives an overview of the classes on the server involved in
          retrieving and processing documents from other Web servers.
          It also illustrates the pattern encapsulating the functionality
          from the servlets mentioned in
          <a class="crossRef" href="WebApplication" />.
        </p>
        <srf:newpage />
           <srf:figure id="LoadingPage-Server"
                       src="diagrams/LoadingPage-Server"
                       summary="This Activity Diagram illustrates how a new
                                Web page is retrieved and processed on the
                                server, after the client has requested it."
                       width="631" height="766" scale="0.8"
                       preferredFormat="svg">
             <caption>
               Loading a Web Page (Server Perspective)
             </caption>
           </srf:figure>
        <p>
          The diagram shows three classes:
        </p>
        <ul>
          <li>
            <code>TrackingServlet</code>: Instantiated by the Servlet
            container. Whenever a HTTP request from a client is sent to
            the server, either <code>doGet(...)</code> or
            <code>doPost(...)</code> are called (depending on the HTTP
            request method), with two parameters: the request
            encapsulated in an object and an object for sending the result.
            Within these methods, <code>TrackingServlet</code>
            checks what kind of <em>action</em> is requested and extracts
            further parameters from the request object. Then the method
            of <code>TrackingSupport</code> required for the given
            <em>action</em> is called with the relevant parameters.
          </li>
          <li>
            <code>TrackingSupport</code>:
            Provides the methods relevant for tracking a user browsing
            the Web. <code>requestPage(...)</code> and
            <code>followLink(...)</code> delegate the work involved
            with retrieving and processing a Web page to the
            <code>PageProcessor</code>.
          </li>
          <li>
            <code>PageProcessor</code>: Loads pages from their original
            server and applies all relevant processing as described
            below. Furthermore, this class provides caching for Web
            pages to avoid the significant processing task.
            The class provides the actual logic for retrieving and
            processing the documents and its function is explained
            in detail in the remainder of this section.
          </li>
        </ul>
           <srf:figure id="PageProcessor"
                       src="diagrams/PageProcessor"
                       summary="This Class Diagram shows the classes
                                directly involved in retrieving and
                                processing Web pages for the meta-browser.
                                It includes the Servlet that gets the
                                request from the client via HTTP."
                       width="911" height="491" scale="0.6"
                       preferredFormat="svg">
             <caption>
               Classes implementing the Proxy and URI-Rewriting Logic
             </caption>
           </srf:figure>

        <p>
          The server must know what kind of navigation
          event caused loading of the new page
          (<code>%PAR_ACTION%</code> / <code>%PAR_USER_ACTION%</code>).
          For this, various methods
          exist that are called on the server. This functionality is
          implemented with methods of class <code>TrackingServlet</code>
          that looks similar to the following
          code fragment (which is a "polished" version of the original
          <code>doGet(..)</code> method):
        </p>

<pre><span class="keyword">public void</span> doGet(HttpServletRequest request, HttpServletResponse response) {
<span class="comment">    // get all parameters from the HTTP request encapsulated in the request object</span>
<span class="keyword">    final</span> String  <strong>action</strong>        = request.getParameter(<strong>PAR_ACTION</strong>);
<span class="keyword">    final</span> String  <strong>window</strong>        = request.getParameter(<strong>PAR_WINDOW</strong>);
<span class="keyword">    final</span> String  <strong>fromFrame</strong>     = request.getParameter(<strong>PAR_FROM_FRAME</strong>);
<span class="keyword">    final</span> String  <strong>targetFrame</strong>   = request.getParameter(<strong>PAR_TARGET_FRAME</strong>);
<span class="keyword">    final</span> String  <strong>key</strong>           = request.getParameter(<strong>PAR_LINK_KEY</strong>);
<span class="keyword">    final</span> String  <strong>section</strong>       = request.getParameter(<strong>PAR_SECTION</strong>);
<span class="keyword">    final</span> String  <strong>userAction</strong>    = request.getParameter(<strong>PAR_USER_ACTION</strong>);
<span class="keyword">    final</span> URI     <strong>resource</strong>      = new URI(request.getParameter(<strong>PAR_RESOURCE</strong>));
<span class="keyword">    final</span> boolean <strong>keepURI</strong>       = <span class="literal">"true"</span>.equals(request.getParameter(<strong>PAR_KEEP_URI</strong>));
<span class="keyword">    final</span> boolean <strong>closeResponse</strong> = <span class="literal">"true"</span>.equals(request.getParameter(<strong>PAR_CLOSE_RESPONSE</strong>));

<span class="comment">    // get the session so that the current user can be obtained</span>
<span class="comment">    // (this must be done this way due to the statelessness of the HTTP-protocol)</span>
<span class="keyword">    final</span> HttpSession session = request.getSession();
<span class="keyword">    final</span> User <strong>user</strong> = (User) session.getAttribute(UserManagementServlet.SES_USER);

<span class="comment">    // prepare the output</span>
<span class="comment">    // set the MIME type of the resulting Web page</span>
    response.setContentType(<span class="literal">"text/html"</span>);
    <span class="keyword">final</span> PrintWriter <strong>toClient</strong> = response.getWriter();

<span class="comment">    // now forward the request in an object oriented manner to TrackingSupport,</span>
<span class="comment">    // hiding all HTTP-specific stuff</span>
<span class="keyword">    if</span> (<strong>action</strong>.equals(<strong>ACT_OPEN_WINDOW</strong>)) {
        <strong>support.openWindow(toClient, user, window, resource,
                                   section, keepURI, userAction);</strong>
    } <span class="keyword">else if</span> (<strong>action</strong>.equals(<strong>ACT_CLOSE_WINDOW</strong>)) {
        <strong>support.closeWindow(toClient, user, window, closeResponse);</strong>
    } <span class="keyword">else if</span> (<strong>action</strong>.equals(<strong>ACT_REQUEST_PAGE</strong>)) {
        <strong>support.requestPage(toClient, user, window, resource,
                                        section, targetFrame, userAction);</strong>
    } <span class="keyword">else if</span> (<strong>action</strong>.equals(<strong>ACT_FOLLOW_LINK</strong>)) {
        <strong>support.followLink(toClient, user, window, key, resource,
                                   section, fromFrame, targetFrame, false, userAction);</strong>
    } <span class="keyword">else if</span> (<strong>action</strong>.equals(<strong>ACT_POST_FORM</strong>)) {
        <strong>support.followLink(toClient, user, window, key, resource,
                                   section, fromFrame, targetFrame, false, userAction);</strong>
    }
    toClient.close();
    response.getWriter().close();
}</pre>

        <p>
          With the
          URI that is being requested, the server first checks if that
          page is cached and if so, and if the version of the document
          in the cache is still current, it is directly sent to the client.
        </p>
        <p>
          If no current version of the document is available in the cache,
          the page is retrieved from the original server. If there is a problem
          retrieving the page from its original server, an error message is
          returned to the client. Otherwise, the document can be parsed with
          JTidy and further processing can take place in the DOM tree.
          This is done in the following method of class <code>PageProcessor</code>
          (simplified for illustration purposes: the original method is
          more generic):
        </p>
<pre><span class="comment">/**
 * Loads and parses <em>url</em> from the original server.
 * @param url  the location of the document
 * @return the document as DOM
 */</span>
<span class="keyword">public</span> Document loadPage(URI url) <span class="keyword">throws</span> IOException {
    <span class="keyword">final</span> InputStream input = url.openStream();
    <span class="keyword">final</span> BufferedInputStream in = new BufferedInputStream(input);
    <span class="keyword">final</span> Tidy tidy = <span class="keyword">new</span> Tidy();
    <span class="keyword">final</span> Document page = tidy.parseDOM(in, <span class="keyword">null</span>);
    return page;
}</pre>
        <p>
          All relative URIs must be made absolute. This is because the page
          has been loaded from the <em>teamXweb</em> server, and any relative
          URIs would thus point to files on <em>teamXweb</em> that obviously
          do not exist. As the HTML-DOM tree is used, this is a very
          straightforward task as the following code fragment illustrates
          (code has been simplified for illustration purposes: the
          original method is more generic):
        </p>
<pre><span class="comment">/**
 * Makes content of the <em>href</em> attribute of the <em>a</em> element absolute.
 * @param url  the original URI of <em>doc</em> which is used as base for relative URIs
 * @param doc  the document referred to by <em>url</em>, parsed with JTidy
 */</span>
<span class="keyword">public void</span> makeURIsAbsolute(URI url, Document doc) {
    <span class="keyword">final</span> NodeList elements = doc.getElementsByTagName(<span class="literal">"a"</span>);

    Element element = <span class="keyword">null</span>;
    <span class="keyword">for</span> (<span class="keyword">int</span> i = <span class="literal">0</span>; i &lt; elements.getLength(); i++) {
        element = (Element) elements.item(i);
        String attributeValue = getAbsoluteURI(url, <span class="literal">"href"</span>);
        <span class="keyword">if</span> (attributeValue != <span class="keyword">null</span>) {
            element.setAttribute(attributeName, attributeValue);
        }
    }
}</pre>
        <p>
          If the page in question defines a frameset, the
          contents of the <code>src</code> attributes of <code>frame</code>
          elements must be replaced so that they are retrieved from the
          <em>teamXweb</em> server. Otherwise the <code>href</code> attributes
          of <code>a</code> (anchor) and <code>area</code> (image map) elements
          must be replaced with a JavaScript call
          that does what has been previously
          explained for the client context. This is done in a method that
          looks a bit like the following code fragment (simplified
          significantly):
        </p>
<pre><span class="comment">/**
 * Rewrites the URIs in usual links so that they stay within the system.
 * @param page the (model-)representation of the document on the server
 * @param doc  the DOM-representation of <code>url</code>
 * @param fromFrame the frame in which <code>url</code> resides
 */</span>
<span class="keyword">public void</span> handleLinkElems(WebPage page, String title, Document doc, String fromFrame) {
<span class="comment">    // do for all "a" elements in the document</span>
    NodeList anchors = doc.getElementsByTagName(<span class="literal">"a"</span>); <span class="comment">// or "area"</span>
<span class="keyword">    for</span> (<span class="keyword">int</span> i = <span class="literal">0</span>; i &lt; anchors.getLength(); i++) {
        Element anchor = (Element) anchors.item(i);   <span class="comment">// get element</span>
        String href = anchor.getAttribute("href");    <span class="comment">// get its href-attribute</span>
        if (href != <span class="keyword">null</span> &amp;&amp; !href.equals(<span class="literal">""</span>)) {
            String target = anchor.getAttribute(<span class="literal">"target"</span>); <span class="comment">// save target</span>
<span class="comment">            // if a target attribute exists, it must be removed - or else,</span>
<span class="comment">            // the new document will be loaded to a frame we cannot control!</span>
            anchor.removeAttribute(<span class="literal">"target"</span>);
<span class="comment">            // get a unique key for the link</span>
            String key = page.addLink(href, findAnchorText(anchor), target);
            String params = <span class="literal">""</span>;
            final int paramStart = href.indexOf(<span class="literal">"?"</span>);
            if (paramStart &gt; <span class="literal">-1</span>) {
                params = <span class="literal">"&amp;"</span> + href.substring(paramStart+1);
                href = href.substring(<span class="literal">0</span>, paramStart);
            }
<span class="comment">            // now, if it is an http-URI, wrap it into the javascript-statement</span>
<span class="comment">            // mailto, ftp and other protocols are ignored!</span>
            if (href.startsWith(<span class="literal">"http"</span>)) {
                <span class="comment">// CASE 1: page is loaded to content frame (simple)</span>
                if ((target == <span class="keyword">null</span> || BrowserFrame.TOP.equals(target))
                    &amp;&amp; fromFrame.equalsIgnoreCase(BrowserFrame.TOP)) {
                    href = <span class="literal">"javascript:loadURIToContentFrame('"</span>+key+<span class="literal">"', '"</span>
                         +href+<span class="literal">"', '"</span>+params+<span class="literal">"', '"</span>+BrowserWindow.FOLLOWED_LINK+<span class="literal">"')"</span>;
                } else { <span class="comment">// CASE 2: page is loaded to some frame</span>
                    href = <span class="literal">"javascript:loadURIToTarget('"</span>+key+<span class="literal">"', '"</span>
                         + (target == null ? fromFrame : target)
                         + <span class="literal">"', '"</span> + href + <span class="literal">"', '"</span> + params + <span class="literal">"', '"</span>
                         + BrowserWindow.FOLLOWED_LINK+<span class="literal">"')"</span>;
                }
            }
            <span class="comment">// update the document with the new href-value</span>
            anchor.setAttribute(<span class="literal">"href"</span>, href);
        }
    }
}
</pre>

        <p>
          The relevant JavaScript methods are included with the processed
          document. This is because from a document, only JavaScript methods
          defined in that document can be accessed. Furthermore, the method
          calls that will update title and statistics frame at the
          client are included (see above). Then, the DOM tree is serialized and
          sent to the client.
        </p>
        <p>
          Finally, the relevant updates to the server model must be applied.
          This includes updating the current location of the user on the
          Web as well as appending the currently viewed page to the history
          of the current session. This whole process is illustrated
          in <a class="crossRef" href="LoadingPage-Server" />.
        </p>
      </srf:appsection>

    </srf:appendix>

      <srf:appendix id="FullFeatureMatrix" title="Full Feature-Matrix">
        <p>
          To illustrate how <em>teamXweb</em> integrates collaboration features
          compared to other systems, a feature matrix with the most important
          features has been created.
          A less detailed overview that also compares <em>teamXweb</em>
          to major Web communitities has been included in
          <a class="crossRef" href="FeatureMatrix" />.
          In the rows of the matrix a set of
          features is listed. The columns contain whether a given feature
          is implemented or not in
          <em>teamXweb (ALPHA 5)</em> and
          four Web browsers, namely <em>Mozilla 1.2 (alpha)</em>,
          <em>Opera 6.0</em>, <em>Internet Explorer 6.0</em> and
          <em>Amaya 6.4</em>. <em>Netscape 4.x</em> was not included
          because it is out of date.
        </p>
		<srf:newpage />
        <table class="border" style="width:100%;"
               id="FeatureMatrix1"
               summary="This table compares the features concerning common browser functionality of teamXweb with Mozilla, Opera, Internet Explorer and Amaya.">
          <caption>
            Feature-Matrix of Common Browser Functionality
          </caption>
          <tr>
            <th colspan="2" rowspan="2">&#160;</th>
            <th colspan="5" style="text-align:center;">Browsers</th>
          </tr>
          <tr>
            <th style="text-align:center;width:10%;font-size:10pt;"><em>teamXweb</em></th>
            <th style="text-align:center;width:10%;font-size:10pt;">Mozilla</th>
            <th style="text-align:center;width:10%;font-size:10pt;">Opera</th>
            <th style="text-align:center;width:10%;font-size:10pt;">IE</th>
            <th style="text-align:center;width:10%;font-size:10pt;">Amaya</th>
          </tr>
          <tr>
            <th style="width:3%;text-align:center;vertical-align:middle;" rowspan="31">
              F<br />e<br />a<br />t<br />u<br />r<br />e<br />s
            </th>
            <td colspan="6" style="width:47%;vertical-align:top;"><strong>1 Common Browser Functionality</strong></td>
          </tr>
          <tr>
            <td colspan="6" style="vertical-align:top;"><strong>1.1 Browsing</strong></td>
          </tr>
          <tr>
            <td style="vertical-align:top;">1.1.1 Enter URI Manually</td>
            <td style="text-align:center;vertical-align:top;"><!-- tw -->
              <img src="checked.gif" alt="[yes]" />
            </td>
            <td style="text-align:center;vertical-align:top;"><!-- Moz -->
              <img src="checked.gif" alt="[yes]" />
            </td>
            <td style="text-align:center;vertical-align:top;"><!-- Opera -->
              <img src="checked.gif" alt="[yes]" />
            </td>
            <td style="text-align:center;vertical-align:top;"><!-- IE -->
              <img src="checked.gif" alt="[yes]" />
            </td>
            <td style="text-align:center;vertical-align:top;"><!-- Amaya -->
              <img src="checked.gif" alt="[yes]" />
            </td>
          </tr>
          <tr>
            <td style="vertical-align:top;">1.1.2 Follow Link</td>
            <td style="text-align:center;vertical-align:top;">
              <img src="checked.gif" alt="[yes]" />
            </td>
            <td style="text-align:center;vertical-align:top;">
              <img src="checked.gif" alt="[yes]" />
            </td>
            <td style="text-align:center;vertical-align:top;">
              <img src="checked.gif" alt="[yes]" />
            </td>
            <td style="text-align:center;vertical-align:top;">
              <img src="checked.gif" alt="[yes]" />
            </td>
            <td style="text-align:center;vertical-align:top;">
              <img src="checked.gif" alt="[yes]" />
            </td>
          </tr>
          <tr>
            <td style="vertical-align:top;">1.1.3 Open New Browser Window</td>
            <td style="text-align:center;vertical-align:top;">
              <img src="checked.gif" alt="[yes]" />
            </td>
            <td style="text-align:center;vertical-align:top;">
              <img src="checked.gif" alt="[yes]" />
            </td>
            <td style="text-align:center;vertical-align:top;">
              <img src="checked.gif" alt="[yes]" />
            </td>
            <td style="text-align:center;vertical-align:top;">
              <img src="checked.gif" alt="[yes]" />
            </td>
            <td style="text-align:center;vertical-align:top;">
              <img src="checked.gif" alt="[yes]" />
            </td>
          </tr>
          <tr>
            <td style="vertical-align:top;">1.1.4 Open Link in New Window</td>
            <td style="text-align:center;vertical-align:top;">
              <img src="unchecked.gif" alt="[no]" />
            </td>
            <td style="text-align:center;vertical-align:top;">
              <img src="checked.gif" alt="[yes]" />
            </td>
            <td style="text-align:center;vertical-align:top;">
              <img src="checked.gif" alt="[yes]" />
            </td>
            <td style="text-align:center;vertical-align:top;">
              <img src="checked.gif" alt="[yes]" />
            </td>
            <td style="text-align:center;vertical-align:top;">
              <img src="checked.gif" alt="[yes]" />
            </td>
          </tr>
          <tr>
            <td style="vertical-align:top;">1.1.5 Save Linked Document to Disk</td>
            <td style="text-align:center;vertical-align:top;">
              <img src="unchecked.gif" alt="[no]" />
            </td>
            <td style="text-align:center;vertical-align:top;">
              <img src="checked.gif" alt="[yes]" />
            </td>
            <td style="text-align:center;vertical-align:top;">
              <img src="checked.gif" alt="[yes]" />
            </td>
            <td style="text-align:center;vertical-align:top;">
              <img src="checked.gif" alt="[yes]" />
            </td>
            <td style="text-align:center;vertical-align:top;">
              <img src="checked.gif" alt="[yes]" />
            </td>
          </tr>
          <tr>
            <td style="vertical-align:top;">
              1.1.6 Display most Web Pages as Intended
              <srf:footnote localCode="fullFM1" localID="1">
                Many Web browsers implement features not documented in the
                Web standards (e.g., HTML 4.01 or XHTML 1.0), and many Web
                designers use these features. Therefore, when Web pages are
                shown on other browsers they may not look as intended. To the
                user, it makes no difference whether the document is not
                conforming to the standard - he wants to see the document
                rendered nicely. As many Web designers test their pages mainly
                on the Internet Explorer, that is the browser with the best
                "user experience" concerning display Web pages as intended.
                Mozilla and Opera do have some problems with some pages but
                still display most pages the way they were designed. Amaya
                strictly implements the standards and thus fails with many
                pages, and <em>teamXweb</em> fails particularly with non-standard
                navigation (e.g., Flash, JavaScript or Java).
              </srf:footnote>
            </td>
            <td style="text-align:center;vertical-align:top;"><!-- tw -->
              <img src="unchecked.gif" alt="[no]" />
            </td>
            <td style="text-align:center;vertical-align:top;"><!-- Moz -->
              <img src="checked.gif" alt="[yes]" />
            </td>
            <td style="text-align:center;vertical-align:top;"><!-- Opera -->
              <img src="checked.gif" alt="[yes]" />
            </td>
            <td style="text-align:center;vertical-align:top;"><!-- IE -->
              <img src="checked.gif" alt="[yes]" />
            </td>
            <td style="text-align:center;vertical-align:top;"><!-- Amaya -->
              <img src="unchecked.gif" alt="[no]" />
            </td>
          </tr>
          <tr>
            <td colspan="6" style="vertical-align:top;"><strong>1.2 History and Bookmarks</strong></td>
          </tr>
          <tr>
            <td colspan="6" style="vertical-align:top;"><strong>1.2.1 History</strong></td>
          </tr>
          <tr>
            <td style="vertical-align:top;">1.2.1.1 Back Button</td>
            <td style="text-align:center;vertical-align:top;"><!-- tw -->
              <img src="checked.gif" alt="[yes]" />
            </td>
            <td style="text-align:center;vertical-align:top;"><!-- Moz -->
              <img src="checked.gif" alt="[yes]" />
            </td>
            <td style="text-align:center;vertical-align:top;"><!-- Opera -->
              <img src="checked.gif" alt="[yes]" />
            </td>
            <td style="text-align:center;vertical-align:top;"><!-- IE -->
              <img src="checked.gif" alt="[yes]" />
            </td>
            <td style="text-align:center;vertical-align:top;"><!-- Amaya -->
              <img src="checked.gif" alt="[yes]" />
            </td>
          </tr>
          <tr>
            <td style="vertical-align:top;">1.2.1.1.1 Stack Based</td>
            <td style="text-align:center;vertical-align:top;"><!-- tw -->
              <img src="unchecked.gif" alt="[no]" />
            </td>
            <td style="text-align:center;vertical-align:top;"><!-- Moz -->
              <img src="checked.gif" alt="[yes]" />
            </td>
            <td style="text-align:center;vertical-align:top;"><!-- Opera -->
              <img src="checked.gif" alt="[yes]" />
            </td>
            <td style="text-align:center;vertical-align:top;"><!-- IE -->
              <img src="checked.gif" alt="[yes]" />
            </td>
            <td style="text-align:center;vertical-align:top;"><!-- Amaya -->
              <img src="checked.gif" alt="[yes]" />
            </td>
          </tr>
          <tr>
            <td style="vertical-align:top;">1.2.1.1.2 Recency Based</td>
            <td style="text-align:center;vertical-align:top;"><!-- tw -->
              <img src="checked.gif" alt="[yes]" />
            </td>
            <td style="text-align:center;vertical-align:top;"><!-- Moz -->
              <img src="unchecked.gif" alt="[no]" />
            </td>
            <td style="text-align:center;vertical-align:top;"><!-- Opera -->
              <img src="unchecked.gif" alt="[no]" />
            </td>
            <td style="text-align:center;vertical-align:top;"><!-- IE -->
              <img src="unchecked.gif" alt="[no]" />
            </td>
            <td style="text-align:center;vertical-align:top;"><!-- Amaya -->
              <img src="unchecked.gif" alt="[no]" />
            </td>
          </tr>
          <tr>
            <td style="vertical-align:top;">1.2.1.2 History of Sessions</td>
            <td style="text-align:center;vertical-align:top;"><!-- tw -->
              <img src="checked.gif" alt="[yes]" />
            </td>
            <td style="text-align:center;vertical-align:top;"><!-- Moz -->
              <img src="unchecked.gif" alt="[no]" />
            </td>
            <td style="text-align:center;vertical-align:top;"><!-- Opera -->
              <img src="unchecked.gif" alt="[no]" />
            </td>
            <td style="text-align:center;vertical-align:top;"><!-- IE -->
              <img src="unchecked.gif" alt="[no]" />
            </td>
            <td style="text-align:center;vertical-align:top;"><!-- Amaya -->
              <img src="unchecked.gif" alt="[no]" />
            </td>
          </tr>
          <tr>
            <td style="vertical-align:top;">1.2.1.3 Browse History</td>
            <td style="text-align:center;vertical-align:top;"><!-- tw -->
              <img src="checked.gif" alt="[yes]" />
            </td>
            <td style="text-align:center;vertical-align:top;"><!-- Moz -->
              <img src="checked.gif" alt="[yes]" />
            </td>
            <td style="text-align:center;vertical-align:top;"><!-- Opera -->
              <img src="checked.gif" alt="[yes]" />
            </td>
            <td style="text-align:center;vertical-align:top;"><!-- IE -->
              <img src="checked.gif" alt="[yes]" />
            </td>
            <td style="text-align:center;vertical-align:top;"><!-- Amaya -->
              <img src="unchecked.gif" alt="[no]" />
            </td>
          </tr>
          <tr>
            <td style="vertical-align:top;">1.2.1.3.1 History Grouped by Sessions</td>
            <td style="text-align:center;vertical-align:top;"><!-- tw -->
              <img src="checked.gif" alt="[yes]" />
            </td>
            <td style="text-align:center;vertical-align:top;"><!-- Moz -->
              <img src="unchecked.gif" alt="[no]" />
            </td>
            <td style="text-align:center;vertical-align:top;"><!-- Opera -->
              <img src="unchecked.gif" alt="[no]" />
            </td>
            <td style="text-align:center;vertical-align:top;"><!-- IE -->
              <img src="unchecked.gif" alt="[no]" />
            </td>
            <td style="text-align:center;vertical-align:top;"><!-- Amaya -->
              <img src="unchecked.gif" alt="[no]" />
            </td>
          </tr>
          <tr>
            <td style="vertical-align:top;">1.2.1.3.2 History Grouped by Windows</td>
            <td style="text-align:center;vertical-align:top;"><!-- tw -->
              <img src="checked.gif" alt="[yes]" />
            </td>
            <td style="text-align:center;vertical-align:top;"><!-- Moz -->
              <img src="unchecked.gif" alt="[no]" />
            </td>
            <td style="text-align:center;vertical-align:top;"><!-- Opera -->
              <img src="unchecked.gif" alt="[no]" />
            </td>
            <td style="text-align:center;vertical-align:top;"><!-- IE -->
              <img src="unchecked.gif" alt="[no]" />
            </td>
            <td style="text-align:center;vertical-align:top;"><!-- Amaya -->
              <img src="unchecked.gif" alt="[no]" />
            </td>
          </tr>
          <tr>
            <td style="vertical-align:top;">1.2.1.3.3 History Grouped by Domains</td>
            <td style="text-align:center;vertical-align:top;"><!-- tw -->
              <img src="unchecked.gif" alt="[no]" />
            </td>
            <td style="text-align:center;vertical-align:top;"><!-- Moz -->
              <img src="checked.gif" alt="[yes]" />
            </td>
            <td style="text-align:center;vertical-align:top;"><!-- Opera -->
              <img src="unchecked.gif" alt="[no]" />
            </td>
            <td style="text-align:center;vertical-align:top;"><!-- IE -->
              <img src="checked.gif" alt="[yes]" />
            </td>
            <td style="text-align:center;vertical-align:top;"><!-- Amaya -->
              <img src="unchecked.gif" alt="[no]" />
            </td>
          </tr>
          <tr>
            <td style="vertical-align:top;">1.2.1.4 Supports Framesets in History</td>
            <td style="text-align:center;vertical-align:top;"><!-- tw -->
              <img src="checked.gif" alt="[yes]" />
            </td>
            <td style="text-align:center;vertical-align:top;"><!-- Moz -->
              <img src="unchecked.gif" alt="[no]" />
            </td>
            <td style="text-align:center;vertical-align:top;"><!-- Opera -->
              <img src="unchecked.gif" alt="[no]" />
            </td>
            <td style="text-align:center;vertical-align:top;"><!-- IE -->
              <img src="checked.gif" alt="[yes]" />
              <srf:footnote localCode="fullFM1" localID="2">
                Internet Explorer stores the pages that are retrieved. That way,
                the single documents displayed in a frameset can be restored
                from the history. However, the whole frameset can not be
                restored.
              </srf:footnote>
            </td>
            <td style="text-align:center;vertical-align:top;"><!-- Amaya -->
              <img src="unchecked.gif" alt="[no]" />
            </td>
          </tr>
          <tr>
            <td style="vertical-align:top;">1.2.1.5 Access History Anywhere</td>
            <td style="text-align:center;vertical-align:top;"><!-- tw -->
              <img src="checked.gif" alt="[yes]" />
            </td>
            <td style="text-align:center;vertical-align:top;"><!-- Moz -->
              <img src="unchecked.gif" alt="[no]" />
            </td>
            <td style="text-align:center;vertical-align:top;"><!-- Opera -->
              <img src="unchecked.gif" alt="[no]" />
            </td>
            <td style="text-align:center;vertical-align:top;"><!-- IE -->
              <img src="unchecked.gif" alt="[no]" />
            </td>
            <td style="text-align:center;vertical-align:top;"><!-- Amaya -->
              <img src="unchecked.gif" alt="[no]" />
            </td>
          </tr>
          <tr>
            <td style="vertical-align:top;">1.2.1.6 Share History with Communities</td>
            <td style="text-align:center;vertical-align:top;"><!-- tw -->
              <img src="checked.gif" alt="[yes]" />
            </td>
            <td style="text-align:center;vertical-align:top;"><!-- Moz -->
              <img src="unchecked.gif" alt="[no]" />
            </td>
            <td style="text-align:center;vertical-align:top;"><!-- Opera -->
              <img src="unchecked.gif" alt="[no]" />
            </td>
            <td style="text-align:center;vertical-align:top;"><!-- IE -->
              <img src="unchecked.gif" alt="[no]" />
            </td>
            <td style="text-align:center;vertical-align:top;"><!-- Amaya -->
              <img src="unchecked.gif" alt="[no]" />
            </td>
          </tr>
          <tr>
            <td style="vertical-align:top;">1.2.1.7 History Logging can be Switched Off</td>
            <td style="text-align:center;vertical-align:top;"><!-- tw -->
              <img src="unchecked.gif" alt="[no]" />
            </td>
            <td style="text-align:center;vertical-align:top;"><!-- Moz -->
              <img src="checked.gif" alt="[yes]" />
            </td>
            <td style="text-align:center;vertical-align:top;"><!-- Opera -->
              <img src="checked.gif" alt="[yes]" />
            </td>
            <td style="text-align:center;vertical-align:top;"><!-- IE -->
              <img src="unchecked.gif" alt="[no]" />
            </td>
            <td style="text-align:center;vertical-align:top;"><!-- Amaya -->
              <img src="unchecked.gif" alt="[no]" />
            </td>
          </tr>
          <tr>
            <td colspan="6" style="vertical-align:top;"><strong>1.2.2 Bookmarks</strong></td>
          </tr>
          <tr>
            <td style="vertical-align:top;">1.2.2.1 Store Bookmarks</td>
            <td style="text-align:center;vertical-align:top;"><!-- tw -->
              <img src="checked.gif" alt="[yes]" />
            </td>
            <td style="text-align:center;vertical-align:top;"><!-- Moz -->
              <img src="checked.gif" alt="[yes]" />
            </td>
            <td style="text-align:center;vertical-align:top;"><!-- Opera -->
              <img src="checked.gif" alt="[yes]" />
            </td>
            <td style="text-align:center;vertical-align:top;"><!-- IE -->
              <img src="checked.gif" alt="[yes]" />
            </td>
            <td style="text-align:center;vertical-align:top;"><!-- Amaya -->
              <img src="unchecked.gif" alt="[no]" />
            </td>
          </tr>
          <tr>
            <td style="vertical-align:top;">1.2.2.2 Store Bookmarks on Framesets</td>
            <td style="text-align:center;vertical-align:top;"><!-- tw -->
              <img src="checked.gif" alt="[yes]" />
            </td>
            <td style="text-align:center;vertical-align:top;"><!-- Moz -->
              <img src="unchecked.gif" alt="[no]" />
            </td>
            <td style="text-align:center;vertical-align:top;"><!-- Opera -->
              <img src="unchecked.gif" alt="[no]" />
            </td>
            <td style="text-align:center;vertical-align:top;"><!-- IE -->
              <img src="unchecked.gif" alt="[no]" />
            </td>
            <td style="text-align:center;vertical-align:top;"><!-- Amaya -->
              <img src="unchecked.gif" alt="[no]" />
            </td>
          </tr>
          <tr>
            <td style="vertical-align:top;">1.2.2.3 Modify Bookmarks</td>
            <td style="text-align:center;vertical-align:top;"><!-- tw -->
              <img src="checked.gif" alt="[yes]" />
            </td>
            <td style="text-align:center;vertical-align:top;"><!-- Moz -->
              <img src="checked.gif" alt="[yes]" />
            </td>
            <td style="text-align:center;vertical-align:top;"><!-- Opera -->
              <img src="checked.gif" alt="[yes]" />
            </td>
            <td style="text-align:center;vertical-align:top;"><!-- IE -->
              <img src="checked.gif" alt="[yes]" />
            </td>
            <td style="text-align:center;vertical-align:top;"><!-- Amaya -->
              <img src="unchecked.gif" alt="[no]" />
            </td>
          </tr>
          <tr>
            <td style="vertical-align:top;">1.2.2.4 Categorize Bookmarks</td>
            <td style="text-align:center;vertical-align:top;"><!-- tw -->
              <img src="checked.gif" alt="[yes]" />
              <srf:footnote localCode="fullFM1" localID="3">
                Currently only in a flat categorization - future versions will
                provide hierarchial categorization.
              </srf:footnote>
            </td>
            <td style="text-align:center;vertical-align:top;"><!-- Moz -->
              <img src="checked.gif" alt="[yes]" />
            </td>
            <td style="text-align:center;vertical-align:top;"><!-- Opera -->
              <img src="checked.gif" alt="[yes]" />
            </td>
            <td style="text-align:center;vertical-align:top;"><!-- IE -->
              <img src="checked.gif" alt="[yes]" />
            </td>
            <td style="text-align:center;vertical-align:top;"><!-- Amaya -->
              <img src="unchecked.gif" alt="[no]" />
            </td>
          </tr>
          <tr>
            <td style="vertical-align:top;">
              1.2.2.5 Notification on Bookmark Change
              <srf:footnote localCode="fullFM1" localID="4">
                Allows the user setting a date when the document is checked
                for changes and if changes have occured, the user is notified.
              </srf:footnote>
            </td>
            <td style="text-align:center;vertical-align:top;"><!-- tw -->
              <img src="unchecked.gif" alt="[no]" />
            </td>
            <td style="text-align:center;vertical-align:top;"><!-- Moz -->
              <img src="checked.gif" alt="[yes]" />
            </td>
            <td style="text-align:center;vertical-align:top;"><!-- Opera -->
              <img src="unchecked.gif" alt="[no]" />
            </td>
            <td style="text-align:center;vertical-align:top;"><!-- IE -->
              <img src="unchecked.gif" alt="[no]" />
            </td>
            <td style="text-align:center;vertical-align:top;"><!-- Amaya -->
              <img src="unchecked.gif" alt="[no]" />
            </td>
          </tr>
          <tr>
            <td style="vertical-align:top;">1.2.2.6 View Bookmarks Overview, with Descriptions</td>
            <td style="text-align:center;vertical-align:top;"><!-- tw -->
              <img src="checked.gif" alt="[yes]" />
            </td>
            <td style="text-align:center;vertical-align:top;"><!-- Moz -->
              <img src="checked.gif" alt="[yes]" />
            </td>
            <td style="text-align:center;vertical-align:top;"><!-- Opera -->
              <img src="unchecked.gif" alt="[no]" />
            </td>
            <td style="text-align:center;vertical-align:top;"><!-- IE -->
              <img src="unchecked.gif" alt="[no]" />
            </td>
            <td style="text-align:center;vertical-align:top;"><!-- Amaya -->
              <img src="unchecked.gif" alt="[no]" />
            </td>
          </tr>
          <tr>
            <td style="vertical-align:top;">1.2.2.7 Access Bookmarks Anywhere</td>
            <td style="text-align:center;vertical-align:top;"><!-- tw -->
              <img src="checked.gif" alt="[yes]" />
            </td>
            <td style="text-align:center;vertical-align:top;"><!-- Moz -->
              <img src="unchecked.gif" alt="[no]" />
            </td>
            <td style="text-align:center;vertical-align:top;"><!-- Opera -->
              <img src="unchecked.gif" alt="[no]" />
            </td>
            <td style="text-align:center;vertical-align:top;"><!-- IE -->
              <img src="unchecked.gif" alt="[no]" />
            </td>
            <td style="text-align:center;vertical-align:top;"><!-- Amaya -->
              <img src="unchecked.gif" alt="[no]" />
            </td>
          </tr>
          <tr>
            <td style="vertical-align:top;">1.2.2.8 Share Bookmarks with Communities</td>
            <td style="text-align:center;vertical-align:top;"><!-- tw -->
              <img src="checked.gif" alt="[yes]" />
            </td>
            <td style="text-align:center;vertical-align:top;"><!-- Moz -->
              <img src="unchecked.gif" alt="[no]" />
            </td>
            <td style="text-align:center;vertical-align:top;"><!-- Opera -->
              <img src="unchecked.gif" alt="[no]" />
            </td>
            <td style="text-align:center;vertical-align:top;"><!-- IE -->
              <img src="unchecked.gif" alt="[no]" />
            </td>
            <td style="text-align:center;vertical-align:top;"><!-- Amaya -->
              <img src="unchecked.gif" alt="[no]" />
            </td>
          </tr>
        </table>

        <srf:showfootnotes localCode="fullFM1" />
<srf:newpage />
        <table class="border" style="width:100%;"
               id="FeatureMatrix2"
               summary="This table compares the features concerning collaboration, orientation and technical details of teamXweb with Mozilla, Opera, Internet Explorer and Amaya.">
          <caption>
            Feature-Matrix for Collaboration, Orientation and Technical Details
          </caption>
          <tr>
            <th colspan="2" rowspan="2">&#160;</th>
            <th colspan="5" style="text-align:center;">Browsers</th>
          </tr>
          <tr>
            <th style="text-align:center;width:10%;"><em>teamXweb</em></th>
            <th style="text-align:center;width:10%;">Mozilla</th>
            <th style="text-align:center;width:10%;">Opera</th>
            <th style="text-align:center;width:10%;">IE</th>
            <th style="text-align:center;width:10%;">Amaya</th>
          </tr>
          <tr>
            <th style="width:3%;text-align:center;vertical-align:middle;" rowspan="31">
              F<br />e<br />a<br />t<br />u<br />r<br />e<br />s
            </th>
            <td colspan="6" style="width:47%;vertical-align:top;"><strong>2 Collaboration</strong></td>
          </tr>
          <tr>
            <td style="vertical-align:top;">2.1 Work with Communities (create, modify, join)</td>
            <td style="text-align:center;vertical-align:top;"><!-- tw -->
              <img src="checked.gif" alt="[yes]" />
            </td>
            <td style="text-align:center;vertical-align:top;"><!-- Moz -->
              <img src="unchecked.gif" alt="[no]" />
            </td>
            <td style="text-align:center;vertical-align:top;"><!-- Opera -->
              <img src="unchecked.gif" alt="[no]" />
            </td>
            <td style="text-align:center;vertical-align:top;"><!-- IE -->
              <img src="unchecked.gif" alt="[no]" />
            </td>
            <td style="text-align:center;vertical-align:top;"><!-- Amaya -->
              <img src="unchecked.gif" alt="[no]" />
            </td>
          </tr>
          <tr>
            <td style="vertical-align:top;">2.2 Sending Messages to Other Users</td>
            <td style="text-align:center;vertical-align:top;"><!-- tw -->
              <img src="checked.gif" alt="[yes]" />
              <srf:footnote localCode="fullFM2" localID="1">
                Currently, only a proprietary messaging system is included.
                Integration of asynchronous communication via the standard protocols
                (SMTP, POP3, IMAP4) is planned for a future version.
              </srf:footnote>
            </td>
            <td style="text-align:center;vertical-align:top;"><!-- Moz -->
              <img src="checked.gif" alt="[yes]" />
              <srf:footnote localCode="fullFM2" localID="2">
                Via the standard protocols SMTP, POP3 and IMAP4 (only Mozilla).
                EMail-adresses of other users must be known.
              </srf:footnote>
            </td>
            <td style="text-align:center;vertical-align:top;"><!-- Opera -->
              <img src="checked.gif" alt="[yes]" />
              <srf:footnote localCode="fullFM2" localID="2" />
            </td>
            <td style="text-align:center;vertical-align:top;"><!-- IE -->
              <img src="unchecked.gif" alt="[no]" />
            </td>
            <td style="text-align:center;vertical-align:top;"><!-- Amaya -->
              <img src="unchecked.gif" alt="[no]" />
            </td>
          </tr>
          <tr>
            <td style="vertical-align:top;">2.3 Sending Messages to Community</td>
            <td style="text-align:center;vertical-align:top;"><!-- tw -->
              <img src="checked.gif" alt="[yes]" />
            </td>
            <td style="text-align:center;vertical-align:top;"><!-- Moz -->
              <img src="unchecked.gif" alt="[no]" />
            </td>
            <td style="text-align:center;vertical-align:top;"><!-- Opera -->
              <img src="unchecked.gif" alt="[no]" />
            </td>
            <td style="text-align:center;vertical-align:top;"><!-- IE -->
              <img src="unchecked.gif" alt="[no]" />
            </td>
            <td style="text-align:center;vertical-align:top;"><!-- Amaya -->
              <img src="unchecked.gif" alt="[no]" />
            </td>
          </tr>
          <tr>
            <td style="vertical-align:top;">2.4 Accessing Messages Anywhere</td>
            <td style="text-align:center;vertical-align:top;"><!-- tw -->
              <img src="checked.gif" alt="[yes]" />
            </td>
            <td style="text-align:center;vertical-align:top;"><!-- Moz -->
              <img src="unchecked.gif" alt="[no]" />
            </td>
            <td style="text-align:center;vertical-align:top;"><!-- Opera -->
              <img src="unchecked.gif" alt="[no]" />
            </td>
            <td style="text-align:center;vertical-align:top;"><!-- IE -->
              <img src="unchecked.gif" alt="[no]" />
            </td>
            <td style="text-align:center;vertical-align:top;"><!-- Amaya -->
              <img src="unchecked.gif" alt="[no]" />
            </td>
          </tr>
          <tr>
            <td style="vertical-align:top;">2.5 Synchronous Communication [Chat]</td>
            <td style="text-align:center;vertical-align:top;"><!-- tw -->
              <img src="checked.gif" alt="[yes]" />
              <srf:footnote localCode="fullFM2" localID="3">
                Not implemented, yet.
              </srf:footnote>
            </td>
            <td style="text-align:center;vertical-align:top;"><!-- Moz -->
              <img src="checked.gif" alt="[yes]" />
              <srf:footnote localCode="fullFM2" localID="4">
                With an own client for the standard protocol IRC
                (no instant messaging).
              </srf:footnote>
            </td>
            <td style="text-align:center;vertical-align:top;"><!-- Opera -->
              <img src="checked.gif" alt="[yes]" />
              <srf:footnote localCode="fullFM2" localID="5">
                With an own client for ICQ (instant messenger).
              </srf:footnote>
            </td>
            <td style="text-align:center;vertical-align:top;"><!-- IE -->
              <img src="unchecked.gif" alt="[no]" />
            </td>
            <td style="text-align:center;vertical-align:top;"><!-- Amaya -->
              <img src="unchecked.gif" alt="[no]" />
            </td>
          </tr>
          <tr>
            <td style="vertical-align:top;">2.6 Chat with Users on Same Page</td>
            <td style="text-align:center;vertical-align:top;"><!-- tw -->
              <img src="checked.gif" alt="[yes]" />
              <srf:footnote localCode="fullFM2" localID="3" />
            </td>
            <td style="text-align:center;vertical-align:top;"><!-- Moz -->
              <img src="unchecked.gif" alt="[no]" />
            </td>
            <td style="text-align:center;vertical-align:top;"><!-- Opera -->
              <img src="unchecked.gif" alt="[no]" />
            </td>
            <td style="text-align:center;vertical-align:top;"><!-- IE -->
              <img src="unchecked.gif" alt="[no]" />
            </td>
            <td style="text-align:center;vertical-align:top;"><!-- Amaya -->
              <img src="unchecked.gif" alt="[no]" />
            </td>
          </tr>
          <tr>
            <td colspan="6" style="vertical-align:top;"><strong>2.7 Annotations</strong></td>
          </tr>
          <tr>
            <td style="vertical-align:top;">2.7.1 Annotations linked to Document Fragments</td>
            <td style="text-align:center;vertical-align:top;"><!-- tw -->
              <img src="unchecked.gif" alt="[no]" />
            </td>
            <td style="text-align:center;vertical-align:top;"><!-- Moz -->
              <img src="unchecked.gif" alt="[no]" />
            </td>
            <td style="text-align:center;vertical-align:top;"><!-- Opera -->
              <img src="unchecked.gif" alt="[no]" />
            </td>
            <td style="text-align:center;vertical-align:top;"><!-- IE -->
              <img src="unchecked.gif" alt="[no]" />
            </td>
            <td style="text-align:center;vertical-align:top;"><!-- Amaya -->
              <img src="checked.gif" alt="[yes]" />
            </td>
          </tr>
          <tr>
            <td style="vertical-align:top;">2.7.2 Annotations linked to Documents</td>
            <td style="text-align:center;vertical-align:top;"><!-- tw -->
              <img src="checked.gif" alt="[yes]" />
            </td>
            <td style="text-align:center;vertical-align:top;"><!-- Moz -->
              <img src="unchecked.gif" alt="[no]" />
            </td>
            <td style="text-align:center;vertical-align:top;"><!-- Opera -->
              <img src="unchecked.gif" alt="[no]" />
            </td>
            <td style="text-align:center;vertical-align:top;"><!-- IE -->
              <img src="unchecked.gif" alt="[no]" />
            </td>
            <td style="text-align:center;vertical-align:top;"><!-- Amaya -->
              <img src="checked.gif" alt="[yes]" />
            </td>
          </tr>
          <tr>
            <td style="vertical-align:top;">2.7.3 Annotations linked to Domains</td>
            <td style="text-align:center;vertical-align:top;"><!-- tw -->
              <img src="checked.gif" alt="[yes]" />
            </td>
            <td style="text-align:center;vertical-align:top;"><!-- Moz -->
              <img src="unchecked.gif" alt="[no]" />
            </td>
            <td style="text-align:center;vertical-align:top;"><!-- Opera -->
              <img src="unchecked.gif" alt="[no]" />
            </td>
            <td style="text-align:center;vertical-align:top;"><!-- IE -->
              <img src="unchecked.gif" alt="[no]" />
            </td>
            <td style="text-align:center;vertical-align:top;"><!-- Amaya -->
              <img src="unchecked.gif" alt="[no]" />
            </td>
          </tr>
          <tr>
            <td style="vertical-align:top;">2.7.4 Private Annotations</td>
            <td style="text-align:center;vertical-align:top;"><!-- tw -->
              <img src="checked.gif" alt="[yes]" />
            </td>
            <td style="text-align:center;vertical-align:top;"><!-- Moz -->
              <img src="unchecked.gif" alt="[no]" />
            </td>
            <td style="text-align:center;vertical-align:top;"><!-- Opera -->
              <img src="unchecked.gif" alt="[no]" />
            </td>
            <td style="text-align:center;vertical-align:top;"><!-- IE -->
              <img src="unchecked.gif" alt="[no]" />
            </td>
            <td style="text-align:center;vertical-align:top;"><!-- Amaya -->
              <img src="checked.gif" alt="[yes]" />
            </td>
          </tr>
          <tr>
            <td style="vertical-align:top;">2.7.5 Community Annotations</td>
            <td style="text-align:center;vertical-align:top;"><!-- tw -->
              <img src="checked.gif" alt="[yes]" />
            </td>
            <td style="text-align:center;vertical-align:top;"><!-- Moz -->
              <img src="unchecked.gif" alt="[no]" />
            </td>
            <td style="text-align:center;vertical-align:top;"><!-- Opera -->
              <img src="unchecked.gif" alt="[no]" />
            </td>
            <td style="text-align:center;vertical-align:top;"><!-- IE -->
              <img src="unchecked.gif" alt="[no]" />
            </td>
            <td style="text-align:center;vertical-align:top;"><!-- Amaya -->
              <img src="unchecked.gif" alt="[no]" />
            </td>
          </tr>
          <tr>
            <td style="vertical-align:top;">2.7.6 Public Annotations</td>
            <td style="text-align:center;vertical-align:top;"><!-- tw -->
              <img src="checked.gif" alt="[yes]" />
            </td>
            <td style="text-align:center;vertical-align:top;"><!-- Moz -->
              <img src="unchecked.gif" alt="[no]" />
            </td>
            <td style="text-align:center;vertical-align:top;"><!-- Opera -->
              <img src="unchecked.gif" alt="[no]" />
            </td>
            <td style="text-align:center;vertical-align:top;"><!-- IE -->
              <img src="unchecked.gif" alt="[no]" />
            </td>
            <td style="text-align:center;vertical-align:top;"><!-- Amaya -->
              <img src="checked.gif" alt="[yes]" />
            </td>
          </tr>
          <tr>
            <td colspan="6" style="vertical-align:top;"><strong>2.8 Integrated Interface</strong></td>
          </tr>
          <tr>
            <td style="vertical-align:top;">2.8.1 Same Interface for Annotations and Messages</td>
            <td style="text-align:center;vertical-align:top;"><!-- tw -->
              <img src="checked.gif" alt="[yes]" />
            </td>
            <td style="text-align:center;vertical-align:top;"><!-- Moz -->
              <img src="unchecked.gif" alt="[no]" />
            </td>
            <td style="text-align:center;vertical-align:top;"><!-- Opera -->
              <img src="unchecked.gif" alt="[no]" />
            </td>
            <td style="text-align:center;vertical-align:top;"><!-- IE -->
              <img src="unchecked.gif" alt="[no]" />
            </td>
            <td style="text-align:center;vertical-align:top;"><!-- Amaya -->
              <img src="unchecked.gif" alt="[no]" />
            </td>
          </tr>
          <tr>
            <td style="vertical-align:top;">2.8.2 Integrated Overview over Annotations and Messages</td>
            <td style="text-align:center;vertical-align:top;"><!-- tw -->
              <img src="checked.gif" alt="[yes]" />
            </td>
            <td style="text-align:center;vertical-align:top;"><!-- Moz -->
              <img src="unchecked.gif" alt="[no]" />
            </td>
            <td style="text-align:center;vertical-align:top;"><!-- Opera -->
              <img src="unchecked.gif" alt="[no]" />
            </td>
            <td style="text-align:center;vertical-align:top;"><!-- IE -->
              <img src="unchecked.gif" alt="[no]" />
            </td>
            <td style="text-align:center;vertical-align:top;"><!-- Amaya -->
              <img src="unchecked.gif" alt="[no]" />
            </td>
          </tr>
          <tr>
            <td colspan="6" style="vertical-align:top;"><strong>3 Orientation / Statistics</strong></td>
          </tr>
          <tr>
            <td style="vertical-align:top;">3.1 View Number of Visits (Self, Community, All)</td>
            <td style="text-align:center;vertical-align:top;"><!-- tw -->
              <img src="checked.gif" alt="[yes]" />
            </td>
            <td style="text-align:center;vertical-align:top;"><!-- Moz -->
              <img src="unchecked.gif" alt="[no]" />
            </td>
            <td style="text-align:center;vertical-align:top;"><!-- Opera -->
              <img src="unchecked.gif" alt="[no]" />
            </td>
            <td style="text-align:center;vertical-align:top;"><!-- IE -->
              <img src="unchecked.gif" alt="[no]" />
            </td>
            <td style="text-align:center;vertical-align:top;"><!-- Amaya -->
              <img src="unchecked.gif" alt="[no]" />
            </td>
          </tr>
          <tr>
            <td style="vertical-align:top;">3.2 View Number of Previous Visitors</td>
            <td style="text-align:center;vertical-align:top;"><!-- tw -->
              <img src="checked.gif" alt="[yes]" />
            </td>
            <td style="text-align:center;vertical-align:top;"><!-- Moz -->
              <img src="unchecked.gif" alt="[no]" />
            </td>
            <td style="text-align:center;vertical-align:top;"><!-- Opera -->
              <img src="unchecked.gif" alt="[no]" />
            </td>
            <td style="text-align:center;vertical-align:top;"><!-- IE -->
              <img src="unchecked.gif" alt="[no]" />
            </td>
            <td style="text-align:center;vertical-align:top;"><!-- Amaya -->
              <img src="unchecked.gif" alt="[no]" />
            </td>
          </tr>
          <tr>
            <td style="vertical-align:top;">3.3 View Number of Current Visitors</td>
            <td style="text-align:center;vertical-align:top;"><!-- tw -->
              <img src="checked.gif" alt="[yes]" />
            </td>
            <td style="text-align:center;vertical-align:top;"><!-- Moz -->
              <img src="unchecked.gif" alt="[no]" />
            </td>
            <td style="text-align:center;vertical-align:top;"><!-- Opera -->
              <img src="unchecked.gif" alt="[no]" />
            </td>
            <td style="text-align:center;vertical-align:top;"><!-- IE -->
              <img src="unchecked.gif" alt="[no]" />
            </td>
            <td style="text-align:center;vertical-align:top;"><!-- Amaya -->
              <img src="unchecked.gif" alt="[no]" />
            </td>
          </tr>
          <tr>
            <td colspan="6" style="vertical-align:top;"><strong>3.4 Links</strong></td>
          </tr>
          <tr>
            <td style="vertical-align:top;">3.4.1 Overview of Links in the Current Document</td>
            <td style="text-align:center;vertical-align:top;"><!-- tw -->
              <img src="checked.gif" alt="[yes]" />
            </td>
            <td style="text-align:center;vertical-align:top;"><!-- Moz -->
              <img src="unchecked.gif" alt="[no]" />
            </td>
            <td style="text-align:center;vertical-align:top;"><!-- Opera -->
              <img src="checked.gif" alt="[yes]" />
            </td>
            <td style="text-align:center;vertical-align:top;"><!-- IE -->
              <img src="unchecked.gif" alt="[no]" />
            </td>
            <td style="text-align:center;vertical-align:top;"><!-- Amaya -->
              <img src="checked.gif" alt="[yes]" />
            </td>
          </tr>
          <tr>
            <td style="vertical-align:top;">3.4.2 See How Often Which Link was Followed</td>
            <td style="text-align:center;vertical-align:top;"><!-- tw -->
              <img src="checked.gif" alt="[yes]" />
            </td>
            <td style="text-align:center;vertical-align:top;"><!-- Moz -->
              <img src="unchecked.gif" alt="[no]" />
            </td>
            <td style="text-align:center;vertical-align:top;"><!-- Opera -->
              <img src="unchecked.gif" alt="[no]" />
            </td>
            <td style="text-align:center;vertical-align:top;"><!-- IE -->
              <img src="unchecked.gif" alt="[no]" />
            </td>
            <td style="text-align:center;vertical-align:top;"><!-- Amaya -->
              <img src="unchecked.gif" alt="[no]" />
            </td>
          </tr>
          <tr>
            <td style="vertical-align:top;">3.4.3 See Links Leading to Document</td>
            <td style="text-align:center;vertical-align:top;"><!-- tw -->
              <img src="checked.gif" alt="[yes]" />
            </td>
            <td style="text-align:center;vertical-align:top;"><!-- Moz -->
              <img src="unchecked.gif" alt="[no]" />
              <srf:footnote localCode="fullFM2" localID="6">
                However, the number of links pointing to a document can be
                displayed.
              </srf:footnote>
            </td>
            <td style="text-align:center;vertical-align:top;"><!-- Opera -->
              <img src="unchecked.gif" alt="[no]" />
            </td>
            <td style="text-align:center;vertical-align:top;"><!-- IE -->
              <img src="unchecked.gif" alt="[no]" />
            </td>
            <td style="text-align:center;vertical-align:top;"><!-- Amaya -->
              <img src="unchecked.gif" alt="[no]" />
            </td>
          </tr>
          <tr>
            <td style="vertical-align:top;">3.4.4 See How often Links of Document were Used</td>
            <td style="text-align:center;vertical-align:top;"><!-- tw -->
              <img src="checked.gif" alt="[yes]" />
            </td>
            <td style="text-align:center;vertical-align:top;"><!-- Moz -->
              <img src="unchecked.gif" alt="[no]" />
            </td>
            <td style="text-align:center;vertical-align:top;"><!-- Opera -->
              <img src="unchecked.gif" alt="[no]" />
            </td>
            <td style="text-align:center;vertical-align:top;"><!-- IE -->
              <img src="unchecked.gif" alt="[no]" />
            </td>
            <td style="text-align:center;vertical-align:top;"><!-- Amaya -->
              <img src="unchecked.gif" alt="[no]" />
            </td>
          </tr>
          <tr>
            <td style="vertical-align:top;">3.4.5 See How often Links Leading to Document were Used</td>
            <td style="text-align:center;vertical-align:top;"><!-- tw -->
              <img src="checked.gif" alt="[yes]" />
            </td>
            <td style="text-align:center;vertical-align:top;"><!-- Moz -->
              <img src="unchecked.gif" alt="[no]" />
            </td>
            <td style="text-align:center;vertical-align:top;"><!-- Opera -->
              <img src="unchecked.gif" alt="[no]" />
            </td>
            <td style="text-align:center;vertical-align:top;"><!-- IE -->
              <img src="unchecked.gif" alt="[no]" />
            </td>
            <td style="text-align:center;vertical-align:top;"><!-- Amaya -->
              <img src="unchecked.gif" alt="[no]" />
            </td>
          </tr>
          <tr>
            <td colspan="6" style="vertical-align:top;"><strong>4 Technical</strong></td>
          </tr>
          <tr>
            <td style="vertical-align:top;">4.1 Available Platforms</td>
            <td style="text-align:center;vertical-align:top;"><!-- tw -->
              All
              <srf:footnote localCode="fullFM2" localID="7">
                <em>teamXweb</em> only requires a browser that supports
                JavaScript. Such browsers are available on all platforms, and
                therefore <em>teamXweb</em> is available on all platforms
                (at least: platforms with graphical user interfaces).
              </srf:footnote>
            </td>
            <td style="text-align:center;vertical-align:top;"><!-- Moz -->
              All
              <srf:footnote localCode="fullFM2" localID="8">
                Mozilla builds are available for:
                Win32, MacOS 9.x, MacOS X, Linux (x86, sparc64, PowerPC), AIX,
                BeOS, BSD/OS (bsdi), FreeBSD, HPUX, NetBSD, OpenVMS, OS/2,
                Solaris. As the source code is available, it may be possible
                to compile Mozilla for other platforms as well.
              </srf:footnote>
            </td>
            <td style="text-align:center;vertical-align:top;"><!-- Opera -->
              Most
              <srf:footnote localCode="fullFM2" localID="9">
                Opera is implemented for the following operating systems:
                Windows, Linux, Mac, OS/2, Solaris, QNX, Symbian.
              </srf:footnote>
            </td>
            <td style="text-align:center;vertical-align:top;"><!-- IE -->
              Few
              <srf:footnote localCode="fullFM2" localID="10">
                Windows (all 32 bit versions), Mac OS
              </srf:footnote>
            </td>
            <td style="text-align:center;vertical-align:top;"><!-- Amaya -->
              Most
              <srf:footnote localCode="fullFM2" localID="11">
                Binary distributions of Amaya are available for:
                Linux, Sparc /Solaris, AIX, OSF1, Windows (NT, 95 and 98).
                As the source code is available, it may be possible
                to compile Mozilla for other platforms as well.
              </srf:footnote>
            </td>
          </tr>
          <tr>
            <td style="vertical-align:top;">4.2 Requires Installation</td>
            <td style="text-align:center;vertical-align:top;"><!-- tw -->
              <img src="unchecked.gif" alt="[no]" />
            </td>
            <td style="text-align:center;vertical-align:top;"><!-- Moz -->
              <img src="checked.gif" alt="[yes]" />
            </td>
            <td style="text-align:center;vertical-align:top;"><!-- Opera -->
              <img src="checked.gif" alt="[yes]" />
            </td>
            <td style="text-align:center;vertical-align:top;"><!-- IE -->
              <img src="checked.gif" alt="[yes]" />
            </td>
            <td style="text-align:center;vertical-align:top;"><!-- Amaya -->
              <img src="checked.gif" alt="[yes]" />
            </td>
          </tr>
          <tr>
            <td style="vertical-align:top;">4.3 Requires Authentification</td>
            <td style="text-align:center;vertical-align:top;"><!-- tw -->
              <img src="checked.gif" alt="[yes]" />
              <srf:footnote localCode="fullFM2" localID="12">
                The system can be tested with a guest-account that requires
                no authentification. However, all guests share the same account
                and thus stored information may be lost from one session to
                another.
              </srf:footnote>
            </td>
            <td style="text-align:center;vertical-align:top;"><!-- Moz -->
              <img src="unchecked.gif" alt="[no]" />
              <srf:footnote localCode="fullFM2" localID="13">
                No authentification is required for common browser functionality.
                For communication features
                (e.g., eMail, chat or instant messaging),
                authentification is required.
              </srf:footnote>
            </td>
            <td style="text-align:center;vertical-align:top;"><!-- Opera -->
              <img src="unchecked.gif" alt="[no]" />
              <srf:footnote localCode="fullFM2" localID="13" />
            </td>
            <td style="text-align:center;vertical-align:top;"><!-- IE -->
              <img src="unchecked.gif" alt="[no]" />
              <srf:footnote localCode="fullFM2" localID="13" />
            </td>
            <td style="text-align:center;vertical-align:top;"><!-- Amaya -->
              <img src="unchecked.gif" alt="[no]" />
              <srf:footnote localCode="fullFM2" localID="14">
                No authentification is required for common browser
                functionality. However, for annotations that shall be stored
                on a public server, a server must be found out and configured
                and such a server may require authentification.
                This can be a problem as creating an account on that server is
                not integrated into Amaya.
              </srf:footnote>
            </td>
          </tr>
        </table>
        <srf:showfootnotes localCode="fullFM2" />
      </srf:appendix>

    <srf:appendix id="Raw" title="Experiment and User Survey Raw Materials">
      <srf:appsection id="Exp" title="Experiment Raw Data">
        <p>
          The <em>teamXweb</em> prototype has one page that can be used
          for getting statistical data of the system. These JSP generated
          statistics are accessible via
          <a class="explicit"
             href="http://teamXweb.com/teamXweb/statistics/systemStats.jsp">
               http://teamXweb.com/teamXweb/statistics/systemStats.jsp</a>.
          Among other information, there is an overview of all users of
          the system and how often they have visited <em>teamXweb</em>,
          an overview of the communities and an overview of all visited
          Web sites and Web pages. These statistics are optimized for
          being viewed on the Web and therefore not included in the
          current work (the short version prints to about 25 pages).
          Various snapshots of this data at different phases of the
          experiment are available at
          <a class="explicit"
             href="http://www.teamXweb.com/doc/statistics/index.shtml">
               http://www.teamXweb.com/doc/statistics/index.shtml</a>.
        </p>
      </srf:appsection>
      <srf:appsection id="Quest" title="Questionnaire used for the User Survey">
        <p>
          The questionnaire that has been used for conducting the user
          survey is available at
          <a class="explicit"
             href="http://teamXweb.com/teamXweb/statistics/questionnaire2.jsp">
             http://teamXweb.com/teamXweb/statistics/questionnaire2.jsp</a>.
          It has been written in German language as the participants
          were German and more people are likely to respond to a
          questionnaire in their native language. There had been another
          questionnaire before that wasn't used for the results because all
          the questions covered in the first questionnaire were also covered
          in the second questionnaire, and there were only few responses to
          the first questionnaire.
        </p>
        <p>
          The questionnaire basically looks like the results given in
          the next section.
        </p>
      </srf:appsection>
      <srf:appsection id="ResultQuest" title="Results of the Survey">
        <p>
          This section contains the raw results of the user survey.
          As the survey has been conducted with German people,
          everything is in German.
          The numbers given are the number of people who answered
          the questions positively. The percent numbers given in
          parenthesis next to the numbers are related to the
          all respondents (i.e., 38). For a summary of the results
          (in English), see <a class="crossRef" href="UserSurvey" />.
        </p>
        <table class="border"
               id="RawSurveyResults"
               summary="This table contains the raw results of the
                        user survey. It is structured exactly like the
                        questionnaire itself, but instead of
                        checkboxes and radiobuttons to select,
                        the results are included.">
          <caption>
            Raw Results of the User Survey
          </caption>
          <tr><td>
<p><strong>Allgemeine Angaben</strong></p>
<table class="noindex">
<tr><td>Beantwortete Fragebögen:</td>
<td>38</td></tr>
<tr><td>eMail-Adresse:</td>
<td>
              X
            </td></tr>
<tr><td>teamXweb-login (falls vorhanden):</td>
<td>
              X
            </td></tr>
<tr><td>Hauptfach:</td>
<td>
<table class="noindex">
  <tr><td>Informatik</td><td>29 (76.3 %)</td></tr>
  <tr><td>Ethnologie</td><td>2 (5.26 %)</td></tr>
  <tr><td>Anglistik</td><td>1 (2.63 %)</td></tr>
  <tr><td>Computerlinguistik</td><td>1 (2.63 %)</td></tr>
  <tr><td>Politikwissenschaft</td><td>1 (2.63 %)</td></tr>
  <tr><td>Psycholinguistik</td><td>1 (2.63 %)</td></tr>
</table>
</td></tr>
<tr><td>Nebenfach:</td>
<td>
<table class="noindex">
  <tr><td>Computerlinguistik</td><td>5 (13.2 %)</td></tr>
  <tr><td>Kommunikationswissenschaften</td><td>5 (13.2 %)</td></tr>
  <tr><td>Statistik</td><td>4 (10.5 %)</td></tr>
  <tr><td>Informatik</td><td>3 (7.89 %)</td></tr>
  <tr><td>Mathematik</td><td>3 (7.89 %)</td></tr>
  <tr><td>Biologie</td><td>2 (5.26 %)</td></tr>
  <tr><td>BWL</td><td>2 (5.26 %)</td></tr>
  <tr><td>Psychologie</td><td>2 (5.26 %)</td></tr>
  <tr><td>VWL</td><td>2 (5.26 %)</td></tr>
  <tr><td>Amerikanische Kunstgeschichte</td><td>1 (2.63 %)</td></tr>
  <tr><td>Ethnologie</td><td>1 (2.63 %)</td></tr>
  <tr><td>Jura</td><td>1 (2.63 %)</td></tr>
  <tr><td>Mikrobiologie</td><td>1 (2.63 %)</td></tr>
  <tr><td>Phonetik</td><td>1 (2.63 %)</td></tr>
  <tr><td>Physik</td><td>1 (2.63 %)</td></tr>
  <tr><td>Politologie</td><td>1 (2.63 %)</td></tr>
  <tr><td>Technik</td><td>1 (2.63 %)</td></tr>
</table>
</td></tr>
<tr><td>Semester:</td>
<td>
<table class="noindex">
  <tr><td>4. Semester</td><td>22 (57.9 %)</td></tr>
  <tr><td>3. Semester</td><td>2 (7.89 %)</td></tr>
  <tr><td>8. Semester</td><td>2 (7.89 %)</td></tr>
  <tr><td>12. Semester</td><td>2 (7.89 %)</td></tr>
  <tr><td>2. Semester</td><td>1 (2.63 %)</td></tr>
  <tr><td>7. Semester</td><td>1 (2.63 %)</td></tr>
  <tr><td>10. Semester</td><td>1 (2.63 %)</td></tr>
  <tr><td>14. Semester</td><td>1 (2.63 %)</td></tr>
</table>
</td></tr>
<tr><td>Über welche Veranstaltung hattest<br />Du von teamXweb erfahren?</td>
<td>
<table class="noindex">
  <tr><td>XML-Praktikum</td><td>3 (7.89 %)</td></tr>
  <tr><td>Programmierpraktikum</td><td>18 (47.37 %)</td></tr>
  <tr><td>Ethnologie@Internet</td><td>5 (13.16 %)</td></tr>
  <tr><td>Informatik HS WWW I18n and L10n</td><td>1 (2.63 %)</td></tr>
  <tr><td>Sonstige Feldversuchsteilnehmer</td><td>8 (21.05 %)</td></tr>
</table>
</td>
</tr>
<tr>
<td>Hattest Du einen Vortrag zu<br />teamXweb gehört?</td>
<td>
<table class="noindex">
<tr>
<td>ja</td>
<td>16
(42.11 %)
                  </td>
</tr>
<tr>
<td>nein</td>
<td>20
(52.63 %)
                  </td>
</tr>
</table>
</td>
</tr>
<tr>
<td>Hast Du Dir die Projektseite mal angesehen?</td>
<td>
<table class="noindex">
<tr>
<td>ja</td>
<td>22
(57.89 %)
                  </td>
</tr>
<tr>
<td>nein</td>
<td>14
(36.84 %)
                  </td>
</tr>
</table>
</td>
</tr>
</table>
<p>
<strong>Frage 1 von 10: </strong>
      Hast Du teamXweb schon ausprobiert?
    </p>
<table class="noindex">
<tr>
<td>Ja, ich habe ein Account angelegt</td>
<td>15
(39.47 %)
        </td>
</tr>
<tr>
<td>Ja, mit dem Gast-Account</td>
<td>1
(2.63 %)
        </td>
</tr>
<tr>
<td>
          Nein, ich habe mir <em>teamXweb</em> noch nicht angesehen.
        </td>
<td>13
(34.21 %)
        </td>
</tr>
<tr>
<td>
          Nein, ich werde mir <em>teamXweb</em> nicht ansehen.
        </td>
<td>8
(21.05 %)
        </td>
</tr>
</table>
<p>
<strong>Frage 2 von 10 (nur Antworten, falls vorher Antwort 3 oder 4 gegeben wurde): </strong><br />
      Wieso nicht (Mehrfachangaben möglich)?
    </p>
<table class="noindex">
<tr>
<td>Ich hatte leider keine Zeit.</td>
<td>3
(7.89 %)
        </td>
</tr>
<tr>
<td>Ich benutze das World Wide Web kaum, da lohnt sich das nicht.</td>
<td>0
(0 %)
        </td>
</tr>
<tr>
<td>Ich hatte Sicherheitsbedenken bzgl. meiner Privatsphäre.</td>
<td>3
(7.89 %)
        </td>
</tr>
<tr>
<td>Ich wollte nicht Versuchskaninchen spielen.</td>
<td>2
(5.26 %)
        </td>
</tr>
<tr>
<td>Ich wusste nicht, wozu das gut sein soll.</td>
<td>6
(15.79 %)
        </td>
</tr>
<tr>
<td>Mich interessiert sowas nicht.</td>
<td>3
(7.89 %)
        </td>
</tr>
</table>
<table class="noindex">
<tr>
<td>Sonstiges:</td>
<td>
    "ich habe noch nicht einmal das session-cookie für diese umfrage
zugelassen...<br />
der hauptgrund war aber absoluter zeitmangel."<p  />
    "Den Punkt "Ich wusste nicht, wozu das gut sein soll" interpretiere ich dahingehend, dass ich sehr wohl begriffen habe, wozu teamXweb gut sein soll, aber nicht einsehe, wer diese Funktionalität wirklich benötigt. Soll heißen: Die Features sind zwar alle ganz nett, aber nichts was es für mich annähernd rechtfertigen würde, mich intensiv genug mit dem System zu beschäftigen um es effizient benutzen zu können.<br />
Allgemein interessieren mich solche Ansätze aber auch nicht. Ich benutze ja noch nicht mal einen Instant Messenger wie ICQ."<p  />
    "teamXweb ist wie der Name schon sagt für ein ganzes Team gedacht. Ich habe allerdings niemals in einem geeignetem Team gearbeitet um die Vorteile teamXwebs nutzen zu können. Für das Programmierpraktikum an dem ich Teilgenommen habe,
haben wir das Internet kaum benötigt (allerhöchstens nur die Java API)."<p  />
    "Da es in unserem Programmierpraktikum sehr selten etwas im Internet zu suchen gab, war es nicht sinnvoll teamXweb einzuführen."<p  />
    "ich habe grundsätzlich Cookies und Javascript deaktiviert und möchte das auch nicht ändern."<p  />
</td>
</tr>
</table>
<p>
<strong>Frage 3 von 10 (Nur Antworten, falls man nur das Gast-Account getestet hat): </strong><br />
      Wieso hast Du kein eigenes Account angelegt (Mehrfachangaben möglich)?
    </p>
<table class="noindex">
<tr>
<td>Ich bin noch nicht dazu gekommen (oder: habe sowieso keine Zeit).</td>
<td>0
(0 %)
        </td>
</tr>
<tr>
<td>Ich benutze das World Wide Web kaum, da lohnt sich das nicht.</td>
<td>0
(0 %)
        </td>
</tr>
<tr>
<td>Ich hatte Sicherheitsbedenken bzgl. meiner Privatsphäre.</td>
<td>0
(0 %)
        </td>
</tr>
<tr>
<td>Ich wollte nicht Versuchskaninchen spielen.</td>
<td>0
(0 %)
        </td>
</tr>
<tr>
<td>Ich wusste nicht, wozu das gut sein soll.</td>
<td>0
(0 %)
        </td>
</tr>
<tr>
<td>Mich interessiert sowas nicht.</td>
<td>0
(0 %)
        </td>
</tr>
<tr>
<td>Mich hat der Versuch mit dem Gast-Account abgeschreckt.</td>
<td>0
(0 %)
        </td>
</tr>
</table>
<table class="noindex">
<tr>
<td>Sonstiges:</td>
<td>
</td>
</tr>
</table>
<p>
<strong>Frage 4 von 10 (nur Antworten, wenn man ein Account auf <em>teamXweb</em> hat): </strong><br />
      Wie oft hast Du <em>teamXweb</em> benutzt?
    </p>
<table class="noindex">
<tr>
<td>1-4 Sessions.</td>
<td>13
(34.21 %)
        </td>
</tr>
<tr>
<td>5-10 Sessions.</td>
<td>1
(2.63 %)
        </td>
</tr>
<tr>
<td>Mehr als 10 Sessions (<a href="#F6">weiter mit Frage 6</a>).</td>
<td>1
(2.63 %)
        </td>
</tr>
</table>
<p>
<strong>Frage 5 von 10 (nur Antworten, wenn man <em>teamXweb</em> weniger als 10 Mal benutzt hat): </strong><br />
      Wieso nicht öfters (Mehrfachangaben möglich)?
    </p>
<table class="noindex">
<tr>
<td><em>teamXweb</em> war mir zu kompliziert.</td>
<td>1
(2.63 %)
        </td>
</tr>
<tr>
<td><em>teamXweb</em> hat mir persönlich nichts gebracht.</td>
<td>4
(10.53 %)
        </td>
</tr>
<tr>
<td>Ich habe meine Zugangsdaten vergessen.</td>
<td>2
(5.26 %)
        </td>
</tr>
<tr>
<td>Da waren zu wenige Leute, die ich kannte.</td>
<td>1
(2.63 %)
        </td>
</tr>
<tr>
<td>Da war zu wenig Inhalt, der mir etwas gebracht hätte.</td>
<td>4
(10.53 %)
        </td>
</tr>
</table>
<table class="noindex">
<tr>
<td>Sonstiges:</td>
<td>
    "bislang zu selten Gelegenheit. Der Nutzen von teamXweb hängt entscheidend von den Inhalten ab, die wegen der kurzen Zeit verständlicherweise noch nicht sehr üppig waren "<p  />
    "Lesezeichen damals noch nicht exportierbar"<p  />
    "Ich denke, das TeamXWeb vor allem für Arbeitsgruppen gut geeignet ist, die gemeinsam über ein homogenes Thema recherchieren. Da ich momentan nicht in so einer Arbeitsgruppe bin, fehlt da die Motivation. Ausserdem ist es umständlicher zu bedienen als ein normaler Browser und alles wird mitgeloggt, deshalb nehme ich es auch nicht für Recherchen zu anderen Themen, an denen ich alleine arbeite."<p  />
    "Ich glaube perönlich, dass die Abwesenheit eines konkreten Projektes den Ausschlag gegeben hat.Ökonomisch ausgedrück scheint die Angebotsseite nicht auszureichen - eine direkte Nachfrage wäre dringend notwendig gewesen.<br />
Ich habe überlegt es mit meinen Arbeitskollegen auszuprobieren, da wir häufig auf die gleichen Seiten zugreifen. Ich habe mich aber aus diesen Gründen dagegen entschieden:<br />
1) Unbekanntes Konzept, d.h. ich muss es positiv darstellen und "vermarkten". Dadurch übernehmen ich aber auch die Verantwortung dafür.<br />
2)Wir benutzen in erster Linie online Literaturrecherchetools, die praktisch alle entweder Java oder Java-Skript verwenden.<br />
3)Das System war zu anfällig. Ich hab' dir ja 1-2 mal deswegen gemailt. Der Punkt ist, dass ich nicht das Gefühl hatte, das meine möglichen Kooperationspartner in IT-Sachen eine genügend große Toleranzgrenze für so etwas haben."<p  />
    "ich werde es ab jetzt regelmaessig benutzen!"<p  />
    "mein Surfverhalten ist ganz anders: ich brauche mehr browserfenster und ich will schnell zum Ziel: teamXweb ist eher eine eigene Anwendung zur Nutzung des Internet. Ich mag mich nicht umstellen, weil ich keine Zeit verlieren will (könnte sich ändern, wenn das Internet mehr im Vordergrund steht...)"<p  />
    "die ladezeiten waren zu lang und das layout ist ziemlich unübersichtlich und unelegant."<p  />
</td>
</tr>
</table>
<p>
<strong>Frage 6 von 10: </strong>
      Wie gut haben Dir folgende Teile von <em>teamXweb</em> gefallen bzw. wie
      wichtig waren Sie Dir bei der Benutzung?<br />
<strong>Erläuterung:</strong>Es gibt hier für jeden Teilbereich
      von <em>teamXweb</em> zwei Werte: als wie wichtig hast Du den jeweiligen
      Bereich empfunden, und wie gut hat Dir die Umsetzung im
      Prototypen von <em>teamXweb</em> gefallen. Diese Unterscheidung ist wichtig,
      weil in einer späteren Implementierung bestimmte Sachen ganz anders umgesetzt
      werden könnten.<br />
      Hier jeweils den zutreffenden Wert auf der Skala anklicken, die von
      "gut" bis "schlecht" bzw. von "wichtig" bis "unwichtig" geht. Die
      einzelnen Punkte könnt ihr auch mit Noten von 1 bis 6 interpretieren
      (ganz links wäre dann also "sehr gut", die zweite von links "gut" usw.
      bis ganz rechts dann "ungenügend").
    </p>
<table class="noindex">
<tr>
<td>Das Benutzerinterface:</td>
<td>
<table class="noindex">
<tr>
<td style="text-align:right;">wichtig</td>
<td style="text-align:center;">
9
              </td>
<td style="text-align:center;">
7
              </td>
<td style="text-align:center;">
0
              </td>
<td style="text-align:center;">
0
              </td>
<td style="text-align:center;">
1
              </td>
<td style="text-align:center;">
0
              </td>
<td>unwichtig</td>
</tr>
<tr>
<td style="text-align:right;">gut</td>
<td style="text-align:center;">
0
              </td>
<td style="text-align:center;">
5
              </td>
<td style="text-align:center;">
8
              </td>
<td style="text-align:center;">
2
              </td>
<td style="text-align:center;">
2
              </td>
<td style="text-align:center;">
0
              </td>
<td>schlecht</td>
</tr>
</table>
</td>
</tr>
<tr>
<td>Dass man es ohne Installation<br />direkt im Web starten kann:</td>
<td>
<table class="noindex">
<tr>
<td style="text-align:right;">wichtig</td>
<td style="text-align:center;">
8
              </td>
<td style="text-align:center;">
5
              </td>
<td style="text-align:center;">
2
              </td>
<td style="text-align:center;">
0
              </td>
<td style="text-align:center;">
2
              </td>
<td style="text-align:center;">
0
              </td>
<td>unwichtig</td>
</tr>
<tr>
<td style="text-align:right;">gut</td>
<td style="text-align:center;">
9
              </td>
<td style="text-align:center;">
6
              </td>
<td style="text-align:center;">
1
              </td>
<td style="text-align:center;">
1
              </td>
<td style="text-align:center;">
0
              </td>
<td style="text-align:center;">
0
              </td>
<td>schlecht</td>
</tr>
</table>
</td>
</tr>
<tr>
<td>Dass man Bookmarks mit<br />anderen teilen kann:</td>
<td>
<table class="noindex">
<tr>
<td style="text-align:right;">wichtig</td>
<td style="text-align:center;">
4
              </td>
<td style="text-align:center;">
8
              </td>
<td style="text-align:center;">
2
              </td>
<td style="text-align:center;">
2
              </td>
<td style="text-align:center;">
1
              </td>
<td style="text-align:center;">
0
              </td>
<td>unwichtig</td>
</tr>
<tr>
<td style="text-align:right;">gut</td>
<td style="text-align:center;">
4
              </td>
<td style="text-align:center;">
9
              </td>
<td style="text-align:center;">
2
              </td>
<td style="text-align:center;">
1
              </td>
<td style="text-align:center;">
1
              </td>
<td style="text-align:center;">
0
              </td>
<td>schlecht</td>
</tr>
</table>
</td>
</tr>
<tr>
<td>Dass man seine eigenen Bookmarks<br />überall benutzen kann:</td>
<td>
<table class="noindex">
<tr>
<td style="text-align:right;">wichtig</td>
<td style="text-align:center;">
8
              </td>
<td style="text-align:center;">
5
              </td>
<td style="text-align:center;">
1
              </td>
<td style="text-align:center;">
1
              </td>
<td style="text-align:center;">
1
              </td>
<td style="text-align:center;">
0
              </td>
<td>unwichtig</td>
</tr>
<tr>
<td style="text-align:right;">gut</td>
<td style="text-align:center;">
4
              </td>
<td style="text-align:center;">
6
              </td>
<td style="text-align:center;">
4
              </td>
<td style="text-align:center;">
1
              </td>
<td style="text-align:center;">
1
              </td>
<td style="text-align:center;">
0
              </td>
<td>schlecht</td>
</tr>
</table>
</td>
</tr>
<tr>
<td>Dass man die History mit<br />anderen teilen kann:</td>
<td>
<table class="noindex">
<tr>
<td style="text-align:right;">wichtig</td>
<td style="text-align:center;">
0
              </td>
<td style="text-align:center;">
2
              </td>
<td style="text-align:center;">
7
              </td>
<td style="text-align:center;">
2
              </td>
<td style="text-align:center;">
3
              </td>
<td style="text-align:center;">
2
              </td>
<td>unwichtig</td>
</tr>
<tr>
<td style="text-align:right;">gut</td>
<td style="text-align:center;">
2
              </td>
<td style="text-align:center;">
5
              </td>
<td style="text-align:center;">
5
              </td>
<td style="text-align:center;">
3
              </td>
<td style="text-align:center;">
1
              </td>
<td style="text-align:center;">
0
              </td>
<td>schlecht</td>
</tr>
</table>
</td>
</tr>
<tr>
<td>Dass man seine eigene History<br />überall verfügbar hat:</td>
<td>
<table class="noindex">
<tr>
<td style="text-align:right;">wichtig</td>
<td style="text-align:center;">
1
              </td>
<td style="text-align:center;">
2
              </td>
<td style="text-align:center;">
7
              </td>
<td style="text-align:center;">
5
              </td>
<td style="text-align:center;">
0
              </td>
<td style="text-align:center;">
1
              </td>
<td>unwichtig</td>
</tr>
<tr>
<td style="text-align:right;">gut</td>
<td style="text-align:center;">
1
              </td>
<td style="text-align:center;">
6
              </td>
<td style="text-align:center;">
7
              </td>
<td style="text-align:center;">
1
              </td>
<td style="text-align:center;">
0
              </td>
<td style="text-align:center;">
1
              </td>
<td>schlecht</td>
</tr>
</table>
</td>
</tr>
<tr>
<td>Die Kommunikation innerhalb<br />von Communities:</td>
<td>
<table class="noindex">
<tr>
<td style="text-align:right;">wichtig</td>
<td style="text-align:center;">
4
              </td>
<td style="text-align:center;">
6
              </td>
<td style="text-align:center;">
3
              </td>
<td style="text-align:center;">
1
              </td>
<td style="text-align:center;">
1
              </td>
<td style="text-align:center;">
1
              </td>
<td>unwichtig</td>
</tr>
<tr>
<td style="text-align:right;">gut</td>
<td style="text-align:center;">
1
              </td>
<td style="text-align:center;">
3
              </td>
<td style="text-align:center;">
8
              </td>
<td style="text-align:center;">
4
              </td>
<td style="text-align:center;">
0
              </td>
<td style="text-align:center;">
0
              </td>
<td>schlecht</td>
</tr>
</table>
</td>
</tr>
<tr>
<td>Die Kommunikation bzw. Notizen<br />auf Webseiten und Domains:</td>
<td>
<table class="noindex">
<tr>
<td style="text-align:right;">wichtig</td>
<td style="text-align:center;">
5
              </td>
<td style="text-align:center;">
7
              </td>
<td style="text-align:center;">
2
              </td>
<td style="text-align:center;">
1
              </td>
<td style="text-align:center;">
1
              </td>
<td style="text-align:center;">
0
              </td>
<td>unwichtig</td>
</tr>
<tr>
<td style="text-align:right;">gut</td>
<td style="text-align:center;">
2
              </td>
<td style="text-align:center;">
7
              </td>
<td style="text-align:center;">
6
              </td>
<td style="text-align:center;">
0
              </td>
<td style="text-align:center;">
1
              </td>
<td style="text-align:center;">
0
              </td>
<td>schlecht</td>
</tr>
</table>
</td>
</tr>
</table>
<p>
<strong>Frage 7 von 10: </strong>
      Was könnte Dich motivieren, <em>teamXweb</em> öfters bzw. überhaupt
      zu benutzen (Mehrfachangaben möglich)?
    </p>
<table class="noindex">
<tr>
  <td>Nichts.</td>
  <td>1 (2.63 %)</td>
</tr>
<tr>
  <td>Mehr, bessere Features (bitte Fragen 9 und 10 beantworten!).</td>
  <td>6 (15.79 %)</td>
</tr>
<tr>
  <td>Mehr Leute, die es schon benutzen.</td>
  <td>13 (34.21 %)</td>
</tr>
<tr>
  <td>Freunde, die es benutzen und es mir empfehlen.</td>
  <td>15 (39.47 %)</td>
</tr>
<tr>
  <td>Wenn ich Geld dafür bekomme.</td>
  <td>4 (10.53 %)</td>
</tr>
<tr>
  <td>
          Wenn ich Geld dafür bezahlen muss - nur wenn es<br />
          etwas kostet, ist es auch etwas wert!
        </td>
  <td>0 (0 %)</td>
</tr>
<tr>
  <td>
          Privater Server für meine Community/Firma/Arbeitsgruppe,<br />
          auf den sonst niemand zugreifen kann.
        </td>
  <td>7 (18.42 %)</td>
</tr>
</table>
<p>
<strong>Frage 8 von 10: </strong>
      Weitere Ideen/Wünsche?
    </p>
<table class="noindex">
<tr>
<td>
    "Tastaturunterstützung"<p  />
    "werde mir zeit nehmen um es richtig auszuprobierne"<p  />
    "eien dezente einbindung in den internetexplorer ?"<p  />
    "Mein normaler WebBrowser gefällt mit sehr gut, und von Tag zu Tag besser (=Galeon). Die Features von teamXweb finde ich auch klasse.<br />
Am liebsten hätte ich es, wenn teamXweb für mich "transparent" ist, egal welchen Browser ich wo verwende und ich trotzdem all die features habe. Fazit: teamXweb reduziert sich auf einen link (fast unsichtbar) hinter dem sich die ultimative Kommunikationsplattform befindet. Bookmarks möchte ich am liebsten im-/exportieren können, um deren fortbestand auch über die "Lebenszeit" des teamXweb-Projektes gesichert zu wissen, bzw. um mit meinen bestehenden Bookmarks gleich losarbeiten zu können (evtl Formatstandarts wie XBEL, Netscape-format?)<br />
<br />
Alle Seiten müssen korrekt dargestellt werden, dafür würde ich auch eine zusätzliche Software (Plugin o.ä.)  NICHT!!!  auf meinem Rechner installieren."<p  />
    "Ein Plug-In oder eine andere Client- bzw. lokale Lösung auf dem Rechner hätte den Vorteil, daß man sich nicht jedesmal anmelden müßte, bevor man ins Netz geht. Das war irgendwie müßig - ich hab's auch einfach irgendwann vergessen."<p  />
    "1. schnellere ladezeiten<br />
2. schöneres layout und schmalere balken oben und unten<br />
3. mehr übersichtlichkeit<br />
4. klarheit darüber, wann man für andere sichtbar ist, oder nicht.<br />
5. behebung von darstellungsfehler, zB umlaute<br />
"<p  />
</td>
</tr>
</table>
<p>
<strong>Frage 9 von 10: </strong>
      Welche Verbesserungen / neuen Features würdest Du Dir von <em>teamXweb</em>
      wünschen?
    </p>
<table class="noindex">
<tr>
<td>
          Alle Seiten müssen korrekt dargestellt werden, dafür<br />
          würde ich auch eine zusätzliche Software (Plugin o.ä.)<br />
          auf meinem Rechner installieren.
        </td>
<td>4
(10.53 %)
        </td>
</tr>
<tr>
<td>
          Einen Chat mit anderen Leuten, die auf meiner Seite sind<br />
          bzw. die in einer meiner Communities sind.
        </td>
<td>6
(15.79 %)
        </td>
</tr>
<tr>
<td>
          Die Möglichkeit, mir Nachrichten auf Seiten/Communities/<br />
          an mich selbst per eMail zusenden zu lassen (damit wäre <br />
          jede Seite / Community automatisch auch eine <br />
          eMail-Mailing-List, die man entweder per eMail oder in<br />
          <em>teamXweb</em> lesen kann).
        </td>
<td>4
(10.53 %)
        </td>
</tr>
<tr>
<td>
          Die Möglichkeit per eMail Nachrichten an/auf andere teamXweb<br />
          Mitglieder / Communities / Webseiten zu schicken.
        </td>
<td>7
(18.42 %)
        </td>
</tr>
</table>
<p>
<strong>Frage 10 von 10: </strong>
      Weitere Vorschläge, Anmerkungen, Kommentare, Fragen (auch zum Fragebogen):
    </p>
<table class="noindex">
<tr>
<td>
    "auf keinen fall sollte zusatzsoftware (bes. plugins) nötig sein,<br />
damit die platformunabhängigkeit weiterhin gewährleistet ist.<br />
... von einer java-vm mal auf dem client mal abgesehen."<p  />
    "- graphische Darstellung der Zugriffshäufigkeiten einzelner Seiten<br />
- Seitenbewertung und aktuelle Bestenliste<br />
- Warum erscheinen Seiten, die in der Liste der ausgehenden Verweise einer Seite ausgewählt werden, in einem normalen Browserfenster (ohne TeamXWeb)?"<p  />
    "Sorry, aber ich denke, dass teamxweb nur eine Kombination von Diensten ist, die es schon gibt:<br />
Wenn ich einen Kollegen eine URI geben will, maile ich sie ihm.<br />
Wenn ich mit ihm chatten will, benutze ich IRC<br />
usw...<br />
<br />
der Vorteil bei diesen Methoden ist, dass man sich nirgends anmelden muss und dass auch keine zusaetzlichen Installationen noetig sind.<br />
<br />
mfg, Christopher"<p  />
    "Das schwerste ist es sicher das bestehende Userverhalten auf Deine Wünsche umzubiegen"<p  />
    "zb ein (httpS)-webinterface fuer einen pop/imap (evtl mit ssl) mailaccounnt MEINER wahl. das waer sehr praktisch, auch wenns  wahrscheinlich etwas  "abseits" des projekts ist ;-)"<p  />
    "Hi Holger,<br />
<br />
sorry, hatte wirklich keine Zeit, mir das näher anzuschauen, drum auch nur diese dürftigen Angaben. Aber wenn dir das was hilft (wie du's in Gurus geschrieben hast), bitte... ;-)<br />
<br />
Toby (W.)"<p  />
    "bei frage 6.1: man sollte trennen zwischen Aussehen, Robustheit/Bugs und Uebersichtlichkeit/Einfachheit der Bedienung"<p  />
    "paar Ideen:<br />
<br />
- warum nicht Nutzerinterface in eigenem Browserfenster und die Website ganz normal im zweiten Browser, der mit nem Plugin o.ä. einen Seitenwechsel an den Server schickt und damit das Userinterface aktualisiert?<br />
- teamXweb müsste weniger sichtbar sein, aber mir das gefühl eines unglaublichen mehrwertes bringen, damit ich unglaublich motiviert damit arbeite"<p  />
    "Also, die Idee finde ich grundsätzlich gut. Allerdings ist das alles noch sehr schlecht und unfreundlich umgesetzt (es ist eine große Leistung, keine Frage, und es funktioniert gut, aber ist überhaupt nicht intuitiv oder übersichtlich). Z.B. hatte ich bei den ersten Versuchen (und die zählen!) überhaupt keinen Überblick, ob die Messages und Seiten nun nur innerhalb von meiner Community stattfinden oder allgemein. Da braucht man glaub ich eine klarere Trennung. Ich will nur in einer Community sein, sonst wird es unübersichtlich.<br />
<br />
Wenn ich auf eine Community klicke, erwarte ich z.B., dass alle Nachrichten die dazu Bezug haben, agezeigt werden. Aber ich sehe nur die Mitglieder.<br />
<br />
Dann hab ich ein Weile gebraucht um die Community-bezogenen Bookmarks oben im Pulldown zu finden. Das alles sollte schon so eingestellt sein, weil ich das Ding ja benutze, um mit anderen bookmarks zu teilen.<br />
<br />
Die Sache mit der History finde ich ganz problematisch. Das hält einem am meisten von der wirklichen Benutzung ab. Überhaupt ist diese Browser im Browser-Sache recht unpraktisch. Viel besser fände ich ein Plugin: Man arbeitet wie gewohnt mit seinem Browser, kann aber bei Bedarf eine seite mit einem Kommentar an eine Community weiterleiten.  So etwas wie Alexa, das als tool oben im Browser integriert wird. Oder meinetwegen auch ein eigenständiges Programm, welches die aktuelle Browserzeile ausliest.<br />
<br />
Die grundsätztliche Idee vom kooperativen Browsen finde ich dagegen sehr gut und wichtig.<br />
<br />
Während das eigentliche Fenster mit den Messages sehr übersichtlich und vertraut ist, hatte ich große Probleme, die ganzen verschiedenen Formen und Typen von Notizen, Meldungen, Domains (communicator.jsp) - die ja wieder aus verschiedenen Communitys kommen können und von mir, von Personen, von Gruppen, auseinanderzuhalten. Schlimmer noch, ich empfand es als zu viel Information, wollte es gar nicht auseinanderhalten.<br />
<br />
Die eigentliche Brwosing-Funktion funktioniert dagegen ganz gut. Schön auch, dass er sich farblich von den ganzen Notizen-Seiten abhebt.<br />
<br />
Außerdem ist es anscheinend nicht möglich, Seiten- und domain-Notizen anzuklicken. Vermutlich ist es technisch nicht möglich, diese dann im Browser-Browser-Fenster anzuzeigen?<br />
<br />
Schön ist die Möglichkeit, im Browser die Begrenzungen zu verschieben, allerdings habe ich das erst spät bemerkt.<br />
<br />
Insgesamt sehe ich die Hauptprobleme also in der Tatsache, dass ich beim Surfen meine Wege nicht für Fremde aufzeichnen will. Zweitens in der fehlenden Übersichtlichkeit vor allem bei den zahlreichen unterschiedlichen Notizen. Wichtigstes Problem ist aber, dass ich beim Browsen nicht auf meinen eigenen Browser verzichten will. Dann könnte ich mir ein Plugin, welches sich auf die wesentlichen Punkte des Informationsaustauschs beschränkt, als sehr nützlich vorstellen. Wesentlich wäre für mich:<br />
URI an die community senden<br />
URI kommentieren, mit Möglichkeit einen Thread daran anzuschließen.<br />
Allgemein diskutieren.<br />
<br />
ein weiteres Problem haben wir in unserem Ethnologie-Seminar bemerkt: Die Gruppe kommunizierte - wenn überhaupt über Mailinglist. So lange der Umgang mit dem TeamxWeb Tool nicht selbstverständlich ist, sollte man sich überlegen, die Kommunikation automatisch an die Mailingliste zu spiegeln, um auch technisch ageneigte Mitglieder miteinzubeziehen und um nicht zwei verschiedene Plattformen bei der gemeinsamen Kommunikation zu haben."<p  />
</td>
</tr>
</table>
</td>
</tr>
</table>
      </srf:appsection>
    </srf:appendix>

<!--    <srf:appendix id="Tools" title="Tools Developed and Used for this Work"> -->
<!--      <srf:appsection id="SurveyTool" title="Application for Conducting and Analyzing the Survey">
        <p>
          A set of tools has been developed for conducting the
          user survey.
        </p>
      </srf:appsection> -->

      <srf:appendix id="SRFandBML" title="Simple Report Format (SRF)">
        <p>
          <acronym id="srf" title="Simple Report Format">SRF</acronym>
          is an XML application that was developed and used to format
          both the project thesis (<cite>[Wagner2002]</cite>) and
          this diploma thesis.
          It consists of a
          <acronym id="dtd" title="Document Type Definition">DTD</acronym>
          which is based on XHTML but adds many tags that were missing
          in XHTML. In particular, tags for a structure of the document
          are added. Furthermore, an
          <acronym id="xsl" title="eXtensible Stylesheet Language">XSL</acronym>
          stylesheet has been developed which is used to convert a
          document formatted with SRF to XHTML that can be displayed
          in any common Web browser.
        </p>
        <p>
          The XSL stylesheet implements the following features:
        </p>
        <ul>
          <li>
            Modelling the structure of the document with <em>chapter</em>,
            <em>section</em> and <em>subsection</em>, as well as
            <em>appendix</em>, <em>appsection</em> and
            <em>appsubsection</em>. These are automatically enumerated.
          </li>
          <li>
            Automatically building a table of contents with hyperlinks
            to the sections. Furthermore, a brief table of contents
            can be generated that only contains <em>chapters</em> and
            <em>appendices</em>.
          </li>
          <li>
            Acronyms and abbreviations that are automatically expanded
            for printing, while being displayed as a popup on screen.
            Acronyms and abbreviations can be included in an index.
          </li>
          <li>
            Definitions are also included in an index. That way, an
            index of keywords can easily be built. For each definition,
            the section in which it was defined is shown in the index
            and a hyperlink to the definition is automatically
            generated.
          </li>
          <li>
            (HTML-)Tables and figures with captions and summaries,
            that are automatically enumerated with the section they
            are used in. Tables and figures are also included in
            an index. Figures can be scaled conveniently to fit on
            screen or paper.
          </li>
          <li>
            References and citations that automatically link to the
            bibliography.
          </li>
          <li>
            Footnotes that can be placed anywhere in the document
            and that link back and forth: if the user clicks on
            the number of the expanded footnote, the place where the
            footnote was used is shown.
          </li>
        </ul>
        <p>
          Both the DTD and XSL stylesheet can be downloaded from
          <a class="explicit" href="http://www.teamXweb.com/srf/">
            http://www.teamXweb.com/srf/</a> and can be used free of
          charge.
        </p>
<!--      </srf:appsection> -->
    </srf:appendix>
  </srf:body>
</srf:article>
