|
| 1 | +Feature Development Process |
| 2 | +=========================== |
| 3 | + |
| 4 | +Landing a new feature or significant change in Pontoon follows a structured yet flexible process. The goal is to ensure high-quality, well-considered contributions that align with project priorities and community needs. |
| 5 | + |
| 6 | +.. contents:: Table of Contents |
| 7 | + :depth: 1 |
| 8 | + :local: |
| 9 | + |
| 10 | +Propose the Idea (Filing an Issue) |
| 11 | +---------------------------------- |
| 12 | + |
| 13 | +Anyone can suggest improvements: new features, enhancements to existing ones, or feature removals. |
| 14 | + |
| 15 | +* For trivial changes (typos, minor bugfixes), a pull request (PR) alone may suffice—no dedicated issue required. |
| 16 | +* For anything non-trivial, create a GitHub issue in the mozilla/pontoon repository. |
| 17 | + |
| 18 | + * Clearly describe the problem/opportunity. |
| 19 | + * Explain the motivation, expected impact, and user value. |
| 20 | + * Include relevant context (screenshots, use cases, alternatives considered). |
| 21 | + |
| 22 | +Triage |
| 23 | +------ |
| 24 | + |
| 25 | +Core maintainers review new issues and perform triage on a weekly basis to assign: |
| 26 | + |
| 27 | +* Type: Bug, Feature, Task. |
| 28 | +* Priority label: P1 (must be fixed immediately) to P5 (valid bug, but you might need to fix it). |
| 29 | +* Labels such as “needs specification” or “needs documentation” if required. |
| 30 | +* Labels for rough time estimate: hours, days, weeks, months, quarters. |
| 31 | + |
| 32 | +The issue is added to the Pontoon Roadmap GitHub project: |
| 33 | + |
| 34 | +* Initially placed in “Needs triage”. |
| 35 | +* Moved to “Ready” once actionable. |
| 36 | +* Kept in “Not ready yet” if more discussion or a spec is needed. |
| 37 | +* High-priority items ready for near-term work move to the top of the “Ready” column. |
| 38 | +* Larger initiatives (estimated to take months or quarters) are always kept in the "Not ready" column before they are split into smaller issues. |
| 39 | + |
| 40 | +Specification (Recommended for Larger Features) |
| 41 | +----------------------------------------------- |
| 42 | + |
| 43 | +For medium-to-large features (those affecting UX flows, data models, multiple areas, or needing community consensus): |
| 44 | + |
| 45 | +* Draft a specification document in Markdown format and submit it as a PR to the `specs/` folder. |
| 46 | +* Follow the structure seen in existing specs (problem statement, goals, user stories, proposed solution, impacted areas, risks, alternatives, migration plan if applicable). |
| 47 | +* Get feedback and approval from core team members. |
| 48 | + |
| 49 | +Once approved, remove any “needs specification” label and move the issue to “Ready” on the Roadmap. |
| 50 | + |
| 51 | +Implementation (Writing Code) |
| 52 | +----------------------------- |
| 53 | + |
| 54 | +* When ready to begin, assign yourself or get assigned to the issue. |
| 55 | +* The issue will then move to “In Progress” on the Roadmap. |
| 56 | +* Work in a feature branch. |
| 57 | +* Deliver: |
| 58 | + |
| 59 | + * Clean, complete code. |
| 60 | + * Unit and integration tests with good coverage. |
| 61 | + * Any necessary database migrations or data changes. |
| 62 | + |
| 63 | +Code Review |
| 64 | +----------- |
| 65 | + |
| 66 | +* Open a pull request targeting the “main” branch. |
| 67 | +* Make sure CI tests pass. |
| 68 | +* Review is requested from core Pontoon team members. |
| 69 | +* Address feedback on code quality, security, performance, test coverage, and best practices. |
| 70 | +* Once approved, the PR is merged. |
| 71 | +* The associated issue is automatically closed and moved to “Done” on the Roadmap. |
| 72 | + |
| 73 | +Testing |
| 74 | +------- |
| 75 | + |
| 76 | +* The contributor is primarily responsible for thorough testing. |
| 77 | +* Verify the feature behaves as intended. |
| 78 | +* Check for regressions. |
| 79 | +* For larger features, perform extensive testing in the development environment during/after review. |
| 80 | +* Core team may run additional testing. |
| 81 | + |
| 82 | +Release |
| 83 | +------- |
| 84 | + |
| 85 | +* Features are first deployed to the `development environments <https://pontoon.allizom.org/>`_ for final validation. |
| 86 | +* Once confirmed stable, they go live on production. |
| 87 | +* Deployments are handled by core maintainers and occur as changes are ready (typically immediately after, no strict cadence). |
| 88 | + |
| 89 | +Documentation & Discoverability (as Needed) |
| 90 | +------------------------------------------- |
| 91 | + |
| 92 | +* If labeled “needs documentation” or if the change affects users noticeably: |
| 93 | + |
| 94 | + * Update or add content in the Pontoon documentation for localizers. |
| 95 | + |
| 96 | +* For major or high-impact features: |
| 97 | + |
| 98 | + * Core team may add in-app announcements. |
| 99 | + * The contributor might write a blog post on the `Mozilla L10n blog <https://blog.mozilla.org/l10n/>`_. |
0 commit comments