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).
[ ] API for .blend file read/write direct linking (D7061)
[ ] Move most direct linking code out of `readfile.c`
[ ] Datablocks
[ ] Modifiers (D7062)
[ ] Nodes
[ ] Animation Data (D7321)
[ ] Other
[ ] Move most lib linking and expand out of `readfile.c` (automate using lib query?)
####RNA
[ ] Add mechanism to register RNA at runtime
[ ] Use it for important case including:
[ ] Nodes
[ ] Modifiers
[ ] 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 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
####Dependency Graph
We still need to work out design for how to decentralize depsgraph building, this is more a long term goal.