Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Create GOVERNANCE.md #30

Merged
merged 2 commits into from
Apr 4, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
84 changes: 84 additions & 0 deletions GOVERNANCE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,84 @@
# Governance document for Epiverse-TRACE

## Acronyms

- TRACE: Tools for Response, Analytics, and Control of Epidemics
- LSHTM: London School of Hygiene and Tropical Medicine
- MRCG: Medical Research Council Unit, Gambia
- LAC: Latin America and the Caribbean

## Team Structure and Roles

The Epiverse-TRACE GitHub organization contains 3 teams, representing the 3 partner organizations currently involved as equals in the project:

- data.org
- LSHTM-MRCG
- TRACE-LAC (UniAndes & Javeriana)

Each team has [organization owners](https://docs.github.com/en/organizations/managing-peoples-access-to-your-organization-with-roles/roles-in-an-organization#organization-owners), who can add new individuals to the GitHub organization, administrator access to individual repositories, and edit the organization-level settings. [The organization owners are](https://github.com/orgs/epiverse-trace/people?query=role%3Aowner):

- Bubacarr Bah
- Zulma Cucunubá
- Roz Eggo
- Sebastian Funk
- Hugo Gruson
- Chris Hartgerink
- Adam Kucharski
- Edwin van Leeuwen
- Jaime Pavlich-Mariscal
Bisaloo marked this conversation as resolved.
Show resolved Hide resolved

By default, [all team members](https://docs.github.com/en/organizations/managing-peoples-access-to-your-organization-with-roles/roles-in-an-organization#organization-members) are [administrators](https://docs.github.com/en/organizations/managing-user-access-to-your-organizations-repositories/managing-repository-roles/repository-roles-for-an-organization) in the repositories primarily maintained by their team, thus allowing full access to these repositories' settings.

External collaborators may be given write-access to specific repositories on a case-by-case basis at the discretion of the repository maintainer. Their status in the GitHub organization is ["outside collaborator"](https://docs.github.com/en/organizations/managing-user-access-to-your-organizations-repositories/managing-outside-collaborators/adding-outside-collaborators-to-repositories-in-your-organization).

### Team organizational chart

![Organizational chart of the Epiverse-TRACE project.](org_chart.png)

### Former team members

When Epiverse-TRACE team members change employment, they are removed from the organization and re-invited as an outside collaborator on the repositories they are currently contributing to. It is the responsibility of each respective partner to reflect internal changes in the organization as soon as possible.

## Definition of Coding & Packaging Standards

### Scope and Location

The coding and packaging standards apply to all R packages hosted on this GitHub organization. The standards are defined in the [`blueprints`](https://github.com/epiverse-trace/blueprints) repository, in the form of an online book.
The Blueprints aim to ensure consistency and quality control in the artifacts produced by the project (e.g., R packages), rather than homogeneity in the working patterns and processes of individual teams.

Whenever possible, the blueprints standard are implemented in the [`packagetemplate` template GitHub repository](https://github.com/epiverse-trace/packagetemplate) to facilitate adoption throughout the project.

### Decision-making process

The blueprints are continuously reviewed and improved by the blueprints working group, on the ["rough consensus" model](https://en.wikipedia.org/wiki/Rough_consensus), pioneered by the IETF.
All new proposals for the blueprints are initially discussed in blueprints working group private slack channel for simple changes, or via synchronous meetings for contentious or more difficult changes. Results of these discussions are then encoded in a pull request in the blueprints repository. The link to the pull request is shared on the private slack channel for review, and all working group members have 2 weeks to voice concerns or request changes before the pull request is merged.

The blueprints working group is currently composed of a senior representative of each team involved in the project, as well as one external advisor:

- Sebastian Funk (representing the LSHTM-MRCG team)
- Chris Hartgerink (representing data.org)
- Hugo Gruson (representing data.org)
- Jaime Pavlich (representing the TRACE-LAC team)
- Tim Taylor (external advisor)
Bisaloo marked this conversation as resolved.
Show resolved Hide resolved

The representatives convey the views of their respective teams to the working group and report the decisions taken to their team.

## Decisions in Individual Packages

[TBD]

## How to contribute a new package

The process of proposing a new Epiverse-TRACE package starts by [opening a public discussion thread in the Epiverse-TRACE GitHub discussions board](https://github.com/orgs/epiverse-trace/discussions/new?category=project-ideas).
This aims at gathering internal and external feedback to refine package scope, design principles, and its position in the larger software ecosystem.

External community members are encouraged to propose ideas for new packages as well if they identify a gap in the ecosystem that they would like to fill in collaboration with Epiverse-TRACE, or they would like Epiverse-TRACE to fill.

Once conversation has settled, this initial discussion can be turned into an actual package if one organization owner sponsors the proposal and chooses to move forward with the project.

## Additional community documents

- [Code of Conduct](CODE_OF_CONDUCT.md)
- [TRACE Values](https://data.org/news/epiverse-trace-a-values-based-approach-to-open-source-ecosystems/)
- [DEI Statement](DEI.md)

121 changes: 121 additions & 0 deletions org_chart.drawio
Original file line number Diff line number Diff line change
@@ -0,0 +1,121 @@
<mxfile host="app.diagrams.net" modified="2023-09-27T17:37:42.680Z" agent="Mozilla/5.0 (X11; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/117.0" etag="jfwAj6TNxgnPMkTyXuVB" version="21.8.2" type="device">
<diagram name="Page-1" id="PtjTDLeGverkWNFgPTA2">
<mxGraphModel dx="3083" dy="799" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="850" pageHeight="1100" math="0" shadow="0">
<root>
<mxCell id="0" />
<mxCell id="1" parent="0" />
<mxCell id="N97VVDMJrFje2LNVVDYU-14" value="&lt;h1&gt;data.org&lt;/h1&gt;" style="rounded=1;whiteSpace=wrap;html=1;verticalAlign=top;strokeColor=none;fillColor=#e1d5e7;" parent="1" vertex="1">
<mxGeometry x="-480" y="80" width="320" height="400" as="geometry" />
</mxCell>
<mxCell id="kqzJZEgIrPtJm_Qa-d8s-2" value="Leadership" style="rounded=1;whiteSpace=wrap;html=1;" vertex="1" parent="1">
<mxGeometry x="-410" y="160" width="180" height="270" as="geometry" />
</mxCell>
<mxCell id="N97VVDMJrFje2LNVVDYU-8" value="&lt;h1&gt;LSHTM/MRCG&lt;/h1&gt;" style="rounded=1;whiteSpace=wrap;html=1;verticalAlign=top;strokeColor=none;fillColor=#dae8fc;opacity=60;" parent="1" vertex="1">
<mxGeometry x="-1020" y="80" width="500" height="400" as="geometry" />
</mxCell>
<mxCell id="N97VVDMJrFje2LNVVDYU-7" value="&lt;h1&gt;LAC&lt;/h1&gt;" style="rounded=1;whiteSpace=wrap;html=1;verticalAlign=top;fillColor=#f8cecc;strokeColor=none;" parent="1" vertex="1">
<mxGeometry x="-121" y="80" width="630" height="400" as="geometry" />
</mxCell>
<mxCell id="N97VVDMJrFje2LNVVDYU-35" style="rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.404;exitY=0.992;exitDx=0;exitDy=0;exitPerimeter=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" parent="1" source="N97VVDMJrFje2LNVVDYU-1" target="N97VVDMJrFje2LNVVDYU-5" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="N97VVDMJrFje2LNVVDYU-36" style="rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.602;exitY=1.008;exitDx=0;exitDy=0;exitPerimeter=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" parent="1" source="N97VVDMJrFje2LNVVDYU-1" target="N97VVDMJrFje2LNVVDYU-6" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="N97VVDMJrFje2LNVVDYU-37" style="rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.75;exitY=1;exitDx=0;exitDy=0;" parent="1" source="N97VVDMJrFje2LNVVDYU-1" target="N97VVDMJrFje2LNVVDYU-4" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="N97VVDMJrFje2LNVVDYU-1" value="Leadership" style="rounded=1;whiteSpace=wrap;html=1;" parent="1" vertex="1">
<mxGeometry x="134" y="200" width="120" height="60" as="geometry" />
</mxCell>
<mxCell id="N97VVDMJrFje2LNVVDYU-2" value="Internal coordination" style="rounded=1;whiteSpace=wrap;html=1;" parent="1" vertex="1">
<mxGeometry x="-71" y="200" width="120" height="60" as="geometry" />
</mxCell>
<mxCell id="N97VVDMJrFje2LNVVDYU-3" value="Software development" style="rounded=1;whiteSpace=wrap;html=1;" parent="1" vertex="1">
<mxGeometry x="-71" y="330" width="120" height="60" as="geometry" />
</mxCell>
<mxCell id="N97VVDMJrFje2LNVVDYU-4" value="Communication" style="rounded=1;whiteSpace=wrap;html=1;" parent="1" vertex="1">
<mxGeometry x="349" y="330" width="120" height="60" as="geometry" />
</mxCell>
<mxCell id="N97VVDMJrFje2LNVVDYU-5" value="Training" style="rounded=1;whiteSpace=wrap;html=1;" parent="1" vertex="1">
<mxGeometry x="70" y="330" width="120" height="60" as="geometry" />
</mxCell>
<mxCell id="N97VVDMJrFje2LNVVDYU-6" value="Sociotechnical characterization" style="rounded=1;whiteSpace=wrap;html=1;" parent="1" vertex="1">
<mxGeometry x="209" y="330" width="120" height="60" as="geometry" />
</mxCell>
<mxCell id="N97VVDMJrFje2LNVVDYU-9" value="Leadership" style="rounded=1;whiteSpace=wrap;html=1;" parent="1" vertex="1">
<mxGeometry x="-895" y="200" width="120" height="60" as="geometry" />
</mxCell>
<mxCell id="N97VVDMJrFje2LNVVDYU-10" value="Training" style="rounded=1;whiteSpace=wrap;html=1;" parent="1" vertex="1">
<mxGeometry x="-980" y="330" width="120" height="60" as="geometry" />
</mxCell>
<mxCell id="N97VVDMJrFje2LNVVDYU-11" value="Software development" style="rounded=1;whiteSpace=wrap;html=1;" parent="1" vertex="1">
<mxGeometry x="-810" y="330" width="120" height="60" as="geometry" />
</mxCell>
<mxCell id="N97VVDMJrFje2LNVVDYU-12" value="Internal coordination" style="rounded=1;whiteSpace=wrap;html=1;" parent="1" vertex="1">
<mxGeometry x="-685" y="200" width="120" height="60" as="geometry" />
</mxCell>
<mxCell id="N97VVDMJrFje2LNVVDYU-18" value="Cross-organization coordination" style="rounded=1;whiteSpace=wrap;html=1;" parent="1" vertex="1">
<mxGeometry x="-390" y="200" width="140" height="60" as="geometry" />
</mxCell>
<mxCell id="N97VVDMJrFje2LNVVDYU-19" value="Cross-organization standards for software development" style="rounded=1;whiteSpace=wrap;html=1;" parent="1" vertex="1">
<mxGeometry x="-390" y="330" width="140" height="60" as="geometry" />
</mxCell>
<mxCell id="N97VVDMJrFje2LNVVDYU-25" value="" style="endArrow=classic;startArrow=classic;html=1;rounded=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;" parent="1" source="N97VVDMJrFje2LNVVDYU-18" target="N97VVDMJrFje2LNVVDYU-2" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="-270" y="260" as="sourcePoint" />
<mxPoint x="-220" y="210" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="N97VVDMJrFje2LNVVDYU-26" value="" style="endArrow=classic;startArrow=classic;html=1;rounded=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" parent="1" source="N97VVDMJrFje2LNVVDYU-12" target="N97VVDMJrFje2LNVVDYU-18" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="-270" y="260" as="sourcePoint" />
<mxPoint x="-220" y="210" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="N97VVDMJrFje2LNVVDYU-27" value="" style="endArrow=classic;startArrow=classic;html=1;rounded=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" parent="1" source="N97VVDMJrFje2LNVVDYU-19" target="N97VVDMJrFje2LNVVDYU-3" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="-270" y="260" as="sourcePoint" />
<mxPoint x="-220" y="210" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="N97VVDMJrFje2LNVVDYU-29" value="" style="endArrow=classic;startArrow=classic;html=1;rounded=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;exitX=0;exitY=0.5;exitDx=0;exitDy=0;" parent="1" source="N97VVDMJrFje2LNVVDYU-19" target="N97VVDMJrFje2LNVVDYU-11" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="-270" y="260" as="sourcePoint" />
<mxPoint x="-220" y="210" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="N97VVDMJrFje2LNVVDYU-30" value="" style="endArrow=classic;html=1;rounded=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;exitX=0.75;exitY=1;exitDx=0;exitDy=0;" parent="1" source="N97VVDMJrFje2LNVVDYU-9" target="N97VVDMJrFje2LNVVDYU-11" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="-260" y="300" as="sourcePoint" />
<mxPoint x="-210" y="250" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="N97VVDMJrFje2LNVVDYU-31" value="" style="endArrow=classic;html=1;rounded=0;exitX=0.25;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" parent="1" source="N97VVDMJrFje2LNVVDYU-9" target="N97VVDMJrFje2LNVVDYU-10" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="-260" y="300" as="sourcePoint" />
<mxPoint x="-210" y="250" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="N97VVDMJrFje2LNVVDYU-32" value="" style="endArrow=none;html=1;rounded=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;" parent="1" source="N97VVDMJrFje2LNVVDYU-9" target="N97VVDMJrFje2LNVVDYU-12" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="-260" y="300" as="sourcePoint" />
<mxPoint x="-210" y="250" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="N97VVDMJrFje2LNVVDYU-33" value="" style="endArrow=none;html=1;rounded=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;" parent="1" source="N97VVDMJrFje2LNVVDYU-2" target="N97VVDMJrFje2LNVVDYU-1" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="-260" y="300" as="sourcePoint" />
<mxPoint x="-210" y="250" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="N97VVDMJrFje2LNVVDYU-34" value="" style="endArrow=classic;html=1;rounded=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;exitX=0.25;exitY=1;exitDx=0;exitDy=0;" parent="1" source="N97VVDMJrFje2LNVVDYU-1" target="N97VVDMJrFje2LNVVDYU-3" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="-260" y="300" as="sourcePoint" />
<mxPoint x="-210" y="250" as="targetPoint" />
</mxGeometry>
</mxCell>
</root>
</mxGraphModel>
</diagram>
</mxfile>
Binary file added org_chart.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.