My boss suggested something, and now I am re-thinking how to do the whole tree thing
1 – represent the tree as an indented list
2 – list items may be borrowed from other lists. This is key, because we don’t want zillions of copies of all possible list floating around
3 – how to do the history? Well, same as now, but a “list” is simply a node that is used in more than one place
4 – this means that a change to a genus forces all genera in the family to become their own list. We don’t want this, so list items need to be ranges pulled from other lists.
4 – this will result in a list being made up of fragments of old lists. We don’t want this, because the most important job is finding a name in the current list. So a basic job is back-fitting. When a list is replaced with a new list, all places using the list need to be adjusted so that they are using the new list (or fragments thereof) as far as possible. This may mean that a list item reduces down to a single fragment, which means that can be put into the lists that use it and the single-fragment list gets deleted.
I don’t know if this is possible.
I’ll have to think about it.