Google Summer of Code 2022 - Task Organization Wiki

Events happening in the community are now at Drupal community events on www.drupal.org.

Check our update and add projects if you can think of more! Or add your name as mentor to the existing ones.

The vision of the Drupal Association is to establish the community-built Drupal software as the leading platform for the Web and how? Well, by uniting a global open source community to build, secure, and promote Drupal. It is in clear that in order to achieve this ambitious goal, we constantly need to challenge ourselves and others and grow our community with fresh bright minds. Google Summer of Code has historically been a great source of finding these talents and are an amazing example of our more internal tagline -> Come for the code, stay for the community.

We would love to have +- 10 students, focussing on the main challenges that Drupal has today in order to stay a top of class Digital Experience Platform. We would consider it a success if we find students that want to tackle these challenges with us together. These strategic initiatives can be found at https://www.drupal.org/about/core/strategic-initiatives. It would be successful if we could make progress in these initiatives with motivated students that would stay after the program and maybe also see opportunities for them to find a way to keep tackling these problems in a professional setting (eg, their own business or in a company). This both helps the students, the economy and the Drupal project mission & vision


NOTE: Please preview this wiki before submitting the edit form. Some edits seem to break the wiki, so you MUST click on preview before hitting SAVE.

Welcome to Drupal's wiki organizing project ideas for Google's Summer of Code 2022. Please utilize this wiki to document project ideas and list yourself as a potential student or mentor. Find us on Slack at #drupal-google if you want to chat.

Edit this wiki and add your project ideas. If you want to mentor a task, add your name. If you DON'T want to be a mentor, leave the field blank as other mentors might be interested if a project is selected.

How to think of tasks?

Guidelines

Anyone with a drupal.org account is allowed to post ideas into this wiki. Even if the idea is basic or not complete, please add whatever you have. Additional mentors are available if project idea is accepted. Students are encouraged to contact the project author via their drupal.org contact page.

Information for Students

Read the GSoC Students Guide to get started.

Information for Mentors

GSoC Mentor Guide is best place to learn from a Google contest point of view. Feel free to comment in this group with any questions.

Copy/paste the template below to bottom of content in this wiki. Enter your idea and be careful with revisions as this may be a popular node to edit.

=================================

Project Name: Automatic Updates

Project Mentors: hestenet / Nick_vh / heshanlk

Project Difficulty: INTERMEDIATE/DIFFICULT

Project Skills/Prerequisite: Interest in encryption & security, PHP, Gitlab, Composer

Project Description: The goal is to implement a secure system for automatically installing updates in Drupal, lowering the total cost of ownership of maintaining a Drupal site, improving the security of Drupal sites in the wild, and lowering the barrier to entry to using Drupal. More info can be found at https://www.drupal.org/project/ideas/issues/2940731

The project has 4 main stages of helping out 

  • The 8.x-2.x branch of the Automatic Updates Contrib project. This work will be ported to Drupal core directly. Issues to be worked on can be found in the issue queue for 8.x-2.x

  • The Github PHP-TUF library: this will ensure updates are correctly signed

  • A Composer plugin to integrate PHP-TUF signing with Composer. This depends on drupal.org's packaging pipeline and Composer facade supporting PHP-TUF signing, which is being built under the supervision of the DA.

  • The Github Composer Stager library: this library will enable Drupal core to stage updates before they are applied

Expected Size of project: 350 hours

Project Goal: This project is about helping move 1 of these stages further and accelerating this initiative. The final deliverable is a proof of concept automated update using end-to-end libraries as  described above while updating these libraries to work with the latest standards. Another final deliverable is documenting this journey and making sure it is clear for other contributors how they can help.

Project Name: Decoupled menu's for Drupal

Project Mentors: baddysonja / nod_ / brianperry

Project Difficulty: INTERMEDIATE/DIFFICULT

Project Skills/Prerequisite: React / PHP / Symfony

Project Description: The decoupled menu initiative is in high need of getting a proof of concept up and running to assess the current stage of the initiative but also by providing assistance in reviewing patches. The challenge in this Google of Summer project is tho combine 2 open source communities (Drupal & React) and see how they would fit together. Practically there are 2 use cases to consider that need to be worked out.

  • A menu that is global and static That is, it will not change from page to page (or screen to screen a native app for example)

  • A menu(s) that changes from page to page For example, attach "Content Moderator Shortcuts" menu to "moderator" role

The student will be helping to identify the current issues in achieving these 2 use cases and help move this forward by means of a demo, by means of creating "Merge Requests" but also by validating work that others have done and learn to collaborate with others asynchronously. Perfect for a student that is fluent or very interested in Javascript & PHP. More information can be found at https://www.drupal.org/project/decoupled_menus_initiative

Expected Size of project: 350 hours

Project Goal: Creation of a reusable latest state of the art demo. Identify the top 10 blocking issues and resolve those collaborative with the Drupal community.

