Last updated by stefanwray on Fri, 2012-11-30 23:21
This document is for Executive Directors and staff at community media centers (CMC) and public access stations involved in the Community Media Drupal Initiative.
The premise is that CMCs and stations around the country have the capacity to organize and work together in a distributed, networked, environment.
The purpose of this document is to establish a guide to better understand the:
- roles required to share this development work
- tasks that are needed to get the job done
- knowledge and skills necessary to perform the tasks
- time needed on a weekly basis to dedicate to the project
- way to seek outside support and how to ask the effective questions
This document is directed more toward CMCs or stations that have an existing community media Drupal installation. It addresses the roles, tasks, and knowledge needed to maintain, upgrade, and expand an existing Drupal web system.
Modular Development and Distributed Responsibility
Each community media Drupal installation has at least three levels of code:
As of this writing there are about 12 Drupal modules with “community media” in the title and more than 50 modules have been written just for this community media Drupal initiative. Most of these have been deployed in three Community Media Starter Kits. The Lead Maintainer for the majority of the community media modules is Kevin Reynen.
The goal of Community Media Drupal development is to not just to share the development cost of writing new Drupal code but to share in the ongoing work of maintaining, upgrading, and improving the specific Drupal modules.
It is important to understand that the actual writing of code is just one part of a Drupal module’s life cycle. Module development is an iterative process where there is ample room for non-coders to be engaged and helpful in determining new features, testing configuration and use, documenting processes, or handling support requests specific to that module.
The theory behind this type of collaboration is that if each involved CMC takes ownership and responsibility for specific community media modules, then we can:
- Better define shared needs and development goals
- More evenly spread the workload and reduce reliance on Lead Maintainers
- Reduce overall development costs
For background information on some of this see Report on the Community Media Drupal Summit.
The distinction between different roles is important. In addition to the usual Drupal roles for an installation (administrator, user), there are internal and external organizational roles.
Each CMC may have one or more people who make up some combination of these roles:
- Executive Director or General Manager
- Site Administrator
- Co-Maintainer (can be the same person as the Site Administrator)
- Staff User
- Lead Maintainers
- Co-Maintainers & Site Administrators at other CMCs and stations
- Executive Directors and Leaders at other CMCS and stations
Tasks for Internal Roles
Effective collaboration among CMCs on community media Drupal work requires support for this process throughout the organization but it especially requires a commitment from a CMC's Executive Director. In addition to making sure the organization has staff with the appropriate skill sets, Executive Directors need to ensure that staff have the time and resources to work with their counterparts at other CMCs. Executive Directors need to help cultivate an understanding and practice wherein CMC technical staff are part of the organization's team, but also part of a larger team of peers to which they may both give and receive support and guidance.
Much of the administration work involved with the community media Drupal installations is fairly typical to Drupal administration and involves tasks such as:
- Upgrade modules
- Ensure site gets backup
- Monitor reports and logs
- Administer user accounts
Every Drupal module has at least one Lead Maintainer and any number of Co-Maintainers. Lead Maintainers are Drupal developers chiefly responsible for writing and maintaining the code for a Drupal module. Co-Maintainers assist the Lead Maintainers and act as intermediaries to handle a variety of tasks that do not require knowledge of actual PHP coding.
The tasks of a Co-Maintainer are different than what is defined under Best Practices for Co-Maintaining Projects on Drupal.org. Rather, the function of the Community Media Co-Maintainer is more like the Product Owner as defined in the Agile development process. For an overview of the Agile process watch a video of a presentation from the Community Media Drupal Summit in Austin.
One of the Co-Maintainer’s main tasks to monitor the module’s issue queue for:
- Bug reports
- Feature requests
- Support requests
(Basic) When handling bug reports the Co-Maintainer:
- Verifies that errors are reproducible and not the result of misconfiguration
- If errors are due to misconfiguration, then he/she edits and improves documentation
- If errors are legitimate, then he/she assigns the issue to the Lead Maintainer
(Advanced) When a bug has been fixed by the lead Maintainer, the Co-Maintainer:
- Uses git to pull the code to a development server
- Tests the code to make sure the issue has been resolved
- Commits the code back to Drupal.org
- Closes the issue as fixed
When handling feature requests, the Co-Maintainer:
- Responds if needed to clarify the feature request
- Determines whether the feature request is appropriate for the module
- Prioritizes feature requests with higher priority for shared needs
- Consults with CMCs to determine if/when feature gets funded
Knowledge and Skills Needed
Seeking Support Effectively
Drupal.org has an extensive section on support.
The amount of time necessary for CMC staff to devote to this work depends on several factors but especially important is the phase of the project. During initial needs assessment, site planning, installation, configuration, and other activities that are considered to be pre-launch the staff time commitment could be considerable, especially if there is minimal support from outside developers. Once a site has launched the time commitment reaches a plateau. It is difficult to estimate.
The organization of this initiative presents a number of challenges, chief among them are the following questions:
- How to acclimate new development talent to the cm_project?
- How do shared feature requests become funded development?
- How does this scale from small, to medium, to large CMCs?