What do I do now?

I successfully built Blender. I am following Blender wiki, and my next step is to work on small projects to get used to Blender development. I looked up some bugs and found this one: bug.

I guess this bug is specific to UI, so I tried looking up for its source file. The number of source files is overwhelming. Also all the source file are written in C language. Isn’t there a python version to it. The only reason I got into Blender development is because I know Python a bit.
Blender Wiki does not explain on how to get started in correcting bugs for beginners like me.

Please help me out. @stiv @jesterKing

3 Likes

Hi! Welcome to the club :slight_smile:
Core Blender functionality is mostly written in C lang. Consider this as an advantage, not a drawback.

C lang is very simple and easy to learn. However, to help in Blender development you must understand the principles of professional software development (see links above).

If you know Python, you can help in development of Blender Addons.

As for mentioned issue - I failed to reproduce it on this version:

version: 2.82 (sub 6), branch: master, commit date: 2020-01-23 20:38, hash: rBc5436883c66f

1 Like

@blend_adarsh

hey, with the links you were provided, did you manage to make progress?

@jesterKing
Thanks for asking. I felt helpless. I could not make much progress. TBH I couldn’t make any progress. I looked up all the links above and they all say to start with some small patch. But any bug I try to look up it is overwhelmingly spanned over multiple files or I am unable to understand how it works.

@blend_adarsh A nice place to start (this is how I learned) is to find a file and after reading it, make a small change. The goal of the small change is to see if you understand the code. A good place to start would be the /blender-git/blender/source/blender/editors directory. This is where many of the operators are found, and where the drawing of the editors is found. The change you make doesn’t have to be useful; it can help to actually add undesired behavior. For example:

/blender/source/blender/editors/space_text/text_draw.c
int wrap_width(const SpaceText *st, ARegion *ar)
{
  int winx = ar->winx - TXT_SCROLL_WIDTH;
  int x, max;

  x = TXT_BODY_LEFT(st);
  max = st->runtime.cwidth_px ? (winx - x) / st->runtime.cwidth_px : 0;
  return max > 8 ? max : 8;
}

After reading though the files in space text, you notice this small function. You think it deals with the line wrapping. So you make a small change and recompile. Even if the change breaks the line wrapping behavior, you are learning how the code works. Finding where this function is called can lead to understanding other parts of how the text editor is drawn. (I think this deals with line wrapping, I cannot compile right now to find out for sure).

If you are more interested in tweaking the UI, much of it is written in Python. In the User Preferences under the Interface tab you can turn on Python tooltips and developer extras. Right click somewhere in the UI and choose Edit Source. That file will be opened in Blender’s text editor and you can make changes within Blender to modify the UI.

The more you experiment (don’t be afraid to fail!) the more you will learn. Hope some of that helps :slight_smile:

3 Likes

@natecraddock
Thank you so much for your detailed answer. I will look through your tips and try my best. I really needed this answer.
Also I’m curious to know if every C code can be written in Python. Can Python do all the things that C does?
I may have to ping you many-times in the future. Please bare with me.

Not everything in C has been exposed to Python. Many common operations like creating objects, setting transforms, etc. are available. An example of something that is not exposed to the Python API is much of the outliner. Opening or closing rows in the outliner is not possible though Python at the moment.

For first project, I would suggest to try to make a small add-on that does something you are interested in. Then expand it. Then try to make another add-on. Only after gaining substantial experience it is feasible to try to start working on something on the bug tracker, otherwise you lose motivation quickly when you don’t know how to do anything. Maybe https://wiki.blender.org/wiki/Developer_Intro/Overview should suggest to create a python add-on as first project?

2 Likes