<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>

<head>
  <title>OpenOffice.org Online Help</title>
  <meta name="GENERATOR" content="Quanta Plus">
  <meta name="AUTHOR" content="fpe@openoffice.org">
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  <link href="olh.css" type="text/css" rel="stylesheet">
  
  <script language="javascript" type="text/javascript">
  // <!--
  
  // -->
  </script>
</head>
<body>
<div class="contentarea">
	<div id="olh_header">
	OpenOffice.org Online Help
	</div>
	<div id="subheader">
		<div id="submenu">
			<div class="menuitem current" title="Introduction"><a href="index.html" class="nolink">Introduction</a></div>
			<div class="menuitem" title="Getting to know OOo Help"><a href="getstart.html" class="nolink">Getting Started</a></div>
			<div class="menuitem" title="How to get OOo Help"><a href="download.html" class="nolink">Downloading</a></div>
			<div class="menuitem" title="How to write OOo Help"><a href="author.html" class="nolink">Authoring</a></div>
			<div class="menuitem" title="How to report and fix bugs"><a href="bugfix.html" class="nolink">Bugfixing</a></div>
			<div class="menuitem" title="Older versions of the help"><a href="deprec.html" class="nolink">Deprecated Versions</a></div>
		</div>
		
	</div>
	<!--
	<div id="localmenu">
		<div class="menuitem">Help File Format</div>
		<div class="menuitem">Help File Sources</div>
		<div class="menuitem">Building Help</div>
		<div class="menuitem">Help Images and Icon Handling</div>
		<div class="menuitem">Help Authoring</div>
		<div class="menuitem">Help Localization</div>
	</div>
  //-->
	<div id="content">
	<h1>Changes in Version 2.0</h1>
	<img src="img/ooo_gulls.png" class="flowright">
	<p>Beginning with release 2.0 the online help for <span class="oooname">OpenOffice.org</span> underwent considerable changes 
	to allow for easier collaboration of the <span class="oooname">OpenOffice.org</span> community in creating, maintaining, 
	and improving the online help files</p>
	
	<p>All of these changes were introduced for several reasons:</p>
  
  <ul class="olh">
  	<li>to finally put all the help files to open source</li>
    <li>to allow easier collaboration of the community</li>
    <li>to allow for easier customization of the online help</li>
    <li>to streamline the build and localization processes to use well-defined and working processes</li>
   </ul>
	
	
	<h2>Help File Format</h2>
	<img src="img/kruler.png" class="flowright">
	<p>Before release 2.0, the help files were available in an unspecified, intermediate XML 
		format based on the <span class="oooname">OpenOffice.org</span> XML format. Now, the help files are migrated to a 
		well-defined, easy and concise XML DTD which was discussed on and is available 
		from <span class="oooname">OpenOffice.org</span>.<br>
		The new extension for all help files is .xhp </p>
  
  <h2>Help File Sources</h2>
  <img src="img/package_editors.png" class="flowright">
  <p>Before release 2.0, the nature of the help building process prevented the help 
  source files to be part of the product CVS repository.  Now, all help source XML files 
  are part of the product CVS and available in the helpcontent2 module.</p>
	
	<h2>Building Help</h2>
	<img src="img/package_development.png" class="flowright">
    <p>Before release 2.0, the binary online help files were built using a 
    complicated process inside Sun. Now, the help building process is part of the 
    building process of the application and in the hand of the release engineering. 
    Controlled by makefiles, online help can be built by using standard build and 
    make commands in the cvs module.</p>
	
	<h2>Help Images and Icons Handling</h2>
	<img src="img/kpaint.png" class="flowright">
    <p>Before release 2.0, the help file set contained screen shots and application icons in 
    its own archive making it necessary to duplicate each icon used in the application. This also 
    made it necessary to compile a separate help set for differently branded products 
    (like StarOffice and <span class="oooname">OpenOffice.org</span>).</p>
    <p>Now, all application icons that are used in the help 
    are taken from the central icon repository that is also accessed by the application itself 
    to fetch the icons. In this way, the help always uses the same icons as the 
    application avoiding inconsistencies.
    All images that are specific to the online help, like screen shots used in some help 
    files, are now in the helpimg folder of the res CVS module and are accessed by the help 
    in the same way as the icons.</p>
	
	<h2>Help Authoring</h2>
	<img src="img/ksig.png" class="flowright">
	  <p>Before release 2.0, authoring or editing the help files was virtually impossible 
	  for the community since the source files were not available.
    Now, there is an import and export filter for the <span class="oooname">OpenOffice.org</span> help file format 
    for <span class="oooname">OpenOffice.org</span>. Also, there is a set of macros that allows authoring and editing 
    of online help files right from within <span class="oooname">OpenOffice.org</span>.</p>
    
   <h2>Help Localization</h2>
   <img src="img/locale.png" class="flowright">
    <p>Before release 2.0, localization followed non-standard process that involved 
    many manual steps to extract and reintegrate content.
    Now, the localization uses the same process as the UI localization. All of this is 
    conducted by the release engineering. For more information about the UI/Help localization 
    process, please contact the corresponding release engineer 
    <a href="mailto:ihi@openoffice.org">Ivo Hinkelmann</a>.</p>
	
	</div>

	<div id="olh_footer">last modified Feb 3, 2006 &#045; The nuvola icon set by David Vignoni (http://www.icon-king.com)</div>

</div>
</body>
</html>
