In relation to Set to Let, I would not try and change existing code to make use of let as a rule, so often when people revisit code, they can waste time introducing new errors, and at least you need to thoroughly test again.
Clearly vars was always somewhat limited and most likely let will be a better replacement moving forward in many cases. However sometimes if something’s behaviour is limited it immediately tells you something about the code, since vars can’t inherit the previous values, that is, there is no internal order dependency.
I would also suggest moving set to vars or let also only has some use cases, not for all cases. For example when nesting variables or setting only one variable, this differentiation is good, if for no other reason so you know what closed what. ie a set inside a let you will see </$set></$list></$let>
Its long being a convention for the close widget to not include any parameters but I have often wondered if it would help self documentation eg;
<$set name=varname value={{{ what ever }}}>
blah blah
</$set varname>
The above does not work;
The following should but I am not sure its reliable.
<$set name=varname value={{{ what ever }}}>
blah blah
</$set><!-- /varnname -->
Also let does not address emptyValue, index and subtiddlers, although there are equivalents they are less readable.
I expect I will still use vars in the particular case of setting variables for a macro or transclusion where there is no dependencies.
<$vars tiddlername="mytiddler" mode="update">
<<macrocall>>
or {{||transclusion}}
</$vars>
So if I see a $set or list of sets or a $let then I should expect interrelationships between variable’s.
Is there any other compelling reason to move from $vars to $let except as the need arises?