Add option "Auto Add Fake User" to user preferences #113356
Labels
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
No due date set.
Dependencies
No dependencies set.
Reference: blender/blender#113356
Loading…
Reference in New Issue
No description provided.
Delete Branch "%!s(<nil>)"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
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.
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:
Add option "Auto Add Fake User" to user preferences.to Tackling the long standing problems with the "Fake User" system.#106321
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.
Why not new panel like this below that one for 'Auto Add Fake User' where you can customize.
@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:
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).
@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:
I strongly recommend the latter option.
Tackling the long standing problems with the "Fake User" system.to Add option "Auto Add Fake User" to user preferencesThe problem of such kind of a solutions is that they fit personal use only.
Proper solution which could satisfy collaboration conditions is still unknown.
@1D_Inc
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.
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?
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?
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?
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.
@1D_Inc
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.@Rawalanche
I'll just refer to my PR description:
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.
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.