Hi,
Navigating through bug/wishlist reports, I found this old onehttps://bugs.launchpad.net/inkscape/+bug/171993that was declared invalid, but I'd like to discuss a little more.
It's about clones behaviour in general. The 'svg' specification is very limiting with this respect, but I think there are svg compilant ways to get more freedom.
What I dislike in inkscape/pure svg clones:
-color/style management: it's very difficult to have objects share shape but not color. The parent's color has to be set to 'undifined', hence looking black, which generally means you'll have to hide it (as for custom stroke width, dashes..., they require the svg editor!). Moreover, one might want to have some clones share the fill color but have custom stroke, and/or someother share the stroke color but not the fill.This is doable using intermediate clones, but definitely not handy.
-transform management: create an object A, create a clone A' of it, put A' in a group G. Now select A and G and rotate them. A' is rotated twice!!! This is definitely non intuitive, and means you'd better move the parent object to a specific layer and never use it directly in your drawing if you don't want to bump into pretty bad situations.
-more generally, making a difference between the parent and the clones will always induce unexpected or non intuitive effects. IMO, parent and clones should be prefectly symetric.
One naive way to improve this would be to have our own "inkscape:clone" objects of course, and let them behave exactly the way we want.
I'd like to suggest another intermediate option. I think svg clones are mainly disgned for "internal" use. My experience is that each time I had to use them, I indeed did end up putting the parent in a separate layer (at least away from the main drawing) and work with clones only. We could automate this process:
When an object is cloned, not only the clone is created, but the parent is also moved to a special hidden layer (or in the defs, why not?, or simply hidden) and replaced by another clone.
+ all visible instance of the "thing" can be manipulated, grouped, transformed, uniformly. + it makes it possible to let the clone inherit only some style properties of the parent: at creation time, the parent's style would be moved to an "inkscape:default_clone_style" attribute, and the style itself would be set to undefined. Inkscape would compare clone's style to the "default_clone_style" to detect user modified properties, and maintain all style changes accordingly. +finally, it would be so nice to be able, whenever the user attempts to node-edit a clone, hide the clone itself, replace it by a temporary copy of the parent, and transfer the modifications to the parent.
Of course, there are issues: in particular, the parent may appear as a reference anywhere else in the document. Changing it's style to undifined might have unexpected results. One solution would be to use an intermediate object: an inkscape special object that would be a linked copy of the parent, but have the style attribute set to undefined, and have the clones point to this linked copy.
Ok, this might sound too complex. This can be declined in softer versions: for instance, instead of making this automatic and transparent to the user, we could at least offer the possibility *at least offer the user the possibility to automatically move the parent to a separate layer *when the user attempts to set the style of a clone when it does not make sens, suggest either setting the style of the parent or setting the parent's style to undefined and transfer the actual style to all existing clones.
What do you think?
Cheers, jfb.