GSoC 2025: Join the Processing Foundation as a Summer of Code Contributor!

Hi everyone!

We’re excited to share that the Processing Foundation will be participating once again as a mentor organization in Google Summer of Code 2025. It will be our 13th year in the program, and we’re looking forward to welcoming new contributors!

By joining the Google Summer of Code program and contributing to Processing, you can make a huge difference in the experience of thousands of people, many of whom are exploring programming for the first time.

Check out the Processing GSoC 2025 project list for a list of project ideas and improvements to Processing, p5.js, and more that you can contribute to.

Google Summer of Code is a global, online program focused on bringing new contributors into open source software development. GSoC Contributors work with an open source organization on a 12+ week programming project under the guidance of mentors.

The program is open to all individuals over the age of 18 who are new to open source development. If you have questions about the project list or the application process, please ask in the replies below. To learn more about GSoC itself, including the timeline, please visit https://summerofcode.withgoogle.com/

Best,
The Processing Foundation Team

cc @sableRaph

5 Likes

Thanks for opening this!, will you please provide processing discord link,
Thank You

Please provide the discord channel link for the same.

Hi @Mamatha1718 and @Sushant_Bansal!

You’re welcome to ask your questions in this thread to learn more about PF, or if you have questions about the project ideas list. We kindly ask that you ask your questions on this Discourse thread rather than over Discord, or reaching out to mentors directly. That way, there can be a good overview of the clarification for all potential contributors in one place!

The post above links to project ideas, including links to the main repositories, so that’s a good place to start as well! Here’s the timeline of GSoC (dates from: Build your future with Google)

And if you’d like to dig further into the open issues on GitHub, here are some help wanted and good first issues in each of the project repositories:

I’d be happy to answer other questions here, too.
Best,
Kit

4 Likes

Hey everyone,

I am excited about the work being done at the Processing Foundation and would love to contribute. As a junior front-end developer skilled in HTML, CSS, JavaScript, and React, as well as a technical writer, I am eager to bring both my coding and documentation skills to the community.

Coming from a region where access to creative coding resources is limited, I truly appreciate the Foundation’s advocacy for inclusivity. The impact of open-source tools like p5.js in lowering barriers to entry is something I deeply value, and I would love to contribute to that mission.

Enhancing the p5.js experience, whether through improving the UI, refining documentation, or helping with interactive learning materials.
Improving project documentation to make it even more accessible for beginners and educators.
Building engaging educational content that lowers the barrier to entry for newcomers, especially in communities where access to creative coding resources is limited.

I have already explored the repositories and have an overview of the use cases. However, I would appreciate more insights and guidance on where my contributions would be most valuable, whether in the codebase, documentation, or community outreach.

Looking forward to collaborating and making creative coding more inclusive.

Thank you.

1 Like

Hi @kit ,Thanks for suggestions and reference files.

I’m interested in contributing to the “Friendly Sketch Embedder for p5.js” project for GSoC 2025, and I have a few questions:
Selection Process: Does the Processing Foundation select contributors mainly based on proposal quality, or are past contributions also heavily considered?
Finding Issues: Most of the help wanted issues in the repositories(p5.js) seem to be taken. How can I find relevant areas to contribute particularly about my project to before submitting my proposal?
Development Approach: Will Friendly Sketch embedder this tool be developed from scratch, or should it reuse existing embedding methods/tools from the p5.js ecosystem?
Challenges & Scope: Are there any current challenges in embedding p5.js sketches that this project aims to solve?
Understanding the Codebase: I’ve started making my first sketches in the p5.js web editor (editor.p5js.org) and have read some documentation—it’s very interesting!
What’s the best way to understand the existing functionality.
But to better understand the codebase, should I continue using the web editor, or would it be better to use VS Code and work locally?

I want to ensure I have a deep understanding of the project before preparing my proposal. Any guidance on where to start would be greatly appreciated!
Thank You
Mamatha

1 Like

