I would appreciate ideas or sample code on how the topic can be implemented.
The use case for this feature is that sometimes historical data needs to be preserved and readily available. However, some fields may have outdated information so the content needs to be updated. Instead of creating a new content type and filling-out all fields, I want to copy existing values of an item and make them available in the add form so that the user just needs to update some fields. This would save the user some time.
I am aware of version histories. However, I will be relating items to other objects. I think it will be more work to use specific versions in views and queries. For now, I am going with a simple copy, paste, redirect to edit view. And then manage drafts via a script to archive un-submitted copies.