Giter VIP home page Giter VIP logo

mastodon-fork's Introduction

Florence Mastodon

Mastodon is a free, open-source social network server based on ActivityPub. This is not the official version of Mastodon; this is a separate version (i.e. a fork) maintained by Florence. For more information on Mastodon, you can see the official website and the upstream repo.

This version of Mastodon will include much-wanted changes by the community that are not included in the upstream version of Mastodon. Migrating from the latest stable release of Mastodon to Florence's Mastodon will always be possible, to ensure that everyone can benefit from these changes.

Versioning

Florence Mastodon uses a four-numbered versioning system, loosely based upon semantic versioning. The four numbers are:

  • Compatibility: Increased when federation, app compatibility, etc. are changed in a non-compatibile way.
  • Feel: Increased when user experience is changed strongly enough to feel different, i.e. more than just small new features.
  • Features: Increased when new features are added. Reset to zero when feel version is bumped.
  • Hotfixes: Increased when fixes are substantial enough to release a new version without any new features. Reset to zero when feature version is bumped.

For now, because this versioning system hasn't been strongly adopted, releases will be annotated as Pre-Release x.y.z, which is equivalent to version 0.x.y.z.

Release timeline

Pre-release 0.1.0 is mostly equivalent to Mastodon 2.9.0, with some extra changes added in. Right now, the goal before pre-release 1.0.0 is to incorporate existing, already-developed changes into the fork so that people have a central version to upgrade to. Once we've finally gotten the software to the point where we like it, we will release the first official release, which will be named something special. Stay tuned!

License

Copyright (C) 2016-2019 Florence, Eugen Rochko, and many other Mastodon contributors; see AUTHORS.md.

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 https://www.gnu.org/licenses/.

mastodon-fork's People

Contributors

1011x avatar abcang avatar aditoo17 avatar akihikodaki avatar alpaca-tc avatar blackle avatar clarfonthey avatar clearlyclaire avatar dependabot-preview[bot] avatar dependabot[bot] avatar gargron avatar ineffyble avatar jantsop avatar lynlynlynx avatar mayaeh avatar mjankowski avatar nclm avatar nolanlawson avatar nullkal avatar quent-in avatar quenty31 avatar renatolond avatar shuheiktgw avatar sorin-davidoi avatar tribela avatar unarist avatar yiskah avatar ykzts avatar yookoala avatar ysksn avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

mastodon-fork's Issues

Fix the "High Contrast" CSS theme so it complies with accessibility standards

The current High Contrast theme provided with vanilla Mastodon and intended to be accessible does not comply with current industry best practise (in fact to the untrained eye it is indistinguishable from the default theme!).

Previous attempts to fix this upstream have been rebuffed for aesthetic reasons.

This feature request proposes amending the existing theme to conform as closely as possible to WCAG 2.0: https://www.w3.org/TR/WCAG20/

Determine alternatives to dependabot

This is obviously GitHub-only and we'll probably want something similar that will work on a self-hosted version. Setting this up on some form of CI shouldn't be too hard.

Allow users to display up to 5 items as a table on their profile

Mastodon allow users to add up to four items on their profile that will be displayed as a table. Based on my observations, those items are often used for indicating:

  • pronouns;
  • languages;
  • secondary account;
  • website;
  • donation profile (Liberation, Patreon, Ko-fi, etc.);
  • instant messaging handle (Matrix, Discord, XMPP, etc.).

Obviously, not everyone is using all those things. But we can see how having only four items can be inconvenient. I have been struggling with that myself.
If it doesn't bring any trouble from a design perspective, I think we should allow users to display up to five items, not four. It'll give them a little more flexibility and has the advantage to feeling a little less like a random choice.

Remove dependency on Javascript for static pages

Due to the nature of how federation works, you'll get yourself checking out a post's direct link to its static page to get the full conversation.

As the people of the Fediverse tend to be more technically inclined, a lot disable JavaScript by default on unknown domains as a security precaution. If a thread contains content warnings, there is no way to expand them, without having JavaScript enabled. As a result one has to allow the execution of JavaScript manually every time.

Here is an example page for examining the problem: https://harpy.life/@erinbee/102027937751106507

There would be benefits for non-technical people as well. Seeing how the size of JavaScript on the above example page exceeds 1MB, implementing this feature in pure HTML5 and CSS, would greatly reduce the required bandwidth for loading such a page and holding it in memory.
(There are other optimisations that could be done to images for example, but that is beyond the scope of this issue.)

