I have been developing an open source project independently before, which is under Apache-2.0 License. With the deepening of development, the function of the project has been enriched, so I plan to modify the name of this project. But I don't know whether the operation of changing the name will cause some trouble, for example, the project code before name change cannot be protected by the license. What should I do to properly change the name of the project?
You don't need to do anything. Open source licenses derive their power from copyright law, and neither copyright law nor the Apache license itself care about the name under which a product is released.
Looking at this a different way: if I took your code and released it under a different name, something I am perfectly entitled to do so long as I maintain the appropriate attributions, that clearly shouldn't affect the licensing status of your code, so it isn't going to affect it if you do that.
Expanding on Philip Kendall:
Licenses don't stop working because you changed a name. The product also isn't "stuck" on the specific license. It only regulates what OTHER people can do with the software. Ever notice how these licenses usually don't have a name in them? Because they usually apply to the software, or even just the piece of work they were found/bundled with. Changing the name would not change that.
What YOU as the author can do with it is near limitless (in regards to loosening restrictions). And this includes taking 99% of the code and re-releasing it under a new name (and potentially even a new license). Or doing nothing but changing the name in the github repository.
Only counterpoint: This would not stop anyone from sharing your old code under the old name (as long as within the original license), but you cannot stop that now anyway. Please also make sure that your branding change is very public and that it is reasonably easy for anyone with the old name to a) find it under the new name and b) verify that it is indeed the same project.
As a real-world example of what you're wanting to do, the Firefox browser was originally named "Phoenix" and then "Firebird" before settling on its current name. Nothing really changed except for the branding, logos, and artwork. Your license document should be updated to include the new name of the program, but other than that it should be fine.
From a practical standpoint, you may want to treat this like you're creating a fork. If your current project exists at
github.com/TeamFrobozz/libFoo, publish the new version at
github.com/TeamFrobozz/libBar and restart the versioning at v1.0. Make the old project read-only and update its readme with a big message at the top that says something along the lines of "This project is no longer being maintained and has been replaced by [link to new project]". Make sure the readme for the new project clearly states that it is a "continuation of
libFoo as of v4.2".
The biggest headache will be that users of your project will have to do more than simply drop in a new version of the library. Anything that references the project or file names (
#include statements, build scripts, installers, etc) will have to be updated with the new name. If your project exposes an API that includes the project name in the names of functions or constants, then references to those will have to be updated as well. I recommend writing up a short "porting guide" that outlines what changes are needed for a user to switch from your old version to the new one. If your project has a sizeable user base and in this process you discover that the porting process is non-trivial, you might reconsider renaming your project. Many software projects have grown far beyond their original purpose but have retained their original names. For instance, VLC (VideoLAN Client) was originally designed to stream video across a local network, and the humble
tar program now does far more than archive data on tape drives.