I have recently stumbled upon quite a few blogposts bashing GPL for being "less free" than BSD/MIT/whatever licenses.
The main argument is almost always the following: basically, GPL forces developers to release the source code. Whatever modifications they make, they must release the source "so the whole community benefits". This is somehow presented to be an argument against the "freeness" for GPL and GPL ends up being accused of hypocrisy. I see this as complete bullshit, and here's why.
In GPL, developers don't matter. It doesn't matter who wrote the code, and why did he/she wrote it. It doesn't matter whether they did or did not make money off it, it doesn't matter if they did it as a hobby or professionally, it doesn't matter if they existed at all. What matters is the code. It's not the work of developers that gets licensed, it's the code that gets licensed.
How does that possibly make sense and what implications does it have? The BSD/MIT/Apache/whatever license is aligned to the interests of developers. Ideally, a developer doesn't really care if his code gets seen, used, forked, relicensed, whatever, as long as he is attributed and given credit - in other words, developers often look at their work pragmatically. However, the GPL license is not aimed towards developers, it is aimed towards the code. The code itself, whatever the modifications, should exist and should be freely accessible, freely modified and freely used.
All the people that bash GPL for being "unnecessarily" restrictive, miss the point of freedom. There is no freedom to do whatever you want. There is only freedom to do anything you want as long as you don't infringe on other people's freedom. You have your rights, but you have no right to take away rights of others. Thus, when you close the source code - you take away my right to read, copy and modify the code. And while you as a developer might want to take away that right from me (or allow others to do that), that doesn't mean that you can have that kind of freedom.