Add option "Auto Add Fake User" to user preferences #113356

Closed
opened 2023-10-06 17:54:56 +02:00 by Hoshinova · 20 comments
Member

Corresponding Devtalk topic: https://devtalk.blender.org/t/add-option-auto-add-fake-user-to-user-preferences/31619

I have made a PR which addresses the long discussed problems of the Fake User system https://devtalk.blender.org/t/blender-deleted-my-un-assigned-materials-how-is-that-a-feature-fake-user/22715 and https://devtalk.blender.org/t/blender-user-interface-design/505.

It adds an option called "Auto Add Fake User" which, when enabled, automatically adds a Fake User to any new Material, World, Texture, and Geometry Nodes group when it is created, copied or made single-user.
Other data-types can be added later on if necessary.

1.png

It doesn’t replace the underlying system in general, but it would significantly reduce the problem of user’s materials, geo nodes group, etc. getting deleted without the user’s knowledge.

Apart from that few design questions remain:

  1. Should it be enabled by default?
  2. The default Material (from the default cube), Grease Pencil Material (when adding a Grease Pencil Monkey) and World don't have a Fake User added to them even when "Auto Add Fake User" is checked. Should that be changed?
Corresponding Devtalk topic: https://devtalk.blender.org/t/add-option-auto-add-fake-user-to-user-preferences/31619 I have made a [PR](https://projects.blender.org/blender/blender/pulls/113247) which addresses the long discussed problems of the Fake User system https://devtalk.blender.org/t/blender-deleted-my-un-assigned-materials-how-is-that-a-feature-fake-user/22715 and https://devtalk.blender.org/t/blender-user-interface-design/505. It adds an option called "Auto Add Fake User" which, when enabled, automatically adds a Fake User to any new Material, World, Texture, and Geometry Nodes group when it is created, copied or made single-user. Other data-types can be added later on if necessary. ![1.png](/attachments/21fae21b-3c24-452e-81c8-d8696d182089) It doesn’t replace the underlying system in general, but it would significantly reduce the problem of user’s materials, geo nodes group, etc. getting deleted without the user’s knowledge. Apart from that few design questions remain: 1) Should it be enabled by default? 2) The default Material (from the default cube), Grease Pencil Material (when adding a Grease Pencil Monkey) and World don't have a Fake User added to them even when "Auto Add Fake User" is checked. Should that be changed?
Hoshinova added the
Type
Design
label 2023-10-06 17:54:56 +02:00
Hoshinova changed title from Add option "Auto Add Fake User" to user preferences. to Tackling the long standing problems with the "Fake User" system. 2023-10-06 17:56:17 +02:00
Iliya Katushenock added this to the Core project 2023-10-06 17:57:54 +02:00
https://projects.blender.org/blender/blender/issues/106321
Contributor

While I see logic in data-types you chose, it is still arbitrary, and not communicated to user. One will expect that all data types are assigned fake user when this is enabled. And some might want different choices. For example I don't want Textures saved I hate them, and I would also like the ability to disable automatic fake user to Texts.

image

Why not new panel like this below that one for 'Auto Add Fake User' where you can customize.

While I see logic in data-types you chose, it is still arbitrary, and not communicated to user. One will expect that all data types are assigned fake user when this is enabled. And some might want different choices. For example I don't want Textures saved I hate them, and I would also like the ability to disable automatic fake user to Texts. ![image](/attachments/10e2f19b-cfcc-4496-828f-70af6326c5a4) Why not new panel like this below that one for 'Auto Add Fake User' where you can customize.
Author
Member

@Nika-Kutsniashvili Having an individually toggle for data-types makes sense. In that case I'd make an individual option for all the different data-types mentioned in my PR except for Freestyle Line Style data-blocks.
The reasoning behind that is that:

  1. I usually see users complain about their node trees being deleted, while it's much rarer to see users complain about Blender deleting e.g. their mesh data.
  2. It's probably better to incrementally add these options, instead of adding them all at once in a single huge PR.
