Why is it called the GAC?
In .NET, we have a GAC (Global Assembly Cache)—which you might assume describes it well, hence the name "GAC." But that isn’t true. One of the many things I’ve learned since joining Microsoft last year is the real story behind the GAC’s name and the fact that the acronym was chosen after the name to appease legal. Think about it: the GAC is neither a cache (it’s really a repository—a cache implies a temporary nature to its contents) nor is it global (it’s local to the machine). That acronym just doesn’t make sense.
The origin of the name is that Anders Hejlsberg, when naming it, wanted something to represent the only location on the device for assemblies. Additionally, Anders is a massive Dr. Seuss fan and chose the name from The Cat in the Hat (emphasis below is mine):
"At our house we play out back. We play a game called Ring the Gack. Would you like to play this game? Come down! we have the only Gack in town."
The name was used in the team until legal got involved and worried that Microsoft might get sued, so it was shortened and an acronym retroactively made up to explain it. The original name does appear in the original beta documentation for .NET 1.0, which you can find here (Note: Wikipedia link removed—replaced with official MS source where applicable).