.. _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.
