Skip to content

Commit

Permalink
Add organization secton to R&D for describing overall structure layout (
Browse files Browse the repository at this point in the history
mattermost#859)

* Add organization secton to R&D for describing overall structure layout

* Add to LHS

* Update operations/research-and-development/organization/channels.md

Co-authored-by: Katie Wiersgalla <[email protected]>

* Update operations/research-and-development/organization/README.md

Co-authored-by: Justine Geffen <[email protected]>

* Update operations/research-and-development/organization/channels.md

Co-authored-by: Justine Geffen <[email protected]>

* Update operations/research-and-development/organization/channels.md

Co-authored-by: Justine Geffen <[email protected]>

* Update operations/research-and-development/organization/channels.md

Co-authored-by: Justine Geffen <[email protected]>

* Update operations/research-and-development/organization/channels.md

Co-authored-by: Justine Geffen <[email protected]>

* Add areas of expertise for web/server platform

* Updates per feedback

Co-authored-by: Katie Wiersgalla <[email protected]>
Co-authored-by: Justine Geffen <[email protected]>
  • Loading branch information
3 people authored Oct 6, 2021
1 parent 628c219 commit a992ce7
Show file tree
Hide file tree
Showing 3 changed files with 111 additions and 0 deletions.
2 changes: 2 additions & 0 deletions SUMMARY.md
Original file line number Diff line number Diff line change
Expand Up @@ -105,6 +105,8 @@
* [Quality Assurance](operations/research-and-development/quality/README.md)
* [QA Workflow](operations/research-and-development/quality/qa-workflow.md)
* [QA Testing Tips and Tools](operations/research-and-development/quality/testing-tips-and-tools.md)
* [Organization](operations/research-and-development/organization/README.md)
* [Channels](operations/research-and-development/organization/channels.md)
* [Messaging and Math](operations/messaging-and-math/README.md)
* [How to guides for M&M](operations/messaging-and-math/how-to-guides-for-m-and-m/README.md)
* [How to create release announcements](operations/messaging-and-math/how-to-guides-for-m-and-m/how-to-create-release-announcements.md)
Expand Down
29 changes: 29 additions & 0 deletions operations/research-and-development/organization/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
# R&D Organization

The source of truth for the R&D org structure and team membership is [this spreadsheet](https://docs.google.com/spreadsheets/d/1lH8QIjQGEoGospDUdVs_LQ_i2b82I1ce6W7z18vhPTQ/edit#gid=1820415931).

R&D is split into five different divisions: Products, Cloud, Platform, Security, and Community.

## Products

The Products division is split into a number of different verticals, each responsible for a single product. The current product verticals are:

* [Channels](/operations/research-and-development/organization/channels)
* Boards
* Playbooks

## Cloud

The Cloud division is responsible for delivery of the Mattermost products as a SaaS product, in addition to growth and build system related areas.

## Platform

The Platform division is responsible for the platforms that support and span the product verticals.

## Security

The Security division is responsible for both Product and Infrastructure security.

## Community

The Community division is responsible for developer and user community relations.
80 changes: 80 additions & 0 deletions operations/research-and-development/organization/channels.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,80 @@
# Channels

Channels is split into feature teams and platform teams.

## Feature Teams

The feature teams are responsible for designing, developing, and maintaining the features of the Channels product. They are full stack and own feature development across the entire tech stack (Web App, Mobile, Desktop, and backend).

These teams are flexible enough to work on whatever is highest impact. Each team does have areas of expertise and features they own but any feature team can work on any portion of the product.

The teams are:

### Ursa (feature team #1)

Areas of expertise:

* Groups
* LDAP
* Permissions
* System Console
* Compliance
* Data Retention
* Mobile sidebar/categories

### Interstellar (feature team #2)

Areas of expertise:

* Apps
* Webhooks
* Slash Commands
* Plugins

### Apollo (feature team #3)

Areas of expertise:

* Posts
* Threads
* File Previews

## Platform Teams

The platform teams are responsible for building and maintaining the systems that the feature teams rely on.

**Why are these teams in the Channels product vertical and not the Platform division?**

Until recently Channels was the only product Mattermost had and was itself the platform. As a result of this a lot of the platform is tightly coupled to the Channels product. The server and web app parts of the platform are especially tightly coupled. The goal is to eventually move these teams, or some version of them, out of the Channels product vertical when that coupling is looser.

The teams are:

### Web Platform

The role of the Web Platform team is to own the infrastructure behind the Web App and Desktop App while supporting other teams that are using that infrastructure.

Within the Web App, that means tooling (e.g. build tools, testing frameworks, style checking), core systems (e.g. Redux, routing), and helping maintain the core features of the app. For the areas owned, the team is also responsible for educating other teams about those areas and helping them coordinate work that might require changes to those things.

The team is also responsible for dictating the coding style and practices used throughout the Web App which can be used as a reference for other JS projects. As recommended practices change, the team will work with the community and other teams to implement those in the Web App whenever possible.

The team is not responsible for experimenting with new technologies or dictating the project structure/tooling used for all other JS projects within Mattermost. Because feature teams are able to move much quicker when they're writing brand new code, they have more opportunities to try out new technologies and practices. When those experiments are successful, the Web Platform team will help integrate them back into the Web App and make them available for other Mattermost projects.

Areas of expertise:

* Web App performance
* Redux store structure
* Desktop
* Routing
* Frontend coding style and best practices

### Server Platform

The role of the Server Platform team is to own the backend multi-product architecture and server performance while supporting other teams that rely on the server.

Areas of expertise:

* Multi-product and server platform archiecture
* Load testing and server performance
* Database requirements
* Clustering and high availability
* Backend coding style and best practices

0 comments on commit a992ce7

Please sign in to comment.