Skip to content

Google Summer of Code 2024 (GSOC2024)

Serge Koudoro edited this page Feb 6, 2024 · 4 revisions

Introduction to FURY

FURY is a free and open source software library for scientific visualization and 3D animations. FURY contains many tools for visualizing a series of scientific data including graph and imaging data. FURY is participating in GSoC this year for the first time under the umbrella of the Python Software Foundation (PSF).

How to become a part of FURY's Google Summer of Code 2023

GSoC is a program that allows everyone (students, professional, academic, etc...) to learn contributing to an open-source project while receiving a fellowship from Google, and mentorship from open-source software developers. For details about this year's GSoC, please refer to this page.

Before considering becoming part of the FURY GSoC, please read about our expectations.

All participants should have basic knowledge of computer graphics, scientific computing, and development in Python. For a comprehensive introduction to these topics, please refer to these 2 books:

However, you should be already familiar with data analysis using Python and Numpy before applying.

Be happy to ask questions directly by choosing one of the following options:

Getting Started

Potential candidates should follow all these steps before applying for the GSoC:

  1. Take a look at the guidelines on how to contribute to FURY.
  2. Go through the tutorials and examples on the website, make sure you're familiar with the library.
  3. Run the tests. FURY has unit tests that are at about 90% coverage (amount of lines of code tested). Make sure you know how to run them, and if you've never done Python unit tests before you might want to read up on Pytest library.
  4. Figure out how to run a single test! Running one test instead of all of them will speed up your workflow when you are writing your tests! (hint, it's in the contributing docs!)
  5. Make your first contribution to FURY !!! Making a small enhancement/bugfix/documentation fix/etc to FURY is really important! It shows your understanding of the library and your Github knowledge. The fix does not need to be related to your proposal. We have and will continue adding some beginner-friendly issues in Github. You can see some of them here

This is a requirement from the PSF; it can help you get some idea of how things would work during the GSoC.

Project Ideas (3)

Notice 1: More project ideas might appears Stay tuned and check regularly this page!

Notice 2: We want to provide the best mentoring to our students, only 2 or 3 of these projects will be selected. Not more!

If you have any questions or if you want to contact a mentor:

Project 1. Modernize FURY Codebase

Description:

The primary objective is to implement key improvements, including transitioning to keyword-only arguments for a more robust and readable codebase. Additionally, the initiative aims to integrate lazy loading, enhancing the tool's efficiency by loading resources only when needed. This modernization effort reflects a commitment to maintainability, code clarity, and optimizing performance in FURY, ensuring it remains at the forefront of scientific visualization tools in the Python ecosystem. Other potential tasks may include code refactoring, adopting best practices, and incorporating new features to further elevate FURY's capabilities and user experience.

Project Steps:

  • Step 1: keyword-only arguments integration.
  • Step 2: lazy loading implementation.
  • Step 3: Improve and simplify the management of the current website.
  • Step 4: Improve Issues and Pull Requests Triage + Triage automation.
  • Step 4: Integrates multiple Github Actions to simplify the workflows.
  • Step 5: Refactor some FURY packages + Improves Docstring
  • Step 6: Add Tutorials

Difficulty: Beginner

Dedication: Part-time (175 hours) or full-time (350 hours) project

Skills Required: Python, Sphinx.

Mentors: Serge Koudoro, Nasim Anousheh

Project 2. Improving Community Engagement: AI communication automation using LLM

Description:

The primary objective is to implement an AI communication wizard in Python! Your mission is to revolutionize the way we connect with our vibrant community. Picture this savvy bot delving into the vast realms of our website, documentation, blog, and even the lively discussions on Discord and GitHub.

This ingenious AI marvel is designed to be a maestro of communication, perpetually learning from every platform interaction. Imagine its prowess: effortlessly responding to common queries on GitHub discussions, holding insightful conversations in our lively Discord channel, and taking the helm of our Twitter account to curate and broadcast engaging content. From summarizing blog posts to showcasing merged pull requests and sparking highlights in discussions, this AI agent is poised to be the maestro of seamless, dynamic communication across all our channels.

Project Steps:

  • Step 1: Choose technology to use.
  • Step 2: Starting Learning process
  • Step 3: Implement discord Integration.
  • Step 4: Implement Github Integration
  • Step 4: Implement Twitter integration

During development, the candidate will produce tests and documentation for the resulting code and API.

Difficulty: Beginner / Intermediate

Dedication: Part-time (175 hours) or full-time (350 hours) project

Skills Required: Python, LLM, Rest API.

Mentors: Javier Guaje, Serge Koudoro

Project 3. Integration of WGPU backend using wgpu-py

Description:

Dive into the cutting-edge world of graphics with the Integration of WGPU Backend into FURY using wgpu-py! This exciting collaboration opens doors to enhanced graphics capabilities, fusing the versatility of FURY with the robustness of the WGPU backend. Brace yourself for a seamless fusion of two powerful tools, promising a new era of immersive and accelerated visualizations.

Project Steps:

  • Step 1: Integrate Basic primitives.
  • Step 2: Integrate Renderer.
  • Step 3: Study this backend limits.
  • Step 4: Streamlines/ Streamtube integration.
  • Step 5: Study and connection both animation framework.

Difficulty: Advanced

Dedication: Part-time (175 hours) or full-time (350 hours) project

Skills Required: Python, Shader Programming, OpenGL, scientific visualization.

Mentors: Elefterios Garyfallidis, Serge Koudoro

More Projects to come