[GSoC 2021] Google Summer of Code 2021

Hello guys!

We decided to apply for Google Summer of Code program this year again.

The organization application period is open now and it will close Feb 19 at 1900UTC. - https://opensource.googleblog.com/2021/01/google-summer-of-code-2021-is-open-for-applications.html

Now it is time to prepare all necessary docs for application.

Questions we should answer first:

  • Who is willing to participate as mentor? It would be nice if you provide a project ideas that you are willing to mentor. If you have potential student who can carry the project - please mention that too.
  • Who can help with preparing application docs? We have docs for previous year here - https://synfig-docs-dev.readthedocs.io/en/latest/gsoc/2020.html. Most information can be copied.
  • Help to discuss ideas for student’s projects. See list from previous year - https://synfig-docs-dev.readthedocs.io/en/latest/gsoc/2020/ideas.html#projects-ideas.
    Remember that we can accept idea only if there are someone who is willing to mentor it. In any case, post your crazy ideas in this thread and get fellow devs interested.
  • Prepare list of simple issues to test skills of aspiring students. We need to examine list of existing issues in our tracker and mark some of them with “good-first-issue”, “help-wanted” and “Easy” labels. Adding simple issues is also appreciated.

Important note:

Please remember for the 2021 GSoC program all projects students will be working on for the summer should be ~175 hr projects.

This year I plan to participate as a mentor.

Good luck to everyone.



Ideas list

Move ETL library code to synfig-core
ETL is an Extended Template Library, like an extension of STL (Standard Template Library)
For those who don’t know. Synfig began to be developed in the early 2000s, when there was no C++11, multithreaded programming, and other things that had already become part of the standard (std).
The current task is to understand the logic of classes in ETL and replace them with an analogue from std, or if there are no analogs, transfer these classes as-is to synfig-core.

Result: from 3 packages (ETL, synfig-core, synfig-studio) 2 remain (synfig-core, synfig-studio)
Requirements: c++11


@ice0 It’s great to know that you will be participating as mentor this year. I would love to help with applications docs. I don’t think that I should participate this year in GSoC due to time constraints but If everything gets sorted, I will definitely apply for it :slight_smile: . Still Lot to learn from you guys :heart:


Hello. A cordial greeting to all.

Some time ago I put these ideas into consideration:

It would be wonderful if these new features could be programmed by students if you think they are relevant.

Thank you very much for the excellent work improving SynfigStudio


Love the idea! If someone is not working on it, can I start? Would love to contribute to synfig

1 Like

Synfig Studio approved as organization for this year too!
Congrats, @ice0!


Congrats on getting selected \(^_^)/ Looking forward to meet new people who’d be joining here and be a part of another awesome summer. Happy contributing everyone!

1 Like

Hi everyone, My name is Saurabh. I am a final year Computer Science and Engineering undergraduate. Apart from being a programmer/ software developer, I like to do graphic designing and video editing and currently trying to learn animation in my free time. I came across Synfig while I was searching for software to learn animation and now as a developer would love to contribute to Synfig.

I went through the idea page and like the idea related to the “improvement of the speed of Synfig export to files and rendering speed”. It would be very kind if someone could guide me on how to get started with this particular project.

Hi guys!
@SaurabhS first you need to build synfig from sources. You can read about this here:


(You can use autotools or CMake build system there is no difference here. If you will choose CMake, do not forget to add -DCMAKE_BUILD_TYPE=Release for release build)

I also want to point out that Linux is the only suitable OS for this idea, because we still don’t have MSVC support, so no performance analyzing tools is available for Windows or MacOS. (At least I don’t know about it).

After that, you can try to open some examples from synfig-core/examples folder and check some of them which is have slow loading times or rendering speed.

1 Like

Hello Everyone ! Myself Dhairya and I am pursuing my BTech in Computer science. I am an open source enthusiast and I love contributing to it. I’ve been contributing to synfig recently but then I shifted to make some personal projects and also to learn new technologies.

I would love to work on the project “Move ETL library code to synfig-core” . Kindly guide me a little bit and help me get started with this project so that I can start contributing to this as soon as possible.

Would love to spend my summer contributing to open source with synfig :heart:

Happy Learning :smile:

Thanks and Regards🙏

1 Like

