Should we avoid assignment of derived types in robust programs?

Thank @aradi for bringing this up. Being a green hand on derived types, I have recently been working on a derived type containing allocatable components (see A derived type containing a callback function as a member). The questions raised by @aradi seems quite important according to my very limited understanding. I look forward to seeing some discussions, even though I cannot input anything for lack of experience.