﻿<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<title>The New Project Leads: Caio Tiago Oliveira de Sousa</title>
</head>
<body>
<div class="spaced13">
  <h2>The New Project Leads: Caio Tiago Oliveira de Sousa</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 Caio Tiago Oliveira de Sousa, the new co-lead of the <a href="http://qa.openoffice.org/" target="_blank">QA Project</a>, more or less the same questions I asked the others....</p>


<p>Other mini-interview in this series:</p>
<ul type="circle">
	<li><a href="new_leads_mb.html" target="_blank">Mathias Bauer, New Lead</a> of <a href="http://sw.openoffice.org/" target="_blank">Writer</a>, Co-Lead of <a href="http://framework.openoffice.org/" target="_blank">Framework</a></li>
	<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>
</ul>

<p> My full name is Caio Tiago Oliveira de Sousa, my OpenOffice.org account name and my IRC nick is asrail. I'm from Brazil (Salvador - Bahia) and I'm a student of Computing Science at the Universidade Federal da Bahia (<a href="http://www.portal.ufba.br/" target="_blank">UFBA</a>). I also have studied  Design at the Universidade do Estado da Bahia (<a href="http://www.uneb.br/" target="_blank">UNEB</a>), but I've left it. </p>

<p> I love programming, design, usability, and I like software engineering a lot. I've discovered some years ago that I like too much to help the people with their problems and doubts. Something occurred around march 04 I were an active member of the general users list. After spending a few months there, I've seen there were a lot of people able to help and I decided to look for other places were my help would be appreciated. </p>

<p> So I went to <a href="http://qa.openoffice.org/" target="_blank">QA</a>. Mainly confirming and closing issues, asking for info, etc. </p>

<p> I did a few CWS's (for Christian Lohmaier) and the rest for most of the OpenOffice.org versions to build on Debian/Ubuntu; the lack of time and the lack of invitations prevented me from doing more. </p>


<p> The QA project is responsible for the final quality of the released product. QA members act as a bridge between user requests and developers, filtering and gathering as much information as they can. Also QA members should run the basic tests for patch integrations and to run full tests before releasing a build, to ensure the functionality of the final product. l10n QA members should test the translation, fonts (for Japanese, Chinese, etc.) and to run the full tests to ensure nothing went wrong in their builds. </p>


<p> My main interest areas in QA are in usability and <a href="http://l10n.openoffice.org/" target="_blank">l10n</a>, so for the product as for the QA tools. I would like to see more efforts from the NL (<a href="/projects/native-lang.html" target="_blank">Native Language Confederation of projects</a>) and make it easier. </p>

<p> I'll focus in inter-operating with the NL teams, helping to translate documents, work to make easier to use the QA tools and receive the most feedback as I can. To show the importance of each NL to run the tests is also crucial. </p>

<p> A lot of people think it's hard to get involved, and to change their views, we can show them QA is a simple thing to do. At least, a lot of people would help just from running the automated tests on their machines and reporting the results. Just using and reporting the issues in the OpenOffice.org site, instead of just blaming on us, is another great help.  If you want to start, go to the <a href="http://qa.openoffice.org/" target="_blank">QA project website</a>. We have lots of information there.</p>

<p> From the other projects, QA members and developers can help each other. Most of the people who do <a href="http://wiki.services.openoffice.org/wiki/CWS" target="_blank">CWS</a> are developers, friends one another. To organize this structure is crucial, so the developers would just make the patches and the QA members would run the tests. Just a few ask in the QA list for volunteers--now! We shouldn't wait for this.  You can do this or ask for QA member to do it for you. </p>


<p> Well... to finish, I would like to say that I'm very happy with this new position and I'll make the best as I can. </p>


<hr />

<p>To learn more about the QA project, visit the <a href="http://qa.openoffice.org/" target="_blank">site</a>, look over the mail list <a href="http://qa.openoffice.org/servlets/SummarizeList?listName=dev" target="_blank">archives</a>, subscribe to the <a href="mailto:dev-subscribe@qa.openoffice.org" target="_blank">qa@openoffice.apache.org</a> list, and dive in!  I should add that the QA project is generally thought of as our starting point for contributors. It's where community members go to file bug reports, requests for enhancement (RFE), and so on. The project, in short, is very important.</p>

<p>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>
