One sentence explaining what the proposal is about.


What are we doing? Why are we doing this? What are the goals? What are NON-goals? This section explains the project to someone not familiar with your project.


Related work in the TokTok or Tox projects? What similar projects exist? Links to external documents/wikipedia? Nothing about design/requirements here, just background.


Who are the customers for the solution? What are their needs? What is the problem space? This section estimates scale requirements. How much data needs to be stored/processed? What kind of data? What about latency/throughput/etc network requirements? How about growth?

Design Ideas

Overview of the design. If you have multiple viable ideas, list them all with pros and cons. Do not include code, only type signatures and explanations. Use diagrams if necessary. Major structural elements go here. Which existing technologies will be used? Which components will you write? How do they integrate? How will others integrate with them? What scaling parameters need to be considered most prominently? How will the product be rolled out to users? Implementation strategies go here, implementation does not.

Alternatives Considered

Describe alternatives to the design. Where choices within the design were made, write those choices inline in the document. This section contains completely different approaches, their pros and cons, and the reason for not choosing them. Also include “doing nothing” as one alternative.