Structure of Collaboration
Despite three of the full time, paid developers working on IPython, the community collaboration is done asynchronously for the majority of the development work. This can be observed by the extensive use of Github's collaboration features, Issues and Pull Requests, in addition to a steady stream of traffic on the mailing list. Even core contributors make Pull Requests to facilitate discussion and consensus before code is merged into the project. This likely helps contributors who are not co-located with the full time development team participate on a level playing field. In following academic-like practices, IPython also has regular lab meetings that take place in Berkeley. To allow remote community members to participate in this synchronous meeting, the community use Google Hangouts, a HipChat chat room and minutes are kept on a HackPad. Additionally, the live meeting is recorded and then uploaded to YouTube for those unable to join.
Completion of Work
As mentioned previously, Github's collaboration features play a major role in supporting work on IPython. Issues and Pull Requests receive discussion by multiple contributors, though there are a few core contributors who merge contribution into the code base. Typically, code is only merged after discussion and a complete agreement of discussion participants is reached. IPython's developer documentation clearly points out the community Github workflow, their ideal pull request, and a coding style guide.