Since you're using MS-PL and Apache 2.0 components, you're restricted by the MS-PL license and the Apache 2.0 license. This means you can't use the GPL anyway, since it's incompatible with MS-PL, and version 2 of the GPL is also incompatible with Apache 2.0. Given that, I would suggest releasing your parts either under MS-PL, Apache 2.0, or a BSD-style, so you're not adding requirements.
You can read the licenses to see what you have to do. They aren't long. With MS-PL, you can do pretty much everything as long as everything's released under MS-PL and you include the entire license (which isn't long). With Apache 2.0, it's pretty much the same, except that you need to include any NOTICE file. You do have to include all attributions, etc., and that's pretty standard across OS licenses.
You really can't add to the licenses. You are free to put any disclaimers you want. You can put them in a NOTICE file, which under Apache 2.0 requires them to be preserved.
You should list which files are under which licenses, and you do have to include full copies of MS-PL and Apache 2.0 in the package.
Be careful about ADO.NET Entity Framework CTP4, as you say you can't find a license. If you can't find a license, ordinary copyright law applies, and you can't legally use it. You may want to write to whoever owns that code, and see what license they use.
As far as copyright ownership goes, you can never retract open source licenses for the versions you release under them, but if you own all applicable copyrights you can relicense as you wish. Some companies, like MySQL AB, released what they had under the GPL, and would sell other licenses for money, so that (say) another company could use MySQL as a part of their commercially sold product without having to release under the GPL.
Since you're using components owned by other people, you really can't do that with the entire project, but you could with your portions.
To do that, you'd have to get everybody who contributes to fill out a copyright assignment form, along with some proof that they do own the copyright (and, for example, that it doesn't count as work for hire for an employer). This does tend to diminish user contributions, so you may want to skip it entirely. You might want to look at what the Gnu project does, since they do want complete copyright, and emulate them.
I'm trying to make this answer as 'meta' applicable as possible.
Using snippets / bits from other projects
Clearly mark the code with the original author's copyright. Make sure that your license of choice is fully compatible with the license of the code you are using. You will need permission of the author to move the code to a different license (unless they specifically allow you to do so, I.e. "GPL 2 or any later version")
Your program should have an AUTHORS file (or similar), where you list all contributors and things that you used from other projects.
Forking a project
For each module that you substantially change, add your copyright under the original author's. The same thing goes for licensing, you are bound by the terms of the license that was in effect when you forked it. If the project says "GPL2 only", you must respect that, you can't go to GPL3 without their permission.
This varies, greatly, depending on the license at hand. The QPL says you can only distribute changes in patch format, for instance, so make sure you understand the terms that allow you to distribute modified versions of the software.
Beyond that, always preserve copyright. If adding your own copyright to what exists, be sure that you clearly mark exactly what you are claiming.
Best Answer
This is an old question, but for anyone else looking for the answer, most licenses don't require the license to be included inside each source file, as long as the license is included with the source code. Often this is done by use of a
LICENSE.md
orLICENSE.txt
file included in the same repo, folder, or directory as the code.Below is a rundown of some common open source licenses and their requirements regarding inclusion in source files.
Apache License Version 2.0
One of the (many) reasons Apache released v2.0 of the Apache License was:
The license's Appendix seems to specify that a license notice needs to be included in the file itself, but GitHub's ChooseALicense.com says that this requirement is more of a recommendation.
MIT License
The MIT License only requires that the license text:
GPL / LGPL / AGPL
For the GPL, LGPL, or AGPL license, the Free Software Foundation, which runs GNU.org, does want a notice included within each file (as well as in an accompanying
COPYING
file containing the full license text, orCOPYING LESSER
if using the LGPL).Here's how they say to include the license in your source files:
Note that I am not a lawyer and this answer does not even remotely constitute any sort of legal advice.