DescendantSpaceTree addon - initial development

Hi Gramps Devs,

I’ve pushed an addon I’ve been developing to my forked addons-source repo. This addon produces a web page with an interactive descendant graph as a Space Tree. If you’re not familiar with a Space Tree,
the original paper is here.

Here is a screen shot:

Code is at: https://github.com/tpoindex/addons-source/tree/maintenance/gramps60/DescendantSpaceTree

I wrote an early version of this years ago in awk, reading a Gedcom file. Since I’ve started using Gramps for my maternal family history, I’ve re-written it as a Gramps addon.

I’m at a point where I’m pretty happy with the current state. I wanted this to be a light-weight viewer, just showing basic information; a single html file with no dependencies (I inline CSS and JS code); search for descendants or spouses; tree pruning for descendants whose parents are in the same family. It handles the 27k nodes in my paternal family tree pretty well.

I’d like to get this into the main addons repo, so next steps would be fixing any remaining bugs and adding translations.

A couple of questions:

  • Whom to contact about getting added as an addons developer? Or should I just post a pull request?
  • Perhaps some pointers on using Weblate?
  • Back port to 5.2? I developed with 5.2 initially, current version is for 6.0 (just had to change the gramps_target_version)

Cheers,
Tom

5 Likes

Welcome Tom,

I suggest you create a Pull Request in the addons-source repo. Then others can try it and provide feedback. You can mark as Draft until you get the feedback and address any comments. Once you clear the Draft flag, it can be reviewed for publishing. You can announce availability for testing here in discourse. You should also create a wiki page with Help (referenced in the gpr file).

Weblate is used by the Translators to provide translated strings. You dont need to do that unless you are fluent in another language.

Completely your call on whether to backport to 5.2 or not. If you decide to do this, you would create a second PR, this one on the gramps52 branch, and it would be published independently.

Welcome Tom!

Gary @GaryGriffin has been managing the Addons-source repository. So he is the right contact. And Al @ahs3 has volunteered to help new contributors battle through the GitHub process. (But he will be unavailable during June.) Also, that support effort is still in the early phases.

@kmikkels , @Urchello , @ztlxltl and @jmichault have all recently gone through the process of sharing experimental Gramps addons from outside the official repository. (They have recent experience with learning the process of independently publishing repository contents through the Addon Manager.) Please take advantage of lessons learned from their pain.

And please be very public in working through the process of sharing any difficultlies.

Back port to 5.2? I developed with 5.2 initially, current version is for 6.0 (just had to change the gramps_target_version)

@kku (of the Isotammi group) has established a Gramps plugin code for maintaining a cross-compatible registration. But I’m not sure how he generates the download and Addon Manager JSONs.

Thanks @GaryGriffin, @emyoulation for feedback.

I’ve submitted a PR, and will get started on a Wiki page, and will post a followup for testing availability.

If you are planning to do a beta test cycle, I recommend that you create a README.md page in your repository instead. And do a wiki page later in the development cycle.

It is FAR easier to maintain screen captures on GitHub than in MediaWiki. Plus the name of the addon might evolve.

However, once the name is nailed down, we can create a forwarding page on the wiki to the README.md file so that the help_url in the Gramps plugin registration file stays the same.

@Nick-Hall
This addon references JavaScript autoComplete v1.0.4 (2014 Simon Steinberger / Pixabay) under the MIT license, infovis (2013 Nicolas Garcia Belmonte / Sencha Inc.) under an indeterminate license, picocss (2019-2024 Pico) also under an indeterminate license.

Do you have any guidelines for mixed licensing?

  • I am guessing that you would prefer GPL licensing be used for the .gpr.py file even when the main module is MIT?
  • And should the DescendantSpaceTree.py include additional copyright lines for cross-referencing to the original java applet?

I’m license neutral for my code, I don’t really care if it’s GPL or MIT. I kept MIT for the initial commit as the dependent projects are MIT licensed.

In theory, both MIT and GPL licenses – well, all licenses actually
should be acknowledged. Unless you own the copyright, you cannot
change them. Indeterminant licenses are a problem; legal advice given
to me in the past has said either determine the license or do not try
to redistribute the source.

Is it possible to list all of the pertinent SPDX identifiers
(https://spdx.dev/learn/handling-license-info/) in the .gpr.py?

I am unclear about whether the license declaration inside the .gpr.py is for the registration file individually or the addon overall.

Since there is a separation declaration header in each .py file, I would think that it is the licensing for that individual module. So the .gpr.py would be a GPL license and the declaration in the header of the DescendantSpaceTree.py file would have to reference the java applet (and any other module) licensing from which the code in that module was derived.

By the way Tom, this looks very interesting as a Web Report. I wonder if it has potential to be a view too? Interactive Family Tree (Topola viewer) tool by @PeWu and Deep Connections Graph gramplet @kku both launch similar viewers in parallel to Gramps. With several addons taking this approach, I wonder if there’s some overlap?

Oh, I see. Maybe there needs to be an entry for both? Or would that be overkill? I agree that at a minimum every source file must have a license declaration, though.

1 Like

PicoCSS, autocomplete, and Infovis are all MIT licensed, I’m not sure what you mean by indeterminate.

Also, I’m not sure sure what java applet you’re referring to? The generated DescendantSpaceTree is java applet free, only contains HTML, JavaScript, and CSS.

My DescendantSpaceTree source code includes the license text for the three dependencies, as well as in the generated HTML file, and I acknowledge in the modal help dialog.

I mean that the license text in the code does not declare that it is MIT, GPL or other template. It just has terms of use.

The white paper refers to a java applet. I was … guessing… that you had adapted that code. But it seems that I guessed poorly.

Sure, but the text is still clearly the MIT license, if indeed lacking an SPDX identifier. Even the MIT license text doesn’t have the letters “MIT” anywhere in the license.

I can easily add the words “MIT LICENSE”, it won’t change the actual license.

1 Like

Looks great.

Also I believe this to be almost like an advanced version of the DenominoViso addon they both created stand alone html file and have the search field. but yours shows text on person entries and easier to use.

@Nick-Hall Sorry but I was under the belief that only GPL addons could be added to the curated addons source repository, so as to allow easy reuse between addons adding your under the current license would be a poison pill, you should be able to host it your self as a separate project like the familytreeview addon does?

2 Likes

@Gioto Thanks for the quick look and link to DenominoViso. I don’t believe I’ve tried that addon yet.

As I mention, I’m not particular about the license for the *.py files, and can easily change it to GPL.
There is at least one addon in the repo that is MIT licensed for the .py files, LinesOfDescendency.
I do see that other addons also include MIT licensed components, but themselves are GPL (D3Charts, DynamicWeb) I’ll wait for a PR comment

PR: https://github.com/gramps-project/addons-source/pull/736

1 Like

Yes. Code in the addons-source repository should be licensed as GPL2+.

The idea behind this was to enable easy code reuse and to allow addons to be eventually included in core Gramps if they became very popular.

Latest commit, I changed the license to GPL 2.0 to match Gramps core, while explicitly labeling additional components as MIT.

Also fixed a small spelling error, re-generated template.pot, and fixed a small error in the JS tree node coloring logic. Branch nodes of inter-family marriages are colored differently to draw attention to the branch pruning.

1 Like