Plans to Update Forms Addon Over the 2024 Summer

Ah I think (maybe?) I see where the confusion is coming from. Feel free to correct me if I am incorrect.

So the term “Role” actually has a definition within the Gedcom standard. The definition is this: “A name given to a role played by an individual in connection with an event.” This is the “Role” I am referring to. It has a tag within the GEDCOM standard that is predefined.

The Form addon changes I am describing would not link people within the Family Record structure of gedcom files. It would simply allow the modification of Event Role which is a tag that exists within the gedcom framework. It connects people to one another by esentially creating a shared event between them. For reference here is one of the Census events in my tree:
image

You can see that a number of individuals are connected to this single event.

Now let me go to one of the individuals who is not a core family member:

As you can see, the “Role” identifies her as a servant. In summary, GEDCOM uses Role not as a familial relation, but as a descriptor of general relationship. Hence in my file, I do not use the Primary role to describe non familial relationships, I use a custom role. This fully complies with GEDCOM standards.

1 Like

In the case of my tool size was determined based on how many connections an individual had to the central person node, so for instance you would select a person and all people who are referenced by events that individual is a part of appear. The more connections a person has to that singular person, the larger their node appears. Of course if I were to integrate something like this into gramps there would be more customization options in terms of what factors determine things like node size, node color, etc.

1 Like

The word you are looking for is “dot file”. Dot is the file format used by graphviz which is what creates the static graphs within Gramps and there are a number of online tools which allow dynamic interaction with dot files. What doesn’t exist right now within gramps is a dot file export that represents connections between nodes based on shared events/“roles”.

2 Likes

I would describe GEDCOM as very similar to something like JSON personally, although it has a predefined standard for what can qualify as a “Key” which is not true for, for instance, JSON.

I did have to read a lot of documentation on the GEDCOM standard for my previous programs, and I think what a lot of people don’t realize is just like JSON it allows for essentially unlimited numbers of nested tags. The main issue with taking advantage of this is it can limit compatibility with other software.

Good data engineering, however, can make it so that you do not need to use large levels of nested tags anyway. The functionalities of, for instance, viewing people who have lived at a specific address is already included in gramps. You may notice that the subdivision “Street” is by default allowed in addition to “Address” I use this to allow me to see who lives on the same street and who has lived in the same house with ease. Example:

Basically, what I am trying to say is that GEDCOM data standard already includes the connections between things like sources, citations, events, repositories, locations, etc. There is no need to implement a new data format to construct a document centric research flow, just a need to construct a new view that makes these connections visible to the user.

1 Like

Gramps has both Families and Roles for Events that build Consanguinity and Affinity relationships implicitly. Then Associations for explicitly creating other relationships.

GEDCOM 5.5.1 (pg26) also has an ASSOC tag. (Or in the Association Structure GEDCOM7)

GEDCOM spec
Other associations or relationships are represented by the ASSOciation tag. The person’s relation or association is the person being pointed to. The association or relationship is stated by the value on the subordinate RELA line. For example:

0 @I1@ INDI
1 NAME Fred/Jones/
1 ASSO @I2@
2 RELA Godfather

You can think of it like this: Genealogy programs choose to center their views on one type of connection from gedcom files: the familial structure. But other structures also exist which can be centered instead of family- its all about data visualization, not data storage.

Ah yes, very true. In the case of the updated forms gramplet only the event’s ROLE would be edited, not an individual’s ASSOC

1 Like

Obviously I agree with much what you say. Nevertheless, I’d insist on the strategic approach: first get rid of the BLOBs to be able to leverage the power of modern database backend, and then implement what you propose. As always most importants things should be done first. At the end of the day, your proposed features will not boost the usage of Gramps at all if it’s simply too slow. Gramps is such a great software and miles ahead of all the crap on the market, so it should not force its users to go back to BSDDB only for speed reasons.

4 Likes

