They're not telling you that. License your own code under whatever license you want.
When you use my code I want you to be restricted. I want you to make all your changes publicly available to everyone, and if you make a hardware device that runs my code, I want you to make it possible for users to modify my code and be able to run it on that device.
If you don't want to agree to my conditions, don't run my code.
But this isn't about taking away freedom; I want there to be more freedom. Because of the conditions I impose, anyone can build off your work in addition to my work. More code, more freedom.
> I want you to make all your changes publicly available to everyone […]
This phrasing was careless: it sounds like you want to prevent private modifications (freedom 1).
You're not the only one to make this mistake. Because of it, many people think the GPL forbids private modifications. Many don't like it because of this misconception, so we should mind our words.
When you use my code I want you to be restricted. I want you to make all your changes publicly available to everyone, and if you make a hardware device that runs my code, I want you to make it possible for users to modify my code and be able to run it on that device.
If you don't want to agree to my conditions, don't run my code.
But this isn't about taking away freedom; I want there to be more freedom. Because of the conditions I impose, anyone can build off your work in addition to my work. More code, more freedom.