﻿<html>
<head>
<title>Interview: Carlos Eduardo Dantas de Menezes</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<body>
<div class="spaced13">
  <h2>Interview: Carlos Eduardo Dantas de Menezes</h2>
  <p><a href="../lspintro.html">-Louis Suárez-Potts</a></p>
  <p >2006-05-17<br />  
  <p >  
  <p> Working in a large team, Carlos Eduardo Dantas de Menezes and his group recently completed a grammar checker for OpenOffice.org, which the Brazilian OpenOffice.org team has now made available for immediate download. It is a pluggable module written in Perl/Java that can be used from version 1.1.x as well as the 2.0.x versions and works with Brazilian Portuguese. </p>
  <p> The project, named CoGrOO (Corretor Gramatical acoplável ao OpenOffice), was developed by Prof. Carlos Menezes' team at USP - Universidade de São Paulo and by the Centro Universitário SENAC-SP--and partly funded by the government. (OpenOffice.org is used by millions in Brazil and is strongly promoted by the public sector.) I would hope that this grammar checker represents the first of many contributions by Brazilian developers, and in part to see the status of OpenOffice.org development in Brazil (and in part to stimulate it), I asked to interview Professor Menezes; he generously agreed, and the interview below was conducted over a period of several days via email.</p>
  <p><i>Tell us about yourself...</i> </p>
  I'm a 35 years-old professor; I teach Programming, Artificial Intelligence, and others subjects at two private colleges here in São Paulo, Brazil. I just began to train for Olympic Gymnastics (it's very funny!), and I intend to start my doctoral programme as soon as possible. I have been studying NLP for about 11 years, and OOo gave me opportunities to apply my studies.
  <p> <i>How did you get involved in OpenOffice.org? And who is included in your team?</i> </p>
  <p> Almost three years ago, I watched a Free Software Meeting, called "Semana de Software Livre no Legislativo". A speech which motivated and inspired me to begin this new FOSS project. I was convinced that a grammar checker was a required to migrate to Free Software, at least here in Brazil. And this area of knowledge, Natural Language Processing (NLP), is challenging and very interesting to study and research. </p>
  <p> So, I invited two friends to participate in this idea, Prof. Jorge Kinoshita, expert in NLP, and Prof. Laís do Nascimento Salvador, expert in formal languages and compilers. Prof. Kinoshita, because his experience in NLP, figured like project coordinator. </p>
  <p> We submitted our project to "Free Software Edictal/2003" of FINEP (a governmental agency that sponsors strategic projects). There were about 300 projects submitted; about 30 were aproved, including CoGrOO. </p>
  <p> I guess it's fair to cite all collaborators of project (I know it's boring, but I want all in the team to receive credit): </p>
  <ul type="circle">
    <li>Prof. Dr. Jorge Kinoshita, coordinator, technical manager, Grammar Checker server's programmer.</li>
    <li>Prof. Dr. Laís Salvador, documentation manager, grammar rules writer.</li>
    <li>Prof. MSc. Carlos Menezes, technical analyst, GUI's programmer, installer's programmer.</li>
    <li>Sueli Uliano, linguist, grammar rules writer.</li>
    <li>William Colen Silva, Grammar Checker server's programmer.</li>
    <li>Marcos Oku, Grammar Checker server's programmer.</li>
    <li>Fábio Gusukuma, Grammar Checker server's programmer.</li>
    <li>Marcelo Suzumura, Grammar Checker server's programmer, installer's programmer.</li>
    <li>Fábio Blanco, GUI's programmer, installer's programmer.</li>
    <li>Edgard Lemos Jr., GUI's programmer.</li>
    <li>Bruno Sant'Anna, OOo interface programmer.</li>
  </ul>
  <p><i>How did you develop the grammar checker? And did you consider making it proprietary? It's a fair question: here, at least, a grammar checker is desirable by many companies.</i> </p>
  <p> CoGrOO follows traditional client-server architecture: server written in Perl language; listens to a socket port and answers its checker requisitions; client is a short piece of Java code that talks with OOo and sends paragraphs to server. Grammar Checker Server's architecture is very modular: pre-processor, part-of-speech tagging, chunker, grammatical relation finder, error-rules applier (see <a href="http://cogroo.incubadora.fapesp.br/portal/down/Doc/LREC_2006.pdf" target="_blank">http://cogroo.incubadora.fapesp.br/portal/down/Doc/LREC_2006.pdf</a>). We intend to deliver 2 versions of CoGrOO: one of them will be free, and the other one, proprietary. Some successful free software projects follows this strategy, like Wine/CodeWeavers, Fedora Core/Red Hat Linux, OpenOffice.org/StarOffice, etc. Another plan: we intend CoGrOO will be the grammar checker standard to OOo. We could port it to English language, for example, if we had volunteers and some resources. </p>
  <p> <i>What would be required to port it to English or any other language?</i> </p>
  <p> CoGrOO has language-dependent and language-independent parts. For example, to port it to English, we need to build a part-of-speech tagger and a chunker of phrases; in CoGrOO, these parts are statistically trained, so, morpho-syntactic annotated corpora are needed, but these resources are very expensive (see, for example, <a href="http://catalog.elda.org:8080/index.php?language=en" target="_blank">http://catalog.elda.org:8080/index.php?language=en</a> or <a href="http://www.ldc.upenn.edu/Catalog/" target="_blank">http://www.ldc.upenn.edu/Catalog/</a> ). Maybe someone can say: “Use a free corpus”, but there are few and small corpora (<a href="http://www.grsampson.net/Resources.html" target="_blank">http://www.grsampson.net/Resources.html</a>). CoGrOO detects errors by using a handwritten rule set (Brazilian CoGrOO uses about 100 rules), then, we need linguists to write these rules and check their possible side-effects. Finally, CoGrOO needs sponsor to developers. </p>
  <p> <i>As a professor, are you teaching OpenOffice.org coding (how to code for OOo) to your students?</i> </p>
  <p> Unfortunately, no. To inspect OOo codes requires great maturity in programming. But, 2 students of mine are CoGrOO's programmers. </p>
  <p> <i>Have you considered teaching students how to work on addons, plugins, etc?</i> </p>
  <p> No. I'm not sure that it's a good approach. Honestly, I have to analyse this idea better. </p>
  <p><i> If so, how have you organized the students and the course work? For instance, do your students work on the OOo project? If so, how? and if not, why not?</i></p>
  <p> I try to invite good students to participate in our project. </p>
  <p> <i>Are they interested? </i></p>
  <p> Yes! These 2 students considered  OOo programming challenging and accepted the task. </p>
  <p> We recently created a new <a href="http://education.openoffice.org/" target="_blank">Education Project</a>; Sophie Gautier and I are the leads, and the project is focused on development. We'd be happy to work with you, though the primary language will have to be English, as it is related to development. </p>
  <p> Could you explain this to me better? </p>
  <p><em> Yes. The idea is to track work being done in computer science classes and to help those classes in using OOo as a training/learning vehicle. For instance, one could learn C++ or architecture via OOo; or localization strategies; whatever. We could store the course programme (syllabus) on the site for others to add to, etc. </em></p>
  <p> Good! </p>
  <p><i> In conversation at <a href="http://chopin.softwarelivre.org/6.0/" target="_blank">fisl 6.0</a> last year, you mentioned that there were very few OpenOffice.org developers in Brazil. Is that still the case? What can be done to encourage more OOo developers? </i></p>
  <p> As I said to you last year, there are many Brazilian collaborators working in the OOo project, and they are mainly doing translations (it's a great job!). But, there are very few programmers. I would guess initiatives like "Free Software Edictal/2003" of FINEP and <a href="http://code.google.com/soc/" target="_blank">Google Summer of Code</a> can give a boost to this deficiency. </p>
  <p> <i>Yes. Can you speak more about Free Software Edictal/2003?</i> </p>
  <p> This Edictal made available a budget of R$ 4 millions (or almost US$ 2 millions, now) for free software projects that were of importance to companies. “Companhia do Metropolitano de São Paulo”, a mass transport company here in São Paulo, was pioneer at StarOffice/OOo migration several years ago. This company was interested in CoGrOO. About 30 projects were approved (out of 300 were submitted). We bought some computers and contracted programmers and a linguist with the funds. </p>
  <p> <i>What more can OOo or Google do? Is money the real inducement? or is something else needed? </i></p>
  <p> Unfortunately, I suppose money is essential. There are many interested professionals and students, but they need to earn money to live. Because this inducement, Google is successful. </p>
  <i>As well, as you probably know, OOo accepts any number of extensions and these can also be Java extensions. Would that change things? </i>
  <p> Maybe. Using UNO interface to extend it can do OOo hacking more popular. But, UNO interface is limited. You can not do everything with it. It's one of CoGrOO's difficulties, because there is none API to draw a wavy line under a word, for example. We need to write the API.</p>
  <p> <i>Have you raised this issue with the API project?</i></p>
  <p> No. Many developers and I posted this problem at <a href="mailto:dev@lingucomponent.openoffice.org" target="_blank">dev@lingucomponent.openoffice.org</a>. The answer of Sun's guys were about: “..excuse me, we are very busy with releasing of OOo 2.0. Wait for OOo 3.0.” And I agreed with them. There was much work to do! So, we decided we had to do something. </p>
  <p><i> Recently--on 1 May--the ISO (International Organization for Standardization) <a href="//press/iso_pr.html" target="_blank">approved</a> a draft of the OpenDocument format, which OOo uses; it will be ISO/IEC 26300. Many governments will only consider ISO standards and so this approval carries a great deal of weight. Has it affected the perception of OOo yet? Do you think it will? </i></p>
  <p> Not yet. But I guess it will. </p>
  <p><i>President Lula has made strong statements about Livre software (FOSS), as have the presidents of Venzuela and Bolivia and others in South America. But is FOSS something known among developers? How is it conceived? </i></p>
  <p> FOSS is an unknown subject to developers, yet. But it's changing, because universities have given students opportunities to know FOSS's philosofy and practice. We can't ignore the Internet strength to spread FOSS's principles. </p>
  <p> <i>Do you have any suggestions how we can better advertise FOSS to university students? </i></p>
  <p> Advertise FOSS to professors (they are opinion makers)! It's what the great companies do! </p>
  <p> <i>What can we do to encourage more FOSS development and investment in Brazil? </i></p>
  <p> Share the news of successful projects made in Brazil! We had great projects like <a href="http://www.windowmaker.info/" target="_blank">Window Maker</a>, <a href="http://www.kuruminlinux.com.br/" target="_blank">Kurumin Linux</a> distro; the maintainer of Linux kernel (version 2.4) is Brazilian, etc. We have to share the news of what is happening in Brazil at events and elsewhere!</p>
  <p><em>Thanks!</em></p>
</div>
<br />
<hr />
<a href="index.html">Return to Articles</a>
</body>
</html>
