<html><head>
<meta HTTP-EQUIV="content-type" CONTENT="text/html; charset=UTF-8">
</head>
<body>
<!-- Coded by John McCreesh using Bluefish and Tidy -->

  <table id="top" name="top" summary="" border="0" cellspacing="5"
  cellpadding="5">
    <tr>
      <td>
        <h2><font color="#184090">Abstracts of BOF Sessions -
        Thursday</font></h2>
      </td>
    </tr>

    <tr>
      <td><img src="group_blue.gif" width="52" height="17"
      alt="image" /></td>
    </tr>

<!-- Start Abstract -->
    <tr>
      <td>
        <table id="te1830" name="te1830" summary="Abstract" border="1"
        cellpadding="8" cellspacing="0" bordercolor="#000080">
          <tr>
            <td bgcolor="#184090">
            <font color="#FFFFFF"><strong>
		  Document Management System using OpenOffice.org 
		(BOF)</strong></font></td>
          </tr>

          <tr>
            <td>Marten Feldtmann
		<em></em></td>
          </tr>

          <tr>
            <td>
		This session shows the result of the support of
		OpenOffice and StarOffice within a Document Management
		System called "DokWorks", which has been developed
		over the last five years.
		<br>
		In this session we talk about problems, when using
		OpenOffice.org / StarOffice in a product - related
		to development or customer view.
		<br>
		We will show the result and how it has been done.
            </td>
          </tr>

          <tr>
            <td><em>Biography:
		Marten is former developer of the (out of business)
		company Phoenix EDV Systemtechnik, which developed
		the DMS system I mentioned above. I've done software
		development over the last 15 years in different
		categories using different languages.
            </em></td>
          </tr>
        </table>

        <p><a href="thursday.html"
        title="Agenda for Thursday">Back</a></p>
      </td>
    </tr>
<!-- End Abstract -->

<!-- Start Abstract -->
    <tr>
      <td>
        <table id="tg1830" name="tg1830" summary="Abstract" border="1"
        cellpadding="8" cellspacing="0" bordercolor="#000080">
          <tr>
            <td bgcolor="#184090">
            <font color="#FFFFFF"><strong>Native language project
            knowledge exchange (BOF)</strong></font></td>
          </tr>

          <tr>
            <td>Claus S&oslash;rensen, Sophie Gautier, Simon Brouwer
		<em>Leaders of Native Language Projects</em></td>
          </tr>

          <tr>
            <td>Every native language project (NLP) have some
            experience and knowledge about running their NLP which
            the other NLP leaders and contributors can benefit
            from.<br />
             How to motivate contributors, keep the "stakeholders"
            informed, attracting new contributors, arrange
            contributor events, inform the contributors of
            progress, manage missing response from
            contributors.</td>
          </tr>

          <tr>
            <td><em>Biography: Claus S&oslash;rensen is one of
            the main actors of the Free and Open Source Software
            community in Denmark where his is a boardmember of the
            Danish Unix User Group, the leader of the Danish native
            language OpenOffice.org project and also active within
            the OpenOffice.org marketing project.</em></td>
          </tr>
        </table>

        <p><a href="thursday.html"
        title="Agenda for Thursday">Back</a></p>
      </td>
    </tr>
<!-- End Abstract -->

<!-- Start Abstract -->
    <tr>
      <td>
        <table id="tp1830" name="tp1830" summary="Abstract" border="1"
        cellpadding="8" cellspacing="0" bordercolor="#000080">
          <tr>
            <td bgcolor="#184090">
            <font color="#FFFFFF"><strong>A Proper P2P Implementation
			for OpenOffice.org (BOF)</strong></font></td>
          </tr>

          <tr>
            <td>
						Sam Hiser <em>Co-Lead of the OpenOffice.org
            Marketing Project</em>
						</td>
          </tr>

          <tr>
            <td>
		We will survey the arena of Peer-to-Peer technologies
		and narrow the focus onto a few good P2P platforms that
		could be deployed to reduce bandwidth costs and
		increase scalability of distribution for the existing
		OOo system of servers and mirrors.<br>
		The recommendations will have important implications
		for the way the Ooo Community may be able to adapt
		its software <b>publishing</b> infrastructure to handle
		dramatic annual load spikes (associated with major releases)
		<b>while</b> reducing the cost burden shared by Sun,
		CollabNet and cooperating mirrors all across the global system.
		</td>
          </tr>

          <tr>
            <td><em>Biography:
		</em></td>
          </tr>
        </table>

        <p><a href="thursday.html"
        title="Agenda for Thursday">Back</a></p>
      </td>
    </tr>
