<html><head>
<meta HTTP-EQUIV="content-type" CONTENT="text/html; charset=UTF-8">
</head>
<body>

<h2> Community Articles: 
  Opinions, Interviews, Analyses</h2>
<p><a href="//lspintro.html" target="_blank">-Louis Su&aacute;rez-Potts</a></p>
<p>19 May 2001</p>
<br>
<p><b>Interview: Kevin Hendricks</b>

<p>As many in the OpenOffice.org community know, Kevin Hendricks is one of the staunchest supporters of and one of the most prolific contributors to OpenOffice.org. He can be "found" most often in the <a href="http://printing.openoffice.org/printing-dev/" target="_blank">porting list</a>. Last week, I initiated an email interview with him, on Open Source, the Mac OS X port of OpenOffice.org software, and the process of contributing work in OpenOffice.org. 
<br><br>

<p><i>I'd like to begin with a short background question. Something along the lines of, "Tell us something about yourself." When answering this question, feel free to include anything that you think might be encouraging or interesting to other community members.</i>

<p>In my real life, I am an Associate Professor of Operations and Information Technology at the <a href="http://www.ivey.uwo.ca/" target="_blank">Richard Ivey School of Business, University of Western Ontario</a> in London, Ontario Canada. I have degrees in Electrical Engineering (BS.EE, MEng EE) and in Operations and Information Technology  (MBA, MS, and PhD degrees) all from <a href="http://www.ivey.uwo.ca/" target="_blank">Cornell University</a>. 

<p>I started out life in the EE labs at Cornell playing with <a href="http://www.telnet.hu/hamster/pdp-11/" target="_blank">PDP 11s</a> and <a href="http://ourworld.compuserve.com/homepages/steve_kifowit/fft.htm" target="_blank">fast Fourier transforms</a> in 1979. Much of my time was spent loading paper tapes, playing "Adventure", "<a href="http://codenautics.com/wumpus/" target="_blank">Wumpus</a>", and "Trek" on early boxes.

<p>I have been using Unix for my research since then. I prefer Macs and got involved with <a href="http://www.mklinux.org" target="_blank">MkLinux</a> and <a href="http://www.linux.org" target="_blank">Linux</a> on the PowerPC [the Macintosh CPU--ed.] when they appeared.

<p>My first adventure in volunteering came when I joined <a href="http://www.blackdown.org/" target="_blank">Blackdown</a> (Sun's <a href="http://java.sun.com/products/jdk/1.1/" target="_blank">JDK</a> Linux porting effort), to bring my rusting programming skills back up to date.<br><br>


<p><i>How long have you been involved with OpenOffice.org? And, what made you interested in the project to begin with?</i>

<p>I really need a good office package to write my research on. I tried the others out there but was disappointed in their ability to correctly import M$ (Microsoft) Office docs. I played around with <a href="http://www.sun.com/staroffice/" target="_blank">StarOffice</a> on my Sun box at work and liked it. So I decided last year to help the OpenOffice.org project's already ongoing efforts to port it to <a href="http://www.ppclinux.com/" target="_blank">PPC Linux</a>.<br><br>

<p><i>You are one of the more active participants in the porting project (though your participation is by no means limited to that project), and the porting project has the nice distinction of being probably the most active project in OpenOffice.org.  Would you want to describe what it is you are engaged in doing for the project? I think that the impressive work you have done in porting the code to Linux PPC and in helping to keep interest in the <a href="http://www.apple.com/macosx/" target="_blank">Mac OS X</a> port alive merit attention.</i>

<p>I originally helped complete the <a href="http://porting.openoffice.org/linuxppc/ppclinks.html" target="_blank">PPC Linux port</a>.  That port is now basically complete and in maintenance mode.  Since I use OpenOffice.org for writing research papers, I am interested in helping to fill the "gaps" to get something stable and working out there as soon as possible.  I have recently begun work on getting both a spell checker and <a href="http://porting.openoffice.org/porting-dev/msg02015.html" target="_blank">thesaurus</a> integrated into OpenOffice.org.

<p>Being a Mac user and an old MkLinux fan, I am also very interested in getting a working OpenOffice.org port for Mac OS X out there.  I personally believe that without a viable alternative to Microsoft (MS) Office, Apple will always be a prisoner to MS' whims (i.e., if MS pulled the plug on Office for the Mac, many users would be forced to move to other platforms).  Luckily Patrick [Luby; see his <a href="http://porting.openoffice.org/mac/luby.html" target="_blank">interview</a>--ed.] has done a huge amount for the port and hopefully a few volunteers from Apple or <a href="http://www.publicsource.apple.com/projects/darwin/" target="_blank">Darwin</a> will step in to help support that project.<br><br>


<p><i>Related to the above, the OS X port has created some fair interest in the Mac community. I would like to see some more movement in the port development, however. How would you suggest we should go about eliciting more interest and in moving those who are interested into becoming active contributors to the OS X port? (For what it is worth, I followed your suggestions and sent notices to the OS X developer <a href="http://osx.macnn.com/" target="_blank">forums</a>.)</i>

<p>Work with Stan Shebs <shebs@apple.com> of Apple/Darwin--he is a longtime <a href="http://sources.redhat.com/gdb/" target="_blank">GDB</a> and <a href="http://gcc.gnu.org/" target="_blank">GCC</a> developer--to work out the compiler and linker issues so that the forthcoming <a href="http://gcc.gnu.org/ml/gcc/2001-02/msg00403.html" target="_blank">GCC 3.0</a> will not have many of the hurdles that make the port to Mac OS X at present so difficult.  The compiler/linker issues alone are enough to make a new developer pull his/her hair out.  Perhaps we could get Patrick and Stan together for some work for a short while.

<p>Also, the OpenOffice.org site needs to have some recent screenshots up there to show people how full-featured and complete the current [build of] OpenOffice.org really is. They should be featured on the main page. Many Darwin/Mac OS X developers have never used Star Office and if they have, may have hated how it took over the complete desktop. Getting new screen images up there would really help.<br><br>

<p><i>And, would you consider either becoming the project lead of a Mac OS X porting project (or sub-project) or helping us (the community) find a suitable project lead?</i>

<p>I would certainly help whomever becomes the Mac OS X project lead and has tried to build interest. But currently the state of the compiler tools and linker makes the porting work quite frustrating. I strongly recommend getting in touch with Stan and finding out to what extent we can get all of the tools issues resolved in time for gcc-3.0 or soon after.<br><br>

<p><i>I'd like to turn now to the slightly more abstract issues. Namely, those having to do with motivation within Open Source communities. So: What do you hope to gain from your participation in this project (or for that matter, in any of the other many Open Source projects in which you are involved)?</i>

<p>I do this for a couple of reasons. Primarily [these reasons include] filling a need (I need a good OpenOffice.org for my research), updating my skills to become current (my old APL, PL/I, and Fortran, along with 8080 assembler were getting a little rusty ;-)), and because I find programming personally very satisfying (where else can you get immediate feedback these days!).<br><br>

