π A experimental effort to coordinate meetup resources through GitHub.
Community and operations infrastructure that support both our internal
and outreach processes. We tag these repos with an infrastructure
topic label.
Legend |
---|
π¬ Unofficial/Experimental |
π Self-hosted |
Tool Name | Description | |
---|---|---|
π | hubot-toby |
Custom chat bot who lives in our slack |
π | civictechto-slack-invite |
Small app for public Slack sign-up |
ππ¬ | prog-channels |
Tool to sync Slack channel list to a public Airtable |
π | matterbridge-heroku |
Tool to help bridge chat channels between Slacks |
ππ¬ | civictechto-members |
Script for aggregating member stats |
π¬ | civictech.ca-wordpress |
Pantheon-hosted Wordpress website - dev test prod |
meetup-attendance-downloader |
Web app for venue hosts to get attendance list for next Meetup | |
event-metadata-parser |
Small API to parse event data from links | |
civictechto-scripts |
Code scripts for running scheduled housekeeping tasks | |
civictechto-community-toolkit |
Web app for sharing community resources from a spreadsheet | |
π¬ | trello-pitch-board |
Proof-of-concept for a hacknight project dashboard backed by Trello |
π¬ | trello-powerup-board-copier |
One-click copying of boards, that notifies team of action |
tweet-stub-helper |
Simple app for creating tweet stubs from a Google Sheet | |
circleci-job-runner |
Simple API for running CircleCI jobs via public endpoints | |
anki-meetup-memorizer |
Tool to create spaced repetition cards (video) from Meetup events | |
slack-greeting-bot |
Slackbot to send a greeting message to a user who joins a channel | |
π¬ | gdrive-whats-new-app |
Small app for redirecting to a GDrive folder's newest file. |
π¬ | people-list-parser |
Embeddable widget that renders view of organizing team from GSheets. |
hubot-sms-doorbell |
Ping Slack team via text message (non-venue-specific doorbell) | |
π¬ | civictechto-rerouter |
Redirect subdomains to a given webpage (e.g., yyc.civictech.ca ) |
When building community infrastructure, there are several overarching principles that we try to align with. This is an evolving list primarily curated by @patcon, but please do contribute feedback and improvements!
- Use existing tools as user interfaces. If your team widely uses a tool already -- Google Spreadsheets, Trello, GitHub, Slack, Meetup -- try to make that the interface. Be attentive not to force a tool that's not already on the team's critical path. Try to choose the tool that has the most access among organizers, and appropriate permissions. ie. If only 5 people manage Meetup, it's perhaps best not to make it the interface.
- Don't fight with humans. Organizers should never have to fight with an automated script. If they want to "take over", they should be able to do so as easily as possible.
- Die gracefully when forgotten. If organizers forget about the automation, allow them to easily go back to working with tools directly.
- Be clear about a point of contact for support. Don't assume people know to check Git commit history on code.
- Vocalize, but don't spam. Consider announcing automated actions in appropriate communication channels. This is to help ensure the organization doesn't forget that automation is taking place. Be thoughtful to include essential details, so that messages don't come to be seen as repetitive and pointless. eg. Don't simply announce "New users given permissions to files" every time a script runs, but rather, add logic to only speak up when significant changes are made, and mention who was added. Consider making top-level channel post very short, and hiding details in thread replies.
- Assume transience of organization membership. Assume that the things that seem most important and front-of-mind will be forgotten during leadership transitions.
- Leverage tools and spaces people already use. If organizers are using Google Spreadsheets to manage work, don't unilaterally try to introduce a new tool like Trello.
- Keep hardcoded assumptions and configuration out of code when possible. If there's a template file that an organizer should be able to tweak, reference it in a spreadsheet cell, rather than hardcoded or set via environment variable. Better still, allow that template to be a Google Document, rather than a static text file stored at a link online.
- Don't automate emotional labour. Emotional labour is for people, not robots. E.g., saying thank-you. Automate reminders for people to engage in this work, but be very cautious not to hide its occurence or put it further away via automation. 1
This is a list of resources that are available.
- Service & Access Inventory. For tracking what services we use, and who has access to what.
- Google Drive folder. For storing all resources related to operations of Civic Tech Toronto.
- Slack Channel List. An auto-updated and categorized list of channels for curious folks who haven't yet signed up for Slack.
- Member attendance count list. Ethercalc spreadsheet updated daily from public data on Meetup.com.
openoakland/infra
. An experiment to apply the practices of Infrastructure as Code to OpenOakland.g0v-infras
hackholdr. A hackholdr for holding resources and notes for g0v.tw's infrath0n hackathons and projects.g0v/domain
. Repo for managing g0v domains via automated script.18F/dns
. DNS configuration for domains managed by GSA TTS.
- h/t to a contributor at our session at Code for America Brigade Congress 2019, for inspiring this point.