Interview: Gramps Developer
Don Allingham is the lead developer for the GRAMPS genealogy software. Here we put Don under the spotlight and ask him the questions that you, the readers, sent in from our full circle preview issue. If you want to learn more about GRAMPS please see issue #1 of full circle for our in depth review.
Interviewed by Adrian Rea
So Don, what's your background with computers and programming?
I've been involved with computers and programming since the early 80's. I started writing programs in college for VAX/VMS and Unix systems using Fortran, Pascal and C. My first job out of college was developing software used in the design of VLSI chips. For about the past 13 years, I have been out of software development, designing VLSI chips.
Since leaving software engineering, most of my programming has been in hardware description languages (including Verilog and SystemVerilog) and scripting languages (such as Perl and Python).
About six years ago, I started the GRAMPS project and have been involved in Python coding ever since.
Is GRAMPS the first piece of software you have worked on?
GRAMPS is the first Free Software program that I have worked on.
Early in my career, I developed specialized software for the development of VLSI designs.
How did you learn to program and how long did it take?
I'm pretty much a self-taught programmer. Other than a college course in Fortran and another in Pascal, I had no real formal training. I learned programming from experience, working with other people, and reading books.
But after 20 years, I still consider myself to be learning.
What gave you the inspiration to create a genealogy program?
The inspiration for GRAMPS came from my father. He was researching the family tree, but he was having considerable trouble with Windows and the genealogy program he had been using. He wasn't able to convert to Linux until he had a working genealogy program. So, figuring it would be easier to write a genealogy program than to try to fix Windows, I started working on a program. After I had something that was basically working, he convinced me to release it.
How long did it take you to create the first stable version of GRAMPS?
Well, a lot depends on what you mean by "stable". It took almost three years to release the 1.0 version, but people were using it very successfully for a long time before that. The first release, version 0.0.1, took about two months to put together.
What advantages does GRAMPS have over other genealogy software?
In the true Free Software style, GRAMPS makes sure that you own your data. Most programs lock your data into their own, proprietary format. At this point, you are at the mercy of the program for access to your data.
While most genealogy programs can export GEDCOM, they usually do a poor job of export. This is due to GEDCOM being an inadequate format, and programs developing their own, incompatible extentions. Quite often, some of your data is not exported, making it impossible to transfer all of your data to another program.
GRAMPS will export to GEDCOM, but it will also export to an XML file that contains all data in the database. We even provide an XML DTD.
How would you rate the success of GRAMPS, and where would you like to see it going? Are there any specific changes in GRAMPS you would like to develop?
A lot depends on your definition of success. GRAMPS is a pretty obscure program compared to Firefox or Evolution. However, if you consider the "target market," GRAMPS is well known in the Linux genealogy community. But my definition of success would be - "Is the program what you expected it to be?" And I would have to say that GRAMPS has far exceeded any of my expectations. GRAMPS is maturing, and the feature set is settling down. This will allow us to spend less time on database and GUI issues and more time on report generation and data analysis.
How do you find so much time for a product that obviously gives you great pride, but no financial return?
Well, I have a very understanding family. My wife has gone back to college, so I need to have something to do while she works on her homework :-) My ability to work on GRAMPS varies over time, depending on work hours and family time. Usually, when I get too busy, other developers can help take up the slack.
Each release of GRAMPS has a name taken from lines in the Monty Python show script, was there a particular reason for choosing Monty Python?
Many on the development team are fans of Monty Python. Since GRAMPS is written in the Python language, it just seemed appropriate. And you have to admit, "Monty Python and the Holy Grail" has to be one of the funniest movies of all time.
GRAMPS is a powerful database but has been getting more complicated for new users. How do you balance simplicity and usability for new users with the demands of database integrity and functionality for seasoned data handling genealogists?
We have created a fictional "Aunt Martha" who we use as our target audience. Everyone has an Aunt Martha in their family. She is the computer user who doesn't know a lot about computers, and really doesn't want to know more. She just wants to use a few things on her computer without having to invest a lot of time.
Every feature that we add goes through the "Aunt Martha Test". We ask ourselves if Aunt Martha could reasonably be expected to understand the feature. If the answer is "no", then we have to ask if the feature should be included, if there is a way to simplify the problem so that she could understand it, or if we could handle the feature in such a way that she would not have to worry about it.
In the GNOME tradition, we try to offer reasonable defaults. Many times this is enough to handle complex issues. For most people, the default operation is just what they want, and they never have to worry about anything beyond that.
Do you have a preferred Linux Distro to work in?
All the machines in my house (six at last count) are running Ubuntu. My server runs 6.06 LTS, and the rest are running 7.04. I've been running Ubuntu since the release of 4.10.
How do you cope with producing so many translations into other formats for other Linux distro's?
For languages: we have a good team of translators on the project. GRAMPS is a rather difficult program to translate, since it generates text based reports. The translators put in an amazing amount of work to provide translations.
For packaging: the official release out of the GRAMPS project source code, not any particular installation package for any distribution. We have volunteers to package the program for different distributions, such as Ubuntu, Debian, Fedora, SuSE, and even Windows.
GRAMPS has been ported not only to various Linux distros but to Mac and Windows variants. How do you feel about your program, being expanded for other distros?
GRAMPS is released under the GPL. This allows people to port it to whatever platform they desire. While I personally have no interest in either Mac or Windows, I see nothing wrong with these ports.
That being said, I have noticed a general difference between Linux users and Windows users. Linux users are more likely to interpret "Free Software" in terms of "Free as in speech." They are more likely to participate in the project and help us improve the program. Windows users are more likely to interpret "Free software" as "Free as in beer," looking for a program that doesn't cost anything. As a result, they do not tend to participate as much.
Are there many difficulties adapting the system for different cultures and languages, when the family references are different across the world?
Much of the complexity in developing GRAMPS comes from attempting to handle all the variations around the world. For example, something as simple as a name, is in reality, very complex. In some cultures, a name is displayed in the format of GivenName FamilyName, in others, it is displayed as FamilyName GivenName. Some cultures use patronymic names, other don't. To properly handle names, we had to develop a highly flexible system which allows users to customize how they want to display names.
In other cases, we've had to develop specialized code for different locales. An example of this would be the Relationship Calculator. In many English speaking areas, there is a fine granularity of relationships between cousins. You will find terminology such as "second cousin once removed". Other cultures do not make that distiction, but will instead differentiate between a male and a female cousin.
How do you manage a team of developers, across the world to produce a cohesion in developing a single product?
Our IRC channel (#gramps on irc.freenode.net) has been key in communication between developers and users. While differing timezones can make the IRC channel a bit difficult at times, it offers many benefits. Not only are we able to get good discussions going on in real time, we also have a chance to get to know each other. Once you get to know each other, it becomes much easier to work together.
An important thing for any project is to make sure that you put aside your ego, and work towards a concensus. Usually, a bit of discussion and a bit of compromise produces a better idea in the end.
How difficult is it working with other formats such as GEDCOM and other genealogical programs when conversion into GRAMPS is requested?
The closest thing to a standard format in genealogy is GEDCOM. But as an interchange format, it is very poor. The format was designed by the LDS Church to handle the needs of the LDS Church. However, there are quite a few things that GEDCOM cannot handle.
Most commercial systems have closed formats. We do not try to reverse engineer these formats. There are quite a few programs out there with quite a few different formats. It is not practical to try to handle each revision of each proprietary format.
We would prefer a standard genealogy format the resolves the deficiencies of GEDCOM. Unfortunately, this does not exist. In the past, we tried to get other projects interested in working towards a common interchange format, but we found little interest.
You have spent a significant proportion of your time developing GRAMPS, which is licensed under GPL. Do you ever feel your code, even if used within the licence, could be developed and promoted by another team, calling it a new name and taking the spotlight away?
I'm not concerned about this at all. If someone else could take the code and improve it, while adhering to the GPL, then more power to them. This only benefits the user. After all, this is what Free Software is all about. This would not be unlike the Debian/Ubuntu relationship or the Ubuntu/Linspire relationship.
Do you have a strategy to recruit more developers?
Even though we need additional help, I don't actively recruit developers. Several years ago, we attempted a bounty program, with no success. This has led me to believe that a person has to be self-motivated to be a valuable contributor to a project.
On the system as a whole, the program developers and community, what would you say your strengths and weaknesses are?
I would say that our strengths are a good code architecture and a good community.
Our biggest weakness is a lack of developers. GRAMPS is a complicated program, and requires a lot of support. Quite frequently, the support demands are overwhelming.
Much talk has been made about the strength of the Ubuntu/Linux desktop now, especially compared with the commercial Windows Vista. Do your family use Linux or is it hard to promote it in a currently Windows dominated environment?
I have used Linux exclusively for about seven or eight years now. My wife and son both run Linux, reverting to Windows only for specific programs (AutoCad and iTunes).
Linux would be easier to promote to your average Windows user if a wider range of programs were offered. Linux has more than its share of music players, IRC programs, and RSS aggregators. But these aren't the programs that appeal to your average Aunt Martha, and until Linux develops a wider range of software, it is going to have a limited appeal.
If you walk into a store that sells software to the masses, you can get an idea of the kind of software that Linux is missing. About a third of the software consists of games. Another third consists of virus checkers, firewalls, anti-spyware, and other system utilities. The remaining third is the interesting set. This category consists of genealogy programs, greeting card programs, recipe programs, landscape and home design programs, and similar programs. And regardless of what you think of these stores, they do know their customer base and what that customer base desires.
Part of the reason that GRAMPS was created was to help fill this void. My personal opinion is that if Linux wants to attract a wider base of users it needs to widen the types of programs that it offers.
What programs and development systems do you use to produce GRAMPS?
GRAMPS is built using Python, PyGTK, and Glade. As far as development, about the only tool I use is Emacs.
And finally, what advice would you give to a budding programmer?
Make sure you are programming because you enjoy programming. Be willing to put aside your ego, and listen to others. Not only will you learn more, you will also discover that the ideas of others can really improve your project.
Many thanks to Don for taking the time to sit under the spotlight and be grilled!
Next months interviewee will be none other than Colin Watson, Installer Team Leader,
Ubuntu Community Council Member and Line Manager for half the distro team!