@Nika-Kutsniashvili Having an individually toggle for data-types makes sense. In that case I'd make an individual option for all the different data-types mentioned in my PR except for Freestyle Line Style data-blocks. The reasoning behind that is that: 1) I usually see users complain about their node trees being deleted, while it's much rarer to see users complain about Blender deleting e.g. their mesh data. 2) It's probably better to incrementally add these options, instead of adding them all at once in a single huge PR.
Contributor

I think logical way to incorporate data blocks would be to have option for ones that are becoming userless when OTHER data-blocks are deleted. Those cases are frustraiting because you probably didn't know you were also losing other data-types when you deleted one.

So what you mentioned makes sense, and line style data block isn't child of anything else, so there is little chance you lose it accidentally.

I would also add Image in your list. That would solve issue of your painted textures being lost.

I think logical way to incorporate data blocks would be to have option for ones that are becoming userless when OTHER data-blocks are deleted. Those cases are frustraiting because you probably didn't know you were also losing other data-types when you deleted one. So what you mentioned makes sense, and line style data block isn't child of anything else, so there is little chance you lose it accidentally. I would also add Image in your list. That would solve issue of your painted textures being lost.

We already have several designs/discussions topics related to this issue (see #61209 and its linked other tasks). In a nutshell, general idea would be to completely remove the 'Fake User' option, write all IDs by default on filesave (with option to instead do a recursive purge to remove or skip all non-used IDs), and improve deletion of 'related' data (e.g. delete the mesh and materials when the user deletes the Object, if they are not used elsewhere). Assets could also come into play here, as a more semantically-rich replacement of 'fake user'. But all of this is still very much in need of actual proper design.

I do not think the proposed change here is a good one - as already said, it is only a band-aid, and it adds even more confusion to an already very complicated and confusing situation. On a side note, the naming and location of the proposed option is also wrong (this has nothing to do with nodes in particular, and it should convey somehow which type of data is affected by it).

We already have several designs/discussions topics related to this issue (see #61209 and its linked other tasks). In a nutshell, general idea would be to completely remove the 'Fake User' option, write all IDs by default on filesave (with option to instead do a recursive purge to remove or skip all non-used IDs), and improve deletion of 'related' data (e.g. delete the mesh and materials when the user deletes the Object, if they are not used elsewhere). Assets could also come into play here, as a more semantically-rich replacement of 'fake user'. But all of this is still very much in need of actual proper design. I do not think the proposed change here is a good one - as already said, it is only a band-aid, and it adds even more confusion to an already very complicated and confusing situation. On a side note, the naming and location of the proposed option is also wrong (this has nothing to do with nodes in particular, and it should convey somehow which type of data is affected by it).
Author
Member

@mont29 What I propose here isn't supposed to be final solution to the Fake User problems but rather a temporary fix until a new data management system replaces the current one.

You rarely hear users complain about their mesh data being deleted on file save after they deleted the object with that mesh data, because in most user's perspective the mesh data is directly related to the object. However in actuality there is no relation between the mesh data and the object in Blender. Instead the mesh data is kept until the file is saved, but most users aren't aware of that and assume the mesh data is deleted as soon as the object is deleted.
In the case of mesh data the Fake User system works fine, it's only when it comes to data that users don't usually assume to be related to certain objects such as materials, geometry node groups, etc. where the system shows it's problems. #113247 alleviates those problems by making these data-blocks have a Fake User upon creation thus preventing them from being deleted accidentally. If an user now wants to delete a Material he has to uncheck the Fake User button, thereby telling Blender that it's OK to delete it and the Material is deleted upon file save. Thus the Fake User button effectively becomes a deletion button (just without the trashcan symbol).

Apart from that I don't see how having these options "adds even more confusion" to the situation. The entire PR consists of 103 lines of neither complicated nor confusing code. The effects of toggling the options on or off are clearly stated to the user including what data-types are affected.

I'm aware that there already are several designs/discussions topics related to this. However I'm also aware of the fact that little has happened ever since #61209 was opened over 5 years ago.
And without hearing much about progress having been made regarding it since, I honestly wouldn't be surprised if it took another 5 years until the current system gets completely replaced.
It almost seems like we simply gave up on fixing it, please correct me if I'm wrong.

But even if there are ongoing efforts in replacing the current system it would still take a long time until it really becomes ready for release, especially since it's such a large topic.
Until then there are essentially 2 options:

  1. Do nothing until the new data management system is released in Blender X.0. Getting back at my metaphor that would just be like letting the stab wound bleed until it's fixed some time in the far future. Though what were losing here isn't blood but countless hours of work.
  2. Do something. In this case prevent Blender from deleting the most commonly affected data types until the new data management system is released. That doesn't fix the stab wound immediately but at least significantly reduces the bleeding.

I strongly recommend the latter option.

@mont29 What I propose here isn't supposed to be final solution to the Fake User problems but rather a temporary fix until a new data management system replaces the current one. You rarely hear users complain about their mesh data being deleted on file save after they deleted the object with that mesh data, because in most user's perspective the mesh data is directly related to the object. However in actuality there is no relation between the mesh data and the object in Blender. Instead the mesh data is kept until the file is saved, but most users aren't aware of that and assume the mesh data is deleted as soon as the object is deleted. In the case of mesh data the Fake User system works fine, it's only when it comes to data that users don't usually assume to be related to certain objects such as materials, geometry node groups, etc. where the system shows it's problems. https://projects.blender.org/blender/blender/pulls/113247 alleviates those problems by making these data-blocks have a Fake User upon creation thus preventing them from being deleted accidentally. If an user now wants to delete a Material he has to **uncheck** the Fake User button, thereby telling Blender that it's OK to delete it and the Material is deleted upon file save. Thus the Fake User button effectively becomes a deletion button (just without the trashcan symbol). Apart from that I don't see how having these options "adds even more confusion" to the situation. The entire PR consists of 103 lines of neither complicated nor confusing code. The effects of toggling the options on or off are clearly stated to the user including what data-types are affected. I'm aware that there already are several designs/discussions topics related to this. However I'm also aware of the fact that little has happened ever since https://projects.blender.org/blender/blender/issues/61209 was opened over 5 years ago. And without hearing much about progress having been made regarding it since, I honestly wouldn't be surprised if it took another 5 years until the current system gets completely replaced. It almost seems like we simply gave up on fixing it, please correct me if I'm wrong. But even if there are ongoing efforts in replacing the current system it would still take a long time until it really becomes ready for release, especially since it's such a large topic. Until then there are essentially 2 options: 1) Do nothing until the new data management system is released in Blender X.0. Getting back at my metaphor that would just be like letting the stab wound bleed until it's fixed some time in the far future. Though what were losing here isn't blood but countless hours of work. 2) Do something. In this case prevent Blender from deleting the most commonly affected data types until the new data management system is released. That doesn't fix the stab wound immediately but at least significantly reduces the bleeding. I strongly recommend the latter option.
Hoshinova changed title from Tackling the long standing problems with the "Fake User" system. to Add option "Auto Add Fake User" to user preferences 2023-10-17 20:48:38 +02:00

The problem of such kind of a solutions is that they fit personal use only.
Proper solution which could satisfy collaboration conditions is still unknown.

The problem of such kind of a solutions is that they fit personal use only. Proper solution which could satisfy collaboration conditions is still unknown.
Author
Member

@1D_Inc

The problem of such kind of a solutions is that they fit personal use only.

Why do you think it wouldn't work for collaboration conditions?

@1D_Inc >The problem of such kind of a solutions is that they fit personal use only. Why do you think it wouldn't work for collaboration conditions?

Because if data is autofaked during collaboration the data is supposed to be shred by the other participant user or all the participants are supposed to live in massive dump of someone's data.

Autofake concept mixes up useful data and trash data into usortable pile of data.
This cause heavy production conflicts which quickly became critical when the amount of data became massive.

Because if data is autofaked during collaboration the data is supposed to be shred by the other participant user or all the participants are supposed to live in massive dump of someone's data. Autofake concept mixes up useful data and trash data into usortable pile of data. This cause heavy production conflicts which quickly became critical when the amount of data became massive.
Author
Member

In that case just turning "Add Auto Fake User" off would solve the issue.

In that case just turning "Add Auto Fake User" off would solve the issue.

Would you personally appreciate turning it off if there would be such an option available?

Would you personally appreciate turning it off if there would be such an option available?
Author
Member

If such problems come up during collaboration it should be company policy making decisions to resolve the problem, not personal preference.

So yes.

If such problems come up during collaboration it should be company policy making decisions to resolve the problem, not personal preference. So yes.

And if you are a freelancer who work with several companies with different requirements (different options set), would not be that mind messing?

And if you are a freelancer who work with several companies with different requirements (different options set), would not be that mind messing?
Author
Member

If turning a checkbox on or off in the user preference could be considered "mind messing" then the rest of Blender would equal literal rocket science.

If turning a checkbox on or off in the user preference could be considered "mind messing" then the rest of Blender would equal literal rocket science.

So, if you have 10 projects, in some you have to save materials, in some you have to save only textures and in some you have to save only geonodes but not the others, it could not be considered as "mind messing", and you will never lose data trying to satisfy those conditions, switching between those projects?

So, if you have 10 projects, in some you have to save materials, in some you have to save only textures and in some you have to save only geonodes but not the others, it could not be considered as "mind messing", and you will never lose data trying to satisfy those conditions, switching between those projects?
Contributor

I really hope this doesn't come through. I am all for unused data not getting nuked, but adding 4 random data-block types someone subjectively cherry picked out of dozens as checkboxes to user preferences is really poor way. Certain types of datablocks, such as materials or geometry nodes should always be saved, it should not even be an option.

At the same time, if other datablock types, such as meshes, got always saved, that would be a scene and memory management disaster. This needs to be approached more systematically.

I really hope this doesn't come through. I am all for unused data not getting nuked, but adding 4 random data-block types someone subjectively cherry picked out of dozens as checkboxes to user preferences is really poor way. Certain types of datablocks, such as materials or geometry nodes should always be saved, it should not even be an option. At the same time, if other datablock types, such as meshes, got always saved, that would be a scene and memory management disaster. This needs to be approached more systematically.
Author
Member

@1D_Inc

So, if you have 10 projects, in some you have to save materials, in some you have to save only textures and in some you have to save only geonodes but not the others, it could not be considered as "mind messing", and you will never lose data trying to satisfy those conditions, switching between those projects?

If you're in such a situation just uncheck Auto Add Fake User for all data-blocks in all projects.
Auto Add Fake User is just an option, nobody forces you to use it.

@1D_Inc > So, if you have 10 projects, in some you have to save materials, in some you have to save only textures and in some you have to save only geonodes but not the others, it could not be considered as "mind messing", and you will never lose data trying to satisfy those conditions, switching between those projects? If you're in such a situation just uncheck `Auto Add Fake User` for all data-blocks in all projects. `Auto Add Fake User` is just an **option**, nobody forces you to use it.
Author
Member

@Rawalanche

I really hope this doesn't come through. I am all for unused data not getting nuked, but adding 4 random data-block types someone subjectively cherry picked out of dozens as checkboxes to user preferences is really poor way.

I'll just refer to my PR description:

Other data-types can be added later on if necessary.

Certain types of datablocks, such as materials or geometry nodes should always be saved, it should not even be an option.

At the same time, if other datablock types, such as meshes, got always saved, that would be a scene and memory management disaster. This needs to be approached more systematically.

That's just your opinion. Other users might want other data-blocks to be automatically saved or deleted. This is why I'm making it an option, so everyone can have Blender save and delete data-blocks according to their preferences.

@Rawalanche > I really hope this doesn't come through. I am all for unused data not getting nuked, but adding 4 random data-block types someone subjectively cherry picked out of dozens as checkboxes to user preferences is really poor way. I'll just refer to my PR description: >Other data-types can be added later on if necessary. > Certain types of datablocks, such as materials or geometry nodes should always be saved, it should not even be an option. > > At the same time, if other datablock types, such as meshes, got always saved, that would be a scene and memory management disaster. This needs to be approached more systematically. That's just your opinion. Other users might want other data-blocks to be automatically saved or deleted. This is why I'm making it an option, so everyone can have Blender save and delete data-blocks according to their preferences.
Contributor

That's just your opinion.

My opinion and also how pretty much any other DCC out there works.

My worry is that once these options will get added, they will never be removed in future. There won't ever be a proper solution.

> That's just your opinion. My opinion and also how pretty much any other DCC out there works. My worry is that once these options will get added, they will never be removed in future. There won't ever be a proper solution.

I don't think this patch/design will be accepted. See also Brechts reply at https://devtalk.blender.org/t/add-option-auto-add-fake-user-to-user-preferences/31619/165

So thanks for the idea and the PR but I suggest to close this one.

I don't think this patch/design will be accepted. See also Brechts reply at https://devtalk.blender.org/t/add-option-auto-add-fake-user-to-user-preferences/31619/165 So thanks for the idea and the PR but I suggest to close this one.
Blender Bot added the
Status
Archived
label 2023-11-03 10:15:13 +01:00
Sign in to join this conversation.
No Label
Interest
Alembic
Interest
Animation & Rigging
Interest
Asset Browser
Interest
Asset Browser Project Overview
Interest
Audio
Interest
Automated Testing
Interest
Blender Asset Bundle
Interest
BlendFile
Interest
Collada
Interest
Compatibility
Interest
Compositing
Interest
Core
Interest
Cycles
Interest
Dependency Graph
Interest
Development Management
Interest
EEVEE
Interest
EEVEE & Viewport
Interest
Freestyle
Interest
Geometry Nodes
Interest
Grease Pencil
Interest
ID Management
Interest
Images & Movies
Interest
Import Export
Interest
Line Art
Interest
Masking
Interest
Metal
Interest
Modeling
Interest
Modifiers
Interest
Motion Tracking
Interest
Nodes & Physics
Interest
OpenGL
Interest
Overlay
Interest
Overrides
Interest
Performance
Interest
Physics
Interest
Pipeline, Assets & IO
Interest
Platforms, Builds & Tests
Interest
Python API
Interest
Render & Cycles
Interest
Render Pipeline
Interest
Sculpt, Paint & Texture
Interest
Text Editor
Interest
Translations
Interest
Triaging
Interest
Undo
Interest
USD
Interest
User Interface
Interest
UV Editing
Interest
VFX & Video
Interest
Video Sequencer
Interest
Virtual Reality
Interest
Vulkan
Interest
Wayland
Interest
Workbench
Interest: X11
Legacy
Blender 2.8 Project
Legacy
Milestone 1: Basic, Local Asset Browser
Legacy
OpenGL Error
Meta
Good First Issue
Meta
Papercut
Meta
Retrospective
Meta
Security
Module
Animation & Rigging
Module
Core
Module
Development Management
Module
EEVEE & Viewport
Module
Grease Pencil
Module
Modeling
Module
Nodes & Physics
Module
Pipeline, Assets & IO
Module
Platforms, Builds & Tests
Module
Python API
Module
Render & Cycles
Module
Sculpt, Paint & Texture
Module
Triaging
Module
User Interface
Module
VFX & Video
Platform
FreeBSD
Platform
Linux
Platform
macOS
Platform
Windows
Priority
High
Priority
Low
Priority
Normal
Priority
Unbreak Now!
Status
Archived
Status
Confirmed
Status
Duplicate
Status
Needs Info from Developers
Status
Needs Information from User
Status
Needs Triage
Status
Resolved
Type
Bug
Type
Design
Type
Known Issue
Type
Patch
Type
Report
Type
To Do
No Milestone
No project
No Assignees
7 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: blender/blender#113356
No description provided.