Table of Contents
- Introduction
- GSoC Project Ideas
- Webhook for Discourse events
- Canned Replies
- See who's writing
- Convert GIFs to MP4/WebP
- Manually curated topic summaries
- Topic list tabs for user-customizeable saved filters
- Improving Discourse Translator++ Plugin
- Improve Discourse Quick Messages Plugin
- Improve Top Ratings Plugin
- Improve Babble (chat) Plugin
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:
- Keep reading this page to learn about our project ideas for this year.
- Learn how to start coding for Discourse by reading our comprehensive contributors guide.
- Read the Discourse Application Guide for GSoC today, and be ready when it's time to apply.
- Read Discourse as your first Rails app.
- Try to complete the Beginner's Guide to Creating Discourse Plugins.
- Ask questions about developing for Discourse on meta.discourse.org, our project discussion site. Spend time browsing the content there, especially the "dev" category.
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.
- A single page at "/admin/webhook" for admins to manage their webhooks
- Admins will need to provide a Payload URL which the webhook service will POST the event payload to.
- Webhook will POST all events to the Payload URL by default. We should allow admins to select individual events which they require.
- A Webhook can be activated and deactivated.
- 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
- https://meta.discourse.org/t/webhook-for-discourse-events/39808 (spec discussion)
- https://meta.discourse.org/t/event-hooks-for-discourse/8296 (unofficial feature discussion)
- https://github.com/loomio/loomio_webhooks (reference implementation)
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
- https://meta.discourse.org/t/canned-responses-to-help-moderators-encourage-civilized-discourse/16680 (unofficial feature discussion)
- https://github.com/pfaffman/discourse-plugin-template-manager (an earlier first-attempt)
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
- https://meta.discourse.org/t/see-who-all-are-writing-replies-to-a-topic/38884/ (unofficial feature discussion)
- https://meta.discourse.org/t/presence-features-for-forums/12 (possible stretch goals)
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
- https://meta.discourse.org/t/plugin-idea-image-optimization-with-webp/36470/2?u=erlend_sh (unofficial feature discussion)
- http://blog.imgur.com/2014/10/09/introducing-gifv/ (prior art)
- http://cloudinary.com/blog/reduce_size_of_animated_gifs_automatically_convert_to_webm_and_mp4 (prior art)
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
- Click moderator wrench
- Click select posts and select the ones you want to show in the summary
- 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
- https://meta.discourse.org/t/plugin-manually-curated-topic-summaries/39477 (spec)
- https://meta.discourse.org/t/plugin-idea-thread-updates/7973 (related feature discussion)
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
- https://meta.discourse.org/t/discourse-translator/32630 (plugin discussion)
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:
- Improve minimized quick message compose by adding username(s) of participant(s):
-
Add a "Mark All Read" button to the messages menu that marks all your messages read.
-
Improve the quick message compose experience so that:
- Text never overlaps with the buttons
- The compose window increases in size instead of being scrollable.
- A user can send a 'Like' as a response (perhaps).
- Performance. Make the posting of messages even quicker.
Further Reading
- https://meta.discourse.org/t/quick-messages-plugin/39188 (plugin discussion)
Improve Top Ratings Plugin
Specs
-
Prevent a user from posting in a ratings topic more than once. Currently, users cannot rate in a ratings topic more than once.
-
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.
-
Add translations for the
category.for_ratings
andcomposer.your_rating
text. -
Allow the user to select the tag(s) they wish to use to designate ratings topics in the admin config.
-
Allow the user to choose the number of total stars in a rating.
-
Allow the user to change the rating item image (i.e. use something other than stars).
Further Reading
- https://meta.discourse.org/t/topic-ratings-plugin/39578 (plugin discussion)
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
- https://meta.discourse.org/t/babble-a-chat-plugin/31753 (plugin discussion)
- https://github.com/gdpelican/babble/issues?q=is%3Aissue+is%3Aopen+label%3A%22GSoC+Friendly%22 (GSoC-friendly issues on GitHub)