New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Quality Assurance #58

Closed
anonimal opened this Issue Dec 25, 2015 · 1 comment

Comments

Projects
None yet
1 participant
@anonimal
Collaborator

anonimal commented Dec 25, 2015

Note: this ticket has been replaced with #323 and the following:

&anonimal | down the road when we get closer to release, open tickets designed for a full QA review of particular components
&anonimal | rather than continue to tally sporadic areas as we progress.  
&anonimal | So, if we ever coordinate a release date, 3-6 months before hand, *poof* open the ticket and follow QA model tooth and nail.

=======================================

Quality Assurance

Note: contributions/patches/new features are welcomed at any time during the cycle. Once this cycle has more experience, we should move it into our contributing guidelines.

Note: this cycle is currently under development; check back semi-often. All input is welcomed.

Phase 1: Basic Review

  1. All code must adhere to our guidelines in CONTRIBUTING.md.
  2. Refactor as needed according to guidelines
  3. Note areas that need improving (mentally or in code)
  4. Note/create TODO's and assign if possible

1st iteration

src/api | 16f808d b7c8f46 // Completed
src/client | 0c583ad 16f808d b7c8f46 a2a003b 2b81274 // Completed
src/core | b7c8f46 1fdccd9 99dfaea 90b38bc 956ca96 ce8bc7d 0488e7f // Completed
src/tests | 0488e7f // Completed

2nd iteration

TODO // Only after a completed cycle or if necessary

Phase 2: Spec Comparison / Code documentation

  1. Doxygen support
  2. Complete spec review and comparison on a per module basis; e.g., Streaming, I2PControl, etc.
  3. Refactor/implement/patch when/where needed
  4. The code must be in-line with essential parts of the specification that maintain the same level of anonymity that java i2p provides.
  5. Document code as much as possible
  6. Code should be understood from novice to experienced coders
  7. Code should guide the reader to an understanding of I2P. I2P is very complex so our code should act as sovereign replacement of current documentation and not simply as a supplement. This can be a tedious objective but very rewarding in terms of maintenance and software lifespan.
  8. If satisfied, proceed with next phase, else repeat this phase or start from a previous phase..

1st iteration

  1. Doxygen support | 6f309ee 6ac853b ad065b6 // Completed
API
  1. Datagram | // TODO
  2. I2PControl | 3d47e52 // In Progress
  3. I2PTunnel | // TODO
  4. Streaming | // TODO
Client
  1. Addressbook // TODO
  2. Destination // TODO
Core
  1. Crypto | // TODO
  2. Transport | 1dcbe27 #123 #165 #187 // In Progress
  3. Tunnel | a2a003b 9dd3dc0 // In Progress
  4. Garlic | 82650a2
  5. I2NP | 6df2efd #125 // In Progress
  6. Identity | // TODO
  7. Leaseset | // TODO
  8. NetDB | // TODO
  9. Profiling | // TODO
  10. Reseed | #162

Phase 3: Implementation / Crypto Review

  1. An extension of phase 2: review that implementations are properly implemented
  2. Resolve all related TODO's
    21:49:09 zzz | the moral of the story is, you need both timestamps and bloom filters to catch dups, no use having one without the other, and they have to have overlapping thresholds
  3. Make sure crypto is up to date and properly implemented
  4. If satisfied, proceed with next phase, else repeat this phase or start from a previous phase.

1st iteration

TODO

Phase 4: Security auditing

  1. Establish every vector for known exploitation
  2. Keep these vectors in mind when writing tests
  3. Break Kovri every which-way possible and then patch it up
  4. Use libraries when possible
  5. 2016-01-07 17:42:57 zzz anonimal, , while you are reviewing the code for buffer overflows - another pitfall is 4-byte length fields in several protocols. Any place there's a 4-byte length, be sure there's a bounds check to protect against OOM DoS
  6. If satisfied, proceed with next phase, else repeat this phase or start from a previous phase.

1st iteration

TODO

Phase 5: Bug squashing

  1. Resolve priority bugs/issues
  2. If satisfied, proceed with next phase, else repeat this phase or start from a previous phase.

1st iteration

TODO

Phase 6: Tests / Profiling

  1. Establish testing framework.
  2. Write tests for every api/client/core module.
  3. Run tests. Run them again.
  4. Full review of test results. Patch if needed. Refactor as necessary.
  5. Run valgrind. Patch if needed. Refactor as necessary.
  6. If satisfied, proceed with next phase, else repeat this phase or start from a previous phase.

