There are dozens of different software license structures ranging from the legal structures of the GPL and Chinese government policy on the one hand to nextgen DRM and Microsoft's end user licenses on the other.
The GPL is a beautifully designed implementation of a social idea in the context of an existing legal system - the notion that those who celebrate free as in freedom by helping themselves to the work of others with their left hands, have a responsibility to pass on their own work, and the GPL view of freedom, with their right hands.
The GPL works, and works well, to empower innovation - but also represents a peaceful implementation of Karl Marx's famous dictum that the state should take from each individual according to the individual's abilities, and give to each individual according to that individual's needs. Indeed the GPL doesn't different in principle (although it's certainly dramatically different in practice!) from the communist Chinese policy of state confiscation of intellectual property for state use.
Microsoft's EULA, in contrast, takes the polar opposite approach: it represents the ultimate in the exploitation of the existing legal system to retain the company's intellectual property rights while collecting an economic rent on whatever benefits the user may be able to obtain by using some current manifestation of that intellectual property in Microsoft software.
Now look at this as a simple either/or choice for a developer with an established code base and you can see the problem. He'd like to get into the Linux market, but to do that he might have to use some GPL'code and is certainly looking at a significant legal bill to assess not only his obligations under the various licenses his application development and release work might touch on, but also his risks with respect to real and alleged patents and/or ongoing or probable litigation. So what's a smart developer to do? for the risk averse the answer is obvious: Microsoft is the low risk choice, Linux the high risk choice - so what if Linux works better? you don't get sued going Microsoft.
The best answer so far, at least in my opinion as a non lawyer, is Sun's community development license. Basically this is a have your cake and eat it too deal: developers keep proprietary code proprietary, participate in the free as in freedom world being built up around openSolaris, and work inside a patent umbrella held up, not just by Sun, but by mutual agreement among participating developers. In other words, Joe developer can adopt openSolaris and the CDDL ( Common Development Distribution License) without spending a nickel on legal fees and be reasonably confident that not doing something criminal (or just criminally stupid) will suffice to protect himself from legal action.
Combine the CDDL with the fact that Solaris is the best OS around, and it's easy to see why the openSolaris community is exploding --and that's great, but the biggest source of developers is the Linux community not the Microsoft one, and more internecine warfare is one thing the Unix community as a whole does not need.
So what to do? What I think is that the Linux community has to play catch up ball here: adopt the ideas behind the CDDL and create the requisite patent umbrella to remove both the real and perceived legal barriers to Linux.