About the Foundation for Public Code

Codebase Product Development

This resource

Contents

  1. Product life cycle
  2. Product stewardship activities in the product life cycle
  3. Product development assets
  4. Further reading

Product life cycle

A product starts with an idea which reflects a need or provides a solution to specific problem. In the context of public code the indented product often supports the management and or execution of public policy.

The development from and initial idea to a fully featured product is an evolutionary process supported by a variety of development methodologies and management frameworks (see further reading). Even seemingly fully featured software, as a product, is constantly refined, altered and improved. Like roads or other infrastructure which require continuous maintenance, it may be more useful to think of software as a process more than a product. This entire process is often referred to as the product life cycle.

Product stewardship activities in the product life cycle

In the context of codebase stewardship, the goal of product stewardship is to support codebases and their communities. This helps them build and grow a viable and sustainable ecosystem around a codebase. Then a community can use shared resources and knowledge to support the product life cycle for the duration for its lifespan.

As codebase stewards we work with different levels of codebases that implement products which differ in product maturity. Codebases which started out being developed and used in a single organization have different needs and dynamics than codebases used by a variety of organizations and or functional contexts.

When a codebase is being developed collaboratively, replicated, or used by more than one organization a community faces numerous challenges in order to support the product life cycle.

How does a community:

  • Decide which features are being developed?
  • Prioritize and estimate features needed?
  • Finance and organize the development needed to be done?
  • Share and community with each other and there stakeholders?
  • Handle conflicting needs?

All these challenges are related to how a community govern its codebase and community. As codebase stewards we help communities explore and answer these question by supporting and coaching them throughout the product life cycle.

Codebase stewards can support product development by helping a community to:

  • develop a product manifest or product description clarifying what the purpose and goal of a codebase implementing a product is, what problem(s) it solves and what value it provides towards its users
  • take product accessibility into account using the design
  • adopt a process and method which helps them to discuss, describe and prioritize on product features

Additionaly, the codebase stewards can support by organizing a workshop that helps the community explore business models and financing. Such a workshop may provide inside on how further procurement and development can be funded and to include software vendors into the community to help provide and sell services around a product whilst collaborating in the open with other stakeholders.

Product development assets

Asset Description Link
Product Roadmap A high level overview of features projected through time describing the future direction of the development of the product. It also serves an archival purpose so newcomers can see how the product development has progressed through time A visual, high-level roadmap including goals, milestones set in time. A roadmap example
Product Backlog A publicly visible shared product backlog which contains a description of categorized and prioritized features (epics and user stories) which can be related to containing procurable work packages Product Backlog part of product-steering repository template
Feature Request Template An instruction inside the codebase explaining how to request features to be considered to be developed. The template SHOULD include a detailed description of a feature (user story) which supports developers and product stakeholders to be able to design, develop and procure this feature. Feature Request Template part of product-steering repository template
Governance exercise The governance exercise is designed to help civil servants develop a shared understanding and vocabulary of how to make open source projects successful in a government organization. Codebase governance exercise
Customized governance game A customized governance workshop can be used for a codebase that already has some form of governance in place, or is considering a draft proposal. Can also be used to focus on a single aspect of governance for example, product management Codebase governance workshop
Workshop “Mapping business models enabled by a codebase” Have a collaborative working session with new or existing community members to map out potential different business models that can be created around a given codebase. Mapping business models workshop
Workshop “Mapping risk and service level agreements workshop” Have a collaborative working session with new or existing community members to map out, for a given codebase, potential different risks when using the codebase in production, as well as approaches to service level agreements. Mapping risk workshop

Further reading