Will adding an open source license to my project apply to the entire project revision history?
Assume I own some open source project with no license information. Furthermore, assume nobody has contributed publicly yet and so I own the project's source code and copyright.
Say the source code is already hosted online. If I decide to give it an open source license by uploading the associated COPYING document to the repository and adjusting the source files accordingly, will the previous versions of the project become licensed as well? Or will the current and future versions be protected while previous versions fall under public domain?
Alternatively, say I start a new project using a DVCS (e.g. Mercurial) on my local machine. I commit all my changes (locally) and then add license information in a later changeset. If I were to host the project/repository, will the entire history be licensed or only the versions following that changeset?
In (2), the project is initially not hosted so this does not seem like a problem. But once it's uploaded, some of the project's history will not include the license information, making the result look almost exactly like (1).
I ask because Google Code allows you to select a license on a new project, even if you intend to import the repository afterward, making licensing seem somewhat external to the actual source code, whereas bitbucket.org does not.
If you want the license to apply to the whole history, just say so in the license file, something like 'This file was added at revision x, but you may consider that the license applies to all revisions prior to x as well'.
You can view it as the license declaring what it covers... legalbol is code, scoping can be made explicit if you want.
As long as you're not using any GPL libraries then what you do with your code is up to you. You can say that you code is retroactively GPL or you can say what version is GPL and what version is BSD and what version is Apache license. You can even offer dual license: use GPL or pay me $100 to use BSD (kind of like what the Qt guys did before they decided to offer LGPL).
Now, if you are using a GPL licensed library then your code is already GPL.
I'm not a lawyer but as far as I know code or any form of content being plainly on the web doesn't really make it public domain.
Regarding the timing of your license: If you attach a license to your code in revision 100, this should only affect revision 100 and future changesets until you change that license again. Otherwise you could, for example, revert code from being opensource afterwards.
From my understanding the license that you get when checking out some code (with a given revision) is the license applicable to that revision of the project. IMO this is also what makes forks from projects possible that went from some OSI-license to a closed one using the opensource code.
Consequently, you should probably create a new repo with the license information in place before putting it online.