I recommend reading about clean room reverse engineering. That's what you have to do to copy software without infringing its copyright. It's doable, but in most cases it'll be more, not less, work than writing your own software from scratch.
I recommend reading about clean room reverse engineering. That's what you have to do to copy software without infringing its copyright. It's doable, but in most cases it'll be more, not less, work than writing your own software from scratch.
I am extremely familiar with clean room reverse engineering. You are absolutely mistaken if you believe that 'That's what you have to do to copy software without infringing its copyright.' Reverse engineering actually has a rather different history. Given a device, say a chip, take the inputs and outputs of said device which defines the machine's behavior. Now design and build a machine which reproduces such a mapping. This practice was frequently associated with 'clean room' protocols. The key point is that the team had absolutely NO access to the source code. And because such a clean room team would never hire anyone who had previously had such access they could be confidently said to have reverse engineered the behavior from the APIs alone. This is a VERY different situation.
But the parent has an valid point nonetheless. If you do a clean room reimplementation of a program, then you are off the hook as far as copyright goes. Yet the user may not be able to tell the difference. In short, the user cares about the functionality of the program, not its expression (the source code).
I think that's a valid argument that copyright protection is not entirely sufficient for software, and that patents could have a useful role to play.
Personally, I think the problem with software patents today is that the obviousness bar is far too low -- we're patenting problems, not solutions. See my comments elsewhere on this page.
I think the main reason you don't see more clean-room reimplementations is simply, as you say, that level of compatibility is rarely necessary -- indeed, it's often considered undesirable, even by the users.