Third party components? Not legally.

Gregg Wygonik raised another really good point regarding Macromedia’s wonderful EULA for F04. It basically prohibits distributing third party SWCs (compiled components) built on Macromedia’s framework.

In order to build proper SWCs, you have to use Macromedia sample code (this includes all of the component base classes such as UIObject), which is then compiled into the SWC. However, Macromedia’s EULA specifically disallows you to distribute any “product or application designed for website development” that uses their sample code. Seems to me, any third party Flash component fits that description dead on.

Oh, and you can’t call it a “Flash component” if it uses Macromedia’s component code, either. That would be using “Macromedia trademarks to market your application”, which is also prohibited.

Looks like the only real answer here (unless MM revises the EULA, or gives each of us specific written permission to distribute) is writing a new framework, that isn’t bound by this restrictive licensing agreement. Or, we could just go back to distributing movie clips – then we wouldn’t have to include MM’s sample code. Macromedia wonders why the adoption rate for F04 is so low? Could it be, in small part, because of the derth of code for F04 being shared by the community, and some hesitation as to what this new EULA means to building client projects.

Does anyone at Macromedia know if there’s been any progress on this topic?

Grant Skinner

The "g" in gskinner. Also the "skinner".

@gskinner

14 Comments

  1. I’m hoping it was all just an oversight on MM’s part when they wrote the EULA. Cause it’s just plain ludicrous man.

  2. Revolution any one?

    I’m glad you caught this whole EULA thing Grant, cause it slipped by alot of people.

  3. a few mistakes:

    2)(f) says we CAN modify sample application code unless otherwise stated.

    sample application code referes to components, samples, examples etc. if the end product is made using a macromedia product… we can compile swfs only using mm’s flash so we can modify their code and use it.

    the restrictions on the distributin/publishing are:

    (1) can distribute compiled sample application code i.e. swfs or swc

    (3) do not use mm’s name to market the product. dont think ‘built with mm flash’ falls into this.

    (2) “do not include the Sample Application Code in any product or application designed for website development”? u cant distribute the src code but u can distribute ure compiled components.

    now if ure doing a contract job for a firm they own ure source code in most cases (ure working for them), so giving them the source code for the app u made for them isnt really giving since they owned it in the first place…

    the issue comes up in publishing mm’s code online in forums or websites or having ure program display mm’s source code on its screen. U CAN publish ure code that inherits/uses mm’s code since its not their sample code ure publishing, its ure code. ure code requires the user of ure code having mm’s code (which they would if they use flash mx 2004). its a dependency and NOT mm’s sample application code.

    So, you cant distribute the .as file / FLA for ure swc components but u can distribute the swc with modified mm code.

    Basically u cant publish online or distribute mm source code. You can distribute .as file or FLA for ure component that uses mm code as long as u strip out mm’s code/symbols. have a readme file indicating which symbols need to be copied into ure component fla before compiling or indicating modifications needed (distribruting modifications is the bitch else its ok… even for mods u could do line num and old/new code).

    Nick…

    2f is pasted below for refernce…

    (f) Unless otherwise set forth in the documentation relating to such code and/or the Software or in a separate agreement between you and Macromedia, you may modify the source code form of those portions of such software programs that are identified as sample code, sample application code, or components (each, “Sample Application Code”) in the accompanying documentation solely for the purposes of designing, developing and testing websites and website applications developed using Macromedia software programs; provided, however, you are permitted to copy and distribute the Sample Application Code (modified or unmodified) only if all of the following conditions are met: (1) you distribute the compiled object Sample Application Code with your application; (2) you do not include the Sample Application Code in any product or application designed for website development; and (3) you do not use Macromedia’s name, logos or other Macromedia trademarks to market your application. You agree to indemnify, hold harmless and defend Macromedia from and against any loss, damage, claims or lawsuits, including attorney’s fees, that arise or result from the use or distribution of your application.

  4. Hi,

    We are looking at this Grant (et al).

    David

    Macromedia

  5. Hi,

    We are looking at this Grant (et al).

    David

    Macromedia

  6. hey nick

    another read of 2(f) states that a MM component is considered sample code (“sample code, sample application code, or components (each, “Sample Application Code”)”). this, coupled with a look at the stub code for UIObject and UIComponent in the classes\mx.core folder clearly states at the very top:

    //****************************************************************************

    //Copyright (C) 2003 Macromedia, Inc. All Rights Reserved.

    //The following is Sample Code and is subject to all restrictions on

    //such code as contained in the End User License Agreement accompanying

    //this product.

    //****************************************************************************

    that being said, to create a component under the fMX2004 guidelines, you need to include the UIComponent or UIObject classes in your component.

    now, if you have to include the UIComponent or UIObject class, you are using MM sample code in your component.

    once you compile your component into a SWC, the code is embedded in your product and is not possible to distribute without it.

    if your compiled component is used in Flash to develop a website, then your component is now legally at-odds with the EULA. so you can only make components for your own personal use and not for others to use?

    also, you cannot legally say that your component is meant to work in Flash, as you can’t use MM’s name or “other Macromedia trademarks to market your application”. (“Flash” being a trademark of MM).

    so… i think our question (or mine at least) is: are the classes that get embedded into a component still considered “sample code” and if so, how is anyone supposed to create and sell a component for Flash under MX2004 guidelines? and how, exactly, are we supposed to market a product for Flash if we can’t use the word “Flash” in marketing info?

    and Nick, who is this “ure” you keep speaking of? i personally know a Uve in germany, but don’t know anyone named “ure”… πŸ˜‰ and just to be thorough, i think a couple times in your post, it should be “u’re” instead of simply “ure”.

    πŸ™‚

    g.

  7. yup..ure is u’re… con of typing fast and being lazy at times

    since the EULA refers to ‘compiled sample application code’ in one case (2.f.1) my interpretation of cases where they have not specified ‘compiled’ is displaying code in any manner easily/readily viewable form, like posting code in a webpage within tags or in a textarea where ppl can see the code. the need to specify ‘compiled’ in one case implies that if not specified as ‘compile’ it is source code.

    so if u distribute compiled components swc u should be fine regardless of whats in the swc.

    that must be the right interpretation since if its incorrect means u cannot distribute swc’s which means why does macromedia have mm exchange?

    well we dont call them ‘Macromedia FLash Components’ or ‘Flash MX components’ just using the word components should be fine. this is stupid anyways becuase these components can be used by only macromedia products.

    another overlooked part of the EULA ‘Sample Application Code’ should be a proper definition as in how licencee etc is defined in the initial portion of the EULA. Defining an important term in the middle of an agree is shoddy and misleading giving rise to speculation and misunderstandings that could intentional or not intentional. i think it was all overlooked by at leat now mm should realize ppl really read their EULAs and they didnt QA them correctly.

    nick

  8. a bunch of prepositions left in that post πŸ™‚

  9. hey nick

    i was just kidding about the “ure”s in there πŸ˜‰

    the thing is, is that we can’t look at 2f.1,2, and 3 as different items because immediately preceeding them it states “only if all of the following conditions are met”.

    so while it seems perfectly okay to release compiled components that don’t use the core MM classes, we still _have_ to think about the other two, simply because the core component classes _may_ be sample code… (remember, prior to MX2004, there was no framework that needed to be included in your components) (not that they _have_ to be included now, but to take advantage of the built-in focus, styles, etc. they do)

    i, personally, will be releasing components that are meant for website development (at least they are to be used by developers for developing a website, or an app that resides in a website). i’d hate to have to have a disclaimer that my components can _only_ be used if the developer makes an app that doesn’t reside on a website. this may not be what MM meant to say here, but that is how it reads.

    and i have no problem with the term “component” in my marketing, but how am i supposed to let people know that it’s a component for Flash, and not for VS.NET, if i can’t use a MM trademarked word in my product marketing info?

    i’ll be moving my rants over to my weblog and out of grant’s comments. hopefully we’ll hear back from david before too long…

    πŸ™‚

    g.

  10. While I read this and it leaves me with shaking my head, I have to say one thing.

    Macromedia its time you did some major PR Damage control (not just a post on someones blog, but mayabe a public announcement via the website saying we are aware of the issue and our lawyers are trying to re-word it all better etc) in this regard as stuff like this spreads like wildfire accross the net, and in the hands of ignorant developers could mean the difference between a Macromedia development vs other.

    I look at it and go “yeah, i think its a red tape issue and they’ll remidy the situation later on…” but maybe that will be too late.

  11. Thanks to everyone for the discussion – if we keep this in the forefront of Macromedia’s conciousness, it is more likely to get resolved quickly.

    David:

    Thanks! Please keep me informed – I will be much happier blogging about a resolution to this, than to blog complaints about it.

    Nick:

    While I appreciate your input, I think you are making some dangerous assumptions in order to defend Macromedia. Firstly, it is quite clear that you cannot distribute even compiled code if it is in conflict with clause 2 or 3. Basically the EULA is saying you can’t distribute it at all if it is uncompiled, but you can distribute it in compiled form as long as you comply with 2 and 3 (ie. it is not used for web development, and you do not use MM trademarks).

    Secondly, in many contracts (particularly government), the end product including source code is licensed by the client. This means as a contract developer you cannot use MM sample code, and hand it off to your client – this is a MAJOR problem.

    Gregg:

    Thanks for the posts – looking forward to seeing more commentary from you as you look into the issue.

    Scott:

    I’m kind of in the same boat – on one hand, I think “surely this isn’t what MM MEANS”, and I’m tempted to ignore clause 2f – but on the other hand, I don’t want to be the victim of some overzealous lawyer trying to prove his worth.

    This whole thing could be a major developer relations disaster: we can’t share code modifications to MM components, we can’t distribute our own components, and we can’t use MM source code in client projects unless it is work for hire (or the client doesn’t require the source code).

  12. I think that if I happened to be an investor in Macromedia, I would try to sell my stock at this point. There are a few issues that are present here, and they are generally ones which make Macromedia look bad in the eyes of investors.

    One major issue which I don’t think has popped up yet is the ‘shot in the foot’ result of F04 Pro vs Standard versions differing significantly on the components you get with the versions. For example, if Macromedia loosens up on the EULA so we can distribute modified sample code, then nothing is there to stop us from modifying some of the data components and posting them for non-Pro version users.

    I think MM’s positioning of themselves as ActionScript developers in this release is a major strategic flaw, and frankly, they’re cutting into the business of their end users if they continue to position themselves in that way.

    I really don’t know what the best solution is for them to get out of this mess. Perhaps they could release foundation classes to the masses with a pretty open license. This would allow them to satisfy all of us hot headed developers who wish there was a highly competitive similar product we could threaten to switch to, and it would allow MM to continue to make components which were marketed separately and more limited in their license.

    This issue goes deeper than just the legal department, and affects a few major strategic decisions that the Flash team made, apparently without thinking through the process. I think they meant to tie down their Pro-version only classes so that they could market the different versions more effectively, but they didn’t pay attention to the foundation classes, and how we end up using them in production environments. If we can extend existing classes and distribute the compiled versions, we can extend the Pro-only classes with simple wrappers and give them to our less-fortunate Standard-version friends.

    I might be wrong in assuming that sort of thing is technically possible….I’ve only used the pro version….but it makes me think that the strategy that ended up being implemented by MM is fundamentally flawed. We either can’t make and distribute our own components, or we can distribute some of the things that they wanted to reserve for people paying that extra $200 for pro.

    Having used the .net framework for a while now, I can really see a difference between a real foundation framework and the mishmash included with flash. I really want to see Macromedia re-address what can be done intrinsically, what can be done (and redistributed) in ActionScript, and how that ActionScript foundation is arranged. I think Macromedia needs to give us more to work with than what the MovieClip object intrinsically offers.

    I think us End Users are starting to really want our design and development environments, languages, and frameworks to be elegant and carefully planned. Flash gives a decent IDE, a good language, but a pretty poor (in comparison to .net’s at least) framework to work with. If they had put a bit more into the player and tried to do a bit less with AS, we wouldn’t be having this discussion, because we wouldn’t have anything that needed improvement so badly that we wanted to modify it and redistribute.

  13. Scott wrote: “Macromedia its time you did some major PR Damage control (not just a post on someones blog, but mayabe a public announcement via the website saying we are aware of the issue and our lawyers are trying to re-word it all better etc)”

    The reason you don’t hear any of us frontline folks say anything definitive is because lawyers own this issue, and we cannot speak for lawyers. That’s why the conversational dynamics are so different from a regular technical issue.

    The concern does have a lot of internal high-level attention, as you can tell from David Mendels posting here, but with this type of discussion it takes a while to get all our ducks in a row, but what Grant wrote about is definitely a problem:

    “I’m kind of in the same boat – on one hand, I think ‘surely this isn’t what MM MEANS’, and I’m tempted to ignore clause 2f – but on the other hand, I don’t want to be the victim of some overzealous lawyer trying to prove his worth.” This must be resolved… just takes awhile when it’s more people, that’s all, regrets.

    jd/mm

  14. Thanks all… wygonik he he i know u were kiding bout the ‘ure’ part πŸ™‚

    Grant:

    hmm… i’m not supporting MM, not am i bitching or jumping on em yet… i think the word ‘compiled’ is key in interpreting the EULA. Cause i think Sample Application Code refers to source code, which shouldnt be distributed online (a website or web app or anything web) ie. F(2). In complied form F(1) says u can. so i would still debate that part of the discussion…

    but for licensing part.. yup that is an issue i overlooked….

    Nick

Leave a Reply

Your email address will not be published. Required fields are marked *