Google Summer of Code Project Ideas 2022

Ideas for GSoC student projects for Plone in 2022.

These are project ideas proposed for Plone's participation in Google Summer of Code 2022. Student interested in working on these are encouraged to apply for the program.

Note, most projects do not require the candidate to know Plone already, but we do expect applicants to have started to learn about Plone before applying. The specific technologies required for each project are listed in the details for the idea.

Prospective students should follow our ideas for getting started before writing up their proposal:

As a GSoC applicant, please direct your questions to the community forum. Do not use any other contact method, as doing so may harm your chances of acceptance into the program by demonstrating your unwillingness to follow instructions.

Bulk editing

Plone should offer content editors the possibility to change data or perform actions for multiple content items at once. Therefor editors should be able to create a selection of affected content items based on a global search with filter options. It should be possible to adjust common metadata and field information, perform various actions like workflow change, copy or move to a new location and change the underlying content type. Editors should be guided through the process in a multi step dialog, depending on the performed action. A confirmation with preview of the adjusted data is mandatory. It is important to take the user’s permissions into account, to only allow changes and actions on the content items the current user is allowed to.

This new feature should be implemented for Plone Classic with a clean API and usage of Plone’s RESTful API to allow adaption for Plone’s new React-based frontend Volto.

Skills: Python, Plone

Possible mentor: Thomas Massmann

Expected size of project: 350 hours

Difficulty : hard

Add WebAuthn 2 support for Plone

WebAuthn would allow to support passwordless authentication to Plone using either external hardware keys like a Yubi key or using biometric methods build-in into our own devices like Face ID or Touch ID. Almost all modern browsers support the W3C standard WebAuthn. There are variations on the level of support for build-in biometric methods. On Mac, you can use Touch ID with Chrome and Safari, but not with Firefox. On iOS, you can use Face ID across browsers.

Skills: Python, Plone

Possible mentor: Andreas Jung

Detailed proposal

Expected size of project: 350 hours

Difficulty : hard

Recycle bin

Implement a new delete action which moves contents to a recycle bin, so that users can restore deleted items if needed.

Skills: Python, Plone

Possible mentors: T. Kim Nguyen, Mike Metcalfe

Expected size of project: 350 hours

Difficulty : hard

Create a new Volto theme

Implement a new generic and reusable theme for Volto.

Note: Volto is the React-based UI built on top of the Plone REST API.

Skills: React, CSS, Plone

Possible mentor: T. Kim Nguyen

Expected size of project: 350 hours

Difficulty : medium

Create a new Plone classic theme

Implement a new generic and reusable theme for Plone classic.

Note: Plone classic theming is done by creating a Python package containing CSS and Jinga2 templates.

Skills: Python, templating, CSS, Plone

Possible mentor: T. Kim Nguyen

Expected size of project: 350 hours

Difficulty : medium

Export and import really easy for mortals

Allow to export all or a subset of contents from one Plone site and import them back in another one.

Skills: Python, Plone

Possible mentors: T. Kim Nguyen, Mike Metcalfe

Expected size of project: 350 hours

Difficulty : hard

Undo Control Panel

The undo control panel is currently hidden in the Zope Management Interface (ZMI). The idea here is to add a new “undo control panel” that lists all the entries of the ZMI listing and make it filterable by user/date/path.

Skills: Python, React, Plone

Possible mentor: Rob Gietema

Expected size of project: 175 hours

Difficulty : medium

Locking Control Panel

The Zope Management Interface (ZMI) provides a view to search for locks and release locks on objects under "Control_Panel/DavLocks/manage_workspace". This is a useful feature that we could expose via restapi and Volto (as control panel).

Skills: Python, React, Plone

Possible mentor: Rob Gietema

Expected size of project: 175 hours

Difficulty : medium

Redirector Control Panel

The plone.app.redirector packages knows where your content used to be and can bring you to its new location when content moves. For Volto we would like to have a control panel where we can manage these redirects.

Skills: Python, React, Plone

Possible mentor: Rob Gietema

Expected size of project: 175 hours

Difficulty : medium

Relations Control Panel

In the classic Plone interface we have a control panel to show relations. The goal of this project is to implement this functionality in Volto.

Skills: Python, React, Plone

Possible mentor: Rob Gietema

Expected size of project: 350 hours

Difficulty : medium

Workflow Manager

One of Plone’s strongest selling points is it’s workflow. The backend provides a well thought out and implemented workflow system. The goal of this project is to implement a front-end to manage these workflows. The idea is that you can drag and drop workflow schema’s and edit the transitions and permissions.

Skills: Python, React, Plone

Possible mentors: Rob Gietema

Expected size of project: 350 hours

Difficulty : hard

Content Rules

The classic Plone interface provides functionality to add and edit content rules. Examples of these are “Send an e-mail when this item is modified”. This functionality is not yet implemented in Volto. The goal of this project is to implement this functionality and at the same time improve the UX.

Skills: Python, React, Plone

Possible mentor: Rob Gietema

Expected size of project: 350 hours

Difficulty : hard

User Management

Volto has basic user management implemented for Plone. You can create users and groups and assign roles but there are a lot of feature missing in the frontend like editing users and groups, assigning users to groups etc.

The goal of this project is to implement the missing features and redo the management screens.

Skills: React, Plone

Possible mentors: Rob Gietema

Expected size of the project: 175 hours

Difficulty: medium