<!-- End Abstract -->

<!-- Start Abstract -->
    <tr>
      <td>
        <table id="te1930" name="te1930" summary="Abstract" border="1"
        cellpadding="8" cellspacing="0" bordercolor="#000080">
          <tr>
            <td bgcolor="#184090">
            <font color="#FFFFFF"><strong>
		Legal Validity of Open Source licenses in Germany and Europe
		(BOF)
		</strong></font></td>
          </tr>

          <tr>
            <td>Dr. Axel Metzger <em>Director of the <a href="http://www.ifross.de">Institute for legal Questions on Free and Open Source Software</a>
            </em></td>
          </tr>

          <tr>
            <td>
		I will give a session on legal validity of Open Source
		licenses in Germany and Europe. We have in German legal
		reviews a rich debate on these questions.
		Our position is, that most clauses of the GPL and
		other Licenses are perfectly valid, while some clauses
		are not. But there are other opinions saying that the
		whole system of Open Source Licenses does not work
		in European Law.
		</td>
          </tr>

          <tr>
            <td><em>Biography:
		</em></td>
          </tr>
        </table>

        <p><a href="thursday.html"
        title="Agenda for Thursday">Back</a></p>
      </td>
    </tr>
<!-- End Abstract -->

<!-- Start Abstract -->
    <tr>
      <td>
        <table id="tg1930" name="tg1930" summary="Abstract" border="1"
        cellpadding="8" cellspacing="0" bordercolor="#000080">
          <tr>
            <td bgcolor="#184090">
            <font color="#FFFFFF"><strong>
		Towards more Interactive Presentations with OpenOffice.org
		(BOF)
		</strong></font></td>
          </tr>

          <tr>
            <td>Michael Reinsch, Cora Burger <em>University of Stuttgart
            </em></td>
          </tr>

          <tr>
            <td>
		An approach is presented which is currently implemented in
		the NUSS (Notebook University Stuttgart) project.
		Based on users carrying mobile devices and on
		wireless networks, it aims at a more interactive,
		collaborative way of presentations using OpenOffice.org.
		Especially when regarding the area of teaching, such
		increased interactivity is really indispensable
		as demonstrated by the following scenarios.
		<br>
		By distributing the presentation digitally to all
		participants, the page currently discussed is shown
		on everyone's notebook. Hence, each participant can
		add individual notes for later usage without any
		media discontinuity. For a more vivid presentation,
		the speaker can apply changes to slides
		during the talk (e.g. highlight or add something).
		After proper permission by the speaker, participants
		can append annotations being available to the public.
		Participants can send questions and remarks to the
		speaker without the need to interrupt the talk.
		<br>
		The required functionality is achieved by
		writing a suitable wrapper component in
		Java which profits from the OpenOffice.org API.
		To prevent from chaotic access by all participants,
		an existing infrastructure for role management and
		permissions is included. It allows different
		mechanisms and policies, e.g. a simple turn taking
		procedure under control of the speaker.
		As a whole, the presentation component of OpenOffice.org
		is enhanced by a collaborative mode.
		</td>
          </tr>

          <tr>
            <td><em>Biography:
		Michael Reinsch is currently studying Software Engineering
		at the University of Stuttgart. Cora Burger has a diploma
		in Mathematics from the University of Stuttgart and a PhD
		in Computer Science from the University of Karlsruhe.
		She is research assistant and lecturer at the Department
		Distributed Systems of the Institute for Parallel
		and Distributed Systems at the University of Stuttgart.
		</em></td>
          </tr>
        </table>

        <p><a href="thursday.html"
        title="Agenda for Thursday">Back</a></p>
      </td>
    </tr>
