[Bf-committers] Keeping data blocks by assigning a fake user to them is counter intuitive and leads to data loss - animation Actions
blurymind at gmail.com
Thu Feb 12 21:44:04 CET 2015
Hi everyone, I posted abut this in a bug report at the tracker here:
There is also a thread at blender artist where it is discussed:
If you have already seen it, sorry for the spam. I was told by someone at
Blenderartist to write about it here, since it might get more developer
I am going to try and put in perspective my observations. Since I am an
animator, this has affected me when saving my Actions with the action
*What is the issue?*
Whenever you create a new Action (or any other type of a datablock) in
blender, by default that Action is set to be purged when you close the
application. Blender does not keep any newly created *datablocks.* That is
the default behavior !
To makes matters even worse- it does NOT warn the user in any shape or form
that their hours worth of work will not be saved when they press ctrl+s.
And every Action is by default set to be purged the moment it is created.
The user is literally working on an Action that the software will purge by
default if they forget to assign a fake user to it.
In order to keep a datablock, the user has to click on the obscure little
"F" button every time they create a new Action. This is really easy to
forget/overlook even by more experienced users.
1.Blender is not visually communicating to the user that the datablock (be
it a material or an Action) will not be kept when they close the software!
It unfortunately opens the opportunity for human error, since no other
software has a similar system for keeping data. Comments from the bug
tracker and blenderartist suggest that I am not the only one who lost data
*Suggested solution:* Add an asterisk (*) symbol at the end of the
datablock's name whenever it has no users and is about to be purged when
closing the software.
If the Action is called " myAnimation " blender should display it in the
actions list as " myAnimation* " when it has no users and is about to get
purged when closing the application.
That is how blender (and other software) already warns users of a texture
that is not yet saved.
2. Why is blender not automatically assigning the object that you created
the Action for to be the user of that Action by default? Why does one have
to add an extra fake user to every datablock that they want the software to
keep? Isn't that kind of strange and counter-intuitive?
To the user it looks like that datablock then has 2 users and to their work
adding the "Fake" one makes no sense. Blender is also not communicating the
correct number of users of a datablock that way. There will always be that
extra "Fake" one left somewhere in there.
*Suggested solution:* When a user creates a new datablock - make blender
check what the active object is and assign that object to be the user of
that datablock automatically. Since the datablock has at least one user-
then blender should by default keep the datablock and not require the user
to add a second -fake user every time in order to keep it.
3. Blender Automatically purges all datablocks that have no user assigned
to them when you close it - without communicating that to the user. This is
counter intuitive in a harmful way, since it is initially not clear why the
data has been lost. It makes it look like a bug in the software, rather
than a human error. So naturally people will blame the software and then
the software design for losing their work.
*Suggested solution:* Let the user execute the PURGE command during
workflow- with a confirmation. That is how it works everywhere else in
blender and all other software. Deleting any data - whether it is needed or
not- is always in the hands of the artist, the software warns about it
clearly when requested.
It can be done with an Operator- with a single click and even show in the
terminal which datablocks were purged.
Using the literal closing and reopening of the entire software to clean up
unused datablocks is counter-intuitive and problematic. Here is an example
of a developer who had trouble with it:
Please, check the links at the start of this post and read user comments
and feedback for more information.
Post by on the fake user system back from 2012:
GUI design document compiled by blender users:
The "fake user", and not used data vanishing when closing Blender, is not
very intuitive. More intuitive would be if the data, along with unlink (the
X at the moment), would have a delete data option (with a "Are you sure?"
The necessity to set a fake user for a material, or other data, for it not
to vanish, and data vanishing without a confirmation, is against all UI
design principles - where an action is required to not do an operation.
That would allow, for instance, remove a material that is no longer needed,
from all objects that are using it in some material slot. At the moment,
you have to manually remove the material from each slot.
Shift-click on X won’t remove the materials in the current session.
It is also bad design to use th e closing and opening of the program as an
interface element. Currently, when you delete for instance, a high-poly
object, and save the file, the file’s size won’t change. You have to save
the file, close and reopen the program, and save the file again, to get the
reduced file size.
I hope we find a good solution for the fake user issue. User data should
be treated sacred. It is never fun losing hours of work.
More information about the Bf-committers