mirror of
https://github.com/zephyrproject-rtos/zephyr
synced 2025-09-18 05:41:57 +00:00
All docs should have a label at the top that would permit cross-document linking via :ref:`labelname`. Update "testing" label that would have conflicted and fix the only reference to the old "testing" label in development process documentation. Signed-off-by: David B. Kinder <david.b.kinder@intel.com>
135 lines
5.5 KiB
ReStructuredText
135 lines
5.5 KiB
ReStructuredText
.. _feature-tracking:
|
||
|
||
Feature Tracking
|
||
#################
|
||
|
||
For feature tracking we use Github labels to classify new features and
|
||
enhancements. The following is the description of each category:
|
||
|
||
Enhancement
|
||
Changes to existing features that are not considered a bug and would not
|
||
block a release. This is an incremental enhancement to a feature that already
|
||
exists in Zephyr.
|
||
|
||
Feature request
|
||
A request for a feature that is not part of any release plans yet, that has
|
||
not been vetted, and needs further discussion and details.
|
||
|
||
Feature
|
||
A committed and planned feature with a detailed design and implementation
|
||
proposal and an owner. Features must go through an RFC process and must be
|
||
vetted and discussed in the TSC before a target milestone is set.
|
||
|
||
The following workflow should be used to process features:.
|
||
|
||
This is the formal way for asking for a new feature in Zephyr and indicating its
|
||
importance to the project. Often, the requester may have a readiness and
|
||
willingness to drive implementation of the feature in an upcoming release, and
|
||
should assign the request to themselves.
|
||
If not though, an owner will be assigned after evaluation by the TSC.
|
||
A feature request can also have a companion RFC with more details on the feature
|
||
and a proposed design or implementation.
|
||
|
||
- Label new features requests as ``feature-request``
|
||
- The TSC discusses new ``feature-request`` items regularly and triages them.
|
||
Items are examined for similarity with existing features, how they fit with
|
||
the project goals and other timeline considerations. The priority is
|
||
determined as follows:
|
||
|
||
- High = Next milestone
|
||
- Medium = As soon as possible
|
||
- Low = Best effort
|
||
|
||
- After the initial discussion and triaging, the label is moved from
|
||
``feature-request`` to ``feature`` with the target milestone and an assignee.
|
||
|
||
All items marked as ``feature-request`` are non-binding and those without an
|
||
assignee are open for grabs, meaning that they can be picked up and implemented
|
||
by any project member or the community. You should contact an assigned owner if
|
||
you'd like to discuss or contribute to that feature's implementation
|
||
|
||
|
||
Proposals and RFCs
|
||
*******************
|
||
|
||
Many changes, including bug fixes and documentation improvements can be
|
||
implemented and reviewed via the normal GitHub pull request workflow.
|
||
|
||
Many changes however are "substantial" and need to go through a
|
||
design process and produce a consensus among the project stakeholders.
|
||
|
||
The "RFC" (request for comments) process is intended to provide a consistent and
|
||
controlled path for new features to enter the project.
|
||
|
||
Contributors and project stakeholders should consider using this process if
|
||
they intend to make "substantial" changes to Zephyr or its documentation. Some
|
||
examples that would benefit from an RFC are:
|
||
|
||
- A new feature that creates new API surface area, and would require a feature
|
||
flag if introduced.
|
||
- The removal of features that already shipped as part of Zephyr.
|
||
- The introduction of new idiomatic usage or conventions, even if they do not
|
||
include code changes to Zephyr itself.
|
||
|
||
The RFC process is a great opportunity to get more eyeballs on proposals coming
|
||
from contributors before it becomes a part of Zephyr. Quite often, even
|
||
proposals that seem "obvious" can be significantly improved once a wider group
|
||
of interested people have a chance to weigh in.
|
||
|
||
The RFC process can also be helpful to encourage discussions about a proposed
|
||
feature as it is being designed, and incorporate important constraints into the
|
||
design while it's easier to change, before the design has been fully
|
||
implemented.
|
||
|
||
Some changes do not require an RFC:
|
||
|
||
- Rephrasing, reorganizing or refactoring
|
||
- Addition or removal of warnings
|
||
- Addition of new boards, SoCs or drivers to existing subsystems
|
||
- ...
|
||
|
||
Roadmap and Release Plans
|
||
*************************
|
||
|
||
Project roadmaps and release plans are both important tools for the project, but
|
||
they have very different purposes and should not be confused. A project roadmap
|
||
communicates the high-level overview of a project's strategy, while a release
|
||
plan is a tactical document designed to capture and track the features planned
|
||
for upcoming releases.
|
||
|
||
- The project roadmap communicates the why; a release plan details the what
|
||
- A release plan spans only a few months; a product roadmap might cover a year
|
||
or more
|
||
|
||
|
||
Project Roadmap
|
||
================
|
||
|
||
The project roadmap should serve as a high-level, visual summary of the
|
||
project's strategic objectives and expectations.
|
||
|
||
If built properly, the roadmap can be a valuable tool for several reasons. It
|
||
can help the project present its plan in a compelling way to existing and new
|
||
stakeholders, to help recruit new members and it can be a helpful resource the
|
||
team and community can refer to throughout the project's development, to ensure
|
||
they are still executing according to plan.
|
||
|
||
As such, the roadmap should contain only strategic-level details—major project
|
||
themes, epics, and goals.
|
||
|
||
|
||
Release Plans
|
||
==============
|
||
|
||
The release plan comes into play when the project roadmap’s high-level strategy
|
||
is translated into an actionable plan built on specific features, enhancements,
|
||
and fixes that need to go into a specific release or milestone.
|
||
|
||
The release plan communicates those features and enhancements slated for your
|
||
project' next release (or the next few releases). So it acts as more of a
|
||
project plan, breaking the big ideas down into smaller projects the community
|
||
and main stakeholders of the project can make progress on.
|
||
|
||
Items labeled as ``features`` are short or long term release items that shall
|
||
have an assignee and a milestone set.
|