[GSoC 2021] Google Summer of Code 2021

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:

https://synfig-docs-dev.readthedocs.io/en/latest/building/Preparing%20Environment.html
https://synfig-docs-dev.readthedocs.io/en/latest/building/Building%20using%20Autotools.html
https://synfig-docs-dev.readthedocs.io/en/latest/building/Building%20using%20CMake.html

(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.

4 Likes

@ice0
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.

@riya1606
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:

Regards

2 Likes

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

where:
-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.

2 Likes

Hi!

Sure. Feel free to open github issue.

ping @KonstantinDmitriev

2 Likes

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.

2 Likes

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:

2 Likes

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.

3 Likes

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.

4 Likes

Yes please count me in!!

3 Likes

Welcome onboard @dhairya_bahl @aradhana_kund @vaibhavds @riya1606 (and other students! sorry I am too lazy to tag everyone) :stuck_out_tongue:

@vaibhavds You don’t need to be super experienced before contributing as long as you are willing to learn and consistent you are good to go :smile:. Just start with reading the docs, then build synfig on your machine and watch the video course to understand what synfig actually is !

Welcome onboard @aradhana_kund. Glad to see you interested! My response is same for you as well. Just start with reading the docs, then build synfig on your machine and watch the video course to understand what synfig actually is! After that, you can start working on good first issues.

As I can see I am late for the party and @ice0 have already answered most of the things, still
I highly recommend that you guys read student’s guideline

It’s not exhaustive however I will keep adding points as I recall them. Feel free to reach me here on the forum.

3 Likes

Thank you so much @ankit , glad to here out from you . Following up your instructions !

1 Like

@ankit Thank You for sharing all the guidelines related to GSoC . Looking forward to contribute more to synfig :slightly_smiling_face: .

Regards :pray:

2 Likes

Thank you @ankit! Will follow your instruction! Thank you for the guidance!

1 Like