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.
[ ] `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.
[ ] 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
#####DNA
[ ] Work out design for how to register DNA at runtime
####UI
[ ] Modifiers 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
[ ] Work out design for how to decentralize depsgraph building