Software is the redheaded stepchild of intellectual property. It is not well protected by any of patent, copyright, trademark, or trade secret law, and the reason is not hard to find – none of those regimes was built with software in mind, and they seem to protect all but what is most important to a software developer.
With respect to patents: Software often runs head first into the law of statutory subject matter – also called “patent eligibility” – which generally prohibits the patenting of software algorithms unless the claims are tied to a new, physical effect or a change in the operation of a computer. Any software that simply runs on a general purpose computer and processes information and displays output faces an uphill if not impossible battle against the law of statutory subject matter.
With respect to copyrights: Software fares little better with copyright law, which only protects the “expressive elements” of a work. In practice that typically means you cannot protect executable code, and as to the source code, you cannot protect its function, but rather only the more arbitrary aspects of the source code that are not tethered to that function. Where there is only one sensible way to write a routine, copyright gives you nothing, and it is precisely the parts a competitor most wants – how the program accomplishes what it accomplishes – that sit outside the protection.
With respect to trademarks: The protection is essentially irrelevant to protecting the software itself. Trademark law protects indicators of the source of goods and services, not the goods and services themselves. The software may have a protectable name or logo, but those do nothing to stop someone from writing a competing program; it only stops them from using a confusingly similar mark and perhaps passing their program off as yours.
Trade secret law: Trade secret law comes closest to protecting what developers actually value, but it has a hole in it. Trade secret law protects aspects of the software that are not known from operating and observing the software, provided steps are taken to keep them secret that are considered reasonable. What it does not generally protect is anything that can be reverse engineered. Reverse engineering is a lawful means of discovery, and a secret that a competitor can extract by taking your product apart is not much of a secret.
So how is software actually protected? Typically with a combination of copyright law, trade secret law, and contract law. When you buy or subscribe to software, you are typically not buying a copy outright – you are buying a licensed set of rights. The quid pro quo for access, aside from what you pay for it, is agreeing to contractual restrictions, which often include prohibitions against decompiling the software or otherwise attempting to reverse engineer the source code or the operation of the software. These types of provisions are intended to shore up the weaknesses in the various forms of IP protection. They do by private agreement what patent, copyright, and trade secret law will not do.
The practical lesson cuts both ways. If you develop software, the license is not boilerplate to be pasted in at the end; it is a core part of your protection, and it deserves the same attention you would give a patent claim. And if you are on the receiving end – before you go copying, modifying or trying to reverse engineer software, make sure you are familiar with the license. Activities that IP law may permit, may nevertheless be prohibited a condition of your gaining access to the software.