Add option "Auto Add Fake User" to user preferences

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

but the tooltip can say something like “Protect. Save this even if it is unused”.

I’m honestly unsure why my data needs protecting, ideally the software I use shouldn’t have a main objective of harming my data, and it should definitely not be harming my data in an operation called… [check notes]… save?

Having a fake user button or worse introducing checkboxes to control said button in the user prefs panel is akin to installing a “do not pump exhaust into the main cabin” switch in my car so it doesn’t harm me. Not harming me (or my data) isn’t a feature, it shouldn’t require switches or knobs! it ought to be the default behavior.

I’s been 1.5 years since @Ton said this deserved “top priority” but not a whole lot has happened from the core team in this area seemingly.

This PR/Proposal makes a valiant effort of protecting the user, but the data eating monster at the core is still very much there.

10 Likes

I think the garbage collector should just do its thing, and if you don’t use something, then you don’t need it.

1 Like

I think the garbage collector should just do its thing, and if you don’t use something, then you don’t need it.

I gonna respectfully disagree here, Blender deleting my node groups, textures, meshes and lying about it until I open the file again tomorrow because “I wasn’t using them” isn’t OK, was never OK, will never be OK. Delete your own internal stuff all you want, hands off the things the user makes.

15 Likes

Blender doesnot delete anything, user does.
In Blender objects are like folders and all the data are like files.
If you delete a folder on your OS, your files will also be deleted, and this has always been OK.

This is not true. A huge and massive amount of work has been made in order to realize the full context behind this issue.

2 Likes

Nope, if I have a material that I haven’t used on an object but still might need later, Blender will remove it unless I hit the Fake User button, that’s just poor UX, the program should NOT delete anything unless I tell it to, it currently works backwards, I have to tell it to please not remove any data, that makes no sense from a usability perspective.
Give me better options and UI to manage the data and decide what can be deleted, but don’t force me to learn a weird workaround to ask the program to keep my data intact.

2 Likes

all of them enabled by default

Currently when user manually deletes data, it’s not being removed, but rather marked as unused. And with all datablocks getting fake user by default, data will not be deleted ever.
The only way to remove data is through Outliner in Blender File mode.

What’s the point of setting all data with fake user by default? Just disable GC on save, at least that way File → Cleanup will continue to work.

1 Like

well, if we’re splitting hairs, technically blender didn’t “delete” anything, it just silently didn’t “save” it, the end result is the same though, my stuff is gone.

  1. Start with the basic cube
  2. Switch to the shader editor, make the cube a nice green, name the shader “ShaderA”
  3. Then go, you know what, maybe red be better, I don’t want to lose my green shader, so I click the new material button, change the color to Red, and name the shader “ShaderB”
  4. I flip between red and green a few times, hmm tough choice…leave the cube on red / ShaderB
  5. Save the file
  6. click the shader drop down, both ShaderA and ShaderB are there, all is good in the world, i’ll sleep on it and decide tomorrow!

next day, i made my choice! Green it is!

  1. Open the file from yesterday
  2. Only the red “ShaderB” is there now, shaderA vanished because “I wasn’t using it”

Nowhere in this use-case did I ever “delete” shaderA…it just…vanished, even though i checked after saving it was still listed.

but somehow this is my fault cause i didn’t check the “please don’t maul my data” button

14 Likes