The goal of these tasks is to make core Blender data structures more extensible and object-oriented.
See the [[ https://wiki.blender.org/wiki/Source/Architecture/Extensibility | proposal in the developer wiki ]] for details.
####Datablocks
Extend `IDTypeInfo` usage and functionality to abstract ID handling in more areas.
[X] `lib_query.c` for relations to other datablocks (T74960)
[ ] Find other cases where hardcoded ID type tests are spread throughout the code
####.blend I/O
Decentralize .blend file I/O code, with a well documented API (T76372).
Automate lib linking and expand using lib query?
####RNA
[ ] Add mechanism to register RNA at runtime
[ ] Use it for important case including:
[ ] Nodes
[ ] ...
[ ] Use for all data structures (long term)
#####DNA
We still need to work out design for how to register DNA at runtime, this is more of a long term goal.
####UI
[X] Modifiers, shader effects move from Python to callback on modifier typeinfo (`modifier-panels-ui` branch)
[ ] Nodes UI move from `drawnode.c` to callback on node typeinfo
[X] Geometry / Function nodes
[ ] Shader nodes
[ ] Compositor nodes
####Dependency Graph
We still need to work out design for how to decentralize depsgraph building, this is more of a long term goal.