(Moved from Trello; you can vote for this feature and see past discussion at Trello)
This feature would allow you to “insert” an item elsewhere.
This is not a copy, as the updates of the original item will be reflected everywhere that it’s referenced this way.
“Clone” is a temporary name for this feature, lacking a better name. Cloning still indicates having multiple copies (in the sense of cloning an animal), but that’s not the case here. There’s only own copy, but there are multiple references (or images).
Questions to think about:
- What to do when the original item gets deleted? Do the clones get deleted or not?
- Should we allow “clone chaining”? That is, if you inserted B as a clone of A, would you be able to make a clone of B?
- Does clones show up as single result or multiple results when inserting internal link?
This is probably not something we would do in the next few months, but I just want to move here because the discussion is quite interesting.
Excerpts from previous discussions:
Tamas Becz said:
As I said, the usecase I would be trying to solve is mostly filtering things to different places: think of GTD maybe. I type up notes on a meeting (maybe starting from a template I copied). Later I want an action point from a meeting to be present on the next todo list, but still keep it in its original place, for multiple reasons:
Maintain context for the original for reference (Its often enough that a simple sentence todo item won’t be enough to be able to figure what exactly you wanted to do, there might also be the materials you need to use around where the todo has been used)
Keep updates consistent. If I tick something off, and later want to see it from the original context (ie, a followup meeting) then it should be simply reflected there as well, ass well as rewording, other tags, whatnot
In a sense, this is in this is an alternative to the flattened search results. What I am doing right now is i save bookmarks to filter out things based on dates and tags, to get a list like “give me all checklist items without a due date or a tag denoting a category (next, someday, etc)” as the inbox list, or “give me all checklists due until tomorrow, or marked next”. Right now these give a good filter of those things, but are cluttered out by the original outline parents. Flatten would help that. Instead what I could do is I could send it to a designated part of the tree as a clone. (okay, not the inbox search, because it is all about finding unhandled nodes anywhere) A big bonus for usability: I don’t have a problem with writing up the searches, but non-tech people will I guess be much easier with a [[ like functionality. But I guess whatever you come up with at the send to card should be used for consistency.
About the technical difficulty: yes, it’s related to how we do things right now. There’s also the concern of circular dependence (A refers B and B refers A).
For what I had in mind, you don’t have this I don’t think you need to think in terms of source and destination, they are both item A. Think of hard links of unix world. Exact same item, just in different parts of the tree (folders, if you follow the analogy).
It’s also pretty hard to design: there should be some indicator that this is not a normal item but a “cloned” item.
I think maybe you could do that with the bullet. Make it not full, or dashed, or something. I don’t think it is that very important to stand out. You willingly trigger such, and it is probably limited to certain places.
You should be able to easily see how many places refer to this time, for example.
Yes. in that sense this is similar to the “what links here” thing you also opened
Nevertheless I think it’s a convenience feature, on top of being able to link to places.
Yes. actually now that I found out if I just put a direct link to an item without the markdown link notation it updates everything I almost said it is good enough, but then I realized that it does not show up with a search (since it is just display I guess) nor does it inherit things like checkboxes.
Other trouble I can see: conflicting (numbered) list states, and maybe non-leaf nodes (through that might not be a problem at all)
mondayrobot said:
A few things I wanted to add to the conversation, this is a feature I wanted too (if I got the description right, please let me know if this is not what you guys wanted)
- I think the “traditional” name for this functionality is transclusion (Transclusion - Wikipedia)
- A good implementation of this is in Tiddlywiki : http://tiddlywiki.com/static/Transclusion%2520and%2520Substitution.html. They organize information in pieces of content called tiddlers (could be the equivalent of an item in dynalist). When editing tiddler B, you can use curly brackets surrounding the {{title of a tiddler A}}, which will display all of the content of tiddler A in tiddler B. Any modification made to the original, “transcluded” tiddler (A) will also automatically appear in tiddler B.
- You could use a mechanism similar to the “[[” link trigger, using “{{” to launch a clone/transclude trigger. After typing {{, you select the desired item, which will then be inserted as a clone/transclusion (an alternative: use drag + a modifier to create it). Using click + a modifier will allow you to modify the original content (and all its instances).
- I agree this is more a nice-to-have feature
yosemite said:
Just some thoughts to add to the discussion…
A good cloning feature would be very valuable to me. I would like to see tasks three ways:
- outline (e.g. by client > project > task)
- by importance (e.g. high medium low)
- by scheduled time (e.g. monday, tuesday, …)
I would like to be able to move things up and down (alt shift up/down) in the schedule - and sometimes in importance - without affecting the outline/context. I would like to be able to quickly edit the item anywhere it appears, including completing it, and have all instances change.
There are workarounds with tagging or links or whatnot but it is impossible to do this as efficiently without cloning as can be done with cloning.
Ideally, all clones are the same item. In other words it doesn’t matter which was “first”. And if children are added, all instances of the clone will show the same children. This might only work right if parent items specify their children, as opposed to children items specifying their parents. And there would have to be some anti-recursion logic, perhaps a rule that clones can’t be anywhere under any clone.
A graphical indicator that something is a clone might be nice.
It’s easy to find all clones - select all text in item, copy, go to search box, paste. A function to do so might be nice.
FYI vimflowy has cloning. GitHub - WuTheFWasThat/vimflowy: An open source productivity tool drawing inspiration from workflowy and vim