Project Collaboration on Github
Teams
Every Program, PMC and Project will be mapped as a GitHub team, following a 2-levels hierarchical structure:
<FINOS Program Team>
<FINOS Project Team, belonging to the Program>
panpmcs
<FINOS PMC team>
Note that FINOS Program Teams only inherit members from sub-groups, they are not directly managed.
Each repository will grant access to these teams, as shown in the picture below (taken from the datahelix project)
Other use cases
Issues
GitHub Issues provide a simple and flexible way to track task lists; issues can also include list of checkboxes, as shown in the image.
Labels can be useful to add meta information to tasks, like type, audience and more.
Issue Templates
When creating a new issue, it is possible to guide users via Issue Templates, which allow to:
- Choose an issue type from a list; at FINOS, we start providing 3 templates: bugs, feature requests and support questions (check the project blueprint below)
- Define a template for the issue content (ie, abstract, expected result, actual result)
Issue Labels
Labels are very helpful to manage issues; each repository can define its own taxonomy, though it is helpful to enforce a common list of labels, so that the experience of using GitHub Issues across different repositories and projects is the same. It is also handy when using GitHub boards that link to multiple repositories.
- Priorities - #ff0000
- prio-high - High priority
- prio-low - Low priority
- prio-medium - Medium priority
- Contribution hints - #5319e7
- good first issue - A good first issue to start contributing
- help wanted
- Issue status - #a2e8e6
- on hold - Tasks not executed until further notice
- feature writing - Grooming and feature writing needed
- ready for dev - This item is ready for development
- Types - #53c43c
- docs - Related to documentation
- question - Further information is requested
- meeting - If an issue describes a meeting minute
- Topics - #ffd4b7
- github - GitHub related topic
- docusaurus - Docusaurus related topic
- ...
Project Releases
The easiest way to define roadmaps in GitHub is using Milestones, which allow to group issues together and associate a title, description and due date.
As a complement or alternative, GitHub project boards can be used to define a Kanban (or "flow") of activities across a list of predefined states, which can be mapped to the milestones of a roadmap.
Project Website
FINOS Projects may need a Wiki in order to collaboratively edit and publish content related with general documentation, team composition, meeting information, how to get in touch and other useful info.
FINOS uses a framework called Docusaurus to:
- Provide a simple way for collaborators to manage their documentation content, using Markdown files and folders within a GitHub repository
- Easily enable automated website publication, as soon as content is changed
- Allow FINOS to enforce graphic guidelines across all websites
Checkout FDC3 and Financial Objects as examples; you can also read more on how FINOS uses Docusaurus.
Conversations
In order to track threaded conversations - among project team members, external collaborators and consumers - it is possible to use GitHub Issues, with the following limitations:
- The scope of the conversations is always public, whereas there may be sensitive conversations across project leaders that may require to be confidential
- Issue comments are flat, although mentions and quoting can be used to follow multiple conversation threads.
A more advanced way (currently being investigated at FINOS) is to use GitHub team discussions:
- Can be created as private, which are accessible only by team members
- Can be created as public to all GitHub FINOS org members
- Cannot be created at public to non FINOS member or unauthenticated visitors, so GitHub Issues is the only option for that.
Both features support email notifications and the ability to post a comment by answering to it.
Voting
FINOS Governance processes require voting at different levels (and publicly available), including but not limited to:
- PMC votes for new contributions
- Project votes for new committers, releases and other decisions
GitHub Issues can provide an easy platform to vehicle this process:
- The person casting the vote opens a GitHub Issue (see ODP issue template as example). The following items must be filled/reviewed, before circulating the issue URL:
- Title and description of the vote; use the
[VOTE]
prefix in the issue title, to help issue browsing and discoverability - Add the
vote
label - list of users who have the right to a binding vote, typically the project or PMC teams
- Title and description of the vote; use the
- Everyone can vote the issue, until the vote is open:
- Those with a GitHub account can simply react to the issue (see image to the right)
- Those without a GitHub account can react via email (using any public FINOS list)
- The person casting the vote counts reactions and reports the following data in a issue comment:
- Total votes (add links to email web history for each email vote, if any)
- Binding votes (Approve, Deny, Abstained)
- Result
Project setup
A project needs:
- A Github repository
- The
vote
issue label defined - Issue template
.github/ISSUE_TEMPLATE/Vote.md
defined
Meeting Minutes
Meetings are one of the most used collaboration channels at FINOS, and minutes are very important, as they provide a transparency across all project activities and decisions; you can read more in the Running Good Meetings page; they are also very important for participants, as they are used to track meeting participation and therefore the activity of each individual and firm; all data is publicly available at metrics.finos.org
Although Atlassian Confluence is currently the most used tool, FINOS also provides a way to use GitHub Issues to manage meeting minutes. The person leading the meeting (or meeting leader) can create a new GitHub Issue for each meeting, following the Meeting template provided by FINOS and leverage issue assignees to track meeting participants (see our public activity dashboards).
- Prior to the meeting - 48 hours before, as per meeting best practices, the meeting leader creates a new GitHub Issue using...
Meetings
issue template[MEETING]
title prefixmeeting
label
- At the beginning of the meeting - the meeting leader posts the issue URL on the meeting chat and asks all participants to add a comment on the issue. Also the meeting leader must comment the issue!
- At the end of the meeting - the meeting leader closes the issue, which will trigger the attendants the indexing process; when indexing is completed, the label
indexed
will be added to the issue. - (Optional) After the meeting - the meeting leader can remove the
indexed
label in order to remove meeting attendance from the index and make changes; in order to reindex the meeting, theindexed
label can be re-added.
Corner cases
- If a GitHub username cannot be added as issue assignee, it means that is not part of github.com/orgs/finos/people (the GitHub FINOS Org members); to work around this restriction, the GitHub user can add a hello comment to the issue, which will allow the meeting leader to do the assignment. In parallel, the GitHub user can sign a CLA with FINOS and request GitHub Org membership.
- If a participant doesn't have a GitHub account, the meeting leader can add full name and affiliation in the issue description (see issue template).
- If a GitHub username is not registered on FINOS internal database, it won't be indexed; in that case, the action will add a comment to the issue, with the list of users not being indexed and a mention to FINOS staff team.
- Never reopen and close a meeting minutes issue! If a meeting issue is Reopened and Closed, after the meeting is held, the meeting date will be overridden with the current one ; if you need to reindex a meeting,
indexed
label as described above. If you're uncertain or want to revert changes, get in touch with FINOS staff via help@finos.org
Project setup
Dynamic issue templates
Checkout https://github.com/apps/handlebar-templates if you want to make your meeting issue templates more dynamic and automated
A project needs:
- A Github repository
- The meeting leader must have at least
Write
access to the repository - The
meeting
issue label defined - Issue template
.github/ISSUE_TEMPLATE/Meeting.md
defined - Action
.github/workflows/meetings.yml
defined - GitHub repository secrets (ask
help@finos.org
to set them up)
Security Scanning
In order to consolidate processes and tools around security vulnerabilities management, FINOS have shared a /wiki/spaces/FINOS/pages/1230176257 and teamed up with WhiteSource to configure a bot that continuously scans - across each configured repository - all external dependencies; the bot is able to scan direct commits and Pull Requests, and by default creates GitHub Issues with details about the vulnerability; you can read more about WhiteSource integration for GitHub.com.
FINOS Project blueprint
The Project blueprint is a FINOS project that provides a template for new or existing repositories; it includes:
- a README template, with a suggested structure of content
- a NOTICE template, required by FINOS bylaws
- a LICENSE template, required by FINOS bylaws
- a code of conduct template, required by FINOS bylaws
- Contributing guidelines, required by FINOS bylaws
- WhiteSource custom configuration, to setup continuous security scanning for your project
- Issue templates for bugs, feature requests and support questions , defined in the .github folder
Placeholders are defined using the {}
brackets.
Creating a new repository
Anyone can use the Project blueprint repository, simply accessing https://github.com/finos/project-blueprint and pressing the Use this template
button and following instructions.
The main README.md
file contains instructions on how to replace placeholders across all blueprint files.
Aligning existing repository with project blueprint
There is no automated way to align an existing repository with the project blueprint structure, therefore it must be done manually, going through the blueprint items listed above and copy/paste content across repositories.
Built-in project website
The project blueprint comes with a pre-definite website that is built using Docusaurus (1.14) and served via https://finos.github.io/<repository name>
.
Getting started is quite simple:
- Make sure that your GitHub repository includes the
docs/
andwebsite/
folder from the project-blueprint - Read our getting started guide to understand more about Docusaurus
- Edit
website/siteConfig.js
following comments in file - Install the Docusaurus Build Action provided by FINOS
- Make edits on
docs/
files and check changes onhttps://finos.github.io/ name>
.
Other resources
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.