An interpreter factory gets a Scala compiler and access to the current notebook, and constructs an interpreter.
An interpreter factory gets a Scala compiler and access to the current notebook, and constructs an interpreter. It's also responsible for fetching/installing/configuring whatever dependencies are needed based on the notebook configuration, or propagating any necessary notebook configuration state to the interpreter (as the interpreter methods won't have access to the notebook)