> Why was it done this way in the first place? If the data comes in as a single JSON object to the runtime, why did the runtime move a subset of that data to env vars instead of just keeping it all within the params map sent to the user action code?
This was done to keep the function abstraction simple and composable. The function signature is dictionary in and dictionary out. It makes composition and the programming model cleaner as in f(g(h(x))). We opted for global variables instead for the context (these are the __OW properties). There is a lot of discussion on the programming model from the early days of the project which I can dig up if you are interested. Some of it can also be gleaned from https://github.com/apache/openwhisk/issues/116. -r