[Bf-taskforce25] Taskforce expanding, roadmap & planning

Ton Roosendaal ton at blender.org
Wed Dec 31 11:57:15 CET 2008


Hi all,

Good to see all the enthusiasm to get Blender back working!

Apart from the RNA project - which is well defined and can get finished 
- the bulk of the work is in the new editors/ module. Here's an 
overview of the current status.

(While typing the text became very long... will move this to wiki too :)

In the editors directory you find:

- generic screen, area, region, spaces manager stuff
- all editors themselves (space_view3d, space_ipo, and so on)
- object and object-type modules, for editing (object, mesh, curve, ...)
- generic tools used in more places (transform, animation, ...)

Work on editors can be put in the following categories:

1) Copy over the old code

This is a very complex job, especially for the ancient parts of 
Blender. It's a bit like trying to eat spaghetti in a civilized manner. 
:)
The main results of copying should be:

- removal of depricated globals (curarea, G.qual, G.scene, G.vd and so 
on).
- make a more-or-less usable API for the module with exported calls, 
and keep all internally shared calls in xxx_intern.h
- get it all to compile without warnings, if needed by adding stub 
functions that will be later filled in.

This work is really best done by people who are very familiar with the 
old code, you have to know where the ugly hacks were, what parts are 
sane, and what to recode a bit. This migration job has been assigned to 
'owners' who will do the first migration, and then will be ready for 
the next stage where it's easier to assign smaller jobs to people. 
Currently these are assigned:

spaces:

- space_node: Nathan L
- space_file: Andrea
- space_ipo and space_action: Joshua
- space_view3d: Ton
- space_image: Brecht
- space_equencer: Campbell
- space_outliner: Brecht/Ton?
- space_time: Ton (anim playback especially)

general modules:

- screen and space_api: Ton
- animation: Joshua
- interface
- object and mesh: Ton
- transform: Martin
- util: Ton
- python: Campbell

Unported an unassigned:

- space_buttons
- space_info
- space_text
- space_sound
- space_script (undefined how this comes back)
- space_nla (postponed, joshua hopes to review it entirely)

To be created still:

- armature (also pose)
- curve
- surface
- text (the object type)
- mball
- lattice
- constraint
- shapekey
- gpencil
- uvtools (could be in mesh?)
- sculpt
- preview
- paint (2d, or only 3d?)

(I realize the amount of directories/modules explodes a bit, but still 
seems to be better for now).

Volunteers for migrating code of the above are welcome, but please be 
aware that you really should know this code well!

2.1) Create operators

Target is to at least "operatorify" all tools formerly accessed via 
shortcuts. A lot of such tools were already quite atomic, so easy to do 
(like "clear parent"). Some of them were horribly complicated with own 
subloops, and have to split or recoded (view flying, edge slide, 
painting, etc).

I propose that each owner of a module will coordinate himself the help 
or code buddies to tackle this together. At this very moment it's still 
a bit difficult, there are many loose ends still in the code you have 
to be aware of. A 1:1 communication about this (via irc) might be 
preferable still.

As for my own work; I definitely would like to see people helping with 
the object and mesh operators. Especially the latter is a big job. :)

2.2) Make a new Python API

This is much related to the previous work. Once we're satisfied with 
how operators will work in general, a new Python api for it can become 
frozen. This is also quite complex, since a lot of dependencies are 
with unknown quantities, like defining UIs, custom spaces, python 
hotkeys, etc.

2.3) Bring back UI to work

This work can be done almost in parallel with the previous steps, 
although having operators will make things easier, especially for 
menus.

We have a nearly 1:1 compatible UI code wrapper for panels, buttons and 
menus, which will help us bringing back a lot of existing 
functionality. We will also accept to not make operators for 
everything, a lot of UI code just directly operates on a property or on 
data, no reason to make that more complex now.

We also have to check on how far this stage can go, some parts of 
Blender better are left alone (i.e. NLA) so we can move to the last 
step:

3) UI redesign and context

There's already roughly some consensis about what the focus for 
improving the UI would imply, like separating property editing from 
tools, that stuff. The new area manager will also allow better context, 
putting buttons or toolbars or channel/list views where they actually 
belong.

This design stage is in progress, and I don't see a reason to rush it 
now. A good target will be to wrap this up in March. By then we also 
should get a Python design frozen.

4) Get all the new goodies to work well

This can be done in parallel to previous stages, or only in the end, it 
has a lot of dependencies all over! Think of:

- keymap editor, saving custom maps
- defining hotkeys for tools 'on the fly' (via menus or so)
- defining and saving macros
- api for custom spaces
- better area/region management (dragging region dividers around, 
collapsing them, tabs?)
- good multi-window support, proper context for it.

And of course all the work to get the new ui design implemented well. :)

Happy 2009 everyone, it'll be a remarkable year!

-Ton-

------------------------------------------------------------------------
Ton Roosendaal  Blender Foundation   ton at blender.org    www.blender.org
Blender Institute BV  Entrepotdok 57A  1018AD Amsterdam The Netherlands



More information about the Bf-taskforce25 mailing list