This is a rough proposed outline of tasks to work on for the code quest (based on discussion between @campbellbarton & @sergey).
* Interface
** COW display evaluated data, edit original.
* Depsgraph
** Building depsgraph from an arbitrary ID block.
*** This can be used for efficient calculation of motion paths.
*** Viewport motionblur
*** Sequencer prefetch rendering frames (in threads).
** Best get input from Sergey.
** Performance (investigate)
** COW
* Modifiers
** Remove derived-mesh
* Layers
** UI (design)
** Check Performance
For larger scenes current layer system likely has poor performance
given the way linked lists are used.
It would be good to measure what the difference w/ 2.7x is,
if this is something to address, set as TODO or if we can leave as-is.
** Moving between layers
** Best get input from Dalai
More work is needed to finish this off, not sure how much.
** How do set-scenes work w/ layer visibility?
* Asset Manager?
Make it part of code-quest???
** Needs discussion w/ Bastien (just focus on this until it's done?).
Suggest to finalize design w/ UI guys, can fix technical issues later.
* Drawing Code Basics
** Workbench Engine
** Add back some missing options? - xray, wireframe.
** OpenGL selection has remaining bugs
Maybe small, need investigaion.
** Sculpting Bugs
** Performance (investigate)
** Clipped output (alt-b)
* Drawing API's
** Resolved fixed buffer size for immediate mode.
** GPU - cleanup naming, remove deprecaed API's.
** Move to GPU (use BLI_threads) Use blender's code style.
** Wayland (ok after code-quest!)
* Overrides
** UI Design
** See: Bastien, Dalai for UI, more development, testing.
Depends on COW.
** Access from Python (for later).
* Workspace
** Topbar design (keep redo panel where it is)
** Fix crashes in scene linking.
** Finalize object mode design & stabilize.
** Finalize bare minimum for release, possible extras.
* Operators
** Port to COW
** Undo system restructure and make linear (optional)
** Multi-object edit-mode (optional)
* Tools
** 101 Project, design is needed.
* Manipulators
** UI Design
Reevaluate existing design. check if any changes are needed.
** More work to do, polish, usability, continued development.
** Confirm current API design is OK to go ahead with.
We could re-evaluate a handful of minor things.
** Use to replace notifiers over the rest of Blender.
* Python API
** COW support
At least exporters should export evaluated data>
** Various minor changes T47811 (best handle after the code-quest).
** Update all add-ons (again, after code-quest)
* Versioning
** Tests loading complex production files.
Ensure basics are supported & no crashes.
** Check if we can make 2.8 files load in 2.7x
On basic level, all layers visible.
* Refactor
** Split some files to help w/ merge conflicts
Check files over ~3000 LOC, also use common sense!
** CMake: remove BLENDER_SORTED_LIBS P522
* Sequencer
** Scene strips w/ COW, layers.. drawing engines?
** Make breaking changes
*** Transform especially has very strange behavior
*** Remove grading in linear space option.
** FUN: Camera navigation in sequencer (optional).
(pixel based options making output at different sizes confusing)
while we dont have time for a large project, we could improve things we know are bad-by-design.
** Prefetch frames (optional, nice to have, fits nice w/ COW)
* Physics & Particles
** Bring back 2.7x level of support
Make the modules a blackbox, keep existing files working-ish.
* Remove deprecaed features
** Blender Internal!
** Texture Nodes (redo or remove - currently)
** Armature Sketch
** BGE Player
** Mesh Legacy Format (pre BMesh).
** Remove tessface
*** Cycles: use looptri (detect quads if needed).
*** Remove from RNA: Python IO needs updating
*** Particles: We need operator to re-distribute to tris (can't do in readfile).
*** BVH utils uses still.
** Remove non-triple buffer drawing.
** Screen Capture
** Frame Server
** AVI-RAW/JPEG
** Remove Current BGE Implementation in 2.8
Replace with interaction mode at later date.
### After Code-Quest Topics
* Nodes
** Move cycles away from hard-coded C definitions.