I think that we still have consensus that something needs to be done that involves some combination of better error messages, better documentation, the first-hit-rule, soft global scope and possible divergence of REPL and script behavior.
So there is no need to rehash the (at times very heated) discussion about the strategic decisions about how approachable julia is meant to be for non-technical users.
As far as I understood, the issue simply dropped in the personal priority queue of the people who could implement and meaningfully decide on it, and will simmer for some time. We have a reasonable PoC for first-hit-rule and soft global scope, and most people here could contribute to the docs.
I am personally still very partial towards improving the error messages first. My preferred improvement would be that
UndefVarError always displays a fully qualified name of the symbol it failed to resolve, i.e.
local foo used before initialization or
global Main.foo not defined or
Captured foo in closure of type Main.##7#8 used before initialization. That would give new users the necessary information (“Oh, julia believed that I wanted a local variable. But I meant the global var. Stupid julia, no wonder that this failed! It is a scoping issue instead of a typo or a mysterious WTF issue.”).
Unfortunately I am not sufficiently acquainted with the relevant sections of code to fix that, nor sufficiently motivated to become sufficiently acquainted with that part of julia. The error printing is not the problem. But the extra info needs to be generated and stashed somewhere between the compiler, lowering, and the interpreter without changing layout or semantics of the exception structs.
PS. I apologize if I somehow sounded annoyed. That was not my intention, and is not how I feel about this. Maybe also bump the PR or issue if you feel that the global scope problem does not get the attention / priority it deserves.