Hi, and thanks for the interest!
About the optional output ports, the current design (and Anduril2) will not really allow this. In the cases where we require something similar, we typically use array outputs.
A component can define that its output array always has a key named "something", and in optional cases, other keys may be present.
If the output array key is missing, anduril will give you an error if you try to use it in a downstream component.
Something like:
comp=ComponentGeneratingOptionalOutputs( input=data, method="justTheDefault" )
other=SomeOtherComponent( input=comp.output["default"] )
secondOther=SomeOtherComponent( input=comp.output["optional"] )
Here, if the "optional" key is not found in the output array, an error is raised.
There are components, like GNUPlot that use similar approach. however, in that component the user himself can choose the names of the output keys.
To answer the second question about the future: The building of the second generation of Anduril has been on it's way for a year now, and it is already in a usable state.
However, we still expect some quite core related changes, and therefore haven't expressed much of the workings, because it's not entirely stable yet.
In short, the major change is that the AndurilScript language is gone. We wanted to give the user the freedom of using a full programming/scripting language with full capability of using maths/string manipulation etc. without having to implement everything ourselves. The pipelines in Anduril 2.x will be constructed in Scala.
Using an external scripting language we have to limit the core functionality a little bit, but then, the user can do a real variety of pretty much anything during the building of the component network.
the component-generator you speak of may be obsolete with Anduril2, since you can actually introduce new components inline within the pipeline.