1.. _seed-0002: 2 3=================== 40002: SEED Template 5=================== 6.. seed:: 7 :number: 2 8 :name: SEED Template 9 :status: Open for Comments 10 :proposal_date: 2022-11-30 11 :cl: 123090 12 :authors: The Pigweed Team 13 :facilitator: Unassigned 14 15------- 16Summary 17------- 18Write a brief paragraph outlining your proposal. If the SEED supersedes another, 19mention it here. 20 21---------- 22Motivation 23---------- 24Describe the purpose of this proposal. What problem is it trying to solve? 25Include any relevant background information. 26 27-------- 28Proposal 29-------- 30In this section, provide a detailed treatment of your proposal, and the 31user-facing impacts if the proposal were to be accepted. Treat it as a 32reference for the new feature, describing the changes to a user without 33background context on the proposal, with explanations of key concepts and 34examples. 35 36For example, if the proposal adds a new library, this section should describe 37its public API, and be written in the style of API documentation. 38 39--------------------- 40Problem investigation 41--------------------- 42This section contains detailed research into the problem at hand. Crucially, the 43focus here is on the problem itself --- *not* the proposed solution. The purpose 44is to convince stakeholders that the proposal is addressing the right issues: 45there needs to be agreement on the *why* before they can think about the *how*. 46 47Generally, this section should be the primary focus of the proposal. 48 49Considerations which should be made in the investigation include: 50 51- How does this problem currently impact stakeholders? 52 53- What kinds of use cases, both specific and general, are being addressed? What 54 are their priorities? What use cases are *not* being considered, and why? 55 56- Examination of any "prior art". Are there existing solutions to this problem 57 elsewhere? What attempts have previously been made, and how do they compare to 58 this proposal? What are the benefits and drawbacks of each? 59 60- Is there a workaround for this problem currently in use? If so, how does it 61 work, and what are its drawbacks? 62 63- Are there existing Pigweed decisions or policies which are relevant to this 64 issue, and can anything be learned from them? 65 66- If the problem involves data not under Pigweed's control, consider the 67 security and privacy implications. 68 69The depth of the problem investigation should increase proportionally to the 70scope and impact of the problem. 71 72--------------- 73Detailed design 74--------------- 75If the proposal includes code changes, the detailed design section should 76explain the implementation at a technical level. It should be sufficiently 77detailed for a developer to understand how to implement the proposal. 78 79Any of the following should be discussed in the design, if applicable: 80 81- API design. 82- Internal data storage / layout. 83- Interactions with existing systems. 84- Similar existing Pigweed APIs: consider framework-wide consistency. 85- Testing strategies. 86- Performance. 87- Code / memory size requirements. 88- If an existing implementation is being changed, will there be backwards 89 compatibility? 90 91This section may also choose to link to a prototype implementation if one is 92written. 93 94------------ 95Alternatives 96------------ 97Describe what alternative solutions to the problem were considered, referencing 98the problem investigation as necessary. 99 100Additionally, consider the outcome if the proposal were not to be accepted. 101 102-------------- 103Open questions 104-------------- 105Are there any areas of the problem that are not addressed by this proposal, and 106is there a plan to resolve them? Does this proposal have implications beyond its 107described scope? 108 109If there are anticipated to be additional SEEDs to address outstanding issues, 110reference them here, linking to them if they already exist. 111