Skip to content

Google Summer of Code 2021

Serge Koudoro edited this page Nov 7, 2020 · 10 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 2021

GSoC is a program the allows students to learn by 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 subscribing to our mailing list and sending a message to fury@python.org or by creating an issue and Select GSOC Request or by joining our discord community.

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 a requirement from the PSF; it can help you get some idea how things would work during the GSoC.

Projects

We currently have 4 project ideas:

  • Project 1: Create new user interface widget. (Difficulty: intermediate). More information here
  • Project 2: Add new shader effects (Difficulty: Advanced). More information here
  • Project 3: Bring a Physics Engine to FURY (Difficulty: Advanced) More information here
  • Project 4: Bring your own idea! (Difficulty: Easy/Intermediate/Advanced) If you've got a brilliant idea you'd like to propose, please make a new issue and select GSOC request to discuss it!

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

Projects in Details:

Project 1. Create new user interface widget

Description: In this project you will build scifi-like 3D and 2D user interfaces inspired from Guardians of the Galaxy video. FURY provides many visualization capabilities. However we were not happy with interactive capabilities found in existing GUIs. For this reason we built our own UI engine. No Qt! Everything is integrated in the VTK scene. This is an example of an orbital orbital menu.

In this project you will extend this work and add more futuristic widgets. The motto of this project is make everything interactive without performance issues. Here are the different steps to achieve:

  • Step 1: Get familiar with the library by fixing some issues like #75 #76 #108.
  • Step 2: Create SpinBox UI, Accordion UI
  • Step 3: Select, Explore, and develop one of these 2 subjects: Tree UI, Layout management.

Difficulty: intermediate

Skills required: Python and VTK

Potential Mentors: TBD

Project 2. Add new shader effects

Description: Our new visualization engine supports GLSL shading language. Join our effort to built stunning effects of scientific datasets. You will have to program vertex and fragment shaders to generate different effects on FURY primitives. Below, an example of a fake animated sphere (look at PR #132)

Here are the different steps to achieve:

  • Step 1: Build Fur and/or Glow Effects
  • Step 2: Create a tutorial/demo and explain Fur/Glow effects.
  • Step 3: Propose and develop your own new effects.

Difficulty: high

Skills required: GLSL, Python, OpenGL, and VTK

Potential Mentors: TBD

Project 3. Bring New Physics Simulation to FURY

Description: FURY has an optional physics engine available. The student will need to understand PyBullet and build a realistic simulation that uses the engine to simulate physics but use FURY to do the visualization.

Here are the different steps to achieve:

  • Step 1: Understand how PyBullet and FURY work
  • Step 2: Build desired physics simulations (TBD) that integrate both engines
  • Step 3: Build a larger animation that showcases physics simulations

Difficulty: Advanced

Skills required: Python, PyBullet, FURY, Love of physics

Potential Mentors: TBD