Users might or might not remember what it does, so it doesn't matter but...
Consistency is key when people do expect it to work exactly the same as last time or as other controls.
Don't leave users in the dark as it might not do what the person was hoping or expecting. People might have to click twice to get the desired result. This gets even more annoying ...
I agree with other answers that either option A or option B is valid. But in some cases, this could highly depend on the
Read the analytics based on the above factors and decide it. Usually, the result will be closer to 50-50 but in rare cases, it could go to near 80-20. By that, one can decide which option to choose....
I would say that it doesn't really matter since both are valid and found in several different tools.
A user should adapt easily by trying it with no real risk for them behind that. Moreover the A and B would have the exact same result for your user if I'm right?
It's filters, if you don't filter anything, you want to show everything, if you include all the ...
I would suggest going with option B.
The reason for this is that it is being used as a filter and the most likely reason for the user clicking the parent is to reset the filter back to a "include all" state (which is having them all checked).
In fact it is unlikely that the user will ever want to deselect all of them anyway, as that would cause the ...
I have seen both done, and both are equally valid.
I'd consider the workflow, and see which is the more likely scenario for what the user wants to do:
User expands an installer, and the bare minimum is checked. Am I more likely to want to add the extra features, or remove them all for this module.
Does the average user want to ...