Way back in 2008, Adobe announced that Flex would be available as an open source project under the Mozilla license. I was wondering how that would affect the work I was doing to create Flextras; and I poured through the license and blogged my interpretation and how things affected me.
Now that Flex is being moved to Apache, new releases of Flex will be through the Apache Foundation and will be available under a brand new license. I thought it made sense for me to go through the Apache license in the same style to review the implications that the license change would on the work I'm doing with Flextras.
The Wikipedia article on the Apache license generally says everything we do w/ Flextras is okay, but I thought it would be beneficial for me to read the legalese myself.
Remember that I am not a lawyer and you should not take anything in this post as legal advice. But, let's see how I interpret everything.
Definitions are common in legal contracts; they intend to define certain terms and what they relate to. The terms are used throughout the rest of the document. It makes sense to have a common vocabulary, and this is the legal way of defining that. Here are the definitions from the Apache License
- Licensor: This is, for the most part, the person who submits the code. As initial contributor, it could be me. Or it could be any other Apache contributors.
- Legal Entity: This part was obviously written by a lawyer. It refers to an "acting entity" but never defines what that is. For all intents and purposes, I believe this here to define what a company is-such as DotComIt-and that the company is different than an individual-Jeffry Houser.
- You: This is the person (or legal entity, see previous bullet point) that wants to use software/code licensed under this agreement.
- Source: This refers to modifications made to code under this license.
- Object: This refers to, in essence, any transformation of the source. I think it is primarily intended for binary compilations (Such as a SWC or SWF), but I believe that ASDocs generated from Apache Flex code could be considered an object under this translation.
- Work: This refers to the two previous bullet points; either source, or object, made available under this license. I believe this would be a catch all for the Apache Flex SDK along with related documentation.
- Derivative Works: Derivative works are works that extend or modify the 'work which in turn refers to the source or object. I'm unclear exactly if Flextras components are considered derivative works under this agreement, or not. Flextras components clearly represent an "original work of authorship." But, I'm not sure if Flextras components are "separable from the work". You'd be able to easily use the Apache Flex SDK without using a Flextras component, but would not be able to use a Flextras component without using the Apache Flex SDK. I'm pretty sure that Flextras components fall under derivative works. I'll have to swing this one by a lawyer probably. The documentation that Flextras provides-such as the manuals and release notes-are clearly separable from the work, though and would not be derivative works.
- Contribution: A Contribution is anything that is intentionally submit to Apache, either through mailing lists or SVN Repositories. I think it's funny they specify intentionally; but in this digital age it is probably easy to submit stuff unintentionally, especially if you include an accidently CC in the email to a dev list.
- Contributor: This means anyone who submitted code, whether directly or indirectly.
So, a lot of these definitions refer to me, depending on which hat I'm wearing. First, as an initial contributor to Apache Flex, I could a Licensor, which in turn also makes me a contributor. As someone who wants to use Apache Flex code, I could be a "You". And finally, as a company that wants to use Apache Flex code, I could be a "Legal Entity."
Flextras components are a mix of derivative works (our components and sample apps), and non derivative works (our manuals and release notes).
2/3. Grant of Copyright/ Patent License
These sections tell us that anything released under this license can be used, sold, or modified without fear of retribution or IP lawsuits from the people who contributed said IP to Apache.
This says you can redistribute the code as long as you provide a copy of the license, document your changes, and retain the source.
The important text that draws my attention is "copies of the Work or Derivative Works...in Source or Object form." It makes me believe Flextras can distribute a compiled version of the Apache Flex SDK (AKA Object form) without distributing the source. Flextras must retain the source, but it does not require us to distribute the source or source for my changes.
In the case of Flextras, we are neither distributing the source nor compiled form of the Adobe Flex SDK, but I believe we are distributing derivative works (and source for those distributed works).
Nothing in this requirement requires that 3rd party companies use the Apache License when distributing the source. A business could use a custom license to release their version of the software. (Flextras has no current plans to do that, BTW).
If my understanding is correct, then there is no issue with what we're doing for Flextras. If I'm wrong about distributing source then this could have implications on our developer editions or single domain editions.
5. Submission of Contributions
This basically says that anything intentionally submitted to Apache can be licensed under the Apache license agreement. I guess if you unintentionally submit something, you can revoke it. If that is not done quickly, I perceive it is a quick way to anger a lot of people.
The interesting clause here is the preface "unless you explicitly state otherwise." That means you can submit stuff to Apache under a different form of license or agreement. I'm unclear what the implications could be of that. If the Apache Flex SDK had some items not licensed under this apache agreement it could potentially place users in an uncomfortable legal position.
6/7/8/ Trademarks, Disclaimers
Standard legalese that means no Licensor (AKA Person who submits the code) is legally responsible for what you do w/ their code.
9. Accepting Warranty or Additional Liability
This means if someone tries to sell support, or code that they got from Apache, they are on your own in meeting the terms of said sale or agreement. This should make sense to most people. If you and I have an agreement, why would some third party (Apache or it's contributors) be responsible?
I assume any business that tries to sell support or source code or what not should have the relevant procedures in place for dealing with their own customers.
What does this all mean?
My takeaways from my day of research are:
- Flextras components are a mix of derivative works and non-derivative works from what will be the Apache Flex SDK
- Flextras components are not obligated to be submitted back to Apache even if they are derivative works of Apache Flex.
- Flextras components are not obligated to be distributed under the Apache license even if they are derivative works of Apache Flex
So, for the moment, Flextras does not have to change anything to support Apache Flex.