Skip to content

Codebase metrics

A measured snapshot of the orchestra codebase and its submodules, counted with cloc. Charts show code lines (blank and comment lines excluded) unless stated otherwise.

Snapshot

Measured on the 1.x branch, 2026-07-02. 694 files, 53,929 lines of code, 27,159 comment lines, 9,288 blank (90,376 lines in total). See Methodology to reproduce.

At a glance

Code Comment Blank Files Production Test
53,929 27,159 9,288 694 34,624 19,305

Production vs test

orchestra ships 19,305 lines of test code backing 34,624 lines of production code, a 56% test-to-production ratio.

Production 34,624 · 64% Test 19,305 · 36%

Lines by language

PHP 38,121 YAML 7,508 Markdown 5,410 PO File 2,358 JavaScript 339 CSS 81 JSON 44 Text 29 SVG 21 HTML 18
Language Code Comment Blank Files
PHP 38,121 26,642 6,949 457
YAML 7,508 286 169 150
Markdown 5,410 0 1,074 47
PO File 2,358 29 1,054 29
JavaScript 339 173 24 5
CSS 81 28 17 2
JSON 44 0 0 1
Text 29 0 0 1
SVG 21 1 1 1
HTML 18 0 0 1

Composition

Across all languages, code is 60% of the lines, comments 30%, and blank lines 10%. The comment share reflects Drupal's docblock conventions.

Code 53,929 · 60% Comment 27,159 · 30%

By submodule

Production (brass) and test (steel) code per submodule, largest first.

orchestra (core) 21,281 orchestra_inbox 4,617 orchestra_views 3,374 orchestra_interaction 2,620 orchestra_cm 2,301 orchestra_ui 2,245 orchestra_interaction_webform 2,003 orchestra_examples 1,764 orchestra_modeler 1,413 orchestra_webform_example 1,364 orchestra_content 1,286 orchestra_eca 946 orchestra_easy_email 784 orchestra_bpmn_io 777 orchestra_action 765 orchestra_server_api 711 orchestra_audit_trail 705 orchestra_task_interaction 666 orchestra_client 628 orchestra_content_moderation 535 orchestra_content_eca 461 orchestra_api 427 orchestra_vbo_inbox 387 orchestra_notification 375 orchestra_interaction_notification 348 orchestra_inbox_notification 311 orchestra_vbo 286 orchestra_mail 240 orchestra_domain 169
Submodule Production Test Total
orchestra (core) 15,029 6,252 21,281
orchestra_inbox 2,131 2,486 4,617
orchestra_views 2,886 488 3,374
orchestra_interaction 1,402 1,218 2,620
orchestra_cm 1,343 958 2,301
orchestra_ui 1,588 657 2,245
orchestra_interaction_webform 798 1,205 2,003
orchestra_examples 1,421 343 1,764
orchestra_modeler 585 828 1,413
orchestra_webform_example 1,229 135 1,364
orchestra_content 656 630 1,286
orchestra_eca 495 451 946
orchestra_easy_email 632 152 784
orchestra_bpmn_io 505 272 777
orchestra_action 364 401 765
orchestra_server_api 336 375 711
orchestra_audit_trail 433 272 705
orchestra_task_interaction 454 212 666
orchestra_client 306 322 628
orchestra_content_moderation 236 299 535
orchestra_content_eca 325 136 461
orchestra_api 195 232 427
orchestra_vbo_inbox 190 197 387
orchestra_notification 206 169 375
orchestra_interaction_notification 209 139 348
orchestra_inbox_notification 147 164 311
orchestra_vbo 154 132 286
orchestra_mail 240 0 240
orchestra_domain 129 40 169

Test suite

orchestra ships 150 automated test classes (568 test methods), counted by type below.

Kernel 117 Functional 19 FunctionalJavascript 6 Unit 8
Test type Classes Methods
Kernel 117 489
Functional 19 39
FunctionalJavascript 6 6
Unit 8 34
Total 150 568

Architecture surface

What the module contains, counted across orchestra and its submodules: the Drupal building blocks (services, plugins, hooks, routes, entities) that make up its public and internal API.

Element Count
Services 84
Event subscribers 10
Hook implementations 41
Routes 45
Permissions 8
Forms 18
Controllers 6
Content entity types 7
Config entity types 2
Config schema types 48
Plugins 76

Plugins break down by type as follows, largest first:

Action 14 TaskType 12 Join 7 NodeFeature 7 Audience 6 TimeoutAction 5 views 5 FlowCondition 4 Gateway 3 WebformHandler 3 Interaction 3 Split 2 ModelerApiModeler 2 QueueWorker 1 WebformElement 1 ModelerApiModelOwner 1

Methodology

Counts are produced with cloc from the module root, excluding node_modules:

cloc --exclude-dir=node_modules .

Production and test totals split on the test directory:

# production
cloc --exclude-dir=node_modules --not-match-d='(^|/)tests(/|$)' .
# test
cloc --exclude-dir=node_modules --match-d='(^|/)tests(/|$)' .

Test classes are counted by their directory under tests/src (Unit, Kernel, Functional, FunctionalJavascript); the method column counts test-prefixed methods plus those annotated @test or #[Test]. The architecture surface counts service definitions in *.services.yml, route and permission keys in *.routing.yml and *.permissions.yml, #[Hook] attributes, plugin classes under src/Plugin/, forms and controllers under src/Form and src/Controller, entity-type attributes in src/Entity, and top-level types in config/schema/*.yml, all summed across the module and its submodules.

The charts are static inline SVG generated from the JSON that cloc emits, so they need no JavaScript or charting plugin. This page is refreshed periodically.