Earlier quoted context omitted.
All contributors to RocksDB signed Facebook's CLA https://code.facebook.com/cla/individual which states: 2. Grant of Copyright License. Subject to the terms and conditions of this Agreement, You hereby grant to Facebook and to recipients of software distributed by Facebook a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare derivative works of, publicly…
This is not a copyright assignment and not an authorization to publish under a different license. Canonical's CLA adds the additional paragraph to enable that: Based on the grant of rights in Sections 2.1 and 2.2, if We include Your Contribution in a Material, We may license the Contribution under any license, including copyleft, permissive, commercial, or proprietary licenses. As a condition on the exercise of this…
I hate to say it because it makes changing the license significantly more problematic than it seemingly was an hour or two ago. By changing the license, Facebook assumed rights to contributions that it does not have. Even if the licenses are _compatible_, releasing contributions under a different license is not allowed without permission from the contributors.
This is a change from a permissive open source license to another permissive open source license, but what if my GPL contributions to a project were released under BSD? Or what if they were released under a proprietary commercial license? In either case, I might not have contributed, and I should have the right to rescind my contribution to prevent it from being included under a new license.
It's an interesting quagmire, and one that FB's choice of license was destined to lead into at some point. I think it was a bad decision from the get-go.
This is not the first major licensing snafu. A lot of projects ran into similar issues trying to adopt GPLv3 when it first came about. And I have seen a few other projects deal with community uprisings as other license changes came about.
Personally, I think FB should adopt the combined apache/GPL license, adopt CLA language like you've stated, and provide notice that developers can rescind contributions if they don't agree. Perhaps do a tri-license of Apache/GPL/BSD if there's significant kickback. Their current license is a problem and too much of a continuing distraction. JMO.