Create a unified package naming scheme for all metrics code bases
The discussion behind #24028 (moved) made me think whether we could find a unified package naming scheme for all metrics code bases.
I reserve the right to come up with an even smarter plan after today, but sharing my thoughts here might allow us to come up with an even smarterer plan together.
=Current code base | =Current package and classes, starting with org.torproject.
|
=Suggested package, starting with org.torproject.metrics.
|
=Suggested code base, only if different |
---|---|---|---|
CollecTor | collector (1) | collector | |
CollecTor | collector.bridgedescs (3) | collector.bridgedescs | |
CollecTor | collector.conf (5) | collector.conf | |
CollecTor | collector.cron (3) | collector.cron | |
CollecTor | collector.exitlists (1) | collector.exitlists | |
CollecTor | collector.index (1) | index | metrics-lib (*1) |
CollecTor | collector.onionperf (2) | collector.onionperf | |
CollecTor | collector.persist (12) | collector.persist | |
CollecTor | collector.relaydescs (6) | collector.relaydescs | |
CollecTor | collector.sync (4) | collector.sync | |
ExoneraTor | exonerator.ExoneraTorDatabaseImporter | exonerator | |
ExoneraTor | exonerator.ExoneraTorServlet | web | metrics-web (*2) |
ExoneraTor | exonerator.QueryServlet | exonerator | |
ExoneraTor | exonerator.QueryResponse | exonerator | metrics-lib (*3) |
metrics-lib | descriptor (28) | descriptor | |
metrics-lib | descriptor.impl (31) | descriptor.impl | |
metrics-lib | descriptor.index (4) | index (*4) | |
metrics-lib | descriptor.internal (1) | util (*5) | |
metrics-web | metrics.advbwdist (1) | stats.advbwdist | |
metrics-web | metrics.clients (1) | stats.clients | |
metrics-web | metrics.collectdescs (1) | stats.collectdescs | |
metrics-web | metrics.connbidirect (1) | stats.connbidirect | |
metrics-web | metrics.hidserv (11) | stats.hidserv | |
metrics-web | ernie.cron (6) | stats.servers (*6) | |
metrics-web | metrics.onionperf (1) | stats.onionperf | |
metrics-web | metrics.webstats (1) | stats.webstats | |
metrics-web | metrics.web (27) | web | |
metrics-web | metrics.web.graphs (7) | web.graphs | |
metrics-web | metrics.web.research (1) | web (*7) | |
Onionoo | onionoo.cron (1) | onionoo.cron | |
Onionoo | onionoo.docs (21) | onionoo.docs | metrics-lib (*8) |
Onionoo | onionoo.server (15) | onionoo.server | |
Onionoo | onionoo.updater (18) | onionoo.updater | |
Onionoo | onionoo.util (1) | util | metrics-lib (*9) |
Onionoo | onionoo.writer (8) | onionoo.writer |
(*1) Right now, only CollecTor produces an index.json file, but with #23285 (moved) we might extend that to metrics-web producing an index.json file of available stats files.
(*2) This is part of moving all presentation things to metrics-web, including ExoneraTor (#23549 (moved)), and once we do that we'll have to write and read the QueryResponse from two different code bases.
(*3) See (*2).
(*4) These classes don't depend on the descriptor-parsing part of metrics-lib but are generally useful for other metrics code bases.
(*5) See (*4), though we might rename "internal" to "util" to focus what this package is for (utility classes) rather than who it's not for (external folks).
(*6) The old package name is so legacy, let's take the opportunity to pick a more useful name now. It's all about servers and bandwidth (provided by servers).
(*7) This servlet class is the last survivor of the "research" package and could as well join the other servlets.
(*8) Moving the docs to metrics-lib would allow metrics-bot and other Java Onionoo clients to use Onionoo documents without writing their own parser.
(*9) We could gather all utility-type classes that are truly independent of their respective code bases in metrics-lib.