- Feb 20, 2012
- by Brad Litwin
It’s a decision every PHP developer has to make when releasing software for public use. Do you encode it in an effort to protect your hard work, or do you leave it human-readable with useful comments so that your users are able to fully utilize it in whatever way necessary? It’s not always an easy choice, especially when it’s for a commercial venture.
On the one hand, if you release your software in its natural state, unhindered by the encoding process and fully open for your users to modify, debug, update, examine, et cetera, you may find ne’er do wells take advantage of your generosity and re-purpose it in ways that not only you did not intend, but that your license explicitly forbids. It may take only one jerk to sour you on the whole idea and outweigh all the other happy customers who have benefited from being able to update and modify the code for their specific needs.
If on the other hand you release it encoded, you may find your feature request queue will grow a lot bigger, a lot faster than anticipated. Customers who would otherwise simply make the change themselves will be unable to and now require you to add capabilities they need for a future version. How often are you comfortable telling people “Sorry, I can’t do that.” or “If we see enough demand we will consider it.”, knowing that you are not only potentially alienating them from being future customers but perhaps killing their word of mouth as well?
In many ways the debate mirrors the one that took place in the 90s with the rise of the Open Source movement. Many established software companies and pundits took public stances that Open Source could never work. It was too like anarchy or too like communism, depending on who you asked, and the only way to be successful as a software company was to grip your source code tight to your chest and sue the pants off anyone who caught a glimpse of it without authorization. Looking at the software world today, it’s almost hard to believe that is a position that was ever taken seriously. But is the question of whether or not to encode your software really that much different? Or is it the same issue, just wearing a slightly different hat?