The first task will be agreeing on a high level architecture that can be subdivided between implementors. The use cases for the software should be determined, and sub-tasks created to address them.
This work should include defining interfaces between high-level components, and possibly a stub implementation of each.