Modularity and Collaboration

As discussed previously, PeerLibrary is an incubating project that currently has about seven active members. As outlined on our Wiki, the community prefers a modular work model usually centered around open GitHub issues. When a contributor would like to address one or more of these issues, they start a separate branch and open a pull request for it once they are ready to have some part of it reviewed. Usually one member works on a feature or bug at a time, with a second member carefully checking over and exchanging comments on the pull request before the changes are merged into the master branch. More details about the development model can be found on our Wiki. The types of roles that contributors have taken on have also been somewhat modular, with some members working on more client-side features (look and feel of landing page) while others work on more server-side features (getting annotations to work properly), or improving the blog interface.

I think that this structure modularity helps with productivity because it gives each contributor something concrete to work on. With hundreds of open issue tickets and new ones added almost daily, a lack of modularity would quickly become overwhelming. We also use milestones to make incremental goals and decide which features should correspond to each stage of the project. This model allows and encourages current and potential contributors to speak up about ideas and concerns for various facets of the project, while providing project leaders with the flexibility to organize issues into logical groups. While subgroups of the community routinely get together to work synchronously on the UC Berkeley campus (or on our IRC channel), the branch, pull request, and issue tracking Git[Hub] features allow PeerLibrary to practice smooth and productive asynchronous collaboration.

My latest project has been to build in client-side error logging to the admin interface. With Mitar's guidance, I helped produce an initial version of this feature and interface, which I recently merged into the master branch. I am continuing to improve the functionality of this feature, and look forward to contributing more to this project. A full log of my commits, including documentation edits and additions, landing page content additions (which have since been moved to a new "About" page), and admin dashboard additions, can be found here.