So You Want to be a Blender Developer, But Where Do You Star

a nice post, good reading for me, hopeful for you as well
blenderartists.org/forum/showthread.php?t=200013

:unamused: want to be a synfig dev, where do i star

Blender Artistsā€¦ iā€™m wondering if i have to be an important or recognized ā€˜artistā€™ for have their attention, i made this post blenderartists.org/forum/showthread.php?t=194987 and never got an answer, i like Blender a lot, but the blender communityā€¦ wellā€¦

Yeh, blender artists is a bit weird like thatā€¦ Iā€™ve seen really beautifully well made works with good storylines and obviously lots of hard work gone into them - only to be ignoredā€¦ yet someone does a spaceship or a machine gun out of simple geometric shapes, and people are drooling over itā€¦ donā€™t take it personally:)
(ps, no idea about your filter probs and persistent data, but my guess you have to wait for 25 to catch up with 24)
Ideasman42 is a very friendly and helpful guy, both online and in real lifeā€¦ he encouraged me to start making bug reports
as for being a synfig devā€¦ never mind where you start, just please do!

I know, they never seem tired of the caveman scene, i just donā€™t understand how that community works, i donā€™t feel it like personally, indeed i didnā€™t expected anymore help after a week with no response, i havenā€™t yet solver my problems but i keep learning everything i can with the material that is available online

i wish i could, but i have no idea how toā€¦ =p, nor i know anything about programming

Youā€™ve already done a lot of great work on the icons and translations, which in itself is no small contribution.

If you want to learn to code, I would be more than willing to help you out. If you tell me what you already know and what kind of changes you are interested in making, Iā€™ll give you as much advice as I can.

Since I donā€™t know how well you understand the synfig code, Iā€™ll begin with some thoughts from my own experience:

  • One of my first patches was adding several new valuenodes. ValueNodes are essential synfig as a whole. Itā€™s not a very difficult job because the ValueNode code has very few dependencies.
  • The action system, while confusing at first, isnā€™t actually that complicated. Iā€™ve started writing a tutorial on the topic, but it itā€™s still far from complete.
  • The bug tracker is a bad place to look for easy changes to make. Simple feature requests are far easier to accommodate.
  • git is an absolute blessing for learning to work on synfig. It lets you keep all your bad code locally, and then use tools like ā€œgit rebase -iā€ to clean it up and make it worthy of sending out to other people.

I recommend to start from ground up. Synfig is made by ETL, extended template library, synfig-core and synfig-studio.
ETL is not good to start from. It is very abstract and will bore any beginner. I would start from synfig-core. Most of the classes of synfig-core inherits from a root class called Node which at the same time is a etl::shared_object. etl::shared_objects are like C pointers but with the ability of tell you how many other classes is currently using a certain pointer with the reference counter, so it wonā€™t be deleted until there only left one reference.
From Node inherits layer, valuenode, etc. and it basically builds the core synfig. There are more classes in core but are easy to understand.

Later, once core is understod I would go to synfig-studio. There are two main sections: gui and synfigapp. Gui is the implementation of the interface for a certain desktop manager. synfigapp is the interface between synfig-core and any external gui.
Obviously it is easier to understand synfigapp because it uses many concepts from core. The gui is easy to learn at first but it is a bit complicated to modify or fix when you hardcode the gui design directly by hand.

Meanwhile, as nikitakit as mentioned you can play with add some new features where it is easy to apply. I have a valuenode type in mind that might be interesting:

ValueNode_Case:
This valuenode would have the following sub parameters:
Link (type list of pairs of value type, integer)
switch (integer)
default value (value type)

Value type can be any of: bool, int, real, vector, angle, time, (and possibly blinepoint, bline or canvas)
default value will be the returned value when none of the integer part of the value type - integer pairs match the given switch value otherwise, the value type part of the value type-integer pair is returned.

Maybe it is a non straight valuenode to implement but there is so few room for more cases. If you find other one please go for it.
-G