Many of these products (new versions of Windows in particular) are of major significance to the IT community, and so the terms are often widely used in discussions before the official release.
Microsoft usually does not announce a final name until shortly before the product is publicly available.
It is not uncommon for Microsoft to reuse codenames a few years after a previous usage has been abandoned.
[1] The following are code names used for internal development cycle iterations of the Windows core, although they are not necessarily the code names of any of the resulting releases.
With some exceptions, the semester designations usually matches the Windows version number.