Is anyone working on or thinking about WordPress?

Hi Eugene!

Actually, the WordPress layer is pretty thin, currently less than 500 lines of PHP code (compared to ~1650 lines of Python and ~900 lines of Javascript). I don’t know Drupal, but I suspect that if you know how to program Drupal plugins, you might be able to easily recode the PHP for Drupal. A Drupal plugin would have to handle AJAX requests, and provide a bit of data to the JavaScript code. (That is, using the Drupal equivalent of wp_localize_script.)

Currently, the PHP side of things just serves a few purposes, including loading the index data into the SQL database, serving up some basic HTML, and returning search results. Apart from the index, the data is stored in the file system as JSON strings. The vast majority of the functionality is coded in Python and Javascript.

Cheers! Hans

Another progress report. First, I’ve been playing with some different ways to present the family information. There are a couple of factors to balance out. I want complete summary information on parents, grandparents, siblings, spouses, and children, with thumbnail images (if they exist for the person), but in a fairly compact form, and yet have links far enough apart so that Google doesn’t complain about the page being not device-friendly. After a few tries, I settled on a 2-column approach. Here are some examples. In this case, you have to scroll down to get all the summary info.


Note that I put a section at the end with links to external web sites. In the case of WikiTree, this uses attribute information I add in with my experimental WikiTree gramplet.

This example shows the “Events” tab. Note that for other event participants, I include their relationship, including in-law relationships.

1 Like

The ordering of the Grandparents, sibs & offspring seems unnatural.

You might want to consider going to 4 columns for grandparents.

And the birth ordering of sibs & offspring might work better in 1st column eldest (top) to youngest (bottom) with a column break midway through. If these listings had been tabular with uniform row heights the left-to-right ordering might have made more sense. (Probably not. That may have required more than 2 columns to make the horizontal scanning order more prominent than the vertical. Especially since each individual listing includes both vertical and horizontal internal context: Down for new person, left-right for given, nick, surname & suffix, down to determine both order, left-right to grasp lifespan & death order.)

Also, the parenthetical for the nickname … or is that the call name?.. seems unusual. Aren’t nicknames typically annotated with quotes? I normally see maiden names parenthetically and call names italicized: ‘Margarethe Geertje “Gert” (neé Beukers) Moll’

What do you think of different tab names? The ‘Home’ is more of ‘Households’ and the ‘Events’ is a ‘Timeline’.

But as a broader question…
Do you intend this to be a Guided Tour or just a reference library?

The Narrated Web Site has site-wide Home and Introduction pages to help a visitor become initially oriented. But after that, the visitor explores on their own. It’d be nice if you made the top tab have a Biography. If the Person had a note of a specific Type, insert that (and omit it from being repeated elsewhere) in the tab. Otherwise fill the tab with something similar to what the Biography Quick View produces. This would give the genealogist a chance to present a true narrative.

For a WordPress plugin, I can’t go beyond about 740 pixels wide, at least on the theme I use. Before I settled on this particular layout, I tried a different design with 4 columns for the grand-parents, but I wasn’t very satisfied with that. I’ll have to think about your suggestion of vertical ordering of siblings and children. I also want to make sure that the design is relatively mobile-friendly, something that the Narrated Web Site is not.

Regarding naming style, since most of the people in my database were born in the Netherlands, I normally follow Dutch conventions. For example in Dutch legal documents, women are always referred to by their maiden names. That makes research must easier since you never have to guess if a surname is a maiden name or married name in any document. So I never worry at all about married names.

One thing these pictures do not show is the list of alternate names. With the abolition of patronymic naming in the Netherlands in 1811, many people in my database were referred to by multiple names.

Nicknames are also interesting in the Netherlands. Often, a person is known by others primarily by his nickname. For example, I always knew one uncle by the name “Joop”. It wasn’t until after his death that I realized his name was really “Johan”. I like the idea of italicizing the nickname, though.

Regarding tab names, yeah, I’m also not too crazy about “Home”. I started with “Summary” for that tab, but perhaps “Families” would be better. I like your suggestion of “Timeline” instead of “Events”.

Starting with a note of a specific type is an interesting idea. But one thing these images do not show is that if the person has any notes, a “Notes” tab will appear.

