Information for Interested GSoC Students 2022

:wave: Hello everyone, I am Avi. Computer science engineering student and front-end intern working in the react framework. :atom_symbol:

I wish to contribute to the Plone community under GSoC and beyond. My motivation for contributing to open source is to explore different codebases/stacks and write more readable and structured code.

Have cloned the Volto project. Now going through v5 training documentation. :slightly_smiling_face:


:wave: Hi again, I have been researching the Plone organization, especially Volto. My goal is to start contributing to the Volto project. Firstly, I want to ask the community members whether I am on the right learning path? So far, I have gone through the following:

  1. Training
    1. React
    2. Volto
  2. Overview on LESS (Beginner level)
  3. Talks (Volto specific)
    1. Ferrara (2019)
    2. Tokyo (2018)
1 Like

I have some doubts :thinking: as follows:-

  1. What is the difference between plone.api (GitHub - plone/plone.api: The Plone API) & plone.restapi (GitHub - plone/plone.restapi: RESTful hypermedia API for Plone.)?
  2. Not able to understand the Hot Module Reload (HMR) functionality. What type of changes does it support? And when do I need to restart the server (manually)?
  3. Do I need to know about docker commands too? Or can I just run the commands in an abstracted way?

I also have some feedback to make the React training documentation even more beginner-friendly. Being a newbie to Open Source, I am not sure how to present feedback. So, sharing this google doc.

Apologies if the post is too long. :sweat_smile:

1 Like

Hi @avimishra18 – thanks for doing this learning already!

The Plone API is a layer that we introduced in the code to make it easier for developers to do things using only one accepted way. In the past, Plone has often had more than one way to do something. The Plone API is intended to expose the one "best" way to do those things.

The REST API is the usual JSON mechanism for allowing external systems to communicate with Plone.

1 Like

I think one of our Volto specialists will have to chime in. @sneridagh @tiberiuichim ?

I'm not sure what you mean by "in an abstracted way". Could you point us to the specific documentation where there are Docker commands you refer to?

Docker is probably the easiest way to get things set up, but if you are running on, say, a recent Ubuntu, you can probably do everything natively.

1 Like

Avi, this is wonderful feedback. @stevepiercy @ksuess maybe can have a look?

1 Like

Your feedback is more than welcome! Last year we introduced a link on every training page for opening an issue. Opening an issue with a pointer to the training and the page of the training helps to address the trainers that authored the text.
Thanks in advance!


You may also want to check the Plone video channel. Here are the Plone Conference talks 2021:

1 Like

@avimishra18 Answer to your 2nd question:
Volto uses Razzle - a library which has out of the box features to build server rendered applications. Razzle has built-in HMR through webpack. Though we can customize it through razzle.config.js.

By default, it looks for folders inside src/** as modules and server reloads on changes. For backend you can use any of the provided buildout, or new pip based installation of Plone 6.

1 Like

I have just a brief idea about docker containers and images. I wanted to ask how much knowledge of docker is required for Volto? :face_with_raised_eyebrow:

These are some of the commands in the Volto/ basically to run Plone (backend). Reading about the CLI commands with their options from Docker documentation.

  • docker-compose up
  • docker run -it --rm --name=plone -p 8080:8080 -e SITE=Plone -e ADDONS="plone.restapi==8.18.0 plone.volto==3.1.0a7" -e PROFILES="plone.volto:default-homepage" plone/plone-backend
  • docker run -it --rm --name=volto --link plone -p 3000:3000 plone/volto
  • docker run -it --rm --name=volto --link plone -e ADDONS="volto-testaddon volto-slate:asDefault" -p 3000:3000 plone/volto

I am using M1 Macbook Air :apple:

So, should I explore more on Razzle?

Ah, so does it means whenever I make changes in the theme/** folder, I need to restart the server.

I am using the Bootstrap the Plone API backend command i.e. docker run -it --rm --name=plone -p 8080:8080 -e SITE=Plone -e ADDONS="plone.restapi==8.18.0 plone.volto==3.1.0a7" -e PROFILES="plone.volto:default-homepage" plone/plone-backend

Please search for existing issues in the Plone Training GitHub repository. If the issue does not exist, then create one for each item in your Google Doc.

1 Like

I’m also using an M1 (MacBook Air and iMac).

I ran into an issue: the front end Docker image I’ve been trying to use does not work on the ARM architecture (M1).

Normally you shouldn’t need much in depth knowledge of Docker. Running the commands as shown should be sufficient.

1 Like

So, should I explore more on Razzle?

Only if you're curious about its internals. As said its only used for building the base of any SSR app.

1 Like

Thank you, everyone, for your quick support and feedback. :star_struck: It is encouraging & motivating. :grinning_face_with_smiling_eyes:

I searched for the issues but didn't find any overlaps with what I mentioned in my doc. So, I will create issues and fix them.

Open Issues

Can be fixed by me (if approved by the community)


Can be closed (as documentation is already updated)

  1. React 14.3 Excercise: arguments for connect are not explained #434
  2. React: initial generated code differs #421

How to start contribution?

Being new to the Plone community, I am not aware of the development flow. :upside_down_face: So, is this how I make a pull request in plone/training? :thinking:

  1. fork plone/training
  2. clone it locally
  3. commit & push to the main branch of fork
  4. Finally, create Pull Request from <github-user>/training#master to plone/training#master

Further wanted to ask: (For Training project)

  1. Are there any tests or CI/CD processes that I need to keep in mind?
  2. Some linting/formatting tools that are needed/preferred to be installed for local setup?
  3. Conventions apart from those mentioned in JavaScript styleguide?

Find all infos on Contributing to Plone Trainings Documentation — Plone Training 2022 documentation

1 Like

Do I need to sign the agreement for contributing to the Training too? :sweat_smile: It's a little confusing as the agreement page states that's only for Core Plone/Zope projects.