Plugin vs Fork for building a custom derivative

Hello all,

I am new here, and I am trying to build a derivative of Mattermost Webapp, the application will have custom UI and feature (refer the attachment for an example) along with the existing features available in Mattermost.

The documentation gives me two option to do so, 1) Plugin based approach 2) Custom fork.

I was able to achieve things with by forking the mattermost-webapp repo and changing the code as to change the UI.

Is it the right way to do it ? Because the documentation suggests to use Plugin approach to implement add on feature.

It would be really helpful if someone could spread some light on when to build Plugins and when to modify code in the custom fork to implement new functionality and customise UI.


I have been trying to do this for a loooong time.

My mindset is to use mattermost plugin system. Forking is a pain, you end up having to maintain your fork (which is then its own application) and sync the efforts that the mattermost team is doing into yours spending a lot of time that you should be applying to more productive things.

Based on the kanban plugin I created a PR to get the functionality you are looking for. It was rejected for a series of reasons (which make sense) and then a new PR was open and merged a few weeks ago:

so it should be available shortly.

in short: learn and use the mattermost plugin system as much as you can, don’t fork, join forces, and make the product better. Pull requests that help us all.

1 Like

@joebordes, thanks for the response.
I one more dount. Say i am developing a custom derivative using the plugin approach, how should i be deploying by work, to a service like aws.

If you are creating plugins you shouldn’t really care where MM is installed, you just go to the System panel section for plugin management and upload them there.

Thats really great. Is it possible that when MM is installed, plugins are installed by default?

Hello, @Visakeswaran

The latest Mattermost 5.23 comes together with the NPS plugin as we can see here by default:

root@mattermost:/opt/mattermost# ls -lAh plugins/
total 4.0K
drwxr--r-- 5 root root 4.0K Jun  5 01:52 com.mattermost.nps

There are also prepackaged plugins that you can use as well. However, you still need to install them using the .tar.gz files:

root@mattermost:/opt/mattermost# ls -lAh prepackaged_plugins/ | grep "tar.gz$"
-rw-rw-r-- 1 mattermost mattermost 8.7M May 14 12:20 mattermost-plugin-antivirus-v0.1.2-linux-amd64.tar.gz
-rw-rw-r-- 1 mattermost mattermost 8.7M May 14 12:20 mattermost-plugin-autolink-v1.1.2-linux-amd64.tar.gz
-rw-rw-r-- 1 mattermost mattermost 8.8M May 14 12:20 mattermost-plugin-aws-SNS-v1.0.2-linux-amd64.tar.gz
-rw-rw-r-- 1 mattermost mattermost 8.8M May 14 12:20 mattermost-plugin-custom-attributes-v1.0.2-linux-amd64.tar.gz
-rw-rw-r-- 1 mattermost mattermost 9.7M May 14 12:20 mattermost-plugin-github-v0.11.0-linux-amd64.tar.gz
-rw-rw-r-- 1 mattermost mattermost 9.3M May 14 12:20 mattermost-plugin-gitlab-v1.0.1-linux-amd64.tar.gz
-rw-rw-r-- 1 mattermost mattermost 9.0M May 14 12:20 mattermost-plugin-jenkins-v1.0.0-linux-amd64.tar.gz
-rw-rw-r-- 1 mattermost mattermost  10M May 14 12:20 mattermost-plugin-jira-v2.3.2-linux-amd64.tar.gz
-rw-rw-r-- 1 mattermost mattermost 8.9M May 14 12:20 mattermost-plugin-nps-v1.0.4-linux-amd64.tar.gz
-rw-rw-r-- 1 mattermost mattermost 8.6M May 14 12:20 mattermost-plugin-welcomebot-v1.1.1-linux-amd64.tar.gz
-rw-rw-r-- 1 mattermost mattermost 8.9M May 14 12:20 mattermost-plugin-zoom-v1.3.0-linux-amd64.tar.gz
1 Like