In the Beginning [1] there was trio.socket. Using a nested namespace seems like the only reasonable way to handle this, because we want to expose 99% of the functionality of the socket module, the socket module API is huge, and the changes we needed to make are complex and all over the place.
Then we copied this style for trio.ssl, and then trio.subprocess.
But for these two modules, it's not as compelling. trio.ssl is just SSLStream and SSLListener, plus a ton of complicated re-exports. trio.subprocess is just Process, plus a ton of complicated re-exports.
Given this, maybe it would be better to put SSLStream, SSLListener, and Process into the top-level trio namespace, and drop the trio.ssl and trio.subprocess modules entirely. Instead we'd just tell people they can import ssl or import subprocess.
CC: @oremanj since this is partly triggered by #833
[1] Actually, I stole the idea from curio.socket.