Working on Lazy load legacy imports in skimage top module #6892 has raised the question for me on how our utility functions in our top-level skimage namespace should be treated going forward. The current situation has several problems that I’d like to address:
- The 
skimagemodule includes a manually curated list of submodules and utility functions. This list is hard to keep in sync. E.g. right now theregistrationsubpackage isn’t listed. - There’s no 
skimage.__all__at runtime (see 6904).dir(skimage)works though. - Lazy loading of 
skimage.datais rendered ineffective by import ofdata_dir(see #6891). 
How do we want the skimage namespace to behave with respect to runtime and inspection tools (that take into account the stub file)?
If we decide to keep advertising utility functions like img_as_float we need to be aware, that they will be duplicated in our HTML documentation and simple references like :func:~img_as_float need to be made more explicit.
I don’t particularly like a duplication in our docs, so my gut feeling right now would be to stop advertising and duplicating the utility functions in skimage but keep them around at runtime indefinitely during “skimage1”. I don’t want to break user code unnecessarily. For skimage2 I’d remove the skimage2 namespace altogether.
Thoughts?