Add option "Auto Add Fake User" to user preferences

I have made a PR which addresses the long discussed problems of the Fake User system Blender Deleted My Un-assigned Materials - How is That A Feature? - Fake User and Blender user interface design.

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.

I’m making this topic because the original design task and PR are stalling due to a lack of interest.

In fact there seems to be no interest in doing anything about this at all. The current consensus seems to be that instead of doing anything about it we should rather work on some kind of perfect replacement data-management solution, which would get released in the far future. Meanwhile we just take the hit and let countless hours of work get unknowingly deleted.

So if anyone has anything to say about this solution in particular please leave a comment here or in the original design task. Please don’t discuss any proposals for replacement data-management solutions as implementing them would take years.
This topic is meant to be about a temporary solution which can be easily implemented until then.

20 Likes

I made a proposal for this quite a long ago:

I think this should be solved in more complex and forward-future looking manner than polluting user preferences.

Auto add fake user set of user preferences is unfortunately a sticks and stones solution. More of a tradeoff, since you won’t get your work nuked randomly, but there’s still no convenient place to search, manage and clean up datablock you no longer need, so clutter would start to pile up.

3 Likes

@LudvikKoutny

I made a proposal for this quite a long ago:

I want to talk about #113356 - Add option "Auto Add Fake User" to user preferences - blender - Blender Projects in particular, as I’m interested in creating a temporary solution which can be easily implemented instead of a complete overhaul of the entire data-management system, as that would take years.

Auto add fake user set of user preferences is unfortunately a sticks and stones solution. More of a tradeoff, since you won’t get your work nuked randomly, but there’s still no convenient place to search, manage and clean up datablock you no longer need, so clutter would start to pile up.

Speaking from experience it’s much worse to have your data being deleted compared to Blender keeping it when you don’t need it anymore. Since there is an individual option for every type of data-block users can check or uncheck it according to their preferences.

3 Likes

I honestly think that practical implementation would take about 2 weeks for someone experienced/familiar with Blender’s source code, or about 2 months at most for a new developer. What would take a years to solve would probably be just sorting out disagreements between core developers who will likely be against and and users who will mostly be for it.

Funnily enough, there’s one rare case where auto fake user already happens in Blender. The text datablocks. It’s a great example of the double standards. The programmers/developers could not bare the idea of the code they wrote just disappearing if they forgot to click something, but when it comes to art (materials, GN networks, etc…) somehow that’s completely acceptable :slight_smile:

5 Likes

I honestly think that practical implementation would take about 2 weeks for someone experienced/familiar with Blender’s source code, or about 2 months at most for a new developer. What would take a years to solve would probably be just sorting out disagreements between core developers who will likely be against and and users who will mostly be for it.

To that I can only show #61209 - Always write unused IDs on save - blender - Blender Projects . It’s been over 5 years now.
Your assumption that it “would take about 2 weeks for someone experienced/familiar with Blender’s source code, or about 2 months at most for a new developer” to overhaul the entire data management system is, let’s just say very optimistic.
It’s not just about writing the code, there are design questions, performance considerations, code review, etc. .

Funnily enough, there’s one rare case where auto fake user already happens in Blender. The text datablocks. It’s a great example of the double standards. The programmers/developers could not bare the idea of the code they wrote just disappearing if they forgot to click something, but when it comes to art (materials, GN networks, etc…) somehow that’s completely acceptable

I take that as an argument for having the Auto Add Fake User options.

2 Likes

Thank you. Since I don’t think a proper re-design of the data management system will happen anytime soon, I’m all for it.
And any data-type that can have a Fake User should be on that list

4 Likes

I do not like this solution, it seems that by default it will be disabled, so unaware user would not benefit from it until it’s too late. And aware user already knows where to tick all the right boxes.

1 Like

I know what you mean, but I am afraid that if we get primitive solution there will be all the less incentive to have a proper one in the future.

There’s a great saying: “There’s nothing more permanent than a temporary solution.”

@Mikhail_Rachinskiy If that’s the concern we could just have it enabled by default.

2 Likes

Currently there seems to be no incentive of creating a proper solution anyway.
So I’d rather have a temporary solution rather than no solution at all

