The granule of reuse is the granule of release.
This principle has two sides. First of all, you should only release as much code as you (or others) can reasonably reuse. It makes no sense to invest all the time and energy needed to properly release code if nobody is going to use it in another project anyway. This may require you to do some kind of research to establish the viability of your package once you would privately ...