ot-ns icon indicating copy to clipboard operation
ot-ns copied to clipboard

Task: integrating the new OTNS2 code into OTNS main branch

Open EskoDijk opened this issue 6 months ago • 10 comments

This issue is created to coordinate the inclusion of the new OTNS2 code (from https://github.com/EskoDijk/ot-ns) into the OTNS project main branch.

Possible methods to update: (nr 2 looks best perhaps, nr 1 is also fine)

  1. PR that is squash-merged into main (and loose all the detailed commits that led from OTNS to OTNS2)
  2. PR that is normal-merged into main (keep all the detailed commits history - even though some are a bit sloppy)
  3. push new code directly into main branch

Important goals of first inclusion of new code:

    1. Don't break the OpenThread CI which relies on checking out OTNS and running the new code in standard set of OTNS simulations.
    1. Have a usable simulator that people can use (with GUI) - running on Linux and MacOS

Less important goals for first inclusion -- these could be addressed later with PRs and fixes if needed.

    1. Docker builds
    1. Have a complete tutorial/guide ready to work with OTNS2

Important design aspects of OTNS2 (to be evaluated here if okay to include!):

  1. OTNS2 supports simulation of Thread 1.1, 1.2, 1.3 legacy nodes by means of including as subproject a few repository-branches that have the right code for this. This means the number of subprojects now increased from 1 to 4. The nice benefit of this design (using separate subprojects) is that as part of CI of OpenThread, some simulations can be added where the new OT node has to interoperate with legacy OpenThread nodes.
  2. The project now includes C/C++ code with a custom platform for RF simulations. This is in the directory ot-rfsim. This code is not intended to replace, or compete with, the simulation platform code in the openthread repo. In the future some merge/combine might be considered, but it's rather complex to do this already now. Note that the co-development of OTNS simulator code and C/C++ platform code in single repo, and single PRs/commits, has been very beneficial so far - usually some simulator features requires some handling code on the platform side and vice versa.

EskoDijk avatar Aug 15 '24 14:08 EskoDijk