Protecting Your Code
One of the main concerns of our readers is protecting their intellectual property (IP). This has been particularly true since the introduction of .NET, when it became much easier to decompile applications, and expose the underlying application logic, among other things.
It's understandable that companies and developers want to protect their hard work. Unfortunately, the effort to protect IP has a checkered history, not least because doing so often puts you at odds with your potential customers. The more restrictions you place on accessing and using your product, the more hassle it is to a potential consumer of that application. These restrictions can be as simple as 5x5 software keys or as elaborate as mandatory Internet activation, dongles, and other special hardware before a given piece of software will run. At some level, you limit sales because of the difficulty of using your product.
It's not uncommon for a given industry to treat its customers in a hostile fashion (the airline and music industries spring to mind immediately), but it's particularly common in the software industry. For me, this hostility starts with the End-User License Agreements (EULAs) that accompany most products, especially in terms of what rights they assert for the sellers of software, relative to the purchaser. There is significant question of the legality of these far-reaching assertions, and it's not really surprising that people don't honor the specifics laid out because--and be honest here--who actually reads them? And if you read them, do you understand the dense legalese they contain? And if you do read them and understand them, do you forego using the program? When confronted with unreasonable parameters, whether it's an absurdly low speed limit or unreasonable license restrictions, the natural reaction is to ignore them.
We've touched on these subjects in the magazine before, but the topic is receiving renewed attention because Microsoft recently released Windows Software Licensing and Protection Services (SLPS), a set of tools intended to give you more control over both your IP and how users interact with and use it.
There are two significant aspects to SLPS. The first is the SLP Code Protector, which promises to help you protect against having your code disassembled or decompiled and is a step beyond obfuscator (the protection part). We'll be running an article on the technical details of how this works, including how you implement it, and the attendant licensing issues, in the near future.
The second part is a software licensing server (hosted by you or Microsoft), which provides highly granular control over how you license your software, including the ability to license or monitor specific features or functions in your application. Moreover, SLPS promises to let you designate which pieces of functionality you want to license or monitor once you finish creating the software. I suspect many businesses will welcome the possibility of increasing the protections on their code (assuming the new approach accomplishes that feat), as well the ability to offer more fine-grained control over how their products and services are licensed and used.
But I'm also concerned about the direction offered by these tools. I understand the advantages of metering for software sellers, but I'm skeptical of this technology as a consumer. I've been told by companies that implement metered usage that their customers demand it. I don't believe companies are really asking for per-use costs; rather, they're asking for more affordable pricing that fits their benefit received from a given product.
Ultimately, selling or licensing IP involves a tradeoff where you strike a balance between protecting your hard work and making it available at a reasonable level of convenience and cost. The more valuable the IP, the more end users will probably put up with the hassle and extra steps you take to protect it. However, and this is the part many companies get wrong: It is typically your users who determine how valuable your IP is, not you, and you risk causing them to walk away if you overvalue it in terms of the hoops your users must jump through to use it.
Talk back: Are you excited by the new levels of control that SLPS gives you for how you license and distribute software? Why, or why not? Write us at email@example.com or firstname.lastname@example.org.
Patrick Meader is editor in chief of Visual Studio Magazine.