1st iteration

TODO

Phase 7: Confer

  1. Confer with colleagues and the community
  2. Accept all feedback and, in response, produce tangible results
  3. Conferring should be done publicly via ticket, meetings, and/or on Irc2P/Freenode: #kovri-dev
  4. If satisfied, proceed with next phase, else repeat this phase or start from a previous phase.

1st iteration

TODO

Phase 8: Repeat the cycle, start from the beginning

1st iteration

TODO

@anonimal anonimal self-assigned this Dec 25, 2015

anonimal added a commit that referenced this issue Dec 29, 2015

Initial refactor of src/core (unfinished). See #58
* Refactor Addressbook
* Cleanup previous refactor work of src/{api,client}

anonimal added a commit that referenced this issue Dec 30, 2015

More refactoring of src/core (unfinished). See #58
* Finished refactoring src/core/{*.cpp,*.h}

anonimal added a commit that referenced this issue Dec 31, 2015

anonimal added a commit that referenced this issue Jan 2, 2016

anonimal added a commit that referenced this issue Jan 3, 2016

Refactor src/core/tunnel. See #58.
* Moved TunnelCrypto.{cpp,h} to src/core/crypto, renamed to Tunnel.{cpp,h}.

theaky added a commit to theaky/kovri that referenced this issue Jan 3, 2016

Refactor src/core/tunnel. See monero-project#58.
* Moved TunnelCrypto.{cpp,h} to src/core/crypto, renamed to Tunnel.{cpp,h}.

anonimal added a commit that referenced this issue Jan 3, 2016

anonimal added a commit that referenced this issue Jan 4, 2016

Complete 1st iteration of phase 1 in #58.
* Finish refactoring src/core/util
* Refactor src/tests

anonimal added a commit that referenced this issue Jan 6, 2016

anonimal added a commit that referenced this issue Jan 10, 2016

Fixed reseed SIGABRT and more. Fixes #62.
* Fixed warnings from new logger
  - Commented-out unimplemented code
* Began I2PControl work for #58
  - Initial spec review (mental notes)
  - Initial refactoring and documentation (minor)
  - Discovered #63
* Updated kovri.conf

anonimal added a commit that referenced this issue Jan 12, 2016

anonimal added a commit to anonimal/kovri that referenced this issue Aug 25, 2016

Docs: implement Quality Assurance guide. Refs monero-project#58
We're pulling monero-project#58 apart in an attempt to streamline a QA model.
See pull-request for details.

anonimal added a commit that referenced this issue Aug 25, 2016

Merge pull request #323
44daa5a Docs: consolidate + improve Quality Assurance guide (anonimal)
1462240 Docs: implement Quality Assurance guide. Refs #58 (anonimal)
@anonimal

This comment has been minimized.

Collaborator

anonimal commented Aug 25, 2016

Note: this ticket has been replaced with #323 and the following:

&anonimal | down the road when we get closer to release, open tickets designed for a full QA review of particular components
&anonimal | rather than continue to tally sporadic areas as we progress.  
&anonimal | So, if we ever coordinate a release date, 3-6 months before hand, *poof* open the ticket and follow QA model tooth and nail.

@anonimal anonimal closed this Aug 25, 2016

EinMByte added a commit to EinMByte/kovri that referenced this issue Aug 26, 2016

