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

Complete re-write to move to a Spreadsheet based approach #200

Merged
merged 11 commits into from
Jan 8, 2025
110 changes: 110 additions & 0 deletions files/issue-template/meeting.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,110 @@
name: Group session
description: Propose a TPAC group session.
labels: ["session"]
body:
# This repo includes code that validates instances of the data below.
# The validation code parses this file and uses "id" for some aspects of validation.
# One implication is that labels below can be changed without disrupting some of the validation code.
# However, the validation code in some cases also matches on values of "options" below, so if those change,
# you will need to change the validation code as well.

- type: markdown
attributes:
value: |
Thank you for proposing a TPAC session. The title should be the name of the group or groups who will be meeting. The name must be the official [group name in the W3C system](https://www.w3.org/groups/), with some abbreviations supported (e.g., WG for Working Group).

- type: dropdown
id: capacity
attributes:
label: Estimate of in-person participants
options:
- More than 40
- 30 to 39
- 20 to 29
- Less than 20
validations:
required: true

- type: markdown
attributes:
value: |
## Scheduling preferences

- type: checkboxes
id: times
attributes:
label: Select preferred dates and times (23-27 September)
description: You may select more than one
options:
- label: Monday, 09:00 - 10:30
- label: Monday, 11:00 - 12:30
- label: Monday, 14:00 - 16:00
- label: Monday, 16:30 - 18:00
- label: Tuesday, 09:00 - 10:30
- label: Tuesday, 11:00 - 12:30
- label: Tuesday, 14:00 - 16:00
- label: Tuesday, 16:30 - 18:00
- label: Thursday, 09:00 - 10:30
- label: Thursday, 11:00 - 12:30
- label: Thursday, 14:00 - 16:00
- label: Thursday, 16:30 - 18:00
- label: Friday, 09:00 - 10:30
- label: Friday, 11:00 - 12:30
- label: Friday, 14:00 - 16:00
- label: Friday, 16:30 - 18:00

- type: textarea
id: conflicts
attributes:
label: Other sessions where we should avoid scheduling conflicts (Optional)
description: |
Identify sessions by their issue number in this GitHub repo (e.g., `#32, #18`). Space- or comma-separated list.
validations:
required: false

- type: textarea
id: comments
attributes:
label: Other instructions for meeting planners (Optional)
description: |
Any information for the meeting planners, including timing constraints or groups not yet registered where overlap should be avoided. This information will not be exported to the TPAC site or calendar.
validations:
required: false

- type: markdown
attributes:
value: |
## Logistics

- type: markdown
attributes:
value: |
> [!Note]
The meeting planners will provide additional logistics information automatically, including calendar information.

- type: input
id: discussion
attributes:
label: Discussion channel (Optional)
description: |
A URL for a meeting discussion channel (e.g., IRC, Slack). If provided, this will be added to the calendar invitation.
validations:
required: false

- type: markdown
attributes:
value: |
## Agenda

- type: textarea
id: agenda
attributes:
label: Agenda for the meeting.
description: |
This part may be completed closer to the meeting. As the agenda becomes available, you will be able to update your session description in markdown to **detail the agenda or link to an external agenda**. Agenda information will be pushed to the calendar.

- type: markdown
attributes:
value: |
> [!Note]
After the meeting, the meeting planners will add a section to the session description for meeting materials such as links to minutes, presentations, and any recordings.
112 changes: 112 additions & 0 deletions files/issue-template/session.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,112 @@
name: Session proposal
description: Propose to chair a breakout session
labels: ["session"]
body:
# This repo includes code that validates instances of the data below.
# The validation code parses this file and uses "id" for some aspects of validation.
# One implication is that labels below can be changed without disrupting some of the validation code.
# However, the validation code in some cases also matches on values of "options" below, so if those change,
# you will need to change the validation code as well.

- type: markdown
attributes:
value: |
Thank you for proposing to chair a breakout session. Please ensure that the session is [in scope for a breakout](https://github.com/w3c/tpac-breakouts/wiki/Policies#session-scope) and review the [good practices for session chairs](https://github.com/w3c/tpac-breakouts/wiki/Good-Practices-for-Session-Chairs), which includes information about [how you can later update your session](https://github.com/w3c/tpac-breakouts/wiki/Good-Practices-for-Session-Chairs#how-to-update-a-session).

- type: textarea
id: description
attributes:
label: Session description
description: |
Simple markdown only please (inline formatting, links, lists).
validations:
required: true

- type: input
id: goal
attributes:
label: Session goal
validations:
required: true

- type: textarea
id: chairs
attributes:
label: Additional session chairs (Optional)
description: |
GitHub identities of additional session chairs other than you (e.g., `@tidoust, @ianbjacobs`). Space- or comma-separated list.
validations:
required: false

- type: dropdown
id: attendance
attributes:
label: Who can attend
description: |
TPAC breakouts sessions are usually open to the public (including remote attendees). Please only select “Restricted” if there is a compelling reason why the session should only be open to TPAC registrants.
options:
- Anyone may attend (Default)
- Restricted to TPAC registrants
validations:
required: true

- type: markdown
attributes:
value: |
## Logistics

- type: markdown
attributes:
value: |
> [!Note]
The meeting planners will provide additional logistics information automatically, including calendar information.

- type: input
id: shortname
attributes:
label: IRC channel (Optional)
description: |
Shortname for the irc.w3.org channel (e.g., `#my-fav-session`). If not provided, shortname will be generated from title.
validations:
required: false

- type: markdown
attributes:
value: |
## Preferences

- type: textarea
id: conflicts
attributes:
label: Other sessions where we should avoid scheduling conflicts (Optional)
description: |
Identify sessions by their issue number in this GitHub repo (e.g., `#32, #18`). Please do not use links, just '#' followed by an issue number. Space- or comma-separated list. Note: When someone chairs 2 or more sessions, we automatically do not schedule those sessions in the same slots, so there is no need to note those conflicts there.
validations:
required: false

- type: textarea
id: comments
attributes:
label: Instructions for meeting planners (Optional)
description: |
Any information for the meeting planners, including [timing constraints](https://github.com/w3c/tpac2024-breakouts/wiki/Breakout%E2%80%90time%E2%80%90slots) or groups not yet registered where overlap should be avoided. This information will not be exported to the event site or calendar.
validations:
required: false

- type: markdown
attributes:
value: |
## Agenda

- type: textarea
id: agenda
attributes:
label: Agenda for the meeting.
description: |
This part may be completed closer to the meeting. As the agenda becomes available, you will be able to update your session description in markdown to **detail the agenda or link to an external agenda**. Agenda information will be pushed to the calendar.

- type: markdown
attributes:
value: |
> [!Note]
After the meeting, the meeting planners will add a section to the session description for meeting materials such as links to minutes, presentations, and any recordings.
5 changes: 5 additions & 0 deletions files/session-created.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
Thank you for proposing a session!

You may update the session description as needed and at any time before the meeting, but please keep in mind that tooling relies on issue formatting: [follow the instructions](https://github.com/w3c/tpac-breakouts/wiki/Good-Practices-for-Session-Chairs#how-to-propose-a-session) and leave all headings and other formatting intact in particular. Bots and W3C meeting organizers may also update the description, to fix formatting issues or add links and other relevant information. Please do not revert these changes. Feel free to use comments to raise questions.

Do not expect formal approval; W3C meeting organizers endeavor to schedule all proposed sessions that are [in scope for a breakout](https://github.com/w3c/tpac-breakouts/wiki/Policies#session-scope). Actual scheduling should take place shortly before the meeting.
55 changes: 55 additions & 0 deletions files/workflows/add-minutes.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
name: "[M] Link to session minutes"

on:
workflow_dispatch:
inputs:
sessionNumber:
description: 'Session issue number or "all" to link all possible minutes'
required: true
default: 'all'
type: string

jobs:
add-minutes:
name: Link to session minutes
runs-on: ubuntu-latest
steps:
- name: Setup node.js
uses: actions/setup-node@v4
with:
node-version: 20

- name: Checkout latest version of release script
uses: actions/checkout@v4
with:
ref: main

# Note: no "package-lock.json" and no "npm ci" on purpose to retrieve
# latest version of w3c/tpac-breakouts tools (which are unversioned)
- name: Install dependencies
run: npm install

- name: Link to session minutes
run: npx add-minutes ${{ inputs.sessionNumber }}
env:
# URL of the annual TPAC XXXX breakout project.
# The PROJECT_OWNER and PROJECT_NUMBER variables must be defined on
# the repository. PROJECT_OWNER_TYPE needs to be set to "user" if
# project belongs to a user. It may be omitted otherwise (or set to
# 'org"').
PROJECT_OWNER: ${{ vars.PROJECT_OWNER_TYPE || 'organization' }}/${{ vars.PROJECT_OWNER || 'w3c' }}
PROJECT_NUMBER: ${{ vars.PROJECT_NUMBER }}

# A valid Personal Access Token (classic version) with project
# and public_repo scope.
GRAPHQL_TOKEN: ${{ secrets.GRAPHQL_TOKEN }}

# Information about the team user on behalf of which the updates to
# the calendar will be made. The password must obviously be stored
# as a secret!
W3C_LOGIN: ${{ vars.W3C_LOGIN }}
W3C_PASSWORD: ${{ secrets.W3C_PASSWORD }}

# Mapping between chair GitHub identities and W3C IDs must be stored
# in a variable. Structure is a JSON object with identities as keys.
CHAIR_W3CID: ${{ vars.CHAIR_W3CID }}
58 changes: 58 additions & 0 deletions files/workflows/setup-irc.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
name: "[M] Setup IRC channels"

on:
workflow_dispatch:
inputs:
sessionNumber:
description: 'Session issue number or "all" to initialize IRC channels for all valid sessions in the slot.'
required: true
default: 'all'
type: string
dismiss:
description: 'Setup channel, or dismiss bots'
required: true
default: 'setup'
type: choice
options:
- setup
- dismiss

jobs:
update-calendar:
name: Setup IRC channels
runs-on: ubuntu-latest
steps:
- name: Setup node.js
uses: actions/setup-node@v4
with:
node-version: 20

- name: Checkout latest version of release script
uses: actions/checkout@v4
with:
ref: main

# Note: no "package-lock.json" and no "npm ci" on purpose to retrieve
# latest version of w3c/tpac-breakouts tools (which are unversioned)
- name: Install dependencies
run: npm install

- name: Run the setup script
run: npx setup-irc ${{ inputs.sessionNumber }} full ${{ inputs.dismiss }}
env:
# URL of the annual TPAC XXXX breakout project.
# The PROJECT_OWNER and PROJECT_NUMBER variables must be defined on
# the repository. PROJECT_OWNER_TYPE needs to be set to "user" if
# project belongs to a user. It may be omitted otherwise (or set to
# 'org"').
PROJECT_OWNER: ${{ vars.PROJECT_OWNER_TYPE || 'organization' }}/${{ vars.PROJECT_OWNER || 'w3c' }}
PROJECT_NUMBER: ${{ vars.PROJECT_NUMBER }}

# A valid Personal Access Token (classic version) with project
# and public_repo scope.
GRAPHQL_TOKEN: ${{ secrets.GRAPHQL_TOKEN }}

# Mapping between chair GitHub identities and W3C IDs must be stored
# in a variable. Structure is a JSON object with identities as keys.
CHAIR_W3CID: ${{ vars.CHAIR_W3CID }}

Loading
Loading