nostr
nostr copied to clipboard
project: create rules for editing, testing and documenting.
nostr
project has been created as an academic/educational project. The main goal is to teach Erlang programming by using a recent and modern protocol from scratch, and delivering a high quality level application, highly tested and documented. This project is trying to follow the KISS principles.
Documentation
- user documentation must include examples
- user documentation must be accessible and correct
- development documentation should be available
- exported interfaces must be documented
- private interfaces should be documented internally to explain the "why" or point to an issue on github
- if literate programming can be used, use it.
- if a schema or a diagram is needed, creates one (using draw.io)
Testing
- functions and modules should be designed using TDD principle with
eunit
module -
eunit
module can be included in any modules if required - new features must be tested with
common_test
module - regression testing must use
common_test
module - all tests must succeed before merging in
main
branch
Benchmarking
- before merging, a benchmark should be available
- the benchmark should be done automatically on a pipeline (github action workflow)
Packaging
- must work on all major operating systems available on the market
- virtual machines should be available to help developers
- docker image should be available to help deployment
Versions, Releases and Milestones
-
nostr
is following semantic versioning - releases are following milestones
- releases are named with artists names and one of their song
- the
0.X.Y
releases are using jazz band/artist names (hard bop if possible) with a song - the
1.X.Y
release will use metal band/artist names with a song