Hi @kit
I am trying to run p5.js editor locally through VS code but when i am trying run on port 8000, its not running can you please suggest what’s the issue might be occurring

1 Like

And one more thing can You suggest should I start working directly on the projects or to solve some good first issues ??

1 Like

Hi @Nwakaego, @Mamatha1718 and @Sushant_Bansal, great questions!

For now, I’ll try to answer below, but in the next weeks I will also be updating our documentation for GSoC - so in a way you are already contributing to improving documentation just by being on this thread :slight_smile: !

Question from @Nwakaego: I would appreciate more insights and guidance on where my contributions would be most valuable, whether in the codebase, documentation, or community outreach.

This is an excellent question, and it really depends on which project you’re most interested in. Because we use the all-contributors specification, all types of contribution are equally valued, on and off the codebase. Do you have a sense of which of the projects topics/ideas would be most interesting for you to develop a proposal for?

Question from @Mamatha1718: Selection Process: Does the Processing Foundation select contributors mainly based on proposal quality, or are past contributions also heavily considered?

The proposal itself is very important. We are looking for your creativity and detail in proposing technical work and planning it our before actually doing it. As the “proposal” section in this GSoC Template which we use as a reference suggests: “Explain what algorithms/technologies you intend to use/study (if any). You can also include links to additional details like diagrams, etc., outlining your ideas acting as supplementary information for your proposal outside of this scope.” and “How do you plan to spend your summer? … The project plan and its timeline will form a significant part of the assessment of your application, as well as mid-term and final evaluations.”

Question from @Mamatha1718: Finding Issues: Most of the help wanted issues in the repositories(p5.js) seem to be taken. How can I find relevant areas to contribute particularly about my project to before submitting my proposal?

The past contributions may be on GitHub or outside; both Processing4 and p5.js adopt the all-contributors specification, which means that a contributor is someone who works in any of these areas: Emoji Key ✨ (and Contribution Types) · All Contributors So if you cannot find an issue that is available and helps you write a proposal, you can also think about another form of contribution, like a blog post, tutorial, series of examples, bug reports of accessibility issues, etc!

Question from @Mamatha1718: Development Approach: Will Friendly Sketch embedder this tool be developed from scratch, or should it reuse existing embedding methods/tools from the p5.js ecosystem?

This is a great way to think about the project proposal. If you want to work on this project, one way to go about it is to investigate what existing methods and tools exist (many of them out there!) and then figure out which (and how!) can be meaningfully combined into an embedder tool. This investigation can look like trying out existing tools, maybe even creating open-source examples/tutorials about them (this would certainly count as a contribution!), but not quite yet developing the project itself.

When we were discussing this project, we envisioned some balance of using some of the many tools/methods out there, and building something stand-alone so that it could be really user-friendly and straightforward.

Question from @Mamatha1718: Understanding the Codebase: What’s the best way to understand the existing functionality. But to better understand the codebase, should I continue using the web editor, or would it be better to use VS Code and work locally?

This really depends on the project: In the case of the friendly sketch embedder project, using the p5.js Editor to make some sketches and then trying to embed them using existing tools/methods would be a good way to get familiar with various tools. Use the p5.js reference to explore different functionalities, and also use Examples and Tutorials on the websites to make more complex sketches to see how they work, and if some are more difficult to embed than others.

Question from @Sushant_Bansal: Can you suggest should I start working directly on the projects or to solve some good first issues ?

In the timeline, right now is the time to explore and (soon) to develop proposals. After proposals are submitted, some will be accepted, and then work can begin. So for now, please feel free to try things out and explore (and keep asking questions!), but not work on the projects directly.

We suggest getting familiar with the part of the code and ecosystem more relevant to the project you’d be interested in. Each project lists which codebase it is related to. If you find a good first issue that is relevant to your interests, go ahead and comment your interest!

Please be sure to check out the Contributor Guidelines first, especially:

