Election-Tech-Initiative / Election-Tech-Initiative/electionguard
✨ Create a formal specification of the election record serialization format
- Dominant language
- Python
- Stars
- 872
- Forks
- 131
- PR merge metrics
- No merged PRs in 30d
Description
### Is there an existing issue for this?
- [X] I have searched the existing issues
### Suggestion
A formal specification is needed to prevent needless churn among collaborators. Its ok if it needs to be changed before finalization, but we need a clear spec in order to identify bugs in our code and the reference code.
We will have to decide how to specify. Could be an abstract language (UML?) or something ad-hoc or ? It has to describe how to translate JSON encoding into a language specific data type.
For example the field may be an enum, and has to match the list of enum names in the reference library. For integers, typically you also specify size and signedness (16 bits unsigned, etc), though its ok to just use one type big enough for everything. A BigInteger has to be distinguished from a regular integer, and its string encoding (hex, base64, decimal) specified.
Theres really a small number of such base types, and not hard to do. The various implementors can then weigh in on any issues they have, and a consensus should emerge quickly.
### Possible Implementation
I would be happy to make a first draft if that would be helpful.
### Anything else?
_No response_
Contributor guide
Assessment
This issue has not been assessed yet.