<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<title>The New Project Leads</title>
</head>
<body>
<div class="spaced13">
  <h2>The New Project Leads: Mathias Bauer </h2>
  <p>2007-01-04</p>
  <p>-<a href="htp://homepage.mac.org/luispo">Louis Suárez-Potts</a></p>
  <br />
<p>Late last year, the leadership of several important core <a href="/projects/accepted.html" target="_blank">projects</a> changed hands. Some of the new leads have been leads in other projects and take on new responsibilities; others are new to the job. What does a project lead do? That depends on the project, but it's usually considered role that combines administrative, managerial, and leadership duties, and represents a very high level of trust.  The project leads for the accepted technical projects are in particular important to OpenOffice.org, for they are largely responsible for what makes up the source to the application, as well as for reaching out to developers. </p>
The following set of short interviews, of which this is the first (others will follow over the next week), is meant to introduce them to the community.  As with all of OpenOffice.org's leads, they are open to the community and welcome developer interest and contact. </p>
<p> I  asked Mathias Bauer, a longtime developer for Sun and formerly lead of the <a href="htp://framework.openoffice.org/" target="_blank">Framework Project</a> at OpenOffice.org (he's now co-lead there), regarding his new role as lead of the <a href="http://sw.openoffice.org/" target="_blank">SW (Writer)</a> project.</p>

<p>Other mini-interview in this series:</p>
<ul type="circle">
	<li><a href="new_leads_cd.html" target="_blank">Carsten Driesner, New Lead</a> of the <a href="http://framework.openoffice.org/" target="_blank">Framework Project</a></li>
	<li><a href="new_leads_fm.html" target="_blank">Frank Meies, New Co-Lead</a> of <a href="http://sw.openoffice.org/" target="_blank">Writer</a></li>
	<li><a href="new_leads_mn.html" target="_blank">NAKATA, Maho, New Lead</a> of <a href="http://qa.openoffice.org/" target="_blank">QA Project</a></li>
	<li><a href="new_leads_cds.html" target="_blank">Caio Tiago Oliveira de Sousa</a>, New Co-Lead of <a href="http://qa.openoffice.org/" target="_blank">QA Project</a></li>
</ul>


<p> <i>How long have you been involved with developing OpenOffice.org? </i> </p>


<p> If you also count <a href="http://www.sun.com/staroffice/" target="_blank">StarOffice</a> development: nearly 12 years. </p>

<p> <i>What does the <a href="http://sw.openoffice.org/" target="_blank">SW (writer)</a> project do? </i> </p>


<p> The sw project delivers the text processing (Writer), formula editing (Math) and some linguistic components to OpenOffice.org. The code is written in C++ and beneath the core components it contains some filters for e.g., Word, Word Perfect, HTML, RTF, etc. </p>


<p> <i>Where do you see the challenges? </i></p>

<p> The most challenging tasks to do are: </p>

<ul type="circle">
	<li>refactoring of the code base</li>
	<li>interoperability</li>
	<li>usability in some of the very complex and powerful features</li>
</ul>

<p> <i>How can interested developers contribute? </i> </p>

<p> We invite all interested developers to work together with us on the things we are doing currently: </p>
<ul type="circle">
	<li>interoperability</li>
	<li>usability</li>
	<li>performance</li>
	<li>stability and code refactoring</li>
	<li>fixing bugs</li>
</ul>

<p> But we also invite developers who want to scratch their own itch. You should get in touch with us if you have an idea about something you wanted to implement in one of the components in the sw project but don't know how to do it. </p>

<p> We are currently redesigning our project site. For now the best way to contact us is the dev@sw.openoffice.org mailing list. </p>

<hr />

<p> To learn more, visit the <a href="http://sw.openoffice.org/" target="_blank">project</a>.  You should also consider subscribing to the mail list (<a href="mailto:dev-subscribe@sw.openoffice.org" target="_blank">dev-subscribe@sw.openoffice.org</a>); review the <a href="http://sw.openoffice.org/servlets/SummarizeList?listName=dev" target="_blank">archives</a>, then dive in!</p>

<p>And developers--and just about anyone else interested--can start learning more about OpenOffice.org by visiting our <a href="http://wiki.services.openoffice.org/wiki/Main_Page" target="_blank">wiki</a></p>

</div>
<br />
<hr />
<a href="index.html">Return to Articles</a>
</body>
</html>
