blob: d6700a36188f6debf9b268110e06dcd128e9b973 [file] [log] [blame]
.. _seed-0002:
===================
0002: SEED Template
===================
.. card::
:fas:`seedling` SEED-0002: :ref:`SEED Template<seed-0002>`
:octicon:`comment-discussion` Status:
:bdg-primary:`Open for Comments`
:octicon:`chevron-right`
:bdg-secondary-line:`Last Call`
:octicon:`chevron-right`
:bdg-secondary-line:`Accepted`
:octicon:`kebab-horizontal`
:bdg-secondary-line:`Rejected`
:octicon:`calendar` Proposal Date: 2022-11-30
:octicon:`code-review` CL: `pwrev/123090 <https://pigweed-review.git.corp.google.com/c/pigweed/pigweed/+/123090>`_
-------
Summary
-------
Write a brief paragraph outlining your proposal. If the SEED supersedes another,
mention it here.
----------
Motivation
----------
Describe the purpose of this proposal. What problem is it trying to solve?
Include any relevant background information.
---------------
Guide reference
---------------
In this section, detail the user-facing impacts if the proposal were to be
accepted. Treat it as a reference for the new feature, describing the changes to
a user without background context on the proposal, with explanations of key
concepts and examples.
For example, if the proposal adds a new library, this section should describe
its public API, and be written in the style of API documentation.
---------------------
Problem investigation
---------------------
This section contains detailed research into the problem at hand. Crucially, the
focus here is on the problem itself --- *not* the proposed solution. The purpose
is to convince stakeholders that the proposal is addressing the right issues:
there needs to be agreement on the *why* before they can think about the *how*.
Generally, this section should be the primary focus of the proposal.
Considerations which should be made in the investigation include:
- How does this problem currently impact stakeholders?
- What kinds of use cases, both specific and general, are being addressed? What
are their priorities? What use cases are *not* being considered, and why?
- Examination of any "prior art". Are there existing solutions to this problem
elsewhere? What attempts have previously been made, and how do they compare to
this proposal? What are the benefits and drawbacks of each?
- Is there a workaround for this problem currently in use? If so, how does it
work, and what are its drawbacks?
- Are there existing Pigweed decisions or policies which are relevant to this
issue, and can anything be learned from them?
- If the problem involves data not under Pigweed's control, consider the
security and privacy implications.
The depth of the problem investigation should increase proportionally to the
scope and impact of the problem.
---------------
Detailed design
---------------
If the proposal includes code changes, the detailed design section should
explain the implementation at a technical level. It should be sufficiently
detailed for a developer to understand how to implement the proposal.
Any of the following should be discussed in the design, if applicable:
- API design.
- Internal data storage / layout.
- Interactions with existing systems.
- Similar existing Pigweed APIs: consider framework-wide consistency.
- Testing strategies.
- Performance.
- Code / memory size requirements.
- If an existing implementation is being changed, will there be backwards
compatibility?
This section may also choose to link to a prototype implementation if one is
written.
------------
Alternatives
------------
Describe what alternative solutions to the problem were considered, referencing
the problem investigation as necessary.
Additionally, consider the outcome if the proposal were not to be accepted.
--------------
Open questions
--------------
Are there any areas of the problem that are not addressed by this proposal, and
is there a plan to resolve them? Does this proposal have implications beyond its
described scope?
If there are anticipated to be additional SEEDs to address outstanding issues,
reference them here, linking to them if they already exist.