Table of Contents
- Introduction
- Summer of Code Project Ideas
- PLUGIN: Integration with OpenCollective
- PLUGIN: Gitter integration
- PLUGIN: Convert GIFs to MP4/WebP
- PLUGIN: Manually curated topic summaries
- PLUGIN: Topic list tabs for user-customizeable saved filters
- Common event system for chatrooms
- Mute user's posts
- "Make your own" with #pr-welcome
- User Data Bundle
- UX Bundle
- Email Bundle
- Search Bundle
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.
Summer of Code Project Ideas
PLUGIN: Integration with OpenCollective
OpenCollective is a service that enables open source projects to receive regular donations from their fans, users or companies that want to sponsor development. Essentially a "Patreon for Open Source". Discourse already has an official plugin for Patreon, so there's already a great example project to learn from.
Specs
- Research OpenCollective API and explore its possibilities
- Integrate OpenCollective with Discourse groups, matching emails
- Grant custom Discourse badge/title to OpenCollective supporters
- Display OpenCollective info in profiles
Stretch goals:
- Could we continuously sync up OpenCollective accounts against a usergroup? (which could have access to VIP categories and things like that).
- Would it be possible to separate supporters into multiple groups, based on the amount they're contributing every month?
Discuss: Open a new topic to start discussing this project!
For a private conversation with mentors, send an email to team@discourse.org.
Further reading
- https://meta.discourse.org/t/discourse-patreon-login/44366
- https://meta.discourse.org/t/is-there-some-sort-of-plugin-for-patreon-contributors/42389
- https://github.com/OpenCollective/opencollective-api
PLUGIN: Gitter integration
Announce new Discourse topics on your Gitter channel. Post to Discourse via Gitter.
Discuss here: https://meta.discourse.org/t/gitter-post-notifications-to-chat-post-transcripts-to-forum/51247
For a private conversation with mentors, send an email to team@discourse.org.
Further reading
- https://meta.discourse.org/t/the-official-discourse-slack-plugin/51412
- https://meta.discourse.org/t/configuring-slack-for-discourse-slack-plugin/52990
PLUGIN: 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.
Discuss here: - https://meta.discourse.org/t/plugin-idea-image-optimization-with-webp/36470/2
For a private conversation with mentors, send an email to team@discourse.org.
Further Reading
- 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)
PLUGIN: 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
Discuss here: https://meta.discourse.org/t/plugin-manually-curated-topic-summaries/39477 (spec)
For a private conversation with mentors, send an email to team@discourse.org.
Further Reading
- https://meta.discourse.org/t/plugin-idea-thread-updates/7973 (related feature discussion)
PLUGIN: 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
Discuss here: https://meta.discourse.org/t/topic-list-tabs-for-user-customizeable-saved-filters/40953
For a private conversation with mentors, send an email to team@discourse.org.
Common event system for chatrooms
Ideally we'd have a set of plugins for various chatrooms, like discourse-hipchat, discourse-slack, etc, that would all expose the same event system.
Then we could do code like DiscourseEvent.trigger(:notify_chat, "some chatroom text") and have it work regardless of your chat software.
This idea needs a proper spec. If you're interested in pursuing this idea, ask @eviltrout on Meta for more information.
Mute user's posts
Discourse already supports muting users, but it will only prevent them from sending you PMs. An extended version of muting would add an option to hide a muted users post from view.
For a private conversation with mentors, send an email to team@discourse.org.
Further reading
- https://meta.discourse.org/t/ability-to-block-or-mute-another-user/6001 Start a new topic to discuss this further.
"Make your own" with #pr-welcome
We have 100+ topics marked with the #pr-welcome tag. Most of these tasks are not big enough on their own to merit a 3 month project, but with a combination of these tasks you'll have a stacked TODO-list in no time.
For a private conversation with mentors, send an email to team@discourse.org.
- Find tasks that match your interests and skill set. Try look for tasks that are related somehow, e.g. tasks that have to do with groups.
- Ask follow-up questions in the topics of the various tasks to get a clear understanding of the problem at hand.
- Collect a bundle of tasks that you'll have a high chance of completing within 3 months.
- Add a few more tasks as stretch goals.
- Not all pr-welcome tasks are properly specced out. Make sure you use your preparation period to ask questions about your selected tasks until each task is properly specified.
Some examples below.
User Data Bundle
Tasks that involve authentication and user data.
- https://meta.discourse.org/t/reddit-oauth-api-support/21939 (good warmup task)
- https://meta.discourse.org/t/how-to-add-stackoverflow-login/54201 (good warmup task)
- https://meta.discourse.org/t/passwordless-signin-via-email-link/57569/5
- https://meta.discourse.org/t/import-github-image-as-profile-image-when-authenticating-with-github/49132
- https://meta.discourse.org/t/api-can-i-authenticate-without-putting-the-key-in-the-url/29425
- https://meta.discourse.org/t/override-profile-background-via-sso/41921
- https://meta.discourse.org/t/tracking-signups-from-referral/56911
For a private conversation with mentors, send an email to team@discourse.org.
UX Bundle
Tasks that involve a lot of user experience work, and will benefit from some prior UX experience as some tasks require further specification.
- https://meta.discourse.org/t/search-bar-disappears-on-ipad-in-long-topics/55583 (good warmup task)
- https://meta.discourse.org/t/warn-staff-when-action-will-override-site-restriction/57521
- https://meta.discourse.org/t/quick-access-to-bookmarks-and-messages-on-user-menu/32787
- https://meta.discourse.org/t/more-informative-onebox-for-forum-categories-and-tags/55455
- https://meta.discourse.org/t/menu-toggle-for-different-reply-modes/58133
For a private conversation with mentors, send an email to team@discourse.org.
Email Bundle
Anything that touches on email.
- https://meta.discourse.org/t/should-always-receive-email-notification-of-pms/51291
- https://meta.discourse.org/t/possibility-to-configure-sitesetting-notification-email-from-env-variable/50087
- https://meta.discourse.org/t/hide-reply-button-in-emails-if-you-dont-have-permission/44211
- https://meta.discourse.org/t/duplicate-mails-when-to-ing-two-email-addresses/45090
For a private conversation with mentors, send an email to team@discourse.org.
Search Bundle
Search all the things.
- https://meta.discourse.org/t/search-via-api-results/14645
- https://meta.discourse.org/t/allow-to-order-search-results-by-the-topic-creation-date/38544
- https://meta.discourse.org/t/feature-request-add-includes-image-to-the-advanced-search-options/54103
- https://meta.discourse.org/t/does-multiple-tag-search-support-and-vs-or/56041
For a private conversation with mentors, send an email to team@discourse.org.