Thank you, @ice0.

I will now try building the Synfig and open the examples as you mentioned.

Hi, @dhairya_bahl, nice to see you here!

@riya1606 @dhairya_bahl
A little information about where to start:

First step in this issue is just open synfig/ETL/ETL folder, and try to understand (or maybe document for yourself) what every file in this folder is needed for? For example: where _rect.h is used? (You can use context-search for this in any IDE). Is it used only in synfig-core or it is used by both synfig-core and synfig-studio ? etc.

The main idea here is not just copy files from ETL to core and fix CMakeLists.txt/autotools files.

The main idea is to switch to standard primitives (classes/functions) when you doing this migration.
ETL is analogous to the STL/std C++ library and was written before they became the standard. So for the new developer is a little complicated to understand why we use smart_ptr and did not use std::shared_ptr or std::unique_ptr.

For example, when I was analyzing smart_ptr class from ETL, I started by looking for the classes that use it. And I found synfig-core/src/synfig/smartfile.h. If you check it, you will see what this is a good start point for this idea. This class is very simple, but you should decide: can smart_ptr be switched to std::shared_ptr or std::unique_ptr, or smart_ptr class have some unique features and should be ported as is?

I also want to point out that there may not be a perfect solution for some classes. Some of them can be switched to std, others will need to be left as they are.

P.S. Also feel free to suggest your own ideas if you are interested in them.

GSoC rules says:

7.4. Project Proposals.

3. Project Proposals may, but are not required to, be for Projects on an Organization’s Ideas List.

@AnishG @ankit @rodolforg and other developers - if you are available as mentors please post here, or PM me please.


Thanks for explaining the whole idea in detail. I will start with understanding the smart_ptr file itself and will slowly look into other files as well.

Feel free to ping me if you also want to work on the same issue. Will discuss it together :smile:

Already Excited for this :fire:



Hi @ice0,

I built the Synfig using Autotools and opened some examples from synfig-core/examples folder and noticed files like synfig-core/examples/pirates.sif and synfig-core/examples/eye.sif were taking time to load as well as render.

Now, what should be my next steps?

1 Like

Greetings @ice0 ,

  1. Kindly tell me where should I ask my doubts related to the project ? Will it be okay to open the issue for the same on github ? or should I ask them over here ?

  2. Secondly I would like to say that I’ve requested access to video course of synfig in the form that was there in documentation. So kindly look into it also.

Thanks and Regards :pray:

1 Like

Now you need to isolate the problem. Try turning some of the layers on and off and you will see which one is affecting the performance degradation.
After that you are ready to go. Save the final file somewhere, and run synfig console tool from command line.

For example:

./synfig --fps 50 -t null ~/test/radial_blur.sifz

-t null - use null target (just to remove unnecessary format conversion)
--fps 50 - frames per seconds. Use this value like for loop to increase number of the renderings. This will allow you to improve quality of perf recording.
~/test/radial_blur.sifz - path to your test file.

Write data using perf tool:

sudo perf record -g ./synfig --fps 50 -t null ~/test/radial_blur.sifz

after that you can check perf report using:

perf report -g -G

P.S. Please read about the perf tool and perf flags.



Sure. Feel free to open github issue.

ping @KonstantinDmitriev


Can I apply for GSoC as a student? I had pointed out a bug on Github twice and I am interested in this field although I dont actually have any coding experience yet.


Hello @vaibhavds You can definitely try applying for GSoC this year but I would highly recommend you to get familiar with the synfig codebase first and try to understand how code is actually working ? On what tech stack it works ? and also give a try to solve some good-first-issues to get familiar with the codebase.

All The Best :heart::pray:


Hello , I am Aradhana Kund from IIIT Bhubaneswar , ETC branch (2nd Year). I am willing to contribute to synfig for the Project - Move ETL library code to synfig-core. @ankit and @ice0 are the mentors of this project . Given below are my skills :
->Expertise knowledge in c++(Data Structure and Algorithms and DAA )
->Proficiency in STL(Also gathered knowledge on ETL)
->Competitive Programming(1200 AIR in Google Hash Code)
I wish to contribute to this project and willing to interact with the mentors for better ideation of the project . It would be great if I am guided on my idea for the project.Looking forward for positive response.