Code Changes and Learning how to Contribute

Hello ,

I just finished Setting up the project.

I started to learning about the projects and looking easy first good problems to solve.

I build the project with cmake and , I wanted to ask about ,

Steps to go on adding a code to project.

Suppose you add somthing and want to see that in project how to see these changes.

how to commpile and see how things are looking (for eg a background colour change etc or adding a feature).

Do i need to rebuild every time to see change (how to go about it).

Thanks, Ques might be silly. (Just started).

Welcome amoung us, fellow coding masochist!

To make simple, as you are using CMake, if you add a file, you have to include it in the corresponding CMakeLists.txt.
Then start the compilation with the IDE or from the command line (in the base directory) with 2-build-cmake.sh
It will check which files are modified or need to be compiled again according how they would be affected by your changes, it is quite quick.

About what you could do, we have plenty of issues open on GitHub that can give you some ideas but you first need to understand how works the code.
And we don’t have so much documentation about, it is more more about experience and mimetism.
You need first to understand C++, then GTK/GDK/GTKMM, signals, …
My best advice would be to check on GitHub in the list of commits added to the code.

A trivial example: chore: Bump year to 2026 (#3669) · synfig/synfig@bdb7819 · GitHub
It does nothing special to the code but you can see which files are touched

A bit more complex:
Modification of an existing functionality: feat: angle converter can now be used for integers (#3650)

Once again, it comes with the time, experience, knowledge about the code base.
Always think from the general to the details, with a hierachy.
How it works before to focus on the implementation.
A quick and dirty implementation can do the job but generated side-effects on the long-run.
Always decompose a complex idea in several ones, then with time you will be able to have a better capacity of abstraction.

Don’t forget to learn enough about git, commits, PR …
It can save your work in case of mistake
And don’t forget to save everytime you do something, don’t just count on auto-save!