Merge pull request #5
f936ffe Docs: remove EC2 build instructions (anonimal)
44daa5a Docs: consolidate + improve Quality Assurance guide (anonimal)
1462240 Docs: implement Quality Assurance guide. Refs monero-project#58 (anonimal)
719b7e8 Build: temporarily disable running tests after build (anonimal)
3a41c64 Docs: update Debian and Ubuntu build instructions (anonimal)
683a95a Docs: cleanup + update readme and building docs (anonimal)
9a8b88e Build: remove CXXFLAGS from Travis CI. Refs monero-project#316 (anonimal)
74f80fd Build: add CXXFLAGS for clang/cryptopp to Makefile (anonimal)
134791c Config: refactor command-line handler + update config file (anonimal)
79db048 Config: update and document kovri config file (anonimal)
f97cb1f Config/Daemon: clarify service option + refactor/remove deprecations (anonimal)
c7e54e6 Config: consolidate options + groupings. Refs monero-project#214 (anonimal)
87febb7 Log: remove deprecations marked TODO. Refs monero-project#214 (anonimal)
85415fe Log: implement options log-to-console/log-to-file + improve file logging (anonimal)
3ab8c07 Log: implement file logging. References monero-project#214 (anonimal)
f77fa78 Log: remove unneeded null_deleter check + redundant headers (anonimal)
48872a2 Build: add tests-optimized-hardening Makefile target (anonimal)
9542007 Build: update Makefile and build docs. Fixes monero-project#310 (anonimal)
703a268 Build: update OSX dependencies for Travis CI (anonimal)
263f881 Build: fix missed header guards + guard comments for monero-project#303 (anonimal)
1bb160c Build: add removal of doxygen output to make clean (anonimal)
418fa08 Configure OS X build on Travis-CI (rakhimov)
5a1de2c Reseed: add new server reseed.atomike.ninja (anonimal)
2d699b9 Doxygen: remove input filter + fix input & CMake (anonimal)
04a062a Style: rename common files to common idiom names (anonimal)
30d169d Style: move network_database -> net_db. Refs monero-project#280 (anonimal)
deba858 Build: update header guards. Fixes monero-project#303 (anonimal)
41f2237 Build: fix filename that broke tests build (anonimal)
ed52f05 Build: fix headers + cmake missed in 9c3dfba (anonimal)
ea3c1ea Initialize several unitialized members (monero-project#263). (EinMByte)
9c3dfba snake_case (guzzi_jones)
c77510f Style: remove file guidelines from guide. Refs monero-project#280 (anonimal)
da2ac61 Tests: adjust CMake for .cpp -> .cc from 2ade4a8 (anonimal)
57c8e80 rename files with snake case (guzzi_jones)
455349c Build: reinstate FreeBSD build. Resolves monero-project#176 (anonimal)
5f5b4a6 AddressBook: add custom hosts.txt file to package (anonimal)
388bf40 HTTP: implement SNI + update reseed. Fixes monero-project#129 (anonimal)
95c1ad5 Build: add CMake Boost min req + s/SEND_/FATAL_/g (anonimal)
2b8af8e Build: add compiler version requirements to CMake (anonimal)
9530329 Docs: trivial cleanup of style guide (anonimal)
90c9ed8 Docs: update minimum requirements + instructions (anonimal)
b50d936 Update dead link. (Patrick Alexander)
5286d91 Configure clang with gcc 4.9 on Travis-CI (rakhimov)
3e0577a Build: add windows msys2/mingw-w64 to build docs (anonimal)
611aa8c Build: fix compilation on mingw-w64. Refs monero-project#36 (anonimal)
749a04e mingw doesn't like c_str here (luigi1111)
9cb9b6e Build: update cryptopp submodule. Refs monero-project#36 (anonimal)
f075dea Build: remove clang from Travis CI. Refs monero-project#277 monero-project#278 (anonimal)
d0a5462 Build: fix clang build on Travis CI. Fixes monero-project#277 (anonimal)
7b5578d Docs: clarify Trusty 14.04 build instructions (anonimal)
fecabd2 Build: add boost status message in cmake (anonimal)
e3bd1f6 Build: uppercase Kovri resource dir for OSX/Win (anonimal)
f95a8ea Build: reduce build time + Makefile cleanup/fix (anonimal)
caa8ac2 Build: remove after_success from Travis CI (anonimal)
c8ead36 Build: run tests after successful make tests build (anonimal)
e8f615d License: revert copyright errors introduced in 2ade4a8 (anonimal)
2ade4a8 Added instructions for Amazon EC2 instance adjusted license comment renamed all .cpp files remove mv.sh fixed CMakeLists.txt files with new .cc removed t.txt fixed comments.  appended // to original comments missed util files (guzzi_jones)
7551d23 Docs: update .clang-format + update style guide (anonimal)
44e64e8 Travis-CI: comment clang build for reasons in monero-project#227 (anonimal)
cd4bd6a Docs: remove redundant export line for OSX (anonimal)
3d1ff55 Build: update clang/cryptopp instructions + Travis (anonimal)
08b51dc Travis-CI: fix clang version typo + gcc version (anonimal)
287ba83 Build: attempt multi-compiler in Travis CI (anonimal)
e8b1a3a Docs: bring back clang support in building doc (anonimal)
cc7aa70 Makefile: add flags for cryptopp clang support (anonimal)
90a90aa CMake: replace -std=c++14 with -std=c++1y for clang (anonimal)
41f7e40 Crypto: remove compression patch for cryptopp (anonimal)
562f9af Build: remove cryptopp dependency in travis and docs (anonimal)
ff23ded Build: fix cmake cryptopp link failure for 2.8.12 (anonimal)
ad73ea2 Build: cleanup cryptopp recipe in cmake (anonimal)
87e02b8 Build: fix wrong path in cmake for cryptopp libs (anonimal)
609a4a3 Build: implement cryptopp submodule. Fixes monero-project#210 (anonimal)
8167d44 Docs: add acknowledgements, move to doc directory (anonimal)
d696b33 Docs: clarify pull-request in contributing guide (anonimal)
5f11427 Docs: update pull-request template (anonimal)
814d8c9 Docs: update to reflect drop of branch development (anonimal)
4900040 Travis CI: remove on_success/on_failure (anonimal)
7ca81e9 Config: add reseed to cli help options. (anonimal)
fc4a796 Travis-CI: add full path for tests/benchmarks (anonimal)
d7d96f9 Travis-CI: move tests/benchmarks to script: (anonimal)
b6f38df Build: run tests and benchmarks on Travis CI (anonimal)
15f05e7 Build: update/cleanup Travis CI (anonimal)
691075f Makefile: add disable-options / add missing PHONY (anonimal)
88177fa Build: add/refactor targets in Makefile (anonimal)
038547b Build: fix shell warning in Makefile + refactor. (anonimal)
a07ec90 HTTP: rewrite URI parser. Fixes monero-project#257 (anonimal)
e33a368 Build: add commented YAML for travis-ci/travis-ci#5427 (anonimal)
f7c6786 Build: remove Coverity from Travis-CI. Closes monero-project#209 (anonimal)
ed9c8a8 Build: experiment with cov-configure in Travis-CI (anonimal)
dfccdc0 Docs: first-draft update of FAQ. Resolves monero-project#255. (anonimal)
7aa893e Docs: update boost 1.58 min req + add instructions (anonimal)
8d8d811 Build: add libboost-test1.58* to travis-ci. Refs monero-project#254. (anonimal)
d1130b3 Build: add -y to add-apt-repository in travis-ci. (anonimal)
8a7341f Build: fix typo in before_install in travis-ci. (anonimal)
8427401 Build: add boost 1.58 to travis-ci. Refs monero-project#254. (anonimal)
b916307 Build: add PHONY 'dependencies' to Makefile. (anonimal)
0d82989 Build: implement cpp-netlib (submodule/cmake/make/docs) (anonimal)
98a852b Build: add make install-resources to Travis-CI. (anonimal)
a96ac2b Docs: update build instructions for make install-resources (anonimal)
37c1cfd Build: fix Windows APPDATA path in Makefile. Refs monero-project#45. (anonimal)
8ea8276 Build: implement make install-resources. Fixes monero-project#45. (anonimal)
e70bd97 Build: fix shell'ism issue with travis. Refs monero-project#250. (anonimal)
db40f73 Build: fix travis error from timeout. Refs monero-project#249. (anonimal)
d531a5d Docs: add Clang to build instructions. Refs monero-project#242. (anonimal)
b3745b7 Build: allow passing CC/CXX from Makefile to CMake. (anonimal)
ba0385a Build: simplify build process. Resolves monero-project#242. (anonimal)
6675ec8 Docs: add contact info to README. Refs monero-project#241. (anonimal)
993a966 Docs: update and clarify style guide. Refs monero-project#245. (anonimal)
43621de Style: Clarify deviations from the GCSG (rakhimov)
b6c4d76 Fix StringStream::Seekg signature (rakhimov)
0527b14 Coverity: Remove unnecessary certificate fetch (rakhimov)
8230e46 Fix compilation with Clang 3.8 (rakhimov)
b219398 Add ClangFormat config for Google C++ Style (rakhimov)
527826e Docs: cleanup quickstart in README.md (anonimal)
bb6dfd7 Docs: add license status-badge to README.md (anonimal)
99e3bb9 Docs: add branch instructions to pull-request template. (anonimal)
31da8f0 Docs: update pull-request template's license caveat. (anonimal)
91a8ecc Docs: change links to cpplint project (rakhimov)
34c45cc Docs: fix trivial numbering in contributing guide. (anonimal)
eea4075 Crypto: use constant-time comparison in ed25519. (anonimal)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment