An optional argument for some function may be compulsory for another function.
As currently implemented, optional inputs are defined once, and on the data node,
affecting all functions "needing" them (if data-node eventually overwritten, that is).
Diving into the networkx internals, an obvious change would for the optional modifier to translate to an networkx edge-attribute between the function and its need.