I've worked on a variety of projects and there seems to be some debate as to what is better. I prefer to only share code on internal projects at the binary level (assemblies in .NET, for example). But I've worked with plenty of people that would rather share code at the source code level. I say that adds too much risk of a breaking change. What do you prefer to do and why?
Update:
To clarify, I was thinking more of when working on internal projects. The code is not released to the outside world, but it may be used on more than one internal project.