Skip to content
Snippets Groups Projects
Open Switch to monorepo
  • View options
  • Switch to monorepo

  • View options
  • Open Issue created by Moritz Kiehn

    Our current practice of splitting components over multiple repositories, e.g. Core, Fatras, Framework, has lead to undiscovered breakage and impedance missmatch during development. E.g. changes in the Core lead to performance regressions that were discovered only much later in the framework. Git submodule handling is also hard to understand, especially for beginners, and breaks easily.

    Switching to a monorepo with optional build components should allow consistent development and testing without the current delay between Core and Framework. Optional component handling is already available in the Core and can be easily reused for this.

    At the end, the directory structure of the merged repository should look as follows:

    # as-before
    Core/
      include/
        ...
      src/
        ...
    # as-before (could also be renamed to CorePlugins to clarify the relation to Core)
    Plugins/
      DD4hep/
        ...
      # previously handle as special, but can be treated as just another plugin
      Legacy/
        ...
      ...
    # cleaned-up content from acts-fatras/Core
    Fatras/
      include/
        ...
      src/
        ...
    # cleaned-up content from acts-framework
    Standalone/
      Algorithms/
        ...
      Detectors/
        ...
      Framework/
        ...
      Io/
        ...
      # formerly 'Examples'
      Run/
        ...
    Tests/
      Benchmarks/
        ...
      Examples/
        ...
      # integration tests, can use multiple components
      IntegrationTests/
        ...
      # unit-tests, should always use only a single component
      UnitTests/
        Core/
          ...
        Plugins/
          ...
        Fatras/
          ...
        Framework/
          ...
    # as-before
    docs/
      ...
    # 3rd party libraries that are usually not available via the system
    # package manager; shipped as copies and built as part of the regular
    # process. use copies instead of submodules to avoid the headache.
    # keep this limited to small libraries/ few files by policy.
    thirdparty/
      dfelibs/
        ...
      nlohmann_json/
        ...

    Target names can use the current style to provide a bit of namespacing, i.e.

    # core
    ActsCore
    # core plugins
    # TODO this should be named ActsPlugin... for consistency
    Acts...Plugin
    # fatras
    ActsFatras
    # Test framework components
    ActsFramework...
    # Standalone tools (formerly part of acts-framework)
    ActsGen...
    ActsSim...
    ActsRec...
    # tests
    ActsBenchmark...
    ActsIntegrationTest...
    ActsUnitTest...

    This is a major change and will and should not happen at once, i.e. within one of the current weekly/biweekly release cycle. There is also some clean-up in progress for both Fatras and the Framework. This should finish before moving the code back to the main repository.

    Propose schedule/ order:

    9 of 26 checklist items completed · Edited by Moritz Kiehn
    • Merge request
    • Branch

    Linked items 0

  • Link items together to show that they're related or that one is blocking others.

    Activity

    • All activity
    • Comments only
    • History only
    • Newest first
    • Oldest first
    Loading Loading Loading Loading Loading Loading Loading Loading Loading Loading