You should not file a pull request (or start working on code changes) without a corresponding issue or before an issue has been approved for implementation; that is because the proposed fix may not be accepted, need a different approach entirely, or the actual problem is somewhere else. Any pull requests filed before the issue has been approved for fixing will be closed until approval is given to the issue.

This is really important, and I know if can be frustrating to wait for responses, but that is why it may be helpful to keep in mind that, under the all-contributors specification, there are many ways to contribute outside of GitHub, too! A contributor is someone who works in any of these areas: Emoji Key ✨ (and Contribution Types) · All Contributors So if you cannot find an issue that is available and helps you write a proposal, you can also think about another form of contribution, like a blog post, tutorial, series of examples, bug reports of accessibility issues, etc!

Question from @Sushant_Bansal: I am trying to run p5.js editor locally through VS code but when i am trying run on port 8000, its not running can you please suggest what’s the issue might be occurring

When you are facing a technical issue, please also include a little bit of information about where you’re getting stuck - such as, which step in the installation guide you’re struggling with. This way makes it easier for others (or for us!) to help you.

I hope this is helpful and please don’t hesitate to keep asking!
Best,
Kit

2 Likes

Thanks for your reply and now I will start exploring small issues and try to fix it.

1 Like

Hello @kit, Congratulations on your selection as a GSoC’25 mentor organization! I’m Takshit Saini, an undergraduate studying computer science. I am an enthusiastic MERN Stack developer with experience in a variety of frameworks and libraries, including React.js, Next.js, Node.js, Express.js, MongoDB, and Git/GitHub.
I have reviewed the project concepts and would like to contribute to the Processing organization. I’m really excited about two projects:

  1. Friendly p5.js Reference Translation Tasks
  2. User-Friendly Features in the p5.js Editor
    Please let me know which project best suits my skill set and how I can start making a meaningful contribution. IAny guidance on first steps, such as relevant repositories, open issues, or discussions, would be greatly appreciated.

Looking forward to contributing and learning with the Processing community!

Best regards, Takshit Saini

1 Like

I’ve noticed that the p5.js Web Editor currently doesn’t support ES modules (i.e., import/export ), which limits users by forcing them to place all their code in a single ‘sketch.js’ file. This becomes problematic for larger projects, making it harder to maintain and organise code.

@kit Do you think this is something worth exploring? I’d love to contribute to implementing this feature if you think it would benefit the p5.js community.

1 Like

Hello @kit, I am looking to contribute under GSoC, for improving autocompletion on the p5.js Web Editor.

I have a few ideas for enhancing the autocompletion feature in the p5.js Web Editor, and I would appreciate your guidance on their feasibility:

  • Would it be a reasonable proposal to have an dedicated backend which runs an LSP (JavaScript/TypeScript language server) which would provide intelligent completions and other context based on the source code?
  • If not an external server, I can experiment with building an LSP with WASM (WebAssembly) so that the LSP runs directly in the browser.
  • Finally, as an alternative, without using a language server, the autocompletion can still be improved. By performing static code analysis, we can provide completions for user-defined variables and functions.

Kindly guide me on which approach from the above is beneficial for the p5.js Web Editor, so I that I can formulate my proposal for the same.

(I have previously created a similar project dipamsen/p5-editor, which is a stateless web editor for p5.js, based on monaco - the underlying code editor for VSCode. It supports intelligent autocompletion among many more features.)

1 Like

Hi @kit
I’m working on a p5.js embed tool that makes it easy for teachers, artists, and developers to embed p5.js sketches in their websites or blogs. I want to make this as user-friendly as possible for all skill levels—beginners and experts alike.

I see existing code, documentation for embedded-p5.js. Should i learn some more Embedded thing like create a new embedded code or use existing ones to mention in praposal.
My Goal:

  • The tool should generate embed codes that users can copy easily.
  • Options to generate:
  1. <iframe> code (like p5.js Editor’s share button)
  2. <script> code (like p5.js-widget)
  3. (Maybe) Other useful embed methods
    Questions
  4. Should I only generate <iframe> and <script> tags, or should I also include p5.js-widget, Ace Editor, or other embedding options?
  5. Are there other recommended ways to embed p5.js sketches that would be useful for users? Should i learn more.
  6. If I use only <iframe> and <script>, is that enough for a good user experience?
  7. Should I explore creating a new method to embed p5.js more interactively?
  8. If we want to see previous proposals for better understanding, where can we find them?

