Skip to content

Commit

Permalink
[approved] feat: add Executive Council page to handbook
Browse files Browse the repository at this point in the history
feat: add Executive Council page to handbook
  • Loading branch information
lwasser authored Jan 23, 2025
2 parents bf70816 + 398950d commit 011624a
Show file tree
Hide file tree
Showing 14 changed files with 339 additions and 67 deletions.
1 change: 1 addition & 0 deletions community/events/intro.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
(pyos-events)=
# Meetings & Events

## pyOpenSci meetings
Expand Down
5 changes: 2 additions & 3 deletions community/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -34,10 +34,9 @@ GitHub permissions <github/permissions>

:::{toctree}
:maxdepth: 2
:caption: Translation & Internationalization workflows

:caption: Translation workflows

Events <translation>
Translation process <translation>
:::

:::{toctree}
Expand Down
23 changes: 14 additions & 9 deletions community/translation.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
(translation)=

# pyOpenSci GitHub processes for translation teams

This document outlines the process for managing translation of pyOpenSci content in our [python-package-guide](https://github.com/pyOpenSci/python-package-guide) repository. It covers:
Expand All @@ -13,16 +15,17 @@ This document outlines the process for managing translation of pyOpenSci content
* All questions, errors, and suggestions must be addressed before the PR is merged.

These are the checks a reviewer should incorporate into their review.

* Verify that the translation can be built in the PR branch without warnings
* Example for Spanish translation: `nox -s docs-live-lang -- es`
* The command can be used for any language by swapping out the language tag at the end. The current list of languages that are being actively worked on can be found in the [Packaging Guide noxfile.py](https://github.com/pyOpenSci/python-package-guide/blob/d0c05fac6c28097e60b7206e1ba5314ab869804c/noxfile.py#L45) file. A complete list of Sphinx language tags can be [found here](https://www.sphinx-doc.org/en/master/usage/configuration.html#confval-language).
* Example for Spanish translation: `nox -s docs-live-lang -- es`
* The command can be used for any language by swapping out the language tag at the end. The current list of languages that are being actively worked on can be found in the [Packaging Guide noxfile.py](https://github.com/pyOpenSci/python-package-guide/blob/d0c05fac6c28097e60b7206e1ba5314ab869804c/noxfile.py#L45) file. A complete list of Sphinx language tags can be [found here](https://www.sphinx-doc.org/en/master/usage/configuration.html#confval-language).
* Go through the file and ensure that the translation makes sense, using the following checks:
* There are no typos
* Technical terms can be easily understood
* Sentence structure makes sense for the target language
* There are no typos
* Technical terms can be easily understood
* Sentence structure makes sense for the target language
* Use suggestions for any errors that are found. This has two purposes:
* It makes it easier for the contributor to make changes
* It gives credit to the PR reviewer as a coauthor in the final commit to main
* It makes it easier for the contributor to make changes
* It gives credit to the PR reviewer as a coauthor in the final commit to main

## GitHub infrastructure for the translation teams

Expand All @@ -31,16 +34,18 @@ pyOpenSci will create and maintain a team for each language using CODEOWNERS fil
The current translation teams consist of:

### Spanish

* [Felipe Moreno](https://github.com/flpm)
* [Roberto Pastor Muela](https://github.com/RobPasMue)

### Japanese

* [Tetsuo Koyama](https://github.com/tkoyama010)
* [Kozo Nishida](https://github.com/kozo2)

Current translation teams can expand their teams and add additional members by updating the CODEOWNERS file.

## Additional automations for consideration

- Use CI to automatically tag the PR with the translation and the proper language tags.
- Use CI to automatically keep the translation files updated once a translation has been released (work in progress [PR #397](https://github.com/pyOpenSci/python-package-guide/pull/397))
* Use CI to automatically tag the PR with the translation and the proper language tags.
* Use CI to automatically keep the translation files updated once a translation has been released (work in progress [PR #397](https://github.com/pyOpenSci/python-package-guide/pull/397))
1 change: 1 addition & 0 deletions community/zenodo.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
(pyos-zenodo)=
# Zenodo

:::{admonition} How to cite pyOpenSci
Expand Down
262 changes: 262 additions & 0 deletions governance/executive-council.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,262 @@
(pyos-executive-council)=

# pyOpenSci Executive Council

The pyOpenSci Executive Council (EC) has four primary functions:

1. **Guides the Organization**: The Executive Council defines and directs pyOpenSci’s high-level [mission, vision, and values](mission-values) and sets its strategic direction.

2. **Advocates for pyOpenSci**: The Executive Council serves as an advocate and ambassador for the organization, leveraging members’ networks to enhance its reputation and support fundraising efforts.

3. **Provides Strategic Insight**: The Executive Council offers perspective and guidance on major strategic decisions to ensure the organization’s long-term success.

4. **Holds the [Executive Director](executive-director) accountable**: The Executive Council holds the Executive Director accountable while also providing high-level strategic and financial guidance and oversight.

The Executive Director is currently a voting member of the Executive Council for items unrelated to their salary and accountability.

The Executive Council holds broad expertise in building and running a nonprofit organization. It is complemented by the [Advisory Council](advisory-council), which offers domain-specific expertise, guidance, and input.

## How the Executive Council works

The pyOpenSci Executive Council operates through open discussions, collaborative
decision-making, and a commitment to transparency. By leveraging diverse
perspectives, the Council ensures that its guidance aligns with the organization’s
[mission, vision, and values](mission-values) while meeting the needs of the
growing pyOpenSci community.

The Council employs flexible and adaptive practices to ensure decisions are made efficiently while fostering thoughtful
dialogue and collective alignment.

## Executive Council roles & responsibilities

Each Executive Council (EC) member dedicates no more than **four to six hours per month** to pyOpenSci activities, including meeting attendance. Executive Council members are expected to fulfill the following responsibilities:

- Attend at least 80% of monthly Executive Council meetings.
- Participate in asynchronous commitments, which include:
- Suggesting agenda items for meetings.
- Communicating with the Executive Director (ED) via Slack.
- Providing timely reviews of materials and documents.
- Connecting the Executive Director with potential funding opportunities.
- Evaluate the performance of the Executive Director every year.
- Approve expense reports.
- Take meeting minutes and ensure they are [published in this Handbook](ec-minutes).

The Executive Council is led by the Executive Council Chair, who approves the Executive Director’s time off requests and sick leave.

:::{note}
While travel is not explicitly required, members may have opportunities to attend meetings on behalf of pyOpenSci; pyOpenSci may support this travel as necessary.
:::

## How the Executive Council makes decisions

:::{important}
All decisions made by the Executive Council must align with the legal
obligations and policies of pyOpenSci’s fiscal sponsor—[Community Initiatives](https://communityinitiatives.org/).
:::

The Executive Council must review and approve decisions affecting the organization's fiduciary aspects. This includes the mission/vision/values, governance policies, budget, Executive Director compensation, and significant new strategic initiatives. The Executive Council also supports the Executive Director by serving as a resource for input when needed.

All decisions made by the Executive Council must align with the legal
obligations and policies of pyOpenSci’s fiscal sponsor—[Community Initiatives](https://communityinitiatives.org/).
This ensures compliance with overarching governance structures and financial
responsibilities.

### Decisions requiring an Executive Council vote

The Executive Council (EC) defines and directs pyOpenSci’s strategy and primary
organizational direction. The EC approves significant decisions
that strongly impact pyOpenSci’s strategy, governance, or financial well-being.
Generally, items with legal or fiduciary implications require a formal vote,
with the outcome documented in this handbook's Executive Council [meeting minutes](ec-minutes) section.

The EC will vote on the following:

- **Annual budget**: Approval of the organization's yearly budget.
- **Mission, vision, and values**: Decisions related to pyOpenSci’s core principles.
- **Governance and policy changes**: Approval of changes to governance structures,
including updates to the Code of Conduct.
- **Significant budget deviations**: Decisions involving major deviations from the
approved annual budget.
- **Financial health implications**: Any decision with substantial implications for
pyOpenSci’s financial stability.
- **Strategic direction**: Approval of major changes to organizational strategy and
development roadmaps.
- **Executive director’s salary**: The EC independently determines the salary of the
Executive Director.

:::note
The Executive Director is authorized to make all other decisions. However, the
Executive Council serves as a resource for the Executive Director and may provide
feedback and input upon request.
:::

## How we select Executive Council members

The Executive Council and the Executive Director are responsible for selecting and appointing new council members.
This process ensures the Council has the skills and expertise necessary to meet
the evolving pyOpenSci needs.

### Executive Council selection process steps

1. **Identify organization needs**:
- The Council first evaluates its current composition to identify areas where
additional expertise, perspectives, or skills could be useful to support the
organization’s mission and strategy.

2. **Identify Candidates**:
- Potential candidates are identified based on their experience, expertise,
and alignment with pyOpenSci’s mission, vision, and values. This may include
leaders in the open science community, individuals with financial or
governance expertise, or others with relevant nonprofit governance skills.

3. **Review and nominate the new member**:
- Candidates are discussed and nominated by current Council members during a
meeting or through the Executive Council Slack channel. After nomination, the Executive Director
will contact the candidate to see if they are interested/available.

5. **Onboard the new candidate**:
- Once approved, new members are onboarded following the onboarding process
outlined in this document.

### Terms and evaluation

- Executive Council members are expected to serve for 2–3 years.
- At the end of each 2-year term, members may choose to step down or renew their
commitment based on mutual agreement with the Council.

As needed, the Executive Council may conduct periodic evaluations to ensure its composition continues
to meet the organization’s needs.

### Decision-making process

The topics above require a motion and a vote for approval. Motions and votes can be made in Executive Council meetings or via email, Slack of GitHub. Motions and votes will be noted in the Executive Council meeting minutes.

:::{admonition} Executive Council Approval
:class: important

The above governance for the Executive Council was last updated, voted on, and approved on **23 January 2025**. All content below this section can be modified as needed and does not require a vote.
:::

## Executive Council operations

### Collaboration between the Executive Director and the Executive Council

The Executive Director may request feedback
from the Executive Council on significant or public-facing decisions; these decisions do not require a formal vote. These discussions generally
occur in the **executive-council** Slack channel to ensure
collaborative input. Examples include:

- Significant public-facing changes to the pyOpenSci website.
- Operational policies for staff (unless they carry significant financial implications).
- Strategic decisions about pursuing proposals or writing grants.
- Substantial changes to pyOpenSci programs.

By maintaining open communication, the Executive Council and Executive Director ensure that pyOpenSci’s
decisions align with its mission and strategic goals.

### Lazy consensus for decisions that don't require a vote

Lazy consensus is applied for decisions such as those listed above that do not require a formal vote.

Lazy consensus means that decisions are approved by default unless a member of
the Executive Council explicitly objects within a predefined period.
This allows decisions to move forward efficiently while providing an
opportunity for discussion.

When objections are raised, further discussion occurs. This ensures decisions reflect the collective agreement of the Council
while minimizing unnecessary delays.

### How the Executive Council meets and communicates

#### Monthly meetings

The Executive Council holds **monthly meetings** (typically 1.5 hours) to discuss key topics, review updates, and make decisions by consensus. During these meetings, the Executive Director (ED) provides updates on the organization’s development, growth, and operations and may request feedback on specific issues. This time is also used for strategic planning and discussion.

During these meetings, Council members take notes. These notes are summarized and published in the [Executive Council Minutes section of this Handbook](https://github.com/pyOpenSci/handbook/tree/main/reference/meeting-notes/executive-council). Once the notes are merged, they are [publicly available in this Handbook](https://www.pyopensci.org/handbook/reference/meeting-notes/executive-council/intro.html).

**Ad hoc Executive Council meetings** are scheduled as needed to address pressing issues.

**Executive Director--Executive Council Chair meetings:** The Executive Director also meets regularly with the pyOpenSci Board Chair to ensure alignment on key issues and strategic direction.

### Onboarding and offboarding Executive Council members

The onboarding and offboarding of Executive Council (EC) members ensure:

- smooth transitions,
- that new members are set up for success and
- that departing members are appropriately transitioned out of their roles.

#### Onboarding a new Executive Council member

When a new member joins the Executive Council, the following steps should be
completed to integrate them into the team:

1. **Access to tools and resources**:
- Add the new member to the pyOpenSci Executive Council shared [Google Drive](google-drive).
This drive is where we share meeting notes,
agendas, budgets and other resources.
- Add the new member to the Executive Council Slack channel, the primary
communication platform for the Council.

2. **Orientation**:
- Provide a link to this Handbook, which outlines the Council’s
responsibilities, decision-making processes, and operational policies.
- Schedule an initial orientation meeting if needed, to familiarize the new member
with pyOpenSci’s mission, vision, values, and ongoing initiatives.

3. **Notifications**:
- Notify the pyOpenSci's Fiscal Sponsor (Community Initiatives) of any changes in roles
that impact the chair position or budget oversight responsibilities.

4. **Welcome and integration**:
- Introduce the new member to the Executive Council during a meeting and to the pyOpenSci community through Slack
announcement. Highlight the new member's expertise and how it complements the community and Executive Council’s needs.

#### Offboarding an Executive Council member

When a member leaves the Executive Council, the following steps should be taken
to ensure a smooth transition:

- **Remove Access**:
- Remove the departing member from the pyOpenSci Executive Council shared
Google Drive to ensure that sensitive information remains secure.
- Remove the member from the Executive Council Slack channel.

2. **Notifications**:
- Inform the Fiscal Sponsor (Community Initiatives) of any changes to the
chair position or budget oversight responsibilities caused by the departure.

3. **Knowledge transfer**:
- If the departing member held specific responsibilities or roles (e.g.,
chair, budget oversight), ensure that these responsibilities are transitioned
to another member of the Council.
4. **Acknowledgment and thanks**:
- Publicly thank the departing member for their contributions to pyOpenSci,
either during a meeting or through a Slack message. Celebrate their impact
on the organization and its mission.

By following these steps, pyOpenSci ensures a seamless transition for incoming
and outgoing members, maintaining stability and continuity in its governance
practices.

### Communication platforms & tools

#### Slack: primary communication platform

The **[Executive Council Slack channel](pyos-slack)** is the primary tool for communication between monthly meetings. All updates, discussions, and requests for input happen here; email is rarely used for EC communications.
EC members are expected to check Slack semi-regularly to stay informed.

- **Feedback requests:** It is understood that EC members have jobs and lives outside of their EC responsibilities. As such, when the Executive Director (ED) requests input on Slack, they will specify what feedback is needed and provide clear response timelines and areas to focus on.
- **Transparency:** The Slack channel is also used to share updates about changes that occur outside of formal monthly meetings. Examples of such updates include new hires, event updates, and celebrating successes.

#### Google Drive: document sharing and collaboration

The pyOpenSci Executive Council uses a shared **[Google Drive](google-drive)** within the pyOpenSci Google Workspace to store and share documents. This includes meeting notes, agendas, and other important materials. Members are encouraged to access and update shared resources using the shared Drive.

:::{admonition} Terms
:class: tip

- [Fiscal Sponsorship](https://en.wikipedia.org/wiki/Fiscal_sponsorship) refers to nonprofit organizations offering their legal and tax-exempt status to groups—typically projects—engaged in activities related to the sponsoring organization's mission. It involves a fee-based contractual arrangement between a project and an established nonprofit.
- [Nonprofit Organization](https://en.wikipedia.org/wiki/Nonprofit_organization): A legal entity organized and operated for a collective, public, or social benefit, in contrast with an entity that operates as a business aiming to generate a profit for its owners.
- [501(c)(3) Organization](https://en.wikipedia.org/wiki/501(c)(3)_organization): a United States corporation, trust, unincorporated association, or other type of organization exempt from federal income tax under section 501(c)(3) of Title 26 of the United States Code.
:::
1 change: 1 addition & 0 deletions governance/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ pyOpenSci supports open science through
Home <self>
mission-values
structure
Executive Council <executive-council>
Code of Conduct <../CODE_OF_CONDUCT.md>
```

Expand Down
3 changes: 2 additions & 1 deletion governance/mission-values.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
# Mission and values
(mission-vision)=
# Mission, Vision and Values

The mission of pyOpenSci is to support diverse community around the free, open
python tools that drive open, reproducible scientific workflows.
Expand Down
Loading

0 comments on commit 011624a

Please sign in to comment.