Skip to content

Latest commit

 

History

History
150 lines (128 loc) · 8.63 KB

README.md

File metadata and controls

150 lines (128 loc) · 8.63 KB
Civic Tech Toronto logo

Overview

Slack badge

🎈 A experimental effort to coordinate meetup resources through GitHub.

Table of Contents

Community Infrastructure

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)

Philosophy

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!

  1. 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.
  2. 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.
  3. Die gracefully when forgotten. If organizers forget about the automation, allow them to easily go back to working with tools directly.
  4. Be clear about a point of contact for support. Don't assume people know to check Git commit history on code.
  5. 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.
  6. Assume transience of organization membership. Assume that the things that seem most important and front-of-mind will be forgotten during leadership transitions.
  7. 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.
  8. 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.
  9. 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

Resources

This is a list of resources that are available.

Internal Operations

External

  • 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.

Footnotes

  1. h/t to a contributor at our session at Code for America Brigade Congress 2019, for inspiring this point.