2 Likes

I support this PR 1000%, and thank Hoshinova for proposing it.

The situation with FakeUser is not good, and while I would prefer the solution be dealt with at the data management system - seriously, this debate goes back years and there’s absolutely no reason to believe that there’s much interest elsewhere in resolving it in the near future in that way.

This proposal was excellent. It’s been 18 months, with no forward progress than I can see. Perhaps one day someone will care very much about this, and change code… but for the present, it appears not. I prefer that the current solution not be “bad UX, because no time to rewrite data core.”

Yes, it adds visual elements to the Preferences… so what? I think the last place we should be concerned about cluttering is the preference window. How much time are people spending in their preferences all day, instead of actually using the program…?

UX should always take precedence over that window layout, and the fake user UX is not good at all. I believe most users would prefer they not lose their materials and data due to the shield icon, compared to a few more preference checkboxes.

Should it be on by default? I’ll say yes - it should, and others will just as forcefully answer NO. It’s better for new users for it to be activated, but I hope that this point will not turn into another debate that lasts for 5 years, while the problem remains completely unsolved. If “default OFF” gets this PR across the finish line, so be it.

4 Likes

Then default values should be included in the proposal.

Other than that, there are other issues:

  • Why options so limited, why not include all datablocks? As far as I know text and action datablocks already default with fake user enabled, why they are not on the list?
  • “GN Node Groups” option is overly specific, it should be just “Node Groups”.
2 Likes

I’m all for it until the redesign is actually happening. The topic has been discussed quite a few times already, now. And very lengthy as well:

https://devtalk.blender.org/t/blender-deleted-my-un-assigned-materials-how-is-that-a-feature-fake-user/

Proposal: Explicit Management of Data Blocks and (possible) Deprecation of Fake User (already posted by @thorn-neverwake )

I am also on the side that this has to be active by default. Though after reading through the issue on projects I do agree that an auto-purge solution and user awareness to purging unused data is actually a good thing. I just also vehemently disagree that unassigned animations and materials are actually automatically “unused” as well. If they are by company policy then this should be settable in the options. There have been many good and not so good options and ideas about it. The topic is in progress, ongoing and has entered “analysis paralysis” mode years ago, unfortunately.

I know what you mean, but I am afraid that if we get primitive solution there will be all the less incentive to have a proper one in the future.
There’s a great saying: “There’s nothing more permanent than a temporary solution.”

There’s another great saying: “the worst decision is indecision”. :man_shrugging:

3 Likes

There is another issue with the proposal, say we have options for all datablocks and some of them enabled by default. Some users would naturally change defaults to their liking; then what we have is discrepancy in user settings, and if one user saves over a file from another user — there will be loss of information.

Ultimately this proposal does not fix the issue, it just makes it more complex and less predictable.

1 Like

As the checkbox state only affects data upon creation - NOT resetting the state of all existing “unshielded” data, then I don’t think this is an issue.

4 Likes

I forgot it’s a datablock property :sweat_smile:

Any change for the user would be good.
The phrase ’ Fake User’ doesn’t even have any obvious practical relationship between the words and the function (it may have some correlation to the developer, but it does not carry through to the UX).

1 Like

It’s terrible nomenclature. For quite awhile when i started using blender, i thought the term “user” meant “the guy in the chair using this program”, and had no clue how there might be a fake one.

5 Likes

Yeah same. Even after reading the docs I didn’t really understand it until after I randomly lost materials and animations a few times. For me it was one of these cases where reading about the concept makes absolute sense after I already understand the concept.
The guys from flipped normals also immediately reported is as a “nasty bug” when they started switching to Blender.

3 Likes

I’m probably thinking of this too naively, but it seems like we just need this PR but with all types shown and all of them enabled by default. And with no mention of “data-blocks”, “Fake User” or even “user”. “Save this type of data when unused” might work.

Then we need easier cleanup, with this: #106653 - UI: Cleanup Dialog to Manage Orphaned Data - blender - Blender Projects but it should also not mention “data-blocks” but just “data”.

The “Fake User” button can keep the “shield” icon, but the tooltip can say something like “Protect. Save this even if it is unused”.

Isn’t that enough?

13 Likes