About the internals of ConTeXt [duplicate]

It appears that ConTeXt is more structured than LaTeX2e in terms of naming scheme, key-value naming, macros, etc. However I haven't seen any guide or so that explains how this structure works.

Where should I look? How do I start learning?

What does ! used in macros mean? E.g., \v!foo, \v!bar.
What does _ used in macros mean? (I suppose this is just to add clarity)
And @? And ??
What is the meaning of \unexpanded\def\foo…?
Where do all of those \setupfoo come from? I don't see where they are defined.
How are all of those key=value defined?

This is just what came to my mind after reading a few lines of a small .mkiv file. I don't need the answer to all of this, I'm just trying to understand conventions rather than explicit problems. That's just an example of what might come to your mind after reading a little bit about the core of ConTeXt… and I'm not sure the answer to that is easily reachable on the web.

Most important, is there a way to learn that? Is it written somewhere?

• Perhaps try to focus the question a bit (just on conventions?). For example, I can answer one part but not the whole thing: \unexpanded in ConTeXt is the \protected primitive (which you can happily \show). – Joseph Wright Sep 3 '14 at 16:27
• Yes, let's focus on conventions. However a big part of the question is about where to find out about this, is there anything going on to document this? – Manuel Sep 3 '14 at 16:29
• Perhaps start with wiki.contextgarden.net/Inside_ConTeXt (although I usually just use a combination of \show and reading the source!). – Joseph Wright Sep 3 '14 at 16:38
• Lots of questions: tex.stackexchange.com/a/110131/14066 -- tex.stackexchange.com/a/58659/14066 -- an underscore in identifier ist just part of the identifier -- an @ is a literal @ -- Btw. just start with the manual and ask on the mailing list, that’s the easiest way to answer your questions or make people answer. If in doubt, search the archives: dir.gmane.org/gmane.comp.tex.context – Philipp Gesang Sep 3 '14 at 17:11
• @phg That's it, I will close this question. By the way, how the hell does the search work? \s! doesn't search at all for anything like \s! – Manuel Sep 3 '14 at 17:21