Approving new Projects and Working Groups - ARCHIVED

Deprecated content

This content might be obsolete as the page was archived following deprecation of the concept of FINOS Programs in early 2020. For the latest on FINOS Corporate Governance please refer to the FINOS website while for the Community Governance check the FINOS Community Github Repository and specifically see here more information on Project Lifecycle and transitions now approved directly by the FINOS team.

As defined in the Governance, one of the key responsibilities of a PMC is to approve new Projects and Working Groups that are proposed to be contributed to the Program.  Although the Foundation has few restrictions on the criteria a PMC uses to make these determinations, the primary expectation is that the PMC will determine whether the contribution is aligned with the scope of the Program, and the broader mission of the Foundation.

Approval Process

Contributions are registered in the Foundation's Jira instance, and will be assigned to the appropriate Program's PMC Lead once all /wiki/spaces/FINOS/pages/75530375 are completed by Foundation staff.  The PMC Lead, or member of the PMC, is then required to coordinate any discussion required within the PMC, and then initiate a formal approval decision, using the Foundation's decision making mechanism.

Once a decision is reached, the result must be recorded in the contribution's Jira issue, and the Jira marked as either "Approved" or "Rejected".  If the PMC rejects the contribution, a detailed explanation of why should be added to the Jira as a public comment, so that the contributor has an opportunity to take remedial action if they so choose.

Note that /wiki/spaces/FINOS/pages/75530375 of the contribution is checked by Foundation staff.  PMCs are not required to perform this level of validation.

Creating a New GitHub Repository

If the contribution requires a new, empty GitHub repository (for example it's a new concept, being developed in the open from the get-go), the Foundation recommends using the project-blueprint as a template.  It contains all of the basic boilerplate content that repositories of Foundation-hosted projects are required to include.

Transferring Existing Code

If a contribution has existing code, it must be transferred to the Program's GitHub organization.  There are several ways the PMC can accomplish this; here are a few of the approaches that have worked well in the past:

Source(s)
Approach
GitHub.com repository (recommended)

Use GitHub's transfer ownership capability to move it over to the Program's GitHub organization. To do this you will need to temporarily add one of the Program's GitHub organization owners (e.g. the PMC Lead) as an admin on the source repository, so that they can initiate the transfer (once the transfer is complete, you will be able to remove the Program's GitHub organization owner from the repository - in fact we encourage you to do so).

The Foundation recommends this approach as it has the unique benefit of preserving the full commit & pull request histories, the project's issue list, wiki and GitHub pages, and more.

Some important notes:

  1. When you transfer a repository, its issues, wiki, stars, and watchers are also transferred (read more details about repository transfers)
  2. When you transfer a private repository, all forks will be disabled, until marked as public ; they will also be disconnected from the upstream repository, therefore it is strongly advised to push all changes to an upstream branch, before performing the code transfer
GitHub.com repository where it is not possible to temporarily configure someone else as an admin

Perform a double transfer:

  1. Transfer ownership of the repository to a personal ("user") account on GitHub (see the GitHub documentation for details)
  2. Follow the steps described above for transferring a GitHub.com repository to the Program

GitHub Enterprise repository

Perform a copy, transfer, and freeze:

  1. Copy the repository into a personal ("user") account on GitHub (this StackOverflow post describes how to accomplish this)
  2. Follow the steps described above for transferring a GitHub.com repository to the Program
  3. Delete or freeze (e.g. disable access, make read-only, etc.) the repository in your GitHub Enterprise installation, to prevent accidental modifications to the wrong repository.
Other Source Code Management (SCM) repository

Perform an import, transfer, and freeze:

  1. Use the GitHub importer to import the repository into a personal ("user") account on GitHub (see the GitHub documentation for details)
  2. Follow the steps described above for transferring a GitHub.com repository to the Program
  3. Delete or freeze (e.g. disable access, make read-only, etc.) the repository in your SCM installation, to prevent accidental modifications to the wrong repository.
Source code snapshot

Snapshotting the code and providing it to the PMC in an archive file (.zip, .tar.gz, etc.) can also work.

This is the recommended approach if you wish to truncate the commit history prior to contribution.

Do-It-Yourself (DIY)If you wish to populate your repository yourself, the PMC should create an empty repository in the Program's GitHub organization (as described above), and then configure the contributing team as owners and committers. The project team can then prepare an initial commit at your leisure.
A Note about GitHub Invitations

Following completion of a code transfer, the PMC should invite the Project team's admins and contributors to the GitHub repository.  The team must accept these invitations before they will be able to write to the repository!

This is done by accessing the following URL (substituting the name of the Program's GitHub organisation and the specific GitHub repository), and then accepting the invitation:

https://github.com/<program-org>/<repository-name>/invitations

Although GitHub will send the invitation via email, we've found that these emails are often time-delayed (by days, in some cases) and can be flagged as spam by some email systems.  As a result, we strongly encourage all teams members to pro-actively accept the invitations directly on GitHub, using the URL to the left.

Need help? Email help@finos.org we'll get back to you.

Content on this page is licensed under the CC BY 4.0 license.
Code on this page is licensed under the Apache 2.0 license.