CasperLabs Open Source License (COSL)

CasperLabs Open Source License (COSL)

Version 1.0 - February 22, 2019

https://github.com/CasperLabs/CasperLabs/blob/master/LICENSE

TERMS AND CONDITIONS FOR USE, REPRODUCTION AND DISTRIBUTION

0. Preamble

This license, the CasperLabs Open Source License v1.0 (COSLv1.0), is an open source license that modifies the Apache 2.0 License (“Apache 2.0”; see https://www.apache.org/licenses/LICENSE-2.0) to be free (libre) open source software (FLOSS) compliant and to extend to the decentralized application ecosystem. FLOSS philosophy is incorporated in this COSLv1.0 not only by adding copyleft provisions, but also by extending the concept of governance by community as under a license by defining user classes and a license directed process to identify community compliant versus proprietary behavior. This COSLv1.0 also explicitly enumerates participants in a decentralized application ecosystem and activities that harm the community.

1. Definitions

This COSLv1.0 incorporates by reference, the definitions within section 1, “Definitions,” of the Apache 2.0 License.

2. Bifurcation of Subject Matter

This COSLv1.0 applies to a subject matter code base. The subject matter code base is composed of both object and source code embodiments (“Novel Code”) and legacy code subject to the Apache 2.0 License (“Legacy Code”) as defined in this section 2.

Fork Demarcation: The subject matter code of this COSLv1.0 may be demarcated by a code share fork made on Midnight GMT, December 2, 2018 (“Fork Demarcation Time”).

Subject Matter Code Base: The subject matter of this COSLv1.0 is composed of all files in the GitHub share initially committed to https://github.com/casperlabs or copies made on or after the Fork Demarcation Time (“Subject Matter Code”). (See initial commit at: https://github.com/CasperLabs/CasperLabs/commit/9c83ec3ecaa955dacfa3e42054d05098fc32bfc7).

Novel Code Base: The scope of Novel Code is all additions or modifications to the Subject Matter Code made on the Fork Demarcation Time or afterwards.

Legacy Code Base: The scope of the Legacy Code is all code included in the Subject Matter Code share added or created before the Fork Demarcation Time.

3. Express Invocation of Sections 4 and 9 of the Apache 2.0 License

In some cases, the Novel Code may be used, reproduced and/or distributed without the Legacy Code. However, where the Legacy Code is used, reproduced and/or distributed with the Novel Code, this COSLv1.0, which applies to the Novel Code, is not to be construed to relicense, modify, or otherwise disturb the Apache 2.0 License of the Legacy Code. This license, the COSLv1.0, is an extension of the Apache 2.0 License under its section 4 which provides for “additional or different license terms and conditions for use, reproduction, or distribution.” Furthermore, per the Apache 2.0 License under its section 9, a distributor of the Subject Matter Code may solely accept “warrantee or additional liability” of the distributed Subject Matter Code.

4. Express Disclaimer of Contributions Under the Apache 2.0 License

Notwithstanding the terms of the Apache License 2.0 regarding contributions, unless explicitly stated otherwise, all additions or modifications to the Subject Matter Code are contributions under this COSLv1.0. In the case of bug fix code changes or integration specific code changes to the Legacy Code that are propagated to the pre-Fork Demarcation date open source project share, those code changes are to be subject to the Apache 2.0 License.

5. Contributions are Under COSLv1.0 and are Subject to Relicense

All contributions to Novel Code will be under this COSLv1.0 and are subject to the contributor executing a relicensing consent (“Relicensing Consent”) which provides that contributor’s agreement to allow their contributions to be subject to updates to this COSLv1.0 or relicensing in the future, provided that the updated COSLv1.0 or new license is an open source license and is consistent with the present COSLv1.0 license including the copyleft provisions in section 9.

6. Decentralized Ecosystem Parties

The COSLv1.0 is a license intended to benefit the open source community in the context of the distributed and decentralized platform and decentralized applications (“Decentralized Applications” or “DApps”) based on a distributed ledger built from the Subject Matter Code. Licensees of the Subject Matter Code under this COSLv1.0 include the following parties:

Node Operators: A node operator (“Node Operator”) is a party that contributes compute processing for a decentralized platform with a computing node where at least a portion of a distributed ledger resides on the node. Node Operators include distributed ledger validators including miners for Proof of Work decentralized platforms and validators for Proof of Stake decentralized platforms.

Decentralized Application Developers: A decentralized application developer (“Decentralized Application Developer” or “DApp Developer”) is a party that creates or modifies a DApp. Where a DApp Developer is developing a DApp in the scope of work for a company or is otherwise contractually bound to develop a DApp for a company, that company is also a DApp Developer.

Decentralized Application Distributor: A decentralized application distributor (“Decentralized Application Distributor” or “DApp Distributor”) is a party that distributes a DApp either freely or for compensation.

Decentralized Application Users: A decentralized application user (“Decentralized Application User” or “DApp User”) is a party who is an end user of a DApp. Where an end user uses a DApp in the scope of work for a company or is otherwise contractually bound to a company to use a DApp, the company is also a DApp User.

Decentralized Platform Developers: A decentralized platform developer (“Decentralized Platform Developer”) is a party that contributes code to software that enables the decentralized maintenance of a distributed ledger, development tools to develop DApps on that distributed ledger, or tools to administer a distributed ledger or applications built on the distributed ledger.

Token Issuers: A token issuer (“Token Issuer”) is a party, including a party other than the COSLv1.0 Licensor, that releases and manages quanta of value as managed by the distributed ledger (“tokens”) to be used to transfer value between parties. Tokens may be used to measure work effort, such as amount of compute power estimated to be used to validate transactions on a distributed ledger. Where the tokens are hashed by the distributed ledger and are in a format suitable for use as a currency, those tokens may be referred to as a “cryptocurrency.”

Token Holders: A token holder (“Token Holder”) is a party the retains tokens either for holding, or for use as currency or in distributed ledger-based transactions.

Decentralized Network Users: A decentralized network user (“Decentralized Network User”) is a general term for any party that avails itself to a distributed ledger, or any application, tool, or token using the distributed ledger, or any application, tool, or token that administers, maintains, or develops any application, tool, or token using the distributed ledger.

All the above parties defined in this section 6(a)-(h), in their context as users of the Subject Matter Code and Licensees under this COSLv1.0 and any other parties who access the Subject Matter Code are collectively known as “Decentralized Ecosystem Parties”.

7. User Classes

The COSLv1.0 Licensor and the Decentralized Ecosystem Parties as set forth in section 6 of this COSLv1.0 solely comprise the members of a community (“Community”) around the Subject Matter Code. The COSLv1.0 Licensor is the granting party of rights to the Subject Matter Code and the Decentralized Ecosystem Parties are the receiving party of rights to the Subject Matter Code. The Decentralized Ecosystem Parties all belong to one and only one of the following two user classes (“User Classes”):

Proprietary User Class: The Proprietary User Class (“Proprietary User Class”) is a Decentralized Ecosystem Party that performs, or permits to occur, any of the following acts or uses:

Co-opting the Development of the Decentralized Platform from the Community: This form of use occurs when only one party, or a set of parties either via explicit contract or via participation, substantially interferes, limits or prevents other parties from materially participating in the decentralized platform, in roles defined by a protocol of the decentralized platform, and/or in roles that are required for the use and support of a protocol of the decentralized platform. Examples of defined and/or required roles include end users and their client software to participate in a centralized platform, node operators both for validation and for forming consensus, decentralized application developers, decentralized platform developers, and other parties set forth in section 6 of this COSLv1.0.

Such co-opting may include closed forks where the Subject Matter Code is forked either in full or in part, and where the other parties are substantively limited from materially participating in the development or use of the decentralized platform, including in roles set forth in section 7(a)(i) above. This may also include forks where a party is to create a cryptocurrency, native token or other quanta of value from operations of the forked decentralized platform without remuneration to the Community as set forth in section 11 of this COSLv1.0.

Co-opting the Operation or Use of the Decentralized Platform: This form of use occurs when a party, or a set of parties either via explicit contract or via participation, substantially interferes, limits or prevents other parties from materially operating nodes, using the decentralized platform, or deploying and using DApps.

Interfering with the Economic Operation of the Decentralized Platform: This form of use occurs when a party or parties seek to operate nodes, develop DApps, or run DApps to drive or to result in changes in the price of an underlying cryptocurrency of a distributed ledger, resulting in interference of the economic operation of the distributed ledger.

Open Source User Class: The Open Source User Class (“Open Source User Class”) is any Decentralized Ecosystem Party that is not in a Proprietary User Class.

8. Governance and Conversion

Governance under the COSLv1.0 is performed by COSLv1.0 Licensor in close cooperation with the Community as set forth in this COSLv1.0. The Community includes any Decentralized Ecosystem Party as set forth in section 6 of this COSLv1.0. Specifically, the COSLv1.0 Licensor will designate a public, transparent online forum (“Community Forum”) associated with the Subject Matter Code and will designate one or more moderators (“Community Forum Moderators”) to monitor and moderate the Community Forum. The Community Forum to receives requests and notifications from the Community, including proposed feature additions, proposed code changes, additions or deletions, and Community member status and user class. The Community Forum may host online discussions about topics broadly related to the Subject Matter Code. While acceptance or rejection of requests and notifications are at the sole discretion of the COSLv1.0 Licensor, acceptance will not be unreasonably withheld. Moderation policy of the Community Forum is at the sole discretion of the COSLv1.0 Licensor.

Rights to the Subject Matter Code, including intellectual property rights under this COSLv1.0 are subject to membership of the Open Source User Class. Where a party of the Open Source User Class performs an act or use as set forth in section 7(a) of this COSLv1.0, that party converts to the Proprietary User Class (“Conversion”). Where a party contemplates performing an act that might be construed as proprietary, that party may demonstrate good faith by providing a sixty (60) calendar day advance notice to the COSLv1.0 Licensor and the Community, by sending a notice via the Community Forum describing the proposed activity, how that activity benefits the Community, and how that activity may not benefit the Community. If the COSLv1.0 Licensor accepts the activity in consultation with the Community, that activity will not trigger Conversion.

Where a party is a member of the Proprietary User Class, that party may seek to be re-characterized as a member of the Open Source User Class by providing a notice via the Community Forum to the COSLv1.0 Licensor and the Community. The notice is to specify the activities that party is ceasing and/or activities to remediate prior acts that triggered Conversion. If the COSLv1.0 Licensor in consultation with the Community accepts the recharacterization, then that party will become a member of the Open Source User Class.

The COSLv1.0 Licensor may opt to extend consideration of a recharacterization by increments of sixty (60) calendar days at a time. Neither the failure nor delay on the part of the COSLv1.0 Licensor to respond to or act upon any requests and notifications from the member parties of the Community under this section 8 shall operate as a waiver thereof unless made in writing and signed by the COSLv1.0 Licensor.

9. Intellectual Property Rights

Subject to the terms and conditions of this COSLv1.0, each contributor grants to all parties who are in the Open Source User Class a copyright license under the terms of section 2 of the Apache 2.0 License. Absent a separate agreement to the contrary, members of the Proprietary User Class, do not have a copyright license. Where a member of the Proprietary User Class converted from the Open Source User Class, that member retains no prior copyright license. Where a party performs an act that triggers a Conversion of the party to the Proprietary User Class, the copyright license is revoked. A party whose copyright license is revoked exposes that party to damages and other remedies for copyright infringement including statutory damages and injunctive relief. For purposes of injunctive relieve, the Licensee stipulates the availability of equitable damages.

Subject to the terms and conditions of this COSLv1.0, each contributor grants to all parties who are in the Open Source User Class a patent license under the terms of section 2 of the Apache 2.0 License. Absent a separate agreement to the contrary, members of the Proprietary User Class, do not have a patent license. Where a member of the Proprietary User Class converted from the Open Source User Class, that member retains no prior patent license. Acceptance of this COSLv1.0 includes a stipulation of knowledge that some portions of the Subject Matter code are subject to patent coverage. Where a party performs an act that triggers a Conversion of the party to the Proprietary User Class, the patent license is revoked. A party whose patent license is revoked exposes that party to damages and other remedies for patent infringement including enhanced damages and injunctive relief. For purposes of injunctive relieve, the Licensee stipulates the availability of equitable damages.

Subject to the terms and conditions of this COSLv1.0, the COSLv1.0 Licensor grants to all parties who are in the Open Source User Class a perpetual, irrevocable (except as provided in this COSLv1.0), non-transferrable, sublicensable, royalty-free, fully paid, worldwide and non-exclusive right and licensee to use any marks to name distributions of the Subject Matter Code (under any operative nominative fair use law). Absent a separate agreement to the contrary, members of the Proprietary User Class, do not have trademark rights or trademark license. Where a member of the Proprietary User Class converted from the Open Source User Class, that member retains no prior trademark right or trademark license. No other mark license is provided, including for marks relating to company name, trade name, or other marks COSLv1.0 Licensor reserves the right to police the quality and use of the licensed marks and to revoke license of those marks at its sole discretion where those distributions of Subject Matter Code are not compliant with this COSLv1.0 or FLOSS principles. License of those marks shall not be unreasonably withheld. A party whose trademark license is revoked exposes that party to damages and other remedies for trademark infringement, unfair trade practices and injunctive relief. For purposes of injunctive relieve, the Licensee stipulates the availability of equitable damages.

10. Copyleft

Any recipient of any copy, fork, distribution or conveyance of the Novel Code, in full or in part, receives a license from the original licensors to run, modify and propagate the Novel Code, modified or unaltered, subject to this COSLv1.0. Any copy, fork, distribution or conveyance is to be subject to the COSLv1.0. Additional conditions, including payment and/or compensation terms, representations and warrantees, may be added beyond COSLv1.0 license terms provided they are consistent with COSLv1.0 and free (libre) and open source principles, and do not prejudice the COSLv1.0 Licensor’s use of Novel code. Contributors to the Novel Code are to be fully indemnified by any party creating additional conditions.

11. Forks

Community friendly copies of all or part of the Subject Matter Code for separate development from the original Subject Matter Code tree (“Forks”) are supported by this COSLv1.0, under the following conditions:

Propagation of COSLv1.0 Licensing Principles: Code in a Fork is to be subject to and controlled by this COSLv1.0 or under a FLOSS compliant relicensing under the terms of this COSLv1.0. Failure to do so constitutes an act co-opting the development of the decentralized platform from the Community, thereby triggering a Conversion of the forking party to a Proprietary User Class subject to penalties set forth in this COSLv1.0 including but limited to section 9.

For-Profit Fork Airdrop: Where code in a Fork is to be used to deploy a new independent blockchain with a cryptocurrency, native token or other native quantum of value that party is to notify the COSLv1.0 Licensor with an offer to compensate development efforts of the Community with an Airdrop of cryptocurrency supported by a distributed ledger deployment from the Fork. The COSLv1.0 Licensor in consultation with the Community, has sixty (60) calendar days to accept or reject the offer.

Backpropagation of Changes: The COSLv1.0 Licensor in consultation with the Community may select features and code from the Fork code for addition to the Subject Matter Code at any time without penalty, fee, or other remuneration.

12. Attribution and Marking

Reproduction and distribution of the Subject Matter Code, in full or in part, original or modified, (“Subject Matter Code Distribution”) is subject to the following conditions:

Licensee shall provide all recipients of the Subject Matter Code Distribution, a copy of this COSLv1.0;

Licensee shall cause any files modified from the Subject Matter Code distributed in the Subject Matter Code Distribution to carry prominent notices stating that Licensee has changed the files;

Licensee shall retain, in the Source form of any Subject Matter Code Distribution that the Licensee distributes, all pertinent copyright, patent, trademark, and attribution notices from the Source form Subject Matter Code; and

If the Subject Matter Code includes a "NOTICE" text file as part of its distribution, then any Subject Matter Code Distribution, that the Licensee distributes must include a readable copy of the pertinent portions of the attribution notices contained within such NOTICE file, in at least one of the following places:

within a NOTICE text file in the distribution; within the Source form or documentation, if provided along with the Subject Matter Code Distribution;

within a display generated by the Subject Matter Code Distribution, if and wherever such third-party notices normally appear.

The contents of the NOTICE file are for informational purposes only and do not modify the CasperLabs Open Source License, Version 1.0 (COSLv1.0). Licensee of the Subject Matter Code may add their own attribution notices within the Subject Matter Code Distribution, alongside or as an addendum to the NOTICE text from the Subject Matter Code, provided that such additional attribution notices cannot be construed as modifying the COSLv1.0.

Copyright under the COSLv1.0 is to be as follows:

Copyright [yyyy] [name of copyright owner (Subject Matter Code)]

Licensed under the CasperLabs Open Source License, Version 1.0 (COSLv1.0); you may not use this file except in compliance with this COSLv1.0. You may obtain a copy of this COSLv1.0 at

https://github.com/CasperLabs/CasperLabs/blob/master/LICENSE

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the COSLv1.0 for the specific language governing permissions and limitations under the COSLv1.0.

Where Legacy Code is to be distributed, copyright under the Apache 2.0 License is to be as follows:

Copyright [yyyy] [name of copyright owner (Legacy Code)]

Licensed under the Apache License, Version 2.0 (“License”); you may not use this file except in compliance with the License. You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

13. Disclaimer of Warranty

Unless required by applicable law or agreed to in writing, COSLv1.0 Licensor provides the Subject Matter Code and materials provided with the Subject Matter Code (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the same and assume any risks associated with your exercise of permissions under this COSLv1.0.

14. Miscellaneous

The following miscellaneous terms apply to this COSLv1.0:

Clickwrap: The terms of this COSLv1.0 may be accepted via clickwrap or other analogous means.

Choice of Law: For purposes of conflicts of law, for contract interpretation of this COSLv1.0, New York state law is to be used, and for intellectual property law, of this COSLv1.0, United States Federal law is to be used.

Venue: State venue is to be New York County, New York. Federal venue is to be U.S. District Court, Southern District of New York.