wikitree / wikitree-dynamic-tree

Dynamically generated and browsed graphical family tree
MIT License
23 stars 15 forks source link

Integrated vs External views #30

Open bcaseyrls opened 1 year ago

bcaseyrls commented 1 year ago

@PeWu created a terrific tree view, their "Topola" view (https://github.com/wikitree/wikitree-dynamic-tree/pull/26). It has lots of great information and a nice presentation. However, this was implemented by putting an iframe into the view container rather than creating View code that runs within the existing application.

The goal/vision for the WikiTree Dynamic Tree is to have a growing, collaborative, open source project where new views can be added, and those can be improved and maintained into the future. In order to support that goal, we need the code for any integrated views to be part of this wikitree-dynamic-tree project. Sourcing the code from another site via iframe doesn't allow for any collaboration, and means the view could go away with no ability for the WikiTree community to continue it. So, for now at least, the Topola view-via-iframe has not been included with the WikiTree Dynamic Tree.

It would be great to have the view (which can be seen at https://apps.wikitree.com/apps/wiech13/) integrated into our collaborative project here. I see Przemek has a repository for their topola-viewer (which can load data from more than WikiTree) at https://github.com/PeWu/topola-viewer. I'm hoping they (perhaps with the help of others) considers adding their view to the WikiTree Dynamic Tree.

PeWu commented 1 year ago

In defense of Topola...

Integrating the Topola view by adding the code directly to the WikiTree Dynamic Tree codebase is not trivial. Topola Viewer is implemented as an independent React application. One of the things that would have to be changed is the way it ties into the page/frame URL to store and update its state. Moreover, I don't know how we would handle keeping the Topola code inside Dynamic Tree's codebase synced to the main topola-viewer repository since we'd technically have a fork of the original code. I personally am not interested in maintaining a WikiTree-exclusive version of Topola Viewer. From the beginning the app has been designed to be integrated into multiple genealogy applications. Apart from WikiTree, Topola Viewer is already available from Gramps and Webtrees as plugins without any code forking.

Sourcing the code from another site via iframe doesn't allow for any collaboration, and means the view could go away with no ability for the WikiTree community to continue it.

This is not true if you are talking about the development and deployment model of Topola Viewer. First of all, Topola Viewer is not hosted on another site. It is hosted on apps.wikitree.com. Secondly, it is an open-source project, so collaboration is possible and very welcome :smile:. What is more, not only WikiTree users are using and contributing to Topola Viewer. Speaking about risks, if it would ever happen that the Topola Viewer code would become incompatible with WikiTree and there would be a problem contributing to the Topola Viewer repository, the WikiTree community can then fork the Topola code and start maintaining a compatible version. I hope this never happens.

What the Dynamic Tree maintainers lose is a bit of control of the development direction of Topola Viewer :slightly_smiling_face: If you'd like to control the deployment process of Topola Viewer to apps.wikitree.com to make sure I don't break anything, feel free to host it at a different path than /wiech13/. The deployment script is in the topola-viewer repository.


Back to the topic of integrated vs external views. My opinion, connected to what I wrote above, is that "external" views should be allowed as long as the following conditions are met:

But I'm biased. I'll accept a different decision :slightly_smiling_face:

MichalVasut commented 1 year ago

IMHO what Przemek said is correct - for end user, it doesn't really matter how it is embedded into the app, the only issue is different visual style (look & feel), but currently there isn't any defined or used.

As for fork of the original code - git has feature called submodule (docs & Github article Working with submodules) that can link external repo and it will keep it synchronized. But there is also catch ... Advice on using submodules (or not)

bcaseyrls commented 1 year ago

You've made some good points about Topola falling into a bit of a grey area in terms of some of the goals for views in the WikiTree Dynamic Tree. For "Hacktoberfest", at least, we want to focus on building the fully integrated code that's part of this project. Afterwards, we can return to consideration of including a "partially external" implementation of Topola as an exception to the included views. And of course the "Tools" pages for profiles on WikiTree.com still have a link directly to the Topola tree.