Showing revision #173a5557 of page raddit-app/roadmap


Roadmap

Here is a partial list of planned features, as well as some notes.

Delete the website

In progress

Rename translation keys.

The current style results in many duplicates that could be avoided. For instance, user_form.username, login_form.username and forum_moderators.username all have the same translation.

A better approach would be the one from Symfony's best practices:

Keys should always describe their purpose and not their location. For example, if a form has a field with the label "Username", then a nice key would be label.username, not edit_form.label.username.

Implement strikethrough (done)

  • There are various strikethrough (~~text goes here~~) extensions [1], [2] for the league/commonmark library that Raddit uses to parse Markdown, but neither have been updated for newer versions of the library. We would have to fork either one of these extensions and maintain it ourselves.

  • Another approach would be to configure HTMLPurifier to allow <del> tags, but AFAIK this would require reconfiguring the entire list of allowed tags, which is a pain. It would also require disabling the CommonMark library's HTML escaping, potentially altering the formatting of existing posts.

  • Strikethrough is not offical Markdown/CommonMark syntax, while HTML is explicitly supported, so in the interest of cross-compatibility and open standards, using <del> tags would be better. However, this is a pedantic and technical argument that sacrifices user experience for the sake of purism, so we should probably go with the first.

Mod tools

  • Per-forum user bans (Done)
  • Global user bans
  • Banning of phrases
  • Ability to preapprove some contributions under certain conditions (e.g. an ongoing brigade from Tor users would lead to posts from all Tor users being sent to a moderation queue)

Some algorithm that marks users as trusted

Example use would be the ability to circumvent IP bans on their accounts.


Source code

Here is a partial list of planned features, as well as some notes.

## Delete the website

In progress

## Rename translation keys.

The current style results in many duplicates that could be avoided. For instance, `user_form.username`, `login_form.username` and `forum_moderators.username` all have the same translation.

A better approach would be the one from [Symfony's best practices](https://symfony.com/doc/current/best_practices/i18n.html):

> Keys should always describe their purpose and not their location. For example, if a form has a field with the label "Username", then a nice key would be label.username, not edit_form.label.username.

## ~~Implement strikethrough~~ (done)

* There are various strikethrough (`~~text goes here~~`) extensions [\[1\]](https://packagist.org/packages/uafrica/commonmark-ext), [\[2\]](https://packagist.org/packages/onemorething/commonmark-strikethrough-extension) for the `league/commonmark` library that Raddit uses to parse Markdown, but neither have been updated for newer versions of the library. We would have to fork either one of these extensions and maintain it ourselves.

* Another approach would be to configure HTMLPurifier to allow `<del>` tags, but AFAIK this would require reconfiguring the entire list of allowed tags, which is a pain. It would also require disabling the CommonMark library's HTML escaping, potentially altering the formatting of existing posts.

* Strikethrough is not offical Markdown/CommonMark syntax, while HTML is explicitly supported, so in the interest of cross-compatibility and open standards, using `<del>` tags would be better. However, this is a pedantic and technical argument that sacrifices user experience for the sake of purism, so we should probably go with the first.

## Mod tools

* ~~Per-forum user bans~~ (Done)
* Global user bans
* Banning of phrases
* Ability to preapprove some contributions under certain conditions (e.g. an ongoing brigade from Tor users would lead to posts from all Tor users being sent to a moderation queue)

## Some algorithm that marks users as trusted

Example use would be the ability to circumvent IP bans on their accounts.