<p><i>I want to return to this question about motivation because I want to address the hanging question of what drives developers in Open Source projects. For instance, there is, as you know, the prevailing belief--right or wrong--that Open Source developers don't work within a money economy but within a so-called gift economy. Others, more pragmatically inclined, believe that the Open Source developer works chiefly to satisfy an "itch," that is, to address a problem that is bugging him or her. Obviously, I can't have you speak for the community, but if you could discuss your own motivations (and I recognize that you addressed some of these points above).</i>

<p>They are a mix of both. OpenOffice.org does scratch an itch for me. But I also welcome feedback and positive reinforcement. One thing OpenOffice.org does not have is a strong single leader. Therefore, many times people's efforts go unnoticed or unguided and frustration slips in. It is sometimes hard to get feedback from Hamburg in a timely manner. [Hamburg is where most of the OpenOffice.org key committers are located--ed.]  Perhaps, a front person from Hamburg should join the porting list to act as a facilitator to get communication and feedback moving better. 

<p>Understand, developers will find building OpenOffice.org hard for a number of reasons:
<ol>
	<li>constantly huge changes to the source base
	<li>the lack of up-to-date or clear documentation
	<li>the sheer size of the project
	<li>the unusual build tools
	<li>the length of time to actually do a build
	<li>the fact that it is full-blown C++ with templates and exceptions, and STL, and "components," making the code much harder to read and understand
	<li>comments in German
	<li>the source code is not well documented, to say the least, and often lacks the usual comments above every method that briefly describe what it does (and not just comments for public methods in header files).
</ol>

<p>All of these make for a very, very big challenge.

<p>What you really need is for things to be more along the lines of Thomas Lange's wonderful How-To for the <a href="http://sw.openoffice.org/drafts/linguistic_howto.html" target="_blank">Spell Checker implementation</a>. He made it brain-dead easy to add spell-checker support without having to understand the complete code around building and registering "components."

<p>A few more things like that for small, focused projects would certainly help build successes for new developers.

<p>The key is getting developers excited by the great things OpenOffice.org has to offer.  Once involved, and with a few early successes, we (OpenOffice.org) should be able to build a larger developer base.<br><br>


<p><i>The other more or less abstract issue that I am hoping you could address relates to what might be considered to be another central problematic of Open Source operations: the process by which contributions are incorporated into the whole. At present, OpenOffice.org uses IssueZilla and a fairly simple method for dealing with community contributions. However, the project is growing rapidly and will grow even more rapidly (I hope). Do you have any suggestions as to how the process might be improved?</i>

<p>I think for an Open Source project to be truly effective, it needs clear and strong leadership.  That leadership need not be confined to a benevolent dictator (as in the case of the Linux kernel) but can revolve through a set of interested individuals (release or project managers), with the backing of an oversight board.  I think the <a href="http://gcc.gnu.org/" target="_blank">GCC</a> project with its steering committee and release managers is a good illustration of this idea in action.

<P>Also, the recently promoted idea of having "supported builds" is a good one. It will help to greatly improve release stability, as would having the Hamburg developers using the same build process as the rest of us.

<P>Also, a priority list of "gaps" to be filled might help focus improvements while providing a way for new developers to get involved (spell checking, thesaurus, help system, etc.).



<p><a href="./editors.html">Previous Articles  </a></p>
</body>
</html>

