What do you mean "required"? The API user does not need to specify them when creating a stream via `ensure_stream`, but when tags are returned, these tags are set to `None` in case they are not present -- but the attribute is still there for consistency.

The question here is only, do we want to support checks like `stream.derived_from is None` or do we want to support them like `hasattr(stream, 'derived_from')`. I prefer the first form as the attribute is always there.