Using p5.js web editor to copy link to paste in my webpage shows 3 options like Edit, full screen, iframe total code.
This tool focus on 3 options or only use <iframe>

I would like to add all these points in my proposal for better understanding.This tool is designed to be beginner-friendly while still serving advanced users effectively. Looking forward to hearing thoughts and suggestions! :blush:
Thank You.

1 Like

Hi @kit ,
while installing the p5.js editor its coming node 20 version is new for p5.js but i have the new version on my machine . and this is asking for a node 16 version . So ,is there any way we can run on new version ??

1 Like

Hi @Sushant_Bansal, It might be possible to use linting configuration to obtain the required Node.js version if you’ve manually installed development setup.

1 Like

Yeah, I understand so for this i am using NVM

Hello again, everyone! Thanks for the continued lively discussion, new questions, and supporting one another :sunflower: :sun_with_face: Here’s some more clarifications that I hope can be useful to both the original askers, and others who are reading!

:cherry_blossom: Question about Technical Roadblocks (Installation)

In the thread above, @Sushant_Bansal is describing having installation issues; thanks @takshittt for jumping in to support!

Installation can sometimes be challenging because each piece of software can require multiple other pieces of software with specific versions. Usually, if an installation guide specifies a version of anything, it is very important to follow that exactly. In this case, the “Manual Installation” p5.js-web-editor installation guide does include nvm use 16.14.2 in step 4. So if you are having problems, please try to follow the steps as precisely as possible; if you are still having problems anyway, then it could be a bug! When you file a bug (“New Issue” > “Found a Bug” under issues of the relevant repository) please make sure to include as much information as possible in your new issue / bug report: which step did you get to in the installation guide successfully? What error output do you see?

Having installation problems is really common, so I hope the above can be helpful more generally too: when in doubt, try to clean up your (digital) workspace, start from step 1 of the installation guide, and document what’s going on so it’s possible to ask for help!

:cherry_blossom: Question about Choosing a Project

In the thread above, @takshittt is asking about: “which project [between the 2 below] best suits my skill set and how I can start making a meaningful contribution. Any guidance on first steps, such as relevant repositories, open issues, or discussions, would be greatly appreciated.” There was also a question about adding ES module support, so I’ll also address that below.

1) Friendly p5.js Reference Translation Tasks. You can check out open “Translation” issues to get a sense of how translation has to be managed currently. This project idea is one that we expect to be medium/hard in difficulty, and that the technical solution is something we are very open to. The current system first generates part of the website (the reference) from the core library code (documentation.js); then the .mdx files in English are built from that; then each language translation is manually added. Thus, updates to content require manual checking of what needs to be updated and where. Meanwhile, translation is typically one of the best ways for newcomers to get involved in open-source, so making any aspect of this much smoother would be really impactful in the community, and could even make it possible to expand language support! So if you’re interested in working with multiple repositories, an integrated workflow over multiple technologies (see the stack in the ideas list), and if you can feel yourself excitedly imagining multiple possible engineering solutions to try out, then this could be the right project for you to consider.

2) User-Friendly Features in the p5.js Editor. This is a project idea is one we expect to be around Medium difficulty, and also has (like all the projects on the list!) great community impact potential. If you’re more excited in crafting an end-user-facing feature, this may be the right project for you to consider.

