Commit 8f1c57a2 authored by David Seaward's avatar David Seaward
Browse files

* update readme, tweak some files to match liberty conventions

* add remote conventions
Signed-off-by: David Seaward's avatarDavid Seaward <>
parent df8e5bbf
Pipeline #18928 canceled with stages
# Contributor Covenant Code of Conduct
# Community Covenant
## Our Pledge
## Our Goal
In the interest of fostering an open and welcoming environment, we as contributors and maintainers pledge to making participation in our project and our community a harassment-free experience for everyone, regardless of age, body size, disability, ethnicity, gender identity and expression, level of experience, nationality, personal appearance, race, religion, or sexual identity and orientation.
This community is dedicated to providing a harassment-free experience for everyone. We do not tolerate harassment of participants in any form.
## Our Standards
## Applicability and Scope
Examples of behavior that contributes to creating a positive environment include:
This code of conduct applies to all of this community's spaces, including public channels, private channels and direct messages, both online and off. Anyone who violates this code of conduct may be sanctioned or expelled from these spaces at the discretion of the administrators.
## Toward a Welcoming and Safe Environment
We hope to create an environment in which diverse individuals can collaborate and interact in a positive and affirming way. Examples of behavior that contributes to creating this sort of environment include:
* Using welcoming and inclusive language
* Being respectful of differing viewpoints and experiences
* Gracefully accepting constructive criticism
* Focusing on what is best for the community
* Focusing on what is best for the overall community
* Showing empathy towards other community members
Examples of unacceptable behavior by participants include:
## Anti-Harassment Statement
This community will not tolerate harassment of any kind. Examples of harassment include:
* Offensive comments related to gender, gender identity and expression, sexual orientation, disability, mental illness, neuro(a)typicality, physical appearance, pregnancy status, veteran status, political affiliation, marital status, body size, age, race, national origin, ethnic origin, nationality, immigration status, language, religion or lack thereof, or other identity marker. This includes anti-Indigenous/Nativeness and anti-Blackness.
* Unwelcome comments regarding a person's lifestyle choices and practices, including those related to food, health, parenting, relationships, drugs, and employment.
* Deliberate misgendering, using inappropriate pronouns, or use of "dead" or rejected names.
* Gratuitous or off-topic sexual images or behavior in spaces where they're not appropriate.
* Physical contact and simulated physical contact (eg, textual descriptions like "hug" or "backrub") without consent or after a request to stop.
* Threats of violence.
* Incitement of violence towards any individual or group, including encouraging a person to commit suicide or to engage in self-harm.
* Deliberate intimidation.
* Stalking or following - online or in the physical world.
* Harassing photography or recording, including logging online activity for harassment purposes.
* Sustained disruption of discussion.
* Unwelcome sexual attention.
* Patterns of inappropriate social contact, such as requesting/assuming inappropriate levels of intimacy with others.
* Continued one-on-one communication after requests to cease.
* Deliberate "outing" of any aspect of a person's identity without their consent except as necessary to protect vulnerable people from intentional abuse.
* Publication of non-harassing private communication.
* Jokes that resemble the above, such as "hipster racism", still count as harassment even if meant satirically or ironically.
If you have questions or concerns about these issues please feel free to message an admin or ask for an opportunity to explore the issue with a moderator and volunteers.
## Reporting
If you are being harassed by a member of our community, notice that someone else is being harassed, or have any other concerns, please contact the administrators via email. If the person who is harassing you is on the admin team, they will not be involved in handling or resolving the incident.
* The use of sexualized language or imagery and unwelcome sexual attention or advances
* Trolling, insulting/derogatory comments, and personal or political attacks
* Public or private harassment
* Publishing others' private information, such as a physical or electronic address, without explicit permission
* Other conduct which could reasonably be considered inappropriate in a professional setting
The admin team will respond to any complaint as promptly as possible we can. If you do not get a timely response (for example, if no admins are currently online) then please put your personal safety and well-being first, and consider logging out and/or contacting the admins by email at
## Our Responsibilities
This code of conduct applies to our community's spaces, but if you are being harassed by a member of our community outside our spaces, we still want to know about it. We will take all good-faith reports of harassment by our members, especially the administrators, seriously. This includes harassment outside our spaces and harassment that took place at any point in time. The abuse team reserves the right to exclude people from the community based on their past behavior, including behavior outside of our spaces and behavior towards people who are not in this community.
Project maintainers are responsible for clarifying the standards of acceptable behavior and are expected to take appropriate and fair corrective action in response to any instances of unacceptable behavior.
In order to protect volunteers from abuse and burnout, we reserve the right to reject any report we believe to have been made in bad faith. Reports intended to silence legitimate criticism may be deleted without response.
Project maintainers have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, or to ban temporarily or permanently any contributor for other behaviors that they deem inappropriate, threatening, offensive, or harmful.
## Enforcement Process
## Scope
Every code of conduct violation report will be treated with seriousness and care. If a member's immediate safety and security is threatened, an individual admin may take any action that they deem appropriate, up to and including temporarily banning the offender from the community. In less urgent situations, at least two admins will discuss the offense and mutually arrive at a suitable response, which will be shared with the offender privately. Whatever the resolution that they decide upon, the decision of the admins involved in a violation case will be considered final.
This Code of Conduct applies both within project spaces and in public spaces when an individual is representing the project or its community. Examples of representing a project or community include using an official project e-mail address, posting via an official social media account, or acting as an appointed representative at an online or offline event. Representation of a project may be further defined and clarified by project maintainers.
We will respect confidentiality requests for the purpose of protecting victims of abuse. At our discretion, we may publicly name a person about whom we've received harassment complaints, or privately warn third parties about them, if we believe that doing so will increase the safety of our members or the general public. We will not name harassment victims without their affirmative consent.
## Enforcement
## Consequences
Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the project team at The project team will review and investigate all complaints, and will respond in a way that it deems appropriate to the circumstances. The project team is obligated to maintain confidentiality with regard to the reporter of an incident. Further details of specific enforcement policies may be posted separately.
Participants asked to stop any harassing behavior are expected to comply immediately. If a participant engages in harassing behavior, the administrators may take any action they deem appropriate, up to and including expulsion from the community and identification of the participant as a harasser to other members. At the discretion of the admins, or by request, one or more of the parties involved may request to discuss the violation and how to avoid similar situations in the future.
Project maintainers who do not follow or enforce the Code of Conduct in good faith may face temporary or permanent repercussions as determined by other members of the project's leadership.
## Acknowledgements
## Attribution
This Code of Conduct is adapted from the Community Covenant (, version 1.0, available at The Community Covenant is an open source effort and is built on codes of conduct that came before it, including the Contributor Covenant ( and the LGBTQ in Tech community code of conduct (
This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, available at [][version]
## License
Community Covenant by Coraline Ada Ehmke is licensed under a Creative Commons Attribution 4.0 International License ( Based on a work at
Developer Certificate of Origin
Version 1.1
Copyright (C) 2004, 2006 The Linux Foundation and its contributors.
1 Letterman Drive
Suite D4700
San Francisco, CA, 94129
Everyone is permitted to copy and distribute verbatim copies of this
license document, but changing it is not allowed.
Developer's Certificate of Origin 1.1
By making a contribution to this project, I certify that:
(a) The contribution was created in whole or in part by me and I
have the right to submit it under the open source license
indicated in the file; or
(b) The contribution is based upon previous work that, to the best
of my knowledge, is covered under an appropriate open source
license and I have the right under that license to submit that
work with modifications, whether created in whole or in part
by me, under the same open source license (unless I am
permitted to submit under a different license), as indicated
in the file; or
(c) The contribution was provided directly to me by some other
person who certified (a), (b) or (c) and I have not modified
(d) I understand and agree that this project and the contribution
are public and that a record of the contribution (including all
personal information I submit with it, including my sign-off) is
maintained indefinitely and may be redistributed consistent with
this project or the open source license(s) involved.
Thank you for considering contributing to Mastodon 🐘
You can contribute in the following ways:
- Finding and reporting bugs
- Translating the Mastodon interface into various languages
- Contributing code to Mastodon by fixing bugs or implementing features
- Improving the documentation
If your contributions are accepted into Mastodon, you can request to be paid through [our OpenCollective](
## Bug reports
Bug reports and feature suggestions can be submitted to [GitHub Issues]( Please make sure that you are not submitting duplicates, and that a similar report or request has not already been resolved or rejected in the past using the search function. Please also use descriptive, concise titles.
## Translations
You can submit translations via [Weblate]( They are periodically merged into the codebase.
[![Mastodon translation statistics by language](](
## Pull requests
Please use clean, concise titles for your pull requests. We use commit squashing, so the final commit in the master branch will carry the title of the pull request.
The smaller the set of changes in the pull request is, the quicker it can be reviewed and merged. Splitting tasks into multiple smaller pull requests is often preferable.
**Pull requests that do not pass automated checks may not be reviewed**. In particular, you need to keep in mind:
- Unit and integration tests (rspec, jest)
- Code style rules (rubocop, eslint)
- Normalization of locale files (i18n-tasks)
## Documentation
The [Mastodon documentation]( is a statically generated site. You can [submit merge requests to mastodon/docs](
This diff is collapsed.
[![GitHub release](][releases]
[![Build Status](][circleci]
[![Code Climate](][code_climate]
[![Translation status](][weblate]
[![Docker Pulls](][docker]
Mastodon is a **free, open-source social network server** based on ActivityPub. Follow friends and discover new ones. Publish anything you want: links, pictures, text, video. All servers of Mastodon are interoperable as a federated network, i.e. users on one server can seamlessly communicate with users from another one. This includes non-Mastodon software that also implements ActivityPub!
Click below to **learn more** in a video:
## Navigation
- [Project homepage 🐘](
- [Support the development via Patreon][patreon]
- [View sponsors](
- [Blog](
- [Documentation](
- [Browse Mastodon servers](
- [Browse Mastodon apps](
## Features
<img src="" align="right" width="30%" />
**No vendor lock-in: Fully interoperable with any conforming platform**
It doesn't have to be Mastodon, whatever implements ActivityPub is part of the social network! [Learn more](
**Real-time, chronological timeline updates**
See the updates of people you're following appear in real-time in the UI via WebSockets. There's a firehose view as well!
**Media attachments like images and short videos**
Upload and view images and WebM/MP4 videos attached to the updates. Videos with no audio track are treated like GIFs; normal videos are looped - like vines!
**Safety and moderation tools**
Private posts, locked accounts, phrase filtering, muting, blocking and all sorts of other features, along with a reporting and moderation system. [Learn more](
**OAuth2 and a straightforward REST API**
Mastodon acts as an OAuth2 provider so 3rd party apps can use the REST and Streaming APIs, resulting in a rich app ecosystem with a lot of choice!
## Deployment
**Tech stack:**
- **Ruby on Rails** powers the REST API and other web pages
- **React.js** and Redux are used for the dynamic parts of the interface
- **Node.js** powers the streaming API
- **PostgreSQL** 9.5+
- **Redis**
- **Ruby** 2.4+
- **Node.js** 8+
The repository includes deployment configurations for **Docker and docker-compose**, but also a few specific platforms like **Heroku**, **Scalingo**, and **Nanobox**. The [**stand-alone** installation guide]( is available in the documentation.
A **Vagrant** configuration is included for development purposes.
## Contributing
Mastodon is **free, open source software** licensed under **AGPLv3**.
You can open issues for bugs you've found or features you think are missing. You can also submit pull requests to this repository, or submit translations using Weblate. To get started, take a look at []( If your contributions are accepted into Mastodon, you can request to be paid through [our OpenCollective](
**IRC channel**: #mastodon on
## License
Copyright (C) 2016-2019 Eugen Rochko & other Mastodon contributors (see [](
This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License along with this program. If not, see <>.
[project] | [code] | [tracker]
A complementary fork of
[Mastodon]( aiming for:
* an opt-in workflow
* only public content (e.g. no direct messages)
* user-based (rather than sysadmin-based) control
Suggested remotes (replace `grace.hopper` with your username):
[remote "mastodon"]
url =
fetch = +refs/heads/*:refs/remotes/mastodon/*
[remote "florence"]
url =
fetch = +refs/heads/*:refs/remotes/florence/*
[remote "smilodon"]
url =
fetch = +refs/heads/*:refs/remotes/smilodon/*
[remote "origin"]
url =
fetch = +refs/heads/*:refs/remotes/origin/*
Sharing and contributions
Copyright 2016-2019 Eugen Rochko & other Mastodon contributors (see
Copyright 2019 Purism SPC
SPDX-License-Identifier: AGPL-3.0-or-later
Shared under AGPL-3.0-or-later. We adhere to the Community Covenant
1.0 without modification, and certify origin per DCO 1.1 with a
signed-off-by line. Contributions under the same terms are welcome.
For details see:
* [], full license text
* [], upstream author list
* [], full conduct text
* [], full origin text
<!-- * [], additional contribution notes -->
<!-- Links -->
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment