diff --git a/ASWF/CLA-corporate.md b/ASWF/CLA-corporate.md new file mode 100644 index 0000000000..323d032463 --- /dev/null +++ b/ASWF/CLA-corporate.md @@ -0,0 +1,149 @@ +Project Name: OpenImageIO + +Project Entity: OpenImageIO Project a Series of LF Projects, LLC + +If emailing signed PDF, send to: manager@lfprojects.org + +**Software Grant and Corporate Contributor License Agreement ("Agreement") v2.1** + +Thank you for your interest in the project specified above (the “Project”). In +order to clarify the intellectual property license granted with Contributions +from any person or entity, the Project must have a Contributor License Agreement +(CLA) on file that has been signed by each Contributor, indicating agreement to +the license terms below. This license is for your protection as a Contributor as +well as the protection of the Project and its users; it does not change your +rights to use your own Contributions for any other purpose. + +This version of the Agreement allows an entity (the “Corporation”) to submit +Contributions to the Project, to authorize Contributions submitted by its +designated employees to the Project, and to grant copyright and patent licenses +thereto. + +If you have not already done so, please complete and sign this Agreement using +the electronic signature portal made available to you by the Project or its +third-party service providers, or email a PDF of the signed agreement to the +email address specified above. Please read this document carefully before +signing and keep a copy for your records. + +You accept and agree to the following terms and conditions for Your present and +future Contributions submitted to the Project. In return, the Project shall not +use Your Contributions in a way that is contrary to the public benefit or +inconsistent with its charter at the time of the Contribution. Except for the +license granted herein to the Project and recipients of software distributed by +the Project, You reserve all right, title, and interest in and to Your +Contributions. + +1. Definitions. + + “You” (or “Your”) shall mean the copyright owner or legal entity authorized by + the copyright owner that is making this Agreement with the Project. For legal + entities, the entity making a Contribution and all other entities that + control, are controlled by, or are under common control with that entity are + considered to be a single Contributor. For the purposes of this definition, + “control” means (i) the power, direct or indirect, to cause the direction or + management of such entity, whether by contract or otherwise, or (ii) ownership + of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial + ownership of such entity. + + “Contribution” shall mean the code, documentation or other original works of + authorship, including any modifications or additions to an existing work, that + is intentionally submitted by You to the Project for inclusion in, or + documentation of, any of the products owned or managed by the Project (the + “Work”). For the purposes of this definition, “submitted” means any form + of electronic, verbal, or written communication sent to the Project or its + representatives, including but not limited to communication on electronic + mailing lists, source code control systems, and issue tracking systems that + are managed by, or on behalf of, the Project for the purpose of discussing and + improving the Work, but excluding communication that is conspicuously marked + or otherwise designated in writing by You as “Not a Contribution.” + +2. Grant of Copyright License. Subject to the terms and conditions of this + Agreement, You hereby grant to the Project and to recipients of software + distributed by the Project a perpetual, worldwide, non-exclusive, no-charge, + royalty-free, irrevocable copyright license to reproduce, prepare + derivative works of, publicly display, publicly perform, sublicense, + and distribute Your Contributions and such derivative works. + +3. Grant of Patent License. Subject to the terms and conditions of this + Agreement, You hereby grant to the Project and to recipients of software + distributed by the Project a perpetual, worldwide, non-exclusive, no-charge, + royalty-free, irrevocable (except as stated in this section) patent + license to make, have made, use, offer to sell, sell, import, and + otherwise transfer the Work, where such license applies only to + those patent claims licensable by You that are necessarily infringed + by Your Contribution(s) alone or by combination of Your + Contribution(s) with the Work to which such Contribution(s) were + submitted. If any entity institutes patent litigation against You or + any other entity (including a cross-claim or counterclaim in a + lawsuit) alleging that your Contribution, or the Work to which + you have contributed, constitutes direct or contributory patent + infringement, then any patent licenses granted to that entity under + this Agreement for that Contribution or Work shall terminate as of + the date such litigation is filed. + +4. You represent that You are legally entitled to grant the above license. You + represent further that the employee of the Corporation designated as the Initial + CLA Manager below (and each who is designated in a subsequent written + modification to the list of CLA Managers) (each, a “CLA Manager”) is + authorized to maintain with the Project (1) the list of employees of the + Corporation who are authorized to submit Contributions on behalf of the + Corporation, and (2) the list of CLA Managers. + +5. You represent that each of Your Contributions is Your original creation (see + section 7 for submissions on behalf of others). + +6. You are not expected to provide support for Your Contributions, except to the + extent You desire to provide support. You may provide support for free, for a + fee, or not at all. Unless required by applicable law or agreed to in writing, + You provide Your 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. + +7. Should You wish to submit work that is not Your original creation, You may + submit it to the Project separately from any Contribution, identifying the + complete details of its source and of any license or other restriction + (including, but not limited to, related patents, trademarks, and license + agreements) of which you are personally aware, and conspicuously marking the + work as “Submitted on behalf of a third-party: [named here]”. + +8. It is your responsibility to notify the Project when any change is required + to the list of designated employees authorized to submit Contributions on behalf + of the Corporation, or to the list of the CLA Managers. + +\[Please complete and sign on the next page.\] + +::: {style="page-break-after: always; visibility: hidden"} +```{=tex} +\pagebreak +``` +::: + +Please sign: +\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_ Date: +\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_ + +Signatory Name: +\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_ + +Signatory E-mail: +\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_ + +Signatory Title: +\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_ + +Corporation Name: +\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_ + +Corporation Address: +\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_ + +\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_ + +\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_ + +Initial CLA Manager Name: +\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_ + +Initial CLA Manager E-Mail: +\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_ diff --git a/ASWF/CLA-individual.md b/ASWF/CLA-individual.md new file mode 100644 index 0000000000..52ce64b365 --- /dev/null +++ b/ASWF/CLA-individual.md @@ -0,0 +1,137 @@ +Project Name: OpenImageIO + +Project Entity: OpenImageIO Project a Series of LF Projects, LLC + +If emailing signed PDF, send to: manager@lfprojects.org + +**Individual Contributor License Agreement ("Agreement") v2.1** + +Thank you for your interest in the project specified above (the “Project”). In +order to clarify the intellectual property license granted with Contributions +from any person or entity, the Project must have a Contributor License Agreement +(CLA) on file that has been signed by each Contributor, indicating agreement to +the license terms below. This license is for your protection as a Contributor as +well as the protection of the Project and its users; it does not change your +rights to use your own Contributions for any other purpose. + +If you have not already done so, please complete and sign this Agreement using +the electronic signature portal made available to you by the Project or its +third-party service providers, or email a PDF of the signed agreement to the +email address specified above. Please read this document carefully before +signing and keep a copy for your records. + +You accept and agree to the following terms and conditions for Your present and +future Contributions submitted to the Project. In return, the Project shall not +use Your Contributions in a way that is contrary to the public benefit or +inconsistent with its charter at the time of the Contribution. Except for the +license granted herein to the Project and recipients of software distributed by +the Project, You reserve all right, title, and interest in and to Your +Contributions. + +1. Definitions. + + “You” (or “Your”) shall mean the copyright owner or legal entity authorized by + the copyright owner that is making this Agreement with the Project. For legal + entities, the entity making a Contribution and all other entities that control, + are controlled by, or are under common control with that entity are considered + to be a single Contributor. For the purposes of this definition, “control” + means (i) the power, direct or indirect, to cause the direction or management + of such entity, whether by contract or otherwise, or (ii) ownership of fifty + percent (50%) or more of the outstanding shares, or (iii) beneficial ownership + of such entity. + + “Contribution” shall mean the code, documentation or other original works of + authorship, including any modifications or additions to an existing work, that + is intentionally submitted by You to the Project for inclusion in, or + documentation of, any of the products owned or managed by the Project (the + “Work”). For the purposes of this definition, “submitted” means any form of + electronic, verbal, or written communication sent to the Project or its + representatives, including but not limited to communication on electronic + mailing lists, source code control systems, and issue tracking systems that are + managed by, or on behalf of, the Project for the purpose of discussing and + improving the Work, but excluding communication that is conspicuously marked or + otherwise designated in writing by You as “Not a Contribution.” + +2. Grant of Copyright License. Subject to the terms and conditions of this + Agreement, You hereby grant to the Project and to recipients of software + distributed by the Project a perpetual, worldwide, non-exclusive, no-charge, + royalty-free, irrevocable copyright license to reproduce, prepare + derivative works of, publicly display, publicly perform, sublicense, + and distribute Your Contributions and such derivative works. + +3. Grant of Patent License. Subject to the terms and conditions of this + Agreement, You hereby grant to the Project and to recipients of software + distributed by the Project a perpetual, worldwide, non-exclusive, no-charge, + royalty-free, irrevocable (except as stated in this section) patent + license to make, have made, use, offer to sell, sell, import, and + otherwise transfer the Work, where such license applies only to + those patent claims licensable by You that are necessarily infringed + by Your Contribution(s) alone or by combination of Your + Contribution(s) with the Work to which such Contribution(s) were + submitted. If any entity institutes patent litigation against You or + any other entity (including a cross-claim or counterclaim in a + lawsuit) alleging that your Contribution, or the Work to which + you have contributed, constitutes direct or contributory patent + infringement, then any patent licenses granted to that entity under + this Agreement for that Contribution or Work shall terminate as of + the date such litigation is filed. + +4. You represent that you are legally entitled to grant the above license. If + your employer(s) has rights to intellectual property that you create that + includes your Contributions, you represent that you have received permission to + make Contributions on behalf of that employer, that your employer has waived + such rights for your Contributions to the Project, or that your employer has + executed a separate Corporate CLA with the Project. + +5. You represent that each of Your Contributions is Your original creation (see + section 7 for submissions on behalf of others). You represent that Your + Contribution submissions include complete details of any third-party license or + other restriction (including, but not limited to, related patents and + trademarks) of which you are personally aware and which are associated with + any part of Your Contributions. + +6. You are not expected to provide support for Your Contributions, except to the + extent You desire to provide support. You may provide support for free, for a + fee, or not at all. Unless required by applicable law or agreed to in writing, + You provide Your 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. + +7. Should You wish to submit work that is not Your original creation, You may + submit it to the Project separately from any Contribution, identifying the + complete details of its source and of any license or other restriction + (including, but not limited to, related patents, trademarks, and license + agreements) of which you are personally aware, and conspicuously marking the + work as “Submitted on behalf of a third-party: [named here]”. + +8. You agree to notify the Project of any facts or circumstances of which you + become aware that would make these representations inaccurate in any respect. + +\[Please complete and sign on the next page.\] + +::: {style="page-break-after: always; visibility: hidden"} +```{=tex} +\pagebreak +``` +::: + +Please sign: +\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_ +Date: \_\_\_\_\_\_\_\_\_\_\_\_\_\_\_ + +Full name: +\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_ + +Mailing Address: +\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_ + +------------------------------------------------------------------------ + +------------------------------------------------------------------------ + +Country: +\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_ + +E-Mail: +\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_ diff --git a/ASWF/README-ASWF.md b/ASWF/README-ASWF.md new file mode 100644 index 0000000000..b635d9f4b6 --- /dev/null +++ b/ASWF/README-ASWF.md @@ -0,0 +1,21 @@ +OpenImageIO has been accepted to be an ASWF-administered project, by vote of +the ASWF Technical Advisory Council (TAC) on May 3, 2023. + +At this time, the ASWF subdirectory contains *proposed* (and sometimes TBD/WIP +placeholders) project organization and policy documents that will be formally +adopted as the OpenImageIO project is formally turned over to ASWF and moved +to the AcademySoftwareFoundation GitHub account. Please file issues or PRs +or review comments against these documents to make any suggested changes while +we are revising the drafts. + +Summary of the current state of documents: + +| File | Status | Notes | +| ---- | ------ | ----- | +| CLA-corporate.md | Final | Standard ASWF corporate CLA, approved by the TSC. Will take effect when the repo moves. | +| CLA-individual.md | Final | Standard ASWF individual CLA, approved by the TSC. Will take effect when the repo moves. | +| CODE_OF_CONDUCT.md | Final | Links to the standard LF CoC, approved by the TSC and now in effect. | +| CONTRIBUTING.md | Preliminary | Modified version of our existing CONTRIBUTING guidelines, lightly amended to reflect the changes that will come along with moving the repo, the new CLA/DCO rules, etc. +| GOVERNANCE.md | Final | Approved by the TSC and now in effect. | +| project_intake.md | Ongoing | This is the latest ASWF project intake checklist. We will check off items as we get them done. | +| Technical-Charter.md | Final | Approved by the TSC. | diff --git a/ASWF/Technical-Charter.md b/ASWF/Technical-Charter.md new file mode 100644 index 0000000000..e1d74c046d --- /dev/null +++ b/ASWF/Technical-Charter.md @@ -0,0 +1,242 @@ +# Technical Charter (the "Charter") for OpenImageIO a Series of LF Projects, LLC + +Adopted July 1, 2023 by unanimous vote of the TSC. + +This Charter sets forth the responsibilities and procedures for technical +contribution to, and oversight of, the OpenImageIO open source project, which +has been established as OpenImageIO a Series of LF Projects, LLC (the +“Project”). LF Projects, LLC (“LF Projects”) is a Delaware series limited +liability company. All contributors (including committers, maintainers, and +other technical positions) and other participants in the Project +(collectively, “Collaborators”) must comply with the terms of this Charter. + +### 1. Mission and Scope of the Project + + * **a.** The mission of the Project is to develop software to read, write, + and manipulate image files of any image file format relevant to vfx / + animation via a format-agnostic API, with a feature set, scalability, and + robustness needed for production. + + * **b.** The scope of the Project includes collaborative development under + the Project License (as defined herein) supporting the mission, including + documentation, testing, integration and the creation of other artifacts + that aid the development, deployment, operation or adoption of the open + source project. + +### 2. Technical Steering Committee + + * **a.** The Technical Steering Committee (the “TSC”) will be responsible + for all technical oversight of the open source Project. + + * **b.** The TSC voting members are initially the Project’s Committers. At + the inception of the project, the Committers of the Project will be as set + forth within the “GOVERNANCE” file within the Project’s code repository. + The TSC may choose an alternative approach for determining the voting + members of the TSC, and any such alternative approach will be documented + in the GOVERNANCE file. Any meetings of the Technical Steering Committee + are intended to be open to the public, and can be conducted + electronically, via teleconference, or in person. + + * **c.** TSC projects generally will involve Contributors and Committers. + The TSC may adopt or modify roles so long as the roles are documented in + the GOVERNANCE file. Unless otherwise documented: + + - **i.** Contributors include anyone in the technical community that + contributes code, documentation, or other technical artifacts to the + Project; + + - **ii.** Committers are Contributors who have earned the ability to + modify (“commit”) source code, documentation or other technical + artifacts in a project’s repository; and + + - **iii.** A Contributor may become a Committer by a majority approval of + the existing Committers. A Committer may be removed by a majority + approval of the other existing Committers. + + * **d.** Participation in the Project through becoming a Contributor and + Committer is open to anyone so long as they abide by the terms of this + Charter. + + * **e.** The TSC may (1) establish work flow procedures for the submission, + approval, and closure/archiving of projects, (2) set requirements for the + promotion of Contributors to Committer status, as applicable, and (3) + amend, adjust, refine and/or eliminate the roles of Contributors, and + Committers, and create new roles, and publicly document any TSC roles, as + it sees fit. + + * **f.** The TSC may elect a TSC Chair, who will preside over meetings of + the TSC and will serve until their resignation or replacement by the TSC. + The TSC Chair, or any other TSC member so designated by the TSC, will + serve as the primary communication contact between the Project and the + Academy Software Foundation, a directed fund of The Linux Foundation. + + * **g.** Responsibilities: The TSC will be responsible for all aspects of + oversight relating to the Project, which may include: + + - **i.** coordinating the technical direction of the Project; + + - **ii.** approving project or system proposals (including, but not + limited to, incubation, deprecation, and changes to a sub-project’s + scope); + + - **iii.** organizing sub-projects and removing sub-projects; + + - **iv.** creating sub-committees or working groups to focus on + cross-project technical issues and requirements; + + - **v.** appointing representatives to work with other open source or open + standards communities; + + - **vi.** establishing community norms, workflows, issuing releases, and + security issue reporting policies; + + - **vii.** approving and implementing policies and processes for + contributing (to be published in the CONTRIBUTING file) and coordinating + with the series manager of the Project (as provided for in the Series + Agreement, the “Series Manager”) to resolve matters or concerns that may + arise as set forth in Section 7 of this Charter; + + - **viii.** discussions, seeking consensus, and where necessary, voting on + technical matters relating to the code base that affect multiple + projects; and + + - **ix.** coordinating any marketing, events, or communications regarding + the Project. + +### 3. TSC Voting + + * **a.** While the Project aims to operate as a consensus-based community, + if any TSC decision requires a vote to move the Project forward, the + voting members of the TSC will vote on a one vote per voting member basis. + + * **b.** Quorum for TSC meetings requires at least fifty percent of all + voting members of the TSC to be present. The TSC may continue to meet if + quorum is not met but will be prevented from making any decisions at the + meeting. + + * **c.** Except as provided in Section 7.c. and 8.a, decisions by vote at a + meeting require a majority vote of those in attendance, provided quorum is + met. Decisions made by electronic vote without a meeting require a + majority vote of all voting members of the TSC. + + * **d.** In the event a vote cannot be resolved by the TSC, any voting + member of the TSC may refer the matter to the Series Manager for + assistance in reaching a resolution. + +### 4. Compliance with Policies + + * **a.** This Charter is subject to the Series Agreement for the Project and + the Operating Agreement of LF Projects. Contributors will comply with the + policies of LF Projects as may be adopted and amended by LF Projects, + including, without limitation the policies listed at + https://lfprojects.org/policies/. + + * **b.** The TSC may adopt a code of conduct (“CoC”) for the Project, which + is subject to approval by the Series Manager. In the event that a + Project-specific CoC has not been approved, the LF Projects Code of + Conduct listed at https://lfprojects.org/policies will apply for all + Collaborators in the Project. + + * **c.** When amending or adopting any policy applicable to the Project, LF + Projects will publish such policy, as to be amended or adopted, on its web + site at least 30 days prior to such policy taking effect; provided, + however, that in the case of any amendment of the Trademark Policy or + Terms of Use of LF Projects, any such amendment is effective upon + publication on LF Project’s web site. + + * **d.** All Collaborators must allow open participation from any individual + or organization meeting the requirements for contributing under this + Charter and any policies adopted for all Collaborators by the TSC, + regardless of competitive interests. Put another way, the Project + community must not seek to exclude any participant based on any criteria, + requirement, or reason other than those that are reasonable and applied on + a non-discriminatory basis to all Collaborators in the Project community. + + * **e.** The Project will operate in a transparent, open, collaborative, and + ethical manner at all times. The output of all Project discussions, + proposals, timelines, decisions, and status should be made open and easily + visible to all. Any potential violations of this requirement should be + reported immediately to the Series Manager. + +### 5. Community Assets + + * **a.** LF Projects will hold title to all trade or service marks used by + the Project (“Project Trademarks”), whether based on common law or + registered rights. Project Trademarks will be transferred and assigned to + LF Projects to hold on behalf of the Project. Any use of any Project + Trademarks by Collaborators in the Project will be in accordance with the + license from LF Projects and inure to the benefit of LF Projects. + + * **b.** The Project will, as permitted and in accordance with such license + from LF Projects, develop and own all Project GitHub and social media + accounts, and domain name registrations created by the Project community. + + * **c.** Under no circumstances will LF Projects be expected or required to + undertake any action on behalf of the Project that is inconsistent with + the tax-exempt status or purpose, as applicable, of the Joint Development + Foundation or LF Projects, LLC. + +### 6. General Rules and Operations. + + * **a.**. The Project will: + + - **i.** engage in the work of the Project in a professional manner + consistent with maintaining a cohesive community, while also maintaining + the goodwill and esteem of LF Projects, Joint Development Foundation and + other partner organizations in the open source community; and + + - **ii.** respect the rights of all trademark owners, including any + branding and trademark usage guidelines. + +### 7. Intellectual Property Policy + + * **a.** Collaborators acknowledge that the copyright in all new + contributions will be retained by the copyright holder as independent + works of authorship and that no contributor or copyright holder will be + required to assign copyrights to the Project. + + * **a.** Except as described in Section 7.c., all contributions to the + Project are subject to the following: + + - **i.** All new inbound code contributions to the Project must be made + using the Apache License, Version 2.0 available at + http://www.apache.org/licenses/LICENSE-2.0 (the “Project License”). + + - **ii.** All new inbound code contributions must also be accompanied by + (i) a Developer Certificate of Origin (http://developercertificate.org) + sign-off in the source code system that is submitted through a + TSC-approved contribution process which will bind the authorized + contributor and, if not self-employed, their employer to the applicable + license and (ii) a duly executed contribution license agreement in the + form approved by the TSC; + + - **iii.** All outbound code will be made available under the Project + License. + + - **iv.** Documentation will be received and made available by the Project + under the Creative Commons Attribution 4.0 International License + (available at http://creativecommons.org/licenses/by/4.0/). + + - **v.** The Project may seek to integrate and contribute back to other + open source projects (“Upstream Projects”). In such cases, the Project + will conform to all license requirements of the Upstream Projects, + including dependencies, leveraged by the Project. Upstream Project code + contributions not stored within the Project’s main code repository will + comply with the contribution process and license terms for the + applicable Upstream Project. + + * **c.** The TSC may approve the use of an alternative license or licenses + for inbound or outbound contributions on an exception basis. To request an + exception, please describe the contribution, the alternative open source + license(s), and the justification for using an alternative open source + license for the Project. License exceptions must be approved by a + two-thirds vote of the entire TSC. + + * **d.** Contributed files should contain license information, such as SPDX + short form identifiers, indicating the open source license or licenses + pertaining to the file. + +### 8. Amendments + + * **a.** This charter may be amended by a two-thirds vote of the entire TSC + and is subject to approval by LF Projects. diff --git a/ASWF/project_intake.md b/ASWF/project_intake.md new file mode 100644 index 0000000000..e8342d10b9 --- /dev/null +++ b/ASWF/project_intake.md @@ -0,0 +1,66 @@ +# Project Intake checklist + +This is a checklist for TSC's to review as part of the intake process. The TSC should review this entire list during the kickoff meeting. For anything outstanding, create an [issue](../issues) to track and link to it in the list + +- Existing Project Governance + - [X] A [LICENSE.md](../LICENSE.md) file in every code repository, with the license chosen an OSI-approved license. + - [X] Any third-party components/dependencies included are listed along with thier licenses ( [THIRD-PARTY.md](../THIRD-PARTY.md) ) + - [X] A [README.md](../README.md) file welcoming new community members to the project and explaining why the project is useful and how to get started. + - [X] A [CONTRIBUTING.md](../CONTRIBUTING.md) file explaining to other developers and your community of users how to contribute to the project. The file should explain what types of contributions are needed and how the process works, along with how to disclose security issues responsibly ( may also point to a [SECURITY.md](../SECURITY.md) file ). + - [ ] A [CODEOWNERS](../CODEOWNERS) or [COMMITTERS](../COMMITERS.csv) file to define individuals or teams that are responsible for code in a repository; document current project owners and current and emeritus committers. + - [X] A [CODE_OF_CONDUCT.md](../CODE_OF_CONDUCT.md) file that sets the ground rules for participants’ behavior associated and helps to facilitate a friendly, welcoming environment. By default, projects should leverage the Linux Foundation Code of Conduct unless an alternate Code of Conduct was previously approved. + - [X] A [RELEASING.md](../RELEASING.md) file that provides documentation on the release methodology, cadence, criteria, etc. + - [X] A [GOVERNANCE.md](../GOVERNANCE.md) file that documents the project’s technical governance. + - [ ] A [SUPPORT.md](../SUPPORT.md) file to let users and developers know about ways to get help with your project. +- Infrastructure/Assets + - [X] Technical Charter Approved + - [ ] **(Awaiting scan from LF)** License scan completed and no issues found + - [ ] Code repository imported to ASWF GitHub organization or ownership of current GitHub organization given to `thelinuxfoundation` user + - [X] Developer Certificate of Origin past commit signoff done and DCO Probot enabled. + - [X] Issue/feature tracker established (JIRA, GitHub issues) + - [X] Mailing lists ( one of ) + - [X] Setup new lists ( -dev@ and -tsc@ ) on [ASWF groups.io](https://lists.aswf.io) ( create [issue on foundation repo](https://github.com/AcademySoftwareFoundation/foundation/issues/new) to setup ) + - [X] (In progress) Move to [ASWF groups.io](https://lists.aswf.io) ( create [issue on foundation repo](https://github.com/AcademySoftwareFoundation/foundation/issues/new) to transfer ) + - [X] Slack ( create [issue on foundation repo](https://github.com/AcademySoftwareFoundation/foundation/issues/new) to setup project channel on [ASWF Slack](https://slack.aswf.io) ) + - [ ] Website + - [X] CI/build environment + - [X] Trademarks/mark ownership rights ( complete 'LF Projects - Form of Trademark and Account Assignment' - create [issue on foundation repo](https://github.com/AcademySoftwareFoundation/foundation/issues/new) - only needed if project using existing name ) + - [ ] Domain name ( create [issue with the LF IT staff](https://jira.linuxfoundation.org/plugins/servlet/theme/portal/2/group/19) to setup/transfer ) + - [ ] Zoom account access ( create [issue on foundation repo](https://github.com/AcademySoftwareFoundation/foundation/issues/new) to get access to credentials ) + - [X] (N/A) Social media accounts or other project accounts ( create [issue on foundation repo](https://github.com/AcademySoftwareFoundation/foundation/issues/new) to transfer ) + - [X] Logo(s) ( create [issue on artwork repo](https://github.com/AcademySoftwareFoundation/artwork/issues/new) to add in SVG and PNG format and color/black/white ) +- New Project Governance + - [X] TSC members identified + - [X] First TSC meeting held + - [X] TSC meeting cadence set and added to project calendar + - [X] CLA Approved ( if used ) ( [CCLA](CLA-corporate.md) and [ICLA](CLA-individual.md) ) + - Project charter ( [Technical-Charter.md](Technical-Charter.md) ) + - [X] Approved by TSC + - [ ] Filed ( create pull request against [foundation repo](https://github.com/AcademySoftwareFoundation/foundation) ) + - [X] [Core Infrastructure Initiative Best Practices Badge](https://bestpractices.coreinfrastructure.org/) achieved as the 'Passing' level. +- Outreach + - [ ] New project announcement done ( create [issue on foundation repo](https://github.com/AcademySoftwareFoundation/foundation/issues/new) to trigger ) + - [X] Project added to ASWF website and ASWF landscape +- Incubation Stage requirements + - [X] Have achieved and maintained a [OpenSSF Best Practices Badge at the passing level](https://bestpractices.coreinfrastructure.org/en/criteria). + - [ ] Have had a successful license scan with any critical issues remedied. + - [ ] Have a defined project mission and scope + - [ ] An overview of the project’s architecture and features defined. + - [ ] A project roadmap defined, which should address the following questions. + - What use cases are possible now? + - What does the next year look like in terms of additional features and use cases covered? + - [ ] Community and contributor growth assessment + - The current number of contributors and committers, and the number of different organizations contributing to the project. + - Demonstrate a sustained flow of commits / merged contributions + - A credible plan for developing a thriving user community, in particular expanding the number of committers and contributors? + - Outline of the plan for the project to complete the requirements for Adopted Stage + - [ ] Obtain an affirmative vote of the TAC. +- Adopted Stage graduation requirements + - [ ] Demonstrate a substantial ongoing flow of commits and merged contributions, authored by a healthy number of diverse contributors. + - [ ] Demonstrable roadmap progress. + - [ ] A healthy number of public adopters that are identified within the project ( using an ADOPTERS file or showcased on the project’s website ). + - [ ] Have achieved and maintained an [OpenSSF Best Practices Badge at the gold level](https://bestpractices.coreinfrastructure.org/en/criteria/2). + - [ ] Have a technical lead appointed for voting representation of the project to the TAC. + - [ ] Be deemed by the TAC to add value to the mission of ASWF. + - [ ] 2/3 supermajority vote of the TAC + - [ ] Affirmative majority vote of the Governing Board diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md new file mode 100644 index 0000000000..4677a3c658 --- /dev/null +++ b/CODE_OF_CONDUCT.md @@ -0,0 +1,7 @@ +# Code of Conduct + +The OpenImageIO project abides by Linux Foundation's code of conduct, which +you can read in full [here](https://lfprojects.org/policies/code-of-conduct). + +To report incidents or to appeal reports of incidents, send email to +the Manager of LF Projects at manager@lfprojects.org. diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 9999149b08..aa4877355a 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,9 +1,21 @@ Contributing to OpenImageIO =========================== +> NOTE: This is the proposed post-ASWF-move version of CONTRIBUTING. After the +> project is legally transferred and moved to the new repo, this file will +> replace the one at the project root. +> +> TO DO: +> +> - [X] Update the mail list sign-up page after the mail list moves. +> - [ ] Update the repo URL +> - [ ] Double check the security and info email addresses. +> + Code contributions to OpenImageIO are always welcome, and [nearly 200 -people](CREDITS.md) have done so over the years. Please review this -document to get a briefing on our process. +people](https://github.com/OpenImageIO/oiio/blob/master/CREDITS.md) have done +so over the years. Please review this document to get a briefing on our +process. Mail List and Slack @@ -70,32 +82,35 @@ Contributor License Agreement (CLA) and Intellectual Property ------------------------------------------------------------- To protect the project -- and the contributors! -- we do require a Contributor -License Agreement (CLA) for anybody submitting substantial changes. Trivial -changes (such as an alteration to the build system, short bug fixes to -existing code, etc.) may be accepted without a CLA, at the sole discretion of -the project leader, but anything complex needs a CLA. This is for your own +License Agreement (CLA) for anybody submitting changes. This is for your own safety, as it prevents any possible future disputes between code authors and their employers or anyone else who might think they might own the IP output of the author. -* [Corporate CLA](https://github.com/OpenImageIO/oiio/blob/master/src/doc/CLA-CORPORATE) : +* [Corporate CLA](https://github.com/OpenImageIO/oiio/blob/master/ASWF/CLA-corporate.md) : If you are writing the code as part of your job, or if there is any possibility that your employers might think they own any intellectual property you create. This needs to be executed by someone who has signatory power for the company. -* [Individual CLA](https://github.com/OpenImageIO/oiio/blob/master/src/doc/CLA-INDIVIDUAL) : +* [Individual CLA](https://github.com/OpenImageIO/oiio/blob/master/ASWF/CLA-individual.md) : If you are an individual writing the code on your own time, using your own equipment, and you're SURE you are the sole owner of any intellectual property you contribute. +The easiest way to sign CLAs is digitally [using EasyCLA](https://corporate.v1.easycla.lfx.linuxfoundation.org). +Companies who prefer not to use the online tools may sign, scan, and email +the executed copy to manager@lfprojects.org. -Download the appropriate CLA from the links above (or find them in the src/doc -directory of the software distribution), print, sign, and rescan it (or just -add a digital signature directly), and email it back to: info@openimageio.org +The CLA allows a company to name a "CLA Manager" (who does not need +signatory power) who has the ability to use the online system to add or +delete individual employees of the company who are authorized to submit pull +requests, without needing to get an executive to amend and sign the +agreement each time. -Our CLA's are identical to those used by Apache and many other open source -projects. +Please note that these CLAs are based on the Apache 2.0 CLAs, and differ +minimally, only as much as was required to correctly describe the EasyCLA +process and our use of a CLA manager. **Contribution sign off** @@ -164,7 +179,7 @@ official main repository) will merge your fixes into the master branch. Coding Style ------------ -#### File conventions +### File conventions C++ implementation should be named `*.cpp`. Headers should be named `.h`. All headers should contain @@ -185,7 +200,7 @@ notice or copy it to any new files, it really only applies to the particular file in which it appears. -#### Formatting +### Formatting We use [clang-format](https://clang.llvm.org/docs/ClangFormat.html) to uniformly format our source code prior to PR submission. Make sure that @@ -233,7 +248,7 @@ developers visually parse the code (for example, spotting at a glance where new functions begin), but not so much as to spread it out or be confusing. -#### Identifiers +### Identifiers In general, classes and templates should start with upper case and capitalize new words: `class CustomerList;` In general, local variables @@ -253,7 +268,7 @@ Names of data should generally be nouns. Functions/methods are trickier: a the name of a function that returns a value but has no side effects should be a noun, but a procedure that performs an action should be a verb. -#### Class structure +### Class structure Try to avoid public data members, although there are some classes that serve a role similar to a simple C struct -- a very straightforward collection of @@ -273,7 +288,7 @@ Avoid multiple inheritance. Namespaces: yes, use them! -#### Third-party libraries +### Third-party libraries Prefer C++11 `std` rather than Boost, where both can do the same task. Feel free to use Boost classes you already see in the code base, but don't @@ -287,7 +302,7 @@ Use these libraries for OIIO internals, but please DO NOT require them in any of our main external APIs unless it's been thoroughly discussed and approved by the group. -#### Comments and Doxygen +### Comments and Doxygen Comment philosophy: try to be clear, try to help teach the reader what's going on in your code. @@ -303,7 +318,7 @@ They looks like this: float foo; ///< Doxygen comments on same line look like this } -#### Miscellaneous +### Miscellaneous Macros should be used only rarely -- prefer inline functions, templates, enums, or "const" values wherever possible. diff --git a/GOVERNANCE.md b/GOVERNANCE.md new file mode 100644 index 0000000000..b375f89cf2 --- /dev/null +++ b/GOVERNANCE.md @@ -0,0 +1,211 @@ + + + +# OpenImageIO Project Governance + +OpenImageIO is a project of the Academy Software Foundation and relies on the +ASWF governance policies, supported by the Linux Foundation. + +There are three primary project roles: Contributors submit code to the +project; Committers approve code to be included into the project; and the +Technical Steering Committee (TSC) provides overall high-level project +guidance. + +* [Contributors](#Contributors) +* [Committers](#Committers) +* [Technical Steering Committee](#Technical-Steering-Committee) + +## Contributors + +The OpenImageIO project grows and thrives from assistance from Contributors. +Contributors include anyone in the community who contributes code, +documentation, or other technical artifacts that have been incorporated into +the project repository. + +Anyone can be a Contributor. You need no formal approval from the project, +beyond the legal forms. + +### How to Become a Contributor + +* Review the coding standards and [contributing + guidelines](../CONTRIBUTING.md) to ensure your contribution is in line with + the project's coding and styling guidelines. + +* Sign the Individual CLA, or if you are employed by an organization that + might have any claim to IP you create, have your organization sign the + Corporate CLA. + +* Submit your code as a PR with the appropriate DCO sign-off on each commit. + The easiest way to do this is to ensure that you commit your code with `git + commit -s`. + +## Committers + +Project Committers have merge access on the OpenImageIO GitHub repository +and are responsible for approving submissions by Contributors. + +### Committer Responsibilities + +Typical activities of a Committer include: + +* Helping users and novice contributors. + +* Ensuring a response to questions posted to the + [Oiio-dev developer mail list](https://lists.aswf.io/g/oiio-dev) + +* Contributing code and documentation changes that improve the project. + +* Reviewing and commenting on issues and pull requests. + +* Ensuring that changes and new code meet acceptable standards and are in + the long-term interest of the project. + +* Participation in working groups. + +* Merging pull requests. + +### How to Become a Committer + +Any member of the OpenImageIO community (though typically an existing +Committer or TSC member) may nominate an individual making significant and +valuable contributions to the OpenImageIO project to become a new Committer. +To nominate a new Committer, open an issue in the OpenImageIO repository, send +mail to the TSC mail list, or raise the issue at a TSC meeting. + +The TSC may periodically review the Committer list to identify inactive +Committers. Past Committers are typically given Emeritus status. Emeriti may +request that the TSC restore them to active Committer status. + +## Technical Steering Committee + +The Technical Steering Committee (TSC) has final authority over this project. +As defined in the project charter, in addition to committer activities, TSC +responsibilities also include, but are not limited to: + +* Coordinating technical direction of the Project. + +* Project governance and contribution policy. + +* GitHub repository administration. + +* Maintaining the list of additional Committers + +* Appointing representatives to work with other open source or open + standards communities. + +* Discussions, seeking consensus, and where necessary, voting on technical + matters relating to the code base that affect multiple projects. + +* Coordinating any marketing, events, or communications regarding the + project. + +Within the TSC are two elected leadership roles to be held by its members +and voted on annually. Any TSC member can express interest in serving in a +role, or nominate another member to serve. There are no term limits, and one +person may hold multiple roles simultaneously. Should a TSC member resign +from a leadership role before their term is complete, a successor shall be +elected through the standard nomination and voting process to complete the +remainder of the term. The leadership roles are: + +* **Chair**: This position acts as the project manager, organizing meetings + and providing oversight to project administration. + +* **Chief Architect**: This position makes all the final calls on design and + technical decisions, and is responsible for avoiding "design by committee" + pitfalls. + +The chair role is assumed to rotate annually (though there are no term +limits, so the TSC may reelect an existing chair). The chief architect +position should be a source of stability and coherent design vision, so the +TSC is encouraged to choose an architect who can serve for many years and +only change architects when it is necessary for the health of the project +and its community. + +At the time of election, the TSC will also agree upon which of these two +leaders will serve as the OpenImageIO ASWF (Academy Software Foundation) TAC +(Technical Advisory Council) representative for the term. This member +represents the project at all ASWF TAC meetings. + +### TSC Members + +Current voting members of the TSC are: + +* **Chair and TAC representative**: Daniel Greenstein - Sony Pictures Imageworks (possibly interim?) +* **Chief Architect**: Larry Gritz - Sony Pictures Imageworks +* Anton Dukhovnikov - Wētā Digital / Unity +* Joseph Goldstone - ARRI +* Lewis Wakeland - Disney TV Animation +* Luke Emrose - Animal Logic (interim?) +* Martin Davies - LAIKA +* Robin Rowe - Heroic Robots +* Thiago Ize - Autodesk + + +### TSC Nomination and Succession + +Any proposal for additional members of the TSC may be submitted by Committers, +TSC members, or other major stakeholders of the OpenImageIO community by +opening an issue outlining their case or raising the issue at a TSC meeting. +New TSC members are accepted or rejected by majority vote of the TSC. + +If a TSC member is for an extended period not regularly participating or +performing the responsibilities expected of TSC members, the TSC may by +majority vote request an alternate TSC member be submitted by that +organization, or remove the inactive member from the TSC. + +A voting member of the TSC may nominate a successor in the event that such +voting member decides to leave the TSC, and the TSC, including the departing +member, shall confirm or reject such nomination by a vote. In the event that +the departing member's nomination for successor is rejected by vote of the +TSC, the departing member shall be entitled to continue nominating successors +until one such successor is confirmed by vote of the TSC. If the departing +member fails or is unable to nominate a successor, the TSC may nominate one on +the departing member's behalf. + +TSC membership is presumed to be retained by the individual even if they +change employers, provided they remain active in the project. The TSC may take +action to ensure that organizational stakeholder representation not become +severely disproportionate, for example by urging an organization that loses +its sole TSC representative to nominate a new member, or by limiting the total +number of voting members from any one organization if too many members all +move to the same organization. + +### TSC Meetings + +Any meetings of the TSC are intended to be open to the public, except where +there is a reasonable need for privacy. The TSC meets regularly in a voice +conference call, at a cadence deemed appropriate by the TSC. The TSC Chair +moderates the meeting, or appoints another TSC member to moderate in his or +her absence. Meetings may also be streamed online where appropriate; +connection details will be posted to the oiio-dev mail list in advance of the +scheduled meeting. + +Items are added to the TSC agenda which are considered contentious or are +modifications of governance, contribution policy, TSC membership, or release +process, in addition to topics involving the high-level technical direction +of the project. + +The intention of the agenda is not to approve or review all patches. That +should happen continuously on GitHub and be handled by the larger group of +Committers. + +Any community member or Contributor can ask that something be reviewed by +the TSC at the meeting by logging a GitHub issue. Any Committer, TSC member, +or the meeting chair can bring the issue to the TSC's attention by applying +the `TSC` label. + +Prior to each TSC meeting, the meeting chair will share the agenda with +members of the TSC. TSC members can also add items to the agenda at the +beginning of each meeting. The meeting chair and the TSC cannot veto or +remove items. + +The TSC may invite additional persons to participate in a non-voting +capacity. + +The meeting chair is responsible for ensuring that minutes are taken and +archived in the project repository or other designated accessible location. + +Due to the challenges of scheduling a global meeting with participants in +several time zones, the TSC will seek to resolve as many agenda items as +possible outside of meetings on the public mailing list or through GitHub +issues, discussions, and pull requests.