I'm writing a library for general consumption (It's free software and open source). Is it okay to have a visible namespace (e.g.
Library.Implementation) for implementation-only components that remain public for technical reasons (sharing between multiple packages/assemblies), but that aren't part of the library proper, and the user should avoid using?
I have mechanisms that could allow me to share the components while hiding them from users, but they're difficult to use due to technical reasons.
This wouldn't harm the integrity of the library, as the components are mainly utility code, and the library properly follows information hiding. Examples of the components include various conversion functions, a special variety of tuple, and some comparers. Users might even find the components useful, but they're not what the library is about.