<html><head>
	<title>Abstracts for Keynote Presentations</title>

	<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
	<link rel="stylesheet" href="conference.css" media="screen" type="text/css" />
	<!-- >
	$Id: keynote.html,v 1.6 2004/09/08 15:45:45 st Exp $
	< -->
</head>

<table id="top" name="top" summary="" border="0" cellspacing="5" cellpadding="5">
	<tr><td><table width="100%" summary="" ><tr>
			<td><img src="../conference/group_blue.gif" width="52" height="17" alt="image" /></td>
    		<td><h2>Abstracts for Keynote Presentations</h2></td></tr>
	</table></td></tr>

	<tr>
		<td>
			<table id="K1" name="K1" summary="" border="1" cellpadding="8" cellspacing="0" bordercolor="#000080">

				<tr>
					<td class="general">
						<strong>OpenOffice.org and Software Freedom - Pioneering a Uniting
						Philosophy</strong>
					</td>
				</tr>

				<tr>
					<td>Simon Phipps <em>Sun Microsystems</em></td>
				</tr>

				<tr>
					<td>"Open source development, collaborative standards creation, the Java community,
					web services - each of these have been motivated by the desire for software freedom,
					and all have been consequences of the world becoming 'massively connected'. But each
					phenomenon has stood alone as its respective community has striven to achieve its goal
					of freedom through community. This session considers the origins of the 'massively connected'
					phenomenon, compares the approaches to promoting software freedom described above and
					proposes a new model exemplified by OpenOffice.org"
					</td>
				</tr>

				<tr>
					<td><em>Biography: Simon Phipps speaks frequently at industry events on technology trends
					and futures. At various times he has programmed mainframes, Windows and on the Web.
					Currently the Chief Technology Evangelist at Sun Microsystems, Inc., he was previously
					involved in OSI standards in the 80s, in the earliest commercial collaborative conferencing
					software in the early 90s, in introducing Java and XML to IBM and most recently with Sun's
					open source strategy. He lives in the UK, is based at Sun's Menlo Park campus in California
					and can be contacted via <A HREF="http://www.webmink.net">http://www.webmink.net</A>.</em>
					</td>
				</tr>

			</table>

			<p><a href="thursday.html" title="Agenda for Thursday">Back</a></p>

			<table id="K2" name="K2" summary="" border="1" cellpadding="8" cellspacing="0" bordercolor="#000080">

				<tr>
					<td class="general">
						<strong>Assessment, prospects and lesson of the adoption of OOo
						by the French administrations </strong>
					</td>
				</tr>

				<tr>
					<td>Christian Hardy <em>Chief of Information System Departement, Minist&egrave;re de l'Economie,
					des Finances et de l'Industrie- Direction de la Pr&eacute;vision</em><br />
					and<br />
					Christophe Cazin <em>Ing&eacute;nieur Charg&eacute; Strat&eacute;gie Technique, Minist&egrave;re de l'Int&eacute;rieur,
					de la S&eacute;curit&eacute; Int&eacute;rieure et des Libert&eacute;s Locales</em>
					</td>
				</tr>

				<tr>
					<td><p>Using examples from the Ministry of Finance and the Ministry of the Interior,
					the presenters will describe how Openoffice.org was introduced into the French Administration.</p>

					<p>The presentation will include:</p>

					<UL>
						<LI>a description of the problems encountered,
						<LI>the reasons for these difficulties,
						<LI>proposals for next steps, and
						<LI>lessons learned on successful strategies for the introduction of OOo.
					</UL>

					<p>Lastly, the presentation will look at current position in the
               French Administration as a whole
					and the outlook for the coming year, taking into account
					the recent announcements from the office of the Prime Minister. </p>
					</td>
				</tr>

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

					<p><em>Christian Hardy: Volunteer in Fr_project from Summer 2002. He is the author of the first
					report that recommended the use of OOo in a French Administration. He also led the trial of
               using OOo in one of the most important Administrations of the Ministry of Finance. </em></p>

					<p><em>Christophe Cazin :  </em></p>
					</td>
				</tr>

			</table>

			<p><a href="thursday.html" title="Agenda for Thursday">Back</a></p>

			<table id="K5" name="K5" summary="" border="1" cellpadding="8" cellspacing="0" bordercolor="#000080">

				<tr>
					<td class="general">
						<strong>The Apache Software Foundation - not just about code ! 
						</strong>
					</td>
				</tr>

				<tr>
					<td>Dirk-Willem van Gulik <em> President Apache Software Foundation</em>
					</td>
				</tr>

				<tr>
					<td>
<p>
Apache code dominates most of the worlds web infrastructure; grown
	from the tiny Apache Web server we now have over a thousand
	developers working on nearly a hunderd projects covering a
	wide range; from Cocoon to  Spam Assassin, from Xerces to
	Geronimo to name but a few. In this talk we'll aruge that
	it is not the code which matters but the community, its
	custom, its mores and to some extent its legal framework.
</p>
					</td>
				</tr>

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

					<p><em>
Dirk-Willem van Gulik is currently the President of the Apache
	Software Foundation and has served on the board since its
	creation. He has 15 years of Internet engineering, consulting and
	projects management experience. He has worked for the JRC, the
	United Nations, telecommunications firms and several satellite and
	space agencies. He participated to different international
	standards bodies, such as the IETF, on metadata, GIS and Internet
	standards.  Dirk-Willem is one of the founders of
	www.asemantics.com; a leader in the Enterprise Information
	Integration field which is focusing on making the Semantic Web a
	reality. As such he is involved with the standards processes in
	for example the W3C around RDF, FOAF, URNs, RfID and RDQL whith
	Federated Enterprise Information integration as his specaility.
</em></p>

					</td>
				</tr>

			</table>

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

			<table id="K3" name="K3" summary="" border="1" cellpadding="8" cellspacing="0" bordercolor="#000080">

				<tr>
					<td class="general">
						<strong>K3 Title</strong>
					</td>
				</tr>

				<tr>
					<td>K3 Name <em>K3 Job Title and Company/Affiliation</em></td>
				</tr>

				<tr>
					<td>K3 Abstract</td>
				</tr>

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

			</table>

			<p><a href="friday.html" title="Agenda for Friday">Back</a></p>

			<table id="K4" name="K4" summary="" border="1" cellpadding="8" cellspacing="0" bordercolor="#000080">

				<tr>
					<td class="general">
						<strong>K4 Title</strong>
					</td>
				</tr>

				<tr>
					<td>K4 Name <em>K4 Job Title and Company/Affiliation</em></td>
				</tr>

				<tr>
					<td>K4 Abstract</td>
				</tr>

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

			</table>


-->
      </td>
    </tr>
  </table>

  <hr />

  <a href="thursday.html">Back to Thursday</a><br />
  <a href="friday.html">Back to Friday</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>
