1 Summer of Code 2016 Ideas List
Erlend Sogge Heggen edited this page 2017-02-17 10:44:15 -06:00

Introduction

Discourse is a 100% open source discussion platform built for the next decade of the Internet. Our software works as a mailing list, a discussion forum, and a long-form chat room. Read more about our project at: meta.discourse.org

Important Reading for Prospective Student Applicants:

GSoC Project Ideas

Webhook for Discourse events

A publish/subscribe mechanism, where Discourse publishes events like topic/post create, close, archive etc. Pluggable hooks can subscribe to these events.

Specs

And a horde of pluggable hooks can subscribe to these events and abide by the condition zero of WTFPL.

  1. A single page at "/admin/webhook" for admins to manage their webhooks
  2. Admins will need to provide a Payload URL which the webhook service will POST the event payload to.
  3. Webhook will POST all events to the Payload URL by default. We should allow admins to select individual events which they require.
  4. A Webhook can be activated and deactivated.
  5. Logs of the POST request as well as the response should be kept and made visible for admins.

Events:

user_{registered,activated} topic_created reply_posted post_liked flag_raised message_sent topic_{pinned unpinned archived closed invisible-d} auto_close_set trust_level_changed

Further Reading

Canned Replies

A simple way for moderators to insert pre-written responses to common inquiries. Reduces repetitive actions, especially in support-centric communities.

Specs

  • Add a button & UX for message insertion (see Poll UI Plugin)
  • Backend interface for canned messages. (see /admin/customize/email_templates)
  • Activated per-category.
  • Must work on mobile.

Reference pic from GitHub canned responses:

Further Reading

See who's writing

See who - apart from yourself - is using the "Reply" dialog box to write a reply to a particular topic. Targeted primarily at private group messages.

Specs

  • When writing a reply, list other users currently writing a reply, if any.
  • At more than 2 simultaneous users it should say "several people" instead of listing names.
  • Check for continued activity.

Mockup:

Further Reading

Convert GIFs to MP4/WebP

GIFs can be extremely bandwidth intensive. This could be mitigated by building a lightweight service that converts GIFs to the .mp4 or .webp (for supported browsers) format.

Specs

  • Grab all .gif links and process them.
  • Convert GIF to MP4
  • Put the MP4 file in front of the GIF in the rendered post.

Further Reading

Manually curated topic summaries

Some topics, like a call-for-bug-reports or a new Howto, will receive a lot of replies that go stale shortly thereafter because the appropriate fixes/edits were applied as a response. When closing or marking as solved doesn't make sense, the best solution to date is to delete these replies. Topic summaries offer a less destructive solution.

Specs

  1. Click moderator wrench
  2. Click select posts and select the ones you want to show in the summary
  3. Click "Create Summary"

This forces a summarised view of this topic by default. You get pretty much the exact same effect as you get from deleting posts, except the "public record" of helpful replies is maintained.

To view all replies, you simply click the "Show all posts" button.

  • Feature is only accessible to Trust Level N and above.
  • Enabled per-category

Further Reading

Topic list tabs for user-customizeable saved filters

On some forums with a large variety of content, users will be most interested in topics that fall into a subset of the categories or tags available. When this becomes the rule, rather than the exception, forum admins can configure the home page to be the category listing rather than the /latest page. But then users must choose which door to go down - and they may be interested in seeing a listing from multiple categories at once.

Specs

https://meta.discourse.org/t/topic-list-tabs-for-user-customizeable-saved-filters/40953

Improving Discourse Translator++ Plugin

Specs

  • Allow admin to set quota and disable translation once quota has been exceeded.
  • Google Translate Adapter
  • Disable translation for private messages
  • Make translations editable by mods
  • Detect language so that we don't show the translation button when it is the same locale.
  • Translated from #{language} should be localized too.
  • Address remaining errors in sidekiq

Further Reading

Improve Discourse Quick Messages Plugin

Specs

To do

  • Allow the user to have more than one quick message compose open at once.

  • Improve message previews in the messages menu:

image

  • Improve minimized quick message compose by adding username(s) of participant(s):

image

  • Add a "Mark All Read" button to the messages menu that marks all your messages read.

  • Improve the quick message compose experience so that:

  1. Text never overlaps with the buttons
  2. The compose window increases in size instead of being scrollable.
  3. A user can send a 'Like' as a response (perhaps).
  • Performance. Make the posting of messages even quicker.

Further Reading

Improve Top Ratings Plugin

Specs

  1. Prevent a user from posting in a ratings topic more than once. Currently, users cannot rate in a ratings topic more than once.

  2. Created a sorted topic list (highest to lowest) of all topics within a ratings category or with the 'rating'. Perhaps use Bayseian estimation as discussed in the code comments.

  3. Add translations for the category.for_ratings and composer.your_rating text.

  4. Allow the user to select the tag(s) they wish to use to designate ratings topics in the admin config.

  5. Allow the user to choose the number of total stars in a rating.

  6. Allow the user to change the rating item image (i.e. use something other than stars).

Further Reading

Improve Babble (chat) Plugin

Specs

  • Allow flagging / editing / deleting of post
  • Advanced add 'x is typing...'
  • Allow for file attachments
  • Send notification on at-mention
  • Editing my last post

Further Reading