<!-- End Abstract -->

    </table>

  <table id="top" name="top" summary="" border="0" cellspacing="5"
  cellpadding="5">
    <tr>
      <td>
        <h2><font color="#184090">Abstracts of BOF Sessions -
        Thursday</font></h2>
      </td>
    </tr>

    <tr>
      <td><img src="group_red.gif" width="52" height="17"
      alt="image" /></td>
    </tr>

<!-- Start Abstract -->
    <tr>
      <td>
        <table id="tf1930" name="tf1930" summary="Abstract" border="1"
        cellpadding="8" cellspacing="0" bordercolor="#000080">
          <tr>
            <td bgcolor="#184090">
            <font color="#FFFFFF"><strong>
		Struggling with a C++-based component architecture (BOF)
		</strong></font></td>
          </tr>

          <tr>
            <td>Stephan Bergmann
		<em>Star Office Entwicklungs GmbH</em></td>
          </tr>

          <tr>
            <td>
		Historically, the code base that later became OOo
		was a large, rather monolithic C++ application.
		Then, some base layer of functionality was factored out,
		mainly to serve as a foundation for UNO-oriented processes
		(processes that host components which interact with other,
		distributed components within the UNO framework).
		For mostly technical reasons, that meant using C instead
		of C++ in some parts (mainly for APIs), and left us with
		a code base that is a mixture of C and C++. This state of
		affairs lead to a continuous stream of problems and frustrations
		when using or extending these base layers,
		and this talk will describe some of them, and explain how
		they can be solved.
		<br>
		First, I will give brief introductions to both the
		architecture of the OOo base layer under discussion
		(better known as the "UDK"), and the reasons why C++
		is often a better language than C when implementing or
		interfacing to some software component. Then, I will
		discuss some of the issues where the goals of the
		UDK collide with the use of C++, and what can be done about it:
		<br>
		<UL>
		<LI>Creating APIs that are robust against failure.
		<LI> Supporting process-global concepts like memory management.
		<LI> Using exception handling.
		<LI> Issuing improved versions of components while supporting
		a backwards-compatible, stable API.
		<LI> Building components that have minimal requirements
			on their hosting environment.
		<LI> Letting foreign components built with arbitrary
			C++ compilers use the UDK.
		<LI> Keeping the source code as platform-neutral as possible.
		</UL>
		</td>
          </tr>

          <tr>
            <td><em>Biography:
		Stephan works for Sun for well over five years now,
		developing software mainly in the base-libraries area
		of OpenOffice.org/StarOffice.
		Driven by a desire to build well-crafted software.
            </em></td>
          </tr>
        </table>

        <p><a href="thursday.html"
        title="Agenda for Thursday">Back</a></p>
      </td>
    </tr>
<!-- End Abstract -->
<!-- Start Abstract -->
    <tr>
      <td>
        <table id="td1930" name="td1930" summary="Abstract" border="1"
        cellpadding="8" cellspacing="0" bordercolor="#000080">
          <tr>
            <td bgcolor="#184090">
            <font color="#FFFFFF"><strong>
		A new Toolkit / Canvas for OpenOffice.org (BOF)
		</strong></font></td>
          </tr>

          <tr>
            <td>Thorsten Behrend
		<em>Star Office Entwicklungs GmbH</em></td>
          </tr>

          <tr>
            <td>
		The talk will present some concrete ideas and concepts
		for a new toolkit/canvas framework, to be used by
		the OpenOffice.org applications. The limitations of
		the current VCL-based approach will be outlined, and
		a migration path is sketched on how to gradually
		move OpenOffice.org towards using a native,
		platform-integrated and compelling UI.
		<br>
		<UL>
		<LI>Introduction
			<UL>
		 	<LI>Status Quo
		  	<LI>Other solutions
			</UL>
		<LI>Problems
			<UL>
		   	<LI>System integration
		    	<LI>Accessibility
		     	<LI>Look&Feel
			</UL>
		<LI>Possible solutions
		<LI>Migration paths
		<LI>Roadmap, outlook
		</UL>
		</td>
          </tr>

          <tr>
            <td><em>Biography:
	    After studying computer science at the University of Hamburg,
	    Thorsten Behrens has been working on OpenOffice.org/StarOffice
	    for two years by now, mostly in the areas graphics core
	    engines and accessibility. His main interests
	    include 2D and 3D computer graphics, as well as computer
	    vision and image analysis.
            </em></td>
          </tr>
        </table>

        <p><a href="thursday.html"
        title="Agenda for Thursday">Back</a></p>
      </td>
    </tr>
<!-- End Abstract -->
<!-- Start Abstract -->
    <tr>
      <td>
        <table id="papers" name="papers" summary="Abstract" border="1"
        cellpadding="8" cellspacing="0" bordercolor="#000080">
          <tr>
            <td bgcolor="#184090">
            <font color="#FFFFFF"><strong>
		Internationalization and Localization of
		OpenOffice.org - The Indian Perspective
		</strong></font></td>
          </tr>

          <tr>
            <td>Shikha G Pillai, Bhupesh Koli
		<em>Centre for Development of Advanced Computing
		(formerly NCST)</em>
						</td>
          </tr>

          <tr>
            <td>
India supports a culturally and linguistically diverse population,
majority of whom are excluded from the productive usage of information
technology due to the lack of standardized and economical
Indian language enabled software.
<br>
OpenOffice.org is the leading office productivity suite through
open-source initiatives, available with a rich feature set across
all main platforms, along with internationalization and localization
support for major International languages. This paper examines the
development aspects, usage and prospects of OpenOffice.org
internationalized and localized to cater to the Indian market.
<br>
Most Indian scripts originate from the Brahmi script and follow complex
rules of layout involving consonants, vowels, special symbols,
conjuncts and ligatures. Unicode encoding for Indian languages
establishes a similar pattern among the scripts. In this paper,
we will examine this pattern and how the orthographic rules can be
used to develop Complex Text Layout algorithms for Indian scripts.
Also explored are storage and rendering aspects of Indian text,
along with font technologies suitable for Indian scripts.
<br>
The Internationalization(i18n) and Localization(l10n) framework
of OpenOffice.org sets guidelines for localization and
internationalization work of the suite in other languages.
The project .BharateeyaOO.o. (http://www.ncb.ernet.in/bharateeyaoo)
commenced on the lines of these frameworks, to achieve Indian
language support in OpenOffice.org. With initiatives for
localizations in major languages of India, Complex Text Layout support,
Indian locales, dictionary support and collation algorithms,
the project aims at a completely <i>Indianized</i> office suite
packaged economically for the Indian user.
This paper concludes with an insight into the development,
implementation details and progress of this project.
						</td>
          </tr>

          <tr>
            <td><em>Biography:
						Shikha G Pillai and Bhupesh Koli are staff scientists at
						Centre for Development of Advanced Computing
    				(formerly NCST), Bangalore, researching in Indian
						language processing, script encoding, font technology and
						globalization aspects. They have been involved for the
						past 21 months, in the project .BharateeyaOO.o. for development
						of localization and internationalization support for major
						Indian languages in OpenOffice.org. Their work has been
						registered at
						http://l10n.openoffice.org/localization_responsibilities.html
            </em></td>
          </tr>
        </table>

        <p><a href="thursday.html"
        title="Agenda for Thursday">Back</a></p>
      </td>
    </tr>
<!-- End Abstract -->
    </table>

  <hr />

  <p><a href="thursday.html">Back to Thursday</a><br />
   <a href="#top">Back to Top</a><br />
   <a href="agenda2.html">Back to Overview</a></p>

  <p>Please Note: Program content subject to change.</p>
</body>
</html>