An alternative implementation for CWs would be possible using HTML5's <details> and <summary> tags.
They are supported by every current major browser, except MS Edge - this will change in the future however.

Dynamic image loading would be trickier, but also doable I think. Maybe retaining some JavaScript for smooth functioning would be necessary here, but heavily reducing the amount of used JavaScript is definitely a possibility.

We would be trading all the benefits mentioned above for compatibility with MS Internet Explorer (any version). I'd say it's worth it.

glitch.social changes

Website: https://glitch-soc.github.io/docs/
Repository: https://github.com/glitch-soc/mastodon/

This is going to be the parent issue for all glitch.social changes to be incorporated.

  • Hiding media behind subjects/CWs: #4
  • Fullwidth images and videos: #5
  • Image letterboxing: #6
  • App settings modal: #7
  • Collapsible toots: #8
  • Collapsible notifications: #9
  • Visibility icons on toots: #10
  • Non-federated toots: #11
  • Threaded posting mode: #12
  • Extra data-* attributes on toots: #13
  • Theming: #14
  • Bookmarks: #15
  • Doodles: #16

Setting up CI

Right now, none of the CI from the original repo is carried over here. Ideally, we should look through what the other repo has and trim things down so that things are easier to self-host.

Improve scrollbar contrast

Right now, it’s hard to see the scrollbar in itself and the thumb, see screenshot:

screenshot_20190219_001147

I myself had difficulty in the beginning locating the scrollbar, and even now it’s hard to locate it instinctively, so it might be really hard for people who don’t have a perfect vision.

So we may want to tweak the colors to make it more accessible.

Reducing hosting footprint

Right now, Mastodon takes a lot of resources to host, and there are probably a bunch of low-hanging fruit we can work on.

Make domain block message less obnoxious

Are you really, really sure you want to block the entire (domain)? In most cases a few targeted blocks or mutes are sufficient and preferable. You will not see content from that domain in any public timelines or your notifications. Your followers from that domain will be removed.

We need to change this.

Consider allow arbitrary emoji responses

One of the problems/frustrations I found with Twitter and Mastodon is the limited amount of responses that don't require a full-blown post. We have "like" but there are times when "like" doesn't make sense like when someone is expressing anxiety, sorrow, or the like. The (slightly) larger palette of responses from Facebook is nicer in that regard because talking about losing a job doesn't result in a ton of "heart" responses (which feels wrong). Likewise having a slew of "I'm sorry" responses to that also adds to information overload where simple reactions would show the emotional state. This would also related to those who don't feel comfortable posting longer text but still want to show sympathy/emotion.

I think allow the full gamut of the emoji on the server allows for more detailed conversations (e.g., The Emoji Movie comes to mind) but also the individual relationships (in my circle, green apple means something specific and Mastodon used to have the bread response to various things).

With abuse and the like, I could see that it would need to use the same filtering/muting rules that normal posts have. In some systems, they convert the "+1" or single emoji responses into a counter for display purposes. Maybe use that where someone's response of a single emoji results in collapsing down to a table instead of individual posts? I also believe ActivityPub has a place that could be used for those but places like Mastodon would then ignore it.

Related to Mastodon, this was requested mastodon/mastodon#4106.

Detect and flag possibly seizure-inducing videos

People sometimes upload videos or animations that can contain significant amounts of bright flashing, but they may not always add a content warning for it. Detecting this is easy and would help protect those who are susceptible to seizures.