By the way, while debugging, I came across this interesting case of consanguinity I didn’t realize before. Peter Berendsen and Maria Theodora Jansen van Galen were seventh cousins! As far as I can tell, that’s the most distant case of consanguinity in my database.

2 Likes

Getting close to releasing my code for test and evaluation. Just added a cool feature. In the “Pedigree” section, I’m reporting on pedigree collapse.

2 Likes

I just wanted to say that I really like this Pedigree view, this is nice! And looking back at prior image I also like that you are showing if a spouse happens to be related as well.

1 Like

Thanks for the kind feedback, Christopher!

One of my goals is to go beyond the B/M/D information you find in the typical web genealogies.

Just an update on my progress. Before I release something, I want to get things right. So I’m spending time understanding what I’ve written so far, as well as improving my understanding of current Gramps capabilities.

Some of the things I’m working on now:

  1. Making sure content is searchable by the GoogleBot.
  2. Coding redirects for old Narrated Web Site content.

I’m also thinking about the future. Currently, an initial load of content can be a bit time-consuming. For a future release, I’d like to have an easy way to update content, rather than just loading everything. That is, I’m thinking about an update capability in my Gramps plugin to communicate directly with the WordPress server to upload just the data that has changed. This will require a bit of thought and planning. But it should make the update process a lot easier.

Cheers! Hans

3 Likes

Progress update. These days, I’ve been alternating between working on my code and adding people to my ever-growing database. To the “Timeline” tab, I’ve added the marriage event for the parents. To the Home page, I’ve added an optional “Born on this date” feature:

One big change I implemented this morning was an improvement to the index load performance. Before this change, it took about 25 minutes to load some 18,000 index records to the WordPress database on my computer. After recoding to do the SQL inserts in batches, the load time is now measured in seconds. I expected improvement, but I was quite surprised by difference.

Cheers! Hans

3 Likes

Hans,

Does the “Born On This Day” (it should be “Day” rather than “Date”) have the ability to apply a filter? If I was publishing a website, it obviously shouldn’t list Persons or Births marked Private. (Or ‘living’ for a site with unrestricted access.

And if uploaded an extended Tree, I’d probably want to limit any spotlighting on Persons to be within a degree or 2 of separation from the focal (Home?) person’s Ancestors & Descendants. (I’d probably apply a Tag or Attribute before uploading. That should reduce the server’s filtering burden by avoiding a complex multi-stage filter.)

Come to think of it, perhaps the site generation could set 2 attributes during generation? 1 marking persons with direct lineage involving the home person: the Person, their direct ancestor & descendants. Another with the minimum degree of separation factor for blended family of the direct lineage Persons.

Hi Brian!

Okay on “Born on this day”.

The selection criteria are pretty much the same as for the Narrated Web Site. For a publicly viewable web site, of course, private info should not be included.

The server really doesn’t do much filtering. All the heavy work is done on the Gramps side, creating numerous JSON files, which are served staticly by the server.

At the moment, when showing a relationship, I don’t keep track of the intermediate people involved in that relationship. That would be a cool feature, but I’m not going to worry about that for the initial release. I don’t want to put too much of a load on the server side. But I’m toying with the idea of including enough data so that the necessary computations could be done on the browser.

1 Like

Progress update.

For the past few weeks, I’ve been a week away from releasing my code. But I keep finding defects or opportunities for improvement. When I now say I’m within days of releasing code, I’m trying hard to mean it this time!

I’m now redoing my strategy for redirecting requests to an existing narrated web site. The narrated web site has URL’s like “/gramps/ppl/2/d/c4f0361f4776aa18e7c4d06ed2.shtml”. My new WordPress-based web site has URL’s like “/boldts-molls/?p=I0073”.

That is, the narrated web site has URL’s based on Gramps object handles and nested directories. My new WordPress-based scheme uses the Gramps id in a query string.

My new redirection strategy goes like this: First, a RedirectMatch directive in the .htaccess file converts a URL like “/gramps/ppl/2/d/c4f0361f4776aa18e7c4d06ed2.shtml” to “/boldts-molls/?oldid=c4f0361f4776aa18e7c4d06ed2”. The handle is then converted to an id, and the URL is rewritten to the proper form.

Cheers! Hans

4 Likes