Like the “Associations” tab for People, which allows directly linking people by ID and a descriptive term, I’d like something similar to connect related events.
Honestly, I’d love something like the link editor in notes allowing connections between all categories (for example, directly connecting a Name to a Christening or Marriage event beyond s/c or a note), but that is a significantly more complicated undertaking.
Generic Examples:
Representing emigration/immigration events, especially those involving extended travel in between the dates of leaving one country to enter another. With event associations, you could have events with distinct dates for emigration and immigration, associated not only with each other, but the user’s choice of custom events (travel, migration, etc.).
Connecting person-centric or person-specific events to historical or general events to provide historical context. Using the above example of emigration, associating a family’s emigration from Ireland and immigration into the US with a custom “historical” event about the Irish Potato Famine–which would have its own sources/citations separate from the family history.
Easy cross-referencing between pre-existing canon events and/or custom events. Such as a marriage connecting to its engagement and a change in residence or the birth of a child resulting in an updated/amended will.
Specific Examples from my own research:
Some of my ancestors immigrated to the US in stages: the father immigrated, then his adult daughter and her family (husband and young children) immigrated together 5 years later. I know from census records the daughter and family moved in with him, so clearly these events are related. Currently, I have a custom “Migration” event spanning from the father’s emigration date to when the rest of the family immigrated with everyone involved having a “Primary” role, but it looks very weird because one of the grandchildren hadn’t been born yet at the start of the event.
One of my ancestors was “killed” in battle according to his obituary. In truth, he fought and was wounded during a battle (event 1), spent four days in an army field hospital (event 2), and then died (event 3) due to an infection of those wounds (event 4). Currently, I have a note with links connecting not only these events, but also his military enlistment, burial, and the application for his military headstone made 40 years later.
A currently-living cousin got “courthouse married” for legal purposes almost 6 months prior to their wedding ceremony. Currently I have their canon “Marriage” event as their wedding ceremony–so reports will accurately reflect their anniversary–with their courthouse ceremony as the “Marriage License” with a shared note connecting the two and an attribute called “for legal purposes” with the courthouse date attached to the wedding ceremony event.
I’m just an amateur genealogist finally migrating from FamilySearch to Gramps and finding a million new questions about “best practices” while I’m at it, but hopefully this is helpful to others as well.
That are great ideas and good examples. Thank you! Unfortunately it would be nearly impossible to transfer that into GEDCOM. We would need new concepts in GEDCOM.
do you mean the special “note-formatting” available in Note? Or do you pledge for a new field in other records like Name or Event?
I extensively use this link-in-note feature to reference other records or even external URLs.
I think it is more user-friendly than a new field because notes can be shared. Taking your first example, you create a singleNote with type Link containing the link to your specific “Migration” event. Then you simply drag-n-drop this note over the Notes tab of all involved persons.
Your second example could be implemented as a Note describing a summary of the end of the military career of your ancestor and containing 4 links to the relevant events. Once again this single note can dragged and dropped either over the Notes tab of the events or over the Notes tab of your ancestor (perhaps both).
The way you’ve tied everything together (functionality with example usage) is helpful. Nice! (You may have noticed that @Gioto cross-referenced your feature request with similar requests. There is now a list of Related issues in the MantisBT database.)
Fortunately, some of what you want exists within some addons.
The Historical Context addon gramplet by @kmikkels can overlay some contextual world or regional events onto the personal timeline of events for a Person. (The Potato famine being a good example.) How that gramplet evolved is an interesting read in another thread.
You can record custom-type “Disproven” Events (such as that purported date and place “Killed In Action”) with citations that show where the misinformation originated and why its wrong. This is helpful in preventing cycles of adding the misinformation, doing lots of research disproving it, and cleaning out all traces of the bad data.
You can also record those civil and ceremonial marriages with no conflict.
This is another great example of why I’ve been advocating for “Main-/Sub-Events” and “Events for/on Places.” With a main/sub-event structure, you could create one main event for the migration of the entire family, and then sub-events for each individual. Within each sub-event, you could register events for the journey of the ship—with the ship itself as the location—and the individuals as participants in that “journey event.” Each journey could then have multiple sub-events for all the ports of call, which would be a powerful way to trace where someone went ashore and when.
This structure would also provide insight into travel durations across different historical periods, and might even help identify migrants who never reached their families—perhaps because they found their great love along the way.
The same logic applies to a “Battle” event. A main/sub-event structure would allow us to reconstruct what actually happened: registering sub-events from the moment someone was injured, to hospitalization, to death—or perhaps discovering that they didn’t die of those wounds at all, or that the recorded timeline was inaccurate.
These are the kinds of historical details that deserve their own events, but often get lost in the broader narrative. If all these smaller events were registered in a hierarchical structure—anchored to locations rather than just individuals—we’d have a much stronger research tool.
I use this kind of main/sub-event and event-on-place registration constantly in Obsidian. In fact, my entire vault of markdown notes is built around this exact idea—whether it’s my genealogy research notes, my “Historical Norwegian Merchantile Fleet” project, or the vault where I try to relate different people in the Icelandic and Norse sagas, along with other texts from the same era.
—In practice, it’s like “links in notes” in Gramps on steroids. I actively use a combination of folder hierarchies and extended wiki-linking—because I simply can’t register this kind of structure in a historically accurate way within Gramps today.
Thanks! Yeah, for as great as GEDCOM is, it leaves a lot to be desired when it comes to contextualizing data. Oh well, it just means we have to innovate instead!
Imagine the Associations tab for a Person, but it connects Events instead. I think something similar that allowed you to connect whatever you desired could also be quite useful, but also more complicated and difficult to share.
See, I think Notes are not user-friendly. The only way to organize them is their Type (and global tags, I suppose), they don’t even have titles! And I know it’s a minor complaint since you can use links to connect them, but why can’t Notes have their own sources/citations??
However, I had not considered a Note with nothing in it but a link. That would basically turn the Notes tab into a custom fields list, like the Attributes tab… That has promise, if I didn’t use Notes for anything else..
Thanks! This is my first time contributing to software development outside of Discord for a long time, so thank you @Gioto for cleaning up my submission!
Thank you for the link on the development of the Historical Context addon! I knew it existed, but I didn’t realize custom datasets were possible, which makes it significantly more useful to me (I do fictional genealogy in Gramps, too). However, this addon is designed for major events and my trial run with “minor” events got… messy. For example, the bankruptcy of a Pennsylvania mining company was huge for my ancestors employed by and living in the coal town operated by it–and provides context for a sudden move & career change–but probably had zero impact on my ancestors living in Belgium at the same time. It also only supports events by year, which makes smaller-scale contextualization difficult. Like connecting the temporary docking of a ship with an epidemic.
Well, I guess KML is my next research project! I can think of several places where a graphic like this would be helpful when sharing my research with family.
BUT Geography only works for Earth. Which is great for my family tree! And completely useless for say my fantasy novel. Yes, Gramps is designed for real-world genealogy, but the joy of open-source programs is adapting them for other uses! I’m not advocating for Geography that would function with customs maps (although I wouldn’t say no ), but a way to link events which happen in different places to provide context and directionality.
I do, fortunately or unfortunately, have a lot of those Events scattered around. I also have a special Tag for disproven/inaccurate Events, People (I track people with the same/similar name and distinct features to avoid getting confused in public repositories like FamilySearch), and Sources/Citations.
I can add both without conflict, yes, but the one typed “Marriage” is the only one hard-coded to register as a marriage. For my records, I have the ceremonial wedding set as the “Marriage” because that’s the anniversary they celebrate, but if/when I pass my records along, I don’t want that to be a source of misinformation.
One of the things I love about Gramps is it never shouts at you for being “wrong.” My xth-Great-Grandfather can still be Primary on the application Event for his military headstone, even though it happened forty years after he died. Absolutely a female can be the birth mother of a child at 4 years old–and Gramps doesn’t even know she’s a dog!
Exactly! I can picture a Relationship View version of inter-connected events. However, I think there are times when the relationship between events isn’t strictly hierarchical. As a hypothetical example: a couple is getting a divorce with extended legal proceedings. Obviously, court appearances, custody agreements, splitting of assets, etc. could be considered sub-events of the divorce as the main event. But what about the prenuptial contract? The arrest of the husband that kicked off the divorce proceedings? The two (separate) affairs the wife had a decade previously? Even with tiers of hierarchical relationships (Specific Event related to an Affair → Affair → Divorce Prologue → Divorce Proceedings → Marriage; where the affair summary and divorce prologue are also sub-events of the Marriage), I’m not sure you can clearly display connections between events happening in parallel.
You wouldn’t happen to have any examples of your Obsidian set-up, would you? I’m sloooowly transitioning from a hyperlink and footnote crazy Google Drive set-up to TiddlyWiki for my notes and I’d love some inspiration. Also ships, I love ships.
IMHO, extending Note to allow for Citation would create a big issue in handling the “closure” of an object. You’d have to stop the recursion at some stage, a bit arbitrarily.
Of course, you can object that MediaRef and Media already present this structure loop. But the code stops at MediaRef without retrieving dependent records (displaying only thumbnail Media) until you explicitly select an image (in which case it becomes a root, cutting the recursivity).
I think first priority is to clean up the way data is stored in the database to revert to “standard” visible columns in tables, instead of the opaque BLOBs containing binary Python objects. Once this is done, it’ll be easier to extend the schema and to evaluate the impact of these extensions.
Yes. I have previously given support for this approach.
Some more examples would be helpful.
Would a full association structure with type, attributes and notes be useful?
Is a many-to-many relationship necessary?
Does the unidirectional property of associations cause any problems?
In v6.0, we converted to using JSON to represent objects rather than BLOBs. I think that a hierarchical representation is probably better than a columnar representation for our use case.
Even events of these types are hierarchical — because each event is a sub-event of the divorce. Even if events occur in parallel, they still belong to the overarching context. For example:
“The Divorce” – Hierarchical Breakdown:
Initial misbehaviors (if blame is relevant)
Partner one blames partner two
Partner two hits partner one with a frying pan
Partner one gets angry
Moving out
Court appearances
Time together in court
Time partner one is in court
Time partner two is in court
Retrieving remaining belongings (whoever moved out last)
Just because something happens in parallel in life doesn’t mean it can’t be placed into a hierarchy. That said, I agree — it’s extremely useful for both fiction-based and historical events to be connectable via named, directional or non-directional relationships.
I actually do this in Obsidian using the wiki-link system.
For example: If two ships sail from the same port on the same date, they’re linked via the port and date.
That also links them to the sailors who went ashore during that timeframe — until proven otherwise. So every link or relationship should carry a citation and classification: proven, not proven, unproven, etc.
To be honest, this is Network Graph and advanced Gantt Chart territory.
That’s why I primarily use Obsidian, Foam for VS Code, and Aeon Timeline for research — alongside Gramps.
These tools help visualize complex interconnections, even though many of them could technically be modeled as relationships in Gramps notes.
Two events happening in parallel can still be sub-events of a shared parent — for example, the lifespan of an object.
But it’s not always necessary to link every event. Sometimes the connection is a person, a place, an object, or another entity.
If two parallel events are both connected to the same object, they’re sub-events of a broader context — with the object’s lifespan as the top-level container.
That said, this isn’t always a practical way to think. That’s why timelines and network graphs are essential research tools.
In genealogy, everything is hierarchical in some way — the shape of that hierarchy depends entirely on the observer’s perspective.
—
I just posted a few print screens of my Zotero and Obsidian structure as a comment in another post:
—
I’ve used TiddlyWiki in the past, but the single-HTML-file format didn’t scale well for large projects. I’ve also tried Twine, Causality, Freeplane, Scapple, Scrivener, yWriter, and Segrada — but ultimately landed on Obsidian, Foam for VS Code and Aeon Timeline as my core tools.
I also have Zettlr and Joplin installed…
I always use software tools far beyond what they were originally designed for. Thinking creatively isn’t optional — it’s essential if you want to build robust, scalable solutions.
And sometimes, you just hope others see the value in your adaptations and consider integrating those features natively.
— Note:
This post was originally drafted in Norwegian and refined with the help of Microsoft Copilot. The translation process included grammatical adjustments, restructuring for clarity, and stylistic polishing to improve flow and readability in English. The content remains true to the original intent, with all technical and conceptual details preserved.
Here’s an old idea about “sets” which included the thought that “A set could also be heterogeneous, containing any mix of object types and other homogeneous or heterogeneous sets.”