<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
   "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>  
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<meta http-equiv="cache-control" content="no-cache">
<link rel="stylesheet" type="text/css" href="style/style2.css" media="screen" />

<script type="text/javascript">
//messages: set your own; use as many as you'd like; set up Hyperlinks to
//URLs as you normally do: <a target=... href="... URL ...">..message..</a>;
var singletext=new Array();
singletext[0]='<h3>Certification Wiki</h3><p>Feel free to <a href="http://wiki.services.openoffice.org/wiki/Certification">review the wiki</a> and get up to date to what we are doing.</p>';
singletext[1]='<h3>Beta tester needed</h3><p>Learn how can you become a beta tester for the certification.</p>';
//singletext[...]='...';
//-- end Parameters and message -->
</script>
<script src="js/grid-test.js"></script>
<title>Certification Project</title>
</head>
<body>
<script src="test/mreminder.js" type="text/javascript"></script>
<script type="text/javascript">start();</script>
<h1 class="header">Welcome to the Certification Project!</h1>


<p>Project Lead: <a href="mailto:jza@openoffice.org">Alexandro Colorado</a>, Co-Lead: <a href="mailto:evan.leibovitch@gmail.com">Evan Leibovitch</a>

<!-- The campaign class is taken directly from the homepage on the CSS link -->
<div class="campaign"><h2>Where to begin ?</h2>

	<p><a href="http://wiki.services.openoffice.org/wiki/Certification">The very active Wiki Page</a>, here we put all the things who most be change frequently</p>
</div>

<div class="homebox">
<h2>Mision of the Certification Project</h2>
<p> The OpenOffice.org Certification Project will develop and manage a
global skills-certification program through a network of training and
support partner organizations in both the private and public sector.
We will develop a set of skills standards as well as a flexible,
low-cost and culturally-neutral infrastructure for testing students
based on these standards. Our organizational partners will deliver the
tests and training, remitting a fee for every student that has
successfully passed their tests, and we will issue and maintain the
certifications. The program is designed to be operated on a
cost-recovery, non-profit basis (though we will certainly encourage
our partners to profit from the relationship with us). As a result
will will create a vibrant community of partners and advocates,
through a system that encourages private trainers while keeping OOo
programs competitive and relevant in local cultures and communities.
</p></div>

<div class="campaign"><h2>Help making the certification</h2>

	<p>Join us on our pre-sale of licenses and become an early bird partner of the certification project.<br />
	<a href="">More info.</a></p>
</div>


<div class="homebox">
<h2>News</h2>
<div onload="start();" style="width: 550px; height: 180px;">
<script language="JavaScript">if(document.layers){document.write('<ilayer id="ns4div" width="'+swidth+'" height="'+sheight+'" ><layer id="ns4div1" width="'+swidth+'" height="'+sheight+'" onmouseover="sspeed=0;" onmouseout="sspeed=rspeed"></layer></ilayer>')}
if(document.getElementById||document.all){document.write('<div style="position:relative;overflow:hidden;width:'+swidth+'px;height:'+sheight+'px;clip:rect(0 '+swidth+'px '+sheight+'px 0);" onmouseover="sspeed=0" onmouseout="sspeed=rspeed"><div id="iens6div" style="position:relative;width:'+swidth+'px;"></div></div>');}</script>
</div></div></div>
</div>

<div class="homebox">
<h2>What you'll find here</h2>

<ul>
<div class="MyBox">
	<div class="MyPicBox">
	<li>a more <a href="gen_index.html">general category</a> listing OpenOffice.org usage in schools and universities and documentation for developers</li>
	</div>

	<div class="MyPicBox">
	<li>examples of existing projects and applications involving both Education world and OpenOffice.org project guidelines ...</li>
	</div>
</div>
	<div class="MyPicBox">
	<li></li>
	</div>

	<div class="MyPicBox">
	<li>a <a href="http://wiki.services.openoffice.org/wiki/Education/Certification/Petition">
Statements</a> that define the project as they explain the way to evolve.</li>
	</div>
</ul>

<p>Most of our actions and discussions will take place on mailing lists, but you will find also several working places in the <a href="servlets/ProjectDocumentList">Document &amp; Files</a> area or on the wiki pages.<br>
Join us on the :</p>

<ul>
	<li><a href="http://certification.openoffice.org/servlets/ProjectMailingListList">dev@certification.openoffice.org</a> mailing list for development or localization of tools purposes</li>
</ul>

</div>
<script type="text/javascript">start();</script>
</body>
</html>
