Interview with Giuseppe Castagno, developer - Ninja

Interview with Giuseppe Castagno, developer

Posted by Andrew Z at Saturday, February 2, 2008 | Permalink

We thank developer Giuseppe Castagno for implementing several PDF-related enhancements in and for his time for this interview on January 29, 2008. 

Andrew: Could you tell us about yourself?

Giuseppe: Well, I'm 51 years old and I've been designing hardware for the last 25+ years---mainly in the domain of industrial control (hard real time stuff).

Andrew: How did you become involved in open source? With as a user? With as a developer?

Giuseppe: I began to use OOo in 2003 when my brother signaled it to me. I was thrilled to have an alternative to other Office programs, especially when I learned that I can see how the code worked and possibly enhance it.  I started around 2004 to build it under Windows, but I waited till 2006 before being involved with upstream code development.

Andrew: You said you have been a hardware designer.   Did you learn software development just for OOo?

Giuseppe: No, I began writing software in assembler to test the hardware stuff I designed, or tested. For early micro as 8080, Z80, some others no longer on the field.  Then from assembler came others languages such as C and then in 1993 C++.

Andrew: How did you become interested in OOo's PDF features?

Giuseppe: I began using PDF in 2000/2001. So the first thing I liked of OOo was the ability to export in PDF format,  but I think it missed some functionality. At first I added them using a Java app scanning the OOo document and then generating the PDF through Ghostscript. But when OOo 2.0 came out I though it would be a good idea to work directly upstream.

Andrew: For OOo 2.4.0, how did you choose the enhancement and feature issues PDF/A export (59651) , relative links in PDFs (56629), and slide titles as PDF bookmarks (40318) as priorities over other issues?

Giuseppe: Well, about PDF/A (59651) I asked the OOo gsl project head about the implementation. Some of the PDF/A related stuff was already put in the code during former phases of developing. Last July I was asked is I could do that and I accepted. About 56629 (links) and 40318 (Impress+Draw bookmark), I've been using a patch of my own for 56629 since mid 2006, last year, by means of some of OOo users that wrote me about this issue.  I thought I perfected it sufficiently to be proposed upstream. Issue 40318 was something I came across while working for 56629.

Andrew: The PDF/A support in OOo 2.4.0 includes both PDF/A-1a and PDF/A-1b, correct?   And the difference is only the PDF tags, correct?  It seems OOo 2.4.0 requires the tags, so in practice it only makes PDF/A-1b.

Giuseppe: Yes, it's PDF/A-1a in 2.4, basically PDF/A-1a it's PDF/A-1b plus tags plus other stuff I don't remember right now. In the end, it's around three months since I finished, and I tend to forget the code I wrote. Every time someone asks for information, I'll have to look at the PDF/A-1 ISO spec.

Andrew: I take Einstein's advice: "Never memorize what you can look up." :)

Andrew: Issue 56629 you added has 40 votes making it one of the most popular features added in version 2.4. How do you see voting having an effect on prioritization of issues in the Issue Tracker?  Did voting affect your decision of which issue to implement first?

Giuseppe: Prioritization  is usually the first think I look when I have to decide what I can do, the second one is the difficulty of task at hand, e.g. what other spec I need, quantity of code I have to write, etc... The same consideration as for any other job I have to do.

Andrew: Much of is developed by paid employees of big companies such as Sun Microsystems and Novell. How is your work funded?

Giuseppe: My work is on a voluntary basis. I work on the OOo code only when I can. You may think of it as a kind of hobby and a challenge. So the time I can spare is the third consideration I have to do when I start doing something for OOo.

Andrew: What are the difficulties and barriers you face as a developer trying to get your changes integrated into the upstream  Some have expressed frustration with having patches merged upstream.

Giuseppe: That depends on the patch I proposed. Some of my patches where rejected simply because they didn't fit well the rest of the code. Some others where immediately accepted. But working as a volunteer I don't mind if they are not accepted.  It's true that the "acceptable patch" procedure is sometimes long and you may end up without no answer at all.  I don't know for others. When my patches were rejected, usually there was a reason I found afterward.  Also whenever you propose a patch there, OOo being a kind of huge application, some patches involves more that one

application, hence more than a developer to synchronize with.

Andrew: What is OOoHs?  Why do you publish it?

Giuseppe: OOoHs is a sort of developer version of OOo into which I put my patches to test. It's not something I thought for the casual user use.  It may be broken, and, as I suggest on my download page, it may be risky to use it. Currently it's a 2.3.1 version with PDF/A, PDF links and some other stuff in it (e.g. a proposal for issue 53420, only meant for 3.0).  In OOoHs lurk some patches from the ooo-build stock as well. But not all of them. I publish the code to compile it if someone want to.

Andrew: Have you considered submitting your patches to ooo-build?

Giuseppe: No, I think it's probably easier then upstream, but I have not enough time available to manage ooo-build contacts.  I still need to earn my living...

Andrew: Agreed, and time is a precious resource.

Andrew: Do you have any advice for people considering development?

Giuseppe: Some. That depends on the kind of involvement. But first you need patience. Then a good experience on modifying code written by other people. I would consider using a GNU/Linux machine to start, since there you'll have all the tools you need for free. Normally what scares people is the complexity of the code, but most of the modification are on under 10 modules of the over 100 that compose the whole application. During OOo conference last year there was a presentation explaining how to search the code, where to look at (download video and pdf slides from How to fix an Issue in with Michel Loiseleur ). Just for the record, I use a GNU/Linux, Debian distro, for my OOo development.