Skip to content

Latest commit

 

History

History
80 lines (50 loc) · 3.26 KB

File metadata and controls

80 lines (50 loc) · 3.26 KB

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