Tuesday, 24 September 2013

Decompiling ColdFusion's code: from the EULA

This is just to save me typing on Twitter.

These are extracts from the software licence in the root directory of my ColdFusion 10 install (C:\apps\adobe\ColdFusion\10\license.html):

2.6 Restrictions
2.6.1 No Modifications, No Reverse Engineering. Licensee shall not modify, port, adapt or translate the Software. Licensee shall not reverse engineer, decompile, disassemble or otherwise attempt to discover the source code of the Software. If you are located in the European Union, please refer to Section 13.1.

13.1.3 Nothing included in this agreement (including Section 2.6.1) shall limit any non-waivable right to decompile the Software that you may enjoy under applicable law. For example, if you are located in the European Union (EU), you may have the right upon certain conditions specified in the applicable law to decompile the Software if it is necessary to do so in order to achieve interoperability of the Software with another software program, and you have first asked Adobe in writing to provide the information necessary to achieve such operability and Adobe has not made such information available. In addition, such decompilation may only be performed by you or someone else entitled to use a copy of the Software on your behalf. Adobe has the right to impose reasonable conditions before providing such information. Any information supplied by Adobe or obtained by you, as permitted hereunder, may only be used by you for the purpose described herein and may not be disclosed to any third party or used to create any software that is substantially similar to the expression of the Software or used for any other act that infringes the copyright of Adobe or its licensors.
(the colouring and emboldening is mine, not Adobe's). Interpret that how you will. "I am not a lawyer" and all that. It's just what the doc says.

That said, contracts aren't magic. They don't represent actual law. And they are only worth the paper that are written on if one ends up in front of a judge, and the judge decides some agreement has been broken in such a way that a party has been (wilfully) wronged.

I could understand if someone felt the need to decompile some code so that they can better understand what's going on, and possibly solve some issue they are having that is not documented anywhere, and no help from Adobe is forthcoming (which, let's face it, won't be, unless one opens a support ticket with them). Still: whilst I could understand it, the person doing so needs to understand the ramifications of what they are doing, and take relevant responsibility for their actions.

As a side note: I will occasionally decompile the classes that ColdFusion (or Railo) generates when my CFML is compiled, to see what's going on. I consider this to be my code, not Adobe's / Railo's, so do not believe this is covered by this contract. That said, I will stop doing that if Adobe's people ever contacted me and said "err... that'd be thin ice you're skating on there mate". Well I'd stop doing it after blogging about it, anyhow ;-)