Fork me on GitHub

I believe the terminology(and concepts) comes out of linguistics first (not cs) and was first used as a way to construct (or produce) all the strings in a language (a constructive definition of all the strings in a language). So context free comes from the fact that when you are using the grammar to construct strings you can apply the production rules anywhere they match without other restrictions