diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml new file mode 100644 index 0000000000..dd73a056f0 --- /dev/null +++ b/.gitlab-ci.yml @@ -0,0 +1,125 @@ +--- +image: debian:bookworm +stages: + - build + - publish + +variables: + DEBIAN_FRONTEND: noninteractive + PATH: /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/local/go/bin:/usr/local/go/bin + +build: + stage: build + before_script: + - mkdir artifacts + - apt update + - apt install -qq -y build-essential libpng-dev libpng16-16 wget curl git + - ulimit -n 8096 + - cd /tmp + - wget -q "https://go.dev/dl/go1.24.7.linux-amd64.tar.gz" + - > + echo \ + "da18191ddb7db8a9339816f3e2b54bdded8047cdc2a5d67059478f8d1595c43f go1.24.7.linux-amd64.tar.gz" \ + > go1.24.7.linux-amd64.tar.gz.sha256sum + - sha256sum -c go1.24.7.linux-amd64.tar.gz.sha256sum + - tar -C /usr/local -xzf go1.24.7.linux-amd64.tar.gz + - cd - + script: + - > + sed -e "s/^\(BUILD_NUMBER\) ?= .*/\1 = $CI_JOB_ID/" \ + -e "s/^\(BUILD_HASH = \).*/\1$(git rev-parse HEAD)/" \ + -i server/Makefile + - git apply limitless.patch + - cd server + - make validate-go-version + - make setup-go-work + - make build-linux-arm64 + - make build-linux-amd64 + - cd - + - > + mv server/bin/mostlymatter \ + "mostlymatter-amd64-$(basename "$CI_COMMIT_TAG" -limitless)" + - > + mv server/bin/linux_arm64/mostlymatter \ + "mostlymatter-arm64-$(basename "$CI_COMMIT_TAG" -limitless)" + cache: + key: "$CI_COMMIT_TAG" + policy: push + paths: + - "mostlymatter-*" + rules: + - if: '$CI_COMMIT_TAG =~ /limitless/' + +# Release +publish: + stage: publish + image: framasoft/upload-packages:latest + needs: + - build + before_script: + - mkdir -p ~/.minisign + - chmod 700 ~/.minisign + - > + echo 'untrusted comment: minisign encrypted secret key' \ + > ~/.minisign/minisign.key + - echo "$MINISIG_KEY" >> ~/.minisign/minisign.key + - chmod 600 ~/.minisign/minisign.key + - > + echo "$MINISIG_PWD" | + minisign -Sm "mostlymatter-amd64-$(basename "$CI_COMMIT_TAG" -limitless)" + - > + sha512sum "mostlymatter-amd64-$(basename "$CI_COMMIT_TAG" -limitless)" \ + > "mostlymatter-amd64-$(basename "$CI_COMMIT_TAG" -limitless).sha512" + - > + echo "$MINISIG_PWD" | + minisign -Sm "mostlymatter-arm64-$(basename "$CI_COMMIT_TAG" -limitless)" + - > + sha512sum "mostlymatter-arm64-$(basename "$CI_COMMIT_TAG" -limitless)" \ + > "mostlymatter-arm64-$(basename "$CI_COMMIT_TAG" -limitless).sha512" + script: + - eval $(ssh-agent -s) + - ssh-add <(echo "${DEPLOYEMENT_KEY}" | base64 --decode -i) + - > + echo "put mostlymatter-amd64-$(basename "$CI_COMMIT_TAG" -limitless)" | + sftp -o "VerifyHostKeyDNS yes" \ + -o "StrictHostKeyChecking accept-new" \ + ${DEPLOYEMENT_USER}@${DEPLOYEMENT_HOST}:public/ + - > + echo "put mostlymatter-amd64-$(basename "$CI_COMMIT_TAG" -limitless).minisig" | + sftp -o "VerifyHostKeyDNS yes" \ + -o "StrictHostKeyChecking accept-new" \ + ${DEPLOYEMENT_USER}@${DEPLOYEMENT_HOST}:public/ + - > + echo "put mostlymatter-amd64-$(basename "$CI_COMMIT_TAG" -limitless).sha512" | + sftp -o "VerifyHostKeyDNS yes" \ + -o "StrictHostKeyChecking accept-new" \ + ${DEPLOYEMENT_USER}@${DEPLOYEMENT_HOST}:public/ + - > + echo "put mostlymatter-arm64-$(basename "$CI_COMMIT_TAG" -limitless)" | + sftp -o "VerifyHostKeyDNS yes" \ + -o "StrictHostKeyChecking accept-new" \ + ${DEPLOYEMENT_USER}@${DEPLOYEMENT_HOST}:public/ + - > + echo "put mostlymatter-arm64-$(basename "$CI_COMMIT_TAG" -limitless).minisig" | + sftp -o "VerifyHostKeyDNS yes" \ + -o "StrictHostKeyChecking accept-new" \ + ${DEPLOYEMENT_USER}@${DEPLOYEMENT_HOST}:public/ + - > + echo "put mostlymatter-arm64-$(basename "$CI_COMMIT_TAG" -limitless).sha512" | + sftp -o "VerifyHostKeyDNS yes" \ + -o "StrictHostKeyChecking accept-new" \ + ${DEPLOYEMENT_USER}@${DEPLOYEMENT_HOST}:public/ + - > + cat < limitless.patch` +- `git restore --staged -- server` +- `git checkout -- server` +- `rm -rf server/cmd/mostlymatter` +- `git add limitless.patch` +- `git commit --amend` + +Now, you can retest the patch: +```bash +git apply limitless.patch && + echo -e "\033[0;36mPatch applied successfully\033[0;36m" && + rm -rf server/cmd/mostlymatter && + git checkout -- server +``` + +Tag the new version (`limitless` is needed in the tag name for the CI to run) and push to Gitlab: +```bash +git tag "v$NEW_VERSION-limitless" -m "v$NEW_VERSION-limitless" +git push -u origin "release-$NEW_VERSION" +``` + +The CI will compile mostlymatter. Note that it will not be available as an artifact. + +You can use the step of [.gitlab-ci.yml](.gitlab-ci.yml) to compile Mostlymatter without using the CI. + +## Publish + +The secrets are set in GitLab CI variables : + +- `MINISIG_KEY` +- `MINISIG_PWD` +- `DEPLOYEMENT_KEY` (ssh private key encoded with base64) +- `DEPLOYEMENT_USER` +- `DEPLOYEMENT_HOST` + +The CI will publish the compiled mostlymatter binary through sftp. diff --git a/README.md b/README.md index d837b41a62..f80310a110 100644 --- a/README.md +++ b/README.md @@ -1,97 +1,33 @@ -# [![Mattermost logo](https://user-images.githubusercontent.com/7205829/137170381-fe86eef0-bccc-4fdd-8e92-b258884ebdd7.png)](https://mattermost.com) +![](mostlymatter/logo_with_white_background-small.png) Mostlymatter is a fork of [Mattermost](https://mattermost.com) meant to remove the users and messages limits. [Mattermost](https://mattermost.com) is an open core, self-hosted collaboration platform that offers chat, workflow automation, voice calling, screen sharing, and AI integration. This repo is the primary source for core development on the Mattermost platform; it's written in Go and React, runs as a single Linux binary, and relies on PostgreSQL. A new compiled version is released under an MIT license every month on the 16th. -[Deploy Mattermost on-premises](https://mattermost.com/deploy/?utm_source=github-mattermost-server-readme), or [try it for free in the cloud](https://mattermost.com/sign-up/?utm_source=github-mattermost-server-readme). +Please go to for installation instructions. -mattermost user interface +## Differences between Mostlymatter and Mattermost -Learn more about the following use cases with Mattermost: +Our fork is limited to the backend (the binary), we don’t modify the front-end and we don’t provide compiled version of the other tools of Mattermost (like `mmctl`). -- [DevSecOps](https://mattermost.com/solutions/use-cases/devops/?utm_source=github-mattermost-server-readme) -- [Incident Resolution](https://mattermost.com/solutions/use-cases/incident-resolution/?utm_source=github-mattermost-server-readme) -- [IT Service Desk](https://mattermost.com/solutions/use-cases/it-service-desk/?utm_source=github-mattermost-server-readme) +We multiplied the limits in `server/channels/app/limits.go` by 1,000. -Other useful resources: +The user limits should be 5,000,000 and 11,000,000. -- [Download and Install Mattermost](https://docs.mattermost.com/guides/deployment.html) - Install, setup, and configure your own Mattermost instance. -- [Product documentation](https://docs.mattermost.com/) - Learn how to run a Mattermost instance and take advantage of all the features. -- [Developer documentation](https://developers.mattermost.com/) - Contribute code to Mattermost or build an integration via APIs, Webhooks, slash commands, Apps, and plugins. +We replaced the name `Mattermost` by `Mostlymatter` (and `mattermost` by `mostlymatter`) in the server strings (logging, help pages…) to avoid confusion between our the official build and our own but we kept the copyright comments. -Table of contents -================= +The modifications are contained in the file [`limitless.patch`](limitless.patch). -- [Install Mattermost](#install-mattermost) -- [Native mobile and desktop apps](#native-mobile-and-desktop-apps) -- [Get security bulletins](#get-security-bulletins) -- [Get involved](#get-involved) -- [Learn more](#learn-more) -- [License](#license) -- [Get the latest news](#get-the-latest-news) -- [Contributing](#contributing) +To apply our modifications and compile Mostlymatter, please have a look at [MOSTLYMATTER_HOW_TO.md](MOSTLYMATTER_HOW_TO.md). -## Install Mattermost +## Get Mostlymatter binaries -- [Download and Install Mattermost Self-Hosted](https://docs.mattermost.com/guides/deployment.html) - Deploy a Mattermost Self-hosted instance in minutes via Docker, Ubuntu, or tar. -- [Get started in the cloud](https://mattermost.com/sign-up/?utm_source=github-mattermost-server-readme) to try Mattermost today. -- [Developer machine setup](https://developers.mattermost.com/contribute/server/developer-setup) - Follow this guide if you want to write code for Mattermost. +Go to to get the binaries you want. - -Other install guides: - -- [Deploy Mattermost on Docker](https://docs.mattermost.com/install/install-docker.html) -- [Mattermost Omnibus](https://docs.mattermost.com/install/installing-mattermost-omnibus.html) -- [Install Mattermost from Tar](https://docs.mattermost.com/install/install-tar.html) -- [Ubuntu 20.04 LTS](https://docs.mattermost.com/install/installing-ubuntu-2004-LTS.html) -- [Kubernetes](https://docs.mattermost.com/install/install-kubernetes.html) -- [Helm](https://docs.mattermost.com/install/install-kubernetes.html#installing-the-operators-via-helm) -- [Debian Buster](https://docs.mattermost.com/install/install-debian.html) -- [RHEL 8](https://docs.mattermost.com/install/install-rhel-8.html) -- [More server install guides](https://docs.mattermost.com/guides/deployment.html) - -## Native mobile and desktop apps - -In addition to the web interface, you can also download Mattermost clients for [Android](https://mattermost.com/pl/android-app/), [iOS](https://mattermost.com/pl/ios-app/), [Windows PC](https://docs.mattermost.com/install/desktop-app-install.html#windows-10-windows-8-1), [macOS](https://docs.mattermost.com/install/desktop-app-install.html#macos-10-9), and [Linux](https://docs.mattermost.com/install/desktop-app-install.html#linux). - -[Get Mattermost on Google Play](https://mattermost.com/pl/android-app/) [Get Mattermost on the App Store](https://itunes.apple.com/us/app/mattermost/id1257222717?mt=8) [![Get Mattermost on Windows PC](https://user-images.githubusercontent.com/33878967/33095357-39cab8d2-ceb8-11e7-89a6-67dccc571ca3.png)](https://docs.mattermost.com/install/desktop.html#windows-10-windows-8-1-windows-7) [![Get Mattermost on Mac OSX](https://user-images.githubusercontent.com/33878967/33095355-39a36f2a-ceb8-11e7-9b33-73d4f6d5d6c1.png)](https://docs.mattermost.com/install/desktop.html#macos-10-9) [![Get Mattermost on Linux](https://user-images.githubusercontent.com/33878967/33095354-3990e256-ceb8-11e7-965d-b00a16e578de.png)](https://docs.mattermost.com/install/desktop.html#linux) - -## Get security bulletins - -Receive notifications of critical security updates. The sophistication of online attackers is perpetually increasing. If you're deploying Mattermost it's highly recommended you subscribe to the Mattermost Security Bulletin mailing list for updates on critical security releases. - -[Subscribe here](https://mattermost.com/security-updates/#sign-up) - -## Get involved - -- [Contribute to Mattermost](https://handbook.mattermost.com/contributors/contributors/ways-to-contribute) -- [Find "Help Wanted" projects](https://github.com/mattermost/mattermost-server/issues?page=1&q=is%3Aissue+is%3Aopen+%22Help+Wanted%22&utf8=%E2%9C%93) -- [Join Developer Discussion on a Mattermost server for contributors](https://community.mattermost.com/signup_user_complete/?id=f1924a8db44ff3bb41c96424cdc20676) -- [Get Help With Mattermost](https://docs.mattermost.com/guides/get-help.html) - -## Learn more - -- [API options - webhooks, slash commands, drivers, and web service](https://api.mattermost.com/) -- [See who's using Mattermost](https://mattermost.com/customers/) -- [Browse over 700 Mattermost integrations](https://mattermost.com/marketplace/) +Follow the instructions on top of the page to verify the binaries you downloaded. ## License See the [LICENSE file](LICENSE.txt) for license rights and limitations. -## Get the latest news +## License of Mostlymatter’s logo -- **X** - Follow [Mattermost on X, formerly Twitter](https://twitter.com/mattermost). -- **Blog** - Get the latest updates from the [Mattermost blog](https://mattermost.com/blog/). -- **Facebook** - Follow [Mattermost on Facebook](https://www.facebook.com/MattermostHQ). -- **LinkedIn** - Follow [Mattermost on LinkedIn](https://www.linkedin.com/company/mattermost/). -- **Email** - Subscribe to our [newsletter](https://mattermost.us11.list-manage.com/subscribe?u=6cdba22349ae374e188e7ab8e&id=2add1c8034) (1 or 2 per month). -- **Mattermost** - Join the ~contributors channel on [the Mattermost Community Server](https://community.mattermost.com). -- **IRC** - Join the #matterbridge channel on [Freenode](https://freenode.net/) (thanks to [matterircd](https://github.com/42wim/matterircd)). -- **YouTube** - Subscribe to [Mattermost](https://www.youtube.com/@MattermostHQ). - -## Contributing - -[![Small Image](https://img.shields.io/badge/Contribute%20with-Gitpod-908a85?logo=gitpod)](https://gitpod.io/#https://github.com/mattermost/mattermost) - -Please see [CONTRIBUTING.md](./CONTRIBUTING.md). -[Join the Mattermost Contributors server](https://community.mattermost.com/signup_user_complete/?id=codoy5s743rq5mk18i7u5ksz7e) to join community discussions about contributions, development, and more. +[CC-By-NC v4.0](https://creativecommons.org/licenses/by-nc/4.0/deed.en) [Geoffrey Dorne](https://geoffreydorne.com) diff --git a/limitless.patch b/limitless.patch new file mode 100644 index 0000000000..784f795bb7 --- /dev/null +++ b/limitless.patch @@ -0,0 +1,365 @@ +diff --git a/server/.golangci.yml b/server/.golangci.yml +index 17dd33e925..fd716e15fc 100644 +--- a/server/.golangci.yml ++++ b/server/.golangci.yml +@@ -59,4 +59,4 @@ issues: + + - linters: + - errcheck +- path: "channels|platform|cmd/mattermost|public/model|public/plugin|public/shared/mlog|enterprise/ldap" ++ path: "channels|platform|cmd/mostlymatter|public/model|public/plugin|public/shared/mlog|enterprise/ldap" +diff --git a/server/Makefile b/server/Makefile +index 76b5c1c935..4290a1e1a9 100644 +--- a/server/Makefile ++++ b/server/Makefile +@@ -59,7 +59,7 @@ MMCTL_LDFLAGS += -X "$(MMCTL_PKG).buildDate=$(MMCTL_BUILD_DATE)" + + # Enterprise + BUILD_ENTERPRISE_DIR ?= ../../enterprise +-BUILD_ENTERPRISE ?= true ++BUILD_ENTERPRISE ?= false + BUILD_ENTERPRISE_READY = false + BUILD_TYPE_NAME = team + BUILD_HASH_ENTERPRISE = none +@@ -125,16 +125,16 @@ GO_VERSION_VALIDATION_ERR_MSG = Golang version is not supported, please update t + # GOOS/GOARCH of the build host, used to determine whether we're cross-compiling or not + BUILDER_GOOS_GOARCH="$(shell $(GO) env GOOS)_$(shell $(GO) env GOARCH)" + +-PLATFORM_FILES="./cmd/mattermost" ++PLATFORM_FILES="./cmd/mostlymatter" + + # Output paths + DIST_ROOT=dist +-DIST_PATH=$(DIST_ROOT)/mattermost +-DIST_PATH_LIN_AMD64=$(DIST_ROOT)/linux_amd64/mattermost +-DIST_PATH_LIN_ARM64=$(DIST_ROOT)/linux_arm64/mattermost +-DIST_PATH_OSX_AMD64=$(DIST_ROOT)/darwin_amd64/mattermost +-DIST_PATH_OSX_ARM64=$(DIST_ROOT)/darwin_arm64/mattermost +-DIST_PATH_WIN=$(DIST_ROOT)/windows/mattermost ++DIST_PATH=$(DIST_ROOT)/mostlymatter ++DIST_PATH_LIN_AMD64=$(DIST_ROOT)/linux_amd64/mostlymatter ++DIST_PATH_LIN_ARM64=$(DIST_ROOT)/linux_arm64/mostlymatter ++DIST_PATH_OSX_AMD64=$(DIST_ROOT)/darwin_amd64/mostlymatter ++DIST_PATH_OSX_ARM64=$(DIST_ROOT)/darwin_arm64/mostlymatter ++DIST_PATH_WIN=$(DIST_ROOT)/windows/mostlymatter + + # Packages lists + TE_PACKAGES=$(shell $(GO) list ./public/...) $(shell $(GO) list ./... | grep -vE 'server/v8/cmd/mmctl') +@@ -718,7 +718,7 @@ clean: stop-docker ## Clean up everything except persistent server data. + rm -f *.out + rm -f *.test + rm -f channels/imports/imports.go +- rm -f cmd/mattermost/cprofile*.out ++ rm -f cmd/mostlymatter/cprofile*.out + + nuke: clean clean-docker ## Clean plus removes persistent server data. + @echo BOOM +diff --git a/server/channels/app/limits.go b/server/channels/app/limits.go +index ff216fd74c..053b4af4a7 100644 +--- a/server/channels/app/limits.go ++++ b/server/channels/app/limits.go +@@ -12,8 +12,8 @@ import ( + ) + + const ( +- maxUsersLimit = 5_000 +- maxUsersHardLimit = 11_000 ++ maxUsersLimit = 5_000_000 ++ maxUsersHardLimit = 11_000_000 + ) + + func (a *App) GetServerLimits() (*model.ServerLimits, *model.AppError) { +diff --git a/server/cmd/mattermost/commands/cmdtestlib.go b/server/cmd/mostlymatter/commands/cmdtestlib.go +similarity index 100% +rename from server/cmd/mattermost/commands/cmdtestlib.go +rename to server/cmd/mostlymatter/commands/cmdtestlib.go +diff --git a/server/cmd/mattermost/commands/db.go b/server/cmd/mostlymatter/commands/db.go +similarity index 97% +rename from server/cmd/mattermost/commands/db.go +rename to server/cmd/mostlymatter/commands/db.go +index 17c96c0c45..4a5c210479 100644 +--- a/server/cmd/mattermost/commands/db.go ++++ b/server/cmd/mostlymatter/commands/db.go +@@ -34,13 +34,13 @@ var InitDbCmd = &cobra.Command{ + + This command should be run using a database configuration DSN.`, + Example: ` # you can use the config flag to pass the DSN +- $ mattermost db init --config postgres://localhost/mattermost ++ $ mostlymatter db init --config postgres://localhost/mattermost + + # or you can use the MM_CONFIG environment variable +- $ MM_CONFIG=postgres://localhost/mattermost mattermost db init ++ $ MM_CONFIG=postgres://localhost/mattermost mostlymatter db init + + # and you can set a custom defaults file to be loaded into the database +- $ MM_CUSTOM_DEFAULTS_PATH=custom.json MM_CONFIG=postgres://localhost/mattermost mattermost db init`, ++ $ MM_CUSTOM_DEFAULTS_PATH=custom.json MM_CONFIG=postgres://localhost/mattermost mostlymatter db init`, + Args: cobra.NoArgs, + RunE: initDbCmdF, + } +@@ -48,7 +48,7 @@ This command should be run using a database configuration DSN.`, + var ResetCmd = &cobra.Command{ + Use: "reset", + Short: "Reset the database to initial state", +- Long: "Completely erases the database causing the loss of all data. This will reset Mattermost to its initial state.", ++ Long: "Completely erases the database causing the loss of all data. This will reset Mostlymatter to its initial state.", + RunE: resetCmdF, + } + +diff --git a/server/cmd/mattermost/commands/exec_command_test.go b/server/cmd/mostlymatter/commands/exec_command_test.go +similarity index 100% +rename from server/cmd/mattermost/commands/exec_command_test.go +rename to server/cmd/mostlymatter/commands/exec_command_test.go +diff --git a/server/cmd/mattermost/commands/export.go b/server/cmd/mostlymatter/commands/export.go +similarity index 89% +rename from server/cmd/mattermost/commands/export.go +rename to server/cmd/mostlymatter/commands/export.go +index 5e2894ada4..f7e916958f 100644 +--- a/server/cmd/mattermost/commands/export.go ++++ b/server/cmd/mostlymatter/commands/export.go +@@ -21,38 +21,38 @@ import ( + + var ExportCmd = &cobra.Command{ + Use: "export", +- Short: "Export data from Mattermost", +- Long: "Export data from Mattermost in a format suitable for import into a third-party application or another Mattermost instance", ++ Short: "Export data from Mostlymatter", ++ Long: "Export data from Mostlymatter in a format suitable for import into a third-party application or another Mattermost instance", + } + + var ScheduleExportCmd = &cobra.Command{ + Use: "schedule", +- Short: "Schedule an export data job in Mattermost", +- Long: "Schedule an export data job in Mattermost (this will run asynchronously via a background worker)", ++ Short: "Schedule an export data job in Mostlymatter", ++ Long: "Schedule an export data job in Mostlymatter (this will run asynchronously via a background worker)", + Example: "export schedule --format=actiance --exportFrom=12345 --timeoutSeconds=12345", + RunE: scheduleExportCmdF, + } + + var CsvExportCmd = &cobra.Command{ + Use: "csv", +- Short: "Export data from Mattermost in CSV format", +- Long: "Export data from Mattermost in CSV format", ++ Short: "Export data from Mostlymatter in CSV format", ++ Long: "Export data from Mostlymatter in CSV format", + Example: "export csv --exportFrom=12345", + RunE: buildExportCmdF("csv"), + } + + var ActianceExportCmd = &cobra.Command{ + Use: "actiance", +- Short: "Export data from Mattermost in Actiance format", +- Long: "Export data from Mattermost in Actiance format", ++ Short: "Export data from Mostlymatter in Actiance format", ++ Long: "Export data from Mostlymatter in Actiance format", + Example: "export actiance --exportFrom=12345", + RunE: buildExportCmdF("actiance"), + } + + var GlobalRelayZipExportCmd = &cobra.Command{ + Use: "global-relay-zip", +- Short: "Export data from Mattermost into a zip file containing emails to send to Global Relay for debug and testing purposes only.", +- Long: "Export data from Mattermost into a zip file containing emails to send to Global Relay for debug and testing purposes only. This does not archive any information in Global Relay.", ++ Short: "Export data from Mostlymatter into a zip file containing emails to send to Global Relay for debug and testing purposes only.", ++ Long: "Export data from Mostlymatter into a zip file containing emails to send to Global Relay for debug and testing purposes only. This does not archive any information in Global Relay.", + Example: "export global-relay-zip --exportFrom=12345", + RunE: buildExportCmdF("globalrelay-zip"), + } +@@ -60,7 +60,7 @@ var GlobalRelayZipExportCmd = &cobra.Command{ + var BulkExportCmd = &cobra.Command{ + Use: "bulk [file]", + Short: "Export bulk data.", +- Long: "Export data to a file compatible with the Mattermost Bulk Import format.", ++ Long: "Export data to a file compatible with the Mostlymatter Bulk Import format.", + Example: "export bulk bulk_data.json", + RunE: bulkExportCmdF, + Args: cobra.ExactArgs(1), +diff --git a/server/cmd/mattermost/commands/export_test.go b/server/cmd/mostlymatter/commands/export_test.go +similarity index 100% +rename from server/cmd/mattermost/commands/export_test.go +rename to server/cmd/mostlymatter/commands/export_test.go +diff --git a/server/cmd/mattermost/commands/import.go b/server/cmd/mostlymatter/commands/import.go +similarity index 98% +rename from server/cmd/mattermost/commands/import.go +rename to server/cmd/mostlymatter/commands/import.go +index e02cebdc32..c76b9425a3 100644 +--- a/server/cmd/mattermost/commands/import.go ++++ b/server/cmd/mostlymatter/commands/import.go +@@ -32,7 +32,7 @@ var SlackImportCmd = &cobra.Command{ + var BulkImportCmd = &cobra.Command{ + Use: "bulk [file]", + Short: "Import bulk data.", +- Long: "Import data from a Mattermost Bulk Import File.", ++ Long: "Import data from a Mostlymatter Bulk Import File.", + Example: " import bulk bulk_data.json", + RunE: bulkImportCmdF, + } +diff --git a/server/cmd/mattermost/commands/init.go b/server/cmd/mostlymatter/commands/init.go +similarity index 100% +rename from server/cmd/mattermost/commands/init.go +rename to server/cmd/mostlymatter/commands/init.go +diff --git a/server/cmd/mattermost/commands/jobserver.go b/server/cmd/mostlymatter/commands/jobserver.go +similarity index 88% +rename from server/cmd/mattermost/commands/jobserver.go +rename to server/cmd/mostlymatter/commands/jobserver.go +index 60b570bea6..5ab12fc0cb 100644 +--- a/server/cmd/mattermost/commands/jobserver.go ++++ b/server/cmd/mostlymatter/commands/jobserver.go +@@ -18,7 +18,7 @@ import ( + + var JobserverCmd = &cobra.Command{ + Use: "jobserver", +- Short: "Start the Mattermost job server", ++ Short: "Start the Mostlymatter job server", + RunE: jobserverCmdF, + } + +@@ -46,8 +46,8 @@ func jobserverCmdF(command *cobra.Command, args []string) error { + rctx := request.EmptyContext(a.Log()) + + // Run jobs +- rctx.Logger().Info("Starting Mattermost job server") +- defer rctx.Logger().Info("Stopped Mattermost job server") ++ rctx.Logger().Info("Starting Mostlymatter job server") ++ defer rctx.Logger().Info("Stopped Mostlymatter job server") + + if !noJobs { + a.Srv().Jobs.StartWorkers() +@@ -68,7 +68,7 @@ func jobserverCmdF(command *cobra.Command, args []string) error { + <-signalChan + + // Cleanup anything that isn't handled by a defer statement +- rctx.Logger().Info("Stopping Mattermost job server") ++ rctx.Logger().Info("Stopping Mostlymatter job server") + + return nil + } +diff --git a/server/cmd/mattermost/commands/main_test.go b/server/cmd/mostlymatter/commands/main_test.go +similarity index 100% +rename from server/cmd/mattermost/commands/main_test.go +rename to server/cmd/mostlymatter/commands/main_test.go +diff --git a/server/cmd/mattermost/commands/output.go b/server/cmd/mostlymatter/commands/output.go +similarity index 100% +rename from server/cmd/mattermost/commands/output.go +rename to server/cmd/mostlymatter/commands/output.go +diff --git a/server/cmd/mattermost/commands/root.go b/server/cmd/mostlymatter/commands/root.go +similarity index 70% +rename from server/cmd/mattermost/commands/root.go +rename to server/cmd/mostlymatter/commands/root.go +index 692ac30f53..8d2081ab21 100644 +--- a/server/cmd/mattermost/commands/root.go ++++ b/server/cmd/mostlymatter/commands/root.go +@@ -18,9 +18,9 @@ func Run(args []string) error { + } + + var RootCmd = &cobra.Command{ +- Use: "mattermost", ++ Use: "mostlymatter", + Short: "Open source, self-hosted Slack-alternative", +- Long: `Mattermost offers workplace messaging across web, PC and phones with archiving, search and integration with your existing systems. Documentation available at https://docs.mattermost.com`, ++ Long: `Mostlymatter offers workplace messaging across web, PC and phones with archiving, search and integration with your existing systems. Documentation available at https://docs.mattermost.com`, + PersistentPreRun: func(cmd *cobra.Command, args []string) { + checkForRootUser() + }, +@@ -33,6 +33,6 @@ func init() { + // checkForRootUser logs a warning if the process is running as root + func checkForRootUser() { + if os.Geteuid() == 0 { +- mlog.Warn("Running Mattermost as root is not recommended. Please use a non-root user.") ++ mlog.Warn("Running Mostlymatter as root is not recommended. Please use a non-root user.") + } + } +diff --git a/server/cmd/mattermost/commands/server.go b/server/cmd/mostlymatter/commands/server.go +similarity index 96% +rename from server/cmd/mattermost/commands/server.go +rename to server/cmd/mostlymatter/commands/server.go +index 5f73ba0501..2de7469081 100644 +--- a/server/cmd/mattermost/commands/server.go ++++ b/server/cmd/mostlymatter/commands/server.go +@@ -27,7 +27,7 @@ import ( + + var serverCmd = &cobra.Command{ + Use: "server", +- Short: "Run the Mattermost server", ++ Short: "Run the Mostlymatter server", + RunE: serverCmdF, + SilenceUsage: true, + } +@@ -41,7 +41,7 @@ func serverCmdF(command *cobra.Command, args []string) error { + interruptChan := make(chan os.Signal, 1) + + if err := utils.TranslationsPreInit(); err != nil { +- return errors.Wrap(err, "unable to load Mattermost translation files") ++ return errors.Wrap(err, "unable to load Mostlymatter translation files") + } + + customDefaults, err := loadCustomDefaults() +diff --git a/server/cmd/mattermost/commands/server_test.go b/server/cmd/mostlymatter/commands/server_test.go +similarity index 100% +rename from server/cmd/mattermost/commands/server_test.go +rename to server/cmd/mostlymatter/commands/server_test.go +diff --git a/server/cmd/mattermost/commands/test.go b/server/cmd/mostlymatter/commands/test.go +similarity index 100% +rename from server/cmd/mattermost/commands/test.go +rename to server/cmd/mostlymatter/commands/test.go +diff --git a/server/cmd/mattermost/commands/utils.go b/server/cmd/mostlymatter/commands/utils.go +similarity index 100% +rename from server/cmd/mattermost/commands/utils.go +rename to server/cmd/mostlymatter/commands/utils.go +diff --git a/server/cmd/mattermost/commands/utils_test.go b/server/cmd/mostlymatter/commands/utils_test.go +similarity index 100% +rename from server/cmd/mattermost/commands/utils_test.go +rename to server/cmd/mostlymatter/commands/utils_test.go +diff --git a/server/cmd/mattermost/commands/version.go b/server/cmd/mostlymatter/commands/version.go +similarity index 92% +rename from server/cmd/mattermost/commands/version.go +rename to server/cmd/mostlymatter/commands/version.go +index 5a5a5f160d..b0c0dc11ff 100644 +--- a/server/cmd/mattermost/commands/version.go ++++ b/server/cmd/mostlymatter/commands/version.go +@@ -16,7 +16,7 @@ var VersionCmd = &cobra.Command{ + } + + func init() { +- VersionCmd.Flags().Bool("skip-server-start", false, "Skip the server initialization and return the Mattermost version without the DB version.") ++ VersionCmd.Flags().Bool("skip-server-start", false, "Skip the server initialization and return the Mostlymatter version without the DB version.") + VersionCmd.Flags().MarkDeprecated("skip-server-start", "This flag is not necessary anymore and the flag will be removed in the future releases. Consider removing it from your scripts.") + RootCmd.AddCommand(VersionCmd) + } +diff --git a/server/cmd/mattermost/commands/version_test.go b/server/cmd/mostlymatter/commands/version_test.go +similarity index 100% +rename from server/cmd/mattermost/commands/version_test.go +rename to server/cmd/mostlymatter/commands/version_test.go +diff --git a/server/cmd/mattermost/main.go b/server/cmd/mostlymatter/main.go +similarity index 88% +rename from server/cmd/mattermost/main.go +rename to server/cmd/mostlymatter/main.go +index 5fb4b4a005..1783e812f3 100644 +--- a/server/cmd/mattermost/main.go ++++ b/server/cmd/mostlymatter/main.go +@@ -6,7 +6,7 @@ package main + import ( + "os" + +- "github.com/mattermost/mattermost/server/v8/cmd/mattermost/commands" ++ "github.com/mattermost/mattermost/server/v8/cmd/mostlymatter/commands" + // Import and register app layer slash commands + _ "github.com/mattermost/mattermost/server/v8/channels/app/slashcommands" + // Plugins +diff --git a/server/cmd/mattermost/main_test.go b/server/cmd/mostlymatter/main_test.go +similarity index 96% +rename from server/cmd/mattermost/main_test.go +rename to server/cmd/mostlymatter/main_test.go +index 8ec8a0bea4..c661c2012c 100644 +--- a/server/cmd/mattermost/main_test.go ++++ b/server/cmd/mostlymatter/main_test.go +@@ -12,7 +12,7 @@ import ( + + // TestRunMain can be used to track code coverage in integration tests. + // To run this: +-// go test -coverpkg="<>" -ldflags '<>' -tags maincoverage -c ./cmd/mattermost/ ++// go test -coverpkg="<>" -ldflags '<>' -tags maincoverage -c ./cmd/mostlymatter/ + // ./mattermost.test -test.run="^TestRunMain$" -test.coverprofile=coverage.out + // And then run your integration tests. + func TestRunMain(t *testing.T) { diff --git a/mostlymatter/logo.png b/mostlymatter/logo.png new file mode 100644 index 0000000000..188d55be1c Binary files /dev/null and b/mostlymatter/logo.png differ diff --git a/mostlymatter/logo_with_white_background-small.png b/mostlymatter/logo_with_white_background-small.png new file mode 100644 index 0000000000..86c9710b8f Binary files /dev/null and b/mostlymatter/logo_with_white_background-small.png differ diff --git a/mostlymatter/logo_with_white_background.png b/mostlymatter/logo_with_white_background.png new file mode 100644 index 0000000000..d60f21f7c1 Binary files /dev/null and b/mostlymatter/logo_with_white_background.png differ