@takshittt also asked about ES modules; this question/idea is definitely something that a proposal could explore. Let’s say you have a feature idea related to this project (in this example, the ES modules support in p5.js Editor). How to explore this idea?

  1. First, what’s the motivation? In this example, you already do this by stating that editor currently “limits users by forcing them to place all their code in a single ‘sketch.js’ file. This becomes problematic for larger projects, making it harder to maintain and organise code.” However, can you also find concrete use cases where p5.js projects get large enough to benefit from this? For example, are there community libraries that have examples that can demonstrate the issue that you’re describing? VSCode is already used for p5.js and offers more advanced code editing. The web editor is specifically offering a very simple environment that is easy to share and easy to get started with. Thus, a proposal of this feature could directly consider: is the motivation of this feature consistent with how the p5.js Editor is used by the community? (If there are other motivations you can think of, we are open to fresh perspectives!)
  2. So with the above in mind: what are the technical possibilities, how difficult would they be to implement, and how difficult would they be to maintain over time? The p5.js Editor is mostly volunteer-maintained, and so as you consider maintainability, it might be useful to look through the “Needs Discussion” issues. As I was writing this response, I actually noticed an open issue directly related to ES modules, so you’d be welcome to also look into what’s been done and discussed about this already!

If others reading this are also considering multiple possible projects, let me know which two you’d like to see compared in this way next!

:cherry_blossom: Question about Feasibility: p5.js Editor Friendly Features

Continuing with the theme of possible features for the User-Friendly Features in the p5.js Editor, @dipamsen asked about feasibility of three specific features.

The way you’ve broken down the technical possibilities is already very informative, and it’s clear you’re thinking of the potential challenges/limitations/roadblocks. It’s possible the the “Needs Discussion” issues might be useful to check out too, just to see previous feasibility concerns in that repository.

For a proposal, you don’t actually need an answer yet, but rather diving deeper into the pros and cons of each approach. For example, running something directly in the browser can be very helpful for educational contexts which tend to have challenges with overuse of wifi by too many machines for too many tasks. So anything that needs really quick and smooth UX benefits from doing as much locally as possible.

Also, with any of these approaches, anyone writing a proposal about this project is welcome to think beyond autocompletion; consider what information would be most helpful. For possible ideas, you can check out the p5.js 2.0 updates thread where there is a lot of discussion about how best to support users of p5.js 1.x to become familiar with major new changes in p5.js 2.0. Is one of the technical solutions to autocomplete (local static analysis) that can help (such as noticing use of preload with 2.x)?

Finally, @dipamsen I’ve checked out GitHub - dipamsen/p5-editor: Online editor for creating p5.js sketches, powered by Monaco, thanks for sharing! To keep investigating, you could check if it is possible to use something like monaco with the current codebase of the p5.js editor with minimal changes, or if requires major modifications. For the GSoC projects, we are looking for projects that are also relatively standalone, and therefore can be a bit more experimental and ambitious, so if it’s not possible to use some tool without major changes in existing codebase, it may be better not as a GSoC project proposal, but as an “Need Discussion” issue in the repository.

:cherry_blossom: Question about Feasibility: Friendly p5.js Sketch Embedder

Lastly, more feasibility questions, from @Mamatha1718 on the p5.js friendly sketch embedder!

Please note that while I’m happy to offer reflections in this public forum, the intent is to help all of you develop your proposal. You should not start working on the project until that part of the the program kicks off in May!

I encourage anyone thinking about this project to check out existing methods of embedding sketches:

  • Editable editor with previews, like in the p5.js reference or the tutorials - keep in mind that sometimes people want to include code; sometimes not editable; sometimes not at all. Sometimes people might want multiple sketches on a page with different settings; if it’s a sketch that makes sound, for example, when should it autoplay or not?
  • More details on instance vs global mode - based on this, try to create a local testing ground where you embed some sketches into a page!

Keep in mind that one of the most important uses of p5.js is to create interactive works that can be embedded in the browser with a <script> tag. As you noticed the <iframe> method is already supported by the p5.js Editor “share” option, so in proposals for this project we’re interested in what you can imagine as a more fully-featured approach, so more focus on what’s possible with <script> would be exciting to see.

I hope this all helps! I’ll be back again in a couple of days to respond to new questions, and wish you all a nice start to your week.
Best,
Kit

2 Likes