Project Name: Assist in making the top 100 modules Drupal 10 ready

Project Mentors: Gábor Hojtsy, Vishal

Project Difficulty: INTERMEDIATE/DIFFICULT

Project Skills/Prerequisite: PHP, Drupal, Symfony

Project Description: Advance the project goal of making Drupal core more ready to release Drupal 10. There is a long list of issues, going from easy to moderate to hard that a student is easily able to get their challenge from.

https://www.drupal.org/project/issues/drupal?version=10.0.x-dev

Expected Size of project: 350 hours

Project Goal: The project is helping Drupal 10 advance forward. This project is successful is 10 easy issues  are resolved, 5 moderate ones are resolved and 1 hard one.

Project Name: Gitlab Acceleration

Project Mentors: Hestenet / Nick_vh

Project Difficulty: INTERMEDIATE/DIFFICULT

Project Skills/Prerequisite: Ruby, Gitlab, CI/CI & Devops thinking

Project Description: Drupal.org is moving its collaboration capabilities towards a self-hosted Gitlab instance. There are however missing pieces in the puzzle and therefor we could use some help. There are 2 options here to help out. Multiple students could work in a team on this project.

It is of strategic importance that we close the gap between the 2 open source communities of both Drupal and Gitlab and both communities have endorsed that they would like to see this happen. We are seeking a student who is familiar with Ruby and would love to learn what contribution credit is and why it is so important that it needs to be integrated into Gitlab so that Drupal.org can use this natively in the future, but not only Drupal.org - everybody that uses Gitlab all over the world!

Expected Size of project: 350 hours

Project Goal: This project is successful if (per student)

  1. we can get a demo on the latest state of this change in Gitlab

  2. Contact has been made with Gitlab to ask for next steps

  3. At least 1 blocker has been resolved (collaborative)

  4. At least 1 urgent issue has been resolved (collaborative)

  5. At least 2 normal issues have been resolved (collaborative)

=================================

Project Name: Social Auth (SSO) Ecosystem Modernization

Project Mentors: bradjones1, wells

Project Difficulty: INTERMEDIATE

Project Skills/Prerequisite: PHP, OAuth2, security mindset, solutions architecture, migration path

Project Length: 350 hours

Project Description: Modernize (i.e., re-architect and largely refactor) the current "Social API" core module and most highly used SSO provider modules.

Project Goal: Social API was originally a GSOC project (done by gvso) but it is showing its age as both the overall technology space (OAuth2 clients and security best practice) and Drupal's core API have matured. The goal would be to modernize the API so as to better integrate with client libraries (e.g., those from League of Extraordinary Packages) and make it easier for end-users to implement their own, by leveraging core OAuth2 libraries. The design should also make it "easy" to properly implement OAuth2 according to current best practice. In addition, the core API should provide sensible hookpoints/events for extension.

Project Resources: TBD

=================================

Project Name: PHPStan Drupal/PHP Static Analysis Improvements

Project Mentors: mglaman

Project Difficulty: INTERMEDIATE/DIFFICULT

Project Skills/Prerequisite: PHP / Object Oriented & Data Typing interests

