I was wondering what solutions people have to the problem of information sharing and documentation.

Let's say there is a product and there is one giant document that describes the product in its entirety. So that means it describes what is does, how it does it, what the internal functions are, what the end-user functions are etc. etc. etc.

Now there would be two aspects to this document, one being compiling all the information, and the other dissemintating the information to the people that need it.

Clearly there are only certain parts of that document that are useful to certain people, for example, the end-user doesn't care how it works, just how to use it to do what they want. On the other hand the software developer only cares about the interface between the hardward and the software, he doesn't care about all the hardware's internal interfacing...and so forth

Everyone with me still? I hope so....

My natural tendancy would be to break the big giant document into a number of smaller documents that are aimed at the relevant people (e.g. user manual, programming interface, hardware description etc.). I'm sure others would have another approach.

Certain people would also need access to all the information (in some form or the other), for example the person writing the manual may need to know everything to compile the information into a user friendly document.

So basically there is one big repository of information and a bunch of subsets of this.

How do you go about handling information of this sort? Are there any programs, collaboration platforms or anything like that that you use to share information effectively?

What would your approach be?