From: Matt Pelletier Date: 2005-04-15T18:14:52+09:00 Subject: Practical considerations for licensing software written with dynamic/non-compiled languages/platforms Hello all. I'm looking for feedback on the following: What options does one have, as a company that produces software that is distributed directly to clients/VARs, when that software is built with a platform/architecture that uses a dynamic (non-compiled) language, and further, when that platform and/or language is open-source? This question qualifies for Rails and Ruby, but also it could hold for PHP, Perl, etc. I'm interested not just in the general legal considerations (like licensing, intellectual property rights), but also practical considerations. For example, I could get an airtight licensing contract written for me, but if I have to hand the software to a client or vendor, they could easily turn around and get a team to re-sell it under another name (Pear PC anyone?). At least with designer bag knockoffs there is the latent pride on the part of the consumer of having the *real-thing* (albeit at 10x the cost). With software, if it walks like a duck and talks like a duck... who cares if it's a rip-off? I could force the use of keys or certificates, but these are easily cracked even when the software is written in C++. This is less likely to happen in the ever-litigious US, but it's a major concern for any company working internationally, where well-trained techies, cheap labor, and loose laws/enforcement abound. If we wrote software in assembly it would still be a concern, but when there is little-to-no reverse-engineering needed for languages that don't need to be compiled in the first place, it affects decision-making when selecting platforms/languages, which is rather unfortunate. With Java/.NET you can download a decompiler and have source code exported in a day. You can obfuscate, but that's a small comfort; anyone with time and interest can figure that out. With dynamic languages, all the hard work is done for you. If you are operating as an ASP (a la 37 signals with Basecamp), this isn't much of an issue. However, if you have to give your software to *anyone*, whether a client to run on their own network, or to a 3rd party in general, what are your options? This isn't really a concern when dealing with smaller projects for smaller clients, where the compensation is based on project time, even if license it to them (as opposed to letting them own it). In those cases, PHP (and from this point forward RoR!) is usually the best choice, for all the reasons that we love (quick development, simple changes / customization). But when you're licensing software that you own, the value - which at face value is the feature set and maintenance/support services - ultimately boils down to the source code, and needs to be protected to the fullest possible extent. Yes there are business models where the value is strictly your support (Red Hat, at least at first), but that's not really what I'm asking about (though I welcome the comments). This is something I've been curious about for some time, but PHP et al have never been attractive alternatives for larger projects. RoR is compelling enough that these concerns have escalated. Any comments / sites / experience are welcome. Thanks! Matt