Slack is a chat client that might or might not have been invented by TTS alum Will Slack that provides us with a centralized way to communicate without overloading our inboxes.
- Complete your profile. A complete profile gives everyone a better chance of knowing who you are. This includes your first name, last name (optionally followed by your location and personal pronouns in parenthesis), profile picture (photos are preferred, but not required), phone number, and a summary of what you do and what teams you’re on.
- Enable two-factor authentication (2FA). You can either do this through SMS or an authentication tool. Slack provides detailed instructions for both options. If you need to reset 2FA, Slack admins will re-verify your identity.
- Abide by the TTS Code of Conduct. If you see anyone violating our Code of Conduct, see the reporting section.
- Do not post anything that would make our systems vulnerable or would impact the privacy of others if it fell into the wrong hands. See 18F’s list of alternatives.
- Assume everything you share will be made public. Treat Slack as a public forum — you have no privacy. This includes file uploads to Slack and any audio or video transmitted using a Slack Call.
Usage of TTS’s Slack
Slack is required for all TTS staff. We can also invite people outside TTS to have access to a single channel on our Slack account. These single-channel users are free, and don’t need financial authorization from TeamOps or security clearance from Infrastructure. These users may include:
- Vendors under contract (not just a Terms of Service) with TTS
- Vendors with GSA who are working on a project with TTS, for which we have an Memorandum of Understanding (MOU)
- Partners at federal agencies whose projects are under an Interagency Agreement with TTS, or at state or local agencies whose projects are under an Intergovernmental Collaboration Act agreement with TTS.
- Federal staff with government email addresses (for example, friends at the USDS, CFPB, other teams inside GSA, etc.)
- Members of the public collaborating on an open source project in a public channel via chat.18f.gov
Usage of other Slack workspaces
You may be invited to other Slack workspaces operated by government entities, or entities under contract to the government. You’re allowed to join those workspaces as necessary for your work. You should join those workspaces with your government email address and ensure your avatar and profile information are consistent across Slack workspaces. If you’re invited to Slack workspaces unrelated to your job, you must join those workspaces with a personal email address.
Fill out the user request form.
You can invite government partners, contractors, etc. to specific project channels to foster collaboration and asynchronous communication with the team. Several projects have created specific channels that end with
-partners. Our partners may be invited as single-channel guests at no cost to the project or agency. Giving partners access to more than one channel will be billed the normal Slack user rate to your IAA. When possible, we prefer to set up shared channels with partners over having multi-channel guests.
- Create a
<project>-partnerschannel, if you don’t want them in an existing channel.
- Fill out the user request form.
A small number of close TTS collaborators at GSA may be full Slack members at the discretion of the head of infrastruture. Examples might include the Chief Information Officer or FAS Commissioner. Ask in #admins-slack if you’d like to add someone to this category.
TTS has specific channels in Slack that are open to the public to join. These channels end with
-public. (Note: In Slack’s parlance, all channels in a workspace are either
public, allowing any full member to find/join, or
private. Howver, when we say “public channels” on this page, we mean channels open to all members of the public.)
Treat these channels like you would a livestreamed event on GSA’s YouTube page or other type of public meeting open to guests. Materials and documents should not be shared only in public channels; instead, they should be published on TTS websites and then linked to from the public channels so that access to Slack isn’t required to see the document. Members of the public must also comply with GSA standards and the TTS Code of Conduct. For all shared and public channels, it’s not a good idea to invite people into a shared channel that aren’t there witout a heads up. Instead, please DM them the link to an interesting message. Pulling them in without their consent (where others can @ or DM them) may not be fair to their schedule if they need to be heads down.
Add a new public channel
See the instructions.
Slack users need to be offboarded in the following situations:
- Someone leaving TTS
- A partner who’s employment/engagement is ending
- It is the responsibility of the engagement manager to inform @slackadmin in #admins-slack when this is happening.
- A contractor who is no longer supporting TTS
- The COR or the TTS representative that added the contractor to Slack should fill out the user modification form when the period of performance ends.
An admin will then do one of the following:
- Convert them to a Single-Channel Guest.
- Put them in one of the following channels (as appropriate):
- #alumni (former Full Members only, but treated as a public channel)
- One of the
-publicchannels (their pick)
- Disable their 2FA.
- …unless you know they were using their personal device for 2FA — we don’t want them to be locked out.
- Change their email to their personal address
- Put them in one of the following channels (as appropriate):
*NOTE: When a TTS Slack user is converted to a Single-channel user, they maintain access to their direct message chat history but are unable to search for or create new direct messages with folks that they’ve never messaged before. Unless another channel is specified, the only channel that will still be accessible is #alumni.
If they were a partner, the admin will also set their
Downgraded/disabled on date in the user request spreadsheet.
Here are the resources used by Slack Admins to track and manage Slack accounts:
- Subscribe to responses for the following forms (screen capture)
- Delegation of functionality
Per the mandatory General Records Schedule 3.1 issued by the National Archives and Records Administration (NARA), everything in Slack channels and groups is considered at minimum a temporary record.
To ensure compliance with the possibility that we might create permanent or long-lived records in Slack, the records retention policy is set to retain all messages forever AND also retain edit and deletion logs for all messages. Users are prohibited from deleting messages. Do not abuse the
edit command in Slack to effectively delete your message by replacing it with null or symbolic content. Edits for clarity or typos are fine. If any bot or integration ever posts something inappropriate, please call for a clean-up in #admins-slack using @slackadmin.
This policy applies to all types of Slack communications: public channels, private groups, even direct messages. Nothing is private. We use the compliance export capability in Slack to view all messages. The Primary Team Owner is responsible for ensuring monthly exports and backing these exports up in GSA’s Google Drive.
During regular operations, only the Slack Owners, the Executive Director of 18F, and GSA IT have access to the exports. There is no regular monitoring of these messages, but they have been reviewed in the past. Various legal actions (for example, a Freedom of Information Act request) or security operations approved by the Infrastructure Director have required others to view the exports. The team will continue to be notified at the earliest possible time that the exports have been accessed. Notifications of access may not be made in realtime.
Slack is currently built on Amazon Web Services (AWS), which from a federal security perspective, already has a host of protections verified through GSA’s FedRAMP program. GSA IT and 18F have also conducted a review of Slack’s security operations and vulnerability scanning.
However, there are currently no assurances that Slack employees can’t read any and all of the messages sent via Slack. In fact, Slack makes it clear that its employees do have this ability, and just don’t use it without customer permission:
All of our employees are bound to our policies regarding customer data and we treat these issues as matters of the highest importance within our company. If, in order to diagnose a problem you are having with the service, we would need to do something which would expose your data to one of our employees in a readable form, we will always ask you prior to taking action and will not proceed without your permission. Our platform will automatically generate an audit entry of any such access.
This is the case with most software as a service offerings. Slack has multiple mechanisms in place to audit this access, and ensure it is only done with the appropriate authorizations. Regardless, we currently do not, and may never, authorize Slack to handle sensitive information).
…or “Apps” or “bots”.
You can add new “configurations” of pre-approved integrations to Slack, for things like posting Trello or GitHub notifications to a Slack channel. You can also freely add new configurations for “Incoming WebHooks,” which is on a different page. For any new integration types, please follow the process below.
Approval of New Integrations
Note this is only necessary for new bots or types of integrations—approval is not needed for new “configurations” of a previously-approved App. The form should filled out again if the nature of the connection changes, e.g. a webhook connection changes to using OAuth.
Before completing this form, you might need to research how the integration interacts with Slack. For example, does the integration have read access to channels or not? Reach out to #admins-slack and/or Slack support for help.
New integrations/bots need approval from the following:
- TTS Slack admins
- Security Engineering (ISE) (Bo Berlas)
- GSA IT (Amar Singh, Chris McFerren, or Derrick Rogers)
- Read access from Slack (e.g. RSS) will almost definitely be approved.
- One-way integrations into Slack (e.g. via webhooks) are almost always fine.
- Integrations from higher-risk systems (Moderate or High) into Slack will generally not be approved.
- TTS Infrastructure will advise a hard veto on any externally hosted bots that can read all the messages in channels they are invited into and the only utility from the bot is achieved if they are invited into more or less all the channels.
Slack offers a feature to create shared channels with other workspaces. Shared channels are a more efficient and economic way to work with people in other Slack workspaces than managing them in our Slack workspace as guests, especially when we using multiple channels for a project. All records in shared channels are retained and available for compliance exports.
Requesting a new shared channel
When you are interested in a shared channel, please drop into #admins-slack to request it. Please specify if you want to use a new channel or want us to share an existing channel. Please also give us a heads up before partners send us a sharing request.
Guidance for using Shared Channels
When participating in shared channels, please keep in mind:
While people in similar organizations share areas of focus, we should treat our collaborators in these channels as members of the public and only share information we would put into public channels. Anything said in those channels is a public announcement and could end up posted on twitter by someone else, for example. This does not apply to shared channels with an active agreement between us and the people in the other workspace.
Nothing about a shared Slack channel itself implies a partnership between TTS and the other organization. The shared channel just adds another possible route of communication to e-mail, twitter, listserves, and so on. Do not feel obligated to answer a DM from someone in a shared channel.
We should not mention the Slack orgs of our partners in public channels or to other agencies without permission. It’s not for us as TTS to share which other groups in gov are using Slack, nor do we want to appear to be endorsing its use for others.
For all shared and public channels, it’s not a good idea to invite people into a shared channel that aren’t there. Instead, DM them the link to an interesting message. Pulling them in without their consent (where others can @ or DM them) may not be fair to their schedule if they need to be heads down.
Likewise, when setting up shared channels, we will look to set these expectations with workspaces with which we connect:
Members of our team in shared channels may not have a lot of time to respond to DMs from partner orgs. Requests for documents, materials, and etc are better placed in the open channel for anyone to see and triage.
Members of our team will only want to share materials that are already public. If you have a specific request for a private document, that request is better e-mailed than put into Slack, as that e-mail will have to be sent around to various GSA offices to ensure compliance.
Anyone in a shared channel must also comply with GSA standards and the TTS Code of Conduct.
If a shared channel does not produce good results, or causes a burden, we don’t need to continue it. That won’t be the end of our collaboration - just recognizing that a particular tool isn’t effective for achieving the results that we want. If the shared channel is with a private entity (contractor or vendor) we will not continue sharing a channel after the agreement covering our work elapses.
Slack Groups allow you to direct messages to a specific list of people in a more precise way than an @-channel or @-here. Any full member can view, create, and edit Slack groups at will.
Groups are a great way to alert people who might not be in a channel about something that needs their attention or make sure urgent incidents are directed to the right people and not an entire channel. For example, you can ping @github-admins in #admins-github if you have an urgent issue instead of using an @channel or use @federalist-team to alert that group of a conversation in another channel that we should see immediately.
- Everything in Slack is subject to FOIA and is therefore potentially part of the public record (written words that are attributable back to you). Don’t say something on Slack that you wouldn’t feel comfortable appearing on the news.
- Slack provides some formatting tips to make your messages extra fancy.
- When customizing your profile with your location or personal pronouns, consider also adding those details to the Last Name field so they appear alongside your messages. This is a great way to be remote-friendly and gender inclusive. Otherwise, your colleagues need to view your profile to see that information. Many people use airport codes instead of city names to indicate their location.
- The advanced settings section provides an option for only showing channels that have unread messages. This is useful if you’re a member of a lot of channels.
- Click the timestamp on any post to go to the archival view of it. This is helpful if you’d like to cross-post a link to a message in another channel.
- When using Slack on mobile: mentioning someone in a channel they aren’t in won’t notify them, and you won’t get the option to invite someone after mentioning them.
- Feel free to pop in and out of channels. You can
/mutechannels (so you only receive messages when your name or
@channelis mentioned) or leave channels if they become overwhelming.
- If you’re interested in tracking specific keywords across Slack, set up highlight word notifications.
- To add an RSS feed to any channel, type
/feed subscribe <RSS URL>.
- Never use Slack to share secure information. If you need to share short bits of text securely, use Fugacious. If you want to say something private, it’s easy to ask someone to hop on a call. (See the shortcuts below.)
- You can use Slack as an archival system. It has a powerful search feature and you can search specific channels or conversations. For instance, if you have a question about a specific healthcare plan, search for that in Slack before asking.
- You can also search by tagged emoji. To see all messages tagged with a particular emoji, search Slack for
- Set Slack boundaries when you need to be heads-down by setting your status to Away. If you use Slack on mobile, you can prevent direct messages and mentions from pinging you when you’re not working. Just set your phone to Do Not Disturb mode or temporarily turn off notifications from the Slack app. Don’t worry — though we have different schedules and may message each other at strange times, there’s no expectation for people to respond when they’re not working.
- Praise your coworkers. If you’d like to praise someone for doing good work, start a message with
:heart: @usernamein #general-talk, or any channel in which Charlie is present. You can also see recent praise in #love.
- Use text encoding when pasting a large chunk of text. Use the + sign to the left of the text box to create a snippet. There will be an option to select how you would like to encode the text; select plain text to avoid smart quotes, if you’re pasting code.
- Emojis come in different colors. Tired of tabbing through multiple skin color emoji to find the one you want or identify with? Click on the Emoji Deluxe picker (the smily face in the text box) - then click on the emoji in the bottom right corner. You can then select a default color going forward.
- Change your color scheme. You can change your color scheme by going to Preferences –> Theme –> Custom Theme. Paste the following for the US Design Standards theme:
- Screen-sharing tip: If you want notifications to stop showing up so people don’t see them, hover over the Notification Center icon in the top right corner of your screen and Option + click on it. Repeat that to turn notifications back on.
How to make an announcement in #news
Use #news for vital team announcements. #news is an announcement-only channel where only administrators can post. If you have a post you’d like to go up in #news:
- 18F employees ping @commsquad or post in #outreach to get a review of the language. Once it’s ready, Sarah Milstein or Andre Francisco can post it.
- Acquisitions employees review your post with Stephen Reilly, and he can post it when it’s ready.
- OPP employees review your post with Jeremy Zilar or John Yuda; one of them can post it when it’s ready.
- PIF employees review your post with Joshua Di Frances, and he can post it when it’s ready.
Please keep #news posts limited to information that the entire team needs to know. This includes things like:
- Required trainings
- Necessary security and compliance actions
- Policy changes or reminders
- All-team events
- Senior management team meeting notes
- Changes or actions that impact the entire team
When to use @channel and @here
In general, the larger a channel is, the more careful you should be about using broadcast notifications.
@channel [message]to send a notification to everyone in the channel with your message. Use sparingly and only if everyone in the channel needs to see and read your message. When in doubt, ask first.
@here [message]to send your message to everyone in the channel with Slack currently open at a desktop computer. Don’t use this as a softer version of an
@channelbecause there will be no notification for anyone who wasn’t at their computer. This is more useful if you have an urgent need and need attention from everyone who is online right now. However, using @here in a large channel will still disrupt many people.
Some channels may have particular guidance for getting help, which you can usually check in the channel status. Regardless, if you don’t have an urgent need or a message that everyone needs to see, try posting your message without a broadcast notification.
Frequently used emoji
:check: = I did this or verified it was done
:plus: = I am a +1 for the above
:100: = I am a SUPER +1 to the above OR this comment is keeping it 100 (as in, keeping it real, speaking the 100% truth)
:thumbsup: = Sounds good
:question: = I don’t understand this/needs followup
:point_up: = I would also say this (can mean “this is correct” if you are the decider)
:raised_hand: = I volunteer
:raising_hand: = Have time for a question? (Keep in mind that many folks strongly prefer that you also add what your question is about so they can determine its urgency.)
:thanks: = A picture of Tom Hanks (T. Hanks -> thanks) used as a shortcut to say “thanks”
:facepalm: = Disbelief, shame, or exasperation.
:troll: = I’m intentionally trolling you or making a joke
- Angry Tock: our fierce timesheet reminder.
- Charlie, a.k.a. El Hubot Real: our Hubot instance. Knows all kinds of tricks. To get a list of them, send Charlie a direct message with the word
- coffeemate: direct message @coffeemate with
coffee meto set up a virtual coffee/tea with a random coworker.
- Dolores Landingham: our onboarding bot. Ask for access in #wg-onboarding.
- :evergreen_tree: bot: This bot allows you to “tag” Slack messages as information that should be in the 18F Handbook. If you add an 🌲 (
evergreen_tree) reaction to a Slack message, a bot will open a GitHub issue in the 18F Handbook repository with a link to that message. The issue serves as a reminder to integrate the linked information into the handbook.
- Slackbot: We automate responses to frequently asked questions with a Slackbot. You can update or customize responses here. (You can also add emoji). Do not include private or sensitive information in Slackbot automatic responses.
If you’re interested in learning more about the bots, or perhaps contributing to them, pop into #bots.
Appendix: Channel names and handy shortcuts
Clusters of channels
- Guilds: #g-*
- Working groups: #wg-*
- SaaS administration/support: #admins-*
Channel naming conventions
- Channels that begin with
admin-include administrators for various tools. #admins-slack, for example, is used to request invites to Slack (see above), expunge a particularly offensive/off-topic message (see above), change the name of an existing channel, and so on.
- Channels that begin with
wg-are for working groups; channels that begin with
g-are for guilds. See the Grouplet Playbook for information about working groups and guilds. Feel free to join a working group or guild channel even if you are not actively part of the group.
- Channels that end with
-partnerinclude partners from other agencies.
- Channels that end with
-publicmay include members of the public.
@channel [message]to send your message to everyone in the channel. Use sparingly and only if everyone in the channel needs to see your message.
@here [message]to send your message to everyone in the channel with Slack open at a desktop computer. Don’t use this as a softer version of an
@channelbecause there will be no notification for anyone who wasn’t at their computer.
/me [message]to “emote” your message. (Just try it.)
/muteto suppress notifications from the channel you’re currently in. You can also turn on desktop notifications for specific channels.
/hangoutto start a Google Hangout in the current channel.
/heroto start Screen Hero automatically.
[message XPOST #channel-name]to cross-post a message to a different channel while posting it.
/remindto remind yourself to do something in the future.
love @username for [message]to publicly praise and thank someone. If Charlie is in the channel, it will copy your message to #love.
charlie hug bombfor a dose of team love! To add your picture, email it to Aidan Feldman or post in #admins-slack.
Option + Upor
Option + Downto switch between channels and direct messages.
Escto mark all messages in the current channel as read.
Shift + Escto mark all messages across all channels as read. Only do this if you’ve caught up in channels for your projects first.
Command + Kor
Command + Tto switch between channels and direct messages by name.
Command + [and
Command + ]to jump back and forth along your history of DMs/channels.
- To mark messages as unread, click a message on your phone and select mark unread or press
Altand then click your mouse to do so on your desktop.