The whole idea of Intellectual Property comes in to play because companies wanted to assume monopoly over tech/entertainment markets. The current legislation behind patents and copyrights is a result of this effort via lobby, and on the public relation front of it is this crusade for IP.
Except patent wars are old - they date back to the 19th century. Likewise copyright wars. It's really a case of everything old is new again - we've been repeating history for ages now.
Anyhow, the main problem is software shouldn't be protected at all - at least not by traditional copyright NOR patents. The thing is, software is kind of strange. Before software, people wrote stuff for consumption - books, musics, movies, plays, etc, which clearly fell under copyright law. And people made "stuff" to do things - machines, tools, etc., which clearly fell under patent laws.
But now software (which is really just tech's turn at the patent wars - everyone else has gone through it years ago - automobiles has had patent wars rage on since the late 19th century) is really quite different. Very rarely is it written for purely human consumption (the source code, that is), and the compiled/transformed form isn't usable to anything but a computer. Even worse, you write software to do useful things, which also make it fall under patents.
And that's the problem - patents and copyrights are meant to cover things that don't overlap - pretty much mutually exclusive. Software isn't - you write it, compile it (which can make it come under copyright law) but which can do things of utility (e.g., do stuff), which falls under patent protection. Neither is right, and neither is wrong. (And to confuse things further, software can be hardware, when it's written and compiled to RTL and silicon). After all, given something can be both patented AND copyrighted (which never happened before...), that should be a red flag that the laws are inadequate.
What needs to happen is recognition of this - the special state of software that you write, but not necessarily for purely human consumption (you can consume the *output* - e.g., games, but rarely is source or binary code appreciated as-is).
It would offer protection, but of a different form adapted to the qualities it possesses - do you protect the algorithm (patent), or the implementation (copyright)? Why not a modified form of that protects both, respects that sometimes things can only be done one way and thus have mandatory licensing, appreciate that multiple implementations can exist and be protected as one unit, etc.?
You still get the protections and restrictions that make open and free software possible, but you eliminate trying to bend patent and copyright laws to handle software.