I thought I’d make a post giving an overview of the Gramps ecosystem since a couple of new projects have opened up new workflows. I didn’t include any of the website generator projects, nor any of the addons, and addon “app stores”. The following list may not be complete. Let me know if I left out things, and I will update the diagram.
First, let’s take a look at an overall picture of the main components:
In the bottom, left-hand corner is the gramps desktop that most of us use. Of course, you can get data in and out by doing imports/exports through the Gramps file formats (3rd row, righ-hand side). Gramps supplies the core code, database abstractions, and a robust addon community. All of this code is written in Python.
On the second row from the top is a key component: the gramps-web-api. Usually, you might just consider it as the “backend” of Gramps Web, but it is actually much more. It too is written in Python, and uses much of the infrastructure provided by the gramps core code. But it is designed to run as a host on the internet, managing permissions and access to different family trees. It is a production-ready web server tested over the last few years.
On the top row sits the official Gramps Web, and a newcomer Gramps Connect. These are both the “frontends” for interacting with gramps-web-api server. Both frontens are written in JavaScript, or a variant. They talk to gramps-web-api through a REST interface, a standard method of communication between systems on the internet. There is no direct database access in the frontends: they can only do what the backend allows, when it comes to accessing the data.
On the second to the bottom row lives the addons to Gramps desktop:
The GrampsWebSync addon tool allows you to do bi-directional merging between gramps-web-api, and a local Gramps database. Every once in a while, you run the tool to sync the local gramps database and the server. Useful for one user to keep in sync with the server. Handles conflicts interactively with you.
The GrampsWebApiDb addon database allows you to dynamically stay in sync between a gramps-web-api server and a local mirror of the hosted data. In this addon, the server handles the dynamic updates. Handles conflicts automatically. [More about this soon]
Notice that when describing the two addons that I didn’t mention the frontends, ie the top row. That is because the addons don’t interact at all with Gramps Web or Gramps Connect, they only talk to the backend server, gramps-web-api.
But the new GrampsWebApiDb suggests a novel method of working together: you don’t necessarily need a frontend at all; you (and your collaborators) could all use standard Gramps desktop apps, and each user could keep their mirror in sync using the addon. Of course, you can also use the web apps, but they aren’t required.
Finally, I will briefly mention the new kids on the block (in development): gramps-connect, and gramps-connect-desktop. The first is a hosted frontend, and the second is a stand-alone version that acts like a desktop app. Thus it gets to sit on the top row as a web app, and also on the bottom row as a desktop app. The desktop version has a gramps-web-api server embedded in it. Both are in development, and ready for beta testing.
Overall, this is a rich ecosystem—do you have questions, or ideas?
