Loading...
Loading...
Loading...
Loading...
Loading...
1% Complete
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Create a Google Doc and name the file [INITIALS_OF_FIRST_PERSON]-[INITIALS_OF_SECOND_PERSON] 1-1
.
For example, if Bob Adrian Jones is meeting with Jen Tai Yin Lee, the title of the file would be BAJ-JTL 1-1.
Use three letter initials when possible since there may be people with the same initials.
Share the file with the other person, using the Share option in the Google Doc.
Create a Direct Message channel in Mattermost and add the other person.
Add a link to the Google Doc at the top of the Direct Message channel by editing the header of the channel. Choose Edit Header and paste the link.
Use the file for 1-1s to post material in advance and to write notes of your discussions.
Mattermost, Inc. is a company based on the Mattermost open source project, which is a messaging collaboration platform for team communication across mobile, web, and PC with instant search, continuous archiving, and unlimited integrations. Mattermost software is used by thousands of organizations around the world in 16 languages.
What we do: Mattermost, Inc. helps solve collaboration challenges for developers, operators & security teams so organizations can focus on business-critical tasks.
Who we serve: Our Ideal Customer Profile (“ICP”) is an enterprise, defense or governmental organization with 2,500+ employees in need of a collaboration platform for mission critical work that meets complex requirements for security, compliance and self-sovereignty. ICP organizations have significant in-house Dev/Sec/Ops talent and the ability to deploy and secure self-managed infrastructure.
We believe that mission critical work is hampered by one or more of the following;
Risk from non-compliance
End of Life of existing systems
Lack of resilience at scale during infrastructure failure or breach
Competitive Risk
Need to preserve sovereignty
Noise/gaps of MS Teams/general collab tools for tech/operational orgs
Risk from gaps in Mattermost Team Edition for large organizations
Low efficiency, high delay and error rates due to inflexible platform
Need interconnect outside of AD domains and CAC systems
What we offer: Mattermost is a secure collaboration platform for accelerating mission critical work in complex environments. We connect teams, tools and processes on a self-sovereign hub with workflow, integrations, real-time messaging, voice, screen share and federation to deliver more focused, adaptable and resilient decision cycles and outcomes.
Mattermost’s mission is to make the world safer and more productive by developing and delivering secure, open source collaboration software.
Leadership principles are deliberate choices defining our behavior. When facing complexity, uncertainty, or ambiguity (CUA) we determine our point of view and our actions through the lens of our values:
Customer Obsession: We exist to make customers successful. In everything we do, start with customer perspective and work backwards. Earn and keep their trust.
Ownership: Own the outcomes of your activity. Don’t drop the ball. When we see a vacuum on something important, we jump in – we never say “it’s not my job.”
High Impact: Align work to our shared vision and focus on those priorities. When deciding to work on low impact or high impact projects, choose high impact.
Self-Awareness: We understand and seek to understand our strengths and growth opportunities, as individuals and organizations. We are open to critique and share critique constructively and respectfully.
Earn Trust: Make decisions based on maximizing the trust of others in your judgement. Be open, self-critical, and factual. Earn and keep peoples' trust.
We see a $30B+ market opportunity in the secure collaboration space and the growth of “open source collaboration” accelerating vs proprietary solutions. Open source has already commoditized operating systems, databases, tooling, and virtualization infrastructure. We see the entry of open source into the application layer driving fast adoption of a new generation of open source and open core solutions, inherently more flexible, trustworthy, and economical than past models.
Mattermost, Inc is a commercial open source company with a subscription-based, buyer-based open core licensing model.
Mattermost Professional Audience: Development team that wants to build and scale sophisticiated work flows for multiple cross-functional teams to be able to deliver mission critical operations.
Mattermost Professional is offered under an open source MIT license. It's built for a team of 10 to 50 developers and IT professionals who need to self-host a workplace messaging platform. Developer-focused features including web, desktop, and mobile apps, core integrations with DevOps platforms, archiving, search, and extensibility framework are offered in the open source core at no cost.
Mattermost Professional is packaged as a single Linux binary that's straightforward to install and maintain, with automated deployment from public cloud marketplaces including AWS, Azure, VMWare, and GCP.
Mattermost Enterprise
Audience: Enterprise deployments who need to accelerate mission critical work in complex environments by increasing speed, efficiency and resilience in vital operations while meeting nation-state level security and compliance requirements.
Mattermost Enterprise is an enterprise-grade collaboration system that supports and helps you scale your mission-critical enterprise workflows, meet strict enterprise security, compliance, and privacy requirements, as well as provide executive reporting, dashboards, and productivity metrics.
Different packages of commercial features are offered based on buyer needs.
For more information, see our Product Overview and open source repository at https://github.com/mattermost/.
Mattermost is an open source, remote-first, communities-centered company based in Palo Alto, California and headquartered on the internet.
Open source means that by default we make our technology, business process and source code available to the public. We develop a small portion as proprietary technology, built upon our open source work, to license for subscription fees that enable more high quality open source work to be produced. Since the start of the Mattermost open source project in 2015, we have used this model to develop effective open source solutions for the world to use. This model is sometimes called Thin Open Core.
Remote-first means that the majority of our staff works from home, cottages, coffee shops and other personal areas, rather than at a shared corporate office location. Mattermost was born in an extraordinary age where remote-first organizations can attract, hire and enable remote teams to produce better technology, business process and business results in less time than office-based teams, while maintaining security and compliance standards.
Remote-first culture flourishes when we share one simple principle: Courtesy. Courtesy means Mattermosters are thoughtful about keeping our communities appropriately informed, following etiquette for discussions, calls and video meetings, and giving and receiving feedback on how to work better together. Courtesy also means we gladly accommodate those who prefer to work out of a dedicated office. We are remote-first, not remote-only.
Communities-centered means we define our success in the context of the success of our communities: users, customers, implementers, resellers, technology partners, contributors, and colleagues. The success of each community is owned by a member of the Mattermost leadership team. The plural definition of “communities” is intended to avoid unconsciously marginalizing downstream stakeholders.
Based in Palo Alto, California and headquartered on the internet means the mailing address for Mattermost, Inc. is in Palo Alto, California, and our headquarters is on the internet, specifically the production-quality Mattermost instance at https://community.mattermost.com. Our online headquarters is where Mattermost staff work with our communities of colleagues, users, partners, customers, candidates, contributors, and other community members to envision, develop, and refine new open source technologies to make the world safer and more productive.
The Mattermost logomark is called "the instrument". It represents four tools organizations need to achieve their highest priorities: A compass for direction, a clock to set pace, a meter to measure output, and a dial representing inputs - the contribution of everyone on the team.
See brand guidelines for usage guidance.
The Mattermost Handbook is a continual work-in-progress for Mattermost staff (people who are paid to work on our open source software), contributor community, and end user community. We use it to document the processes that underpin our company behind our software. Its purpose is to iteratively increase clarity for Mattermost staff and community co-building the future of our company and our offerings, and provide a single-source of truth.
Early in our history, when we were a much smaller company, our staff handbook was included in our product documentation. Now the Handbook lives in the the dedicated repository at https://github.com/mattermost/mattermost-handbook which is edited using GitBook as a frontend.
Want to contribute to the Handbook? Start here: How to update the Handbook.
All documentation is available under the terms of a Creative Commons License.
Some norms you'll see here in the Handbook:
It's Day 1 at Mattermost. We're a growing company and growing open source project out to support the massive transformation underway as open source software unlocks the massive potential of people and teams around the world. As an open source company we like to share early. Sharing ideas early gets us feedback sooner, so we can iterate faster, so we can better results.
On some pages, you'll see reference to 1% and 50% drafts. This is used to express how complete our thinking is around the published content, and indicate whether fundamental changes may be made.
When a section of the handbook is at less than the 50% draft stage you should see it labeled in the page description with the % draft status. When a section doesn't have a % draft status, assume it's over the 50% draft stage.
We believe this system has two key benefits:
Be more open to feedback and iteration: Having something published publicly can make it seem overly "final". By having pages in our handbook at 1% and 50% we make it easier to go through feedback and iteration cycles.
Engage more non-technical people in the discussion: In the past, we've done reviews largely in GitHub pull requests, which is friendly and familiar for technical team members, but more difficult for others. Sharing 1% and 50% drafts in the public for feedback makes our process more inclusive.
There are trade-offs as well: There may be confusion among people who haven't been onboarded into the 1%, 50% draft concept. People who aren't comfortable with the level of early sharing may feel upset. For these reasons, this page itself is only a 10% draft, so opinions can be expressed and discussed.
Feedback on this handbook is immensely appreciated. There are two ways you can share your feedback:
You can create an issue in the Handbook repository. Select New issue, and provide as much detail as possible in the issue. Screenshots and links are also welcome. Choose Submit new issue. The Handbook channel receives a notification and this begins the cycle of feedback and iteration. While not all feedback will result in an update to the handbook, we definitely want to hear everyone's opinion.
You can edit the page directly, and submit your feedback/suggested changes as a Pull Request (PR). PRs go through the same cycle of feedback and iteration. The only difference is that an issue is not an immediate change and may take longer to action. A PR already contains the changes, and has a quicker turnaround time. Learn how to update this handbook through GitHub for detailed steps.
Below is a work-in-progress list of key documents and channels at Mattermost. The symbol *
indicates material internal to Mattermost staff.
Our vision is becoming the leading solution for developer collaboration through an integrated suite of open core tools that accelerate developer productivity, increase software service levels, and raise workplace satisfaction among technical teams.
As the world moves more digital and remote, technical organizations face mounting challenges: stagnating productivity, increasing exposure to outages and service-level degradations, and declining workplace satisfaction leading to staffing churn and expanding talent gaps.
We solve these issues for customers by developing and delivering an open, flexible, developer-focused collaboration suite competing against both point solutions (Slack, Asana/Trello/Notion, WebEx/Zoom/Loom, RunDeck/Transposit/Firehydrant, Confluence/GitHuge Pages) and general-purpose collaboration suites (Microsoft Teams/Office, G Suite).
We deliver our solutions through an open core, product-led growth motion with freemium offerings that flow into usage and conversion from free-to-paid supported by Mattermost champions in customer accounts, frictionless self-serve purchase experience on both cloud and self-hosted instances, and both direct fulfillment and channel-based fulfillment depending on customer preferences and our ability to provide regional support. This motion is accelerated through our BDR and field sales motions with warm outbound into our freemium install base, plus cold outbound into named enterprise accounts driving awareness of the ROI of Mattermost solutions from like customers.
Analysts project that in 2022, over $4.5 trillion USD will be spent on IT. What portion of that investment turns into productivity and results depends entirely on how well teams of software builders and operators can effectively collaborate.
Mattermost competes in a $15B market for "developer collaboration", a segment of the broader general collaboration market focused on accelerating developer productivity through agile workflows across application development, digital operations and security operations. Our focus is serving a market of 30 million developers with an integrated, open core collaboration suite across workplace messaging, project management, incident management, real time communication, and documentation available both in cloud and as a self-hosted component of an organization's digital infrastructure.
Many of these organizations are facing three critical challenges:
Flat or declining developer productivity in post-remote environments. While many technical organizations accelerated productivity in the initial move to remote work--decreasing commute time, onsite logistics, and interruptions--many post-remote environments now suffer from gaps in clarity and alignment that in-office environments provided in the past. The context created by in-person meetings, hallway conversations, war rooms--and even by physical whiteboards and post-it notes--continues to degrade in many organizations. Digital substitutes across meeting organization, note taking, workplace messaging, incident response, and project management have exploded as point solutions. They served as life rafts during the pandemic, but the misfit of teams, tools and workflows is now becoming an overwhelming tax--copy and pasting, inconsistent formatting, unclear access controls, redundancy of information, and the breakage of flow.
Increasing complexity, vendor lock-in and outage exposure. In many organizations the acceleration to cloud has dramatically increased vendor-dependency, data lock-in, and exposure to the business disruption. In some cases, there is risk of both a company’s technical infrastructure and online collaboration tools going down at the same time when they are outsourced to the same vendor, or share dependencies--especially cloud dependencies. These risks may be dramatically heightened with remote work if incident response teams don’t have either a secure physical location to work on mitigations, or online collaboration tools independent of the underlying outage. Moreover, as cloud vendors control more and more of their customer’s data and operations, businesses have fewer options to hold vendors accountable.
Gaps in workplace satisfaction for technical talent. Acceleration in remote hiring coupled with a surge in global demand has made staffing developer organizations an unprecedented challenge. Workplace satisfaction is now more important than ever as a leading indicator of organizational success. Satisfaction includes both conceptual factors, such as opportunities for impact, connection and growth, and concrete factors such as the technologies and tools teams get to operate. Winning on workplace satisfaction in conceptual and concrete factors is a leading indicator of meeting the capacity needs of digital operations organizations, which is a leading factor to market relevance.
Mattermost uses a buyer-based open core business model to deliver a high trust, self-managed messaging platform for developers and high security end users. We develop a portfolio of offerings at different price points (including free/open source) that align to the needs and budgets of different buyers.
The free/open source version of Mattermost is built for developers as an innovative, flexible, high trust collaboration platform that accelerates the productivity and agile workflows of a tight-knit team, and includes the following capabilities:
(Workplace Messaging) - An open source alternative to Slack, with Slack-compatible keyboard shortcuts and Slack-compatible webhooks, along with a layered extensibility model ranging from plug-ins to custom applications.
(Work Management) - An open source alternative to Trello, Notion, Asana, Jira and Todoist, deeply integrated with Channels, with the ability to import from other systems, to use and create custom templates and workflows, and to integrate deeply with the rest of the Mattermost collaboration platform.
(Incident Management) - An open source alternative to Rundeck, Firehydrant, Transposit, and other incident management solutions for standardizing and running incident management escalations, remediations, and timeline-based retrospectives deeply integrated with access controls and real-time workplace messaging and notification experiences on the Mattermost platform.
For our self-hosting community, we have an open source Mattermost Team Edition available as a Linux Binary under MIT license that deploys with MySQL or PostgreSQL and optionally a web-proxy such as NGNIX. There's a single-node local machine "Preview" mode you can use to try out the features using Docker, along with a streamlined omnibus version you can use to get a production system up and running quickly on an Ubuntu-compatible Linux distribution.
For our cloud community, our "Free" offering is currently a hosted version of the open source Mattermost Team Edition available on demand from Mattermost.com with unlimited users and a flat rate hosting cost of $149/year. While the software is free, we currently do need to pay for hosting costs in this cloud offering, however we also have plans to provide a fully free offering in future subsidized by revenues from paid versions of Mattermost through our open core model.
Our entry-level paid version, Mattermost Professional, is built for team managers - commonly managers of managers - who need additional controls and workflows specific to multi-team coordination. This version can be purchased via self-service, through resellers, or - for accounts over a certain size in certain territories - transacted through our sales team.
As usage of Mattermost grows, we have a high scale edition, Mattermost Enterprise, providing enterprise compliance features and high scale support, including self-managed, multi-node, high availability configurations.
Our customer journey starts developers and IT admins seeking better collaboration tools for themselves and their teams. They may have used Mattermost personally, or in a previous role, or heard about the product through word of mouth, review sites, or discovered Mattermost through web search.
They discover, download, and install Mattermost using a deployment guide. Over time, as the number of users grows beyond a single team, typically an IT administrator will be interested in the user management and access control features in Mattermost Professional, and be interested in getting a 30-day trial version license key to upgrade to Mattermost E0 and activate the trial key.
A subscription license to Mattermost Professional can be purchased online through our self-serve process, through a channel partner, or by contacting a member of the Mattermost sales team assigned to the territory.
As the deployment of Mattermost grows within an organization, typically past 250 or 500 users, the customer's procurement organization may be interested in advanced features and customization available in our Mattermost Enterprise offering.
For Mattermost Professional, we have self-serve options to purchasing subscription licenses by credit card.
We're focused on a number of sales motions to turn leads and prospects into customers.
Prospect comes to us to buy. In this motion, developers or a System Admin deploys the open source or cloud free version of Mattermost, adopts its usage, and realizes value for a small group (~20 for cloud and 5-25 for self-hosted). When they want to scale usage beyond 25 and need administrative features like user management, SAML SSO, and the champion contacts IT and procurement to purchase. IT or procurement contacts Mattermost and is directed to the sales team to discuss a purchase, ask for volume discounting, answer security, compliance or technical questions, and/or negotiate MSA terms on their way to a purchase.
In the meeting, Mattermost AE probes to get a detailed understanding of the customer’s situation and needs using a MEDPPICC framework, and works with the prospect’s IT, procurement, champion, economic buyer and other stakeholders to help the customer envision their success with Mattermost, complete an initial purchase, and set up the account for success in the post-purchase journey.
Key Input: This process often begins with a Marketing Qualified Lead ("MQL") of a certain type (pricing quotation or "Contact Us" request) indicating a "hand held high" level of interest in a purchase, and a work email which can be used to determine the organization from which the MQL originates and can be used to identify the correct member of the sales team to lead and execute on our process based on territory and industry assignments.
This process can also begin with a Product Qualified Lead ("PQL") which is a type of MQL (has work email and can be mapped to a sales person) that has an indication of product adoption and ideally trial activation. In-product trial requests are an example of PQLs that can be used as a starting point for sales to accelerate this motion.
Similar to Champion-Led Inbound Direct journey except prospect buys through a channel partner rather than working with our sales team directly. In some cases we don’t have MEDPPICC information nor relationships with the key stakeholders at the accounts, and need to build up that context in order to properly connect with the account.
Key input: The inputs for this motion are the same as for "Champion-Led Inbound Direct" (above) with the exception that PQLs and MQLs may be shared by our sales team with a channel partner, who may have relationships (e.g. vendor agreement with a prospect) or capabilities (e.g. speaking languages that the Mattermost field doesn't) that we don't have.
Identifying organizations where the free version of Mattermost is used, contacting people who didn’t reach out to us, and selling our way to close a new customer.
In this journey, the Mattermost sales team, either BDR or AE depending on region and segment, identifies an account where someone seems to be running the open source version of Mattermost (through webchat, contact requests, E0 download data, cloud trials, enterprise trials, noticing “Mattermost” skillsets in LinkedIn profiles, etc.), identifies potential contacts (using ZoomInfo, LeadIQ/LinkedIn Sales Navigator, Demandbase and other resources), and outbounds (via email, LinkedIn, and social media) to different personas in the target organization to eventually connect with Mattermost champions, and for the AE to share the vision, benefits, use cases, ROI, and case studies of our commercial offerings, along with technical pre-sales support, and guide the prospect into becoming a customer.
Key input: The minimum input is a Marketing Qualified Lead ("MQL") with a work email (so organization can be identified and the right sales person assigned), indications of early interest in Mattermost (e.g. newsletter sign-up, unactivated trial request, etc.), and product usage in some form (after MQL identifies the organization, sales can review public information like LinkedIn bios, blog posts, social shares from company employees, open source contributions, etc.).
In an outbound motion the intent is to reach multiple people in an organization, not just the person taking an MQL-creating action, so that marketing and sales resources can be applied to accelerating early interest into envision and unlocking value into purchase and expansion decisions.
Selling into organizations that aren’t known to be using Mattermost but who are similar to existing Mattermost customers and could potentially benefit from our offerings, and potentially showed early interest.
This starts with BDRs and AEs focusing on a list of organizations - ”Named accounts” - that aren’t known to use Mattermost, but are similar to existing customers who benefit from Mattermost, finding and contacting the right people at the organization to share about the ROI and benefits of Mattermost solutions, getting meetings, and getting agreement to run a trial to prove that Mattermost would solve the issues the prospect is facing, running the trial with technical pre-sales support, and closing customers who can understand the vision for how Mattermost solves their urgent needs, with a proof of value in the trial to validate the purchase they are making.
Key input: Cold outbound can be started with just a list of "Named Accounts" that we believe would have similar needs and buying patterns as existing Mattermost customers. Ideally there are also MQLs similar to "Sales-Led Warm Outbound" though without the requirement of free usage to start this process.
In some countries/regions, channel partners may execute Sales-Led outbound motions in partnership with our sales teams. This motion can be particularly additive in countries/regions and organizations with languages and culture that can’t yet be supported with our internal sales organization, or to reach the existing customer base of a channel partner who are likely to have similar needs to existing Mattermost customers and likely to buy (e.g. Carahsoft/FedResults).
Key input: The key input for a channel partner is training, enablement and on-going support on how to idenitify and call on high potential existing customers to consider, evaluate and purchase Mattermost offerings.
This motion is not yet broadly used, as the majority of channel activity is currently from "Champion-Led Inbound Channel" (described above).
We use the acronym "TACTICAL" to summarize the approach to maintaining differentiation of the paid version of our offerings to offerings a competitor may create from our open source code base:
Test infrastructure: We use SaaS QA which isn't included in the open source version.
Alignment: Developer features are free. Paid features are for managers and IT pros, who are less likely to spend time and effort forking and maintaining an open source project vs. deploying budgets to purchase paid features.
Core committers: We work with an active community of core committers to keep the project and business in sync.
Threat intelligence: Mattermost's responsible disclosure policy means forks will lag in threat intelligence.
Innovation: Regular ship cycles and high velocity innovation rapidly lower the value of forks.
Compatibility: Only genuine versions upgrade smoothly to new releases and security patches.
Architecture: Modular architecture makes the need to fork rare.
Licensing: Mattermost's trademark is registered internationally, forking requires renaming.
Mindsets are “tool sets for the mind” that help us find blindspots and increase performance in specific situations. They’re a reflection of our shared learnings and culture in the Mattermost community and at Mattermost Inc.
To make the most out of mindsets, remember:
Mindsets are tools: Use common sense to find the right mindset for your situation. Avoid using ones that don’t fit.
Mindsets are temporary: Try on a mindset the way you’d try a tool. You can always put it down if it doesn’t work.
Mindsets are not laws: Mindsets are situation-specific, not universal. Don’t use them to debate.
When you read about great leaders, they share mindsets relevant to success in their specific situations, which differ from their peers. Remember that “advice is personal experience generalized” so be mindful about what you apply.
In this context, here are mindsets for Mattermost:
Learn a new topic quickly, develop mastery (be the smartest person at the team/company/community on the topic), then teach it to someone who will start the cycle over.
The best teachers can speed colleagues to surpass them. This mindset helps us constantly grow and rotate into new roles, while preventing single-points of failure where only one person is qualified for a certain task.
Rushing to get something done can create confusion, errors, and/or (paradoxically) delays.
When you feel rushed, consider slowing down and taking a moment to ask: What would it look like for this project to be running smoothly?
If you're running a collaborative project, consider:
Are the people I'm working with clear on the intent of this project or workflow?
Is everyone clear on who needs to do what?
Are we aligned on the measures that signal if our work is a success?
Getting to a "Yes" on these three questions can smooth out your process, and move things faster.
Use the simplest and most boring solution to solve problems.
The speed of innovation for our organization and product is constrained by the total complexity we have added so far, so every little reduction in complexity helps. Don’t pick an interesting technology or methodology just to make your work more fun; using established and proven tech and processes that best match our needs to ensure a more stable and more familiar experience for you and other contributors.
When facing a high impact problem without a simple and obvious solution, focus your time on:
Understanding the problem you're solving.
Understanding how others have solved the same problem in an enduring way.
What vital changes, if any, are needed to apply a proven solution that works.
More: Read GitLab's boring solutions mindset and Dan McKinley's blog post on choosing boring technology.
Consider when rational people disagree, the cause often comes from one of three areas: emotion, assumption, and priority. Understanding the underlying difference in thinking can help us get to agreement faster:
Emotion: Is there a strong emotion biasing the discussion? Talking through that emotion can often solve an issue. It’s okay to have emotions. We're humans, not robots.
Assumption: People may have different underlying assumptions (including definitions). Try to understand each other’s assumptions and get to agreement or facts when you can.
Priorities: Finally, people can have different priorities. When everyone’s priorities are shared and understood it’s easier to find solutions that satisfy everyone’s criteria.
While the emotions, assumptions, priority mindset won’t work for everyone in every case, it’s helped resolve complex decisions in our company’s history.
An easy way to check in with team members about how things are going.
What do you like about how things are going?
What do you wish we might change?
Use these one-on-one or in a group as a way to open conversations about what to keep and what to change in how we do things.
Being clear on expectations when asking for someone’s review can help speed and smooth the process. In this mindset, there are three types of review:
1% Draft: Completely open to ideas and changes in direction. Rework is inexpensive.
50% Draft: Half complete work. There is structure, but also a lot of room for change. Some rework is inexpensive, some is expensive.
99% Draft: Nearly completed work. Rework at this point is very expensive.
When a new owner takes over a process or a project from a previous owner, there are a finite number of “blindspots” of which the original owner is aware and the new owner will need to understand.
Using the analogy of changing lanes while driving a vehicle and learning to do a “shoulder check” for information that is not visible from standard controls, we have a process for the new owner and previous owner to jointly review processes until the transfer is complete.
This process is similar to Mini-boss, End-boss, except that the mini-boss is also the new owner of a process, and not only a reviewer. Shoulder checks should be requested by new owners to avoid “crashing”:
Making changes to systems that break existing processes may lose data and hurt the productivity of others downstream without notice and without a replacement system in place (behavior known as “Dead Tarzan”).
Repeatedly investing in mis-prioritized projects due to a misunderstanding of requirements from project stakeholders and insufficient confirmation of intended outcomes.
Even when not crashing, as part of our Self Awareness leadership principle, top team members will constantly be seeking feedback and review from people around the company.
A “brown M&M” is a mistake that could either signal dangerous oversights in the execution of a project, or be a completely innocuous and unimportant error. When a brown M&M is found, aim to rule out a dangerous error as quickly as possible. Do fast drilldowns and systematic checks to see if more brown M&Ms are found, and if so, an entire project may need to be reviewed.
Examples of brown M&Ms may include:
Significant mistakes in process, consistency or documentation suggesting lack of review or lack of understanding of the pre-existing system.
Ambiguous definitions that would make completion of a procedure difficult or unpredictable.
The name "brown M&M" comes from a safety technique used by the American music band Van Halen, who had to set up large, complex concert stages in third tier cities, where few local workers had experience with the safety standards vital to construction. In the contract rider with each venue, Van Halen required a bowl of M&M candies with all brown M&Ms removed. Failure to provide the bowl was grounds for Van Halen’s stage crew to inspect all of the local vendor’s work for safety issues, because it meant the vendor had not paid attention to detail, and safety could be at risk.
When making project investment decisions, we optimize for high impact in the context of customer obsession, empowered by ownership, while being constrained by “be proud of what you build”.
The failure case is over-investing in processes and infrastructure, stealing mana from higher priority work, reducing speed and agility for the company and unnecessarily increasing cost and bureaucracy.
The objective of optimization is to invest at minimal levels for efficiency and safety while maximizing impact.
In making these trade-offs, consider the following mindsets:
Correct Minimum 1: Medic
Safely fix something that is important, broken, and dangerous as fast as possible. Speed is critical - don't worry about “leaving a scar” on our architecture or business process, just own it and get it done. Solve the problem, do not overbuild.
Example: Something incorrect on our public website with more than 100 page views a month should be fixed immediately and not delayed to be done with a longer-term project, such as a website redesign. If the staging server cannot be pushed, this means manually fixing production and duplicating that change on staging, rather than trying to fix staging.
Correct Minimum 2: Field Surgeon
Triage tasks that are important and broken but not dangerous, and fix the most important things with a minimum time and cost. Scarring should be a low-priority consideration – it's fine to leave scars and it's fine to spend a little energy to avoid big ones. Solve the problem for the next stage of growth, but don’t solve it in two to three stages ahead.
Example: In Mattermost, spend 2 mana to enable automated messages over 4000 characters to be broken into multiple posts instead of being rejected, which is a problem every developer hits when they attempt to output log information via
curl
commands.
Correct Minimum 3: Plastic Surgeon
Fix and optimize critical, high volume flows in our customer experience and product with heavy investment if needed to make high impact changes. Scars can be avoided and removed to produce a high impact result.
Example: Click-tracking traffic on about.mattermost.com and optimizing flows to direct visitors to learn about the product and downloading it is a flow that should be continually optimized.
After completing the initial draft of a project, there may often be more than one reviewer to approve changes. This may be for different disciplines to review the work (for example, both development and design teams reviewing code changes to the user experience) and it may also be for reviewers with different levels of experience to share feedback.
When reviewing significant user interface changes, code changes, responses to community or customers, or changes to systems or marketing material changes, it is ideal to have at least two reviewers:
Mini-boss: Reviewer less experienced in domain or Mattermost standards for the first review.
End-boss: Reviewer more experienced in domain or Mattermost standards for the final review for the discipline (e.g. development, design, documentation, etc.).
This system has several benefits:
The Mini-boss provides feedback on the most obvious issues, allowing the End-boss to focus on nuanced issues the Mini-boss didn’t find.
The Mini-boss learns from the End-boss feedback, understanding what was missed, and becoming a better reviewer.
Eventually the Mini-boss will be as skilled at reviewing as the End-boss, who will have nothing further to add after the Mini-boss review. At this point, the Mini-boss becomes an End-boss, ready to train a new Mini-boss.
The naming of this term comes from video games, where a person submitting material for review must pass a “mini-boss” challenge before a “end-boss” challenge for different disciplines.
When we make important decisions quickly it's important to run at least a lightweight analysis to identify blindspots that could put success at risk. "Savoring surprises" means discussing unexpected findings from an analysis and understanding root cause in order to de-risk our original plan and/or find new opportunities.
Example: In our early days, just months after launching our first commercial product Mattermost had a product roadmap for security and DevOps features that was vetted by customer roadmap reviews. We "savored the surprise" that custom emojis (which we assumed was a vanity feature to be cut) was highly important to support legacy processes that used them to communicate different outcomes of an automated process, like a build break. The surprise made our roadmap more valuable and effective.
A good analysis will result in surprises uncovering blindspots. An analysis that has no surprises is a surprise in itself and the blindspot should be determined. Did the analysis use the right data and methodology? Was it free from the unconscious or conscious bias of someone influential?
More: Watch Scott Cook's talk on savoring surprises.
When practical, projects and decision-making should be run at the lowest possible level of the organization, by people who are closest to the facts and data.
When a project is complex and involves many stakeholders, a different approach may be needed. We use a RAPID framework for complex, multi-stakeholder projects where clarity in the roles of stakeholders is vital.
RAPID is an acronym for the five different roles a stakeholder might be asked to take on in a complex project: Recommend, Agree, Perform, Input, Decide.
Each stakeholder can take on one or more roles:
R
Recommend
Recommend a decision or action
A
Agree
Formally agree with decision. Views - especially Obstacles - should be documented in final proposal shared
P
Perform
Accountable for executing the decision once made
I
Input
Provide input to a recommendation. Views may or may not be included in final proposal
D
Decide
Make the decision and commit the organization to action
More: RAPID framework from Bain Consulting.
The following lists current terms actively used at Mattermost. You can also see Tombstoned Terms for terms that have either been modified or deprecated. We use Tombstoned Terms to preserve links to previous definitions so clarity is maintained.
We use “x/5” to concisely communicate conviction. 0/5 means you don’t have a strong opinion, you are just sharing an idea or asking a question. 5/5 means you are highly confident and would stake your reputation on the opinion you’re expressing.
Example: "0/5, I think before archiving a channel a user should type in the name of the channel to make sure they really want to do it" expresses low conviction and indifference in the suggestion. The decision maker should feel free to ignore the input. As another example: "4/5, I think before archiving a channel a user should type in the name of the channel to make sure they really want to do it" expresses high conviction and the decision maker may want to ask more questions to understand whether emotion, assumption, or priority is behind the feedback.
We try not to use the term "best practice" at Mattermost, as it's counter-cultural to our focus on iteration, self-awareness, and earn trust. Iteration means there is always opportunity to grow and improve and so we never reach our "best".
Refers to both an As Appropriate interview as well as the As Appropriate interviewer. Final interview required before making a decision on a new hire.
Area Of Responsibility defines the area for which a DRI is accountable. The AOR page provides information on AORs across the company.
Annual Recurring Revenue (“ARR”) is a measurement for time-limited subscription contracts. ARR normalizes contracted recurring revenue into a one year period to allow for like-kind comparisons between contracts that have differing start/end dates and/or different contract lengths. In a recurring revenue model, ARR represents the anticipated total revenue from all active contracts for the future 12 months from any measurement period. “Active” is defined as starting from customer contract signing date, not subscription start date. ARR does not include revenue from non-recurring items such as one-time setup fees or professional services.
For example, total ARR from 3 separate customers would be as follows:
Customer A: 6-month contract totaling $60,000. ARR = $120,000 ($60,000/6 * 12) Customer B: 12-month contract totaling $240,000. ARR = $240,000 Customer C: 15-month contract totaling $45,000. ARR = $36,000 ($45,000/15 * 12) Total ARR for Company = $396,000 ($120,000 + $240,000 + $36,000)
The ARR associated with sales transactions closed during the period. Note that Bookings and Billings are different, particularly for pro-rated contracts and multi-year contracts. Billings corresponds to the amount the customer is invoiced.
For example, Customer A signs a 3 year paid upfront transaction for $300,000. For Customer A, the bookings amount would be $100,000 ($300,000/3 years = ARR of $100,000) and the billings amount would be $300,000 (what we actually invoiced the customer at time of order signing). Customer B has a contract for 100 licenses at $50/year/license for 12 months, for total ARR of $5,000. They decide to add 25 more licenses after 4 months. For Customer B, the bookings amount would be $1,250 (25 * $50/year) and the billings amount would be $833.33 (25 * $50/year * 8 remaining months/12 months total contract).
An obvious error in Mattermost software that is typically a code defect. Changes required to accommodate unsupported third-party software (such as browsers or operating systems) are not considered bugs - they are considered improvements.
Contract Accountability Owner is a DRI for ensuring a contract meets our guidelines and standards ahead of final approval by a company signatory. Also see listing of CAOs.
When an existing customer completely cancels and is no longer a continuing customer. Dollar value of ARR is $0 after the reduction.
COM is short for Customer Obsession Meeting, which is our “All Hands” meeting focused on how we’re aligning the company to serve our customers.
When an existing customer decreases the dollar value of their ARR, either by decreasing the number of licenses, decreasing the number of products and/or the discounting being applied is increased. Note that the decrease is classified as “contraction” if there is still some amount of ARR remaining after the reduction.
Because the term "country" may be either controversial or incorrect when describing a geographic area governed by a state-like political entity we use the term "country/region" to avoid any accidental or implied judgement on the independence of a region. If the term "country" appears to be incorrectly used, when "country/region" is more appropriate, please contact info@mattermost.com.
Collapsed Reply Threads (CRT) is a Mattermost Messaging feature available in beta offering an enhanced experience for users communicating in threads and replying to messages. When enabled, Collapsed Reply Threads improve users’ ability to process channel content, find, follow, and resume conversations more easily, and keep threaded conversations focused. See our Organizing Conversations using Collapsed Reply Threads (Beta) product documentation for details.
Core committers are staff or community developers with the responsibility to contribute and review Mattermost source code.
Customer Success Management function at Mattermost responsible for retaining customer revenue, with quarterly & annual targets, including customer relationship management, executive relationships, and quarterly business reviews.
The primary external audience we are focused on for an initiative, which could be an end user without budget (if our goal is adoption and engagement) or a buyer (if our objective for the initiative is revenue). A customer does not include internal staff, since staff are not external.
The act of using non-web-discoverable formats (Mattermost channels requiring login, Google docs that aren't web searchable, Zoom call, email, etc.) to share non-confidential information or processes.
Example: Giving someone instructions on how to set up Okta for MFA on the community server in a DM rather than writing it into a handbook entry for all new staff to use and re-use.
Dark actions create false openness. Open actions are highly preferred.
Deployment Engineering function at Mattermost responsible for accelerating seats deployed at $50K+ accounts, focusing on single customer pain points & needs by working directly with customers in partnership with post-sales and revenue retention teams, and providing expertise on how to run and deploy Mattermost and the platform as a whole.
Discarding an imperfect solution without a clearly thought out and working alternative. Based on idea of Tarzan of the Jungle letting go of a vine without having a new vine to swing to.
A term for shipping something that is far below quality standards. This term is used by mountain climbers to describe falling off the side of a mountain, which often involves a series of failures, not just one.
A specific type of mana for developers similar to “points” or “jelly beans” in an Agile/Scrum methodology. On average, full time Mattermost developers each complete tickets adding up to approximately 28 mana per week. A “small” item is 2 mana, a “medium” is 4, a “large” is 8, and any project bigger needs to be broken down into smaller tickets.
Directly Responsible Individual means a human individual who is accountable for a given Area Of Responsibility. A DRI is a single person, not a group of people. If there is a shift schedule, define each shift as a separate AOR (e.g. Tier 2 Mobile Support Escalations Weekdays 8am to 5pm Palo Alto time). If you are unsure who is the DRI, make the AOR more specific until the DRI is clear.
“Edge Release”, a version of Mattermost which indicates the latest unstable release off of the main branch.
“Extended Support Release”, a version of Mattermost maintained for a longer period of time that will receive security fixes.
When an existing customer increases the dollar value of their ARR, either by adding licenses, adding additional products and/or reducing the discount being applied.
Expert Mode (also known as "Crimson Force Field") is when documentation or on-screen text is written for someone with considerable knowledge or expertise, instead of being designed for a new learner. In general, try to state things simply rather than speaking to just the “experts” reading the text.
If something is extremely difficult to understand, and yet still justified in the mind of the writer, we call it “Crimson Force Field”. This term is intended to evoke the emotional response of coming across something that is difficult to understand, so writers of Crimson Force Field material can empathize with the readers. Crimson Force Field is drawn from an esoteric episode of Star Trek and it is unlikely anyone but the originator of the term understands its complete meaning. Crimson Force Field is itself Crimson Force Field.
Keeping non-sensitive information that would be helpful for staff and community to know out of public web search through the use of dark actions. Often false openness is unintentional, though after staff members are educated on the topic and empowered to use open actions, continued use of dark actions would appear to be deliberate.
Fast Futures function at Mattermost responsible for prototyping and validating enterprise customer needs ahead of product engineering investment, which was the approach applied to Calls, MS Teams and OpenOps prior to adding the functionality to the mainstream roadmap.
A status update format that is split into three categories: Going Well, Not Going Well, Next Actions. Read more about GNNs here.
A measurement to determine sales efficiency. The GM-Weighted Magic Number is determined by taking the Net Change in ARR for the Period (or New Logo & Expansion ARR in the period less Churn & Contraction) times the Gross Margin percentage, divided by total Sales & Marketing spend in the prior period. This metric attempts to quantify how much Sales & Marketing spend is required to generate ARR.
Gross Margin is determined by taking Revenue less Cost of Goods Sold (“COGS” or “COS”). COGS or COS are the direct costs associated with delivering the product or service to existing customers (e.g. cost of Success, Support, hosting costs, etc.). Gross Margin % is calculated by taking Gross Margin and dividing by Revenue.
A measurement that attempts to quantify how well a company retains its existing customers. Gross Revenue Retention (“GRR”) is calculated by taking Beginning Balance ARR less Churn/Contraction and dividing by Beginning Balance ARR. Because both New Logo ARR and Expansion ARR are excluded from this calculation, this value cannot exceed 100%.
Help Wanted tickets, which are vetted changes to the source code open for community contributions.
A beneficial change to code that is not fixing a bug.
Iteration means being able to quickly improve on something by shipping a minimally viable change in how we do things. It's the opposite of the "wait, wait, wait, ship" method we call the Windows Vista Approach.
“Latest Release”, a version of Mattermost which indicates the latest stable release.
The “Left-Hand Sidebar” in the Mattermost team site, used for navigation.
Countries and regions outside the United States are referred to as "majority regions". We use this term for a few reasons, a) we use the word "majority" to remind everyone that the ~300M United States are only a tiny fraction (<5%) of the world's 7 billion people (many American companies refer to the U.S. as "domestic" and the rest of the world as "international" which is counter to the inclusive culture at Mattermost), b) we use "regions" instead of "countries" because there are political issues with some locations.
For example, we should always refer to Taiwan as a "region" and not a "country" due to geo-political issues.
An estimate of total energy, attention and effort required for a task - not a measure of amount of code to be changed or cumulative time needed for a change.
A one-line change to code can cost more mana than a 100-line change due to risk and the need for documentation, testing, support, and all the other activities needed.
Every code change added has an initial and on-going mana cost in technical debt, test case coverages, and supportability, which is taken into account in feature decisions.
The “Monthly Business Review”, where senior leadership team and department heads work with functional leaders to clear escalations, make key decisions & have concrete next steps for the next review period.
The “Mattermost Leadership Team”, senior leadership team and department heads working with the CEO in MLT meetings and offsites.
A customer that is any Midmarket ("MM") or Enterprise ("E") organization, including public sector, with 2,500 employees or more, buying a Mattermost subscription that's not on a non-profit or educational discount.
Monthly Operating Review. A monthly review of operations from each department including a GNN and metrics.
A Marketing Qualified Lead refers to a prospect deemed to have a higher likelihood of becoming a paying customer based on their marketing activities, e.g. certain website activities (content downloads, etc), trial activations, demo or quote requests, and more.
A measurement that attempts to quantify the ability to both retain and grow our existing customers. Net Dollar Retention (“NDR” or Net Revenue Retention “NRR”) is calculated by taking Beginning Balance ARR + Expansion ARR - Churn/Contraction and dividing by Beginning Balance ARR. Because NDR includes the impact of Expansion ARR, this value can exceed 100%. NDR does not include the impact of New Logo ARR. This measurement is typically favored by investors.
Both GRR and NDR are typically presented on an annual basis, using a static Beginning Balance at the beginning of the year. For annual presentation, this number represents total Churn/Contraction for the year divided by the beginning balance of ARR at the start of the year. For mid-year discussion and presentation, this number represents total Churn/Contraction for the period (e.g. first half) divided by the beginning balance of ARR at the start of the year. It is important to note that annual churn will naturally present lower than mid-year churn, using this method, due to the fact that the numerator is changing but the denominator is not.
Nerfs and buffs are the framework for setting culture at Mattermost.
A "nerf" is a downgraded experience as the result of a behavior.
For example, if half of a team is traveling to a conference and holds a team meeting in a hotel room and the other half calls in remotely but they can't see everyone in the room and audio is low quality, then the team is "nerfing" their remote colleagues. The people in the hotel room are downgrading the experience of their remote colleagues.
Under this framework, we want to discourage behavior that nerfs remote work, so if your team is holding in-person meeting with remote colleagues, please split up to take the call from separate areas so everyone can be seen and heard.
A "buff" is an upgrade experience as the result of a behavior. If a remote team is meeting on a topic with a clear, concise written proposal requesting asynchronous feedback, people who share high-quality feedback asynchronously ahead of the meeting may have an out-sized influence on iterations of the document ahead of the meeting, compared to people who don't provide asynchronous feedback ahead of the meeting.
Here we want to buff asynchronous communication by focusing review on asynchronous comments ahead of live comments.
Culture is the set of behaviors that are nerfed and buffed. As a remote-first culture, we want to buff behavior that promotes asynchronous communication and remote work. We want to nerf behavior that creates unnecessary synchronous meetings.
A standard sale with a customer that has never previously purchased any kind of product or service from Mattermost, either directly or indirectly through a purchase by an affiliate on the customer’s behalf. A sale shall be deemed to be a New Logo Sale even if one of customer's affiliates is already a customer of Mattermost so long as (a) the entity making the purchase has never itself previously made a purchase or has had a purchase made on its behalf, and (b) the new sale is either a purchase of a license key to a new Self-Hosted server independent from other Mattermost installs or a purchase of a subscription to a new Cloud workspace independent from other Mattermost workspaces.
Term for publicly documenting information in a web-discoverable format (GitHub Issue, Staff Handbook entry, forum post, etc.) prior to sharing guidance to staff and community members. We prefer open actions to dark actions.
Product Engineering function at Mattermost responsible for the software architecture, design and development of the product focused on delivering high quality, reliably built and maintained features, systems and improvements applicable to the broad range of ideal customers.
Program Management function at Mattermost responsible for leading and executing key cross-functional programs, working with cross-departmental stakeholders to increase operational efficiency and accelerate alignment towards customer and company objectives.
Product Operations function at Mattermost responsible for infrastructure engineering and customer reliability engineering.
Paid Time Off is time away from work paid for by the company to staff, including holidays, vacations, and approved leaves of absence. See PTO.
A comparison of the actual dollar value renewed compared to the total dollar value of contracts up for renewal in the period. This measurement attempts to quantify the “success rate” of renewals scheduled in the period, and cannot exceed 100%. Unlike GRR or NDR, this measurement excludes the impact of any multi-year contracts that are not up for renewal in the period.
The “Right-Hand Sidebar” in the Mattermost team site, used for navigation.
A Sales Accepted Lead refers to a prospect that a Sales team has spoken to either in-person (e.g. tradeshow, conference, dinner), or remotely (phone call, video call), and validated the prospect has a legitimate potential to convert to a paying customer.
A Small Business Innovation Research (or SBIR) program funded by the U.S. government to accelerate technology innovation in partnership with small businesses. Funding takes the form of contracts or grants. The recipient projects must have the potential for commercialization and must meet specific U.S. government R&D needs.
The program includes Phase 1 SBIRs (concepts with no development work), Phase 2 SBIRs (development work to create a prototype with a potential for commercialization), as well as larger contracts via TACFI, STRATFI and more: https://afwerx.com/divisions/afventures/stratfi-tacfi/
Spinmint refers to our first generation of automated infrastructure to spin up test servers to evaluate pull requests. The word "spin" comes from the original name of our company, "Spinpunch, Inc." (before we became ("Mattermost, Inc.") and the word "mint" as a short, unambiguous, easy-to-spell name referring to a factory method pattern.
New test servers that use the cloud infrastructure and can be spun up on pull requests to test changes. The name is reference to first generation infrastructure, spinmint, combined with an arbitrary reference to a movie that some people saw called “John Wick”.
Standard Operating Metrics are metrics tracked monthly by each department as indicators for operating health and status.
Technical Account Management function at Mattermost responsible for retaining & expanding customer revenue, including technical adoption & bottlenecks, technical onboarding, issue coordination and escalation.
Replacing a webpage with a link to the new page created so that people using the original link can easily find the new page. An example of tombstoned terms can be found at the bottom of this page.
A reference to the major social media platforms: YouTube (“You”), Twitter (“Tweet”), LinkedIn (“In”), and Facebook (“Face”). The YouTweetInFace channel is used to discuss social media posts before asking contributors and community to engage with the content. The name is a reminder that our tone and approach to social media needs to be thoughtful, memorable, and ideally bring a smile.
Instead of working iteratively a "Windows Vista approach" attempts to ship significant changes in a complex one-time effort, which seems like a good idea at the time but ends up causing delays, wasted effort, and numerous avoidable errors.
This tempting, high risk approach is named after Microsoft’s “Windows Vista” operating system, one of its most famous examples.
Describes cloud infrastructure within AWS, where the Cloud Provisioning server, Mattermost Operator, databases, file storage, etc exist.
An installation is an instance of Mattermost, otherwise known as a Mattermost Workspace. Internally, the term Installation generally implies it is hosted inside Mattermost Cloud.
A workspace is an instance of Mattermost, otherwise known as an Installation. While it can be used interchangeably with "Installation", "Workspace" generally implies it is a self-hosted deployment.
An ambiguous term that describes an Installation (ie, Mattermost Workspace) which is hosted in Mattermost Cloud.
An Installation, hosted in Mattermost Cloud, with the necessary configurations to represent a Mattermost Cloud SaaS workspace (ie, configs, license, connections to CWS, configurability restrictions, etc) like one created from https://customers.mattermost.com
An installation, hosted in Mattermost Cloud, with the necessary configurations present to represent a self-hosted workspace (ie, configs, license, configurability, etc).
The following is a list of terms no longer used with links to their definitions or notes on their deprecation. Tombstoned Terms use H3 headings on this page to distinguish them from active terms, which are H2 in heading formatting.
Previously hyphenated, now not hyphenated, see Tombstoned.
A team and process that is ready for a key member to go on vacation, or spend time away from work.
Mattermost Leadership Team (MLT) consists of Mattermost department heads plus the CEO
This section outlines:
Introduction to MLT
The operations of administrative, tactical, and strategic meetings
Process for alignment and cascading communications
Process for quarterly business reviews, planning, and board meetings
Ian Tien: Co-Founder and CEO
Corey Hulen: Co-Founder and CTO
Kendra Niedziejko: CFO
David Reardon: Chief Revenue Officer
Nirosha Ruwan: VP, Legal
Chen-i Lim: VP, Product
Natalie Jew: VP Human Resources
Preparation for the annual plan and budget for the next fiscal year begins in the second half of the current fiscal year.
In Q3 we have three goals:
Fiscal year defining objectives for company and departments based on our latest thinking.
Product Strategy and direction for next fiscal year.
D0 & D1 Goals by MLT and MLX Directly Responsible Individual
Typically there is not pressure for budget or headcount discussions in Q3, focus is strategy.
Q3 Punchlist for Next Fiscal Year Planning
The company 3-year aspirations are reviewed
1% Next Fiscal Year Strategy and Plan are drafted
At Q3 Planning Offsite, MLT reviews Strategy and Plan for next fiscal year developed from 1% draft
Action items are documented and developed around obstacles to success of next fiscal year
Draft budget based on Strategy and Plan and financial investments required to bring plan to life
The focus of Q4 is arriving at a 99% draft of the plan for next fiscal with alignment across MLT and departments, with obstacles mitigated, and headcount and budgets reviewed.
MLT and middle managers work through key defining objectives and map out D0 and D1 goals for next fiscal year
Finance works with MLT to draft financials plan for next fiscal year
Department heads work with their teams, peer stakeholders, and CEO to develop department D2 and D3 goals.
99% department D2 & D3 goals are reviewed by MLT peers and CEO and agreed
Plan for next fiscal year
At Mattermost, we are using our mobile devices daily at work. This how-to document provides guidance on what steps you need to take when planning to migrate to a new phone.
For GSuite two-factor authentication, please follow these steps:
Select 2-Step Verification.
You'll be prompted to log in again to prove your identity.
Select Change Phone and follow the provided steps.
(Optional) If you’ve changed your phone number, update the phone number in the Google Security Center as well.
For Okta two-factor authentication, please follow these steps:
Log in with your Okta credentials and authentication code from your old mobile device. If you can't sign in, please reach out to the IT team.
Select your name in the top right and select Settings.
If the Edit Profile button appears, enter your password if prompted.
In the Security Methods section, depending on the two-factor method you're using, it will show you Remove or Set up another.
Please choose Remove to remove your old device and Set up another to add your new device and follow the instructions on the screen.
For detailed steps-by-step instruction, please go to the links below:
Andriod user : https://help.okta.com/eu/en-us/Content/Topics/end-user/ov-reset-register.htm
iOS user : https://help.okta.com/eu/en-us/Content/Topics/end-user/ov-ios-reset-register.htm
The security team will assist you in removing access from your lost mobile device to your Mattermost resources, and walk you through the set up of a new mobile device.
How Mattermost, Inc. operates as a company, and how we communicate externally and internally. Some of this information may be company confidential and may not be viewable.
Think of Channels like rooms in a building. Public channels are open rooms that people can enter and leave freely. Private channels are like private rooms that are invitation-only. Direct Messages are like popping your head into someone's private office to have a conversation. Group Direct Messages are like popping your head in to a shared office to have a discussion.
All channels can be used to communicated, some are better at specific use cases than others:
Find public channels from + > Browse Channels and join and leave based on your topics of interest. Use public channels for "open door" discussions of information relevant to everyone in the channel, for example News and Buzz is a channel to share updates on Mattermost being mentioned on social media and in press.
Use private channels to collaborate on work that would benefit from privacy, and not appropriate for an "open door" discussion. For example, planning manager training, organizing our next MatterCon conference, procurement processes where financial data could be shared, launch planning activities (which can be fast changing and confusing if shared ahead of launch).
Use direct messages (or "DMs") to send quick notes to someone to get their attention, like "Running late" or "Can you comment on this ticket? [Link]". Avoid using DMs for collaborative work, as it's difficult to share context from a DM discussion with others--use Boards or group channels instead.
Use group direct messages (or "GDMs") very sparingly, and ideally to send only ephemeral notes to a group like "Running late" or "Please get your forecasts in by end-of-day. [Link]". Once a GDM is sent, it can be difficult for some users to find the channel again, so it's best if it's not a store of data.
Think of Boards like a project board on a giant wall, with "Tickets" that can contain all sorts of rich information. You can use Boards to managing any project--goals, tasks, interview candidates, SWAG projects--and organize things based on custom properties, like categories, status, dates, numbers and people. Here's some examples:
Think of "Playbooks" as a set of binder on a shelf with plans and procedures for different incidents and processes. Based on the type of incident or process, the context (e.g. time of day) Playbooks will include steps to follow, people to notify and automation to kick-off to rapidly flow through, resolve, and learn from different "Runs" of a Playbook. Examples include:
Think of email like a physical piece of mail you'd want to send to individuals and groups, who might forward the message to others, or reply to the original group. Examples include:
Cascading Content - If you're making an announcement across management layers and you want to give each layer and opportunity to add context to the message or choose the people to whom it's forwarded and decide on timing, then email is the best choice. For example, if you're announcing a "company day off" you want to give different managers an opportunity to customize the message as it flows through to their teams, some managers who have on-call staff might have to make accomodations (on-call people need to work, but they can choose a different day off) while another manager who's team has been working on a massive project might want to give an extra day off for their teams, etc.
Approvals - Written approvals that need to be circulated and archived are an excellent fit for email. Offer letter approvals are a good example, which need to flow through different HR and manager approval chains and ultimately archived in our HR systems.
One new topic - If you have a new topic to discuss in a small group and there's not a good public or private channel, email is an ideal way to start. Choose email over DMs and GDMs if it's an on-going conversation - but choose DMs and GDMs for urgent and ephemeral topics, e.g., "Can you approve this thing?" / "The meeting invite link is broken!", etc.
Documentation is like the policy manual for a company. As much as possible, document things publicly.
Product Documentation - docs.mattermost.com - Make product documentation as public as possible.
Operating Documentation - handbook.mattermost.com - Document our internal processes and operations.
Mattermost.com - mattermost.com - Document our customer-facing information.
Note: If you’ve lost your mobile phone, please refer to the guide.
Open .
Open .
In the event of a lost mobile device, please report it immediately to the company security team via , or via the . Make sure to include the mention "@securityteam" in your message to notify the security team.
- Mission, vision, company overview, history
- How we build software
- How we support customer deployments
- Procurement, spend, fiscal year infor, etc.
- Approvals, processes and specialist legal support
- Our security, privacy and policies around security research
- How we work at Mattermost day-to-day
FY23 Goals - For MLT and MLX, we use Boards to run our to align the company and operations around our vision for the year.
Incident Response - Join the public channel to monitor incident escalations at Mattermost, which operated based on our .
(or "AORs") map areas of ownership to ("DRIs"), Backups (people to contact when the DRI is on vacation or unavailable) with a link to a publicly shared Process Write-Up in the Mattermost Handbook, which includes questions and answers to what's been previously asked.
For security reasons, visibility of the AORs is limited to authenticated Mattermost Staff and available in our
Number of contact us requests via https://mattermost.com/contact-us.
Number of contact us requests via https://mattermost.com/contact-us from Named Accounts or Enterprises with 5,000+ employees, in America, EMEA, Australia, or Japan.
Members of the open source community with contributions to Mattermost GitHub repositories.
This does not include internal Mattermost staff
Definitions:
First Time Contributors: The first month someone contributes, they are considered a First Time Contributor that whole month.
Old Contributors: Anyone that is not a First Time Contributor.
First Contribution: The first contribution ever made by someone. Any following contributions will not be considered a First Contribution.
Examples:
Person A
2019-01-02 Contribution 1
2019-01-04 Contribution 2
2019-01-05 Contribution 3
Would count as
1 First Time Contributor + 1 First Time contribution + 2 Non First Contributions.
Customer Success Account Health Score represents the overall health of a Mattermost SFDC Account.
Account Has Open Opportunity w/ Renewal Risk Status = 'At Risk'
Account Health Score = 20%
Account Has Open Opportunity w/ Renewal Risk Status = 'Early Warning'
Account Health Score = 50%
**Note: If account has open opportunity w/renewal risk status of At Risk or Early Warning, it will override all other Healthscore metrics.
Account has a completed Customer Reference
Customer Reference Score = 10 additional bonus points
Account Has No Open Opportunity w/ Renewal Risk Status = 'At Risk or 'Early Warning'
Account Health Score = Tenure Score + License End Score + Ticket Score + Task Score
Tenure Score = 25 * Tenure Health %
Tenure Health %:
Tenure <= 0.5 Years: 10%
Tenure Between 0.5-1 Years: 50%
Tenure Between 1-2 Years: 75%
Tenure > 2 Years: 100%
License End Score = 25 * License End Health %
License End Health %:
License End <= 15 Days From Now: 10%
License End Between 16-30 Days From Now: 25%
License End Between 31-60 Days From Now: 75%
License End Between 61-90 Days From Now: 90%
License End > 90 Days From Now: 100%
Ticket Score = 25 * Ticket Health %
Ticket Health %:
Count of Tickets Past 90 Days >= 5: 25%
Count of Tickets Past 90 Days = 0: 50%
Count of Tickets Past 90 Days Between 3-4: 75%
Count of Tickets Past 90 Days Between 1-2: 100%
Task Score = 25 * Task Health %
Task Health %:
Days Since Most Recent Task >= 90: 25%
Days Since Most Recent Task Between 60-90: 50%
Days Since Most Recent Task Between 30-60: 75%
Days Since Most Recent Task <= 30: 100%
Number of successfully completed unique TE (Team Edition) + EE (Enterprise Edition) downloads by unique client IP address per month, from mattermost.com. Includes web browser and wget/curl downloads.
Note: Excludes GitLab Omnibus downloads, Docker (Dockerhub) downloads, and Bitnami or other cloud image downloads, as we don’t currently have a good way of measuring these downloads.
Monthly Enterprise Account Server Downloads
Number of Monthly Server Downloads among companies and organizations with over 5,000 employees.
New Monthly Server Downloads from Named Enterprise Accounts
The first contact or lead from a Named Enterprise Account who is attached to an Account either manually by an AE or by Marketo, and who provides a business email on mattermost.com/download after downloading the Mattermost server binary.
Excludes Salesforce account types equal to Customer or Partner.
Number of successfully completed desktop application downloads by unique client IP address per month, from mattermost.com. Includes web browser and wget / curl downloads.
Note: Excludes GitLab Omnibus downloads, Docker (Dockerhub) downloads, and Bitnami or other cloud image downloads, as we don’t currently have a good way of measuring these downloads.
Financial numbers cater to a wide range of teams. Below you will find information on ACV, TCV, and ARR. ACV, TCV, Bookings are relevant to Sales/CS and ARR relevant to Finance/CS.
What the customer bought
TCV measures revenue from across the entire contract a customer signs.
Recognized only in the Closed Won Month.
TCV = Total Contract Value
What the customer bought annualized for the first year of their contract
Recognized only in the Closed Won Month.
ACV = (Total Contract Value / (End Date - Start Date)) * 365
Standard financial term used to define how much sales credit is recognized for a deal. This is also the basis for all commission plans starting in FY21.
If term length >= 1 year, Bookings = ACV
If term length < 1 year, Bookings = TCV
Net New and Expansion only
Why would we have deals < 1 year?
True-ups
Customer owes MM 30K for Q1FY21
Booking would be 30K on the first day of Q2 (May 1)
Co-Term Renewals
Ramped Deals
Customer signs a 3 year deal on Feb 28, 2020. Year 1 = 50K, Year 2 = 100K, Year 3 = 150K
Bookings
2/28/20: 50K
2/28/21: 100K - 50K = 50K
2/28/22: 150K - 100K = 50K
What the customer bought normalized for one year length and reoccurs for length of contract.
ARR is the value of the contracted recurring revenue of your term subscriptions normalized to a one-year period.
Recognized from start to end of contract.
ARR = (Total Contract Value / (End Date - Start Date)) * 365
ARR increases and decreases based on the following categories of change:
New: Increase in ARR from $0 to > $0 & New Logo never seen before
Caused by a brand new and never before seen Account signing a contract
Expansion: Increase in ARR by an Account
Caused by seat increase, price increase, or product upgrade
Resurrection: Increase in ARR from $0 to > $0 & by a known Account
Caused by an Account churning and returning to Mattermost
Contraction: Decrease in ARR by an Account
Caused by seat decrease, price decrease, or product downgrade
Churn: Decrease in ARR from > $0 to $0 by an Account
Caused by an Account moving completely off of Mattermost
Example:
Opportunity: Example Opportunity
Close Date: 2019-05-07
Amount = $250
Start Date: 2019-06-15
End Date: 2022-06-14
Metrics Breakdown (see graph below):
ACV one-time $83 in May 2019
TCV one-time $250 in May 2019
ARR $83 from June 2019 until June 2022
All Google Analytics data in Snowflake is at a daily level. See limitations.
Organic Web Traffic is the daily unique visitors to *.mattermost.org, *.mattermost.com who originate from non-paid sources.
Organic Search Traffic is the daily unique visitors to *.mattermost.org, *.mattermost.com who originate from an organic Google search.
A Unique Pageview (UPV) aggregates pageviews that are generated by the same user during the same session. The metric combines the pageviews that are from the same person (a user in Google Analytics), on the same page, in the same session, and counts them as one.
Unique Page Views (UPV) are calculated as the daily count of distinct pageviews per user per session to view a Mattermost web property webpage (list of web properties defined in Google Analytics Accounts).
A session is a group of user interactions within a website that take place within a given time frame. A single session can contain multiple page views, events, social interactions, and ecommerce transactions. A single user can open multiple sessions. Those sessions can occur on the same day, or over several days, weeks, or months.
As soon as one session ends, there is then an opportunity to start a new session. There are two methods by which a session ends:
Time-based expiration:
After 30 minutes of inactivity.
At midnight.
Campaign change:
If a user arrives via one campaign, leaves, and then comes back via a different campaign.
mattermost.com
https://mattermost.com/ (old mattermost.com)
mattermost.org
developers.mattermost.com
integrations.mattermost.com
docs.mattermost.com
handbook.mattermost.com
licensing.mattermost.com
mattermost.gitbook.io/jira-plugin
pre-release.mattermost.com (which is old community.mattermost.com)
mattermost.zendesk.com
Stitch is used to pull Google Analytics data into Snowflake.
Stitch is only able to pull data at a daily level.
Aggregating up daily level to a monthly level causes double counting of users that may have visited the site more than one time in a given month.
WIP
Mattermost NPS data is collected using an in-product survey on servers where the User Satisfaction Survey plugin is enabled. Users answer the question "How likely are you to recommend Mattermost?" by selecting a 0-10 score and can provide additional written feedback about their experience. Selecting a score and providing feedback are optional.
Net Promoter Score is computed as (% Promoters - % Detractors) and ranges from -100 (every user is a Detractor) to +100 (every user is a Promoter).
Promoters (score 9-10): Loyal enthusiasts who will keep buying and refer others.
Passives (score 7-8): Satisfied but unenthusiastic users who are vulnerable.
Detractors (score 0-6): Unhappy users who can damage your brand.
If users edit their response to the survey on any particular server version, only the latest rating on each server version is used for computing NPS. Test server data is also removed via the excludable servers list and by trimming any responses submitted on a server version that has not been publically available for 21 days (time delay before an NPS survey is triggered after a server upgrade).
Based on the above calculation method, we can apply a time window (Quarterly Trailing NPS) and a version filter (NPS by Server Version) to represent and track the state of Mattermost NPS.
Quarterly Trailing NPS represents the NPS score computed based on survey submissions received in the last 90 days. We target a 90 day window of NPS responses because it:
Encompasses responses across all server versions that are currently in use by customers (with surveys enabled), meaning it is representative of the state of user experience that customers are facing today.
Ensures we have a statistically significant sample size representing the server versions currently in use.
Helps us capture week-to-week variations in NPS while being less volatile than NPS by server version given the larger sample size.
NPS by Server Version represents the NPS score computed based on survey submissions on a specific server version. While Quarterly Trailing NPS provides a representation of the state of user experience that our customers are facing, NPS by Server Version provides a representation of the user experience offered by the product in particular releases. As such, it's used heavily by the PM team to track the success of particular product team initiatives as they ship.
NPS by Server Version is a lagging metric since we need to collect a statistically significant sample size before reporting NPS for a server version. Based on historical data, ~2000 unique user responses (~1.5-2 months post-ship) are required for the NPS of a particular server version to stabilize.
NPS by Server Version can be volatile since it can be affected by the upgrade cadence of heavy usage servers. We typically see a surge in responses when surveys are triggered (21 days after server upgrade) for servers with large DAU, which can impact the NPS trend for that server version. Quarterly trailing NPS is not as affected by this since the sample size is larger and responses are submitted on various server versions.
Users can optionally submit written responses to the NPS survey. These responses are reviewed and categorized by the PM team to allow us to stack rank certain initiatives for roadmap planning based on their impact to NPS, reach and effort to design, implement and test.
To determine impact to NPS, we can:
Segment the reponses based on written feedback from users who are detractors or passives (See the NPS Feedback section of the NPS dashboard).
Segment the responses based on the feedback category to analyze what requested product enhancements equate to the lowest NPS scores from users.
View overall number of responses by feedback category.
Renewal Metrics in simple terms:
Available Renewals (X): Total dollar amount of licenses ending is in the Renewal Qtr
Renewal Rate (Y%): Total Won Amount ÷ Available Renewals where:
Won Opportunity License start date falls in the Renewal Qtr
Won Opportunity Product Line Type = 'Ren'
Won Amount <= Available Renewal Amount
Forecasted Renewal Rate (Z%): Won Amount + (Total Open Amount * Probability) ÷ Available Renewals where:
Won & Open Opportunity License Start Date falls in the Renewal Qtr
Won & Open Opportunity Product Line Type = 'Ren'
Won & Open Amount <= Available Renewal Amount
Target (A): Target Total Bookings set for the Renewal Qtr by Finance
Actual (B): Total Bookings Won in the Renewal Qtr where Product Line Type = 'Ren'
Target vs Actual aka TvA (C%): Actual ÷ Target
Calculation: Renewal Actual ÷ Renewal Target
Renewal Target
Target set in a given period (Mo, Qtr, FY) by Finance
Renewal Actual
Total Bookings Won in a given period (Mo, Qtr, FY) where Product Line Type = 'Ren'
Calculation: ∑ Gross Renewals ÷ ∑ Available Renewals
Available Renewals
Amount up for renewal at Account level by Qtr
Gross Renewals
Renewal amount booked (up to Available Renewal Amount) where License Start is in a given Qtr
Calculation: MIN(Available Renewals,Renewal Bookings)
Example 1:
Account: Account 1
Available Renewals Q4: $100k
Renewal Bookings Q4: $130k
Gross Renewals Q4: $100k
Example 2:
Account: Account 2
Available Renewals Q4: $100k
Renewal Bookings Q4: $70k
Gross Renewals Q4: $70k
Calculation: (∑ Gross Renewals + ∑ Forecasted Renewals) ÷ ∑ Available Renewals
Available Renewals (See Above)
Gross Renewals (See Above)
Open Renewal Amount
Renewal amount for open Opportunities where License Start is in a given Qtr
Forecasted Renewals
Open Renewal Amount * Probability + Gross Renewal Amount (up to Available Renewal Amount)
Calculation: MIN(Available Renewals,(Open Renewal Amount * Probability + Renewal Bookings)
New: Ticket created that has not been assigned a support agent.
Waiting on customer: The support agent asks the customer a question and is waiting for their response.
Waiting on customer - Do not Close: Checkbox on the ticket. This is used for tickets that are expected to be open for a long period of time. This stops the clock.
Examples include: The customer requests that the ticket remain open after a solution is provided, the customer is on vacation, or the customer is out ill.
On Hold: The support agent reaches out to an internal team and is waiting to hear back. Internal teams include Product, Development, or Customer Success. Any ticket that is tied to a Jira ticket is placed On Hold.
Solved: Support agent provides a solution to the customer. A ticket remains in a Solved status for 48 hours before it is set to Closed. While the ticket is in a Solved status any response from the customer will reopen the ticket.
Closed: If no response is recorded after 48 hours, a ticket in a Solved status will automatically be set to Closed. Any response to the ticket after that period of time will open a new ticket.
Level 1: Urgent Business Impact: Urgent issue on production system preventing business operations. A large number of users are prevented from working, and no procedural workaround is available.
Level 2: High Business Impact: Major issue on the production system severely impacting business operations.
Level 3: Normal Business Impact: Moderate issue causing a partial or non-critical loss of functionality on the production system. A small number of users are affected.
Level 4: Low Business Impact: Minor issue on non-production system or question, comment, feature request, documentation issue or other non-impacting issues.
First reply time: The duration between ticket creation and the first public agent reply on the ticket.
Next reply time: The duration between ticket's first reply time and next reply time, unless otherwise communicated.
SLAs
First Reply Time - Premium and E20 only
Premium
L1 (Urgent) - 1 hour
L2 (High) - 2 hours
L3 (Normal) - 8 hours
L4 (Low) - 24 hours
E20
L1 (Urgent) - 4 hours
L2 (High) - 8 hours
L3 (Normal) - 24 hours
L4 (Low) - next business day
Next Reply Time - Premium and E20 only
Premium
L1 (Urgent) - 2 hours
L2 (High) - 4 hours
L3 (Normal) - 24 hours
L4 (Low) - 24 hours
E20
L1 (Normal) - 4 hours
L2 (High) - 8 hours
L3 (Normal) - 24 hours
L4 (Low) - 24 hours
CSAT
CSAT stands for Customer Satisfaction Rating. 24 hours after the ticket is set to closed, the end-user receives an email asking them to rate their experience. In the email the end-user is presented with the question "How would you rate the support you received?". Below the question is the option to select "Good, I'm satisfied" or "Bad, I'm unsatisfied" with the option to leave a comment about their experience.
CSAT Formula
Good, I'm Satisfied / Good I'm Satisfied + Bad I'm Unsatisfied
TES stands for Telemetry-Enabled Servers. It is the count of unique, production servers sending telemetry (“activity") data to Mattermost on a given date. Each component of TES can be described as follows:
Telemetry Enabled:
Servers have “Error Reporting and Diagnostics” or “Security Alert” enabled in System Console.
Response to Mattermost's call to collect telemetry data recorded on a given date.
For a server to respond, it must be online and telemetry enabled.
Servers:
Servers host Mattermost instances for teams and organizations.
Each team/organization can have one-to-many servers installed to host their instance.
Small/Medium teams typically leverage a single server.
Large teams can leverage Enterprise Edition features to create server clusters that allow them to scale their instance.
TEDAS stands for Telemetry-Enabled Daily Active Servers. It is the count of unique production servers sending telemetry (“activity") data to Mattermost on a given date with at least one daily active user.
A server is considered to have a daily active user, if at least one user recorded activity on the Mattermost server, such as viewed a channel or posted a message, in the last 24 hours.
TEMAS stands for Telemetry-Enabled Monthly Active Servers. It is the count of unique production servers sending telemetry (“activity") data to Mattermost on a given date with at least one monthly active user.
A server has a monthly active user, if at least one user recorded activity on the Mattermost server in the last 30 days, such as viewed a channel or posted a message.
Note that an update to the metric is considered to only consider activity in the last 28 days to remove weekday variation. However, this change would require in-product changes and thus has not yet been prioritized.
There are several ways to view the TEDAS metric, and there are several more ways to create metrics that are derivatives of TEDAS. Below are some of the ways to view, pivot, and/or filter the TEDAS metric to gather additional insights regarding the overall health of the business:
TEDAS by First Telemetry-Enabled Date:
Provides the count of Telemetry-Enabled Servers trended by their first telemetry active date.
Is an indicator of how many New, Telemetry-Enabled Production Servers are being stood up on any given date, week, month, year, etc. throughout the history of Mattermost.
TEDAS >= 7 Days Old w/ Active Users:
The count of Telemetry-Enabled Servers that are >= 7 days old since their first telemetry active date w/ >= 1 active user logged on the server.
The rate (percentage) at which Telemetry-Enabled Servers leave the platform (churn) or disable telemetry within a given number of days since the server's first telemetry active date.
Typically (as of 4/15/20), 75-80% of new, Telemetry-Enabled Servers churn within the first 7 days of their first telemetry active date.
TES only measures the count of active production servers. The Mattermost.server_daily_details table is used to calculate TES and only contains production servers. Mattermost.server_daily_details is derived from the Events.security
table.
The Events.security
table logs all server responses to Mattermost's call to collect telemetry data. The Server type responses include test, development, and production servers. Conditional logic is used to filter out non-production servers from the Events.security
table and insert them into the Mattermost.server_daily_details table.
Logic to identify production servers within the Events.security
table is as follows:
Mattermost Version matching recognized format
version LIKE '_.%._._.%._'
Other version formats are not valid because they indicate a test, development, or custom built instance.
No "Dev Builds" and "Ran Tests" recorded
dev_build = 0
ran_tests = 0
Registered Users >= Active Users
user_count >= active_user_count
Data anomalies occur causing servers to show active users > provisioned users - these servers must be excluded.
Non-production servers
Non-production servers are not included in TES calculations. Test and development servers are non-production servers that can be spun up for testing and various other use cases.
Server Age
The age of a server is determined by the server's first active date. This is the minimum date a response to Mattermost's call to collect telemetry data is recorded. It can be thought of as the server's first recorded telemetry-enabled date -i.e. first active date. The age of the server is calculated as a function of this date. It is the days between the server's first active date, discussed above, and the current date (or other relative date being used as a comparison to calculate server age at any point throughout its lifetime).
Server Age = Current Date - Server First Active Date
There are additional data quality issues within the Events.security
table that need to be addressed before inserting the verified production servers and calculating TES, TEDAS or TEMAS. The Events.security
table is supposed to contain 1 record per server per day. This is not always the case: ~2% of server IDs have multiple rows per day. To select a single record per production server we must:
Identify the row per production server containing the maximum number of active users on the given date.
If the maximum number of active users = 0 then we select the most recently logged row based on the "hour" field value.
TEDAU stands for Telemetry-Enabled Daily Active Users. It is a metric that takes the rolling 7-day average of the sum of all "Active Users" logged by telemetry-enabled production servers on a given date. The TEDAU calculation sums the active_user_count column in the Mattermost.server_daily_details table, and then averages that value over the last 7 days.
Currently only a subset of possible events, dubbed "whitelist" events, count towards TEDAU. The reason only a subset of events are captured is a result of exceeding Segment's (third-party event logging service) row limit. In the future, event logging will transition to Rudder (another third-party event logging service), and the list of events that count towards TEDAU will become more expansive.
Deactivating a user in Mattermost will result in TEDAU decreasing, as deactivated users are filtered out of the statistic's query. However, reactivating a user in Mattermost will increase the TEDAU statistic.
TEDAU is the rolling 7-day average sum of active users for only verified production servers that are telemetry-enabled (described in this TEDAS section). All other servers, and their active user counts, are ignored as they represent testing, dev, and one-off user case environments that skew the results.
Telemetry-Enabled Active Users vs. TEDAU Metric
The distinction between an individual server's Telemetry-Enabled Active Users and the TEDAU metric is important to note. Telemetry-Enabled Active Users are the collection of users hosted by a telemetry-enabled production server, that have visited the Mattermost site in the last 24 hours. The TEDAU metric is the rolling 7-day average sum of these users across all servers.
A Server Activation is defined as the first date a production server sends telemetry data to Mattermost. In order to send telemetry data to Mattermost, a production server must be set up and activated by the end user. When a production server is first activated its telemetry feature is automatically enabled, which sends security diagnostics information to Mattermost via Segment (soon transitioning to Rudder). The server will continue to send this information on a daily basis until this telemetry feature is disabled by a Mattermost System Admin. A server activation is only captured and counted on the first telemetry-enabled date associated with a specific server.
Monthly Active Users (MAU) are users that have performed an event on or within 30 days of a given date. User events are triggered when a user interacts with the Mattermost platform from their desktop or mobile device. After a user performs an event, that user will remain in MAU for 30 days. After that time the user will fall out of MAU and be classified as "Disengaged".
Monthly active users are categorized into Engagement Lifecycle Segments. There are five engagement lifecycle segments: "Persisted", "First-Time Active", "Reengaged", "Newly Disengaged", and "Disengaged". Each segment is derived from the timeline from when a user performs an event. Each Engagement Lifecycle Segment is defined as follows:
First-Time Active: The first time a user performs an event on the Mattermost platform and is classified as a MAU.
Reengaged: A user performs an event for the first time after >= 31 days of inactivity on the Mattermost platform.
Persisted: A user that performed an event in the last 30 days that does not fall into "First-Time Active" or "Reengaged" MAU Engagement Lifecyle Segments.
Newly Disgengaged: A user, that was previously in MAU, that has not performed an event within 30 days of their last event. A user is only "Newly Disengaged" on the 31st day of inactivity.
Disengaged: A user, that was previously in MAU, that has not performed an event > 31 days of their last event. A "Newly Disengaged" user becomes "Disengaged" on their 32nd+ day of inactivity.
Server retention is calculated as Day N retention, which shows the percent of users who return to the app on a specified day after their first launch.
We do not use rolling retention, which shows the percentage of users who return to the app on a specified day or any day after that. The reason is that rolling retention continues to increase as days go by (someone who comes back to the app on day 31 will count towards day 1, day 2, up to day 31 retention).
For concrete examples, a server is included in:
day 1 retention, if there is activity 24-48 hours after server creation
day 7 retention, if there is activity 168-192 hours after server creation
day 14 retention, if there is activity 336-360 hours after server creation
day 28 retention, if there is activity 672-696 hours after server creation
All Trial Requests
Number of trial license requests via https://mattermost.com/trial.
Enterprise Trial Requests
Number of trial license requests via https://mattermost.com/trial from Named Accounts or Enterprises with 5,000+ employees, in America, EMEA, Australia, or Japan.
Note: Pull Requests for updates to this page need to be signed off by both CFO and CEO in the PR process.
Company agreements should only be signed by CEO, Ian Tien, or CFO, Kendra Niedziejko, with the following exceptions:
If you are on-site and need to sign an NDA to enter a facility you may sign such an agreement.
The following agreements may also be signed by the VP Legal, Nirosha Ruwan:
Non-Disclosure Agreements.
Data Privacy Agreements
The following agreements may also be signed by the CFO, Kendra Niedziejko.
Unmodified Order Forms where the Customer is requesting a Mattermost signature.
Vendor contracts.
Any contracts with terms that could have material impacts on financing or M&A transactions may only be signed by the CEO (e.g. non-standard liability, indemnification or inability to assign the agreement).
The following staff are approved to send contracts to be e-signed:
Lynn Conway - Primary for staff agreements
Amy Nicol - Primary for vendor contracts, consulting agreements, and corporate agreements
Nikki Johnson - Primary for sales agreements and customer supplier forms
Jeff Dynda - Approved vendor contracts from legal and customer supplier forms
Natalie Jew
E-sign request sent on weekdays before 4pm Palo Alto time should be signed by 9pm Palo Alto on the same day and if sent on a weekend signed by 9pm Palo Alto time on the following Monday provided one of the following is true:
For e-sign from Mattermost staff member: The e-sign is sent by a Mattermost staff member and must have Legal approval. E-signs sent from approved Mattermost staff are preferred since they are archived automatically in our e-sign system.
For e-sign from outside the company: The e-sign is prepared by a non-Mattermost staff member (potentially a vendor, partner or customer) and Legal approval is provided via email to Ian Tien and Amy Nicol ideally ahead of receiving the e-sign request.
Within 5 business days of the e-sign completion the contract owner or Mattermost staff submitting for signature should send Amy Nicol a link to the Box.com URL containing the fully executed signature to confirm the archiving of the contract is complete, since archiving is not automatic.
Note: E-sign requests from non-Mattermost staff are automatically filtered to a spam folder and the spam filter needs to be searched to find the request.
If the timeline is urgent, or if the e-sign isn't completed by the expected timeline please send Ian Tien and Amy Nicol a Group Direct Message on the Mattermost server to expedite.
A "wet sign" agreement requires printing and physically signing paperwork with a pen, which is required by some regulatory bodies.
Culturally, it is important we have a smooth, clear process that makes physically signing paperwork in a remote company almost as easy and error free as signing in a physical office.
Wet sign process
The wet sign process should follow the same workflow process as an e-sign process in terms of oversight and approvals, but instead of running the final e-sign a physical signing packet should be created with:
Two copies of printed paperwork to be signed.
Each should have sticker labels indicating what is needed to sign, so nothing is missed.
A pen.
Appropriate envelopes and/or UPS mailing labels to send the signed package on after it is received.
The document linked below has been created in hopes of creating a more self-serve Analytics infrastructure for product, product managers, and other employees to perform their own analysis. It provides up-to-date metric definitions, as well as Looker links to pre-filtered jumping off points for modeling the data. This documentation was presented in series of Self-Serve Analytics workshops that were hosted in early June FY22. A recording from the workshop has also been provided below for additional context.
This section outlines metric definitions maintained by finance for reporting to investors.
These are metrics for MLT discussions
Any metrics shared by a department with the MLT will be asked to work with business operations to define the metric to be listed on this page under standardized naming and MLT definition checklist
Definitions center around ARR, GMA Magic Number and NPS
MLT definitions checklist
Qualifiers precede metrics names
i.e. use ""Gross Margin Adjusted Magic Number" instead of "Magic Number, Gross Margin Adjusted" to avoid ambiguity when label names are truncated
Metric names should only have one possible interpretation
All MLT Metrics should have a unique acronym shorter than 8 characters
Metrics will inevitably be shortened, pre-emptive definition avoids collision
50% complete
New ARR: ARR from new logos signed, with license start dates in the respective period.
Expansion ARR: ARR from existing customers with a cross-sell/upsell deal, with license start dates in the respective period (e.g. increased licensed seat count, upgrading from E10 to E20).
Contraction ARR: Reduction in ARR from existing customers, but where they are still paying Mattermost based on date of license change.
Churn ARR: Reduction in ARR from an existing customer where they are no longer paying Mattermost based on the license end date.
Total ARR: Total ARR ending in a specific period.
IARR: Incremental Annual Recurring Revenue: (New ARR + Expansion ARR) - (Contraction ARR + Churn ARR)
Count of New Logos (1%): Count of new logos signed, with start dates in the respective period.
Count of Churned Logos (1%): Count of logos lost where an existing customer is no longer paying Mattermost.
50% complete
Monthly Server Downloads: Number of successfully completed unique TE + EE downloads by unique client IP address per month, from mattermost.com. Includes web browser and wget / curl downloads.
Note: Excludes GitLab Omnibus downloads, Docker (Dockerhub) downloads, and Bitnami or other cloud image downloads, as we don’t currently have a good way of measuring these downloads.
Monthly Enterprise Account Server Downloads: Number of Monthly Server Downloads among companies and organizations with over 5,000 employees.
New Monthly Server Downloads from Named Enterprise Accounts (1%): The first contact or lead from a Named Enterprise Account who were attached to an opportunity either manually by an AE or by Marketo, and who provides a business email on mattermost.com/download after downloading the Mattermost server binary. Excludes Salesforce account types equal to Customer or Partner.
TEDAS: Telemetry Enabled Daily Active Servers: _**_Number of unique servers that have “Error Reporting and Diagnostics” or “Security Alert” enabled in System Console, and send telemetry “activity data” (such as number of users).
10% complete
Total Active Users: The total number of user accounts created on a single Mattermost server. Excludes deactivated accounts, deleted accounts and bot accounts. This is also the “Total Active Users” measure shown in System Console > Site Statistics.
Registered Authorized Users: Same as Total Active Users.
Total Registered Users: The total number of user accounts created on a single Mattermost server, including deactivated and deleted accounts.
DAU: Daily Active Users: The total number of users who viewed the Mattermost site in the last 24 hours. Excludes bot accounts. This is also the “Daily Active Users” measure shown in System Console > Site Statistics.
TEDAU: Telemetry Enabled Daily Active Users: The total number of users averaged over the last 7 days, who viewed the Mattermost site in the last 24 hours from servers that have “Error Reporting and Diagnostics” or “Security Alert” enabled in System Console, and send telemetry “activity data” (such as number of users). Excludes bot accounts.
MAU: Monthly Active Users: The total number of users who viewed the Mattermost site in the last 30 days. Excludes bot accounts. This is also the “Monthly Active Users” measure shown in System Console > Site Statistics.
Active User Count: A measure of the number of active users last 24 hours. Legacy measure, do not use this for analysis or decision-making.
1% complete
GMA Magic Number: Gross Margin Adjusted Magic Number (1%): Net New ARR in a period multiplied by Gross Margin in the period, divided by total Sales & Marketing expense in prior period.
NGMA Magic Number: Non-Gross Margin Adjusted Magic Number (1%)
Gross Margin: Net sales revenue minus cost of goods sold
Net Sales Revenue:
Cost of Goods Sold:
50% complete
Organic Traffic:
Organic Web Traffic: Monthly unique visitors to *.mattermost.org, *.mattermost.com who originate from non-paid sources.
Organic Search Traffic: Monthly unique visitors to *.mattermost.org, *.mattermost.com who originate from an organic Google search.
1% complete
MQL: Marketing Qualified Lead:
PQL: Product Qualified Lead: Installed free TE/E0 version from a Target Account interested in EE features.
10% complete
90s Hiring vs Goal (P0, P1, P2): Difference between hiring plan and hires broken out by priority level (P0, P1, P2), function and time.
P0 - Roles which hiring managers have flagged as high need.
P1 (1%) - Roles which hiring managers have flagged as medium need.
P2 (1%) - Roles which hiring managers have flagged as nice-to-have.
Note: Excludes translators, integration/solution creators and QA/UX contributors, as we don’t currently have a good way of measuring these contributors.
Monthly Code Contributors: _**_Number of unique contributors in a given month who have committed at least one line of code to any of the publicly available Mattermost repositories on GitHub, excluding members in the Mattermost GitHub organization.
50% complete
End User Product NPS: The Product NPS calculated among end users only (ie. not among Team or System Admins).
System Admin Product NPS: The Product NPS calculated among System Admins only.
EE Product NPS: The Product NPS calculated among all users in licensed E10 or E20 servers only.
1% complete
Customer NPS: Customer satisfaction of the product, calculated based on single question “How likely are you to recommend Mattermost to a friend or colleague?", sent two days after booking or renewal is closed. The score is based on a -100 to 100 scale.
Support Metrics (E10 and E20): Metrics calculated based on Zendesk tickets opened by E10 and E20 customers. Tickets opened by non-subscribed organizations are not counted towards these metrics.
Tickets Created: Number of net new Zendesk tickets created.
First Response Time [Median, hours]: The median number of hours from when a ticket was opened in Zendesk to when the first response was sent to the customer.
Resolution Time [Median, hours]: The median number of hours from when a ticket was opened in Zendesk to when the ticket is resolved.
% Resolution Time >7 days: % of newly opened Zendesk tickets whose first resolution time is greater than 7 days.
% Resolution Time >14 days: % of newly opened Zendesk tickets whose first response time is greater than 14 days.
Number of CSAT Responses: # of new CSAT (Customer Satisfaction) survey responses from customers whose Zendesk ticket was resolved.
Customer Satisfaction Score: % of newly submitted CSAT survey responses who responded “Yes” to the question .
To be added.
DRI for this page is Jason Blais
This page provides processes and guidelines for publishing in our public web properties.
The goal is to have clear public web properties where it is easy to find solutions to problems or questions you have for each of our audiences:
Staff to do their work effectively.
Users (including developers, administrators and end users) and Buyers to easily adopt and purchase Mattermost.
Contributors to easily contribute to Mattermost.
Trust
Consistent experience across public sites, including brand and voice.
No inaccurate information.
No "dead ends" where the user does not have a pathway to continue.
No confidential information.
Growth
Effective self-service where anyone can find solutions to problems or questions starting from a Google search.
Scalable processes and guidelines that empower everyone to contribute.
Iteration
Iteration over completeness, with constant openness to feedback.
Below are the tentative directly responsible individuals (DRIs) and success measures for each of our audiences:
Please read the following articles to learn more:
This page provides publishing guidelines, including
Our voice is informed by our foundation as a messaging platform for Enterprise Developers and DevOps, but respects that our client base spans many types of organizations. Writing is one way we can bring Mattermost’s values to life. And above all, our voice demonstrates our deep respect for our clients and users. Ultimately, Mattermost exists because of them, so it’s important we keep their needs at the forefront of our writing style.
Mattermost's voice is:
Clear
Concise
Consistent
Customer-centric
Professional
To achieve this, we keep the following principles in mind when writing content:
Write clearly and concisely - get to the point quickly without losing valuable information
Use simple, plain language that is easy to understand and family-friendly
Avoid jargon and overly technical terminology
Use direct, casual tone instead of an informal tone
Use the active voice
Write short, active sentences and maintain a visual separation between page elements
Focus on what the target audience wants to accomplish by being practical/outcome-focused
Write for an international audience without idioms or expressions that people outside of your country/region are unlikely to understand
We generally avoid the following statements and phrases as they're overused and vague:
"Work better"
"Do better work, faster"
"Get more done in less time"
"Chat" (as a stand-alone feature reference. However it is ok to use chat when describing a benefit "Create a Jira ticket without leaving your chat window." )
"DevOps teams"
"Utilize" (instead, use “use”)
"High performance teams"
Phrases that directly praise ourselves: “We’ve built an intuitive workplace messaging solution.”, “It’s a joy to use.”
The appropriate tone differs across different mediums. We don’t write technical and help documentation with the same tone as website copy or educational content. You can vary your tone to fit the situation, just as you’d talk to an angry person with a different tone than with an excited child. Voice is to tone as climate is to weather.
The Mattermost voice remains the same, even when the tone varies.
Below is a set of guidelines on what information is considered confidential and should not be published publicly:
Financial information related to Mattermost, such as revenue and cash, as this may impact potential future funding and IPO.
Usage metrics and analysis related to Mattermost deployments (such as telemetry, trial conversions, DAU) as this may impact potential future funding and IPO.
Personal information related to staff, customers or community, including residence and full name unless otherwise publicly disclosed.
Customer information received during support or sales discussions, including customer name unless usage of Mattermost is otherwise publicly disclosed.
Open discussions about security vulnerabilities, as this may put our users at risk of security attacks.
This page is a work in progress.
Below is a summary of our public web properties, including their target content, publishing system and areas of ownership:
Below is the tentative top-level information architecture for each of the above domains, work in progress.
The handbook is developed with the following structure:
About Mattermost, including mission, vision, leadership principles, company, and history
Culture, including our remote-first culture, standards, and MatterCon
Join Us, including why to work at Mattermost and open positions
Onboarding, including guides for new staff and managers
Operations, including mindsets, cadences, metrics, and definitions
Since much software follows recognizable patterns these days, product documentation is shaped into familiar schemas. This often takes the form of product areas/topics, or common use cases.
Thus, information architecture is organized by topic or use case, such as below (exact architecture yet to be determined):
Install and Configuration
Deployment
User Management
System Administration
Account Settings and Notifications
Integrations and Plugins
RESTful API
Customization
Here, the focus is on providing learners access to content by their learning style and provides a mechanism with a currently limited scale of content. It is divided into three categories:
Guides
Videos
Courses
From here, further organization based on themes (informed by persona use cases), as content is made available.
Later, as content evolves, content may be based on particular personas and their learning paths.
A sample architecture for contributors may look like:
Contributor Process
Translations
Documentation
etc.
No information architecture is yet defined, but in general it will consist of:
Support Resources (including peer-to-peer forums)
Knowledge Base FAQs
The Mattermost website is developed with the following architecture:
Product, including features and integrations
Pricing
Solutions, including use cases
Case Studies
Resources, including training and blog
Docs, including installation and configuration
The logos below are available for use in your integrations and applications that connect to Mattermost. Use of the logo is permitted as long as it’s used in a non-commercial way and does not imply endorsement by Mattermost, Inc.
The Mattermost logomark is called "the instrument". It represents four tools that organizations need to achieve their highest priorities:
A compass for direction
A clock to set pace
A meter to measure output
A dial representing inputs — the contribution of everyone on the team
The Mattermost logo is available in vertical, horizontal, and logomark-only versions. The logo can be represented in black or white as displayed below.
Horizontal Logo: Min size 100x16px
Vertical Logo: Min size 70x39px
Logomark: Min size 16x16px
To ensure an uncluttered presentation, always maintain a full "X" space around the logo. The "X" height is always the height of the lowercase letter "m" in "Mattermost". Use the safety area as an invisible border.
Please use the Mattermost logo with care. Don’t alter the Mattermost logo in any way:
Don’t redraw the logo.
Don’t warp the shape.
Don’t recolor the logo.
Don’t apply effects.
Don’t crop the logo.
Make sure you’re using the correct version: some old and distorted versions from the past exist and should be replaced.
Using the Mattermost name is generally permitted as long as it’s used in a non-commercial way and does not imply endorsement by Mattermost, Inc.
Please do not name your integrations or apps starting with, or only using, the name "Mattermost", as this may confuse end-users as to where to find support.
Community projects might be named using "for Mattermost", examples:
Alternatively, community projects may concatenate names containing Mattermost, for example:
Exception: Please don’t use the name “matterbot”, as that is an internal service under development.
Mattermost is an open source platform for secure collaboration across the entire software development lifecycle.
Hundreds of thousands of developers around the globe trust Mattermost to increase their productivity by bringing together team communication, task and project management, and workflow orchestration into a unified platform for agile software development.
Founded in 2016, Mattermost’s open source platform powers over 800,000 workspaces worldwide with the support of over 4,000 contributors from across the developer community. The company serves over 800 customers, including Samsung, Nasdaq, SAP, European Parliament, and the United States Air Force, and is backed by world-class investors including Redpoint, YC Continuity, Battery Ventures, and S28 Capital.
To learn more, visit www.mattermost.com.
Use the for a full list of document types and threshold levels.
Enterprise Trial Requests: Number of trial license requests via from Named Accounts or Enterprises with 5,000+ employees, in America, EMEA, Australia or Japan.
Enterprise Contact Us Requests: Number of contact us requests via from Named Accounts or Enterprises with 5,000+ employees, in America, EMEA, Australia or Japan.
Monthly Active Contributors: Number of unique contributors in a given month who have posted at least one message on the Mattermost forums OR have committed at least one line of code to any of the publicly available Mattermost repositories on GitHub, including Mattermost Staff and those participating in a .
Product NPS: The product net promoter score (Product NPS) measures user satisfaction of the product, calculated based on single question “How likely are you to recommend Mattermost?”. The score is based on a -100 to 100 scale, with the _**_gathered through in-product survey.
% First Response >8 Business Hours: % of newly opened Zendesk tickets whose first response time is greater than 8 business hours as defined in .
For technical analytics definitions not covered here, see the .
Visit our for additional information and examples.
These guidelines were inspired by and .
.
By default, Mattermost defaults to for publicly documenting information in a web-discoverable format.
** We are exploring Hugo as the system of choice for documentation sites, given it supports advanced search, Markdown language, and a GitHub review process to ensure consistent quality across the site .
See a for Docs, Education, Community, and Support.
Good examples of this approach include: | |
Here, the information architecture is organized by , including users and contributors.
Platform and Solution Development, including content in
| | |
| | | |
.
You can view the .
– is a Mattermost bridge connecting with IRC
– is a Mattermost integration for sending webhook events
Audience
Owner
Success Measures
User
% visitors adopted Mattermost; content NPS
Buyer
TBD
% visitors purchased or renewed Mattermost; content NPS
Contributor
% visitors contributed to Mattermost; content NPS
Staff
% visitors successfully onboarded at Mattermost; content NPS
Domain
Content
Publishing System
Content Owner
Quality Control Owner
docs.mattermost.com
Technical product documentation for end users, administrators, and developers
Exploring Hugo with Markdown**
TBD
Technical articles, guides, videos, and courses
Exploring Hugo with Markdown**
TBD
TBD
Contributor documentation and relevant community communications
Exploring Hugo with Markdown**
TBD
Self-service support content, including knowledge-based FAQs
TBD
TBD
TBD
handbook.mattermost.com
Internal processes for company operations and recruiting
GitBook with Markdown
mattermost.com
Commercial site, including blogs, product offerings, customer case studies, and more
Wordpress
The Tech Writing team is responsible for maintaining the Mattermost Documentation site and stewarding the quality of other Mattermost knowledge and language repositories used within Mattermost products.
docs.mattermost.com
Information architecture and quality of developers.mattermost.com
In-product UI text
Mattermost Product Translations
Information architecture and quality of handbook.mattermost.com
The Mattermost Handbook is a work-in-progress in that information is constantly being updated, added, revised, and edited.
The Handbook is open to the public and edits can be submitted by anyone.
You don't need to ask permission to add content to the Handbook. Follow the steps in How to update the Handbook to get started.
If you have an idea for content, you can submit an issue detailing your idea. The more information you provide the better. That said, if you have content ideas why not add it to the Handbook, open a PR, and see where that goes.
Mattermost fiscal year ends on January 31.
As part of the yearly planning, we use various documents as references.
Below is a list of references used for FY24 Strategy & Plan (link to be added).
R&D includes engineering, QA, product management, documentation, analytics, community, and design (UX, UI).
Analyst Research: Analyst meeting tracker, briefing procedures, research. We are currently Gartner clients.
Compete: Key articles on competitors. Also see automated feeds from competitor marketing.
We use a variety of tools at Mattermost. Not every team uses the same tools, and it can get overwhelming to try remember who uses what and where it is.
During onboarding you'll be provided with a list of tools to set up. You can also visit the Helpdesk to find the tool and request access.
We use a range of web properties and tools to document and share plans, specs, roadmaps, and release schedules.
Product roadmaps, feature releases, planned features: Features by release productboard, Release roadmap by vertical.
Product specs: Teams, Software project
Apps, integrations, plugins: Integrate
How to get started with contributing and developer set up: Getting started
Designs and mockups: Figma
How open source software is developed: Development & Release Process
How contributors can get involved: Platform Contribution Process
Analytics playbook and data wallows: Analytics
Technical writers: DWG: Documentation Working Group
Product Managers: Product Management
UX team: UX Design
Analysts: Analytics
Community: Community Team
Tip: We generally use channel naming conventions to make it easier to find channels. Team channels are prefixed with "team", feature channels prefixed with "feature" and so on. For example, if you're looking for a team channel, open the channel browser and search for "team".
R&D is led by:
Corey Hulen - CTO
Chen Lim - VP, Product
We use this spreadsheet to track the organization structure.
The Delivery team enables Mattermost Engineering to deliver products of high quality, secure, scalable, and efficient fashion to Mattermost customers. The team ensures that Mattermost scheduled, security, and patch releases are publicly released in a timely fashion.
By its own nature, the Delivery team is a backstage, non-user feature facing team whose product and output has a high impact on day to day development operations, quality and releases. The team creates the workflows, frameworks, tools, architecture, and automation for Engineering teams to see their work reach production effectively and efficiently.
CI/CD blueprints, tooling & infrastructure for dev & testing workflows
Automation test framework
Automate release generation and reduce Release Manager toil work
Improve security principles in Mattermost software supply chain
Extend release environments to improve testing for Mattermost releases
Guard and raise end-product quality standards
Treat our work like a product
Promote self-serve
Aim to make our work easy to use
Influence best practices
Every week we have a support rota who is responsible for troubleshooting any S1/P1 related issues.
The team regularly works on the following tasks, in the order of priority:
Ensuring continuous delivery of Mattermost products to SaaS and self-managed
Participating in incident resolution and acting on corrective actions for SaaS and self-managed software delivery
Minimizing the use of custom tooling by building or enhancing features within Mattermost
Improving the robustness of SaaS software delivery by creating and improving tooling (release & testing)
Coordination, education, and preparation of Mattermost releases for SaaS and self-managed users for the scheduled minor, patch, and security releases
Review release metrics
S1/P1 Deployment/Release related issues
@release-manager
group mention
@delivery-rota
group mention
Mattermost
Quality related issues / verification
@qa-guild
group mention
Mattermost
CI/CD Blueprints & Automated testing issues for day to day
First check our knowledge base [HERE - TBD]
Send a message to ~infrastructure-delivery-team or mention @delivery-team
Mattermost
Influence and help with best practices
First check our knowledge base [HERE - TBD]
Send a message to ~infrastructure-delivery-team or mention @delivery-team
Mattermost
Triage & Planning
Delivery Planning
Delivery
Tuesday
Cross-org collaboration
Infrastructure Guild
Leadership, Infrastructure, Product, Security
Thursday
The Cloud Platform team is responsible for our Mattermost Cloud SaaS technology.
Enable everyone to build and deploy with high velocity in a self-served manner.
Increase developer productivity
Influence Cloud readiness
Input driven decision making
Encourage best practices and keep quality standards high
Keep experimenting
Keep documentation fresh
Balance stability and experimentation
Embrace teamwork
Leave the room better than it was
Data/Feedback driven to find the best solution
Distributed systems, distributed team
Be curious and keep learning
Share knowledge and seek feedback
If you need our assistance please use the following follow the General Workflow
We can also be reached out:
For support questions related to production you can reach us in ~cloud-support
channel.
For all the other questions you can reach us in ~infrastructure-platform-team channel
Mattermost members open new issues in Platform Board
Every new issues goes through an Issue Triage weekly
The team regularly works on the following tasks, in the order of priority:
Ensuring provisioning, rolling out and controlling the workspaces fleet with an automated manner (eg. provisioner, k8s operator)
Improving developer productivity with providing self-served capabilities for testing envs in cloud developer platform (eg. spinwick, cloud plugin)
Ensuring and supporting other teams for cloud readiness (eg. Mattermost migrations, database connection pooling)
Triage & Planning
Platform Planning
SRE, Platform
Tuesday
Cross-org collaboration
Infrastructure Guild
Leadership, Infrastructure, Product, Security
Thursday
Mattermost has three different roadmap views: Public Product Direction, Internal Roadmap, and a Release Plan. Each has a specific target audience and framed in different ways:
This view is external-facing, shared publicly with our users, community and customers. This is currently available on our website (https://mattermost.com/direction/).
The primary intent is to share the vision and direction of the product with no committed dates. We use it to highlight the benefits of what we’re building, so it’s easy for people to picture how what we’re building is going to make their Mattermost experience the best it can be. For an example of similar public product direction sites, see https://about.gitlab.com/direction/.
In addition to communicating the direction, we also include features framed in terms of estimated timelines on our productboard portal
3+ Months: This tab includes projects that are in progress now. We’re happy to get on calls to share updates and gather feedback on specs, designs, and prototypes.
6+ Months: This stage covers projects coming up soon, after some of the “Now” work is completed. If an item is in this category, we’re happy to have conversations validating requirements and use cases.
Future Consideration: This stage includes features we’re considering for later. We’re happy to have conceptual conversations on these items, to see which problems resonate the most. We add and remove things from this category as we learn from those conversations.
This view is internal facing, shared cross-functionally across Mattermost staff, to let people see how our product efforts tie back to the higher level company goals and strategy. Items on the roadmap are related back to objectives, and the objectives tie back to our Company Fiscal Year plan, so it’s easy to see how everything fits together.
Key distinction from the Public Product Direction is that this view is framed in terms of business goals (such as increasing NPS, ARR, retention) rather than benefits. Moreover, this view may include business initiatives such as the customer portal, technical, or telemetry efforts that are not outwardly beneficial to our customers.
We also create a release plan based on the internal roadmap. The purpose of the release plan is to enable project management for development teams. All dates in our release plan are target dates not commitments, and items are often moved, added, and removed from the list.
This view is internal facing, month-by-month release plan of new features.
Currently, the Release Plan can be found in productboard, and is updated weekly by the Product Management team.
In addition to GitHub Issues, we also use Jira tickets for managing chunks of work to be performed.
Ticket triage happens within the team's normal sprint cycle. At that meeting, the team reviews all new tickets, assessing the scope, effort, and impact of each ticket. They make a decision on the priority of the ticket. Once it's decided in triage meeting that the ticket should be worked on, the ticket moves into the To Do state.
Tickets are in one of several states, and transition between states is typically linear. The beginning to end flow is described below.
Ticket reach this state by being created. A ticket usually needs triage to proceed further. One notable exception is an urgent bug fix, which moves to "In Progress" as soon as the implementer has bandwidth to address the issue.
Ticket reach this state by having been assigned a sprint (could be the "Queued" sprint) and having been identified in triage as something the team desires to achieve. Tickets in this state typically do not have anyone assigned to them. This state is synonymous with "Select for Development".
Tickets reach this state by being assigned to the implementer, who has clear intention to work on the ticket soon (within the next sprint or two). A ticket moves back to Will Do if the implementer no longer has present or future bandwidth to do the work in the ticket.
Tickets reach this state by the implementer beginning to perform the work needed to finish the ticket. A ticket can be in progress for an indefinite period of time, but if tickets are routinely in progress across multiple sprints, it is likely a sign that the tickets need better definition or reduction in scope. A ticket moves back to To Do if the implmenter is no longer working towards completing the ticket.
For tickets that require code changes, tickets reach this state by the implementer opening a pull request. Many tickets can be tested by QA at the time of the pull request. For such tickets, the QA steps to test and verify should be added to the ticket when moving the ticket to the "Submitted" state.
Tickets can be in submitted state indefinitely as long as forward progress is being made in the pull request review. A ticket moves back to In Progress if are too many issues with the pull request for it to make sense to keep the pull request open.
Tickets reach this state by having a pull request merged. Once moved to this state, tickets trigger additional work to be performed by the QA team. Tickets move back into In Progress from this state if QA detects there are defects or regressions because of the work merged by the ticket.
A ticket could also move to "Done" from any state if it is decided that the work or change will not be performed or accepted. Common reasons for this include:
The ticket is a duplicate of another.
The ticket is no longer relevant.
Priorities changed enough that the ticket will never be worked on.
A bug ticket can not be reproduced.
What is observed in the bug ticket is deemed acceptable behavior.
A ticket reaches this state after QA verifies through testing that the change has been completed as anticipated.
Bugs are any “obvious errors” on how the product or a feature is functioning as well as any UI issues. If you’re not reporting an obvious error, please file a Story ticket instead. Errors on unsupported platforms are not considered bugs.
If you don't already have a Jira account or permissions to create Jira tickets, you can request access through the Mattermost IT helpdesk.
Search existing tickets in Jira's "Mattermost" project to confirm your issue isn’t already filed by someone else.
If your issue involves security or if it involves confidential information or customer information, please mark the bug ticket as internal.
Steps to reproduce: How can we reproduce the issue.
Expected behavior: Describe what you’re expecting to see.
Observed behavior: Describe your issue in detail. What did you see happen? Please include relevant error messages and/or screenshots.
Severity: Choose appropriate severity from the drop-down. Severity levels and descriptions are documented here.
Labels: Add a customer-bug
label if the ticket is based on a customer bug report. Add a community-bug
label if the ticket is based on a community bug report.
Environment: There is an Environment
field with drop-down options to choose whether the bug was found in Cloud test servers, Cloud production servers, Self-Hosted test servers, Self-Hosted production servers, Desktop app, Mobile app, or in Master/PR testing.
Attachments: Please include screenshots and/or videos of any helpful error messages and snippets of what you are seeing.
Possible fixes: If you can, link to the line of code that might be responsible for the problem.
Regression: Please re-test your issue (if possible) on the previous Mattermost version at https://prev.test.mattermost.com to see if the bug is a recent regression.
Add any additional relevant details if it helps make the bug more clear. For example, you can add details on Mattermost server and version, OS and version, Mattermost mobile app version, Mattermost desktop app version, and any notable Mattermost configurations (such as HA, Elasticsearch, image proxy, SSO).
If you know which team would own fixing the bug, you can assign the ticket directly to that team.
Otherwise, you can leave the team Unassigned
and the Program Manager assigns the ticket. The Program Manager follows the ~Bugs channel on a daily basis.
This document provides guidelines for determining which software versions Mattermost requires. For past discussion on why these guidelines were chosen, see this conversation.
Current software requirements are documented here.
Before submitting software requirement updates to the documentation, the following steps have to be taken into consideration:
Check with Chen in the Analytics channel to see what % of users and what % of posts are made by the versions we’re considering to drop support for, to review potential impact to users.
For versions we are considering dropping support for, ask the customer support team what the impact is for customers (e.g. if there are known customers on those versions and if we get customer support tickets specific to those versions).
Ask developers what the impact is for us internally if we consider dropping or continuing support for a version.
If we decide to drop support for a version, work with product managers and developers to plan for updating the version information in all relevant places, including but not limited to: in the product itself (such as the mobile app), Changelogs and README GitHub pages.
Windows
Mac
Linux
Fixed to Ubuntu LTS releases 16.04 or later
Chrome
Chromium version of latest Mattermost Desktop App
Firefox
Safari
Edge
Latest release
iOS
Android
Supported versions by Microsoft -
Supported versions by Apple -
Supported versions by Mozilla -
Safari version available in the minimum supported macOS version -
Latest and next-to-latest versions -
Supported versions by Google -
Priority
Definition
Example Issues
Target Resolution
Release Guidelines
High
A customer-reported issue or blocker that prevents or severely delays a user’s goal.
App crash, data loss, broken website forms, broken authentication flow
Fixed within 30 days
Fix can be committed after T-10 Code Freeze
Medium
A frustrating friction point or an issue so “cringey” it erodes trust.
Documentation gaps, misleading error text or guidance, complex UX, inconsistent user interactions, functional regressions
Fixed within 60 days
Fix can only be committed before T-10 Code Freeze
Low
An inconsistency that affects polish.
UI misalignment, unclear labels, minor documentation errors, cosmetic regressions
Fixed within 90 days
Fix should be committed before T-19 Code Complete, if submitted after Code Complete it may get bumped to the next release.
Priority levels on Jira tickets should be filled in by the ticket reporter using the Priority field. The triage team will review and update priority levels based on the guidelines above.
Bug tickets are sometimes assessed on a case-by-case basis and further considerations may be applied, such as whether the bug is a recent regression or not, how risky the bug fix is, or whether it’s more effective to revert code that initially caused the bug.
Why are we doing this?
We want to consistently deliver high quality products and interactions with our customers. Priority guidelines enable us to prioritize and address quality issues that can erode trust in our brand.
Security dot releases are done for high, medium and low level severity security issues based on the backport policy. The general steps are:
A pull request for the issue is submitted and dev/QA reviewed, and then merged.
The bug fix is cherry-picked to the relevant release branch.
A release candidate (e.g. 7.2.1-RC1) is cut for quick final smoke tests.
After QA approval, a final release build is cut (e.g. 7.2.1) which is ready to be shared with the customer.
Please refer to the Dot Release Playbook for a most up-to-date checklist.
Mattermost ships with a new version once a month for both cloud and self-hosted customers.
Mattermost numbers stable releases in the following format: [Major Build Number].[Minor Build Number].[Patch Build Number]
Major build number:
Purpose: Major system releases introduce significantly new functionality or change existing product behavior
Release frequency: Once a year. Major system releases are infrequent
Example: v1.x.x, v2.x.x
Minor build number:
Purpose: Introduce new features, bug fixes and performance improvements
Release frequency: Monthly cadence
Example: v1.2.x, v1.4.x
Patch build number:
Purpose: Patch existing releases when severe bug fixes or security patches are required
Release frequency: As required
Example: v1.2.5, v1.2.6
The goal is to deliver value to users quickly by a) shipping fast to get features to customers quickly for experimentation/feedback, and b) iteratively behind feature flags as a protection if any issues arise. This document outlines the principles and guidelines for how we release a new update of each product line on a monthly basis.
Focus on High Impact by shipping every new feature and any riskier code changes behind a feature flag
Each development team is individually responsible for quality and deciding if a feature should be included in a release or not (with the release team giving guidelines). This may mean shipping more patch releases, but we can manage some of this by using feature flags. This also requires good test automation coverage.
Automate
Automate release processes and tasks.
Automate release tests and have E2E tests for features.
Earn Trust by communicating to external and internal stakeholders clearly
Enables us to make expectations for releases clear for all stakeholders.
Make expectations for each release clear (release dates, etc.). Communicate. Ensure that everyone on the team is familiar with the release processes.
Release notes, minimum version requirements, and any important upgrade notes need to be available for customers and communicated via docs, blog, emails, and channels.
Earn Trust by including all stakeholders (Tech Writers, Marketing, QA, etc.) early in the release process
Enables us to avoid missing key tasks and to avoid last minute work.
E.g. When opening a PR, add a “Docs/Needed” label for any PRs that need docs and communicate to Tech Writers. This ensures that we have time to complete docs on time.
Make tracking bugs and testing requirements easy. E.g:
Resolve Jira tickets for QA when PRs are merged (and cherry-picked).
Add QA test steps to Jira tickets and/or PRs.
Add Fix Versions and Milestones in Jira/PRs for bugs/tickets for easy tracking.
Add clear Release Notes on PRs.
Achieve Customer Obsession by doing retrospectives on release issues and monitoring customer/community release bug reports after releases
This allows us to learn from issues so that they don’t happen again and to fix critical bugs asap.
Retrospectives for issues and dot releases are important.
Monitor community and customer reports in GitHub, Forum, and channels like Ask PDE, in partnership with the Support team.
Release dates are currently communicated in the following ways.
Channels
Mattermost Release Dates Calendar
Lists key release dates and deadlines.
PM and PDE meetings
Updates are provided on upcoming key dates and/or features as needed.
Productboard
Spreadsheet
If the PR is scheduled for a specific Mattermost release, please add the Cherry-pick Approved
label and self-managed milestone on the PR. The Release Manager keeps track of PRs with the Cherry-pick Approved
label and self-managed milestone on a daily basis.
The Release Manager also tracks regression bugs and aims to ensure that they get fixed for the next release.
A fix version is added in Jira to track regression bug fixes for Mattermost releases.
When triaging a bug report, consider the following:
Impact of the bug on customers.
Severity of the issue.
Risk and effort of reverting to the last version or fixing a bug.
Criteria
"We need to revert to the last version" process:
Crash or all services are down due to a bug; affects some to all Mattermost Cloud customers.
"We need to release this ASAP" process:
A severe regression or loss of functionality; affects some to all Cloud customers.
"It's OK to wait until next release" process:
Loss of function, but little impact on Cloud customers.
Responders
Who is making the decision on which process above we need to follow?
In some cases it's the customer support teams or Cloud teams, and in some cases it's other people such as the Release Manager or developers who notice or get notified about the report.
Bugs will be fixed by either the CRE team or by respective development teams, depending on availability and expertise.
Q: What is the release cycle for the React Native mobile apps?
A: The mobile apps follow the same monthly release cycle as Mattermost Server/Webapp, releasing on the 16th of each month.
Q: What is the release cycle for the Mattermost Desktop app?
A: Desktop releases are shipped every 3 months starting in March, 2023. For more details, see https://handbook.mattermost.com/operations/research-and-development/product/release-process/desktop-release.
Q: When do I need to have a feature PR to be included into the next release?
A: Aim to have the PR merged before the Feature Complete deadline. The earlier in the monthly cycle the PR is merged, the higher the chances are for it to be included in that month's release. The quality of our releases is important and feature PRs are not normally cherry-picked to a release branch.
Q: How can I determine if my merge request will make it into the next release?
A: The Release Manager adds PR milestones and Jira fix versions for tracking. You can also check the release branches (e.g. in the mattermost repo) to see what's included.
Q: Do we use Playbooks for releases?
A: Yes, playbooks are used for cloud & self-hosted, mobile and desktop releases, and for dot releases and plugin releases.
Q: How are PRs merged for release?
A: PRs are first merged to master. As needed, the dev who submitted the fix is also responsible for cherry-picking it to the release branch after a release branch has been cut.
Q: How is cherry-picking done?
Q: What version is community.mattermost.com kept on?
A: Normally on master
branch and it updates daily.
Q: How to remove a feature/bug from a release?
A: The feature flag is turned off. Another option is reverting the feature from the master
and release
branches.
Q: How are NOTICE.txt PRs submitted?
A: PRs are first merged to master
. The dev reviewer is responsible for helping cherry-picking it to the release
branch as needed.
Q: Is an improvement a feature or a bug?
A: Usually features/story tickets.
Q: How does release team monitor what changes went into a release?
Q: How does translations branching work?
A: The translation PR will be submitted against the master branch.
Q: What is the process for community PRs?
A: Review, merge, and cherry-pick as needed.
Q: What information does the Customer Support team need for Cloud releases?
The Announcements channel in the Staff team is used for release updates and for posting the changelog.
Mattermost core team works on a monthly release process, with a new version of cloud and self-hosted shipping successively once a month.
A single release is qualified for both cloud and self-hosted at the same time, with both versions labelled as vX.Y.Z
. Outside of patch releases, no changes are released to self-hosted customers before they are first released to cloud customers.
Feature Complete and Release Branch Cut at T-24
All major features must be complete and merged approximately five weeks prior to the self-managed release date. Prior to this day, the release manager makes sure everyone is aware of the impending deadline by posting reminders in the Release Announcements
and Release: Self-Hosted & Cloud
channels and messaging team leads. If any pull requests are not merged by this date, then the release manager changes release milestones in Jira after checking with team leads that those features can be pushed to a future release. Updates to prepackaged plugins should also be complete and merged by this date, with room to address bugs before code freeze. This is also the date when the release-X.Y
branch is cut from master. Any additional changes to the release must first be merged to master before being cherry-picked to release-X.Y
. All test servers are configured to update daily from this branch.
Judgment Day at T-19
Release Qualification Starts at T-18
Code Freeze at T-10
Ten business days prior to the release date, and near to the end of release qualification, code freeze prohibits all further changes to the release branch. No further code changes will be accepted, preventing last-minute regressions, fixes, and additional testing. A final release build is cut and pushed to https://github.com/mattermost/mattermost, but marked as pre-release. The delivery team continues to triage and push minor bugs to the next release.
If a showstopper issue is found, a patch release is required that may risk the remaining milestone dates. Minor bugs or issues found after code freeze should generally be deferred to the next release, but it is occasionally necessary to patch the monthly release to address show stopper bugs or security issues. Introducing a patch increments the patch version (vX.Y.Z+1
) and may delay the cloud or self-hosted release dates. We bump the patch version here to preserve the integrity of the code freeze deadline. We also schedule a retrospective to better understand how the issue was introduced and discovered so late in the release cycle.
Release Approval at T-8
Approximately two weeks after starting release qualification, the delivery team formally signs off on the complete release qualification.
Cloud Beta Release at T-7
The qualified release is rolled out to the cloud beta production servers for final QA smoke testing.
Cloud Freemium Release at T-6
After final QA release approval, the release is rolled out to the freemium ring.
Cloud Professional Release at T-5
Two business days after soaking in cloud beta, the release is rolled out to customers in the professional ring.
Cloud Enterprise Release T-3
Once stabilized in cloud professional, the release is rolled out to customers in the enterprise ring. The actual date may be two or three business days later to avoid releasing to enterprise customers on a Friday.
Cloud Dedicated Release at T-2
Once stabilized in cloud enterprise, the release is rolled out to enterprise customers with dedicated clusters. As with T-3, the actual date may be one or two business days later to avoid releasing to dedicated customers on a Friday.
Self-Managed Release at T-0
On the first business day on or before the 16th of the month, the same build already qualified in cloud is released for self-hosted customers. No rebuild is required. Marketing communications begin to roll out, and the release is communicated on the blog and other marketing channels. The pre-release bit on the corresponding GitHub release is manually removed. Note that this may be vX.Y.1
or a later patch release if fixes were required after code freeze. Release documentation, including the changelog, is merged on this day.
We follow . If releases are not approved by a certain date, then we miss the release train.
Cloud/self-hosted .
releases follow the same release cadence as cloud/self-hosted.
.
When issues are found that warrant a patch release, we follow the .
The functions as the main location for important announces about Cloud test server updates, and for release dates and feature complete deadlines. Specific teams or people may be at-mentioned if the announce is targeted at someone.
The functions as the central place to find the most important announcements for new releases with links to changelogs and/or blog posts that can be easily shared with external stakeholders including MLT and customers.
- A milestone overview of what releases + features are coming up.
.
The sample helps give an overview of needed steps for plugin releases.
Details on feature flags: .
A: See the for details.
A: Monitor the commit history of the respective release
branch, e.g., contains commits that shipped with mattermost-server v7.5
. Jira ticket is resolved after cherry picking is done.
This document outlines the development process for the Mattermost core team, which draws from what we find works best for us from Agile, Scrum, and Software Development Lifecycle approaches. Please refer to for the release checklist.
Note: T-minus counts are measured in "working days" (weekdays, Monday through Friday, excluding ) prior to release day.
Approximately one week after feature complete, the release manager reviews the status of all features and issues. Regression bugs are identified naturally in Community as well as on the release branch by the QA team. If anything needs to be cut, the Release Manager informs internal stakeholders in the Release: Self-Hosted & Cloud
channel and asks the feature owners to revert the code. There should be no known major issues included with the release. A feature should be reverted if any blockers or more than five Severity 2 issues found. RC-1 is cut on this day.
Immediately after judgment day and any reverts are completed, the release team officially begins release qualification. This includes verifying and closing tickets resolved for the release; running Rainforest release test run groups, Cypress automated tests, and release smoke tests; executing manual tests; and triaging new issues and re-testing as fixes become available. Progress is tracked in the . Qualifying any individual issue occurs in both self-hosted and cloud test servers simultaneously, as the same artifacts will ship unchanged into each environment.
This document outlines the process for announcing deprecated features to the community. The guiding principle is no surprises with guaranteed long-term stability, where admins or users should never run into anything unexpected while using Mattermost.
A deprecated feature is considered to be one that breaks backwards compatibility with previous versions.
Examples include:
1) Removing an API endpoint, or one of its parameters.
APIv3 endpoints on January 16, 2018.
“permanent” parameter of the DELETE /teams/{team_id} APIv4 endpoint in Mattermost v5.0.0.
2) Removing a config.json setting
System Console settings in Files > Images in Mattermost v4.0.0.
3) Removing an end user setting or functionality.
Font setting in Account Settings > Display in Mattermost v4.0.0.
When the decision to deprecate a feature or function is made, the product manager responsible for the feature carries out the following actions:
Adds the scheduled deprecation to the deprecated features page with a note of what it's been replaced with.
Prepares a forum post describing the reasons for deprecating the feature, providing an opportunity for the community to share feedback. See a sample forum post.
Creates a JIRA ticket for removing the feature, including a prefix “Deprecation:” and a fix version matching the removal target date.
Moreover, the acting release manager takes the following actions:
20 working days before each release, adds a list of deprecated features to the compatibility section of the changelog and important upgrade notes. The changelog should include deprecations scheduled for upcoming releases.
20 working days before each release, sends the list of deprecated features to the marketing manager, who includes this information in the release announcement.
2 working days before each release, ensures the deprecated features page is up to date.
The removal target date should always be the date of the next major release, such as v4.0.0. If the date is not known, you can reference the next major version rather than the actual release date.
However, there should always be at least two months from the time the deprecation is announced to its removal. This number is chosen to match our security backport release policy.
See the table below for examples:
3.9.0
3.10.0
4.0.0
3.10.0
3.10.0
5.0.0
Exceptions for the removal target date may be made if it impacts security or the performance of Mattermost. In such cases, the target date for removing the feature may be made sooner.
On the other hand, if removing a feature is deemed significant, such as the removal of APIv3 endpoints, the target date for removing the feature may be extended to a later release.
After hitting an unanticipated issue or approval escalation, we should complete a mini-retrospective to help us improve our processes and avoid making the same mistake twice.
In the spirit of iteration and continuous improvement, after hitting a significant or repeated issue, we should write a mini-retrospective and share it with the team. This should take 5-10 minutes to prepare.
Following the resolution, the person with the most knowledge of the issue should send an email to the group with the following summary:
What was the issue?
What might be done to improve our outcomes in the future?
What are we changing in our process and/or documentation (if anything) to improve future outcomes?
By taking a moment to reflect, we have the opportunity to uplevel, and create lasting change and improvement.
On this page
Contributions from everyone are welcome, including staff members and community members. You don't have to work at Mattermost to submit an update or fix something that's caught your eye.
"Update the Handbook" is a term we use regularly at Mattermost but it's not always obvious exactly what to update or how. Here are some examples of what a Handbook update could be:
Updating your team page with new team members and AORs.
Adding a new page to describe a new process.
Updating existing content to accommodate a change in process, policy, or requirement.
Archiving old content that should be preserved for reference.
Updating the Handbook can be as easy as fixing a typo, or as complex as reorganizing an entire section. The key is to update it regularly, so that updates are less daunting and time-consuming.
The Handbook is a public-facing body of work and although it's a constantly-evolving work-in-progress, we still need to ensure our content is accurate, easy to read, and clear.
Be concise: Say what's essential, not more.
Get feedback: Have someone from your target audience read your draft to share feedback so you can savor surprises.
Don't aim for perfection: Our goal is regular iteration, so your content doesn't have to be perfect before it's published. It will be reviewed by an editor prior to publication so any major errors will be addressed then.
If this is your first time contributing to Mattermost, first read the Mattermost Contributor Agreement and sign it (at the bottom of the page), so you can be added to the Mattermost Approved Contributor List. Please ensure the GitHub username field matches your GitHub username exactly, including capitalization.
If you're not already a member of the mattermost
GitHub organization, you can request access through the Mattermost IT helpdesk. This will allow you to edit the files in the Handbook repo without having to create a fork for your changes.
Now you're ready to get started.
When you edit an existing page, it's usually to add content, remove content, or edit existing content. In general it's easiest if pages are edited directly, although you're also welcome to edit files directly from the repo if that's easier for you.
All editing is done in GitHub, as that's where the Handbook files are stored. Pages are formatted using Markdown - if you're not familiar with Markdown, you can take a look at this page for tips. Don't worry too much about formatting - it can always be adjusted during the review process.
Once a page is edited and you're happy with the changes, it's submitted as a pull request which is then reviewed. If there's any feedback or comments have been made, you'll be alerted. If suggestions have been made, you can choose to commit them (add them to your content) or you can ask the reviewer for more information before doing that.
When the PR is approved, it'll be merged and published. If you have more changes to make, you can simply repeat the process.
This is probably the quickest way to make changes, as it doesn't require you to find the file in the repo first.
Login to your Mattermost GitHub account
Open the Handbook and navigate to the page you want to edit.
Underneath the blue banner, locate three dots next to the page title at the top of the page. Click on the three dots and choose Edit on GitHub. This action will open the page in GitHub.
In GitHub select the pencil icon in the navigation bar (above the page header) called Edit this file to open the editable Markdown-format page. If you see Edit this file in your fork of this project the process is the same, it just means you're not part of the Mattermost organization and are working in a forked repo.
To learn more about Markdown formatting, see the Mattermost guide for formatting text, or the guide from GitBook.
Make your edits. When you're ready to submit your changes, commit your changes to start a pull request.
Add a descriptive title if the default title isn't sufficient. Add an extended description to summarize the changes you've made.
The default setting is Create a new branch for this commit and start a pull request. In the field below that, you can customize the branch name - you can also leave it as default.
Select Propose changes.
On the next page, you can scroll down to compare changes with the original document to double-check your changes.
If you're happy with them confirm that the title and description are correct, then select Create pull request.
Once a pull request has been submitted, a core committer with write-access assigns relevant reviewers and labels to kick off the review process. The review process includes aligning the content with the Style Guide, validating the changes, and tagging any other relevant committers.
Multiple committers may comment on your pull request and provide edits or suggestions which you can commit directly. You can also add line comments. Take a look at Commenting on pull requests for more details.
Once the review process is complete, the change is merged and pushed live. We recommend that you review your changes at https://handbook.mattermost.com for potential formatting errors.
This option works best if you know where the file is located in the repo.
Open the Handbook repo.
Navigate through the directories to the file you want to edit.
Once you've found the file, select Edit this file in the top corner. If you see Edit this file in your fork of this project the process is the same, it just means you're not part of the Mattermost organization and are working in a forked repo.
To learn more about Markdown formatting, see the Mattermost guide for formatting text, or the guide from GitBook.
Make your edits. When you're ready to submit your changes, commit your changes to start a pull request.
Add a descriptive title if the default title isn't sufficient. Add an extended description to summarize the changes you've made.
The default setting is Create a new branch for this commit and start a pull request. In the field below that, you can customize the branch name - you can also leave it as default.
Select Propose changes.
On the next page, you can scroll down to compare changes with the original document to double-check your changes.
If you're happy with them confirm that the title and description are correct, then select Create pull request.
Creating new content can take the form of a new page, or an entirely new section. Some things to keep in mind are naming conventions and that the Table of Contents entry is made manually in the SUMMARY.md
file.
Open the Handbook repo.
Navigate through the directories until you reach the section where you'd like to add your new content.
Select Add file > Create new file.
When you create a new page in the Handbook ensure that:
The page name is all lowercase
There are hyphens instead of spaces between the words.
New page names end with .md
.
Write your content as needed.
When you're ready to submit your changes, commit your changes to start a pull request.
Add a descriptive title if the default title isn't sufficient. Add an extended description to summarize the changes you've made.
The default setting is Create a new branch for this commit and start a pull request. In the field below that, you can customize the branch name - you can also leave it as default.
Select Propose changes.
On the next page, you can scroll down to compare changes with the original document to double-check your changes.
If you're happy with them confirm that the title and description are correct, then select Create pull request.
Add your new page to the Handbook table of contents. If you plan to reorder the table of contents as part of your change, please tag @jason.blais or @carrie.warner in Mattermost (@jasonblais or @cwarnermm in GitHub) as a redirect may need to be set up to accommodate the change.
Watch a two-minute training video on how to create a new page in GitHub.
If you want to create nested content, you can create folders. You cannot create an empty folder and then add files to that folder, but rather creation of a folder must happen together with adding of at least a single file. On GitHub you can do it this way:
Navigate to the folder within which you're creating your new folder.
Select Add file > Create new file.
Enter the new folder's name in the text field and add /
at the end.
In the next text box, enter the name of the new page, ending with .md
.
When you're ready to submit your changes, commit your changes to start a pull request.
Add a descriptive title if the default title isn't sufficient. Add an extended description to summarize the changes you've made.
The default setting is Create a new branch for this commit and start a pull request. In the field below that, you can customize the branch name - you can also leave it as default.
Select Propose changes.
On the next page, you can scroll down to compare changes with the original document to double-check your changes.
If you're happy with them confirm that the title and description are correct, then select Create pull request.
Add your new section to the Handbook table of contents. If you plan to reorder the table of contents as part of your change, please tag @jason.blais or @carrie.warner in Mattermost (@jasonblais or @cwarnermm in GitHub) as a redirect may need to be set up to accommodate the change.
All Handbook pages are written in Markdown, which is also the language used to post messages in Mattermost. To learn more about Markdown formatting, see the Mattermost guide for formatting text, or the guide from GitBook.
You can update the left-hand navigation in the SUMMARY.md file.
Important note:
GitBook dynamically changes the URL based on the location in the table of contents. This means that when a page changes its location, the previous link results in a 'page not found' error.
There is a redirect file that we use to prevent this in the gitbook.yaml
file. Please mention @jason.blais or @carrie.warner in Mattermost (@jasonblais or @cwarnermm in GitHub) for assistance if needed.
Follow these two steps:
Go to the /assets folder, select Upload files, then upload the image files you want to add to your documentation. Make sure to have a clear name for each file you upload.
Next, go to the section you want to add an image to and include the following Markdown formatting:
Yes! Sometimes it's easier to draft content for the Handbook in a Google Doc. An open-source Google Drive add-on called Docs to Markdown can convert the content to Markdown. See the add-on documentation for details on installing and using this tool.
Once the add-on is installed, there are a number of conversion settings you can configure. Selecting all but the Use HTML headings/IDs option is recommended.
To see the embedded errors and warnings, disable the Use reckless mode option.
To see all conversion details, disable the Suppress info comment option.
The resulting Markdown code isn't perfect, but it's an excellent initial step towards preparing a PR for the Mattermost Handbook. Review the following areas of converted code:
Embedded images must be saved out as files, added to appropriate image folders, and links need to be added to point to correct locations.
If the doc contains screenshots or other image assets, right-click on the embedded image in the Google Doc, then select Save to Keep.
In the right pane, right-click on the image in the Keep list, then select Save Image As. Rename the image file as needed to match the Markdown code.
Images need to live in the .gitbook/assets
folder and must use a relative link in the source file.
Numbered lists and nested lists likely need corrections.
Many lines end in a /
which need to be removed.
ALT tags are added as alt_text
for all images. Update the ALT tag to be more descriptive, or remove it altogether.
Watch a training video on how to update the handbook in GitHub.
Below is a list of approved reviewers.
@cwarnermm: Reviews major changes to handbook.mattermost.com, such as updates to the Table of Contents (SUMMARY.md).
@cwarnermm: Editor reviews of all submitted PRs for correct grammar and consistent style.
@kevinfayle: Signs off on changes to marketing ops and analytics.
@aedott: Signs off on changes to messaging and math.
@it33: Signs off on changes to finance.
@natalie-hub: Signs off on changes to workplace.
@it33: Signs off on changes to signing authority (example).
@dschalla: Signs off on changes to Security.
Each PR should be reviewed by at least one approved reviewer. A build check requiring at least one approved review prior to a merge is planned, similar to other Mattermost repositories.
Below is a list of permissions handbook contributors have access to:
@jasonblais, @amyblais, @cwarnermm: Write permissions to the repository.
Staff contributors: Submit changes to handbook.mattermost.com
using PRs. May have access to request reviews, add labels, submit PR reviews, and be requested as reviewers.
Non-staff contributors: Submit changes to handbook.mattermost.com
using PRs. Do not have access to request reviews, add labels. Can submit PR reviews.
This document outlines how to write a release announcement and release tweets for a feature. These are used at the release day in our release newsletter and Twitter.
Each Product Manager is responsible for writing a release announcement for every feature, integration, or announcement they want included in the release newsletter.
Here is an example of a previously completed release announcement.
It's important to think of the release announcement as a press release. We're communicating changes to our current and prospective customers so we want it to be exciting as well as informative. The release announcement is a coordinated document, with each Product Manager contributing their own features as sub-headings. The headline and first paragraph will be written by PM leads and the CPO after all other features have been provided.
Note: Consider using this information in productboard for your features to validate the messaging and to keep consistency across channels.
A release announcement for each feature should be started early in the product planning process. Each Product Manager is directly responsible for writing the announcement for each of their features. For large product features or new products, a PRFAQ should be completed. For smaller features, a “mini-PRFAQ” should be completed in the form of a blog post. Below are the expected deadlines ("T-X" dates don't include holidays/weekends):
Release Manager provides an outline of the release announcement and deadlines for Product Managers, along with a heads-up for Director of Product Marketing that the blog post is coming. Release Manager also adds deadlines to the PM Weekly Sync Agenda.
A draft of the release announcement and tweets are completed by Product Managers. Product Managers prepare the release announcement from their 2-pager documents. Product Managers are reminded of the deadline in the weekly Monday PM Sync meeting. The T-9 deadline should be the 1st Monday of the month for our Roadmap call (this will either be T-9 or the first Monday of the month, whichever comes earlier).
Product Management leads do a final review on the release announcement and prepare the headline and byline content.
The PM-approved draft will be provided for review to the Director of Product Marketing and to the Director of Communications. Katie Wiersgalla (@wiersgallak) provides the release announcement copy for review and relays edits back to the Product Management team via the Product Manager's internal channel.
Katie provides the final and approved release announcement copy for Amy Blais (@amy.blais) to give to the marketing team.
The release announcement is published. T-0 is based on the Release Day in the Mattermost Release Dates calendar.
The headline for your feature should start with a verb and describe what the feature allows customer to do and the edition it's provided in.
Example: Sync Office 365 Calendar status with Mattermost (E20 edition)
A quick summary sentence should follow with the benefit the feature provides.
Example: Enable your users to get more control over their schedule without leaving Mattermost.
Next, describe in more detail how the feature works and what functionality is included. This could take the form of a bulleted list or a few more sentences.
Example:
Then, add actual screenshots or GIFs of the feature. Abide by our guidelines for screenshots provided here.
Finally, add a link to the documentation, forum post, or repository as appropriate for the user to get more information on the feature. Also, be sure to provide a line to thank the contributors who helped provide the feature.
Product Managers are also responsible for drafting the tweets that correspond to your features.
Each tweet should start with Mattermost Release vx.xx now… or Mattermost mobile app release vx.xx now… and should describe the action the new feature allows them to do. This should be very similar to the headline written in the release announcement. Tweets should include the relevant hashtags: #mm524m, #opensource, #sre, #devops, #mattermost (where #mm524 is the release number).
Example Tweet: Mattermost Release v5.24 now lets you view and manage your team or channel members from the System Console. #mm524 #opensource #sre #devops #mattermost
Publicly share roadmap updates for the month’s upcoming release and large future feature with our community and provide a mechanism for getting their feedback and questions.
The video recording should be 5-7 minutes and focused on your area of ownership. Videos can be recorded using any recording software.
The audience is external and messaging is focused on the value the feature brings for a specific use cases. No customer names should be visible or used in your recording.
The recording includes:
Big features releasing in the current month.
Provide a demo of the feature (if possible, designs if not) and describe the value proposition - what benefit it has to users/customers.
Update on most requested or important features and their expected timelines (3+ months).
Share designs if available, provide an updated timeline of target release, and where users can reach out to discuss or learn more.
The video file.
Working title of the video (subject to change for marketing purposes).
Description of the video.
Desired publication date. Minimum 5-business day turnaround for all requests.
Request Marketing to also upload the completed video to our Wisteria account and send you a public link back to the video.
Post format:
On the first Monday of the new month, we'll hold an internal meeting (PM:Sales Meeting) to share our videos and answer any internal questions on features coming out for the month or highly anticipated features coming soon.
Please checkout roadmap updates for the month of {month} in our [Roadmap channel](https://community.mattermost.com/core/channels/roadmap)!
Katie will queue the retrospective for the next PM weekly meeting.
Navigate to Posts on the left hand sidebar.
To add a new integration select Add New.
The following includes guidelines for specific elements of an integration.
Short title of the integration, effectively its name. Examples:
BigBlueButton Plugin
Note: If the integration is a plugin, please include “Plugin” in the title.
To confirm whether an integration is a plugin, check its install instructions to see what it refers to. For example, if it says to configure it as a webhook in Mattermost and as a plugin in Jenkins, it's a plugin in Jenkins, not in Mattermost.
Note: If it's an Amazon-related integration, include both the official and short form in the title. For example "Amazon AWS SNS Plugin".
Include a short description of the integration, typically provided by the integration creator. You can also usually find a description of the integration on the GitHub project.
Note: Don’t end the description with a period.
This is the GitHub author of the integration. Depending on the details in their GitHub profile this should always be a full name or a company name. If neither a full name or a company name is public on their GitHub profile, using their GitHub username is also fine.
This is the programming language of the integration.
You can find this by clicking on the colored bar in the GitHub project, below the header containing Commits, Branches, Releases, Contributors, and choose the language(s) higher than 30%.
Tips:
Don't add "Makefile" unless it's the only language on the repo.
Use "Go" instead of "Golang".
If there is no language, set to "N/A" instead of leaving it blank.
This is typically found in the GitHub project, on the file named “LICENSE”. The license file should specify the license type.
For formatting, write "Apache 2.0", "BSD 2-Clause" or "BSD 3-Clause".
When the integration is not open source, mark the license as "N/A - not open source".
Link to the README file on the GitHub project which typically includes install instructions.
Link to their GitHub repo.
Typically found in the GitHub project by selecting the Releases tab in the header. Navigate to the oldest release, and use its date as the Date Published field. If there are no releases, go to the Contributors tab in the header, and select the start date as the Date Published field.
Choose the categories you feel best fit the integration. If you’re uncertain, compare what categories are used by Slack, Atlassian, and/or Salesforce (see list below). If you're still uncertain, ask the Integrations PM.
This is a logo of the integration, e.g. Facebook logo for Facebook integration.
Use an icon that's at least 80x80px in size.
Check the date of "Last Commit" on the repository.
The integration must have been updated in the last 12 months.
Every integration link must be related to Mattermost. Especially if the integration is not open source, it should be obvious to users that it's related to Mattermost.
Add integration/plugin creators to changelog’s list of contributors.
For example: For March release, add any new ones from February.
Post a tweet for all new integrations.
Once the integration entry has been added to the directory, please reply back in the Integrations channel with a screenshot of the entry that was added, a link to its install guide, and an at-mention for the Integrations PM. Example:
Add integrations with more than 50 stars to the “New and Noteworthy” category.
Add 8 most recent integrations to the “New and Noteworthy” category. The oldest on this list should be removed when a new integration is added.
Update the Date Last Updated for all integrations.
Remove any integrations that haven’t been updated in the last 12 months.
Note: Keep this relaxed. Some older ones are still important to keep.
Ask the Integrations PM if any integrations are good to add or remove from the "Staff Picks" section.
Note: These integrations should be kept in the "New and Noteworthy" category:
1% DRAFT
The purpose of this handbook is to provide more details on the Product Manager role, processes, and relations to other functions within the organization to foster success for employees in this role. This handbook may be shared with other functional areas so they may gain a better understanding of the Product Manager role, and develop a greater understanding for responsibilities and interaction areas.
Message the entire team via @pmteam in the Product Management channel on https://community.mattermost.com.
The PM team includes (in alphabetical order, by their username on https://community.mattermost.com):
@chen-i.lim
@eric.sethna
@john.lugtu
@katie.wiersgalla
@neil.barnett
Product Managers are organized within the R&D area of Mattermost; however, they have interactions with all departments and areas to ensure success of the product.
Product Managers are responsible for carrying out the strategic priorities of the product. They are tasked with ensuring the product is profitable by meeting customers and users existing and future needs. Understanding that each client and user have their own set of specific requirements, use cases, and preferences; a Product Manager must understand the patterns across a broad range of input and focus on exploiting value in the areas that will provide the greatest return for the largest audience.
Recommended Reading
What fundamental philosophies are predominant?
Pragmatic Marketing: “Your opinion, although interesting, is irrelevant.”
It’s all about the customer/user/buyer’s opinion/want/need
How do we make packaging decisions?
Prioritization framework
Tips on working with customers
Tips on working with the contributor community
Experimental, Beta, and General Availability of Features
Interview and ask questions to clients and prospects
Document findings and requirements
Share findings with designers and developers
Coordinate kick-off for planning activities of new features
Roadmap creation - what to add to roadmap and why
Socialize vision and roadmap internally and externally
Participate in Roadmap meetings
Capture SWAG estimates from design and developers to determine length project
Facilitate prioritization decisions in sprint and release planning meetings
Define requirements and coordinate design resources for features
Prepare and manage spec documents to organize planning, design, and stakeholder input of features
Ensure cross-collaboration between designers, developers, and QA
Create Jira tickets for features and bugs
Fast, Obvious, Forgiving
Determine feature availability: Team Edition or Enterprise Edition
Determine Packaging/SKU (E10 & E20)
TE OR EE
In-Code: if (this.props.buildEnterpriseReady && this.props.isLicensed)
Review with PM team and get approval from other leads as required
Validate “Won’t fix”, “Won’t do” tickets. Provide a final comment of approval so ticket can be closed by QA
Update Fix Version to “help-wanted”, which will run an automation that will automatically create a corresponding issue in GitHub
Provide updates to current release roadmap in PM meetings
Review and provide input on release announcements
Provide updates to Release manager on deprecated features, features being promoted from experimental or beta, and any breaking changes within a release
Review Release PRs and Community PRs to ensure the feature meets requirements for design and functionality. Approve PRs once feedback (if any) is addressed by developers.
Label = PM Review
Test for user experience, use case, design, corner cases, and bugs
May need to create Spinwick server by adding label = “Set up cloud test server”. The server is created in a few minutes
Add QA and UX resources as required
If there are config setting changes you will need to ask Development to change the setting for you
Work with developers to ensure the sprint work accomplishes highest priority bugs and projects on release plan/roadmap
Jira is the system used to manage work items to be completed by the development and QA team
Ensure tickets are available for features
Prioritize bugs
Answer questions posted by team members in planning or on tickets
Test features and provide input on PRs from Developers and Community members
Inform Release Manager and QA team of any changes that need to be released as a dot release (security or critical bug fixes)
Participate in any testing or validation required to verify fixes
Ensure fixes are moving through development and review processes efficiently
Provide Release Manager with information for changelogs and release announcements
Provide feedback from PM perspective and offer ideas for improving the release process
Provide feature demos on customer calls, for customer training initiatives and for Mattermost Academy
Participate in events and conferences
Update/create documentation for features/PRs
Maintain documentation on feature proposals (reference all design and development documentation)
Release notes should be written targeting an international IT Admin
Any in product instructions or documentation should never contain hard-coded links
Maintain product accuracy on mattermost.com/product and roadmap
Example (link to Eric’s permissions post)
Other Marketing (e.g. future webinars, event participation, etc)
Provide Roadmap status updates for Enterprise clients
Assist with Customer Support
PMs should be on sales/customer calls often; if not on at least a couple per week then request to be added in the CSM:PM channel and Pre-sales channel
Add/update Jira tickets to capture feature requests
Participate in and contribute updates via the Customer Request Triage meeting
Verify bugs reported by customers
Answer customer questions in Premier Support (PS: Customer name) Channels and in internal channels by CSM and Sales
Please encourage colleagues to file feedback in productboard when they are discussing requests in Mattermost channels, so that we have single source with all requests. PMs are responsible for reviewing the productboard feedback, and assigning it to relevant feature ideas. As they are reviewing the requests, PMs may also:
Work with Customer Success and Sales to clarify use cases, root issues, and pain points as well as the priority of the request to the customer
Propose alternate solutions and workarounds when they are available
Provide feedback on whether it's a "Won't Do" feature that we are unlikely to add to the product
Update the feature idea to link any implementation or design tickets
Update the Effort for the feature with a SWAG from the Engineering team
Update the feature idea to have a release timeframe (3 months, 6 months, future) or release version if the feature is planned
After adding the feedback to the relevant idea in productboard, the PM comments and mentions the reporter so they are aware the feedback has been processed, and then marks the item as Processed.
Ensure devs are aware and included on community contribution projects
Prep Help Wanted tickets with specifications on feature and designs as needed
Help teams come up with and prepare community contribution campaigns
Answer questions and coordinate resources to community contributors
Review community contributed PRs
Product Managers are mentioned to assist in answering product question escalations on Twitter. Twitter is monitored by the marketing team, and they will @mention the PM team in the Twitter channel when they need to escalate a question. PMs should respond to questions in their area of ownership.
Increase productivity of department
Make progress on quarterly goals and OKRs for department
Enable other departments
Training
Develop features for internal systems
Increase community awareness
Research and propose additional ways to engage with existing community and identify new opportunities for community engagement
Documentation that is linked in-product should always use a redirect in the form https://mattermost.com/pl/<default-page-name>/
instead of a hard-coded link to mattermost.com or docs.mattermost.com. This ensures in-product links are not broken in the event that they are moved.
To set up a redirect:
How many links do you need created?
Marketing will notify you when your request is complete, and will update the spreadsheet (add your links to the correct tabs).
If the destination URL has a hash (ex. https://destination.com/example-slug#anchor
), follow the directions for Yoast, otherwise, use WPEngine.
Login into the User Portal.
Go to the production mattermost.com instance in the dashboard and find the Redirect rules link.
Click the New redirect rule button in the top-right corner of the page.
You do not need to enter a name for the redirect.
For the Domain field, choose mattermost.com
.
For the Source field, enter the new direct you want to use in-product in the format of ^/pl/default-page-description/?$
.
For the Destination field, enter the full destination URL.
Open the Advanced Settings dropdown and for the Type:
Choose 301
(this is the default option) if the destination is unlikely to change.
Choose 302
if the destination could change. Browsers will cache and not pick up the change for a while if you set it to 301
.
Click the Save button. Your new entry will be located at the bottom of the list.
Test your redirect URL. This will be the URL in the format of https://mattermost.com/pl/default-page-description
.
Log in to the administration panel for https://mattermost.com/.
From the left-hand sidebar, go to SEO > Redirects.
On the top of the screen, ensure you are on the Redirects - Yoast SEO page header on the Regex Redirects tab.
Picking the redirect Type
Choose 301
(this is the default option) if the destination is unlikely to change.
Choose 302
if the destination could change. Browsers will cache and not pick up the change for a while if you set it to 301
.
In the Old url field, enter in the new direct you want to use in-product in the format of ^\/pl/default-page-description\/?(\?.+)?$
. Update the page description with your page information.
In the Url field, enter in the full URL with a $1
right before the hash (ex. https://docs.mattermost.com/example-slug$1#report-a-bug
).
This is so any URL params get placed in the right spot so the anchor behavior remains.
Click the Add Redirect botton and verify your entry is added to the list. You may need to page through to find your entry.
Test your redirect URL. This will be the URL in the format of https://mattermost.com/pl/default-page-description
.
To add a new autolink on the Mattermost Community Server:
The following cadence is used to product our Monthly Business Review deck.
Begin the month deciding on strategic ISPs, and ISPs from last month’s MBR
Strategic issues as ISPs discussed and decided
MLT invites MLX as appropriate
Time permitting, ISPs from prior MBR discussed and decided
MLT invites MLX as appropriate
Time permitting, have MLT feedback for 10 minutes at the end of this meeting
MLT leaders prepare for MBR by reviewing results with their directs and appropriate MLX teams (e.g. MLX Growth). Forecasts for FY23 Goals are shared, with context.
Slot for ad hoc ISPs--Tell CEO in Monday 1-1 if meeting is MLT meeting is needed
Otherwise, this is prep time for MLT and their directs/MLX
In first two months of the quarter forecast to end of quarter
In the third month of quarter forecast to end of next quarter
All monthly forecasts should have a comment with at least the following:
Complete MBR deck to share context, next actions, and escalate any ISPs
Slot for ad hoc ISPs--Tell CEO in Monday 1-1 if meeting is MLT meeting is needed
Otherwise, this is prep time for MLT and their directs/MLX
MLT leaders, directs & MLX (cross-department stakeholders) to complete their slides
MLT works with functional leaders (e.g. CSM, Growth, Support, etc.) help dial in data and commentary. Issues requiring escalation should have an ISP prepared.
Optional: MLT can prepare recordings linked to the deck
Deck made “Comment Only”. Opened to MLT comments ahead of MBR meeting
NOTE: Confidential issues (e.g. PIPs, HR, etc.) will be omitted
Complete MBR discussion, get MLT to full context on the business. Escalate & clear ISPs
MLT arrives having read the deck and made comments async (unless comments are sensitive, e.g. HR-related)
Maximum 20 minutes discussion per department
Time permitting, MLT can review ISPs queued
The is used to help coordinate the activities of the process. It's started on the second-to-last Monday of the month by Katie giving the team 14 days to complete the workflow.
Marketing has guidelines on the production of the video, which include adding an intro and outro on the video and minimum resolution requirements. Please view these guidelines .
Marketing will do the final production of the video for you. Create a to request this work including:
Once Marketing has finished producing your video and you have the link, post it to the . In the event that you are out of office for the first Monday of the month, please post prior to the first Monday.
After our internal meeting is held, Katie will post to the a cross post to encourage people to join the Roadmap channel:
This document outlines the internal process for updating . New integrations get submitted in the via .
Go to and log in with your account. If you don’t have an account, ask Marketing for access.
Note: License must be compatible with (e.g. not GPLv3, nor APGLv3). If it's not compatible with Apache 2.0, do not add the integration to the website.
Use Twitter to find official logos if none are provided by the integration creator. If there is no good icon/logo to use, go to and choose an icon that best fits the integration type.
License of the integration must be compatible with (e.g. not GPLv3 or APGLv3). The only exception is if the integration is not open source.
For example: .
Once the Integrations PM has acknowledged, please re-post to .
Keep up to date with features queued for the release
More complete information on the Design process can be found
Ensure designs follow our
that we use to guide whether a feature belongs in TE
Assist in identifying
If you need to test email notifications, you can set the email configuration based on on settings contained on
More information on how Jira is used can be found
Participate in Release Retrospectives (see example
Guidelines for
A redirect page from https://mattermost.com/ should be used in product instructions. (See instructions )
Author , and posts
Document and post feedback in
Feature and improvement requests from our Enterprise customers are logged by Customer Engineers, Customer Success, and Support in .
A single link: Submit a for your request. Please specify the in-product link in the form https://mattermost.com/pl/<default-page-name>/
, and the destination URL.
Multiple links: If you need more than a single link, enter the routes and corresponding destination URLs in the spreadsheet, on the Requests tab. Then submit a for your link requests. Just let us know you've put entries in the request tab (if there's other requests in there, please let us know the rows you're referring to).
On the , specific keywords in messages, such as MLT, display and behave as links that take you to a documented definition of the word MLT. These keyword links are particularly helpful for new Mattermost staff members ramping up on Mattermost-specific terms and processes.
We often refer to these hyperlinked keywords as autolinks because they're created using a Mattermost plugin called .
Define the word and URL to autolink on. For example, the term ISP is linked to the documentation in the .
On the Mattermost Community Server in the , ask to help add the new autolink to the Mattermost server. This ensures that everyone on the Mattermost Community Server benefits from having a quick definition at their fingertips when the term is used in messages and threads. For an example request, see: .
Problem Definition
Listen to current, prospective, and target customers and users to understand their problems and other solutions available to address their problems. Have a deep understanding of what the problem is, their use case, what's a “must have” to resolve the problem and what's a “nice to have”. Understand where the problem is with the deep context of a user/customer experience.
Document problem statements and use cases from interviews and feedback channels.
Conduct competitive analysis and market research.
Determine demand for a solution by validating propensity of problem or use case within our broader customer/user bases and market.
Document what is required by users or customers to solve the problem.
Draft 1-pagers and PRFAQs.
Strategy Alignment
Determine how problem statements align with direction and mission of your area of ownership and strategy of Mattermost. Determine priority of solving the problem and the scope at which it needs to be solved. Drive alignment and agreement on importance of priority. Say "no" when something does not align.
Score and prioritize features by impact, gain alignment from MLT, teammates, and GTM on the priority and scope of the required solution.
Document and share decisions and alignment discussions.
Solution Definition & Validation
Work with design and engineering to find solutions. Represent the voice of the user/customer to ensure must-have requirements are addressed. Coordinate external functions that need to be consulted in definition of solutions.
Write spec documents and produce low fidelity wireframes and user flows.
Determine packaging based on how the solution fits the needs of ICs, Managers, or Executives.
Validate solutions with users and customers to ensure they meet their use cases and requirements.
Solution Scheduling & Development
Work with developers, designers, and QA team to negotiate scope of functionality, resolve challenges, and ensure features meet quality standards. Represent resources and be the coordinator of collaboration across all functions and Eng teams.
Expose and resolve challenges between functions.
Test features to ensure key use cases are solved. Update stakeholders with expected timelines and changes to solution scope.
Solution Release
Work with Release Manager and Marketing to prepare customer and internal enablement and announcement materials. Ensure go-to-market and operations are prepared to accommodate adoption of new functionality.
Prepare release announcement from finalized 1-pagers/PRFAQs, record a demo of the feature, update public facing roadmaps and forums with release updates.
Complete product documentation and changelog information with assistance from Tech Writers.
Ready operational and customer-facing teams with training and enablement materials.
Solution Adoption
Advocate for adoption of the new value added to the product. Monitor feedback and iterate on improvements to improve experience.
Track feature usage and feedback through qualitative and quantitative data gathering.
Demo and share features with existing customers and users.
Iterate on feature with additional feedback from customers/users.
Senior PM Managers
All PMs
Release Manager, Head of UX
Update progress on features for current release
Triage unassigned Customer Requests
Share team updates and best practices
Gather input from PM colleagues on proposals to uncover blindspots
Mondays from 1:30pm to 2:15pm Palo Alto time.
Post agenda items directly in the meeting agenda (linked in the meeting invite).
Provide supporting documentation for advanced review. Confidential information should be posted in the PM:Private Channel.
PM on the Customer Request Rotation should have assigned all obvious unassigned requests prior the meeting.
Release Manager: Get updates from PMs on items scheduled in the Release Plan.
Queued agenda items. Some agenda items that take a large amount of time may be time-copped based on other agenda items queued.
Note action steps for agenda items, especially when there is follow up required for PM who did not queue the item.
Provide updates on action steps posted against previous agenda items.
This may include providing a follow up agenda item for a future meeting.
All PMs
Optional: Sales, BizOps, Marketing departments
PMs share roadmap highlights: Focus is on features with clear release timelines, and a clear benefit to customers, so GTM knows what is coming up soon they can talk to customers about.
Demos, 1-pagers and designs are shared as needed to illustrate the benefits
Open Q&A
Monthly meeting on 1st Monday of the month from 9:00am - 10:00am Palo Alto time.
Prepare a list of features you'd like to showcase during the meeting. The agenda of features PMs are presented are typically coordinated a few days in advance.
Prepare a short demo of the features. Show prototypes or designs if a demo environment is not available.
Prepare information that the team may need to be aware of regarding feature, and be prepared to answer questions about the feature.
Present your demos and share any other important information regarding features or upcoming product changes.
Answer questions from the team. It may be necessary to time-cop a particular topic to ensure we can share all the demos on the agenda.
Share recoring post meeting.
Share feedback survey post meeting.
1% DRAFT
The purpose of this handbook is to provide more details on the Product Design roles, processes, and relations to other functions within the organization to foster success for employees in this role. This handbook may be shared with other functional areas so they may gain a better understanding of the Product Designer role, and develop a greater understanding for responsibilities and interaction areas.
Message the entire team via @uxteam
in the UX Design channel on https://community.mattermost.com.
The Product Design team is made up of the following team members (including their username on https://community.mattermost.com):
Matthew Birtch (@matthew.birtch
)
Abhijit Singh (@abhijit.singh
)
Asaad Mahmood (@asaad
)
Product Designers are organized within the R&D area of Mattermost. However, they have interactions with all departments and areas to ensure the success of the product.
Product Designers are responsible for working with Product Managers to carry out the strategic priorities of the product. They are tasked with ensuring the product is designed to meet customers' and users' needs. Understanding that each client and user have their own set of specific requirements, use cases, and preferences; a Product Designer must understand the patterns and experiences across a broad range of input and focus on exploiting value in the areas that will provide the greatest impact for the largest audience.
The Mattermost team works on a monthly mobile app release process, with a new version submitted to the iOS App Store and Google Play Store on the 16th of each month.
Please refer to the Mobile Release Playbook for the release checklist.
Note: iOS App Store approval may take a few days after the 16th.
Note: T-minus counts are measured in "working days" (weekdays, Monday through Friday, excluding the listed statutory holidays) prior to release day.
The Mobile app release schedule follows the cloud/self-hosted release schedule to align all release testing cycles.
Schedule for Mobile App releases:
Feature Complete at T-24
This is the Feature Complete deadline for the release.
Cut the release branch based off the main
branch.
RC-1 cut at T-19
Cut RC builds based off the release branch for QA release testing. Release testing begins.
Note: More frequent RC builds may be requested by the QA team and the Release Manager as we get closer to the release date and as more regression fixes get merged.
Code Freeze at T-10
Release testing is completed.
QA approval should be ready by T-10.
Release Day at T-0
This page outlines professional development tracks available to all product team members (Product Managers, Product Designers, Technical Writers, and Product Analytics Engineers).
The courses listed below are suggestions and not all have been validated. Some topics do not currently have a suggested course yet. If you take a class that is useful, please consider adding it to this list.
Provide different professional development tracks that employees can use to grow their skills based on areas that are interesting to them in their career journeys.
Within the tracks, be more prescriptive on how to spend the budget, so there are less barriers for employees to use the budget on professional development.
Provide a process in which employees can be accountable for their own development and foster an environment of sharing their learnings.
Mattermost provides a Professional Development allotment of $500 to all staff. After Org 360 feedback conducted and shared in the 5/19/2021 Customer Obsession meeting, the product org increased professional development budget and professional development track, thereby increasing our investment in career development as employees grow with Mattermost.
Below are the various track discovered following research and discussions with product stakeholders. If you do not find a track or program of interest to you, please speak to your manager! We aim to be flexible in providing the right professional development that suits your interest and career progression.
Recommended for: Employees with 2+ years of tenure at Mattermost.
Track focus and outcomes: With a solid foundation in your functional area and of Mattermost Practices, employees are empowered to take courses to deepen their technical acumen in an area of interest. This may be to build deeper skills in an area they are already familiar with or in a new technical area they are not. The goal is to expand their knowledge on a technical topic that will improve their functional area and grow their professional skills portfolio.
Additional $3000 professional development budget for:
Functional training courses
Professional certifications
Subscription to trade publications or groups
Udacity Courses offer specific training programs over multiple weeks
Codecademy.com offers specific training course in programming
Recommended for: Employees with 3+ years of tenure at Mattermost.
Track Focus and Outcomes: Employees are empowered to uplevel their leadership skills to help them become more effective communicators, public speakers, and influencers. Deeply understand how leadership principles build alignment, best practices on how to apply the Leadership principles to your daily work in practice and in communication.
Pluralsight course: Technical Leadership 101: CodeMash
Pluralsight course: Managing Conflict Best Practices
Pluralsight course: Becoming a Change Leader
Pluralsight course: Leading Change: The Head, Heart & Hands Approach
PluralSight course: Leading with Emotional Intelligence
Ownership
PluralSight course: Culture of Learning: Executive Briefing
High impact
Self-awareness
PluralSight course: Leadership Guide for the Reluctant Leader
PluralSight course: Leadership for Non-managers
Earn Trust
PluralSight course: Building Trust and Commitment on Your Team
Recommended for: Employees with 1+ years of tenure at Mattermost.
Track focus and outcomes: Employees deepend how to be more agile, lean, data driven, and innovative.
PluralSight course: Understanding Lean and Value-driven Delivery
PluralSight course: Exploring Iterating Product Experiences
Coursera course: Innovation Through Design: Think, Make, Break, Repeat
Recommended for: Employees with 1+ years of tenure at Mattermost.
Track focus and outcomes: Employees are empowered to uplevel their written and speaking communication skills to help them become more effective communicators, public speakers, and influencers.
PluralSight course: Understanding Your Audience
PluralSight course: Writing in the Workplace: Email, Memos, Reports, and Social Messaging
PluralSight course: How to Have Difficult Conversations
PluralSight course: Visual Communication: Creating Engaging and Effective Technical Diagrams
Recommended for: Employees with 1+ years of tenure at Mattermost.
Track focus and outcomes: Our community is one of our Mattermost super powers. Learn more about the benefits of the community, how to make our community more inclusive, and how you can get more involved.
How to leverage community more
Marketing
Community
Become a mentor
Organization & influence & motivating others
Courses:
Linux Foundation class: Inclusive Open Source Community Orientation
Linux Foundation class: Fundamentals of Professional Open Source Management
PluralSight course: How the Open Source Way Promotes Creativity and Innovation
PluralSight course: Understanding and Counteracting Conscious and Unconscious Bias
PluralSight course: Fostering a Diverse and Inclusive Culture
PluralSight course: Get Involved!
Free learning resources:
Recommended for: Employees with 2+ years of tenure at Mattermost.
Track focus and outcomes: Employees are empowered to deepen their understanding of running a business and the other functions that drive business success.
Finance 101
Selling
Marketing
User research
Data Driven Decision Making
Pluralsight course: Empowering People to Unleash the Potential of Data: The Case for Data Literacy
Pluralsight course: Using Negotiating Techniques to Reach Agreements
Pluralsight course: Building Vendor Relationships That Work
Inspired by: https://www.techrepublic.com/article/impressive-professional-development-benefits-from-amazon-google-microsoft-and-more/
Online courses:
Masterclass
Codecademy
Code Complete, Steve McConnell - Best practices and guidelines for writing high quality code.
Design Patterns, Erich Gamma, Richard Helm, Ralph Johnson and John Vlissides (aka "Group of Four") - Fundamental reading on design patterns. Other design pattern books work too, this is one of the most popular.
Courses
Monetizing Open Source (Or, All Enterprise Software) - Required reading for business roles.
Papers and Course Materials
Framework for Improving Critical Infrastructure Cybersecurity. National Institute of Standards and Technology - Standards for internal Mattermost security processes and safeguards.
Computer Security in the Real World. Butler Lampson - Fundamental challenges with system security.
Course notes from CS513: System Security (Cornell University). Fred B. Schneider - Well written introduction to system security from one of the leaders in the field.
This chart outlines training materials by category. You can ignore the P1, P2, P3 priority ratings as these have been deprecated.
This table summarizes abbreviations used in the above link.
These levels serve to help Product Designers assess their opportunities for career growth in the Product Design function. The levels below follow a growth track in the art and craft of Product Design and not in a person management track.
Ownership
Scope: "What do I work on?" Scope is the domain over which you are expected to show ownership.
Executes on defined projects or tasks in their area of focus, directed by senior leaders.
High-Impact
Supervision: "How much do I rely on my Design?" Community: "How do others work with me?" The need to receive supervision is inversely related to the instinct to choose what is high-impact.
Receives detailed instruction on most projects or tasks. Asks questions, and knows when to stop and ask for help.
Earn Trust
Influence: "Who do I work with?" As more people and parts of the organization earn your trust, your influence grows.
Works effectively in teams to align priorities and manage execution on defined projects or tasks. Works directly under Senior-level designers.
Customer Obsession
Customer Impact: "How do I bring value?" Community spans both open-source and enterprise, but ultimately manifests in the same obsession for enabling customers to be successful.
Considers the customer's perspective when making decisions. Knows when to ask clarifying questions.
Self-Awareness
Interaction: "Who relies on me?" Iteration: "How do I improve myself and others?" Self-awareness yields an ability to seamlessly fit into any conversation or effort, interacting with a group to work towards the best possible outcome and always iterating towards the best possible outcome.
Regularly participates in team discussions for ongoing feature work. May lead discussions on smaller topics.
Ownership
Scope: "What do I work on?" Scope is the domain over which you are expected to show ownership.
Executes on defined projects or tasks in their area of focus, with limited direction.
High-Impact
Supervision: "How much do I rely on my Design?" Community: "How do others work with me?" The need to receive supervision is inversely related to the instinct to choose what is high-impact.
Receives general instruction on day-to-day work, and detailed instruction on new projects or tasks. Engages, and enables senior designers to deliver high quality work.
Earn Trust
Influence: "Who do I work with?" As more people and parts of the organization earn your trust, your influence grows.
Works effectively in teams to align priorities and manage execution on defined projects or tasks. Works directly under Senior-level designers.
Customer Obsession
Customer Impact: "How do I bring value?" Community spans both open-source and enterprise, but ultimately manifests in the same obsession for enabling customers to be successful.
nderstands and applies basic level best practices for customer impact within their daily work. Will ask for input on more complicated topics.
Self-Awareness
Interaction: "Who relies on me?" Iteration: "How do I improve myself and others?" Self-awareness yields an ability to seamlessly fit into any conversation or effort, interacting with a group to work towards the best possible outcome and always iterating towards the best possible outcome.
Regularly participates in team discussions for ongoing feature work. May lead discussions on smaller topics.
Ownership
Scope: "What do I work on?" Scope is the domain over which you are expected to show ownership.
Influences and executes defined projects or tasks and features across the product.
High-Impact
Supervision: "How much do I rely on my Design?" Community: "How do others work with me?" The need to receive supervision is inversely related to the instinct to choose what is high-impact.
Receives general instruction on new projects or tasks. Enables senior designers to deliver high quality work.
Earn Trust
Influence: "Who do I work with?" As more people and parts of the organization earn your trust, your influence grows.
Works directly with PM and ENG, providing input on the feature work to be done by the team, with product and engineering requirements.
Customer Obsession
Customer Impact: "How do I bring value?" Community spans both open-source and enterprise, but ultimately manifests in the same obsession for enabling customers to be successful.
Can navigate moderately complex decisions and thought process about how features and implemetations bring customer value, and can make decisions in these areas independently. Starts to understand and contribute to cross-feature and/or cross-team implications of customer impact.
Self-Awareness
Interaction: "Who relies on me?" Iteration: "How do I improve myself and others?" Self-awareness yields an ability to seamlessly fit into any conversation or effort, interacting with a group to work towards the best possible outcome and always iterating towards the best possible outcome.
Drops fluidly into feature team projects, ramps quickly and drives features to successful outcomes. Drives discussions on small and mid-size topics. Participates actively in discussions and efforts that cross teams. Actively seeks feedback and growth opportunities.
Ownership
Scope: "What do I work on?" Scope is the domain over which you are expected to show ownership.
Executes and delivers high impact features and design changes across the product.
High-Impact
Supervision: "How much do I rely on my Design?" Community: "How do others work with me?" The need to receive supervision is inversely related to the instinct to choose what is high-impact.
Receives minimal instruction. Engages and enables senior designers to deliver high quality work. Enages in the open source community to contribute design efforts in building new features and contributions to Compass, the Mattermost Design System.
Earn Trust
Influence: "Who do I work with?" As more people and parts of the organization earn your trust, your influence grows.
Works directly with PM and ENG, helping define the feature work to be done by the team, with product and engineering requirements.
Customer Obsession
Customer Impact: "How do I bring value?" Community spans both open-source and enterprise, but ultimately manifests in the same obsession for enabling customers to be successful.
Can navigate moderately complex decisions and thought process about how features and implemetations bring customer value, and can make decisions in these areas independently. Starts to understand and contribute to cross-feature and/or cross-team implications of customer impact.
Self-Awareness
Interaction: "Who relies on me?" Iteration: "How do I improve myself and others?" Self-awareness yields an ability to seamlessly fit into any conversation or effort, interacting with a group to work towards the best possible outcome and always iterating towards the best possible outcome.
Drops fluidly into feature team projects, ramps quickly and drives features to successful outcomes. Drives discussions on small and mid-size topics. Participates actively in discussions and efforts that cross teams. Actively seeks feedback and growth opportunities.
Ownership
Scope: "What do I work on?" Scope is the domain over which you are expected to show ownership.
Influences product vision for high impact features and design changes across the product.
High-Impact
Supervision: "How much do I rely on my Design?" Community: "How do others work with me?" The need to receive supervision is inversely related to the instinct to choose what is high-impact.
Defines new feature assignments for themselves, usually without requiring help. Enages and inspires other designers to engage in the open source community to contribute design efforts in building new features and contributions to Compass, the Mattermost Design System.
Earn Trust
Influence: "Who do I work with?" As more people and parts of the organization earn your trust, your influence grows.
Recognized by colleagues and community as a design authority, passively influencing discussions and behavior, and working in sync with PM, ENG, and customer teams. Frequently sought out by product and engineering leads for opinion on both product and design directions.
Customer Obsession
Customer Impact: "How do I bring value?" Community spans both open-source and enterprise, but ultimately manifests in the same obsession for enabling customers to be successful.
Can indepently make decisions affecting customer value/impact for complex topics within a product/feature-set. Leads cross-product, cross-feature, and cross-team discussions related to customer value/impact, and can bring the stakeholders to a decision point.
Self-Awareness
Interaction: "Who relies on me?" Iteration: "How do I improve myself and others?" Self-awareness yields an ability to seamlessly fit into any conversation or effort, interacting with a group to work towards the best possible outcome and always iterating towards the best possible outcome.
Frequently called upon to comment on product, customer and community discussions. Is very comfortable in customer and community discussions, aligns efforts, and develops superior solutions through discussion and analysis. Participates deeply in cross-team efforts. Begins to lead discussions on topics that reach outside of design.
Ownership
Scope: "What do I work on?" Scope is the domain over which you are expected to show ownership.
Influences product vision for high impact features and design changes across the product.
High-Impact
Supervision: "How much do I rely on my Design?" Community: "How do others work with me?" The need to receive supervision is inversely related to the instinct to choose what is high-impact.
Defines new feature assignments for other members of the team, usually without requiring help. Leads the coordination and management of campaigns when creating new features and products.
Earn Trust
Influence: "Who do I work with?" As more people and parts of the organization earn your trust, your influence grows.
Highly respected by colleagues and community as a design authority, actively influencing discussions and behavior with input and suggestions, and working in sync with PM, ENG, and customer teams. Engages with people in the broader design community (outside of Mattermost) to identify and and implement best practices within Mattermost.
Customer Obsession
Customer Impact: "How do I bring value?" Community spans both open-source and enterprise, but ultimately manifests in the same obsession for enabling customers to be successful.
Can indepently make decisions affecting customer value/impact for complex topics within a product/feature-set. Leads cross-product, cross-feature, and cross-team discussions related to customer value/impact, and can bring the stakeholders to a decision point.
Self-Awareness
Interaction: "Who relies on me?" Iteration: "How do I improve myself and others?" Self-awareness yields an ability to seamlessly fit into any conversation or effort, interacting with a group to work towards the best possible outcome and always iterating towards the best possible outcome.
Frequently called upon to comment on product, customer and community discussions. Is very comfortable in customer and community discussions, aligns efforts, and develops superior solutions through discussion and analysis. Participates deeply in cross-team efforts. Begins to lead discussions on topics that reach outside of design.
Ownership
Scope: "What do I work on?" Scope is the domain over which you are expected to show ownership.
Consults on product vision and strategy for product area, roadmap, and innovations across teams.
High-Impact
Supervision: "How much do I rely on my Design?" Community: "How do others work with me?" The need to receive supervision is inversely related to the instinct to choose what is high-impact.
Defines new feature assignments for members of other teams, usually without requiring help. Mentors and trains new team members and community designers while leading the coordination and management of design campaigns to create new features and products.
Earn Trust
Influence: "Who do I work with?" As more people and parts of the organization earn your trust, your influence grows.
Frequently sought out by product and engineering leads for opinion on product directions and technical discussions.
Customer Obsession
Customer Impact: "How do I bring value?" Community spans both open-source and enterprise, but ultimately manifests in the same obsession for enabling customers to be successful.
Has ownership for cross-product customer impact topics. Can anticipate complex issues early in the product development process (generally focused within Product). Starts to anticipate and resolve cross functional topics and issues.
Self-Awareness
Interaction: "Who relies on me?" Iteration: "How do I improve myself and others?" Self-awareness yields an ability to seamlessly fit into any conversation or effort, interacting with a group to work towards the best possible outcome and always iterating towards the best possible outcome.
Primary product design lead for projects, providing thought leadership in selecting and guiding these efforts. Works regularly with stakeholders outside of product. Is often the intial resource to drive design efforts for a new product or major feature.
Ownership
Scope: "What do I work on?" Scope is the domain over which you are expected to show ownership.
Defines product desgin and direction for entire product suites or product divisions.
High-Impact
Supervision: "How much do I rely on my Design?" Community: "How do others work with me?" The need to receive supervision is inversely related to the instinct to choose what is high-impact.
Independently defines new feature assignments across teams working on the same product or system. Influences, shapes and can redirect customer and community product developement discussions, rapidly understanding disparate viewpoints and leading discussions that align thinking and efforts to influence the product direction of large scale projects.
Earn Trust
Influence: "Who do I work with?" As more people and parts of the organization earn your trust, your influence grows.
Seen as the expert on product area of ownership. Engages with peers in customer and partner organizations to shape joint product development plans.
Customer Obsession
Customer Impact: "How do I bring value?" Community spans both open-source and enterprise, but ultimately manifests in the same obsession for enabling customers to be successful.
Works consistently with PM, ENG, and sales leadership to set goals and deliverables for customer value. Represents product design in discussions with non-design functions. Engages heavily with customers and community to share our design philosopy and principles. Applies our philosophy and principles to bring value to customer from work done all across the company.
Self-Awareness
Interaction: "Who relies on me?" Iteration: "How do I improve myself and others?" Self-awareness yields an ability to seamlessly fit into any conversation or effort, interacting with a group to work towards the best possible outcome and always iterating towards the best possible outcome.
Works consistently with PM, ENG, and Mattermost leadership to set organizational objectives and direction. Translates these objectives to clear and actionable projects for prduct design.
Ownership
Scope: "What do I work on?" Scope is the domain over which you are expected to show ownership.
Uses past experience and input from stakeholders to shape and define product design and new features and products for Mattermost. Translates learnings from the broader product design world to bring value to Mattermost's customers and community.
High-Impact
Supervision: "How much do I rely on my Design?" Community: "How do others work with me?" The need to receive supervision is inversely related to the instinct to choose what is high-impact.
Conceives, designs, explains, and oversees product design direction for nearly any feature or product with no outside direciton. Independently executes on cross-team (within prodcut) and cross-function (within Mattermost) effort with little or no supervision. Considered an expert in many design domains. Works across a broad set of product, design, and even technical and non-technical efforts.
Earn Trust
Influence: "Who do I work with?" As more people and parts of the organization earn your trust, your influence grows.
Highly respected by colleagues and community as a design authority, actively influencing discussions and behavior with input and suggestions, and working in sync with PM, ENG, and customer teams. Engages with people in the broader design community (outside of Mattermost) to identify and and implement best practices within Mattermost.
Customer Obsession
Customer Impact: "How do I bring value?" Community spans both open-source and enterprise, but ultimately manifests in the same obsession for enabling customers to be successful.
Works consistently with PM, ENG, and sales leadership to set goals and deliverables for customer value. Represents product design in discussions with non-design functions. Engages heavily with customers and community to share our design philosopy and principles. Applies our philosophy and principles to bring value to customer from work done all across the company.
Self-Awareness
Interaction: "Who relies on me?" Iteration: "How do I improve myself and others?" Self-awareness yields an ability to seamlessly fit into any conversation or effort, interacting with a group to work towards the best possible outcome and always iterating towards the best possible outcome.
Works consistently with PM, ENG, and Mattermost leadership to set organizational objectives and direction. Translates these objectives to clear and actionable projects for prduct design.
This section provides information about company-wide policies.
You can't impact what you don't measure. So at Mattermost we have defined standard operating metrics that we monitor to run our business. This section is dedicated to this effort.
Our main company measures are defined and tracked by way of our Standard Operating Metrics (SOM)
SOM: Metrics we believe give the best overall understanding of how the company is performing across departments.
Metrics LifeCycle
Choose them
Define them
Document them
Automate where possible
Reports and Dashboards
Monthly Going Well, Not Going Well & Next Actions (GNN) Review by MLT and MLX.
We use Focalboard to track our company-wide goals.
This page summarizes our processes and instructions.
Go to Goal - By the 2nd Tuesday of the month, in the left tab, click on Goals by DRI. In the board, scroll to the goals under your initials.
Share Forecast - Open each goal and update the "forecast" field with your forecast for the end of the period. E.g. For "Q1 Forecast", put in your forecast for Q1 ending number.
Set "Status - Status is a summary of how you feel progress is going.`
GREEN
- If you believe you'll hit your target by the end of the period, set status to Green
.
YELLOW/RED
If you feel your target is off-track, but there's still a chance to hit your target, set status to Yellow
, and if it's way off use Red
.
UNREACHABLE
If you feel it's impossible to reach your goal, set your status to UNREACHABLE
. Your MLT member will work with you to bring this to the monthly review meeting to discuss how we can adapt as a company.
DATA NEEDED
If you don't feel you're able to provide a forecast, or are unsure about anything in the process, set status to DATA NEEDED
.
Share "Going well" and "Not going well" - Add a comment to share more context about your goal. Include at least the following:
Going Well:
Share wins, successes, and good news in general. Share "Thank yous" to people who have helped, and @mention them if you feel appropriate.
Not going well:
Share the key issues you're facing. If the status for the goal is not Green
, share the key reasons why in this section.
Next actions:
Share key actions to be taken in the following month, with owners and checkins. Be specific.
Update the "Last Forecasted" - Update the field "Last Forecasted" with the date of your forecast so MLX knows it's been completed.
Issue/Solution Proposal (ISP) is a tool for increasing clarity, speed, and output in teams.
Note: Special thanks to Matt Mochary for the framework on which this system is based.
One of the core challenges in leadership is getting teams to buy into a decision intellectually and emotionally.
You create buy-in when you make people feel they're part of the decision, and that their input contributes to the final outcome. The more influence they feel they have on the outcome, the more they’ll be invested in the final result.
Broadly, there are three ways to make a decision. Each has a different time requirement, and creates a different level of buy-in. The methods that create the most buy-in also take the most amount of time.
For a decision where there's a clear decision maker based on Areas of Responsibility (see Type 1 vs Type 2 below), the decision maker announces a decision to the team, and answers questions. This is typical when a decision is within someone’s Area of Responsibility.
Example: A digital marketer who's responsible for managing the executing of advertising campaigns using different vendors would make a Method A decision on which vendors to choose, and let others know.
Pros:
Takes very little time.
Con:
Creates very little buy-in and gets no benefit from the team’s knowledge and experience.
A decision maker creates (or assigns someone to create) a written straw man (a hypothetical answer designed to inspire discussion), shares it with the team, invites team to give feedback (written and verbal), facilitates group discussion, makes everyone feel heard by repeating back their comments, and then makes a final decision.
Pros:
Creates more buy-in. Gets some minimal benefit from the collective wisdom of the team.
Con:
Takes more time.
A decision maker invites a team to a meeting where a dilemma is discussed from scratch with no straw man. The team shares ideas. The decision maker repeats back everyone’s ideas until they feel heard. The decision maker shares their own idea last (because theirs is the loudest voice in the room). Lastly, decision maker makes the decision.
Note that this is not a consensus decision. Buy-in is created by the decision maker confirming that they heard all ideas, not by accommodating all ideas.
Pros:
Creates the most buy-in. Gets a lot of benefit from the collective wisdom of the team.
Con:
Takes the most time.
Not surprisingly, the greatest benefits require the most work. If you want more buy-in and a better decision, you need to take more time in making the decision.
So, which method should you use? It depends on how significant the decision is, and how important buy-in is.
For everyday, low-impact issues (for example, entering a new reseller relationship), Method A is sufficient. For major, core issues (for example, Company 10-Year Vision), Method C is necessary. For everything in between (the vast majority of important decisions), Method B is optimal.
For Method B, we use the Issue/Proposed Solution method.
Team members will often want to bring up an issue and discuss it verbally. This is both inefficient (listening takes longer than reading) and ineffective (in verbal discussions the most vocal people often have the most influence).
Instead, we require that anyone who presents an issue at a team meeting do so in writing. The write-up should include both a detailed description of the Issue as well as their Proposed Solution. A team member asked to do a write-up might say “I don’t know the answer.” It doesn’t matter. They should take a guess and create a strawman. Even if they only have 10% confidence that their answer is the right one. And they should phrase the Proposed Solution in very bold, directive terms (“Do this ….”). This may seem aggressive, but it plants a flag in the sand which generates a much more productive discussion and a quicker decision-time, which is more important than appearing to be humble.
All Issues and Proposed Solutions are presented at the weekly Team Meeting, including a pre-recording that can be replayed asynchronously at high speed to save time.
Allow up to 5 minutes of discussion for each tactical (short-term) Proposed Solution and up to 20 minutes for each strategic (long-term) Proposed Solution. If in that time, the decision maker feels that they have enough context to make a decision, they announce and write the decision. The Solution is turned into one or more Next Actions with a DRI (Directly Responsible Individual) and Due Date for each.
We use an Issue/Solution Proposed (ISP) template to structure these issues, and typically include a recording of the issue so it can be explained quickly and concisely.
If the decision maker feels they don’t have enough context to make a decision, DO NOT spend more time talking about the Issue. Instead turn to the RAPID decision-making framework described below.
A Type 1 decision is a “one-way door”. Once it’s made, it’s very difficult to reverse. Acquiring a company, or discontinuing a product line are examples of Type 1 decisions.
As organizations get larger, there’s a tendency to use the heavy-weight Type 1 decision-making process on most decisions, including many Type 2 decisions. The end result of this is slowness, unthoughtful risk aversion, failure to experiment sufficiently, and consequently diminished invention. We need to fight that tendency.
Each time there is a decision to be made, rate it as Type 1 or Type 2.
Type 1 decisions should be made by the CEO.
Type 2 decisions should be made by someone who is not CEO, unless it impacts CEO-specific AORs.
Most decisions are Type 2.
When a decision is complex and can’t be reached efficiently even after a well-prepared ISP, we should use a RAPID framework. This is in specific cases when:
A team has become too large to easily get all of the needed voices in one room.
Consensus cannot be reached within 5-20 minutes of discussion.
Here is an Example of a RAPID. In an Issue/Proposed Solution using RAPID:
Someone identifies an issue or decision that needs to be made. They write up:
The Issue
The Proposed Solution
The list of people needed to make and implement the decision:
R (Recommend) = the one who first proposed the Issue and Solution.
A (Agree) = those people whose input must be incorporated in the decision. This is typically blank, unless is is the legal team to ensure no one is breaking the law. It should be very rare that anyone else's agreement is required for a decision.
P (Perform) = those people who will have to enact any decision and therefore should be heard.
I (Input) = those people whose input is worth considering.
D (Decide) = the one who will make the decision.
If Type 1, this should be the CEO.
If Type 2, this should be someone other than the CEO.
A section on the document for each person above to write their comments.
The R then reaches out to all the As, Ps, and Is to solicit their input. Once this input is received, the document is ready to be reviewed by the D. If the ISP involves an off-cycle budget change over $100K, R should work with finance team for their estimate of impact to financial plan.
The R schedules a Decision Meeting and invites the D, As, Is, and Ps.
If the issue is urgent, the R schedules this Decision Meeting as soon as it needs to be.
If the issue is non-urgent, the R can use the next Team Meeting as the Decision Meeting. This is much more efficient, and should be done whenever the issue is non-urgent.
At the Decision Meeting, the D reads through the document. If they have any questions, they asks them. If the questions can be fully answered in 5 minutes, they decide. If the questions can't be answered in 5 minutes, the D asks for another round of written responses on the document to answer the questions. At the next Team Meeting, the D reviews these responses, and decides.
Once the D decides, they write up the Decision (or asks the R to do so) along with all the Next Actions (each with a DRI and Due Date). The D then publishes this decision to the company via the appropriate ticketing system and/or other channels.
This section details all of the different ways the company communicates and at what cadence
We have a number of different ways we communicate. Use the right side bar to jump to a specific area:
Customer Obsession Meetings (COM)
Surveys
CEO Listening Tours
This is a bi-weekly all-staff meeting focused on increasing alignment and awareness of how the company, departments, teams and individuals serve our customers.
Customer Obsession is a key leadership principle and we emphasize its priority when we bring the company together. Colleagues who come from companies that aren't obsessed with customers have suggested we refer to this meeting as "All Hands" and not expect everything we announce - from spending company money to recruiting new talent - to be framed in the context of serving customers. Such expectations are typical and common, and therefore we don't have "All Hands" meetings and instead have "Customer Obsession Meetings" to continually remind us that our focus on customers is atypical and uncommon.
Attendees:
All Mattermost Staff
Chair: Amy Nicol
Co-Chairs: Co-founders
Objectives:
Reach alignment on near and long term goals
Reinforce our obsession with making customers safer and more productive
Bring awareness through key company updates and news
Celebrate team achievements and patterns of success
Time:
Bi-weekly meeting on Wednesdays from 8:00am to 8:25am Palo Alto time and once per quarter at 6:00pm Palo Alto time to allow APAC team members to participate.
Chair works 1-1 with presenters to prepare for them.
Team members can share meeting agenda topics with Chair via direct message. Must be shared at least 24 hours prior to meeting start and be aligned with the meeting objectives above.
2 - T-8: Chair and Vice Chair meet to review agenda. Vice Chair works with approriate presenters of agenda topics to develope slides for presentation
3 - T-1: COM prep meeting held with Chair, Co-Chairs, and Vice Chair and review the following items:
Meeting starts with thematic goal, including the theme statement, defining objectives, and actions the company is taking towards the goal.
Introductions for each Week 2 Welcome are confirmed by PeopleOps.
If new hire or manager is away, introduction is postponed to the following meeting.
New team members are introduced on their second week by their manager, including name, role, what they're working on, timezone, additional info as appropriate (max 2 minutes).
New hire can opt-in to introduce themselves if they choose (default is not to require public speaking).
Material for each agenda item is reviewed, and contains a link for more information such as a post to a channel, documentation or a blog post.
Each link shared in meeting notes should be publicly accessible to everyone in Mattermost.
If computer sound is shared during the call, test it prior to the meeting and install libraries or tools as required.
(Vice Chair) At 7:58am Palo Alto time on the day meeting is held, post a reminder in Customer Obsession Meeting channel. See here for an example.
(Chair & Vice Chair) Sign into their Zoom account to access recording and screenshare during the meeting.
(Team) Join the Zoom link in the header of the Customer Obsession Meeting channel, and open the Meeting Notes link in the header to see the agenda.
(Vice Chair) Start Zoom recording at 8:00am Palo Alto time.
(Chair and Co-Chairs) Run through the agenda, which comprises one or more of the following items:
Introduction: One of the founders does an introduction to the meeting. Usually to align company on short and long term objectives, to reiterate larger vision for the company, or to emphasize leadership principles.
Good News: News or updates shared by team members.
Week 2 Welcomes: New team members introduced on their second week by their manager, or optionally by the new team member themselves.
Main Topics: Align and educate team around challenges faced by Enterprise customers and around department near-term goals. Examples include: FOSDEM event highlights and learnings; Enterprise customer's path from pilot to production; department VPMOM share; key updates, use cases or stories from customers.
Links to publicly shared documents or slides may be included in meeting notes.
Feedback: At end of meeting, conclude meeting with a reminder to share feedback via survey.
(Chair) Share meeting recording (viewable only by signed-in users and non-downloadable) and link to feedback survey. See an example here. Note: Include the hashtag #com-recording
somewhere in the post.
(Chair) Post a link to the meeting recording in the header of the Customer Obsession Meeting channel and in the meeting notes.
(Chair) Collect feedback from survey and add to next meeting's draft agenda for Chair and Co-Chairs to review.
(Presenter) Any presenter that introduces a new acronym needs to include this in the Mattermost Acronyms Focalboard.
Every 6 months we'll be asking staff to spend around 3 minutes completing a staff enablement survey of 12 engagement questions, plus identifying their organizational leader.
The enablement survey will be announced in COM one week before the survey goes live.
The survey link will be shared at the beginning of COM.
The link will be posted in the COM channel with "Thumbs Up" emoji reaction.
All staff are asked to complete the survey and signal completion by clicking on "Thumbs Up".
Ideally, the meeting will conclude after "Thumbs Up" count reaches attendee count but this is not a requirement.
An analysis of the results should be prepared and presented within the next 2 - 4 weeks in COM.
Links to previous staff enablement surveys:
Listening to feedback is vital to iteration and to continually improve everything we do.
Feedback and listening is at the core of our self-awareness leadership principle. We have 1-1s with managers, regular pulse and engagement surveys, People team outreach and conversations, and annonymous feedback available in every weekly Customer Obsession/All-Hands Meeting. CEO Listening Tours are another way we listen.
CEO Listening Tours happen over Zoom in meetings around 25-30 minutes with different groups of 5-8 staff, typically within the same department or in a related function. Managers of the team members in the group are typically not included in the meeting.
Some notes about Listening Tours:
It's an opportunity to hear from staff about their likes and wishes, which could be about their team, their department, the company in general, or on any topic. These could be likes and wishes off the top of your head, or maybe something you've been thinking about for a while. This simulates an open feedback session at MatterCon where we would ask people to share their thoughts and feelings.
The priority of the meeting is listening. During these sessions the CEO takes notes and refrains from commentary, though may ask follow-up questions. Notes are "default open" to be shared with managers, executives, and anyone in the company.
At the end of the session the CEO reads back what they heard. The notes are shared with the management team/s of the group.
It's then up to managers to decide how to process and address the feedback at the team level. The CEO can also incorporate the information at the company level.
In the past, participants and managers of listening tours have found the meetings productive for uncovering blindspots at the company and within departments.
If you're not able to make a particular listening meeting, please ping @amy.nicol to add you to a different slot.
How to participate in Listening Tours:
Join us: Attend the scheduled meeting, or if it's not convenient, ping @amy.nicol to join a different meeting slot.
Share about yourself: Please introduce yourself with the group (even if we all know each other), with your name, your role, the city and country you're in, and what time it is there.
Share a like and a wish: If you'd like to share feedback, in the form of a like and a wish, please share it when you feel appropriate. Your feedback can be about anything, something recent ("Wish Zoom was more stable") or something you've been thinking about or talking about for a while ("Really like the Social Coffee channel and meeting people across the company").
Confirm you've been heard: As feedback is read back, share if what you had to say has been accurately captured to be shared with our leadership team, execs, and managers.
Listening tours are just another way we gather feedback so we can iterate and improve everything we do. Thank you for helping speed us on our journey of continual improvement.
A GNN Update is a concise way to share out what's "Going Well", "Not Going Well", and "Next Actions" on a specific initiative or goal.
Going Well: What's going well, and what would we want to amplify or repeat?
Not Going Well: What's moving slower than expected? What's in our way?
Next Actions: Based on what's going well (things we want to amplify or repeat) and Not Going Well (problems we need to solve), what are the next actions we want to take in the next 1-2 weeks? Next actions should include who is responsible for them, a due date and what the expected outcomes and imapct of the next actions.
If a GNN has been shared previously, the Business owner should share the following in their next update:
Outcomes of previous Next Actions: Share what happened after the last set of Next Actions were shared out, good and bad. If the Next Action wasn't completed, explain why, and then what we'll do next time to complete the action.
Link to previous GNN Update: Add a link back to the previous GNN update as a reference.
Each month we review our progress against our company-level standard operating metrics.
The GNN Updates are prepared by business owners with input from the data owners.
In the MBR we align on the most important opportunities to accelerate the company, and supporting the DRI with Next Actions across the company to bring a goal back to success.
This document summarizes the internal security policies at Mattermost, Inc.
The open source Mattermost Team Edition is used by thousands of teams around the world. Development is aided by hundreds of open source contributors, with full access to the product source code, who have a vested interest in keeping the software secure and vetted.
As new threats emerge, a responsible disclosure policy is in place for the community to confidentially report security issues so they can be addressed by Mattermost, Inc. prior to documenting security updates publicly.
The commercial Mattermost Enterprise Edition extends the security and productivity benefits of the open source solution with support for advanced security, management, scale, and policy compliance features for complex organizations.
Prior to implementation, potential code changes are discussed and documented in Mattermost's issue tracking system.
Security tickets are confidential to Mattermost, Inc. staff, who are under NDA, and specially tagged to avoid disclosure.
All potential code changes are mapped to tickets prior to acceptance, with the exception of trivial changes and bug fixes.
To uphold security, quality and reliability standards, all potential changes submitted by open source contributors must pass an accepting pull requests vetting process prior to submission.
Clarity and readability of code is enforced through the Mattermost contribution checklist.
After submission, all proposed changes require at least two code reviews for reliability, quality, and system security.
All open source contributions are available for public inspection and commentary before and after acceptance.
Mattermost uses a responsible disclosure policy to accept confidential reports of new threats, so they can be addressed either immediately through a dot release, or by the next monthly release depending on potential impact.
When Mattermost software undergoes security and penetration testing at customer sites security updates are added to the core software and publicly documented by release.
Critical updates are released for urgent, high priority security issues or critical losses of functionality that should not wait for the next monthly release.
Mattermost software has a mandatory upgrade policy and customers and users need to be on the latest release to receive critical updates.
Critical updates are delivered as dot releases, for example a critical update to release 3.1.0
would be named 3.1.1
.
Customers and subscribers to the Security Bulletin mailing list receive notifications about all critical updates.
In addition to checklists for quality and reliability, code changes receive multiple reviews for the following system security design principles:
Reducing information disclosure
Reducing attack surface
Protecting against denial of service vulnerabilities
Preventing message spoofing
Preventing cross-site scripting
Preventing cross-site forgery
Preventing remote code execution
The following resources are monitored for information about new security threats and attack vectors.
All dependencies are updated on a regular basis to ensure Mattermost uses the latest security updates.
Do you maintain a quality management system (QMS) approved by management? Does your quality management system (QMS) include coverage for software application security principles?
Yes.
Is quality management system (QMS) content published and communicated to all relevant employees?
Yes.
Is quality management system (QMS) content reviewed and updated (if appropriate) at least once per year?
Yes.
Is there defined management oversight who is responsible for application quality and security reporting and signoff?
Yes.
For all IT systems including but not limited to servers, routers, switches, firewalls, databases, and external social spaces, is management approval required prior to creating all user and privileged accounts (e.g., system or security administrator)?
Yes.
For all IT systems including but not limited to servers, routers, switches, firewalls, and databases, are privileged accounts (e.g., system or security administrator) logged at all times and reviewed on at least a quarterly basis?
Yes.
Are all system, application and device password files encrypted using an industry standard encryption algorithm where technically feasible?
Yes
For all IT systems including but not limited to servers, routers, switches, firewalls, and databases, do privileged accounts (e.g., system or security administrator) that communicate directly with the internet, contain any personally identifiable information (PII) such as: social security numbers, credit card numbers, patient health record information, or other confidential records?
Yes
Is all sensitive, protected health information (PHI) and personally identifiable information (PII) protected using an industry standard encryption algorithm where technically feasible?
Yes
Are information assets classified?
Yes.
Are security roles and responsibilities of personnel defined and documented in accordance with the organization’s information security policy?
Yes.
Is a background screening performed prior to allowing personnel access to Scoped Systems and Data?
Yes.
Are new hires required to sign any agreements upon hire?
Yes.
Is there a disciplinary process for non-compliance with information security policies?
Yes, disclosure of confidential information or egregious disregard for documented security policies is grounds for termination.
Is there a personnel termination or change of status process?
Yes.
Is access to and maintenance of applications, systems, network components (including routers, databases, firewalls, voice communications servers, voice recording servers, voice response units (VRU) etc), operating systems, virtualization components, hypervisors, or other information objects restricted to authorized personnel only?
Yes.
Is access to and maintenance of applications, systems, network components (including routers, databases, firewalls, voice communications servers, voice recording servers, voice response units (VRU) etc), operating systems, virtualization components, hypervisors, or other information objects granted based upon need-to-know job function?
Yes.
Are unique user IDs required for all user and privileged accounts (e.g., system or security administrator) to access all IT systems including but not limited to servers, routers, switches, firewalls, and databases?
Yes.
Are passwords required for all user and privileged accounts (e.g., system or security administrator) to access all IT systems including but not limited to servers, routers, switches, firewalls, and databases?
Yes.
Are there written network password policies and/or procedures?
Yes.
Is password administration employed for critical systems?
Yes.
Are passwords prevented from being displayed in clear text during user authentication or in electronic/printed reports?
Yes.
If user accounts are assigned to non-permanent personnel (e.g., contractors, consultants) for troubleshooting purposes, are the accounts disabled or removed after each use?
Yes.
Is there a risk assessment program that has been approved by management, communicated to appropriate personnel, and has an owner to maintain and review the program?
Yes.
Is there an information security policy that has been approved by management, communicated to appropriate personnel, and has an owner to maintain and review the policy?
Yes.
Is there a vendor management program?
Yes.
Is there a respondent information security function responsible for security initiatives?
Yes.
Is there an asset management policy or program that has been approved by management, communicated to appropriate personnel, and has an owner to maintain and review the policy?
Yes.
Are management approved operating procedures utilized?
Yes.
Is there an operational change management/change control policy or program that has been approved by management, communicated to appropriate personnel, and has an owner to maintain and review the policy?
Yes.
Are system backups performed?
Yes.
Are firewalls in use for both internal and external connections?
Yes.
Are firewalls or IPS(s) secured against unauthorized access from the internet, Extranet, and Intranet users?
Yes.
Are vulnerability assessments, scans, or penetration tests performed on internal or external networks?
Yes.
Are incoming emails scanned for questionable file attachments?
Yes.
Does the company use spam filtering software to reduce the number of unsolicited emails?
Yes.
Are email attachments scanned by anti-virus software?
Yes.
For more information on Business Resiliency, see the Business Continuity Plan.
Is there an established Business Resiliency program that has been approved by management and communicated to appropriate personnel?
Yes.
Has a Business Impact Analysis been conducted?
Yes.
Is there a formal process focused on identifying and addressing risks of disruptive incidents to the organization?
Yes.
Is there an established Business Resiliency program that has been approved by management and communicated to appropriate personnel?
Yes.
Are specific response and recovery strategies defined for addressing risks of disruptive incidents to the organization?
Yes.
Are formal business continuity procedures developed and documented?
Yes.
Has senior management assigned the responsibility for the overall management of the response and recovery efforts?
Yes.
Is there a periodic review of your Business Resiliency Program?
Yes, annually.
Is there an Influenza Pandemic/Infectious Disease Outbreak Plan?
Yes.
Is there insurance coverage for business interruptions or general services interruption?
Yes.
Is there an internal audit, risk management, or compliance department with responsibility for identifying and tracking resolution of outstanding regulatory issues?
Yes.
Are there policies and procedures to ensure compliance with applicable legislative, regulatory, and contractual requirements to address intellectual property rights on business processes or information technology software products?
Yes.
Is there a records retention policy covering paper and electronic records, including email in support of applicable regulations, standards, and contractual requirements?
Yes. For example, records of customers with NDAs are retained in the event an NDA is terminated and requires destruction of records.
Is licensing maintained in all jurisdictions where the business operates or where licensing is required?
Yes.
Is there an internal compliance and ethics program to ensure professional ethics and business practices are implemented?
Yes.
Are policies and procedures maintained for enabling compliance with applicable legal, regulatory, statutory, or contractual obligations related to any information security requirements?
Yes.
Is there a formalized governance process to identify and assess changes that could significantly affect the system of internal controls for security, confidentiality, and availability?
Yes.
Are there documented processes, procedures, standards and templates used in your SDLC process?
Yes.
Do the materials above include references to application security best practices and principles being followed?
Yes.
Are design and code reviews performed as part of your SDLC processes?
Yes.
Are security considerations (checklists, standards, and policies) referenced in the design and code review?
Yes.
Is application code managed in a secure configuration management system with access controls?
Yes.
Is there a configuration management plan and are release artifacts maintained in a configuration management system?
Yes.
Are test plans and records kept that reflects the tests performed and results observed for each release?
Yes.
Is a release criteria defined, measured and reported on to confirm targeted release quality is achieved?
Yes.
Do you work with third parties that may have access to your IP and sensitive data?
Yes, we may employ vendors and consultants, including third-party security analysts.
If so, is access to data controlled by terms of Non-Disclosure Agreements?
Yes.
Is internal company training available and performed commensurate with personnel roles and responsibilities?
Yes.
Does training include security awareness?
Yes.
Does training include education on policies, standards, procedures, and updates when needed?
Yes.
Are personnel training plans and records kept for internal company compliance purposes?
Yes.
Are results from the execution of test plans reported and used to track and justify release readiness?
Yes.
Does the quality assurance organization have authority to delay shipment of releases due to non-conformance reasons?
Yes.
Is some form of static code scanning performed as part of the release acceptance? What tools are used?
Yes, static analysis tools include ESLint and gofmt.
Is some form of dynamic code scanning performed as part of the release acceptance? What tools are used?
Yes, Jenkins is used for dynamic code scanning as part of the release process.
Do you have a documented company security incident response process?
Yes.
Do your maintenance releases include fixes for both quality and security related issues?
Yes.
Do you provide dedicated security patches for software versions that are released and supported in the field? How?
Yes. Security patches may be provided on the latest release when applicable.
Is there proactive notification provided to customers and software partners (PTC)? How?
Yes. Security updates are announced via email to customers as well as mailing list subscribers.
Is there a specified response policy that includes the timeframe issues are to be addressed?
Yes, please see: https://about.mattermost.com/support/.
Technical infrastructure, including network security, servers and access control protocols are regularly reviewed for potential threats and vulnerabilities.
Business process, HR process and policies are regularly reviewed for potential threats and vulnerabilities.
A penetration test on the software is performed regularly. A copy of penetration results may be requested by customers upon five (5) day written notice at any time, but no more than once per twelve (12) month period.
This document outlines Mattermost, Inc.'s Disaster Recovery and Business Continuity Plan (DRBCP) informed by the Federal Financial Institutions Examination Council guidelines on Business Continuity Planning in the context of Mattermost, Inc. being a vendor providing self-hosted software and consulting services to financial institutions.
Because Mattermost software runs within a customer's data center, behind a customer's firewall and existing layers of security, without dependency to services hosted by Mattermost, the disruption of the business continuity of Mattermost, Inc. does not immediately impact the operating continuity of its customers. It does affect Mattermost's ability to answer support requests, provide consulting services, and provide new improvements or patches to Mattermost software.
At a high level, precautions include:
DRBCP is tested, evaluated and refined annually to ensure our processes are working and up-to-date.
As support is the most critical service offered, multiple channels for support engagement are available and monitored, including email, a Mattermost community server available on web, desktop and mobile, online forums, online forms, social media channels (Twitter and Facebook), and for Premier Support customers, we offer a telephone-based call center.
Subject Matter Experts for escalations are available in at least three centers in different timezones to provide redundant coverage should communication with one or multiple centers be disrupted. Mattermost staff use a diverse set of operating systems, including Mac, Windows, and different distributions of Linux, and a diverse set of global internet service providers, to reduce the potential damage of a single strain of malware, single desktop computing exploit, or single telecommunications outage.
As further redundancy, we have a network of partners around the world skilled in Mattermost technologies to be contacted for assistance for critical customer issues.
As further redundancy, we have a community of several hundred engineers around the world and over a thousand contributors to our online forums, who have sufficient access and expertise in Mattermost's open source technologies that could be contact in the highly unlikely event both Mattermost, Inc. and our partner networks are unable to service our customers.
As further redundancy, Mattermost provides open source code for its core server technology, mobile applications, desktop applications, and a wide array of extensions which allows customers to have transparency into the functionality of the software and solve the issue with their internal technical teams should a massive worldwide failure of Mattermost, Inc., its partners and its community arise.
Mattermost, Inc. is headquartered in Palo Alto, California with a distributed organization across three timezones, and is therefore not easily affected by typical causes of business disruption, such as local failures of equipment, power, telecommunications, social unrest, fire, or natural disasters. Even so, threats considered in the context of business continuity are categorized by impact of the disruption.
Effect: Emergency response times exceed expectations.
Solution(s)
Level 1 (Critical Business Impact) and Level 2 (Major Business Impact) support requests are received by on-call support staff, as well as three supervisory staff who can monitor and escalate issues should the assigned staff member appear to be unavailable or unable to respond to the request within the SLA time allotted.
As an additional safeguard, when an L1 or L2 escalation is reported, a notification is sent via the company's internal Mattermost instance to all qualified support staff to be aware of the issue, and any member can step in if it seems follow up may not be achieved within SLA expectations.
Mitigation(s)
Mattermost, Inc. employs support staff and engineers in multiple timezones to increase availability, reduce response times and to reduce the risk that key support staff would be unavailable to service emergency requests.
Effect: End users at customer sites deploying on HPNS do not receive mobile push notifications.
Solution(s)
Mattermost, Inc. can re-deploy the service from backup to new infrastructure, should its existing infrastructure suffer an outage.
Mitigation(s)
HPNS is available as open source software hosted on GitHub.com, allowing enterprises an option to compile and self-host the service, should they choose not to use HPNS hosted by Mattermost, Inc.
Effect: Unable to communicate with Mattermost, Inc. support team during emergency
Solution(s)
Should a support channel be out-of-service, Mattermost, Inc. provides redundant support options through email, online ticketing, and (for customers who have purchased core access Premier support) online message via Mattermost.
Effect: Reduced capacity to continue business operations, depending on attack.
Solution(s)
Mattermost, Inc. staff uses multiple anti-virus solutions for detecting and removing malicious software and regularly backs up key systems to delete infected systems and re-deploy its infrastructure. Moreover, the company uses a range of Windows, Mac, and Linux-based workstations, reducing the probability of a company wide disruption from a single strain of malicious software.
Effect: Reduced capacity to continue business operations, depending on attack.
Solution(s)
Mattermost, Inc. runs multiple monitoring and alerting services to detect and isolate suspicious traffic and requests in order to minimize downtime from potential online threats.
Should our self-hosted Mattermost instance be disrupted we can, if needed, quickly re-deploy the solution within our VPN.
Effect: Reduced capacity to continue business operations.
Solution(s)
Mattermost, Inc. employs staff and engineers in multiple timezones and geographic areas, reducing the risk of significant disruption that an influenza pandemic or infectious disease outbreak would cause to business operations.
Effect: Reduced ability to continue sales operations.
Solution(s)
While there is no current failover plan should our online CRM system become disrupted, we have SLAs with our CRM vendor - which is used by thousands of other organizations - and believe the probability of sustained outage is low.
Effect: Reduced ability to continue HR and internal operations.
Solution(s)
While there is no current failover plan should our online HR or intranet system become disrupted, we have SLAs with our vendors - which is used by thousands of other organizations - and believe the probability of sustained outage is low.
This section provides information about company-wide processes, including
Issue/Solution process
Company agreements
Publishing process and guidelines
Quality control process is a work-in-progress, but is based on the principles of iteration and empowering everyone to write an MVP.
Everyone in our community, including users, contributors and staff, should feel empowered to contribute minimal documentation that adds to or improves existing content.
Typical barriers to contributing includes:
Uncertainty of where to add content
Uncertainty of how to structure the content (paragraphs etc)
Too many rules and guidelines
English not first language
Intimidating comments or feedback
Limited or no experience in writing documentation
Our quality control process should ensure we reduce or in some cases remove these barriers to empower everyone to contribute to our public web properties.
In addition to empowerement, a second key principle is iteration.
When we iterate, we do the smallest thing possible that adds value, and get it out as quickly as possible. By iterating in partnership with stakeholders, we're quickly listening, understanding, learning, and shipping.
Thus, the quality control process will be focused on post-publication, where updates can be made after the initial version of content has been published.
Mattermost documentation is presented in various forms. We have product documentation, a Handbook, API guides, developer documentation, in-product copy, and microcopy. While there are different audiences for all these bodies of work, there are some guiding principles that should be applied to all our content.
The contents of this document can be applied to our product documentation, Handbook, developer documentation, and API guides. In-product copy and microcopy are covered in a separate guide.
Apply the style guide in the following situations:
When you create a new document.
When you convert a document from Markdown to reStructuredText.
When you revise a document.
Always think about the audience that will be reading your writing. Our audience comprises multiple personas, but we typically communicate with a technical audience and want to present Mattermost as being a friend of the practitioner in development, IT, and operations. It must be accurate and clear, and easy to navigate.
The document structure should be consistent, as should the left-hand navigation sections. For example, each of our tools' documentation includes a Getting Started section, an Overview section, and the section names are the same. This is as much for us as it is for our audience - consistency makes it easy for contributors to help us with content, and helps provide context and familiarity to readers.
Write in the context of achievement. The documentation should help Mattermost users and administrators achieve their goals. Write imperative sentences as much as possible. Imperative sentences begin with verbs and give instructions, information, and advice to help people install, administer, and use Mattermost with success. Use positive constructs as much as possible, but note that a negative construct can act as a warning that causes a reader to pay closer attention to the content, resulting in higher levels of accomplishment.
Write to facilitate scanning. Readers need to find information quickly. People don't read documentation as much as they scan it for solutions to their immediate problem. Writing and presentation styles that seem redundant in essays or other texts are often helpful to people scanning for information.
One of our ongoing initiatives is to ensure our documentation is written in natural, clear language. We also focus on empathy and ensuring that we set our readers up for success. This section of the style guide is about content we reuse across our documentation.
Visitors to Mattermost product documentation look for confirmation that a given feature is supported as part of their subscription plan and available in their self-hosted or Cloud-based deployment. This information is placed prominently at the top of every documentation page for easy scanning.
Plan and deployment details can be added to new product documentation pages using the following RST syntax that uses a Sphinx include
directive:
The include
directive points to an RST file, and the file you specify is one of 12 templated files that cover all combinations of plan and deployment support available in the /_static/badges
directory.
Note: The :start-after
line is important and shouldn't be omitted. The nosearch
attribute is present in the templated RST files to instruct Sphinx not to return the templated files in search results. The include directive tells Sphinx to hide the nosearch
text present in the templated RST files when publishing the page.
Users visit product documentation looking for a clear, golden path to success. As software complexity grows, the paths to success can become less straightforward and dependent on customer-determined variables like operating systems, databases, and product release versions.
Organizing product documentation content in selectable tabs is an effective way to reduce clutter and reduce the amount of time readers spend looking for answers. Tabs can display more product information on a page without requiring the user to scroll through an entire page of content, and readers can reach relevant details with just a glance.
Content can be formatted to display in tabs using the following RST syntax:
Note that tabbed content syntax applies only to RST source files and is not yet available within Markdown source files, and that spacing and indentation are important elements of the syntax. When previewing draft work, if tabbed content isn't displaying as expected, carefully review spacing and indentation.
When presenting content in tabs, tab names must be exactly the same across all instances, for consistency.
"From Mattermost version 6.0..." vs "In Mattermost versions up to v5.39"
The product documentation site returns and prioritizes configuration settings in search results. This is achieved by adding metadata to each configuration settting section in the form of a directive and its options. Please see https://github.com/mattermost/docs/pull/5911 for comprehensive details on how this search engine was designed and implemented in the source code via Sphinx.
This metadata is positioned directly above each section header on each config setting docs page, and will look something like this:
The directive itself needs a unique identifier, such as web-useletsencrypt
. The directive's options, including displayname
, systemconsole
, configjson
, environment
, and description
essentially duplicates the config setting details. We're doing this so that the config setting details readers want show up on the search results page.
Note that we're currently manually duplicating config details (in this directive metadata as well as the docs content itself), but we'll automate this in the future to ensure only one source of data needs to be maintained. (This manual step is a stepping stone towards that automation approach).
The setting directive supports the following options:
displayname
: User-friendly text that is displayed as the name of a config setting systemconsole
: The location in the System Console of the config setting configjson
: The config.json name of the config setting environment
: The environment variable for the config setting description
: Description of the config setting; can be any length
Note: the description
option also supports basic reStructuredText markup but doesn't support nested directives within that option.
When documenting a new Mattermost configuration setting, ensure you add and populate the metadata in the source file to ensure the config setting can be returned in search results. Missing metadata will result in missing search results. The configuration settings source files contain many examples to work from.
While we don't strictly follow a specific Style Guide, we've based our Style Guide on the Chicago Manual of Style for the most part. We also borrow conventions from the AP Style Guide. In cases where we have a blend of the two, we've provided references and explanations.
We try to keep the following top of mind when creating content:
Work on the premise that "Every page is page 1", as a large portion of users access our documentation directly from a Google search
Add a summary to the top of each page for readers to be able to quickly assess the content for suitability
Break long sections into smaller, easily digestable subpages
Have at most one key point or action per paragraph
Refer to one thing or idea with the same word throughout the page
Use ordered lists or bullets where appropriate, as they are generally easier to read than long blocks of text
Minimize content so it can be found and remembered. Keep pages short, modular, and focused on a single topic
Mattermost documentation is read and used in many countries/regions and cultures. For this reason, you must consider cultural differences on a global scale. Names, places, events, and actions should be chosen as carefully as possible to avoid misunderstanding.
Also remember that English isn't the primary language of many readers of the documentation. Keep the following advice in mind when writing:
Choose words with one or very few meanings.
Use simple verb forms in writing. Most verbs in the simple form are likely to have an equivalent in another language.
Avoid jargon and slang words.
Limit difficult words to technical terms where their use is unavoidable.
Always make sure that your spelling is correct.
We write in English and use American English. This means we use "z" instead of "s" in words like "organization". It helps to set your browser and editing tool to use a US dictionary so that if you inadvertently use British English, you'll be alerted. Currently, our documentation is not localized, but many other aspects of Mattermost's tools, such as in-product copy, are.
One very important rule is to avoid constructs where you are forced to write either he or she, or his or her. You can use they or their as singular forms instead. As we write in first-person, we generally refer to you, users, them.
We borrow from both AP and Chicago in this instance:
Spell out numbers when the number is the first word in a sentence or is less than or equal to ten (i.e. one to nine), otherwise use figures (i.e., 10 upwards). Use commas to make long number strings easier to read.
Avoid 3 cows ran for 6 kilometers when they saw 2300097 mosquitoes chasing them.
Preferred Three cows ran for six kilometers when they saw 2,300,097 mosquitoes chasing them.
"In terms of numbering, policies and philosophies vary from medium to medium. America's two most influential style and usage guides have different approaches: The Associated Press Stylebook recommends spelling out the numbers zero through nine and using numerals thereafter—until one million is reached. Here are four examples of how to write numbers above 999,999 in AP style: 1 million; 20 million; 20,040,086; 2.7 trillion.
The Chicago Manual of Style recommends spelling out the numbers zero through one hundred and using figures thereafter — except for whole numbers used in combination with hundred, thousand, hundred thousand, million, billion, and beyond (e.g., two hundred; twenty-eight thousand; three hundred thousand; one million). In Chicago style we would write four hundred, eight thousand, and twenty million with no numerals. Chicago style would require numerals for 401; 8,012; and 20,040,086."
We use the Oxford (serial) comma in our documentation.
Avoid The cows ran from wolves, coyotes and mosquitoes.
Preferred The cows ran from wolves, coyotes, and mosquitoes.
We use sentence case for document names/titles. A document title is usually called an H1 heading and is either denoted by #
in Markdown or ======
in reStructuredText. The title appears in the left-hand navigation and at the top of the table of contents. Use a title that accurately reflects the content of the document. People scan the table of contents looking for answers; it's often faster than using the built-in search engine.
Use sentence case for document titles (e.g. "This is an article about Documentation"). Where a word/title/name is lowercase, retain that casing in the title (e.g. "This article covers the mmctl Tool").
Instead of "Deployment guide for organizations" we write "Deployment guide for organizations"
We use sentence case for section titles and headings. Each section should have a heading, and the heading should relate to the content of the section. A section heading is not required if you have only one section.
Use sentence case for the section heading (e.g. "This section is about types of headings") except where a word/phrase is a proper noun (e.g. "Mattermost"), the name of a country/region (e.g. "The United States of America"), and so on.
Title example
Instead of "Writing Guidelines for Editors" we write "Writing guidelines for editors"
Use the second person and avoid the first person.
Avoid We'll view the status in the Status pane.
Preferred View the status in the Status pane.
Use active voice in preference to passive voice. Active voice has the subject of a sentence doing the action. In passive voice, the subject has an action done to it.
Avoid The Status pane will be opened by the system.
Preferred The system opens the Status pane.
Use the present tense.
Avoid Sharing this link will let other users view the linked message.
Preferred Sharing this link lets other users view the linked message.
Throughout Mattermost documentation, you’ll see the below terms mentioned and used. Their definitions and reason for usage are defined below.
To promote consistency and clarity, follow the word usage and spelling guidelines below.
can, might, may
The word may can have several meanings. To avoid ambiguity, use can or might instead of may. Use can to mean capable of and might to mean that something is possible. Use may only to give permission to do something.
downtime
Use as one word downtime, not down time.
emoji, emojis
Use emojis as the plural form of emoji.
login, log in, log into
Use login as a noun or adjective, and log in and log into as verbs. For example: Log into the Mattermost server using your System Admin login credentials.
setup, set up
Use setup as a noun or adjective, and set up as a verb. For example: Set up your operating system as described in the Ubuntu documentation.
sign-in, sign in, and sign into
Use sign-in as a noun or adjective, and sign in and sign into as verbs. For example: Sign into your Mattermost account using the sign-in credentials that were sent to you.
Single Sign-on
Single Sign-on is abbreviated as SSO. When using the long form in a heading with title case, it's Single Sign-on.
Avoid constructs where you're forced to write either he or she or his or her. You can use they or their as singular forms instead.
Preferred The community manager monitors the forum for well-written questions and answers, and posts them to the Contributors channel. Avoid The community manager posts questions and answers that they think are well-written. Do not use The community manager posts questions and answers that he or she thinks are well-written.
The reStructuredText specification allows for a certain degree of flexibility in markup to achieve your goals. For example, you can use any one of more than a dozen characters for section title underlines, and you have the option of using an overline in addition to an underline.
The majority of Mattermost technical documentation is written in .rst
. The examples below describe the conventions we use when writing in .rst
.
Underline page titles using =
, with no overline. Underlines should be as long as the title text.
Underline using -
for section titles.
Underline subsections using ~
for the first subsection level, and ^
for the second subsection level.
Insert a table of contents into a document using the following format:
Use highlighting of text to visually set off words and phrases that are important to readers. Content that should be highlighted includes file names, UI controls, and window titles. The following table has a comprehensive list with examples.
For bullet lists and sublists, use -
before the list item.
Create numbered lists and procedure steps using numbers for the top-level list and lowercase alpha characters for the first nested list.
Use a name-value group instead of a hand-created list.
A name-value group is typically a group of terms and their corresponding definitions, but can also be questions and answers, topics and values, or other name-value groups. In HTML output, a name-value group is represented as a definition list.
Preferred Total Users The total number of active accounts created on your system. Excludes inactive accounts. Total Teams The total number of teams created on your system.
Avoid Total Users: The total number of active accounts created on your system. Excludes inactive accounts.
Total Teams: The total number of teams created on your system.
To create a name-value group such as a definition list, type the term on a line by itself. On the next line, indent the definition.
External links take readers to a page outside of the Mattermost product documentation. External link URLs are automatically rendered as links in Sphinx (when formatted correctly). Where possible, incorporate hyperlinks within the text of a sentence by lowercasing the link text.
External hyperlinks within a sentence can be created using the following formatting:
Note the full URL, the opening and closing single quotes, and the two underline characters at the end of the link syntax.
Internal links take readers to a page within the Mattermost product documentation. When creating links to pages in the product documentation, always use a relative URL instead of an external (or absolute) link. A link with an absolute URL is not as flexible as a relative URL. Relative URLs don't break when the documentation is moved to another host, or if the documentation is hosted on a server that's behind a firewall without access to the Internet.
Link to another page in the same section
To create a link to another documentation page within the same section of the product documentation, use the following formatting:
Notes:
The file extension is not part of the syntax, and that two underline characters are missing. Sphinx uses the title of the document as the link text.
If you're looking to create an internal link to a section on another page (as opposed to creating a link to the top of a page in general), the syntax above won't work. Docs is investigating further to identify a solution.
In Sphinx, references are constructed using roles, and roles point to locations in the documentation set. The two roles that are relevant in Mattermost documentation are the :doc:
role and the :ref:
role. In both cases, the HTML output is a relative URL for the target location.
The :doc:
role is used for creating relative links to other documents.
The :ref:
role is used for creating relative links to arbitrary locations within the documentation set, including within the same document, based on a unique identifier specified at the top of a source file. The :ref:
role is a two-part construct. One part is the link itself, and the other part is the target on the source page.
The link itself is specified as: :ref:arbitrary-text-label
The target is added as the first line of the source page (preceding the title): .. _arbitrary-text-label:
Link to a section heading on the current page
To create a link to a section heading on the current page, identify the unique anchor ID assigned to the section title in a local build, a remote build, or within production, then use the following formatting:
The Sphinx processor creates a relative link to the section, and uses the section title as the link text. On output, the link looks like this: "For more information about bullet lists, see :ref:arbitrary-text-label
."
Use the following construct to insert an image:
You should use alt
tag for all images.
You can also add the following image options: height
, width
, scale
, align
, and target
.
Inserting an inline image is a bit more complicated. It's a two-part construct that consists of a label and the image directive. Surround the label text with vertical bars, the |
character.
Then insert the following image directive at the bottom of the document:
To use a literal block with no syntax highlighting, use the Sphinx code-block directive with the language set to none
.
The following example is a block of Go code.
When a documentation page is no longer needed, that page should be archived. Archiving a page prevents that page from being included in the build altogether.
To archive a documentation page:
Identify where you want the reader to go instead of the page that's being archived.
Move the source file to the /source/archive
folder.
(RST files only) In the file you just moved to the archive
folder, add :nosearch:
at the top of the file (above any anchor identifier, title, or code comment present in the file). This prevents the documentation page from being returned in search results.
Add a redirect to the conf.py
file from the archived page to a new destination page.
Search for and replace any links across the documentation set to the archived file, including LHS, landing pages, and paragraph-level links.
not in toctree
build warningsWhen working and building the documentation locally in a development environment, writers can review build warnings and errors in the /build/warnings.log
file. Build warnings and errors can include (but aren't limited to):
Broken links
Documentation pages missing from the LHS unintentionally
Syntax and formatting issues
As part of monthly documentation release cycles, technical writers review and take action on build warnings and errors reported.
To silence warnings for RST documentation pages that are missing from the LHS unintentionally, add :orphan:
at the top of the file (above any anchor identifier, title, or code comment present in the file). The next time the product documentation is built, that warning is silenced. (A documentation page can contain both :nosearch:
and :orphan:
, and these two directives can be listed in either order).
Some documentation pages should never be returned in search results, including:
Archived pages.
Pages that exist only to be included on other documentation pages. These pages often don't provide enough context to be useful if accessed directly.
To prevent RST documentation pages from being returned in search results, add :nosearch:
at the top of the file (above any anchor identifier, title, or code comment present in the file. (A documentation page can contain both :nosearch:
and :orphan:
, and these two directives can be listed in either order).
Adding code comments to documentation source files helps contributors understand why specific decisions were made or what additional knowledge is required when working within a specific source file. For example, if a documentation page isn't accessible in the LHS by design, adding a code comment in the source file helps future contributors understand that it was an intentional decision.
In RST files, format code comments as .. Code comment text here
. Code comment text isn't visible to users in the published product documentation.
To accommodate the many ways that people learn, its helpful to include visual elements, such as videos, in the Mattermost product documentation. The process and code needed to embed a video on a documentation page differs depending on how the video is hosted. Mattermost typically hosts product videos through either YouTube or Wistia (and Wistia is preferrable over YouTube, when available, because viewers aren't subject to ads).
Obtain the YouTube video link.
The code to embed the video consists of two parts: a paragraph-level link and iframe code. Copy the code below into the documentation source file, then update the introduction text and replace the YouTubeVideoLink
.
Copy and paste the code you receive into the documentation source file. The code you receive will look similar to the following example:
Most Mattermost product documentation pages feature plan and deployment badges located directly under the page title or section title. These badges indicate:
The Mattermost subscription plans that support the feature or function. Options include All Plans, Enterprise, and Professional.
The Mattermost deployment approach that supports the feature or function. Options include Cloud or Self-hosted.
These badges are defined on a per-page basis as inline images located close to the top of the source file. Please be careful to avoid making changes to the badge code when modifing other aspects of the documentation page.
Note that, longer term, it would be ideal to replace the current badge implementation with a more programmatic solution where the badges are defined once and simply referenced across all applicable documentation pages.
Mattermost hosts the source code and content of its technical documentation in GitHub repositories. Documentation is updated by submitting pull requests on GitHub. After a pull request is reviewed and approved, it is usually merged into the master branch without further changes. Sometimes, however, conflicts between the files being updated and the master branch must be resolved.
GitHub flags conflicting regions of a file with these characters: <<<<<<<
, =======
, and >>>>>>>
. The block of text between <<<<<<<
and =======
is the content that the pull request is attempting to merge. The block of text between =======
and >>>>>>>
is the block of text from the master branch that conflicts with the content in the pull request. Resolving a conflict may require removing content that has been updated in the pull request, or manually integrating text from the pull request. The flag characters must also be removed.
After resolving the conflicts in a given file, mark it as resolved in GitHub. All conflicts must be resolved for the merge to proceed.
The image below shows a section of a file with a merge conflict:
The lines between <<<<<<< issue-5951-authentication-oauth-ms
and =======
are from the pull request. The lines between =======
and >>>>>>> master
are from the master branch. In this case, metadata had been added to the same region of the file that was edited in the pull request. In order to resolve the conflict, the text from the pull request and the metadata were kept, while part of the text from the master branch was removed.
Feature documentation is a joint effort between Product Managers, Developers, and Technical Writers. In the same way that we want to empower everyone to contribute to our documentation, Product Managers are encouraged to write MVP documentation for their product/feature.
Feature changes and new features first exist as code PRs. These PRs form the basis of whatever changes are being documented. If a code PR is for a new feature, major update to an existing feature, or a fix that impacts the current documentation, it's recommended that a documentation update is made. The Technical Writers work closely with their development teams to ensure that these types of changes are documented accordingly.
One way we do this is by using the Docs/Needed
label. When a code PR is submitted, that may have documentation impact, the Docs/Needed
label is added. The assigned writer then reviews the PR and, if there are documentation changes needed, opens a PR in the docs repo with reference to the code PR.
As a developer you are also welcome to update the documentation yourself in one of the following ways:
Submit your documentation as a new file, including the context and changes, any code samples, and processes. You can submit this as part of your code PR, or you can open a new PR in the docs repo and include a link to your open code PR.
We don't expect a huge body of documentation or that it's perfectly-written - but rather a clear, concise outline of the change which can be added to our documentation. The content can be provided as a list, rough notes, or you can use the example below for content and structural guidance if your documentation is quite detailed.
The supplied content can be provided informally, in bullet points, or rough notes in a Google Doc/on the PR itself. Refinements are made collaboratively.
This is a guideline of what MVP feature documentation can include. Requirements vary based on the scope of the change, so not everything will always be needed:
A link to the feature/product's tech spec.
Links to any relevant Jira/GitHub issues.
A description of the product/feature/update which forms the basis of the documentation.
Steps for any processes or procedures (configuration of a feature, troubleshooting, etc).
Any FAQs or troubleshooting questions if relevant.
Any limitations, issues, or known problems.
Configuration settings and examples for the config.json
file if relevant.
(If possible) Suggestions of where in the docs the content should go.
When the content has been refined and approved in draft format:
The Product Manager/Technical Writer creates a branch off the relevant documentation release branch.
The documentation is updated with the approved content in that branch.
If there are multiple pages to update for a specific feature/change please keep them all in the same branch for ease of management.
The PR is submitted and relevant reviewers added, including an editor (not the Technical Writer who wrote the docs), for final review.
Include the link to the server/webapp repo issue in your PR for reference purposes.
Once all reviews are complete, the PR is marked as Reviews Complete and merged into the documentation release branch by @amyblais.
Once your PR is submitted, there's a review process that includes an editorial review, a PM review, and sometimes a dev review. During the editorial review, editors may make punctuation and/or terminology changes and commit them to save time on the review process. This only applies to punctuation/terminology - content suggestions and questions will follow the usual review and discussion process.
Mattermost documentation covers a number of different topics. For documentation, the following reviewers are recommended:
Editor Review
Carrie Warner (@cwarnermm)
Justine Geffen (@justinegeffen)
Product Manager Review
Product: Ian Tao (@tao); Winson Wu (@wuwinson)
Integrations: Sandy Atkinson (@asatkinson)
Security: Daniel Schalla (@dschalla)
Server/calls: Neil Barnett (nab-77)\
Self-serve: John Lugtu (@johndavidlugtu)\
Growth: Eric Sethna (@esethna)
Handbook and Process; Community: Jason Blais (@jasonblais)
Dev Review
If your change requires dev review add the developer/s you've been working with as the reviewer/s. If you're unsure who to add as a dev reviewer you can select one of the team leads below:
Product: Scott Bishel (@sbishel)
Integrations: Catalin Tomei (@catalintomai)
Growth: Maria Nuñez (@marianunez)
SRE: Stylianos Rigas (@stylianos)
Cloud Platform: Spiros Economakis (@spiros)
Mobile: Elias Nahum (@enahum)
Web/desktop app: Pantelis Vratsalis (@pantelis)
Security: Daniel Schalla (@dschalla)
QA: Saturn Abril (@saturninoabril)
These levels serve to help Technical Writers assess their opportunities for career growth in the Techncial Writing function. The levels below follow a growth track in the art and craft of Technical Writing and not in a person management track.
Mattermost user interface content (microcopy) is where we can set our users up for success and build engagement with the product instead of reliance on documentation.
When we write copy for our product messaging our primary goals are to:
Write with empathy
Provide context
Help users build mental models
Reduce cognitive load
Proactively prevent failure
To achieve these goals, we ensure that we have the right content for the right user at the right time. In addition to this, we prioritize:
Plain language: We choose natural language, simple words, and short sentences for documentation and in-product text.
Readability: We strive to make our documentation pages easy to scan and not overwhelming.
Consistency: We ensure that we all refer to the same things using the same words or names, to avoid confusion.
These writing principles mean that we think like a friend, and talk like a coach to reduce friction and increase satisfaction.
Keep in mind that your users are from all over the world.
Use the present tense to describe a current state or condition, and the future tense to state something that is very definitely going to happen.
Use the active voice, except for these cases:
If you’ll end up blaming the user. For example, don’t say You entered an incorrect password. Instead, say The password is incorrect.
If you’re describing what just happened. For example: Your incoming webhook is set up.
If the subject (the doer of an action) is the Mattermost application itself. For example: The image has been deleted instead of The server deleted the image.
If you’re asking the user to do or not do something, use imperatives (command phrases). For example, use Don't change the Hostname instead of It's not recommended to change the Hostname. Better still, explain what could go wrong if they do or don’t do something. For example: Don't change the Hostname because doing so will break something.
In general, users will encounter the following types of messaging when using Mattermost:
Help, hints, or informative text
Calls to action
Confirmation dialogs
Errors
Notifications
In general, this content is either:
Static text on the user interface
An actionable button which leads to a process
Triggered because something happened
This section is being built out. In the meantime, here are some of the things we take into account when writing content:
Colors used on-screen
Plain and clear language
Don’t blame the user. Inform them about what happened, explain why it happened, and suggest a way forward. Try to use complete sentences in your messages. A sentence phrase (an incomplete sentence) might make sense in English but could present internationalization challenges.
System messages can be one of the following types: notification, confirmation, warning, and error. The following sections contain guidelines that are specific to each of these types.
If a system message contains variables (tokens):
Don't use verbs or adjectives as variables.
Don't create plurals of variables by adding an "s".
If the variable is a noun, use a qualifier after the variable. For example, say The {channel_name} channel was created rather than The {channel_name} was created.
A notification message informs the user about an event or action that took place. These messages don't need any user input, and don't prevent the user from continuing to use Mattermost.
Use either a complete sentence or a sentence phrase.
If using a complete sentence, end it with a period.
Examples:
Member added to channel.
The plugin was installed.
A confirmation message requires user input to confirm that they want to proceed with the action. Confirmation must be provided (either to continue or cancel) before the user can continue to use Mattermost.
Use complete sentences.
Include a question that has a Yes/No answer.
Examples:
Are you sure you want to delete this channel?
A plugin with this ID already exists. Would you like to overwrite it?
A warning message alerts the user that something that might go wrong. They can continue using Mattermost unless the warning message needs user input.
Use complete sentences.
Explain what has happened, or can happen, and what may go wrong as a result.
Examples:
The Enterprise license expires in 2 days. If it's not renewed, some features will be disabled on license expiry.
If you claim this AD/LDAP account, you won't be able to log in with your email address.
An error message informs the user that something went wrong. Errors prevent the user from completing a task or accessing a feature until the error is resolved.
Use complete sentences.
If what went wrong isn’t obvious, explain in one sentence.
If a solution or workaround isn’t obvious, suggest one.
Examples:
Messages must have fewer than 120 characters.
A connection to the Marketplace server could not be established. Check your settings in the System Console.
Making an in-product text change starts with identifying which repository, and where in the product code, a change is needed. Many in-product strings live in the mattermost/webapp/i18n/en.json
or mattermost/server/i18n/en.json
English translation files. However, some strings may additionally live within product code too. You may need to update both .json
and .tsx
files. QA can help apply updates to impacted SNAP or E2E files.
If TSX files are impacted by an in-product change, run the command npm run updatesnapshot ./directory-or-file
to capture any TXS changes within the en.json
file. Run this command against multiple files by separating files with spaces: npm run updatesnapshot -i ./path_to_test.txt_file ./path_to_test.txt_file ./path_to_test.txt_file
If E2E tests are failing during PR reviews, reach out for assistance from either the team who initiated the feature or the SDET, QA team. Then, add the QA Needed label for all in-product text change PRs. If you know the QA team member based on the affected product area, add them as a QA reviewer, otherwise mention the QA Lead in the PR notes.
We write with empathy in the context of achievement using natural language. This can be quite hard to do; as technical writers we generally lean toward very clear and concise writing that can feel clinical. Writing more naturally means we try to avoid convoluted phrasing and we try to make things more simple.
So, instead of saying: "When testing the Java app ensure your third-party connection is secure before initiating the test sequence." rather say: "Make sure your third-party connection is secure before testing the app."
Because we strive to use natural language, the way we phrase microcopy isn't templated - that would defeat the point. Instead, here are some examples of microcopy we use for various features and products. The common theme is clarity and empathy.
There's a big difference between "jargon" and "terminology".
Jargon is usually industry-specific and can be isolating or confusing for users who aren't deeply familiar with them. Terminology is usually universally-accepted and generally understood.
Headings
These are H1 headings such as the title of a modal. Titles shouldn't have periods unless the headline is more than one sentence. Titles also shouldn't contain punctuation such as question marks, colons, semi-colons.
Paragraphs
Paragraphs should always be properly punctuated.
Sentences
When you're writing descriptive UI copy, try to write full sentences which can be punctuated. If the copy you're writing can be expressed in a single word, consider moving that word to the input field instead.
Bullets
Bullet lists shouldn't have periods unless the bullet text is more than one sentence.
Button labels
Button labels shouldn't have periods or other punctuation.
We follow the same capitalization rules across all our documentation assets, including in-product text and UI elements: Always use sentence case (except where you're using a proper noun, of course). This applies to:
Page titles
Page headings
Section headings
Button labels
Input labels
Navigation labels
Menu items
Field hint text
Hover text
Here's an example of an incorrect heading: This Article is About Mattermost. The correct version is: This article is about Mattermost.
Button labels should always use action words and describe the action as concisely as possible. They should be limited to four words or less. Examples: “Log in”, “Send invitation”.
Navigation labels should be as short as possible and support the user in finding their way.
Input labels should be as short and concise as possible and describe the input field.
Use this table when writing the text for UI elements such as windows, dialog boxes, labels, and prompts.
.. [] For headline style, capitalize all words except those with three letters or fewer, articles (a, an_,_ the_), prepositions (on,_ to_,_ in_,_ from_,_ of_), and coordinating conjunctions (and,_ but_,_ or_,_ for*). Despite these exceptions, always capitalize the first and last word. For sentence case, capitalize only the first word.
This page outlines the process for escalating sensitive topics within Mattermost.
There are several sensitive topics raised by the community that we want to address appropriately and consistently at all times.
However, currently the struggles we have as a team is the unclarity on where Mattermost stands on each of the sensitive topics listed below. This unclarity often results in inconsistent responses that lead to confusion for our users, or ingenuine responses that breaks the trust from our community. We want to stop both of these from happening.
This policy is put in place to compel us as a team to have a clear official point of view for each of the listed topics below, with standard responses that can be used by a broader team. Until a clear point of view is reached, a person or a group of people are assigned as the approved responders to avoid unnecessary confusion and broken trust with our users and our community.
Therefore, if you see a question on a sensitive topic, the ask is to follow the escalation process below, and escalate sensitive topics to the approved responders until an official point of view is clearly documented. Once documented, this process will be revisited.
When an issue relating to a sensitive topic is raised (for example, on GitHub issues, Twitter, or elsewhere), it should be posted in the Community Escalations channel with an @-mention to the list of approved responders related to that particular issue.
Raising an issue is the responsibility of whoever is managing community responses in a given forum. However, it is also open for anyone at the company to escalate an issue that they see. It is then the responsibility of the approved responders to review the issue and choose an owner for responding (if a response is appropriate). By default, ownership is delegated to the first person on the list of approved responders.
While anyone can escalate a sensitive topic, only approved responders listed below can engage. If you’d like to be an approved responder for one or more of the topics, we welcome the help! Reach out to @jason.blais on community.mattermost.com, and you will be added to the next training session.
Non-regulatory Privacy/Telemetry where opinions are at play more than legal or regulatory issues:
Approved Responders: Dr. Program Management, Lead PM, CTO, CEO
Loop in: CEO, CRO
Template Response: To be added
Product-related Regulations/GDPR, and other legal issues:
Approved Responders: Head of Security, VP Legal, VP Product, CRO, CEO
Loop in: VP Legal, Lead PM, CFO
Template Response: To be added
Licensing, including open source and commercial license inquiries:
Approved Responders: Dr. Program Management, CRO, CEO
Template Response: To be added
Packaging, including requests for making an Enterprise feature free:
Approved Responders: Lead PM, VP Product, CTO
Loop in: CEO, CRO
Template Response: To be added
Workplace policies, including hiring locations:
Approved Responders: VP HR, VP Legal
Template Response: To be added
Security vulnerabilities
Approved Responders: Head of Security, Security PM, CTO
Loop in: CEO, VP Product, CFO
Template Response: To be added
Illicit use
Approved Responders: VP Legal, CFO
Loop in: VP Legal, CEO
Template Response: To be added
Marketing-related Regulations/GDPR, and other legal issues:
Approved Responders: VP Legal, CFO, CEO
Loop in: VP Legal, CEO
Template Response: To be added
Governmental data request, e.g. US government requesting user/customer data under US jurisdiction:
Approved Responders: VP Legal, CEO
Loop in: VP Legal
Template Response: To be added
Non-sensitive topics include feature requests, troubleshooting questions, bug reports, and other user feedback.
Don't make false promises or assumptions
If you are unsure of the answer, ask someone for help. Do not reply with an assumption or incomplete understanding.
Don’t say "we’ll work on feature X" that sets expectations we cannot meet (e.g. after presenting to core team it turns out you can’t implement the feature).
Choose positivity over negativity
Avoid excuses like “we’re busy”, or “our team is small” and turn a missing feature into an invitation to share a feature idea to be upvoted.
Do your best to link documentation as answers
Allow answers to be easily updated dynamically, as documentation is updated.
Turn questions that are not answered in docs, but should be, into tickets to create that documentation (and include ticket link in your response).
Keep community end user information secure
If you come across a post that includes the person's IP address, domain name, or other information you think should not be disclosed publicly, edit the post to remove this information. Then click the hide revision button so that your edits won't be visible to others on the forum.
Be thankful
Communities really respond well to being praised and thanked for their work.
Do not focus on opinions
Turn product discussions into conversations of specific audiences and use cases that each product edition serves.
Below is the list of members mapped to each role mentioned as an approved responder:
CEO: Ian Tien
CTO: Corey Hulen
CFO: Kendra Neidziejko
VP Product: Chen-i Lim
VP HR: Natalie Jew
VP Legal: Nirosha Ruwan
Lead PM: Katie Wiersgalla
Head of Security: Daniel Schalla
Dr. Program Management: Jason Blais
Security PM: Katie Wiersgalla
When you revise a document, apply the style guide rules to the part that you changed. If you have time to update the rest of the document, then do so. If the scope is significantly greater than you originally anticipated, then do what you can and what makes sense, and then create an . Give the issue an appropriate title, such as File XXX converted to .rst, but needs updating for style guide.
For details about how we write UI text, naming conventions for CTAs, and writing with empathy, take a look at the .
:
A section title is usually called H2, H3, H4, etc. Section headings are usually not clickable, but instead have formatting like bold or italics. Section titles are denoted by #
in Markdown, with the number of #s indicating what level of heading is being used (i.e., ##
for H2, ###
for H3 etc). In reStructuredText the heading rules are slightly more complicated in terms of formatting, as we use Sphinx to process our documentation. You can read more about this in the section.
The link above renders as: .
To create a code block with syntax highlighting, use the Sphinx code-block directive with the language set to the language that you want highlighted. , but in Mattermost documentation the most likely ones are as follows:
Unofficial documentation pages. All unofficial product documentation should live within the .
Request the from the video producer.
The majority of Mattermost technical documentation is written in .rst
format. However, there are some instances where Markdown is used, for example the Mattermost Handbook. You can read more about using Markdown in the section of the Mattermost product documentation.
Update the relevant page on , and submit a PR for that. This PR is submitted to the docs repo, reviewed by the relevant team members, and merged from there.
Note: Due to the cadence of the release cycle, feature documentation needs to be complete and submitted as to allow sufficient time for review and to ensure it's included in the release documentation update.
A is available to help Product Managers and Techical Writers capture details about new features and functionality that need product documentation.
You can read more about the review process .
You can find additional guidance around formatting .
Once the review is complete, we'll move your contribution to the appropriate part of (if it's not there already) and then merge it. We'll share the URL and you can edit it at any time if you need to.
The full list of R&D teams is available .
If you're asked to provide editorial feedback on a PR, and it's your first editorial feedback request, first read up on the review process to get an idea of what's expected in terms of turnaround time, type of feedback, and so on.
Editorial feedback is based on the guidelines laid out in the as well as the .
This section is being built out. In the meantime, please consult for the type of guidelines we follow when writing with inclusion and diversity in mind.
If you have any questions about writing for inclusion and diversity, or notice something we can improve, please tell us! You can find us on Mattermost in the channel.
Take a look at for some more information on accessibility.
Have any ideas or feedback? You can find us on Mattermost in the channel.
The Technical Writers often work with the UI/UX team on in-product copy. The majority of guidelines are available in the .
While its possible to manage in-product text changes using GitHub web tools, writers may find it more straightforward to clone each of the main Mattermost repositories, including , , , and , and work through text changes in a local development environment instead.
Take a look at the for more information about how we approach casing.
One way of making life easier for our customers is to ensure we are consistent with our terminology. The technical writing team is continually working on improving our users' experience with our documentation and copy. You can read more about this work .
This policy is intended to be an iterative process, and feedback is encouraged and welcome. If there are any questions about this policy, please reach out in the in Mattermost, or message @jason.blais directly.
Sensitive topics listed below are escalated to a in the Private Staff team, which includes all members of the Mattermost Leadership Team (MLT) plus any approved responders. This channel is public, so anyone in the company can escalate an issue.
Anyone in the company is welcome and encouraged to respond, regardless of the medium. If it is your first time responding to the community, please read for help on various inquiries.
Try to understand each person's and shift the conversation away from opinions.
For more guidelines on Mattermost forums and the public GitHub repositories, see the .
Mattermost
Used to refer to Mattermost the company and Mattermost the product.
Mattermost is an open-source, self-hosted messaging platform with unlimited file sharing, search, and integrations
Configure Mattermost on your server
installation
Refers to an on-premises Mattermost environment comprising hardware (server/s), database, filestore, etc., which hosts the required files to run Mattermost.
Your Mattermost installation includes physical servers
deployment
Used to refer to making a new installation widely accessible. It can also refer to releasing an updated version, patch, etc.
Desktop App deployment guide
configuration
Used to describe the settings and customizations applied to Mattermost to change the appearance and behavior.
Edit the configuration file to include any custom settings related to your domain
Mattermost Server
Used to refer to the single Linux binary that is installed on the physical server which hosts your Mattermost installation. It is not used to refer to the product going beyond the binary name. Always capitalize the "Server" when referring to the name of the binary.
Download the Mattermost Server binary
Mattermost server
Used to refer to the physical server on which you run Mattermost. It is also referred to as the customer’s Mattermost server. Always lowercase "server" when referring to the customer’s physical Mattermost server
Your Mattermost server may need to be rebooted before changes are applied
Web App
Used to refer to the Mattermost Web Application. References to general web applications are not capitalized.
Mattermost Web App
Mobile App
Used to refer to the Mattermost Mobile Application. References to general mobile applications are not capitalized.
Mattermost Mobile App
Desktop App
Used to refer to the Mattermost Desktop Application. References to general desktop applications are not capitalized.
Mattermost Desktop App
public channel
Used to refer to channels available to all members to discover and join. Written in lowercase and not hyphenated.
Outgoing webhooks are supported in public channels only
private channel
Used to refer to channels managed by synchronized groups. Written in lowercase and not hyphenated.
Users can remove themselves from teams and private channels managed by synchronized groups
direct message
Direct messages are for conversations between two people. Visible only to the people involved. Written in lowercase and not hyphenated.
Full names appear in the direct messages member list and team management modal
group message
Group messages are direct messages that have conversations among three or more people. Visible only to the people involved. Written in lowercase and not hyphenated.
Group messages are listed in the sidebar
device
Used to refer to collectively to all types of computers, phones, and other devices.
Speak with the owner of any other proxies between your device and the Mattermost server
Commands
monospace
"At the command line, type sudo apt-get install nginx
."
Directory name
monospace
/opt/mattermost
File name
monospace
config.py
Inline code
monospace
fmt.Printf("2 times %d = %d\n", x, y )
Keystrokes
monospace
"Type https://
in the string field."
Screen output
monospace
See :ref:literal-blocks
for an example.
Parameter values
monospace
"Set the auto-config parameter to false
"
Field names
**bold**
If the field has punctuation, include that in the formatting. For example "Enter the URL in the Enter URL: field."
Clickable control
**bold**
"Click File > Save."
UI elements
**bold**
"Open Main Menu > Account Settings."
Dialog boxes
**bold**
"The Create Thread window opens."
Citations
*italic*
"Read the book Clean Code by Robert Martin."
User account names
*italic*
"Log in to the mysql account."
Parameter names
*italic*
"Set the auto-config parameter to false
"
Keyboard buttons
Key1+Key2
"Press CTRL+U to upload a file."
Placeholder field
{placeholder}
"Use the URL in the form of {hostname}.mattermost.com/{team}."
Ownership
Scope: "What do I work on?" Scope is the domain over which you are expected to show ownership.
Executes to deliver high quality documentation and in-product text updates.
High-Impact
Supervision: "How much do I rely on my manager?" Community: "How do others work with me?" The need to receive supervision is inversely related to the instinct to choose what is high-impact.
Receives detailed instruction on most tasks. Asks appropriate questions, and knows when to stop and ask for help. Works in cooperation with peers at the same level with ease. Utilizes the knowledge of others with more experience.
Earn Trust
Influence: "Who do I work with?" As more people and parts of the organization earn your trust, your influence grows.
Works effectively in teams to align priorities and manage execution.
Customer Obsession
Customer Impact: "How do I bring value?" Community spans both open-source and enterprise, but ultimately manifests in the same obsession for enabling customers to be successful.
Considers the customer's perspective when making decisions. Knows when to ask clarifying questions.
Self-Awareness
Interaction: "Who relies on me?" Iteration: "How do I improve myself and others?" Self-awareness yields an ability to seamlessly fit into any conversation or effort, interacting with a group to work towards the best possible outcome and always iterating towards the best possible outcome.
Regularly participates in team discussions for ongoing feature work. May lead discussions on smaller topics. Learns new skills and establishes goals and context quickly by asking precise questions.
Ownership
Scope: "What do I work on?" Scope is the domain over which you are expected to show ownership.
Influences and executes new bodies of documentation and in-product text initiatives.
High-Impact
Supervision: "How much do I rely on my manager?" Community: "How do others work with me?" The need to receive supervision is inversely related to the instinct to choose what is high-impact.
Receives general instruction on day-to-day work, and detailed instruction on new assignments or unfamiliar tasks. Works in cooperation with peers at the same level with ease. Utilizes the knowledge of others with more experience.
Earn Trust
Influence: "Who do I work with?" As more people and parts of the organization earn your trust, your influence grows.
Works effectively in teams to align priorities and manage execution.
Customer Obsession
Customer Impact: "How do I bring value?" Community spans both open-source and enterprise, but ultimately manifests in the same obsession for enabling customers to be successful.
Understands and applies basic level best practices for customer impact within their daily work. Will ask for input on more complicated topics.
Self-Awareness
Interaction: "Who relies on me?" Iteration: "How do I improve myself and others?" Self-awareness yields an ability to seamlessly fit into any conversation or effort, interacting with a group to work towards the best possible outcome and always iterating towards the best possible outcome.
Regularly participates in team discussions for ongoing feature work. May lead discussions on smaller topics. Actively seeks out tasks and projects that work towards opportunities for growth.
Ownership
Scope: "What do I work on?" Scope is the domain over which you are expected to show ownership.
Designs, leads and delivers high impact information architectures, in-product text, and documentation improvements across their area of ownership.
High-Impact
Supervision: "How much do I rely on my manager?" Community: "How do others work with me?" The need to receive supervision is inversely related to the instinct to choose what is high-impact.
Receives general instruction on new assignments or unfamiliar tasks. Participates in cross-functional groups towards building significant new functionality.
Earn Trust
Influence: "Who do I work with?" As more people and parts of the organization earn your trust, your influence grows.
Work directly with Product, UX, Engineering, GTM, Operations, and Community to proactively seek input and deliver on commitments.
Customer Obsession
Customer Impact: "How do I bring value?" Community spans both open-source and enterprise, but ultimately manifests in the same obsession for enabling customers to be successful.
Can navigate moderately complex decisions and thought process about how features and implementations bring customer value, and can make decisions in these areas independently. Starts to understand and contribute to cross-feature and/or cross-team implications of customer impact.
Self-Awareness
Interaction: "Who relies on me?" Iteration: "How do I improve myself and others?" Self-awareness yields an ability to seamlessly fit into any conversation or effort, interacting with a group to work towards the best possible outcome and always iterating towards the best possible outcome.
Drops fluidly into team projects, ramps quickly and leads initiatives to successful outcomes. Leads discussions on small and mid-size topics. Participates actively in discussion and efforts that cross teams (PM, GMT, Operations, Engineering, UX). Actively seeks out tasks and projects that work towards opportunities for growth.
Ownership
Scope: "What do I work on?" Scope is the domain over which you are expected to show ownership.
Designs, leads and delivers high impact information architectures, in-product text, and documentation improvements across their area of ownership.
High-Impact
Supervision: "How much do I rely on my manager?" Community: "How do others work with me?" The need to receive supervision is inversely related to the instinct to choose what is high-impact.
Receives minimal instruction. Participates in cross-functional groups towards building significant new functionality.
Earn Trust
Influence: "Who do I work with?" As more people and parts of the organization earn your trust, your influence grows.
Work directly with Product, UX, Engineering, GTM, Operations, and Community to proactivly seek input and deliver on commitments.
Customer Obsession
Customer Impact: "How do I bring value?" Community spans both open-source and enterprise, but ultimately manifests in the same obsession for enabling customers to be successful.
Can navigate moderately complex decisions and thought process about how features and implementations bring customer value, and can make decisions in these areas independently. Starts to understand and contribute to cross-feature and/or cross-team implications of customer impact.
Self-Awareness
Interaction: "Who relies on me?" Iteration: "How do I improve myself and others?" Self-awareness yields an ability to seamlessly fit into any conversation or effort, interacting with a group to work towards the best possible outcome and always iterating towards the best possible outcome.
Drops fluidly into team projects, ramps quickly and leads features to successful outcomes. Leads discussions on small and mid-size topics. Participates actively in discussion and efforts that cross teams (PM, GMT, Operations, Engineering, UX). Proactively identifies opportunities for growth, intentionally taking on unfamiliar tasks.
Ownership
Scope: "What do I work on?" Scope is the domain over which you are expected to show ownership.
Sets and delivers vision for documentation architecture and high impact features to improve technical writing experiences across all product lines.
High-Impact
Supervision: "How much do I rely on my manager?" Community: "How do others work with me?" The need to receive supervision is inversely related to the instinct to choose what is high-impact.
Defines new feature assignments for themselves, usually without requiring help. Organizes cross-functional initiatives in building significant new functionality.
Earn Trust
Influence: "Who do I work with?" As more people and parts of the organization earn your trust, your influence grows.
Recognized by colleagues as a technical writing authority, passively influencing discussions and behavior, and working in sync with Product, UX, Engineering, Operations, and GTM.
Customer Obsession
Customer Impact: "How do I bring value?" Community spans both open-source and enterprise, but ultimately manifests in the same obsession for enabling customers to be successful.
Can independently make decisions affecting customer (internal and external) value/impact for complex topics within a product deliverable for the company. Leads cross-product, cross-feature, and cross-team discussions related to customer value/impact, and can bring the stakeholders to a decision point.
Self-Awareness
Interaction: "Who relies on me?" Iteration: "How do I improve myself and others?" Self-awareness yields an ability to seamlessly fit into any conversation or effort, interacting with a group to work towards the best possible outcome and always iterating towards the best possible outcome.
Frequently called upon to comment on business discussions. Is very comfortable in a variety of technical and business discussions, aligns efforts, and develops superior solutions through discussion and analysis. Participates deeply in cross-team efforts. Begins to lead discussions on topics that reach outside of product area of ownership. Independently researches new solutions and paradigms to improve team efficiency.
Ownership
Scope: "What do I work on?" Scope is the domain over which you are expected to show ownership.
Sets and delivers vision for documentation architecture and high impact features to improve technical writing experiences for across all product lines.
High-Impact
Supervision: "How much do I rely on my manager?" Community: "How do others work with me?" The need to receive supervision is inversely related to the instinct to choose what is high-impact.
Defines new feature assignments for other members of the team, usually without requiring help. Leads cross-functional groups and manages the creation of new knowledge repositories.
Earn Trust
Influence: "Who do I work with?" As more people and parts of the organization earn your trust, your influence grows.
Highly respected by colleagues and community as a technical authority, actively influencing discussions and behavior with input and suggestions, and working in sync with with Product, UX, Engineering, Operations, and GTM.
Customer Obsession
Customer Impact: "How do I bring value?" Community spans both open-source and enterprise, but ultimately manifests in the same obsession for enabling customers to be successful.
Can independently make decisions affecting customer (internal and external) value/impact for complex topics within a product deliverable for the company. Leads cross-product, cross-feature, and cross-team discussions related to customer value/impact, and can bring the stakeholders to a decision point.
Self-Awareness
Interaction: "Who relies on me?" Iteration: "How do I improve myself and others?" Self-awareness yields an ability to seamlessly fit into any conversation or effort, interacting with a group to work towards the best possible outcome and always iterating towards the best possible outcome.
Frequently called upon to comment on business discussions. Is very comfortable in a variety of techincal and business discussions, aligns efforts, and develops superior solutions through discussion and analysis. Participates deeply in cross-team efforts. Begins to lead discussions on topics that reach outside of product area of ownership. Independently researches new strategies and paradigms to improve the entire Tech Writing organization and product area of ownership.
Ownership
Scope: "What do I work on?" Scope is the domain over which you are expected to show ownership.
Consults on technical writing and documentation repository vision, strategy, and innovations.
High-Impact
Supervision: "How much do I rely on my manager?" Community: "How do others work with me?" The need to receive supervision is inversely related to the instinct to choose what is high-impact.
Defines new task assignments for members of other teams, usually without requiring help. Mentors and trains new team members while leading the coordination and management of high impact initiatives.
Earn Trust
Influence: "Who do I work with?" As more people and parts of the organization earn your trust, your influence grows.
Frequently sought out by leadership for opinion on documentation and technical writing decisions (both product and technical directions).
Customer Obsession
Customer Impact: "How do I bring value?" Community spans both open-source and enterprise, but ultimately manifests in the same obsession for enabling customers to be successful.
Has ownership for cross-product customer impact topics. Can anticipate complex issues early in the planning and development processes. Starts to anticipate and resolve cross functional topics and issues.
Self-Awareness
Interaction: "Who relies on me?" Iteration: "How do I improve myself and others?" Self-awareness yields an ability to seamlessly fit into any conversation or effort, interacting with a group to work towards the best possible outcome and always iterating towards the best possible outcome.
Primary technical writing leader for projects, providing leadership in selecting and guiding these efforts. Works regularly with stakeholders outside R&D. Is often the initial resource to drive efforts for new initiatives. Mentors people on technical writing strategy across all of product and engineering. Is a hands on leader for executing on mentorship and training.
Ownership
Scope: "What do I work on?" Scope is the domain over which you are expected to show ownership.
Owns and defines long-term technical writing practice vision and strategy.
High-Impact
Supervision: "How much do I rely on my manager?" Community: "How do others work with me?" The need to receive supervision is inversely related to the instinct to choose what is high-impact.
Independently defines new initiatives across teams working on the same product or system. Influences, shapes, and can redirect customer and community technical and business discussions, rapidly understanding disparate viewpoints and leading discussions that align thinking and efforts to influence the direction of large scale projects.
Earn Trust
Influence: "Who do I work with?" As more people and parts of the organization earn your trust, your influence grows.
Seen as the expert on product area of ownership and technical writing practice. Engages with peers in customer and partner organizations to shape initiatives and plans.
Customer Obsession
Customer Impact: "How do I bring value?" Community spans both open-source and enterprise, but ultimately manifests in the same obsession for enabling customers to be successful.
Works consistently with R&D, GTM, G&A, and Sales leadership to set goals and deliverables for customer and business value. Represents Technical Writers and other functions in discussions where ICs are not present. Engages heavily with customers and community to share our product philosophy and strategy. Applies our philosophy to bring value to customer from work done all across the company.
Self-Awareness
Interaction: "Who relies on me?" Iteration: "How do I improve myself and others?" Self-awareness yields an ability to seamlessly fit into any conversation or effort, interacting with a group to work towards the best possible outcome and always iterating towards the best possible outcome.
Works consistently with Mattermost leadership to set technical writing & organizational objectives and direction. Translates these objectives to clear and actionable projects for execution. Develops and oversees all aspects of mentoring and training efforts. Can easily identify individual needs, and find solutions to help people grow and succeed.
Ownership
Scope: "What do I work on?" Scope is the domain over which you are expected to show ownership.
Innovates new strategies and opportunities to vastly improve technical writing practice at Mattermost. Translates learnings from the broader tech world to bring value to Mattermost's customers and community.
High-Impact
Supervision: "How much do I rely on my manager?" Community: "How do others work with me?" The need to receive supervision is inversely related to the instinct to choose what is high-impact.
Conceives, designs, explains, and oversees product direction for nearly any feature or product with no outside direction. Independently executes on cross-team (within R&D) and cross-function (within Mattermost) effort with little or no supervision. Considered an expert in many domains. Works across a broad set of technical and non-technical efforts.
Earn Trust
Influence: "Who do I work with?" As more people and parts of the organization earn your trust, your influence grows.
Relied upon as a key resource for stakeholders both inside and outside of Product Management. Engages with people in the broader tech/PM community (outside of Mattermost) to identify and implement best practices within Mattermost.
Customer Obsession
Customer Impact: "How do I bring value?" Community spans both open-source and enterprise, but ultimately manifests in the same obsession for enabling customers to be successful.
Works consistently with R&D, GTM, G&A, and Sales leadership to set goals and deliverables for customer and business value. Represents Technical Writers and other functions in discussions where ICs are not present. Engages heavily with customers and community to share our product philosophy and strategy. Applies our philosophy to bring value to customer from work done all across the company.
Self-Awareness
Interaction: "Who relies on me?" Iteration: "How do I improve myself and others?" Self-awareness yields an ability to seamlessly fit into any conversation or effort, interacting with a group to work towards the best possible outcome and always iterating towards the best possible outcome.
Works consistently with Mattermost leadership to set product & organizational objectives and direction. Translates these objectives to clear and actionable projects for execution. Develops and oversees all aspects of mentoring and training efforts. Can easily identify individual needs, and find solutions to help people grow and succeed.
The Security Operations team is responsible for the security monitoring and operational security policies of the Mattemost organization.
Security Incident Response Program
Active monitoring and analysis of security events taking place across company, product, and service, platforms
Implementation, upkeep, and growth of security monitoring and analysis platforms
Availability of log ingestion and processing infrastructure
Create, review, and enforce operational security policies, procedures, along with controls related to existing and future-planned compliance frameworks
Infrastructure Vulnerability Management Program
Maintain visibility of industry trends, emerging security issues, 0day/vulnerabilities
Contribute to customer security questionnaires on operational security and compliance topics
Act on results of Red Team / Penetration Testing against Mattermost (the company) and product/service infrastructure
Monitoring and upkeep of Endpoint Detection & Response (EDR)
Access control for Engineering tools and services, and integration with Okta
Engage in verification and impact of product vulnerabilities as it relates to Community and Cloud-hosted instances
Analysis, verification, and reaction to phishing and other malicious email
Management and upkeep of Vault infrastructure and policies
Management and upkeep of Teleport (cloud/company) platform
Management and upkeep of Pritunl VPN platform
Welcome to the Mattermost Handbook process, policy, and onboarding section.
As a remote-first company, we rely heavily on shared knowledge. Often, that knowledge is stored in peoples' heads, on a notepad somewhere, or in a Google Doc. The purpose of the Handbook is to capture everyone's knowledge of how Mattermost works so that we can all have access to it. This means that there's no ambiguity or confusion. It also means that when new staff members join us, it's easier for them to ramp up.
So, let's get started!
As we mature, a Handbook-first policy is critical. But what does this mean?
Handbook-first means that when you have a new idea, a new process, an update to a process, a change in your team, etc you document it in the Handbook first. For example, when a new staff member joins us, they should be added to your team's page before their first day. Another example is if you've created a new Jira process - first document it in the Handbook and then announce it to your team/the company. This allows you to find blindspots and also means that people can go to the relevant page immediately after the announcement to read more.
Great question. It's a team effort across the whole company, but we plan to have a secret weapon in the form of Handbook Champions.
A Handbook Champion is a volunteer from a specific team/operational area who drives Handbook-first adoption and acts as a go-to in the team for Handbook questions. They also enjoy saying "oh you can find that in the Handbook!" and "You should put the in the Handbook!". They're motivated by the understanding that a single source of truth is empowering and decreases wasted time. Lastly, Handbook Champions enjoy working with their team to ensure processes, ideas, plans, and everything in between are documented in the Handbook.
The long-term goal is that Handbook Champions will have a huge impact on Mattermost by supporting constant iteration, decreasing the barrier to information, and breaking down knowledge silos.
The only requirements are that you're excited about the Handbook and knowledge sharing, and love knowing that you're building something indispensable.
There's no set time or output expectation - and it's completely voluntary. The idea is not to have you write or update everything yourself, but to corral your team/operational area and get them into the habit of documenting everything in the Handbook. Another aspect is sharing outstanding Help Wanted issues with your team to see where any gaps can be filled.
However, if the Handbook is something you're passionate about:
You can take as much initiative as you want.
You can suggest and own new content.
You can help drive change and alignment if that’s what you’re interested in.
To put it simply, anytime someone in your team/operational area mentions a process in a meeting or asks about one, remind them that they should either document it or can find it in the Handbook. You may also be asked to review PRs before they're merged. In time, you'll find that you're reminding less, and being asked to review more... until Handbook-first becomes a company habit.
Of course, if you have ideas for content that's needed or content that should be updated and you're happy to tackle some of it that's fantastic. Likewise if you have suggestions, ideas, complaints, or issues - feel free to raise them.
You can join the Handbook Champions channel, and then also update this list with your name and team/organizational area. There can be multiple champions per team.
Yes. We'll sync up once every two weeks initially, for 25 minutes. This will allow us to catch up, sync up, and keep up.
Yes! You get a Handbook Champion badge, and may also be eligible for a Contribution Champion badge, depending a number of factors. There's also swag on offer (of course!)
Menu
Headline style
Noun, noun phrase, or verb
No punctuation
Not more than three words
Action after clicking is obvious, without needing someone to click to discover
Members
Account Preferences
Log Out
Tooltip
Sentence style
Sentence fragment or sentence
No punctuation
Include articles (a, an, the)
Keep it short
Start a Zoom meeting
Flag for following up
Remove from this list
In-field text
Sentence style
Sentence fragment, sentence, or word that's an example of a valid entry
No punctuation
Include articles (a, an, the)
Add a comment
Search
Action button
Headline style
Verb or verb phrase
No longer than three words
No articles (a, an, the)
Exceptions: OK, Yes, No
Add Comment
Edit
Label before a UI element
Sentence style
Noun, verb, or sentence fragment that's the title of the UI element
End with a colon where it precedes another UI element such as a radio button or check box
Include articles (a, an, the)
Sign in with:
Other words, separated by commas:
Label after a UI element
Sentence style
Noun, verb, or sentence fragment
No punctuation
Brief (longer explanations belong to help text)
Channels grouped by type
Alphabetically
Help text
Sentence style
Complete sentences, with punctuation
You can add 20 more people.
People are invited automatically to join the channel.
Title
Headline style
Sentence fragment or sentence
No punctuation
Notification Preferences for Channel
Contributors
The source of truth for the R&D org structure and team membership is this spreadsheet.
R&D is split into multiple divisions, detailed below. Areas of responsibility (AORs) for each team are linked.
The Product division develops and ships the majority of anything product related.
It consists of full stack teams made of developers, UX designers, QA analysts, technical writers and product managers. These teams work together on the core product features, frameworks, platform and performance.
See the spreadsheet for team members and AORs.
Please use the following community channels to discuss particular product topics:
The Data Engineering division builds and supports the data infrastructure and analysis tools.
The Infrastructure group empowers Mattermost to provide a SaaS Platform as Product which serves internal and external users by guaranteeing that we operate an enterprise-grade SaaS platform with self-serve powers.
The Security division is responsible for the implementation and monitoring of the company's security program.
The R&D Calendar highlights recurring events such team planning meetings, guild meetings, hangouts, and office hours.
Adding these events to a shared calendar accomplishes several purposes:
It improves the onboarding experience by allowing new staff members to self-discover meetings of interest.
It reinforces our culture of being "default open", even if most of the time only those explicitly invited show up.
It allows for occasional guest participation without having to juggle a permanent invite.
All staff are encouraged to occasionally join another team's planning meeting. In addition to learning more about the product and areas of ownership, this can be a chance to see how that team works together and incorporate the best parts on your own team. It's not necessary to ask permisison to join a meeting on the R&D Calendar, but focus on being a listener instead of a contributor to avoid distracting the team.
All staff in R&D have permisison to invite the R&D Calendar to recurring meetings. When adding a guest, search for R&D
and be careful not to invite rnd@mattermost.com
which would invite everyone in R&D. Instead, simply invite the calendar itself:
The calendar will not "accept" the invite by default, with the invitation showing up as pending. With the calendar visible, select the event and accept the invite so the calendar appears uniform:
We are Customer Obsessed. Working in an agile development process, we think of roadmapping and product development as living; subject to changes as our communities and customer needs change. The further out we commit, the harder it is for us to adapt to our customers’ needs. We use customer feedback to guide our product direction.
We Earn Trust. We welcome input from all members of the core staff and community. We appreciate input on the technical solution, user interface design, overall user experience and functional behavior of the product. This helps us uncover blind spots and promotes input and perspective of our customers.
We are Self-Aware and work on High Impact changes. We use data in our decision-making processes. By developing an MVP (minimum viable product) of a solution, we can gather more data to inform our future work; thereby allowing us to create solutions for real pains. A MVP may include providing a prototype or a partial solution so we can collect feedback in the most realistic scenarios. We try to ship the smallest thing as quickly as possible and learn from it, so we make sure what we are building is going to create the value expected by our customers.
There are three distinctive characteristics that influence our release planning process:
Agile development cycle
Time-based releases
Release planning cadence
The waterfall model follows a linear approach to software development where each phase in the process only begins after the previous phase is complete. The intent of this approach is to deliver a feature to customers once all the agreed upon requirements are completed.
An agile methodology is a more iterative approach. Components of the work is shared with customers as they are completed for feedback and validation - this may include Beta releases, prototypes or even wireframes during the design stage. The intent is that customers have more opportunities to influence decisions and enables development teams to change direction faster if needed.
Mattermost uses the agile methodology for development because it supports iteration and allows the product team to get closer to our customers and users. This is also the model that development teams have been adopting in recent years.
This means our release planning process is also agile. We continuously iterate our priorities based on new feedback and painpoints we receive, and treat our release plan as a continuously evolving, living document. Therefore, typically we lock the release plan for a quarter. The next quarter’s work is usually queued, but there is some flexibility to changes prior to beginning development. Work planned for more than two quarters in the future is very flexible to changes and reprioritization.
In a feature-based release cycle, you release when a given set of features is implemented. Thus, there is no release date set until the work is complete.
In a time-based release cycle, you release at a predetermined date with whatever features are ready at the time. As a result, some features may be pushed to a following release, but the release date itself does not change.
Mattermost uses time-based releases for the following reasons:
Trust: Having a predetermined release date increases predictability as it enables organizations to plan their own upgrade cycle.
Iteration: Having a set release cadence enables us to release new features and bug fixes early and often; in a feature-based release cycle, a release may get delayed by days or even weeks if surprises arise during the release cycle.
Community: A time-based release cycle is preferred among developer communities, especially in open source. Contributors are aware of the release schedule and often aim to complete development by a specified date so that the feature makes it into a release. However, if those dates are missed, we can simply deliver the community-built feature on the next release. Doing feature-based releases with the community is risky, since there is generally less influence on when exactly the work is completed.
At Mattermost, our planning cadence consists of:
Yearly: Company fiscal year and long term product strategy planning
Quarterly: Release Plan and Quarterly OKR planning
Monthly: Check in on OKR status
Since we follow an agile development style, our release plan is also agile. We plan releases quarterly, following the process outlined below.
Before each quarter begins, we lock on plans for:
What's Launching: Key initiatives we plan to work with Marketing on launching this quarter.
What's In Progress: Key initiatives we will start working on this quarter, but may not ship until a future quarter.
We also update the backlog to show which items we are considering for 6 to 12 months out, but this list is flexible and gets updated each quarter based on any changes to company strategy, product goals, community needs, and market conditions.
Site Reliability Engineering (SRE) team ensures the availability of Mattermost Cloud user-facing services, building the tools and automation to monitor and enable this availability. These user-facing services include multiple environments including testing, development and production, among others.
Enable developers to build reliable, scalable, cost efficient services that keep the Mattermost Cloud customer's reliability targets (SLA, SLO) and SRE principles (observability, SLOs etc.) in mind.
On-call, Incident Management and Incident Review
Change management
Influence and encourage best practices
Maintain and update documentation, training, and Runbooks
Empower developers with self-serve tools
Meet & review reliability, quality, and cost KPIs regularly
Be proactive instead of reactive
Be open and data driven
Embrace risk and chaos
Promote and embrace communication
Evangelise cost effectiveness
Evangelise and adopt SRE & DevOps practices
You can also reach us on the Mattermost Community Server as follows:
For support questions related to production you can reach us in ~cloud-support
channel.
For all the other questions you can reach us in ~cloud-sre-team
channel
Reliability & Resiliency
Availability & Cost Optimisation
Automation
Security
Documentation
Keep the lights on
New issues are reviewed weekly via Issue Triage.
The team regularly works on the following tasks, listed below in priority order:
Ensuring availability of Mattermost Cloud user-facing services
Ensuring availability of community.mattermost.com (e.g. daily releases, calls)
Ensuring the availability of the internal Cloud Platform (e.g. self-serve testing environments, Observability Platform, GitOps Platform, IaC platform )
Before Accepting
After Accepting
While we use vision and strategy to guide what we work on, there are some common principles, which are built from our , that define our behavior in building our product. These principles align the R&D team on the approach to product development and provide insight to our customers why we act the way we do.
We Insist on High Standards and have Ownership of the work we do.. This means we keep a high quality bar for our product. Each release we follow a thorough testing process that ensures each feature meets our , is tested for happy path and edge cases and meets security best practices. If a new feature does not meet our quality bar, we will push it into a later release instead of risking creating issues and frustration for our customers. If we find out that there is an issue in a version of released software, we prioritize fixing it. We don’t shy away from , when a fix is critical to the usability of our product.
You can find step-by-step details of the release planning process and timelines at .
If you need our assistance please follow the
Each quarter, we maintain our OKRs as epics in this which is divided into the following areas:
Mattermost members open new issues in the
Incident Review & Knowledge share
Reliability Engineering
Cloud leadership, SRE, Release
Monday
Triage & Planning
SRE Planning
SRE, Platform
Tuesday
Cross-org collaboration
Infrastructure Guild
Leadership, Infrastructure, Product, Security
Thursday
Bring chaos to our systems
Chaos Gameday
SRE
Monthly
Learn more about our product planning strategy and processes.
This section outlines key processes shared between Product, Engineering, Quality Assurance, Security, and Product Operations.
Feature Labels: Learn what each feature status label means
Mattermost’s feature labels serve as indicators of the status, maturity, and support level of each feature, helping users and administrators navigate product feature adoption with clarity and confidence. They communicate the stage of development, level of readiness, and potential risks associated with a feature for customers seeking to adopt new value.
Solution is an early Proof of Concept (POC) with an unstable codebase, minimal QA, and potential UI issues. Security reviews are incomplete, making it unsuitable for production. Distribution of the solution is limited, and our Cloud environments are typically not eligible to use experimental features. Caution is advised as the solution may be discarded if its value is not proven.
Solution is in early development towards General Availability, with an unstable codebase, minimal QA, and potential UI issues. Security reviews are incomplete, making it unsuitable for production. Distribution of the solution is limited, and our Cloud environments are typically not eligible to use alpha features.
Solution is in active development towards General Availability. Not fully complete, but reviewed by our security team, adoption is suitable for a small set of customers behind a feature flag. Identified bugs are fixed on a best effort basis, and no major breaking changes are anticipated. Beta is a transitional stage, meaning the solution is maturing but requires careful consideration in a full production deployment as scale and client availability may vary.
Solution has undergone thorough validation and testing. It is feature-complete, meets quality standards, and has successfully passed security reviews. General Availability features are suitable for widespread production deployment and adoption, as they offer stability and reliability, with no expected changes that could disrupt functionality or scalability.
Solution is officially marked for removal from the product. It is no longer supported or actively maintained by the development team. If the feature is still in use in your deployed version, we recommend users discontinue its use and migrate to alternative functionalities.
There are so many things we want to accomplish. How do we prioritize these properly? In any teams’ backlog you will see stories, epics, customer bugs, and tasks. The type of work that we prioritize includes security fixes, bugs, features, UX improvements and technical debt.
Work is prioritized based on its ability to keep the product functioning at a high-quality production level, to help us fulfill our strategies and by demand from our communities and market. New features are prioritized based on how they help support company strategies and product goals. A high level principle that drives priortization is the value of the feature over the cost to develop the feature. One way that we try to measure this is through the RICE model. RICE stands for Reach, Impact, Confidence and Effort. A feature that would improve the product for a large volume of our end-users, would make a difference everyday to how they work and is fairly low risk and effort to add is likely prioritized over one that was very risky and did not make a difference to a large volume of users.
When something is not on the roadmap and is important to our community, we rely on feedback to know if we should reconsider prioritizing it. We value community input on our open source offering equally to feedback from our largest paying enterprise customers. Since our roadmapping process is agile, we often reconsider features based on new information for future releases.
Typically, we lock in on prioritization for a quarter’s worth of time. This allows our teams to focus on work for that quarter without major changes which are disruptive to the development flow. The next quarter’s work is usually queued, however there is some flexibility to changes prior to beginning development. Work planned for more than two quarters in the future is subject to changes and reprioritization.
How feature requests are tracked, prioritized, and escalated.
At Mattermost, we track paid customer feature requests in Productboard. Productboard is an internal tool used for tracking and organizing customer intelligence, feedback, and requests. Customer-facing teams can add notes to Productboard based on this process.
Uservoice is used for our community to submit a request or upvote existing requests.
The Product Management team uses the information from both our customers and community to help prioritize features for the roadmap.
The Mattermost Product team uses information from our customers and the open-source community to guide feature roadmap.
We use two forums to connect with the user community - Customer ProductBoard and Community Feature Proposal Forum.
Customer ProductBoard is a place for paying customers to connect directly with the product team on improvements most important to our ideal customer profile (ICP): https://portal.productboard.com/mattermost/33-what-matters-to-you/tabs/120-community-requested-features
In this portal, customers can share how important an improvement is, share their use cases relevant to those improvements, and submit new ideas directly to the product team.
Product Managers review the feedback weekly to guide product direction and feature roadmap development.
Community Feature Proposal Forum is a place for users in our free deployments to propose new feature ideas: https://mattermost.uservoice.com/forums/306457-general
In this forum, community members can propose new features, share ideas for new improvements, and connect with other members in refining their proposed features.
Community Manager reviews the feedback weekly to hear what matters to the most engaged users in free deployments. Key trends are also shared with the Product team.
When filing a feature request, the most important thing to do is capture the "why" behind it. A great way to do this is by writing requests in the form of an "Experience Report". As described in the golang wiki:
"The best experience reports tell: (1) what you wanted to do, (2) what you actually did, and (3) why that wasn’t great, illustrating those by real concrete examples."
Writing in this format ensures the focus is on pain points, rather than solutions. This allows us to better define the root of the problem, which in turn makes it easier to come up with creative solutions to fix it.
If you're filing a feature request on behalf of a customer, make sure to also include:
Who requested the feature.
How important it is to them (ideally, based on stack rank against their other requests).
Links to any relevant conversations, Zendesk tickets, etc.
Generally speaking, feature requests are prioritized through our normal roadmap process. The roadmap provides an idea of where the feature falls on our prioritization list, but is not a committed release date.
If a deal is dependent on committing to a concrete timeline for a feature, the Sales team can escalate the request by sharing:
What is the request?
What is the timeline ask from the customer?
Are there other “must have” features blocking the deal? If so, please provide a full list.
If we build this feature, is the customer committed to closing the deal? If so, how big is the deal?
Did the customer offer NRE dollars to accelerate the feature?
The Product Management team will then evaluate the ask, and determine if we can commit to a timeline or if the feature does not fit on our roadmap.
Please be aware that committing to a concrete timeline for a deal is the exception not the norm, as it can have a negative impact on delivering other features that the rest of our user base is expecting.
A release plan outlines the features and work that we plan on putting into the release version of the product. A release plan allows us to understand our resources available to accomplish the design, development, and quality assurance work required for a successful product release.
A release plan is different from a roadmap, in that a roadmap typically lays out the direction and prioritization the product is headed and includes larger objectives and larger features.
The release plan may include major bugs, smaller features and even tasks required to complete a feature set. The release plan document typically includes all the R&D teams’ proposed work so that we can get a holistic view of what features, bugs or improvements are targeted for the release. Each team may also have their own version of a release plan that they use for tracking features and resource planning. You can find our release plan here.
When we add items to a release, we are targeting their completion by that release, however, things such as underestimation of work required or quality issues found during testing may prevent it from actually being released.
If a feature is at risk being cut from a release after it was targeted, we do our best to communicate to all those interested as soon as possible. Typically, the PM team reviews and updates the release plan weekly.
If a feature is cut from a release, it is not necessarily put into the next release. There may be unforeseen complications that need to be solved that may take multiple release cycles to address. In some cases, other work may be deemed higher priority and the feature will be deprioritized and considered at a later stage.
PMs will do their best to communicate next steps for features that are cut.
We follow a time-based release philosophy. This means we release a new version of our Mattermost product every month on the 16th.
Our releases for January and July are offered as an Extended Support Releases (ESR). This type of release allows customers to receive backports for security fixes and bug fixes without having to upgrade to a version with new functionality that would require significant testing and certification before rolling to large volume of users. We also do dot releases for major bugs and security fixes and backport these to the previous three monthly releases. For more information on our release types and processes please see this documentation.
At times, we may do a major release version of our software. A major version provides us the opportunity to make breaking changes that allow us to re-define how product functions and to support future features, deprecate some foundational features that have been replaced, as well as package new major functionality as part of the binary. Major versions are scheduled well in advance and notices about major changes are communicated early so that customers can prepare for changes.
We plan periodic launches to drive awareness in the market so that our target audiences who aren't already Mattermost customers can get exposure to our product and our offerings.
Launches are also a way for the company to put stories into the market to communicate Mattermost’s position and strategic direction. Launches are different than releases or a roadmap in that a launch highlights the most exciting changes to our product. A launch plan is owned by the Marketing team whereas the release plan is owned by the Release team (R&D).
We may plan a launch with the release of a new product offering, at the release of a highly demanded feature, or to announce a set of features that are thematically connected. The timing of a launch may be different than a release depending on other communications and events of the organization.
Learn more about our development planning and processes.
Learn more about our release planning strategy and processes.
Dot releases are done for high priority and high severity security issues and customer bugs. The general steps are:
The issue is escalated by customers, customer support team, community members or internally.
Our developer team investigates the issue as soon as possible.
A pull request for the issue is submitted and dev/QA reviewed, and then merged.
The bug fix is cherry-picked to the relevant release branch.
A release candidate (e.g. 7.2.1-RC1) is cut for quick final smoke tests.
After QA approval, a final release build is cut (e.g. 7.2.1) which is ready to be shared with the customer.
The time-to-fix varies, but urgent dot releases are always prioritized.
Please refer to the Dot Release Playbook for a most up-to-date checklist.
This document outlines the release process for the Mattermost desktop app.
Desktop app releases follow a fixed schedule of 4 releases per year. Releases ship quarterly by the 16th of February, May, August, and November of each year.
A dot release will be prepared sooner if Electron releases a security update, or if other urgent bugs are found.
Please refer to the desktop app release playbook for the release checklist.
For the desktop app release build process, please refer to this document.
Note: T-minus counts are measured in "working days" (weekdays other than major holidays concurrent in US and Canada) prior to release day.
Every 3 months, the Desktop app release milestones follow the cloud/self-hosted release milestones to align all release testing cycles.
Schedule for Desktop App releases:
Cut release branch at T-24. This is also the Feature Complete deadline.
Cut RC-1 at T-19.
Code Freeze at T-10.
QA approval should be ready by T-8.
Release Day at T-0.
Bug bashes
Run a bug bash at least for major releases.
Bug bashes can either be run asynchronously/individually or as a group.
Use a playbook to run bug bashes - example bug bash playbook.
PMs can assign test assignments and testers under the "Testing areas" checklist item.
Decide environments to test on - normally community or rc.test.mattermost.com + include Mobile and Desktop app environments.
Decide date(s) for the bug bash.
Announce bug bash on the day when the bug bash starts.
Invite community members to participate in the bug bash.
Triage owner (normally Release Manager) - review reported issues to identify what to fix for the upcoming release and open/assign tickets to teams.
Changelog checklist
Features
State benefits first.
Order features based on benefit for end users.
Include links to docs where appropriate.
Bugs
Check/test if the issue was in previous server version.
All sections
Check that all sections are written and formatted the same way as in previous changelogs.
API/Websocket/Database
Work with Devs on this section.
Next version
If the changelog mentions items regarding upcoming versions, move them to the bottom of the changelog.
Ways to meet deadlines
Post a list of dates for next release at or soon after T-0 and ping all of the teams.
For features and bugs, start pinging early enough before due dates and make public posts.
When pinging people, provide a clear due date and give a reason for the due date (e.g., Code Complete on Monday).
Ask if people need any help or have any questions.
Translations
Monitor progress of translations at https://translate.mattermost.com/ and ping language maintainers a few days before due date if they're not getting to 100%.
Ask DevOps to submit a new translations PR if a translation deadline extension is requested.
Target date for final translations PR is T-24 (feature complete deadline).
Ways that features/bugs guidelines are currently enforced
Features guidelines:
Start to ping people already at T-30 for feature PRs that are still open.
Bugs guidelines:
Need to focus on fixing only S1 and S2 bugs after RC-1 has been cut to avoid missing T-10 deadline for cutting the final.
Ways to ensure features are tested for HA/Mobile/Scale
HA: Test server available.
Scale: Via loadtests.
Release marketing
Blog post:
Follow guidelines.
Date/time RC1 cut (PST)
Check Release Self-Hosted/Cloud channel history for date/time RC1 was cut.
Total number of RCs cut
Check Release Self-Hosted/Cloud channel history for how many RCs were cut for that release.
Number of days the final build is cut before the 16th
Check Release Self-Hosted/Cloud channel for post with official release build. Oxygen = 16th - Day Final RC is cut
Community + customer bugs reported during release timeframe (17th to 16th)
With a new or existing Jira filter, with:
Project = Mattermost
Fix Versions = Latest released version
Issue Type = Bug
Label = Customer-bug and Community-bug
Created Date = 17th of the previous month
Release Date = 16th of the current month
Number of bugs reported within a week after the release
With a new or existing Jira filter, with:
Project = Mattermost
Issue Type = Bug
Status = Open
Label = Customer-bug and Community-bug
Created Date = Between the 16th and 23rd of the month
Number of customer bugs fixed during release
With a new or existing Jira filter, with:
Project = Mattermost
Fix Versions = Latest released version
Issue Type = Bug
Status = Closed and Resolved
Label = Customer-bug
Total valid bug fixes in fix version
After closing current release:
project = Mattermost AND issuetype = Bug AND resolution not in (Duplicate, "Cannot Reproduce", "Won't Fix") AND fixVersion = latestReleasedVersion()
Total valid regression fixes in fix version
After closing current release:
project = Mattermost AND issuetype = Bug AND resolution not in (Duplicate, "Cannot Reproduce", "Won't Fix") AND fixVersion = latestReleasedVersion() AND label = rc2, rc3
Valid bugs found after RC1 is pushed to next release
After closing current release, adjust dates as per above, and use this Jira query:
project = Mattermost AND issuetype = Bug AND resolution not in (Duplicate, "Cannot Reproduce", "Won't Fix") AND created > "START" AND created < "END" AND fixVersion = earliestUnreleasedVersion()
Valid bugs found after RC1 fix version = other (eg unscheduled, not set)
After closing current release, adjust dates as per above, and use this Jira query:
project = Mattermost AND issuetype = Bug AND created > "START" AND created < "END" AND resolution not in (Duplicate, "Cannot Reproduce", "Won't Fix") AND (fixVersion not in (latestReleasedVersion(), earliestUnreleasedVersion()) OR fixVersion is EMPTY)
Total valid bugs found after RC1 is cut
After closing current release, adjust dates as per above, and use this Jira query:
Check Jira timezone + Community server timezone and make sure times match
Replace START with date (yyyy-MM-dd HH:mm) RC1 was cut
Replace END with date (yyyy-MM-dd HH:mm) release was published
project = Mattermost AND issuetype = Bug AND resolution not in (Duplicate, "Cannot Reproduce", "Won't fix") AND created > "START" AND created < "END"
Number of PRs reverted
Check recently merged GitHub PRs (with the word "Revert" in the PR title).
(Non-security) Bugs requiring patch release
After any patch release goes out (after the normal release date): Check Changelog for total number of non-security patch releases.
Total features/improvements in fix version
With a new or existing Jira filter, with:
Project = Mattermost
Fix Versions = Latest released version
Issue Type = Story
Status = Closed and Resolved
https://mattermost.productboard.com/
Productboard a tool owned by Product Management for:
Feedback collection
Feature validation
Requirements gathering
Feature prioritization/roadmap planning
Specifically, Productboard is used to decide what to build (and when), while other systems like Confluence or Jira are used to communicate and design on what exactly is being built at individual feature level.
Productboard is organized into: Insights (AKA “Notes”) Features Roadmaps Portals
You can add a new note to capture feedback. This is used to help identify customer problems, wants/needs, feature shortcomings, and any other areas for improvement that stem from interacting with customers. Essentially, think of this as a place to communicate the most important takeaways from customers that the Product team can help you with.
Notes from customer calls should be filed in Salesforce. This automatically pushes the customer call notes into the Mattermost “Customer Feedback” channel for visibility, and also to Productboard so it can be processed by PMs.
Important points about notes:
Notes are specific to a customer/prospect.
Notes can include multiple requests (Product Managers can apply multiple elements from the note to different features if necessary).
If you're not sure if the request or feedback should apply to an existing feature, you can simply capture the feedback as a note, assign it to the Product Manager overseeing that area, or leave it unassigned.
When filing a note in Productboard:
Add a title to the note that summarizes the problem, not the solution.
Add the customer name.
Add as much detail about the request and/or feedback as possible.
(Optional) Add the PM owner as Assignee if you know it. If not, no worries.
Sample questions to answer:
What problem are they trying to solve? What's their specific use case?
How are they solving the problem right now? How is the current solution working or not working for them?
How is this problem affecting their business and users?
What's the priority for them? Is getting a solution a blocker, a must-have, or a nice-to-have?
Using the official Productboard Chrome extension you can add notes from any page within Chrome (including SFDC, Zendesk, GitHub, HackerNews, Mattermost web, etc.) and streamline your workflow dramatically.
As long as you are logged into Productboard, the connectivity to the Mattermost insights board is secure and seamless.
Pro tip: If you keep your call notes in a browser app (such as Google Docs), you can highlight the sections related to feedback and quickly send them over to productboard with the extension.
You also have access to view Features from the Master Features view or from Roadmaps. You can search and browse all features and ideas and even read the notes and portal cards from Product Managers for a detailed description of the feature/idea. In the case of planned features, you'll have complete insight into the status of the feature and a rough idea of where it sits on the roadmap.
Within the detailed view of individual features, you can view the full list of insights added by other Product Managers, Customer Success Managers, Customer Engineers, or Support Engineers. You also have the option to add insight directly to the feature itself.
New feedback from users and customers is sent to the Insights Board. Typically these are submitted by fellow Product Managers, Support, Customer Success Managers, or Sales through integrations with email, Zapier, Zendesk, or others.
Insights are processed by Product Managers on a weekly basis. When a new Insights is submitted in Productboard, it is also posted to the Product Management: Private channel via a Zapier integration.
When a PM processes an Insight, they will attach the relevant information to an existing or new feature. New features are entered as “ideas”. One Insight might contain links to multiple features, you can see the highlight and a pencil icon which will show what feature the note is attached to.
Staying informed of status changes and comments on a feature is easy in Productboard:
Locate the feature on the Master Feature list or by searching on the Feature tab.
Click on the feature name to open the feature details card.
Add yourself as a follower by clicking on the + symbol in the bottom left corner of the feature details card.
Learn more about Productboard notifications.
Features default to “idea” when first created:
Idea: When you have a single request or an idea for a feature it starts out in this status. As new customer insights come in, you'll be able to attach them to this idea to validate and measure demand.
Under Consideration: This status is used to identify features that are demand validated, but we remain undecided if we'll build them (for various reasons).
Planned: Features that we've validated and decided to build are planned. These features should all have a release assigned (if scheduling is unknown, assign to the release called backlog.
In Development: All features actively being worked on by UX or R&D belong to this status.
Postponed: If a feature is cut from a release, followers of the feature need to be notified. Currently, productboard only notifies followers when a status changes or they're explicitly mentioned. We have added this status to ensure followers of a feature can stay informed when features are cut.
Won't Do: This is a status often used after the Under Consideration status if we decide for any reason not to build a feature that's demanded by the market. It's important to keep track of for future cases of demand. If you set a feature to this status, please be sure to provide the reason we won't do it. This reason should be in a format that can be shared with propspects/customers.
Core Product 1
Channels, Posts, User Account settings, User Statuses, Team Management, Calls, Compliance
Ian Tao
Core Product 2
Playbooks, Boards, User invites, User Groups, Insights, User Management, Guests
Winson Wu
Apps & Integrations
Plugins, Apps, Apps Marketplace, Apps & Plugin Framework, Webhooks, Slash commands, Bots
Sandy Atkinson
Growth
Onboarding, User invites, NPS plugin, Feedback widgets, In-product notices, Onboarding nurtures
Eric Sethna
Self-Service
Trials, Cloud Evaluations, Upgrade/Downgrade Path, Billing, Purchases/Customer Portal, Licenses
John Lugtu
Platform & Distribution
Self-hosted deployment, Server Configuration, Scale, High Availabilty, Database, File Storage, Security, Logging, Kubernetes, Omnibus
Neil Barnett
For a comprehensive list of ownership areas, please see this document.
The Product Security team is responsible for identifying and managing solutions to protect Mattermost product security.
Responsible Disclosure Program
Security Reviews
Plugins
Features
Architecture
Release Pipelines
Bug Bounty Program
Threat Modeling
Security Automation
Dependency Track
Security Scorecard
Gobom
Penetration Testing (Product)
Security Release Notes
Meet with direct manager
Review your area of ownership and team members
Get added to key organization and team meetings
Get 1:1 set up for the next few weeks for frequent check-ins
Review the onboarding plan for first 90 days
HR Paperwork & Logistics
Look at the product with “fresh eyes”
Install Mattermost on your laptop, go through the steps of setting it up
Optionally also install the Mattermost Mobile App on your mobile device
As you read the documentation, look out for any improvements that can be made (outdated information, spelling/grammar, etc)
Introduction to our Customer Obsession Principle
Introductions to team members through 1-1s
Use introductions as learning opportunities to understand different parts of the company (ask questions!)
Introduction to product
Introduction to key resources
Introduction to key processes
Post introduction to PM team to GTM teams. Request to join customer calls
Get access to key tools (Jira, Github)
Open your first pull request in Github for an improvement to docs.mattermost.com or in-product text.
Customer Obsession:
Join and introduce yourself in these channels, ask to join any and all customer calls - see if you can get a couple scheduled this week:
GTM:PM Engagement (Stu Doherty, Jenn Lawler)
Sales Discussion (Lance Howden, Steve Green, Richard Pidgeon)
Join and review the topics and posts in these channels to get a better understanding of our customers:
Begin watching training videos on academy.mattermost.com
Begin reading docs.mattermost.com
Team:
Join a location-specific channel (e.g. Loc: Canada
or Loc: US
) for region-specific updates
Meet your R&D team (Developers, Designer, QA, Technical Writer) and join team meetings
Ask questions to understand development, design, QA processes, and documentation processes
Meet with Amy (Release Manager) and read the release process doc
Meet with Ian (CEO) [https://github.com/it33/readme/blob/master/README.md). This will be scheduled for you
Meet other Product Managers (Jason Blais, Eric Sethna, Katie Wiersgalla, Ian Tao, Chen-I Lim, Neil Barnett, Winson Wun, Laney Coletti-Saracino, Don Hogan, John Lugtu, Sandy Atkinson)
Learn about their areas of ownership
Participate in PM, R&D, and Customer Obsession Meetings
Jira
Sign up to Jira and post in the “Jira configuration” channel to be added to internal team
Get Jira training from PM buddy
Make your first edit and pull request on GitHub
Update documentation or product help text
Make other small contributions based on your fresh experience with Mattermost
File a bug in Jira
Test a new feature on a test server and suggest an improvement in our UX feedback channel
Leave feedback on a design proposal in our spec channel
Fresh perspective product review:
Before diving too deeply into docs, processes, and everything else - take this chance to share a list of questions, observations, and points of confusion to help with your own learning and to provide feedback on your first impressions of Mattermost for the rest of the team.
A good place to start is exploring the websites, and then start a cloud trial account.
Google Mattermost
Users and customers
Product
Features/Functions
Technical
Market and Competitive Landscape
Team
People and Processes
Post detailed notes from customer calls in Salesforce
Answer at least one question during the week of community support in the Mattermost forum
Document areas of improvement you see in your area of ownership or in team's processes. Share these with your manager.
Update this onboarding document.
Learn about our customers and users
Learn about Mattermost Support by getting an overview on support processes and systems
Customers: Zendesk (Sven Huester, Support Lead))
Community: GitHub, Forums (Amy Blais)
Learn about Customer Success (Brent Fox)
Overview of Customer Success team, who owns what
Current Customer Success processes
Typical challenges during customer onboarding
Join one CSM team meeting to meet the rest of the CS team
Join customer and prospective customer calls
Join calls with CSMs & Sales team
Take detailed notes and log in Salesforce
Review feature requests
Spend a week doing community support in the Mattermostforum
Review documentation first and work with Support Lead or PM mentor to answer any questions documentation does not address
Update docs with answers as appropriate
Learn about the market
Learn about Mattermost Sales (Regional VPs and Customer Engineers)
Sales team overview
Sales team priorities
What competitors are we up against
How does Sales team position the product
What are typical challenges for the Sales team
Which sales do we win, which do we lose
What are the most common questions on configurations and trials
Learn about Mattermost Marketing (Marketing Team Lead)
Marketing team overview
What are the Marketing team’s priorities
What is our current messaging and positioning around Mattermost
What is needed from Product Managers to support Marketing initiatives
Do some mini competitive research analysis
Review of MS Teams, Slack, Discord, and other collaboration products
Learn about the product
Product Direction (Product Lead)
Current Year Company goals and strategy
Review videos on Mattermost Academy
Technical Architecture (Feature Team dev lead)
Product areas: Functional Overview and Roadmap
Product Analytics
Tips on things to watch out for if running your own analytics
Dive into product analytics (via Looker)
Learn about the product development process
High level overview (PM buddy)
Team-specific processes (PM buddy)
Team Triage
Sprint Planning
OKRs
Join all feature team meetings (Triage, Sprint Planning)
Design process (Feature team designer)
Competitor research
User research
Review process
Spec review channel
Working with contributor community (Jason Blais)
Help wanted tickets
Community buddies
…?
Release process
QA process (QA team member)
General QA process
Sites for testing
Release testing process
Add to release testing
Release process (Amy, Release Manager)
Shadow feature team meetings and conversations
Contribute where possible (reviewing research and design specs, filing Jira ticket bugs)
Ramp up on a couple of ongoing projects or smaller projects
Identify areas of improvement for your area of improvement.
Other projects identified by PM mentor to assist in learning about your area of ownership
Update this onboarding document!
Helpful links, FAQs, and summaries of what you learned that would be useful for a new PM to know in the future
Example past project: Business Model Canvas
Participate in job duties and acquire ownership of a full feature (or more).
Document detailed notes from customer calls for requirements and use cases.
Kick off a project with the UX, Engineering and QA.
Write spec document and release announcements for your feature.
Participate in transitional projects with exiting PM owner
Interview customers or users for research for an upcoming project
Document research findings, use cases and requirements
Work with UX team on specs for your project and validation of designs with customers
Work with Development on specs and PR reviews for your project
Work with QA on test plans
Prepare customer facing documentation for your project
Allow PM mentor to shadow you and review your work, providing guidance and feedback
Other projects identified by PM mentor to assist in learning about your area of ownership
Own all features within the release
Update and maintain roadmap
Work directly with developers, designers, and other stakeholders to progress projects
Update and share roadmap with your direct manager.
Respond to customers and internal stakeholders on questions relating to areas of your ownership.
Prepare research and requirements for next upcoming projects.
Prepare research and queue next projects
Work independently with Feature team (Dev, UX, QA)
Answer questions related to the projects you have been involved in and areas of ownership within the product (with support as needed from PM mentor).
Mattermost Technical Writers focus primarily on writing, editing, structuring, and maintaining Mattermost technical and product documentation, end user documentation for Mattermost Channels, Boards, and Playbooks, as well as developer documentation and the company Handbook. Technical Writers also manage in-product microcopy, provide editorial reviews for all documentation across the organization, and work closely with the community to improve documentation.
Documentation and technical writing at Mattermost covers (but isn't limited to) the following verticals:
Channels
Mattermost Cloud
Self-managed deployments
Messaging features and functionality
Playbooks
Boards
Calls
Growth
Self-service
Customer Portal
Telemetry
Apps Framework and Marketplace
Other areas of documentation include:
Mattermost Handbook
Integrations (developer documentation, plugin documentation, and developer journey)
Documentation metrics:
Docs page ratings via Google Analytics
Google Analytics metrics for page visits, read times, and bounce rates
Customer feedback analysis
Metrics dashboards using RudderStack
In-product messaging and interface
GitLab documentation for:
GitLab helm chart docs
Developer documentation for:
developers.mattermost.com, including Contribute, Integrate, and Extend sections
General developer experience docs, e.g. code samples, best practices, and tutorials
Community and doc review process
Process for Doc Up plugin
Docs review and release coordination
Community Help Wanted doc issues
Content and processes
PR reviews across the organization
Documentation processes for release PRs
Please reach out to the Documentation Working Group for any questions.
Our documentation is open to contributions from anyone. The basic outline for getting started with contributions is provided in the README of the docs repo. If you have write access to the repo, you can create a branch off master and work on that.
Once complete, submit your Pull Request (PR). Ensure that you assign appropriate approvers and labels - if you've forked the repo or don't have the correct repo permissions you may not be able to do this, so you can skip this step. Read more about the review process here - it applies to various types of contributions including documentation.
Try to submit files in batches rather than single PRs for each file update. This reduces the PR load and also groups your changes more effectively.
When there are lots of changes requested, especially on a docs PR that doesn't require QA testing, you can use the "Add suggestion to batch" feature in GitHub to commit all of the suggestions at once. You need to be on the Files changed tab to use this feature, though it's also shown on the Conversation tab. By batching your suggestions, you can use one commit message such as "Added batch suggestions from @Carrie Warner". This just makes the commit history of the PR a lot more readable and useful for everyone reviewing it.
Descriptive PR titles and commit messages go a long way, especially when the PR is referenced in the future. The default PR titles that GitHub gives us like "Updated README.md" are not very helpful because there's no way to know the purpose of the PR by reading the title. For example, if the whole file was translated to Japanese because we realize that's our main audience, that information isn't obvious unless you open the PR and read it - or if it's in the PR title.
Our Documentation Style Guide is a guide to writing Mattermost product documentation and includes guidelines around punctuation, casing, and how to format files. We also have a guide for writing UI copy which includes tip, best practices, and examples.
Note: This process is in flight.*
Our product documentation is available for translation contributions. Join the i18n channel on our Community server and connect with our translation community members. The documentation translation process is still being defined, and @cwarnermm is the DRI along with members of the Localization team.
Currently, submitting a translation PR follows the same writing and editing process as other PRs. However, there are additional considerations to bear in mind when submitting your PR as these assist with the approval and merge process:
Do you have an active test instance running with the integrations guide translated so we can validate the rendering and formatting?
If the content you're translating includes screenshots should we keep the original English versions of the screenshots, or consider translated versions of them too?
If the intention is to translate the screenshots, is there a proposed process for keeping them up to date?
Have at least one member of UX team and one member of Apps PM team review the user experience in choosing different languages.
To maintain high standards for translated documentation, set up a process to notify translators when something is changed in the English-version of the docs, and expectation on correcting translations for new releases.
Decide if we want to indicate translations level - e.g. “Alpha” or “Beta” for translations that are in progress.
Test you can successfully rate a translated docs page by selecting a rating emoji. Ping @justine.geffen for validation of this.
Members of the writing team have two ways to contribute to Mattermost product documentation:
Using GitHub web tools. See the GitHub training section below for details.
Working within a local development environment. See the mattermost/docs repository README documentation for details on setting up a local environment.
Mattermost product documentation contributions can be created in one of two ways:
As a branch (applies only Mattermost staff with appropriate GitHub repository permissions).
As a fork (applies to all other documentation contributions).
In a GitHub documentation PR, branched contributions display using the branch name, and forked contributions display as username/reponame:branchname
instead. While branched contributions are automatically pulled down to a local environment when you run the command git pull
or git fetch origin
from the command line, forked contributions must be pulled down manually.
To work with a forked contribution locally:
In the GitHub PR, identify the contributor's username.
In your local file system, create a new directory for the fork.
Navigate to the new directory, then clone the fork by running the command git clone https://github.com/username/reponame
. Note that you don't need to specify the branch name.
Switch to the branch you want to explore by running the command git checkout branchname
.
(macOS users only) Sync your virtual environment for the new directory by running the command pipenv sync
.
Extending product documentation functionality typically involves extending the Sphinx static generation tool with extensions that introduce new display, page, build, navigation, or output capabilities. For example, all code blocks on all pages of the product documentation feature a copy/paste option to make trying out code samples easy for documentation visitors. The copy/paste option was added by installing a Sphinx extension created by an open source contributor.
To get started with Sphinx extensions, you'll want to set up a local development environment, then identify an open source Sphinx extension you want to test based on an outcome or goal you're looking to achieve that improves the learning experience for Mattermost documentation visitors.
In a local documentation development environment, from the command line terminal, install the Sphinx extension using the installation instructions provided by the extension author.
Regenerate the pipenv.lock
file by running the following command: pipenv install sphinx-extension==version
where version
is replaced with the extension's release version you want to use.
Update the conf.py
file to add the extension in the extension
section.
Incorporate the new Sphinx extension on a documentation page using appropriate syntax.
Build the documentation locally to test how the extension works. Be sure to test as many edge cases and real world situations as you can to ensure that the new extended functionality won't break existing pages or content.
Mattermost product documentation is generated using Sphinx v4.4. As new Sphinx functionality becomes available, it can be desirable or necessary to upgrade Sphinx to a later release.
To get started with a Sphinx upgrade, you'll want to set up a local development environment, then review the Sphinx release history to identify the upgrade version you want. It's important to understand and test upgrades locally to identify any risks an upgrade may introduce to the Mattermost documentation.
Once you have a Sphinx upgrade version in mind:
In a local documentation development environment, from the command line terminal, install the Sphinx upgrade by running the following command: pipenv install sphinx==version
. This command updates both the pipfile
with the latest Sphinx version and regenerates the pipfile.lock
.
Sync your virtual environment for the new Sphinx version by running the command: pipenv sync
.
Create a documentation PR containing the two file changes to pipfile
and pipfile.lock
.
Once the PR merged into production, writers can update their local development environments to use the Sphinx upgrade by running the following command: pipenv sync
.
Following a successful Sphinx upgrade, complete the following checklist tasks to ensure that the new version of Sphinx doesn't impact existing functionality, content, or output.
Open the latest sitemap via docs.mattermost.com/sitemap.xml
in a browser tab.
Generate the product documentation, then use a text compare tool such as text-compare to review the differences between the newly generated sitemap against what's available in production.
You shouldn't see any glaring differences and the sitemap should NOT have any Mattermost version information in any of the URLs. You may see content move around on the page. Confirm that page URLs in production continue to exist in the latest generated sitemap XML file.
Spot check a handful of redirects specified via the conf.py
file to ensure they continue to redirect visitors correctly.
When you build the documentation locally, is the build fast? Do you see a message in the terminal indicating that pickling was successful?
If the build takes more than a few minutes to complete, or you don't see the pickling success message, this could indicate an issue with the Sphinx version, and you may want to reconsider an upgrade to this version.
After successfully building the product documentation:
Navigate around the site to ensure that nothing looks or feels broken.
Review pages with tables and tabbed content to ensure the content displays as intended.
Review the landing page as well as subsequent page headers/footers to ensure links take users to expected destinations.
Review the Changelog pages (which are managed in Markdown source files) to ensure that the changelogs are converted to HTML correctly.
Perform a few docs searches to confirm that searches continue to work as expected.
Review and fix issues reported via the /build/warnings.log
file including broken links, pages missing from the LHS, and syntax and formatting problems.
In GitHub, review the mattermost/docs repository README file and this Handbook process documentation to ensure content accuracy.
GitHub training videos coming soon!
If you encounter a documentation PR that should be included in a monthly documentation release cycle, instead of tracking the PR individually, the PR can be merged into a documentation release branch.
In the PR, identify the branch name you want to include in a documentation release branch.
Ensure your local development environment is up-to-date and contains the same code as the master
branch.
Navigate into the branch where you want to merge in the PR to ensure all code is available locally.
From a terminal, run the command git merge branchname
where branchname
is the name of the branch you want to commit to a monthly documentation release.
If there are no conflicts, you'll see the vi editor. Review the commit message, then type :x
to save and exit. If there are conflicts, you need to resolve them on the CLI and commit them first before you can move to the next step to push remotely.
Push your changes remotely by running the command git push
.
If you have content you'd like to discuss, a UI review, a PR, or found a gap in the docs, here's how to get hold of us:
Group Message: Use this option to formalize a discussion from a call or meeting.
Note: If your request is for documentation related to a release, the documentation needs to be complete at least 10 days prior to release. Please ensure you allow sufficient time for your request to be completed or it will be moved to the next available slot.
We appreciate these processes being followed as it helps us prioritize and ensure coverage for all work.
That depends on the work requested. We'll let you know the next steps and keep you updated along the way!
When submitting a PR for documentation, whether it's a minor update, a new piece of content, or a content proposal, please add the Editor Review label (if possible). Once the Technical Writer/Editor has reviewed the PR they'll remove the label. When all the requested reviews are complete, the Reviews Complete label is applied and the changes are merged.
When you select Doc Up and choose Admin as the issue type, an issue is generated in the GitHub docs repo, and added to the issues list. An update is listed in the Documentation channel, with the issue link. You can also select Developer or Company Handbook to direct the Doc Up request to the appropriate repo.
As the issues are open to the community, the more information provided in the issue the better.
If you have feedback on our documentation, a suggestion, or new content you'd like to add but don't know where to put it - you can create a GitHub issue.
The issue will be reviewed by the Technical Writing team and a Help Wanted label may be added so that community members are able to identify work that they’re able to assist with. If your documentation request/issue applies to a repository other than mattermost/docs, you can ping @justinegeffen or @cwarnermm. Alternatively, you can open an issue in that repo.
We understand that all work is important and urgent in some way. However, as a small team, we need to ensure that our coverage is managed tightly.
A page is broken
Steps are missing from a critical process
An important link is broken
An image is broken/not displaying
Content is inaccurate; will affect customer goals and productivity
Information about new features or changes isn't documented and needs to be
Enhancement to the user experience of the docs
If urgent and important work is identified, we'll add it to our DWG Board and you can follow its progress there.
The is where you'll find us, and you can view our current projects in the channel's board.
The channel: Use the hashtag #docsteam to get our attention.
: Use this option when you've created content and need it reviewed, expect feedback asap and possible editorial changes. Tip: Start a draft in Google docs if you're not sure about the content you'd like to edit and we're happy to help.
: Use this to create an issue from a message that is delivered to the docs repo. You can expect acknowledgement of your issue and next steps asap. Note: You can also in the Docs repo. Make sure to tag one of us for visibility!
Requests for documentation can be made within , using the Doc Up plugin embedded in the post menu. Access the Doc Up plugin by hovering over a message and selecting the ... menu.
Review the issue in the , , or and add any links to appropriate documentation and/or Jira tickets. This ensures that the assignee is able to take on and complete the work within the turnaround times.
The language we use at Mattermost is extremely important. When we use consistent terminology it means we're all speaking the same language, and our customers know what to expect whether they're on the website or in the product documentation.
Terminology standardization started in 2022. The project has a large scope and includes:
Standardizing headings to make them sentence case.
Standardizing all text in the System Console to make them sentence case.
Standardizing how we refer to our products and plans, as well as the mechanisms available to use them.
Changing the casing of words to lowercase where appropriate.
Making our Edition and License page in the System Console consistent and clear.
Creating a UI text library of terms and strings for teams and external partners to use when creating mockups, designs, wireframes, and integrations.
The outline of the project is documented here.
We decided to change our headings to sentence case to:
Decrease friction for contributors so they wouldn't have to guess at getting heading capitalization right.
Bring our documentation format in line with current industry standards around readability.
Make our documentation easier to read.
This is a work in progress with documentation updates delivered in Q1 of 2022. The scope of the project extends to the Mattermost website, developer documentation, Handbook, and integrations content. There is no date set for completion.
Currently, all our in-product text uses title case. This is jarring.
In Q3 of 2022, this will be tackled incrementally, in sections corresponding to the menu layout in the System Console. This will be done in consultation with the QA team as well as the Localization team.
What we call our icons, features, apps, and services is inconsistent purely in terms of casing. We have kicked off a process to standardize the casing of most of the icons, features, apps, and services to write them in lowercase so proprietary ones stand out. This is currently in progress.
The way we refer to our product and services is: "Mattermost sells subscription plans for both cloud and self-hosted deployment. Self-hosted deployments will need to upload a license file to activate the subscription."
All of our products are subscription plans. However, our self-hosted deployments also require a license file which is downloaded during the purchase process. This is the only difference between the two.
Note: Currently our user purchase flow refers to "Subscriptions" for Cloud and "Licenses" for self-hosted. This will be adjusted to bring the messaging into alignment.
These levels serve to help Product Managers assess their opportunities for career growth in the Product Management function. The levels below follow a growth track in the art and craft of Product Management and not in a person management track.
Ownership
Scope: "What do I work on?" Scope is the domain over which you are expected to show ownership.
Executes to deliver features on a previously defined roadmap.
High-Impact
Supervision: "How much do I rely on my manager?" Community: "How do others work with me?" The need to receive supervision is inversely related to the instinct to choose what is high-impact.
Receives detailed instruction on most tasks. Asks appropriate questions, and knows when to stop and ask for help. Works in cooperation with peers at the same level with ease. Utilizes the knowledge of others with more experience.
Earn Trust
Influence: "Who do I work with?" As more people and parts of the organization earn your trust, your influence grows.
Works effectively in teams to align priorities and manage execution.
Customer Obsession
Customer Impact: "How do I bring value?" Community spans both open-source and enterprise, but ultimately manifests in the same obsession for enabling customers to be successful.
Considers the customer's perspective when making decisions. Knows when to ask clarifying questions.
Self-Awareness
Interaction: "Who relies on me?" Iteration: "How do I improve myself and others?" Self-awareness yields an ability to seamlessly fit into any conversation or effort, interacting with a group to work towards the best possible outcome and always iterating towards the best possible outcome.
Regularly participates in team discussions for ongoing feature work. May lead discussions on smaller topics. Learns new skills and establishes goals and context quickly by asking precise questions.
Ownership
Scope: "What do I work on?" Scope is the domain over which you are expected to show ownership.
Influences and executes roadmap of new features.
High-Impact
Supervision: "How much do I rely on my manager?" Community: "How do others work with me?" The need to receive supervision is inversely related to the instinct to choose what is high-impact.
Receives general instruction on day-to-day work, and detailed instruction on new assignments or unfamiliar tasks. Works in cooperation with peers at the same level with ease. Utilizes the knowledge of others with more experience.
Earn Trust
Influence: "Who do I work with?" As more people and parts of the organization earn your trust, your influence grows.
Works effectively in teams to align priorities and manage execution.
Customer Obsession
Customer Impact: "How do I bring value?" Community spans both open-source and enterprise, but ultimately manifests in the same obsession for enabling customers to be successful.
Understands and applies basic level best practices for customer impact within their daily work. Will ask for input on more complicated topics.
Self-Awareness
Interaction: "Who relies on me?" Iteration: "How do I improve myself and others?" Self-awareness yields an ability to seamlessly fit into any conversation or effort, interacting with a group to work towards the best possible outcome and always iterating towards the best possible outcome.
Regularly participates in team discussions for ongoing feature work. May lead discussions on smaller topics. Actively seeks out tasks and projects that work towards opportunities for growth
Ownership
Scope: "What do I work on?" Scope is the domain over which you are expected to show ownership.
Designs, leads and delivers high impact features and changes across their area of ownership.
High-Impact
Supervision: "How much do I rely on my manager?" Community: "How do others work with me?" The need to receive supervision is inversely related to the instinct to choose what is high-impact.
Receives general instruction on new assignments or unfamiliar tasks. Participates in cross-functional groups towards building significant new functionality.
Earn Trust
Influence: "Who do I work with?" As more people and parts of the organization earn your trust, your influence grows.
Work directly with GTM, Operations, and Community to proactively seek input and deliver on commitments.
Customer Obsession
Customer Impact: "How do I bring value?" Community spans both open-source and enterprise, but ultimately manifests in the same obsession for enabling customers to be successful.
Can navigate moderately complex decisions and thought process about how features and implementations bring customer value, and can make decisions in these areas independently. Starts to understand and contribute to cross-feature and/or cross-team implications of customer impact.
Self-Awareness
Interaction: "Who relies on me?" Iteration: "How do I improve myself and others?" Self-awareness yields an ability to seamlessly fit into any conversation or effort, interacting with a group to work towards the best possible outcome and always iterating towards the best possible outcome.
Drops fluidly into team projects, ramps quickly and leads features to successful outcomes. Leads discussions on small and mid-size topics. Participates actively in discussion and efforts that cross teams (GMT, Operations, Engineering, UX). Actively seeks out tasks and projects that work towards opportunities for growth.
Ownership
Scope: "What do I work on?" Scope is the domain over which you are expected to show ownership.
Designs, leads and delivers high impact features and changes across their area of ownership.
High-Impact
Supervision: "How much do I rely on my manager?" Community: "How do others work with me?" The need to receive supervision is inversely related to the instinct to choose what is high-impact.
Receives minimal instruction. Participates in cross-functional groups towards building significant new functionality.
Earn Trust
Influence: "Who do I work with?" As more people and parts of the organization earn your trust, your influence grows.
Work directly with GTM, Operations, and Community to proactively seek input and deliver on commitments.
Customer Obsession
Customer Impact: "How do I bring value?" Community spans both open-source and enterprise, but ultimately manifests in the same obsession for enabling customers to be successful.
Can navigate moderately complex decisions and thought process about how features and implementations bring customer value, and can make decisions in these areas independently. Starts to understand and contribute to cross-feature and/or cross-team implications of customer impact.
Self-Awareness
Interaction: "Who relies on me?" Iteration: "How do I improve myself and others?" Self-awareness yields an ability to seamlessly fit into any conversation or effort, interacting with a group to work towards the best possible outcome and always iterating towards the best possible outcome.
Drops fluidly into team projects, ramps quickly and leads features to successful outcomes. Leads discussions on small and mid-size topics. Participates actively in discussion and efforts that cross teams (GMT, Operations, Engineering, UX). Proactively identifies opportunities for growth, intentionally taking on unfamiliar tasks.
Ownership
Scope: "What do I work on?" Scope is the domain over which you are expected to show ownership.
Sets and delivers vision for product roadmap and high impact features.
High-Impact
Supervision: "How much do I rely on my manager?" Community: "How do others work with me?" The need to receive supervision is inversely related to the instinct to choose what is high-impact.
Defines new feature assignments for themselves, usually without requiring help. Organizes cross-functional initiatives in building significant new functionality.
Earn Trust
Influence: "Who do I work with?" As more people and parts of the organization earn your trust, your influence grows.
Recognized by colleagues as a product authority, passively influencing discussions and behavior, and working in sync with UX, Engineering, Operations, and GTM.
Customer Obsession
Customer Impact: "How do I bring value?" Community spans both open-source and enterprise, but ultimately manifests in the same obsession for enabling customers to be successful.
Can independently make decisions affecting customer (internal and external) value/impact for complex topics within a product deliverable for the company. Leads cross-product, cross-feature, and cross-team discussions related to customer value/impact, and can bring the stakeholders to a decision point.
Self-Awareness
Interaction: "Who relies on me?" Iteration: "How do I improve myself and others?" Self-awareness yields an ability to seamlessly fit into any conversation or effort, interacting with a group to work towards the best possible outcome and always iterating towards the best possible outcome.
Frequently called upon to comment on business discussions. Is very comfortable in a variety of techincal and business discussions, aligns efforts, and develops superior solutions through discussion and analysis. Participates deeply in cross-team efforts. Begins to lead discussions on topics that reach outside of product area of ownership. Independently researches new solutions and paradigms to improve team efficiency.
Ownership
Scope: "What do I work on?" Scope is the domain over which you are expected to show ownership.
Sets and delivers vision for product roadmap and high impact features.
High-Impact
Supervision: "How much do I rely on my manager?" Community: "How do others work with me?" The need to receive supervision is inversely related to the instinct to choose what is high-impact.
Defines new feature assignments for other members of the team, usually without requiring help. Leads cross-functional groups and manages the creation of new features and products.
Earn Trust
Influence: "Who do I work with?" As more people and parts of the organization earn your trust, your influence grows.
Highly respected by colleagues and community as a technical authority, actively influencing discussions and behavior with input and suggestions, and working in sync with UX, Engineering, Operations, and GTM.
Customer Obsession
Customer Impact: "How do I bring value?" Community spans both open-source and enterprise, but ultimately manifests in the same obsession for enabling customers to be successful.
Can independently make decisions affecting customer (internal and external) value/impact for complex topics within a product deliverable for the company. Leads cross-product, cross-feature, and cross-team discussions related to customer value/impact, and can bring the stakeholders to a decision point.
Self-Awareness
Interaction: "Who relies on me?" Iteration: "How do I improve myself and others?" Self-awareness yields an ability to seamlessly fit into any conversation or effort, interacting with a group to work towards the best possible outcome and always iterating towards the best possible outcome.
Frequently called upon to comment on business discussions. Is very comfortable in a variety of techincal and business discussions, aligns efforts, and develops superior solutions through discussion and analysis. Participates deeply in cross-team efforts. Begins to lead discussions on topics that reach outside of product area of ownership. Independently researches new strategies and paradigms to improve the entire PM organization and product area of ownership.
Ownership
Scope: "What do I work on?" Scope is the domain over which you are expected to show ownership.
Consults on product vision and strategy for product area, roadmap, and innovations across teams.
High-Impact
Supervision: "How much do I rely on my manager?" Community: "How do others work with me?" The need to receive supervision is inversely related to the instinct to choose what is high-impact.
Defines new feature assignments for members of other teams, usually without requiring help. Mentors and trains new team members while leading the coordination and management of high impact product initiatives.
Earn Trust
Influence: "Who do I work with?" As more people and parts of the organization earn your trust, your influence grows.
Frequently sought out by leadership for opinion on business and product decisions (both product and technical directions).
Customer Obsession
Customer Impact: "How do I bring value?" Community spans both open-source and enterprise, but ultimately manifests in the same obsession for enabling customers to be successful.
Has ownership for cross-product customer impact topics. Can anticipate complex issues early in the planning and development processes. Starts to anticipate and resolve cross functional topics and issues.
Self-Awareness
Interaction: "Who relies on me?" Iteration: "How do I improve myself and others?" Self-awareness yields an ability to seamlessly fit into any conversation or effort, interacting with a group to work towards the best possible outcome and always iterating towards the best possible outcome.
Primary Product leader for projects, providing leadership in selecting and guiding these efforts. Works regularly with stakeholders outside R&D. Is often the intial resource to drive efforts for new initiatives. Mentors people on product strategy across all of product and engineering. Is a hands on leader for executing on mentorship and training.
Ownership
Scope: "What do I work on?" Scope is the domain over which you are expected to show ownership.
Owns and defines long-term product vision and strategy.
High-Impact
Supervision: "How much do I rely on my manager?" Community: "How do others work with me?" The need to receive supervision is inversely related to the instinct to choose what is high-impact.
Independently defines new feature assignments across teams working on the same product or system. Influences, shapes and can redirect customer and community technical and business discussions, rapidly understanding disparate viewpoints and leading discussions that align thinking and efforts to influence the direction of large scale projects.
Earn Trust
Influence: "Who do I work with?" As more people and parts of the organization earn your trust, your influence grows.
Seen as the expert on product area of ownership. Engages with peers in customer and partner organizations to shape initiatives and plans.
Customer Obsession
Customer Impact: "How do I bring value?" Community spans both open-source and enterprise, but ultimately manifests in the same obsession for enabling customers to be successful.
Works consistently with R&D, GTM, G&A, and Sales leadership to set goals and deliverables for customer and business value. Represents Product managers and other functions in discussions where ICs are not present. Engages heavily with customers and community to share our product philosopy and strategy. Applies our philosophy to bring value to customer from work done all across the company.
Self-Awareness
Interaction: "Who relies on me?" Iteration: "How do I improve myself and others?" Self-awareness yields an ability to seamlessly fit into any conversation or effort, interacting with a group to work towards the best possible outcome and always iterating towards the best possible outcome.
Works consistently with Mattermost leadership to set product & organizational objectives and direction. Translates these objectives to clear and actionable projects for execution. Develops and oversees all aspects of mentoring and training efforts. Can easily identify individual needs, and find solutions to help people grow and succeed.
Ownership
Scope: "What do I work on?" Scope is the domain over which you are expected to show ownership.
Innovates new strategies and market opportunities to vastly improve product area of ownership. Translates learnings from the broader tech world to bring value to Mattermost's customers and community.
High-Impact
Supervision: "How much do I rely on my manager?" Community: "How do others work with me?" The need to receive supervision is inversely related to the instinct to choose what is high-impact.
Conceives, designs, explains, and oversees product direction for nearly any feature or product with no outside direction. Independently executes on cross-team (within R&D) and cross-function (within Mattermost) effort with little or no supervision. Considered an expert in many domains. Works across a broad set of technical and non-technical efforts.
Earn Trust
Influence: "Who do I work with?" As more people and parts of the organization earn your trust, your influence grows.
Relied upon as a key resource for stakeholders both inside and outside of Product Management. Engages with people in the broader tech/PM community (outside of Mattermost) to identify and implement best practices within Mattermost.
Customer Obsession
Customer Impact: "How do I bring value?" Community spans both open-source and enterprise, but ultimately manifests in the same obsession for enabling customers to be successful.
Works consistently with R&D, GTM, G&A, and Sales leadership to set goals and deliverables for customer and business value. Represents Product managers and other functions in discussions where ICs are not present. Engages heavily with customers and community to share our product philosopy and strategy. Applies our philosophy to bring value to customer from work done all across the company.
Self-Awareness
Interaction: "Who relies on me?" Iteration: "How do I improve myself and others?" Self-awareness yields an ability to seamlessly fit into any conversation or effort, interacting with a group to work towards the best possible outcome and always iterating towards the best possible outcome.
Works consistently with Mattermost leadership to set product & organizational objectives and direction. Translates these objectives to clear and actionable projects for execution. Develops and oversees all aspects of mentoring and training efforts. Can easily identify individual needs, and find solutions to help people grow and succeed.
Every month the Mattermost community plans, builds, tests, documents, releases, and supports new product improvements for Team Edition to benefit the user community. The Mattermost Enterprise Team does the same for Enterprise Edition to benefit the subscriber community.
A critical part of this development is documentation which ranges from feature documentation to FAQs, guides, and tutorials.
We want to empower everyone to contribute to our documentation, and be comfortable submitting documentation for contributions. As such, we don't expect every contribution to adhere to our style guide when first submitted.
During the review process the editorial team also provides feedback on style elements to bring the submission in line with the Documentation Style Guide.
Here are some guidelines:
When submitting a code PR, please include updated documentation if applicable.
The documentation update can be in the form of a bullet list or an outline.
Label the PR as Docs Needed/Editor Review and tag @justinegeffen or @carriewarnermm.
The documentation you've submitted will be reviewed.
At times, the editors may make and commit stylistic changes (such as punctuation) but any content changes will be added as a suggestion for the submitter's consideration.
Once the PR is approved, it will be merged, and the documentation will be updated.
You can read more about the review process here. There's also a great blog post that covers additional aspects of submitting code PRs, such as git strategies.
Note: This process does not apply to the API Documentation requirements as it is updated automatically and isn't part of the documentation process.
Feature documentation is a collaborative effort between the Product Manager and Technical Writer within a specific timeframe aligned with releases. Community members are welcome to assist, if the time expectations are manageable.
Feature request documentation is usually located in the mattermost-server repo and the mattermost-webapp repo and are labelled as Docs/Needed
. As these are tied to a release (and a deadline) it’s best to only take on the work if you’re sure you can complete it on time. It’s understood that community members contribute in their available time, which is why this type of documentation isn’t usually the best option to take on.
Help Wanted tickets are generally not linked to a release and are more flexible in terms of timeline and delivery date. You can find the documentation Help Wanted tickets here. To start working on one, assign it to yourself, add a comment indicating you’ll be working on it, find the relevant document in the source directory, read through the README file if you're not familiar with the process, and get started.
If you have any questions, you can post them in the Documentation channel and we'll be happy to help.
Most, if not all, contributions to the Mattermost project have a documentation impact. As part of the development and submission process, it’s recommended that the relevant documentation be updated (or created) and included in the PR. This provides consistency and accuracy in communicating the changes/new feature and cuts down on having multiple issues and PRs for related documentation.
Visit the Contribute to Documentation page to get started with submitting documentation with your PR. You can read more about the review process here.
The first Mattermost Docathon is being held from July 26th to August 6th 2021. Take a look at our blog post if you haven't already.
A docathon is a hackathon for product documentation.
Documentation isn't written in a vacuum, and it's important to see the customer’s documentation journey through the eyes of our Mattermost community. The best way to do that is to get our community involved! Documentation is also a great way to get started on your open source contribution journey as it's usually how you get to know the product.
The Docathon is designed to provide opportunities for all contributors to get involved, whether new to open source or seasoned contributors. Help us solve technical tooling challenges. Write mobile steps for Mattermost messaging tasks. Correct inaccuracies and inconsistencies. Add or update screenshots, labeled images, animated GIFs, and videos. How do you want to improve the Mattermost product documentation?
Absolutely! Here are some ways you can get involved:
Help us merge PR submissions: This includes helping us go through the PRs with the Docathon 2021 label, making sure PRs follow our style guide, and fixing any grammatical issues. This isn't an extremely rigorous process - we just want to make sure anything merged follows some standardization.
Help review technical content for accuracy: Actively monitor the ~Docathon 2021 channel, respond to questions, and engage community members who post with questions or concerns. You can also help by being open to contributors messaging you directly if they have questions and prefer not to ask in the public channel, and relay any feedback back to the Technical Writing team.
Help us with Linked In recommendations or endorsements for top contributors: This is particularly welcome in cases where, during PR reviews, you encounter Docathon contributors you want to network with and whose professional career you want to support.
Contribute your own content or ideas for either Mattermost product documentation, or the Docathon event itself!
One of our goals for this Docathon is for our documentation to benefit from great, high-quality contributions that really increase their value.
Contributors who contribute one or more merged PRs will receive a Mattermost swag pack. Contributors with 5+ merged PRs will receive LinkedIn and/or GitHub endorsements and recommendations from some of our professional tech writers and product managers.
The top five contributions will each receive 1 pair of AirPod Pro headphones.
So, how are the contributions assessed?
A valid contribution is one that isn't done just for the sake of submitting a PR, but one that fixes an error, improves existing content, or adds value to our product documentation. While there are no penalties for submitting invalid Docathon PRs, if you're not sure how to contribute, please ask us how to get involved - we're more than happy to help get you started.
A good contribution delivers clear value. The problem space is relevant to Mattermost, the solution fits Mattermost's documentation technology stack, and there's a clear plan to move forward with the contribution and merge it into the repository.
Good contributions achieve one or more of the following goals:
Solves a known problem.
Fills an existing gap.
Offers a fresh perspective.
Clarifies, expands, supplements, illustrates, corrects, or updates existing content with imagery, examples, or recommendations based on real-world experience.
Requires minimum work to implement.
If you're contributing to our documentation with your own ideas (i.e., not based on existing GitHub issues) that's great! Please clearly describe the problem space you're addressing in your PR. This context is important and helps us evaluate incoming PRs effectively.
As Mattermost reviews and evaluates Docathon contributions, we're looking for the following attributes:
Impact: The contribution is trying to solve something that's relevant to the Mattermost product documentation.
Quality: The contribution is useful, high-quality, and easy to merge into the codebase as-is or with minimum effort.
Ambition: The contribution addresses an issue in a better, faster, clearer, or simpler way than before.
Innovation: The contribution breaks new ground or offers documentation visitors something new or unexpected.
A great Docathon contribution has elements of all four attributes above, is not only highly relevant to Mattermost's interests, and a good fit for the product documentation, but also useful and easy to implement.
Great contributions aim to achieve one or more of the following goals:
Improve the user's product documentation journey in a meaningful, measurable way.
Elevate and/or breathe new life to existing content.
Introduce a faster, easier, and/or better way of doing, saying, or showing something.
We don't expect greatness from every contribution - copy-editing is as important as a huge body of work - but if you are taking on a large issue, these criteria might be helpful to keep in mind.
New product features should consider the mobile client at the same level of importance as the web app client. For new features implemented on the server or web app, please consider the mobile client through these lenses:
A good rule of thumb is that if there are web app repo code changes (outside of the System Console UI), mobile code changes are needed to support the feature.
While not every web app feature needs parity with mobile, this is a discussion to have with the Product Managers and UX team, and a decision to be made in the requirements gathering phase of feature design.
If a feature requires mobile code changes, the Mobile team PM (Eric Sethna) should be made aware of the feature before it’s committed to the feature team's quarterly roadmap. Please involve the Mobile team PM in roadmap planning and quarterly OKR planning discussions. The same applies even if the feature team will be doing the mobile implementation themselves, given that the Mobile team will be involved in code reviews, testing, and should provide guidance on the feature implementation.
During design and spec development of any feature that will involve mobile code changes, please involve the Mobile PM (Eric Sethna) and Mobile dev lead (Elias Nahum) at all stakeholder checkpoints including requirements gathering, design option exploration, and final design review.
Set deliverables taking into account the limitation that a team may not have enough skills to develop features for mobile. Consider the impact if the feature is left out from mobile, document the reasons, and set goals to cover the mobile space. The feature should be released as beta or experimental and any documentation should clearly communicate the impact of not having mobile support as well as when mobile support is expected.
If a feature is related to authentication, such as Single Sign-On (SSO), plan to release the feature on Mobile Apps prior to Cloud to avoid users from being blocked from using the Mobile Apps.
Mobile releases must be backward compatible with at least all server versions back to the oldest supported ESR. An important question to ask during design is: What is the expected behavior on a new server with an old app, or a new app with an old server?
Here's an example:
New mobile app with an old server: If the server is running older code and does not support the new feature, we can’t allow users to access the feature from a new mobile app.
Example: Hide the “Mark as Unread” option if the server is older than v5.18.
New server with an old mobile app: Users will not be able access the new features from their mobile device since it’s running older code, but the new server code should not cause regressions to a user's experience on an older mobile app.
Example: Users cannot see the “Mark as Unread” option in an older mobile app that does not contain that code, but marking a channel unread on a webapp running v5.20 or later should still mark the channel as unread on mobile, and not cause any mobile app regressions for a user running an old app.
Ideally any new features should be tested on all server versions back to the oldest supported ESR. However, since testing mana is limited, feel free to work with your QA representative to determine the most effective testing approach based on the risks of your feature. At a minimum, new mobile app features should be tested on all supported server ESRs and the latest three server versions.
For new features, consider a minserverversion
check that only executes the code if the server connected to the app is newer than xyz. See example to disable or not the position field when editing the profile.
Bonus: Legacy servers (i.e. < v5.0) don't have post metadata, don't rely on it.
API requests will fail on mobile because network conditions are much more variable than on desktop. As such defaults need to be carefully chosen to avoid failing requests breaking or blocking core user functionality. As an example, if the default for a channel is set to be read-only until a permission API request grants the user permissions, this is likely to result in a poor user experience in bad networks.
Mobile devices vary significantly in their computing capabilities, as such performance should be top of mind when developing mobile features.
Minimize requests where possible, make requests in parallel if possible, batch dispatches wherever possible.
https://github.com/mattermost/mattermost-mobile/blob/master/app/actions/views/user.js#L79
Do NOT track requests. Examples:
Here we are fetching the needed data in sequence but holding dispatching any action, and then once we have all the required data we dispatch an action batch. With this we ensure that the redux store is being updated only once and that every mapStateToProps
of mounted connected components runs once instead of multiple times, this will then reduce computation time: https://github.com/mattermost/mattermost-mobile/blob/master/app/actions/views/user.js#L51.
Here we are fetching data from the server in sequential order and then in parallel, as we need data from one request and then all others are not dependent on each other. The use of Promise.all
will help wait on all responses but take into consideration if one of them fails, everything will fail (do add retries if needed). In the end we batch the actions as we do in the example above: https://github.com/mattermost/mattermost-mobile/blob/master/app/actions/views/user.js#L79.
Don’t do this: Here we are using a bind function or an action created that is dispatching at least two actions in total, one for tracking the start of the request and then if the requests succeeded or failed. That means that calling that function will update the store twice instead of once:
Developers, Product Managers, Release and Quality Assurance teams use the Fix Version field for the following purposes:
Developers:
Fix Version field is the one that shows up on individual tickets in the backlog view.
For Story tickets, the Fix Version is used for soft guidelines for what is targeted for what release.
For Bug tickets, the Fix Version is used to know which bugs are priority based on where we are in the release cycle.
Product Managers:
To prioritize backlog.
To estimate/plan what Story tickets ship in what release.
Release Manager:
Follow status of resolved, open and submitted tickets for current release.
Compose various release metrics.
Quality Assurance:
Prioritize testing of tickets and associated PRs for the next release.
Assess completeness of a release before cutting final.
Track when changes actually went in, to help investigate bugs and expected behavior.
Report on issues, changes, and tests by release.