From 0b42c6e1f5424f8f362fadf6e3eeb60e1153ec5a Mon Sep 17 00:00:00 2001 From: Lily Wang <31115101+lilyminium@users.noreply.github.com> Date: Tue, 19 Dec 2023 18:41:51 +1100 Subject: [PATCH] Add Roles and Responsibilities table (#324) This PR groups particular tasks within MDAnalysis into subgroups and identifies the main personnel for these domains within MDAnalysis in a table on the website. --------- Co-authored-by: Rocco Meli Co-authored-by: Fiona Naughton Co-authored-by: Jonathan Barnoud Co-authored-by: Jenna M Swarthout Goddard <38287809+jennaswa@users.noreply.github.com> Co-authored-by: Oliver Beckstein Co-authored-by: Irfan Alibay Co-authored-by: Hugo MacDermott-Opeskin --- _config.yml | 2 +- _data/team/roles/README.md | 41 ++++++++++++ _data/team/roles/code_of_conduct.yml | 13 ++++ _data/team/roles/community_engagement.yml | 7 ++ _data/team/roles/continuous_integration.yml | 10 +++ _data/team/roles/core_library_maintenance.yml | 33 ++++++++++ _data/team/roles/documentation.yml | 14 ++++ _data/team/roles/external_liaison.yml | 10 +++ _data/team/roles/mdakit_registry.yml | 12 ++++ .../roles/non_core_library_maintenance.yml | 64 +++++++++++++++++++ _data/team/roles/outreach.yml | 28 ++++++++ _data/team/roles/project_organization.yml | 10 +++ _data/team/roles/releases_and_deployment.yaml | 10 +++ _data/team/roles/relicensing_coordinator.yml | 11 ++++ _data/team/roles/social_media.yml | 9 +++ _includes/roles_description.html | 52 +++++++++++++++ _includes/team_table.html | 54 ++++++++++++++++ _includes/team_table_member_cell.html | 25 ++++++++ _includes/team_table_member_row.html | 21 ++++++ _posts/2016-03-14-nglview.md | 2 +- _posts/2022-11-10-CZI_EOSS5.md | 2 +- _posts/2023-08-17-sff-students.md | 2 +- pages/team.md | 24 +++++++ pages/ugm2023.md | 2 +- 24 files changed, 453 insertions(+), 5 deletions(-) create mode 100644 _data/team/roles/README.md create mode 100644 _data/team/roles/code_of_conduct.yml create mode 100644 _data/team/roles/community_engagement.yml create mode 100644 _data/team/roles/continuous_integration.yml create mode 100644 _data/team/roles/core_library_maintenance.yml create mode 100644 _data/team/roles/documentation.yml create mode 100644 _data/team/roles/external_liaison.yml create mode 100644 _data/team/roles/mdakit_registry.yml create mode 100644 _data/team/roles/non_core_library_maintenance.yml create mode 100644 _data/team/roles/outreach.yml create mode 100644 _data/team/roles/project_organization.yml create mode 100644 _data/team/roles/releases_and_deployment.yaml create mode 100644 _data/team/roles/relicensing_coordinator.yml create mode 100644 _data/team/roles/social_media.yml create mode 100644 _includes/roles_description.html create mode 100644 _includes/team_table.html create mode 100644 _includes/team_table_member_cell.html create mode 100644 _includes/team_table_member_row.html create mode 100644 pages/team.md diff --git a/_config.yml b/_config.yml index fdffc8e0..91400f30 100644 --- a/_config.yml +++ b/_config.yml @@ -28,7 +28,7 @@ author: email: mdanalysis@numfocus.org images: /public/images -data: /public/data +data_files: /public/data js: /js blog: /blog diff --git a/_data/team/roles/README.md b/_data/team/roles/README.md new file mode 100644 index 00000000..89bc6872 --- /dev/null +++ b/_data/team/roles/README.md @@ -0,0 +1,41 @@ +# Roles + +This directory contains YAML files, one per role. + +## Editing + +Each YAML file should contain the details of one role only. +Each role is automatically picked up by the template. To add or remove a role, simply add or remove a file. Do not add non-role documents to this directory that can be parsed by Jekyll. + +Each file *must* contain the following tags at top level: + +* `role`: The name of the role (e.g. Core library maintenance) + +Each role can optionally have the following tags: +* `description`: text describing the role. This can be written in Markdown. +* `tasks`: a list of strings describing tasks. This is rendered as a list. + +Each role can also optionally have lead/member tags, if there are no subroles. If there are subroles, the below are ignored: +* `current_leads`: a list of names who are current leads +* `current_members`: a list of names who are current members in the subgroup +* `historical_members`: a list of names who previously contributed in a major way + +Onto subroles: each role can optionally define `subroles`. The `subroles` tag should be a **list** where each item *must have*: + +* `subrole`: The name of the subrole (e.g. Issue management) + +Each subrole can *optionally have*: +* `current_leads`: a list of names who are current leads +* `current_members`: a list of names who are current members in the subgroup +* `historical_members`: a list of names who previously contributed in a major way +* `description`: text describing the role. This can be written in Markdown. +* `tasks`: a list of strings describing tasks. This is rendered as a list. + + +## Parsing + +The files here are read first by ``_includes/team_table.html`` and ``_includes/roles_description.html``. +Jekyll automatically reads YAML, JSON, and other formatted files in the ``_data`` directory +as objects that can be interacted with using the Liquid templating language. +For example, the ``name`` variable of the ``code_of_conduct.yml`` file is accessible as ``site.data.team.roles.code_of_conduct.name`` in HTML. + diff --git a/_data/team/roles/code_of_conduct.yml b/_data/team/roles/code_of_conduct.yml new file mode 100644 index 00000000..a7df6cde --- /dev/null +++ b/_data/team/roles/code_of_conduct.yml @@ -0,0 +1,13 @@ +role: Code of conduct committee +description: | + The [code of conduct committee](https://www.mdanalysis.org/pages/conduct/) members + are elected by the [project leadership](https://www.mdanalysis.org/about/#governance) when a committee members' term limit (2 years) has expired. +tasks: + - Receive and investigate all code of conduct complaints and violations + - Propose actions and sanctions, as necessary, to the [project leadership](https://www.mdanalysis.org/about/#governance) (project leadership is tasked with enforcement) + - Periodically review, revise and update current code of conduct procedures + +current_members: + - Jenna Swarthout Goddard + - Richard Gowers + - Micaela Matta diff --git a/_data/team/roles/community_engagement.yml b/_data/team/roles/community_engagement.yml new file mode 100644 index 00000000..dbf48d3e --- /dev/null +++ b/_data/team/roles/community_engagement.yml @@ -0,0 +1,7 @@ +role: Community engagement +tasks: + - Responding to questions on Discord and mailing lists + - Managing and triaging conversations on Discord and mailing lists + +current_members: + - Jenna Swarthout Goddard diff --git a/_data/team/roles/continuous_integration.yml b/_data/team/roles/continuous_integration.yml new file mode 100644 index 00000000..adca3293 --- /dev/null +++ b/_data/team/roles/continuous_integration.yml @@ -0,0 +1,10 @@ +role: Continuous integration +tasks: + - Building and developing new CI infrastructure + - Monitoring CI status + - Maintenance and fixes + +current_members: + - Fiona Naughton + - Irfan Alibay + - Richard Gowers \ No newline at end of file diff --git a/_data/team/roles/core_library_maintenance.yml b/_data/team/roles/core_library_maintenance.yml new file mode 100644 index 00000000..7516a200 --- /dev/null +++ b/_data/team/roles/core_library_maintenance.yml @@ -0,0 +1,33 @@ +role: Core library maintenance +description: | + The core library maintenance team is responsible for + managing the maintenance of the MDAnalysis library. + +subroles: + - subrole: Issue management + tasks: + - Initial triage and tagging of issues + - Managing timely responses and resolving issues + current_members: + - Rocco Meli + - Hugo MacDermott-Opeskin + + + - subrole: Pull request management + tasks: + - Reviewing, shepherding, and merging pull requests + current_members: + - Oliver Beckstein + - Rocco Meli + - Hugo MacDermott-Opeskin + + + - subrole: General maintenance + tasks: + - Monitoring and acting on maintenance needs across the MDAnalysis ecosystem + - Standards compliance (e.g. managing metadata such as the author list) + - Tracking new dependencies + - Emergency fixes + - Other general maintenance tasks + current_members: + - Irfan Alibay diff --git a/_data/team/roles/documentation.yml b/_data/team/roles/documentation.yml new file mode 100644 index 00000000..44af3c35 --- /dev/null +++ b/_data/team/roles/documentation.yml @@ -0,0 +1,14 @@ +role: Documentation +tasks: + - Managing UserGuide repositories and main core documentation + - Managing MDAnalysis Sphinx theme + - Managing documentation-related utilities and architecture + - Managing new issues and PRs related to documentation + - Keeping documentation updated + - Responding to documentation issues in sub-projects + +current_members: + - Lily Wang + - Rocco Meli + + diff --git a/_data/team/roles/external_liaison.yml b/_data/team/roles/external_liaison.yml new file mode 100644 index 00000000..15278165 --- /dev/null +++ b/_data/team/roles/external_liaison.yml @@ -0,0 +1,10 @@ +role: External liaison +tasks: + - Coordinate and connect with affiliated organisations, e.g. NumFOCUS + - Coordinate participation in external projects + - Coordinate with potential industry partners + +current_members: + - Irfan Alibay + - Oliver Beckstein + - Jenna Swarthout Goddard diff --git a/_data/team/roles/mdakit_registry.yml b/_data/team/roles/mdakit_registry.yml new file mode 100644 index 00000000..393fd8e7 --- /dev/null +++ b/_data/team/roles/mdakit_registry.yml @@ -0,0 +1,12 @@ +role: MDAKits registry +tasks: + - Managing submissions to MDAKits registry + - Managing manual review process of new MDAKits + - Managing automated test and badge infrastructure of all MDAKits + - Manage helping with MDAKits who need assistance +current_members: + - Irfan Alibay + - Fiona Naughton + - Lily Wang + - Oliver Beckstein + diff --git a/_data/team/roles/non_core_library_maintenance.yml b/_data/team/roles/non_core_library_maintenance.yml new file mode 100644 index 00000000..690f801c --- /dev/null +++ b/_data/team/roles/non_core_library_maintenance.yml @@ -0,0 +1,64 @@ +role: Non-core library maintenance +description: | + The non-core library maintenance team is responsible for + managing other packages that are directly + maintained by the MDAnalysis organization. + +tasks: + - Managing issues and pull-requests for sub-projects + - Managing new features and updates + - Managing maintenance + - Working with CI and CD team and infrastructure +subroles: + + - subrole: distopia + current_members: + - Richard Gowers + - Hugo MacDermott-Opeskin + - Rocco Meli + + - subrole: cookiecutter-mdakit + current_members: + - Lily Wang + - Irfan Alibay + + - subrole: mda-encore + current_members: [] + + - subrole: hole2-mdakit + current_members: + - Lily Wang + + - subrole: benchmarks + current_members: + - Oliver Beckstein + + - subrole: GridDataFormats + current_members: + - Irfan Alibay + - Oliver Beckstein + + - subrole: MDAnalysisData + current_members: + - Irfan Alibay + - Oliver Beckstein + + - subrole: mda-xrlib and other utilities + current_members: + - Irfan Alibay + + - subrole: pyedr + current_members: + - Irfan Alibay + + - subrole: pytng + current_members: + - Hugo MacDermott-Opeskin + + - subrole: PathSimAnalysis + current_members: + - Oliver Beckstein + + - subrole: waterdynamics + current_members: + - Fiona Naughton diff --git a/_data/team/roles/outreach.yml b/_data/team/roles/outreach.yml new file mode 100644 index 00000000..2f3b7b2d --- /dev/null +++ b/_data/team/roles/outreach.yml @@ -0,0 +1,28 @@ +role: Outreach +subroles: + - subrole: Workshops and meetings + tasks: + - Identifying workshop and event opportunities + - Organising workshops and events + - Gathering and coordinating volunteers + - Managing content, presentations and teaching at workshops + current_members: + - Jenna Swarthout Goddard + - Micaela Matta + + - subrole: Mentoring programs + tasks: + - Mentoring-related administrative tasks + - Advertising opportunities for mentoring programs + - Mentoring in structured programs + current_members: + - Jenna Swarthout Goddard + + - subrole: Teaching materials + tasks: + - Managing teaching materials on GitHub for workshops and events + - Maintaining and fixing materials + current_members: + - Rocco Meli + - Micaela Matta + - Jenna Swarthout Goddard diff --git a/_data/team/roles/project_organization.yml b/_data/team/roles/project_organization.yml new file mode 100644 index 00000000..ae2c47bd --- /dev/null +++ b/_data/team/roles/project_organization.yml @@ -0,0 +1,10 @@ +role: Project Organization and Management +tasks: + - Organising meetings + - Coordinating elections of core developers + - Onboarding new core developers + - Managing other roles in the organisation and general task lists + - Gathering usage and community metrics + +current_members: + - Jenna Swarthout Goddard diff --git a/_data/team/roles/releases_and_deployment.yaml b/_data/team/roles/releases_and_deployment.yaml new file mode 100644 index 00000000..730da727 --- /dev/null +++ b/_data/team/roles/releases_and_deployment.yaml @@ -0,0 +1,10 @@ +role: Releases and deployment +tasks: + - Updates and fixes for upstream and downstream packages + - Managing future release plans and timing + - Maintaining continuous deployment infrastructure + - Carrying out releases for MDAnalysis project packages + - Managing released packages on conda-forge and PyPi +current_members: + - Irfan Alibay + - Fiona Naughton diff --git a/_data/team/roles/relicensing_coordinator.yml b/_data/team/roles/relicensing_coordinator.yml new file mode 100644 index 00000000..0968f619 --- /dev/null +++ b/_data/team/roles/relicensing_coordinator.yml @@ -0,0 +1,11 @@ +role: Relicensing coordinator +tasks: + - Researching the steps required to change licenses + - Coordinating the choice to a new license + - Contacting existing developers to solicit agreement + - Ensuring new developers agree to a new license + - Managing the switch to a new license + +current_members: + - Irfan Alibay + - Oliver Beckstein diff --git a/_data/team/roles/social_media.yml b/_data/team/roles/social_media.yml new file mode 100644 index 00000000..2bba8a63 --- /dev/null +++ b/_data/team/roles/social_media.yml @@ -0,0 +1,9 @@ +role: Social media +tasks: + - General management and administration + - Posting announcements of new developments + - Moderating content + - Managing X and LinkedIn + - Managing new content to the MDAnalysis website and blog +current_members: + - Jenna Swarthout Goddard diff --git a/_includes/roles_description.html b/_includes/roles_description.html new file mode 100644 index 00000000..4bb1a8df --- /dev/null +++ b/_includes/roles_description.html @@ -0,0 +1,52 @@ +{% assign all_roles = site.data.team.roles | sort %} +{% for role_page in all_roles %} +{% assign role = role_page[1] %} +{% assign role_link = role.role | slugify %} + + + +{%- if role.description -%} +{% assign parsed_description = role.description | markdownify %} +

{{ parsed_description }}

+{%- endif -%} +{%- if role.tasks -%} +Tasks include: +
    + {% for line in role.tasks %} +
  • {{ line | markdownify }}
  • + {% endfor %} +
+{%- endif -%} + +{% if role.subroles %} +{% for subrole in role.subroles %} +{% if subrole.description or subrole.tasks %} +{% assign subrole_link = subrole.subrole | slugify %} + + +{%- if subrole.description -%} +{% assign parsed_description = subrole.description | markdownify %} +

{{ parsed_description }}

+{%- endif -%} +{%- if subrole.tasks -%} +Tasks include: +
    + {% for line in subrole.tasks %} +
  • {{ line }}
  • + {% endfor %} +
+{%- endif -%} + +{% endif %} +{% endfor %} +{% endif %} + + + +{% endfor %} \ No newline at end of file diff --git a/_includes/team_table.html b/_includes/team_table.html new file mode 100644 index 00000000..ed49213c --- /dev/null +++ b/_includes/team_table.html @@ -0,0 +1,54 @@ + + + + + + + + {% assign all_roles = site.data.team.roles | sort %} + {% for role_page in all_roles %} + + {% assign role = role_page[1] %} + + {% if role.subroles %} + {% assign rowspan = role.subroles.size %} + {% assign first_subrole = role.subroles.first %} + {% assign subroles = role.subroles %} + {% else %} + {% assign rowspan = 1 %} + {% assign first_subrole = role %} + {% assign subroles = '' | split: '' %} + {% endif %} + + + + + + {% include team_table_member_row.html subrole=first_subrole %} + + + {% for subrole in subroles %} + + {% if forloop.first == true %} {% continue %} {% endif %} + + {% include team_table_member_row.html subrole=subrole %} + + {% endfor %} + {% endfor %} +
RoleSub-roleCurrent team
+ + + {{ role.role }} + +
+ + + Current team: + This lists all those who are currently responsible for a particular role, + from November 14th 2023 to November 14th 2024. + \ No newline at end of file diff --git a/_includes/team_table_member_cell.html b/_includes/team_table_member_cell.html new file mode 100644 index 00000000..52c7a1fd --- /dev/null +++ b/_includes/team_table_member_cell.html @@ -0,0 +1,25 @@ +{% assign leads = include.leads %} +{% assign members = include.members %} + +{% assign empty_array = '' | split: '' %} + + +{% unless leads %}{% assign leads = empty_array %}{% endunless %} +{% unless members %}{% assign members = empty_array %}{% endunless %} + +{% assign all_members = leads | concat: members %} +{% assign sorted_names = all_members | sort %} +{%- for member in sorted_names -%} + + {%- if leads contains member -%} + {{ member }} + {%- else -%} + {{ member }} + {%- endif -%} + + {%- if forloop.last == false -%}, {% endif %} +{%- endfor -%} \ No newline at end of file diff --git a/_includes/team_table_member_row.html b/_includes/team_table_member_row.html new file mode 100644 index 00000000..987d22e5 --- /dev/null +++ b/_includes/team_table_member_row.html @@ -0,0 +1,21 @@ + + + {% assign has_link = false %} + {% if include.subrole.subrole %} + {% if include.subrole.description or include.subrole.tasks %} + {% assign has_link = true %} + {% endif %} + {% endif %} + + {% if has_link %} + + {{ include.subrole.subrole }} + + {% else %} + {{ include.subrole.subrole }} + {% endif %} + + + {% include team_table_member_cell.html leads=include.subrole.current_leads members=include.subrole.current_members %} + diff --git a/_posts/2016-03-14-nglview.md b/_posts/2016-03-14-nglview.md index 75851c4f..6321ffb2 100644 --- a/_posts/2016-03-14-nglview.md +++ b/_posts/2016-03-14-nglview.md @@ -43,7 +43,7 @@ This will give something like this in the notebook itself: function onInit(){ var stage = new NGL.Stage( "viewport" ); - stage.loadFile( "{{site.data}}/md_1u19.pdb", { defaultRepresentation: true } ); + stage.loadFile( "{{site.data_files}}/md_1u19.pdb", { defaultRepresentation: true } ); stage.setTheme( "light" ) window.addEventListener( "resize", function( event ){ diff --git a/_posts/2022-11-10-CZI_EOSS5.md b/_posts/2022-11-10-CZI_EOSS5.md index b6e356e7..4a66aaf8 100644 --- a/_posts/2022-11-10-CZI_EOSS5.md +++ b/_posts/2022-11-10-CZI_EOSS5.md @@ -22,4 +22,4 @@ A big thank you to all contributors, past and present, for making this possible. [Essential Open Source Software for Science]: https://chanzuckerberg.com/eoss/proposals/?cycle=5 [eoss project link]: https://chanzuckerberg.com/eoss/proposals/mdanalysis-outreach-and-project-manager/ -[job_ad]: {{site.data}}/MDAnalysis_Manager_Advert.pdf +[job_ad]: {{site.data_files}}/MDAnalysis_Manager_Advert.pdf diff --git a/_posts/2023-08-17-sff-students.md b/_posts/2023-08-17-sff-students.md index 1aa17751..73f50e05 100644 --- a/_posts/2023-08-17-sff-students.md +++ b/_posts/2023-08-17-sff-students.md @@ -48,7 +48,7 @@ Thank you to the amazing MDAnalysis community and to our mentors, @richardjgower [sff]: https://www.station1.org/sff [pdb]: https://www.rcsb.org/ [interoperability]: https://www.mdanalysis.org/2020/08/03/roadmap/ -[poster]: {{site.data}}/SFF2023_PD4_FinalPoster_Bekhazi_Ong.pptx.pdf +[poster]: {{site.data_files}}/SFF2023_PD4_FinalPoster_Bekhazi_Ong.pptx.pdf [john-github]: https://github.com/jong9559 [john-linkedin]: https://www.linkedin.com/in/john-ong/ [john-website]: https://jong9559.github.io/ diff --git a/pages/team.md b/pages/team.md new file mode 100644 index 00000000..15f6b48b --- /dev/null +++ b/pages/team.md @@ -0,0 +1,24 @@ +--- +layout: page +title: MDAnalysis team +--- + +MDAnalysis is a community-driven project that is made possible through the efforts of many members who contribute in numerous and diverse ways, ranging from direct package development, maintenance, documentation, communication, and managerial responsibilities. On this page we list identified project roles and team members for each of those roles. We note that the listed roles on this page can differ significantly in scope and required effort. + +We also invite community members to reach out to mdanalysis@numfocus.org or the current team members if they are interested in filling missing roles or joining an existing team! + +## Roles + +In this section we list major contributors who are currently contributing substantial effort to the roles listed below. This team organisation structure was started in November 2023; many people contributed to these tasks before then and may not appear in this table, in particular the [emeritus core developers]({{ site.url }}{% link about.md %}#mdanalysis-emeriti-core-developers). + +Names are listed in *alphabetical* order. + +{% include team_table.html %} + + +## Responsibilities + +In this section we briefly describe the tasks and duties of each role. + +{% include roles_description.html %} + diff --git a/pages/ugm2023.md b/pages/ugm2023.md index 1e1f9a2b..3ebc61ea 100644 --- a/pages/ugm2023.md +++ b/pages/ugm2023.md @@ -122,7 +122,7 @@ style="float: right; height: 5em; " /> [subway]: https://www.metrolisboa.pt/en/travel/diagrams-and-maps/ [campo]: https://goo.gl/maps/id9JZBZAKMDuBzcW9 [bus]: https://www.carris.pt/en/travel/maps/ -[agenda]: {{site.data}}/mdaUGM2023_agenda.pdf +[agenda]: {{site.data_files}}/mdaUGM2023_agenda.pdf [eventbrite]: https://www.eventbrite.com/e/mdanalysis-user-group-meeting-tickets-640669017277 [coredev]: https://www.mdanalysis.org/about/#mdanalysis-core-developers [mne.gov.pt]: https://vistos.mne.gov.pt/en/short-stay-visas-schengen/general-information/schengen-area