## Summer of Code 2022

## About the programme

Check the programme page to learn more about the programme and on how to apply.

GNU social is a social communication software used in federated social networks. It is widely supported and has a large userbase.

If you would like to know how is it like to be a GSoC student at GNU social, read this blog post!

## Summer Stipend

We no longer participate in Google Summer of Code since 2021. In 2020 we've had a successful student supported by The Freaks Club, you can reach thndrbvr and try your luck, or look for another sponsor. Otherwise, there will be no stipend.

## Ideas

Below is a list of ideas you can work on this Summer at GNU social. You should pick one (or mix a couple) of them and talk on IRC about it. The community will help you understanding what has to be done so you can put a good proposal together.

### Improve GNU social v3 form handling

Description: Our current forms have their controller embedded in the UI construction.

Outcomes: Processing on dedicated controller, splitting logic from UI.

Skills required: PHP

Skills preferred: Twig

Mentors: Hugo Sales, Eliseu Amaro

Difficulty: Hard

Workload: 350h

### XMPP Plugin

Description: - Add XMPP Notifications queue; - Add reply to note via XMPP; - and Add XMPP chat.

Outcomes: This would be a port of the v2 XMPP plugin with improved functionality.

Skills required: PHP, XMPP

Mentors: Diogo Cordeiro, Alexey Sorokin, Joshua Judson Rosen

Difficulty: Hard

Workload: 350h

### Integrate GS cache into Symfony and Configurable Autoloader

Description: We have a custom cache system which is not understood by Symfony. Improve our autoloader so it can be configurable instead of just loading everything.

Outcomes: Symfony profiler can give useful information concerning cache. Decide which plugins should be loaded on runtime; Replace components with local ones; Replace templates with local ones.

Skills required: PHP

Mentors: Hugo Sales, Diogo Cordeiro

Difficulty: Hard

Workload: 350h

### Old school image manipulation without JS

Description: Pure HTML + CSS solutions for Image-related manipulation

Outcomes: Provide an easy Twig macro interface for image manipulation, this includes: cropping images without requiring client side JS; adding annotations to images; and a plugin to have a XMP interface background animaton using SVGs.

Skills required: CSS2.2, PHP

Skills preferred: Twig

Mentors: Eliseu Amaro

Difficulty: Medium

Workload: 350h

### Bring back GNU social v2 themes

Description: Restore that nostalgic and old-fashioned UI.

Outcomes: Have a heartwarmed community finding you wholesome.

Skills required: Semantic HTML, CSS2.2, Orca

Mentors: Eliseu Amaro

Difficulty: Medium

Workload: 350h

### Reliability Engineering

Description: Create unit tests for components and plugins.

Outcomes: Review the whole unfully tested codebase.

Skills required: PHP, PHPUnit

Mentors: Hugo Sales, Diogo Cordeiro, Eliseu Amaro

Difficulty: Medium

Workload: 350h

### Bring back LinkRedirectPlugin, URLShortnerPlugin, HappeningsPlugin, PollPlugin, and SMSPlugin

Description: Restore these functionalities that were available in v2.

Outcomes: The user can set a url shortner, create events, and create polls.

Skills required: PHP, CSS2.2, HTML

Mentors: Diogo Cordeiro, Eliseu Amaro

Difficulty: Medium

Workload: 350h