You mention in the article a 'setforms entry for 'global, and say that you need to do the equivalent of (eval `(= x ,something)), but that something can't refer to anything not in the global environment, and therefore you need another global to "ferry" the value over. This is not necessary. You can just compute the value locally and bind it to some variable, let's say foo, and then (eval `(= x ',foo)).
Also, you mention that if 'my is a module, then (my:foo a b c) will expand to something like (gs1234-foo a b c), and this is useful because (my.foo a b c) expands to ((my foo) a b c), which the arc compiler won't understand is a macro invocation even if gs1234-foo is bound to a macro. I encountered precisely this problem when trying to build a module system, and I solved it by making arc try to macroexpand lists in functional position, and then re-macroexpand if the result was a symbol -- which allows (my.foo a b c) to work. See http://arclanguage.org/item?id=7448, although the pastebin link in the grandchild has since expired. I'm not sure whether I committed this change to anarki, and whether, if I did, it survived the transition to arc3. It's pretty simple to do, though.
Oh yeah, that does the trick. At one point I was considering doing that in my macros for hygiene, but then I realized I preferred hackability to hygiene so my code could be consistent with arc.arc, so I abandoned that idea... and somehow forgot you could even do that. XD So that should make the implementation of 'global a bit tidier--maybe even a bit less necessary.
making arc try to macroexpand lists in functional position, and then re-macroexpand if the result was a symbol
Yeah, I considered that, but as long as I could make namespaced macros work without resorting to a patch, I figured I should do that instead, since it made the code more flexible to whatever Arc implementations and patch configurations people wanted to use.