Project Description:
PHPStan focuses on finding errors in your code without actually running it. It catches whole classes of bugs even before you write tests for the code. It moves PHP closer to compiled languages in the sense that the correctness of each line of the code can be checked before you run the actual line. Drupal PHPstan takes this a level further and does static analysis of your Drupal code (https://github.com/mglaman/phpstan-drupal)

The student would be responsible for solving bugs in the issue queue of phpstan-drupal (40 at the moment) and help the maintainer add static analysis features. In more depth this means ensure that dynamic return types are validated and analysed for all Drupal code.

Expected Size of project: 350 hours

Project Goal: This project is successful if we tackle 30 open drupal-phpstan issues and add the requested feature as described above. In addition we would love to solve at least 10 phpstan issues itself as well to show the collaboration between the 2 projects.

=================================

Project Name: Drupal CSS Modernization Initiative

Project Mentors: mherchel

Project Difficulty: INTERMEDIATE

Project Skills/Prerequisite: modern CSS, JavaScript, HTML

Project Description:
With IE finally being removed from Drupal core (#3252084: [meta] Remove support for IE11), we finally get a chance to modernize Drupal’s CSS. This will involve using new selectors like is(), :where(), usage of CSS custom properties, CSS Grid, etc.

Expected Size of project: 175 hours

Project Goal: Make Drupal core’s CSS more easily maintainable and robust

Project Resources:
https://www.drupal.org/project/drupal/issues/3254529

=================================

Project Name: farmOS Graphing and Reporting

Project Mentors: paul121, pcambra, mstenta

Project Difficulty: INTERMEDIATE

Project Skills/Prerequisite: PHP, Drupal, JS, interest in agriculture

Project Description: farmOS is an open source agricultural record keeping system that features a robust data model built on top of Drupal. farmOS has come with simple reporting features powered by Drupal Views but with Drupal 9+ there are opportunities to build more advanced reporting and graphing features into farmOS.

Expected Size of project: 175 hours

Project Goal: The goal would be for a student to investigate reporting and graphing tools and develop proof of concept examples that could be used as starting point by others. This work could be expanded to investigate potential contributions to farmOS core which provides generalized features that support custom development on the farmOS platform: the student could explore, identify and contribute ideas (or code!) that supports creating custom reports as well as the ability to create reports in a low-code way via the UI.

There would be opportunity for the student to interact with the farmOS user community as well as our growing community of industry partners via OpenTEAM.

Project Resources:
Project website: https://farmos.org/
farmOS Forum: https://farmos.discourse.group/
Charts module: https://www.drupal.org/project/charts
OpenTEAM: https://openteam.community/

=================================

Project Name: BPMN.iO - improve functionality, usability and user experience

Project Mentors: jurgenhaas

Project Difficulty: INTERMEDIATE/DIFFICULT

Project Skills/Prerequisite: PHP, Drupal, JS

Project Length:350 hours

Project Description: BPMN is a standard notation for modelling business processes.
BPMN.iO is a javascript library to provide an application with a UI for end-users to create and maintain their BPMN models.
The Drupal project bpmn_io integrates that javascript library into Drupal's admin UI as a frontend for the ECA module, the new rules engine for Drupal. This integration should be improved to provide extra functionality such as

  • Make content of drop-down lists context aware, so that only relevant items are displayed
  • Extend UI to provide field descriptions and links to further help resources
  • Implement auto-complete services for fields where this is possible
  • Implement in-place field validation
  • Further improve token browser integration

Project Goal: By increasing functionality and usability of the BPMN.iO library in Drupal we want to significantly improve the UX for end users. We want to achieve this by improving the external javascript library to utilize existing Drupal APIs, so that long-term maintenance remains within the JS library. Overwrites on the Drupal site should be as little as possible.

Project Resources:

=================================

Project Name: Improve Drupal Commerce checkout experience with Payment Request API

Project Mentors: skyredwang

Project Difficulty: INTERMEDIATE

Project Length:350 hours

Project Skills/Prerequisite: Drupal Commerce

Project Description:Implement Payment Request API as a polyfill for Credit Card checkout forms. If the API isn't available on a user's browser, it falls back to Credit Card form.

Project Goal: Payment Request API is a new W3C standard, which let the website use native UI (browser or mobile) for selecting a payment method instead of using a UI built on the web. When the API is available on the customer device, the whole checkout experience would be as simple as clicking one button, all payment methods, billing address, shipping address would be automated by the API.

Project Resources:

=================================

Project Name: Turbo S.P.A.

Project Mentors: Nick_vh/ Bahson

Project Difficulty: INTERMEDIATE/DIFFICULT

Project Skills/Prerequisite: PHP/Javascript/webpack

Project Description: The idea: One of the reasons why I wanted to learn react/vue js was so I could use drupal for the back-end and react for front end to achieve that single page app performance/feeling. But then I thought of creating a javascript library that silently fetches (like ajax) a link’s page content when clicked, and replaces the current’s page content with the one from the fetch response. I achieved this on the first try or the draft application. “But how could I possibly be the first person to think of this!!?” I asked myself, and decided to see if I’m the ‘genius’ I thought I was, :( sadly and fortunately, I was not, and I discovered hotwire: turbo and other implementations by other frameworks like turbo-rails, I tried it, and the performance was great, but needed more tweeks on turbo events and turbo attributes on html structure to play well with Drupal, also some modules like tawk_to don’t play well with turbo, but that can be achieved.

Expected Size of project: 350 hours

Project Goal: Creation of a reusable module for Drupal that converts the Drupal app into a Single page application, making sure pages/forms and links all play as expected.
Project Resources:
https://www.drupal.org/project/turbo_spa
https://turbo.hotwired.dev/

=================================

Project Name: NAME OF MODULE

Project Mentors: d.o user names to open contact

Project Difficulty: INTERMEDIATE/DIFFICULT

Project Length:350 or 175 hours

Project Skills/Prerequisite: STUFF LIKE PHP, SYMFONY, SQL, CMS

Project Description: DESCRIPTION OF PROJECT?/IDEA

Project Goal: WHAT IS PROJECT ACCOMPLISHING AND WHAT WILL BE THE FINAL DELIVERABLE?

Project Resources: This is place for student to find resources/links and direction on how to research the task. Example, is this a specific type of module related to Commerce in Drupal 8? Should the student join any groups on gdo, dig through mailing list archives, or search specific issue queues? If this is a module port, maybe you can list links of previous modules accomplishing similar functionality or structure.

Google Summer of Code

Group organizers

Group notifications

This group offers an RSS feed. Or subscribe to these personalized, sitewide feeds: