zadam / trilium

Build your personal knowledge base with Trilium Notes
GNU Affero General Public License v3.0
27.19k stars 1.9k forks source link

An idea for (perhaps) a better naming of note clones. #4099

Open XXXJetfireXXX opened 1 year ago

XXXJetfireXXX commented 1 year ago

Describe feature

Like it's said in the wiki,

I call these "clones", but that is a bit misleading - there's no original and cloned note - the notes in both of the parents categories are identical.

Another misleading thing about "cloning" is that it suggests that a copy of the note has been made. That's not really true, the note itself stays in just one original, it is just referenced in multiple places in the tree hierarchy. So changing it in one category changes it in all the others, because they're all the same note.

Indeed, the name 'clones' can be somewhat misleading as it implies that there must be an 'original'. But there's not - note clones are more like hardlinks in Windows. Multiple instances of the same note that can appear in several places inside the note tree, but are all essentially the same note. And I just thought: what if we call them note instances instead?

Additional Information

In general, each time a program runs, it is an instance of that program. In OOP languages, when we create an object of a class, it is an instantiation of that class. In similar way, as far as I can tell, a physical copy of a file is never called an instance, but a hardlink can.

I'm not sure if such naming would make things less or more complicated though, it's just a random idea that I got. Let me know what you think about it.

Also if you have any better ideas for naming note clones (or if you think that 'clones' is fine), please do share your ideas and thoughts as well :)

zadam commented 1 year ago

In my understanding, an "instance" implies the possibility of having different content. I can e.g. make two instances of class ArrayList, each having different elements. But "clones" actually have the same content.

meichthys commented 1 year ago

Perhaps 'linked clone' would be better at the expense of a longer name for the feature.

Dwindle2234 commented 1 year ago

Could we consider "mirror"? I think it fits nicely.

XXXJetfireXXX commented 1 year ago

In my understanding, an "instance" implies the possibility of having different content. I can e.g. make two instances of class ArrayList, each having different elements. But "clones" actually have the same content.

True... Now I understand why I still had a subtle feeling that it can also be misleading. That's a fair point x)

Perhaps 'linked clone' would be better at the expense of a longer name for the feature.

Could we consider "mirror"? I think it fits nicely.

I like these! While 'linked clone' is a more elaborative variant, 'mirror' also represents the true nature of the feature pretty precisely. However, imo when you want to refer to a particular cloned note, it would be more convenient to call it 'linked clone' rather than 'note mirror' or 'mirrored note' (note reflection? :D).

XXXJetfireXXX commented 1 year ago

'Linked clone' sounds like a good compromise between not changing the feature's name too much (less confusion for old users) while making its name less misleading in terms of what the feature does (less confusion for new users). It also goes as far as possible from the 'original/not original' concept, while keeping the word 'clones' intact.

meichthys commented 1 year ago

Just for reference, this discussion happened before in https://github.com/zadam/trilium/issues/1139 but neither mirror or 'linked clone' were mentioned that time.

Nriver commented 1 year ago

Notes in note tree are references to the original data. To end user, the cloned ones are synchronized copies.

But I'd go with clone, as it's shorter and easy to understand for new users.

XXXJetfireXXX commented 1 year ago

Sure, it is right that we don't actually see the data itself, we see the references that point to it within the note tree. But that level of abstraction (working with 'pointers' to data, not just notes) could only cause more confusion without understanding how data is being stored on a slightly deeper level x)

Dwindle2234 commented 1 year ago

"Notes in note tree are references to the original data"

Would this make every note a 'clone'...

XXXJetfireXXX commented 1 year ago

It just means that what we see are pointers to note data, not the notes themselves. :) There might be one 'pointer' to a note, or there might be multiple of these as well, all representing the same note in the tree.

XXXJetfireXXX commented 1 year ago

The closest analogy I can give are hard links, like mentioned above.

Nriver commented 1 year ago

"Notes in note tree are references to the original data"

Would this make every note a 'clone'...

Well, technically, this is right. A note in the note tree is 1 clone of the data. If there is more than 1 clone, there will be a html class called "multiple-parents" apply to the note in the tree, which will show a "*" after the note. https://github.com/zadam/trilium/blob/dc0a0dcf094f904bff4da3abc18f405470b38b37/src/public/app/widgets/note_tree.js#L771C17-L771C27

shutaozhenzhen commented 1 year ago

I think linked clone just more misleading, for it means there is a origin note and a link point to it. mirror is better, but I like use refer for clone is doing reference

zerebos commented 1 year ago

I like to think of every node in the tree as a pointer, so a clone note is just another pointer to the same note! But that's not very accessible terminology for less technical users. I think of all the suggestions so far, Mirror is perhaps the best option in terms of accuracy and accessibility to users.

Other terms I would throw out there would be peer (or companion) notes, joint (or joined) notes, reciprocal notes, or if we want to stick to the family-style naming like child, parent, sibling, etc, we could call them cousins 😄

sottey commented 1 year ago

I completely agree with the use of "mirror". Clone works for me, but mirror seems more "correct". A true clone originates from the copied item, but then can deviate from the base (in biology, that is), so mirror feels right.

view could also be used, as it indicates a view into the original, but view has been used to describe a subset of a main repository, so that isn't quote right.

Thanks for getting me thinking on this!

[UPDATE]: I also am liking the concept of a link or shortcut. A common understanding of "shortcut" is on an OS desktop, it just points to something,.

Mirror is still my top choice, but shortcut could also work.

zadam commented 1 year ago

Hmm, "mirror" sounds quite good indeed.

DreamHoney-J commented 10 months ago

How about "shadow".

rom1dep commented 9 months ago

I came up with "mirror"/"mirrored note" independently as part of #3087 (thanks @meichthys for the pointer),

I thought of "Shortcut" and "Link" as well, but the common acceptance for those two is that they derive from an "original" that is "truer" (as in, removing the "source" breaks the "reference"), whereas "mirrors" or "clones" are supposedly equivalent and impossible to tell apart, which I think is overall a more accurate characterisation of how trilium is handling this.

Hence my vote goes to "mirror"