A "flashing" flag could be added to a video/post as indication (similar to Mastodon's current NSFW flag). This flag would get set automatically if flashing is detected, or it could be set by the user manually.

Include option to scan images for alternative text

People often upload pictures of text from websites or PDFs, but might not include said text in the alternative text field of the image. Having the option of letting OCR software scan the image and fill in the alternate text field automatically would be very convenient.

Tracking issue for existing changes to incorporate

Tracking issues:

  • glitch.social tracking issue: #3
  • monsterfork tracking issue: #177
  • configurable character counts (#18 + #19 + #20)

Links:

General notes:

  • CSS underlines hack
  • Keeping CW box open

Any others?

Build developer team

Basically, we need to accumulate a list of trusted people who can accept PRs. This is on the to-do list for 0.1.

Hiding follower counts

A few instances do this with CSS hacks, but it'd be nice to have something a bit nicer with configuration.

Sementic of mentions in replies to direct messages

The problem is expressed in this post.

What is the expected behaviour when user B responds to a direct message of user A and mentions user C, who was not mentioned in the original message ?

The current behaviour of Mastodon is to send the reply to user A and C. However, this may not what user B expects, and it could confuse user C who cannot see the original message user B is replying to.

In the ActivityPub protocol, there is a separation between the content of a message (content field) and its recipients (to/cc/bto/bcc fields). There is no such distinction in Mastodon (or in microblogging in general), as mentioning someone adds it to the list of recipients.

When the messages are public (or unlisted), this is not really an issue, but as soon as the audience is restricted (follower-only, direct), a clear separation between who should receive the message and what is inside the message is preferable.

Make web application more lightweight

Right now, everything is a giant React app, which is very heavy. We might want to consider moving to something like Redux which is lighter weight, or potentially something entirely different. #48 (separating frontend and backend) might also allow for different web app versions, depending on user needs.

Basically, this is going to be a master tracking issue for ways to make the web app faster.

Change bios' characters limit to 500 by default

One of the main selling points of Mastodon always have been its 500 characters limit. Despite that, the number of characters one can use in their biography is only of 340, which is both short and a strange choice.
I would suggest to change the default limit of the number of characters that can be used in bios to 500.

Create a user-configurable spam filter in the admin panel

Currently individual users can set filters to automatically hide toots containing certain words, phrases or links.

This feature request proposes providing admins with a "global" version they can use for known spam URLs and phrases. This would hide offending toots for all instance users when they view the federated and/or local timeline.

In future this should also be extended to allow automating silencing or suspending of accounts that toot certain URLs or phrases. This is particularly useful when there is a persistent spammer that creates accounts across multiple instances (eg. like the "womenarestupid" stunt)

Separation of frontend and backend.

Something I've seen brought up a number of times (most recently: #29 (comment)), and which makes a lot of sense to me, is to have a clear separation between the front and back ends of Florence.

Points:

  • Require different skillsets and knowledge, so should make it easier to develop
  • Can be updated independently. Does this make more work for sys. admins.? Would need separate version numbers.
  • Have to be careful not to step on each others' toes!
  • Would enable alternative web clients/interfaces to be included in this project, and developed by others and plugged-in. Pleroma has a couple of frontend options, and it's pretty cool.
  • Web client would no-longer have to be a one-size-fits-all solution, thinking RE accessibility.

I'm not at all familiar with the codebase, nor Ruby. I assume this, if pursued, would be a long-term rather than immediate goal. Like say version 3.0?

Related Tootsuite Issues:

CW-Applying Filter

The CW mute or CW Filter is a feature that would, using the existent filter system, allow users to optionally add a content warning to the posts matching the filter in question, instead of hiding them entirely. this would be surfaced in the UI as such if no CW already exists:
(CW TEXT USER INPUTS) added by filters <specially formatted with a color to make it clear

when a content warning exists, it would be appended after "added by filters" IF it is not the part of the post that triggered the filter, and would instead be surfaced as a second content warning within the first (yes, nested CWs) so that users can still use that information if a word in the content warning is what is being filtered

Change alternate text's characters limit

Currently, the characters limit for alternate text is 420. This seems like a really random number. Why not use 500 instead? Or, if this is too much characters, 450 or 400?
If there is not technical limitations, I suggest we change this limit to 500 instead.

nodeinfo support

hi!

it would be great if florence supported the nodeinfo protocol.

nodeinfo is a unified method of fetching metrics from instances, similar to the /api/v1/instance endpoint. this is useful because it is implemented by basically every software other than mastodon, so implementing it will improve visibility into the overall health of the fediverse.

please add support for this feature.

Tracking issue for upstream issues to consider

Basically, anything we might want to add to this repo.

I'll incorporate this later.

Filter Posts by a Specific User or list of users only

when creating a filter, often you will risk collateral post filtering, and removing things that are not what are intended. most of the time, this is thanks to the filter being targeted at a couple people, or a specific person, who uses the filtered text in a certain way. this can be mitigated/resolved entirely via the CW-Applying-Filter, and the ability to filter only X users posts out. this would essentially turn it into "Filter X if posted by Y users" and "Filter X if Not posted by Y users".

In UI, this would have a checkbox to expand a field marked "Filter by user" which would then have "filter posts by this/these user" and "filter posts NOT by this/these users" as radio buttons, alongside a UI that lets users add users to the list being used for the filter

Removing filter tombstones

Right now, filters leave "filtered" tombstones behind in the UI, and the "drop" option in the UI kind of sucks. It'd be nice if there were better options to remove filtered elements from the UI and API at will.

Many people just get rid of the tombstones with CSS right now.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.