Since I first blogged about the issues surrounding the F04 EULA, and the restrictions it places on sharing code, there has been a very informative discussion going on in the comments between myself, Nigel Pegg, and a few other members of the community. Nigel has done a great job trying to explain the issue from Macromedia’s perspective (thanks Nig).
The super-condensed summary of this discussion (and my apologies to anyone I misrepresent here) is that developers would like the freedom to distribute and use modified versions of the built-in classes, but Macromedia is concerned this will lead to confusion if they update the component framework internally, and they do not want to see a competing framework emerge.
Now, this issue as it relates to sharing code in the community is one we can debate somewhat leisurely, as it doesn’t have a major impact beyond slightly retarding the growth and learning of said community. The real problem arises when you look at how it impacts real, paid projects!!
With the current EULA, I am locked into the framework Macromedia has created. I am not permitted to extend the existing framework, or modify Macromedia’s components, except through their API. Well, I can, but I am then not legally able to give/sell that modified source code to my clients – many of whom aren’t too thrilled when they get a compiled application with no source. This is a big problem, and one that needs to be addressed immediately. What if my client’s project requires a modification to how the accordian pane works? With the current scheme, I would have to write a brand new component from scratch, because I’m not allowed to modify the existing component and provide the modified code it to the client.
I think this whole thing is like banning the sale of Aspirin because someone might take too many and overdose. Instead, Aspirin includes usage directions and warnings on it’s packaging. We’re not allowed to distribute code because some developers may not use it correctly, or may not understand the implications of using it in their projects. Why can’t we follow Aspirin’s lead, and educate the community on the implications of using modified versions of the built-in classes in their projects? For example, I’d be happy to include a brief disclaimer at the top of my class files explaining the issue and/or pointing developers to a MM Technote on the issue.
Anyone have any more ideas on this topic? It’s an issue that will affect us all, or at least those developers creating complex RIAs (and isnt’ that what MM keeps telling us to do?).