Tiny update, I’ve just been familiarizing myself with GTK since I haven’t used it for making guis before. I managed to get a gramplet to display a simple gui with buttons. Next step will be trying to make a useful GUI haha.

4 Likes

Nope, dot is not a good network graph format, it is text based, yes, but it is not a good and commonly used OPEN DATA network graph format for large datasets…

You are actually better off using CSV.

For small graphs with a few hundred, maybe a few thousand objects, it can be used, but for a dataset with tens of thousands of nodes and edges, it is not a useable format, even though it supports attributes etc. for both nodes and edges.
too much “empty” text.

It is a great text-based format when you are going to manually write a graph with metadata, but that’s all.

the problem and limitation are not what it can contain, or how many “levels of tags” it can support, but the structure of the data.
It is a lineage-linked format created to the ideology of LDS and how they do their research (lineage-linked), and lineage-linked research will always be a limitation…

This is not enterally true either, because the minute you write your data to gedcom, you have “converted” it to lineage linked data, and only the software you used to write it will give you back anything other than a lineage-linked way to research.
Ergo, the format is limited…

And yes, it is possible to get around that when writing code, Clooz 4 is a good example, but the format is still lineage-linked based and therefor limited.

1 Like

Replies are digressing far away from the original Topic of the Forms Addon update.

Can we stop highjacking the thread? Take conversations that are ideological or about redesigning Gramps in 5.3 (or other more far-flung future versions) into other threads.

Let’s see where the fresh perspective of @RenTheRoot will take the Forms features. If @Nick-Hall determines that it fits core (while maintaining backwards compatibility), great. If not, the lib addon route has proven to be a viable option that allows people to demur without forking the whole project.

3 Likes

Hello Phil,

First of all, a thank you for the screenshots. I don’t use the Forms Addon here, and I only looked at it for a short time to help a fellow user in England.

When I look at the 1st, I see that every line shows data for a person, and when I see that, my 1st thought is, that eveything on that line should then also be stored as such, in an object that may be a bit simpler than the usual person that we can find in the tree, but still a person, and not some random list of attributes, stored in event reference attributes.

I call these random, because their names, the column headings, are sort of random. You enter these in the form definition, in such a way that they reflect the field names in the actual form. And that is nice for you at 1st glance, but it also means that there is no concistency in that, because another census, for another year in the UK, or for the US, where I see most censuses from (on Ancestry), has other columns. Some may have two columns for the name, a single column for the person’s age, one for sex, or not at all, because the sex is implied by the role, or the name. They’re also useless to users who don’t speak English, should you ever export your data to those.

This goes the other way too, meaning that when I define a form that mimics local records, which are often birth, marriage, and death records, no census ones, I will use Duch column names, and although some of those may still be easy to recognize for you, like Naam, others probably will not, like Beroep, or Beruf in German, which means Occupation.

You can get around this, by storing all data in a person(a) object, with separate GIVN and SURN fields, and fields for BIRT.PLAC, OCCU, and SEX. You may even convert the age to a calculated BIRT.DATE storing just a year. I am deliberately using GEDCOM tag names here, but for Gramps, it is probably better to use the field names that we already know from the person and event objects. And this is most likely what Ancestry and FamilySearch do, in the forms that they have for data entry, done by volunteers.

With such a change, you can still have forms, but like in the person and event forms for Gramps, there is some logic behind every field, so that it is stored in the proper database column, or object property. And in those forms, all headings can shown in the user’s language, with the data stored in such a way that everyone can understand it, and the software can also extract it for automated matches and reports. And in some cases, like for the Name, the logic can also use the comma that you enterd to separate it in GIVN and SURN parts.

There is another possible change too, and that is, that you store these evidence persons, or personae, to be attached to tree persons later, which is what the indexers working for FamilySearch do. And that’s quite easy in Gramps, because you can already create a source and citation without needing to connect it to a person or event, and you can attach the source/citation to a location object too, because in most cases, you know where the record was made. Place fields in the form can not be stored like that, because they can be ambigious, and that’s OK.

