I feel the problem in the software industry is with copyrights. While I will agree that copyrights do have their place and purpose, I don't think copyrights should be applied to software code.
Software is written to perform functions or tasks.
With this in mind, I think the best solution would be to create an expiring copyright that would work similar to a patent. The developing company would have legal rights to keep the software code confidential and proprietary for a certain set number of years. Once that time frame has expired, the code would be required to legally become open-source. I think this would help to eliminate software monopolies and help spur innovation and competition. I believe that with the correct implementation, expiring copyrights would help to solve many of the current software compatibility issues experienced today.