Projects on the Move


The Gramps genealogy program takes Linux fans on a tour of their family trees and helps evaluate data connected to ancestors. Puppet helps administrators automate regularly occurring tasks.

By Heike Jurzik and Andrej Fink

Sergey Galayko and Katrina Brown, 123RF

Where are my roots? Who were my ancestors, and where did they live? These and other questions are what genealogy researchers try to answer. The days in which a pen and paper were the only tools are long gone. Since the 1980s, genealogy programs have helped researchers manage and present their data and create reports, lists, diagrams, and trees.

In recent years, Gramps [1] has developed into the granddaddy of the free family tree research tools and is backed by a pleasingly large developer and user community.

The dedication and agility of the community was demonstrated in April, when Gramps 3.2.2 appeared just a couple of days after version 3.2.1. A couple of functional changes had accidentally found their way into the program, requiring some bug fixing [2]. The developers reacted quickly, and the stable 3.2 branch of the software will only see bug fixes rather than new features in the future.

Family Business

To support your first steps as a budding genealogist, the Gramps developers provide some sample data collections [3]. With these collections, you can experiment to your heart's content and discover the many features before entering your own family data. The online manual (accessible via the Help menu or online [4]), will guide you through the learning curve.

The software shows family relations by reference to diagrams, graphics, or reports. The left sidebar gives you access to various views, such as people, relations, families, or ancestors (Figure 1). The database also lets you add various media to records.

Figure 1: The family tree view shows up to five generations, depending on the window size. If the record contains images, Gramps displays a photo in the box for the person in question.

If so desired, Gramps will store images, audio files, animations, and so on. If needed, the program can export its database in Gedcom format, or as a vCard file.

Gramps cooperates with various mapping services. The Places view lets you search for individual entries in Google Maps or OpenStreetMap. Both providers are also available for searching in Geography to see how a family has spread across the globe (Figure 2).

Figure 2: Assuming your Internet connection is fast enough, Gramps will show you where people live, or lived, and where they were born and died.

The developers are always open to feedback, proposed improvements, or just a "Thank you." Additionally, the Gramps team is not just looking for programmers but also for volunteers to translate the manual and the application from English into various other languages.

The project website has a Contribute section that lists various options for contacting the developers - for example, via mailing lists or on IRC.

Puppets on a String

If you have ever tried to manage servers and networks manually in a large IT environment, you will be aware of how error prone, monotonous, and inefficient the approach is. Even programming your own Bash scripts might not create an ideal situation. All too soon, short scripts can mutate into uncontrollable monsters that challenge the administrator to keep track of their doings. The Puppet [5] management software aims to automate repetitive tasks.

Puppet is backed both by an active community and by Puppet Labs, with Puppet inventor Luke Kanies as its CEO. Up until March 2010, the company was named Reductive Labs, but according to Kanies, the new name reflects the company's objectives far more accurately; that is, improving and developing Puppet [6].

Parallel to the name change, the website was relaunched with a far more professional look. The documentation is also clearer and easier to navigate [7].

The Puppeteer

Administrators can centrally define the desired configurations of the machines they manage. Instead of precise command-line input, this process is handled by Puppet's own declarative language. Variables and conditions help separate data from code.

The advantage of this approach is that data changes (such as renaming a server) only occur at one position, and it adds the ability to share code with fellow admins without revealing the enterprise's internal details. Many of these patterns are available on the web; in fact, the project wiki [8] lists dozens of them.

Puppet can manage both standalone systems and large arrays of computers. The software offers a client-server architecture for the latter scenario.

In an initial step, the administrator needs to group a number of resource types (e.g., package, file, service, cronjob) in a class. The class is then assigned to individual computers, or nodes. The classes themselves are hosted on the Puppetmaster, Puppet's server computer, whereas the nodes run a Puppet client that regularly contacts the server and submits details of distribution, architecture, RAM size, and so on. The server responds with the target status and dependencies of all managed resources for the node, which the client then compares with its status and - if needed - effects changes to the system.

Puppet supports various popular Linux distributions and Solaris and BSD derivatives, including Mac OS X. Variables and if/case-style conditions let the administrator modify resources with very little effort for use on multiple platforms.

Master of Puppets

The web interface, or Puppet Dashboard, that comes with Puppet is designed to facilitate the system administrator's daily grind (Figure 3). Versions 0.2.0 and 0.2.1 appeared in quick succession in March of this year. Just one month later, 1.0 appeared in Puppet world. The functional scope of the current Dashboard, version 1.0, includes displaying client reports and the ability to assign configurations to individual nodes.

Figure 3: Puppet recently introduced a graphical Dashboard that lets administrators monitor the status of their servers and reveals any problems with clients without delay.

Puppet Dashboard is still a relatively young project looking for support. New features are planned for the next release. The Puppet developers would ask anybody interested in contributing to report bugs and submit proposals for a future version.

A glance at the Bugtracker and the project wiki shows how active the Puppet community is, and the blog confirms this impression. The developers are prepared to give back their work to the community, as evidenced by Puppet programmer Michael DeHaan's service as a mentor in two Google Summer of Code projects. In his blog post [9], he introduces the two students and their projects.

INFO
[1] Gramps: http://gramps-project.org
[2] Blog entry on the release of version 3.2.2: http://gramps-project.org/2010/04/gramps-3-2-2
[3] Gramps SCM repository: http://gramps.svn.sourceforge.net/viewvc/gramps/trunk/example/gramps
[4] Gramps manual: http://www.gramps-project.org/wiki/index.php?title=User_manual
[5] Puppet: http://www.puppetlabs.com
[6] Press report on the name change: http://www.puppetlabs.com/blog/reductive-labs-home-of-puppet-changes-name-to-puppet-labs
[7] Puppet documentation: http://docs.puppetlabs.com
[8] Collection of prebuilt Puppet patterns: http://projects.puppetlabs.com/projects/puppet/wiki/Patterns
[9] Mentor at GSoC 2010: http://www.puppetlabs.com/blog/gsoc-2010