And with an independent person object, you can even go a step further, like for the index cards that I can find on the Amsterdam archive site, which not only list person data for the head, spouse, parents, and children, but also a list of addresses with dates, which can easily be stored in embedded residence events, or facts.

With such a change, it is quite easy to mimic what you see on Ancestry or FamilySearch in Gramps, including features for detaching evidence persons when you discover that you attached them to the wrong person in the tree. And like I wrote above, you can also delay that, and just enter loads of form data, before you start trying to find conclusions for the persons involved. And because the data is all stored in standard objects, all Gramps users can see things in their own language.

2 Likes

Hi Enno

Thanks for your reply and I understand where you are coming from it is
just not the way I work and hence my concerns about the Update.
When I discovered GRAMPS and Forms they matched exactly how I had always
worked and that is why I adopted GRAMPS
phil

4 Likes

Hi Phil,

I understand, and think that an update can be made in such a way that you don’t see much change. That’s not up to me though, because I’m not very active as a developer.

I did notice a suggestion to create a new class for the update, and if we can have that, it may please all of us.

Cheers,

Enno

1 Like

“You can please some of the people all of the time, you can please all
of the people some of the time, but you can’t please all of the people
all of the time”

1 Like

This is the main worry I have about my ideas, that it may be difficult to maintain the speed of Gramps when potentially modifying a large number of events at once. I have about 4,000 unique citations linked to about 20,000 events and 7,000 people in my tree (I like adding people who were neighbors, friends, etc. to my tree as well because I like seeing the “community” form in my file in addition to the family) and I plan on adding many more over the years as I do more research and go down new rabbit holes). Legacy Family Tree had been having problems handling my file so that and the lack of support for unicode were some of the main reasons I switched over.

However, rest assured I will not release the updates without solving the issues that may lead to this. I don’t think, for instance, that the default will be to immediately update all events tied to forms in the database when a user changes the form settings. I think I will include a button to allow people to “refresh” all the events tied to forms at once but I am thinking the default will be that the user applies the update themselves only to the individual instances of forms they specify. This is something I’d actually like to hear some ideas on, especially from developers who have made addons that modify large amounts of data.

I also don’t want to encroach too much on the main interface of forms; I want to add at the absolute most one or two extra buttons in the main gramplet area to keep it easy for long-time users satisfied with the current forms capability and maintain a clean interface for fast and accurate data entry. I’m hoping to keep most of my visible changes limited to their own global settings menu.

Going through the Form gramplet code I see that the events tied to the gramplet are updated when the gramplet is closed. This is why its possible to change parts of an event created through the forms like the date of a census, but once you open and close that event in the Forms gramplet the date will change to whatever is set in the Form file definition. I like this approach personally for a instance by instance update system.

I’m also thinking, however, that in order to give users the most control possible over their file, that I may not necessarily want to cause the opening and closing of the forms gramplet to trigger the creation of these brand new events even if the user has activated the events in the settings. This is where the button/ other selector idea comes in.

I’m thinking the action performed by the button would basically be to sync the current form instance with the current form settings. That means that if someone wants to use the new features for only a single form in their file they will be able to do so. It would also be possible to have different settings applied to individual form instances.

If in the future it seems like users want to be able to modify these settings from directly within the forms gramplet main interface maybe I could implement a setting that adds a tab to the form entry part of the gramplet which controls the individual form behavior. If I added this though it would not be a default view, the tab would only exist if the user chooses via the global settings.

My idea of a perfect update to the addon would be one where, upon installing the update, nothing about the interface or functionality for the addon changes. All new functionality can be activated via the settings menu, or not activated as some users may prefer.

3 Likes

You might want to put in performance timers during development.

The Isotammi addon gramplet Filter+ has a filtering “Elapsed time” as a feedback mechanism.

1 Like

This is actually perfect for my purposes thank you!.

1 Like