wiki:org/sponsors/Sponsor31

Sponsor 31

Project Title - Modularization work Project Period: December 1, 2018 - November 30, 2019 Teams Involved: Network

Project Goals/Activities

The key deliverables of the modularization project are:

● Refactored architecture for how Tor modules should communicate, designed to reduce module complexity and maintenance burden. ● Architectural documentation for how Tor modules work with one another, covering both the actuality and the refactored architecture. ● New architecture for several key Tor modules. ● Improved testing for those modules. ● Improved documentation for those modules.

Milestones

  1. Determine how to best refactor modules to make them more resilient,segregated, and automatically testable. (288 hours) -- March 2019

1.1. Identify pieces that we have to refactor. (96 hours)

1.2. Draft initial design for each piece. (192 hours)

  1. Identify which parts of the codebase are most important to refactor first. (256 hours) -- April and August 2019

2.1. Discuss which parts to refactor first. (16 hours)

2.2. Research and discuss automated tooling. (48 hours)

2.3. Design tooling as needed. (48 hours)

2.4. Repeat the same tasks 2.1, 2.2 and 2.3 after milestone 4 is completed. (144 hours)

  1. Revise the system of interactions between modules to improve usability and maintainability. (88 hours) -- May 2019

3.1. Review publisher/subscriber design that Tor uses. (16 hours)

3.2. Implement refactoring. (72 hours)

  1. Create and deploy plan to incorporate refactored modules. (184 hours) -- August 2019

4.1. For each module and each architectural change, form a plan to apply that change to that module. This plan should include increased testing, if the module's test coverage is not already high. (160 hours)

4.2. For each plan formed in 4.1, deploy that plan. (24 hours)

  1. Create documentation for how Tor modules work with one another with both old and new architecture. (432 hours) -- December 2018

5.1. Update module documentation and incorporate into Tor. (96 hours)

5.2. Document existing refactoring. (144 hours)

5.3. Document new elements. (144 hours)

5.4. For modules we are not refactoring, document important interactions. (48 hours)

Project Tracking

Refactoring cross-module communications

#28226 Backend for an async publish-subcribe messaging system for cross-module communications (Tor 0.4.1)

Coding best practices

#29221 Tooling to track code-style/best-practices violations #29219 Write guidelines for Tor coding best practices #29220 Update review guidelines for practices #29223 List canonical abbreviations to use in Tor functions and identifiers

Refactoring modules

#29201 Tor bootstrap hangs when offline - Split up control.c #29209 Reduce visibility of more data type internals #29218 Revise "handles" to be opaque, safe. Document standard usage #29224 Abstractions and best practices for disabled modules #29217 Script to add new tor files and modules in rust and/or C #29227 Audit Tor roles (relay, bridge, etc) and remove needless dependencies where possible

Documentation

#29216 Document how to make new files/modules in Tor

Progress

Sponsor: Sponsor31-can (39 matches)

Ticket Summary Status Owner Keywords Priority
#25493 Improve patterns for cleaning up static variables on exit/restart new 034-triage-20180328, 034-roadmap-subtask, 034-included-20180405, 035-roadmap-subtask, 035-triaged-in-20180711, 040-deferred-201915 Medium
#28170 Test stem pull requests against all supported tor versions, and tor nightly builds needs_review ci, travis Medium
#29209 Reduce visibility of more data type internals new technical-debt refactoring Medium
#29210 Distribute control.c functionality across various modules new Medium
#29211 Distribute config.c functionality across more modules new Medium
#29212 Create more modularity inside src/core new Medium
#29213 Minimize the boundary between src/core and src/{feature,app} new Medium
#29214 Update 'tor-guts' archictecture documentation to describe current (actual, as-built) architecture. new Medium
#29215 Document target, modular tor architecture new Medium
#29216 Document how to make new files/modules in Tor new Medium
#29217 Script to add new tor files and modules in rust and/or C new Medium
#29218 Revise "handles" to be opaque, safe. Document standard usage new Medium
#29219 Write (more) guidelines for Tor coding best practices new doc Medium
#29220 Update review guidelines to list best practices new doc network-team-roadmap-2019-Q1Q2 Medium
#29222 Fix biggest violations of coding best-practices new Medium
#29224 Abstractions and best practices for disabled modules new Medium
#29225 Improve efficiency and flexibility of threadpool/workqueue API new Medium
#29226 Automate application of C formatting to code new Medium
#29227 Audit Tor roles (relay, bridge, etc) and remove needless dependencies where possible new Medium
#29228 Unify some or all of Tor's various message/event/work queues. new Medium
#29642 Free Windows library handles when we free_all in a module new tor-windows, memory-management, technical-debt Low
#29656 describe global initialization in our tinytest-based unit tests new developer-doc Medium
#29746 Improve Tor best practices tracker new practracker, tech-debt, refactoring, easy Medium
#29792 practracker problems and CI broken on master new practracker tech-debt tor-ci High
#29793 show-distdir-core and friends should fail more quietly new tor-ci, travis Medium
#29879 Make git-push-all.sh push branches in a specific order new tor-ci, tor-merge-scripts, fast-fix Medium
#29880 Write a script to update practracker on multiple branches new 042-must, tor-merge-scripts, tor-ci Medium
#29881 Create a GitHub bot that makes sure there is a pull request on master for every branch new tor-ci Medium
#29883 Enforce lower practracker limits for every new release new 042-proposed Medium
#29895 avoid storing ints in void* in mainloop event data new portability, technical-debt Medium
#29898 How can we automatically add #else and #endif comments? accepted nickm technical-debt Medium
#30050 Disable practracker in CI, when a release becomes a release candidate new practracker tech-debt tor-ci Medium
#30225 Run clang's scan-build in Tor's CI new tor-ci, correctness, coverity, clang, scan-build Medium
#30292 Refactor periodic event system so each subsystem "owns" its own periodic events assigned nickm Medium
#30349 Document member-hiding conventions for structs new technical-debt, refactoring Medium
#30527 Fix coverity warnings in test_parsecommon.c assigned nickm coverity technical-debt Medium
#30539 Add an "autostyle" target to apply all of our automatic restyling things. needs_review nickm technical-debt, 041-should Medium
#30593 Fix argument passing in docs/republish needs_review teor ci, travis Medium
#30594 stem unit tests fail on Tor 0.2.9, which is still supported until 1 January 2020 new atagar ci, travis, stem Medium

Sponsor: Sponsor31-must (2 matches)

Ticket Summary Status Owner Keywords Priority
#29223 List canonical abbreviations to use in Tor functions and identifiers needs_review nickm doc Medium
#30580 Tor rejects all POSTDESCRIPTOR controller requests merge_ready nickm 041-must, regression, 041-regression, asn-merge Medium

Last modified 5 weeks ago Last modified on Apr 22, 2019, 8:03:44 PM