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
[ ] Find other cases where hardcoded ID type tests are spread throughoutt the code
####.blend I/O
[ ] API for .blend file read/write direct linking
[ ] Move most direct linking code out of `readfile.c`
[ ] Datablocks
[ ] Modifiers
[ ] Nodes
[ ] Move most lib linking and expand out of `readfile.c` (use `lib_query.c` iterator?)
####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
[ ] Nodes UI move from `drawnode.c` to callback on node typeinfo
####Dependency Graph
[ ] Work out design for how to decentralize depsgraph building