Last updated by hypertext200 on Wed, 2022-05-04 16:02
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?
- Drupal 10 is here! There is TONS work to be done!
- Help out with any of the strategic initiatives? https://www.drupal.org/about/core/strategic-initiatives
- Have a module you wish was ready for Drupal 10? PHP 8.1?
- Maintain a module and need help taking it to the next level?
- Have you ever said "Drupal can't do that?"
- Tasks from previous years/organizations are listed at legacy summer of code websites.
- Projects from previous Drupal GSoC: 2020,2019, 2018, 2017, 2016, 2015, 2014, 2012, 2011, 2010, 2009, 2008, 2007, 2006, 2005
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.
-
Assist in getting the concept of contribution credit in Gitlab (https://gitlab.com/gitlab-org/gitlab/-/issues/293749)
-
Assist in "Using GitLab CI instead of Drupal CI" (https://www.drupal.org/project/infrastructure/issues/3261803)
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)
-
we can get a demo on the latest state of this change in Gitlab
-
Contact has been made with Gitlab to ask for next steps
-
At least 1 blocker has been resolved (collaborative)
-
At least 1 urgent issue has been resolved (collaborative)
-
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 website: https://www.drupal.org/project/bpmn_io
- Project documentation (WIP): https://eca.docs.lakedrops.com/
- BPMN.iO website: https://bpmn.io/toolkit/bpmn-js/
- BPMN.iO forum: https://forum.bpmn.io/
- BPMN.iO source:
=================================
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:
- Introduction to the Payment Request API
- Demo shop supports Payment Request API
- Apple Pay supports Payment Request API
- W3C Payment Request API specification
=================================
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.