Hello Tomaz, I'll share my personal opinion on this; others may want to chime in.
I think that a graphical configuration tool would be very nice for our users, especially in an educational context. The reason that one does not exist is that it has proven to be difficult (time consuming) to maintain one. However, if several people wanted to pitch in with maintenance, it should be doable.
Rather than starting from scratch, I would recommend to try to reuse an existing GUI, either from IMUNES [1] or CORE [2] (CORE is a fork of IMUNES). The IMUNES GUI [3], which was extended by CORE, is the nicest one that I have used over the years. It is easy to drag and drop icons and right click to configure things. These tools are primarily designed to orchestrate containers for network emulation. However, they could also used to configure ns-3 simulations and could even be used to run ns-3 simulations (if the GUI were extended to call for the launch of a simulation rather than the launch of a network emulation).
Many years ago, Craig Dowell worked on a small project to use the CORE GUI to configure ns-3 simulations [4]. Why didn't this go further than proof-of-concept? Again, no one on the project had time/energy to carry it forward at that time. But if I had more free time, I would use this work as a starting point for an ns-3 configuration tool. I also think it would help for education if the tool could be dual use; users could potentially run emulations and simulations from a common interface.
Similarly, the network animator (NetAnim) and Pyviz lost steam when their original authors and core contributors moved on from the ns-3 project. A few maintainers are still doing some work on NetAnim and Pyviz, and Evan Black is actively maintaining the NetSimulyzer (a newer visualization tool for ns-3). Those tools are visualizers, however-- not configuration tools. John Abraham experimented a bit with a variant of NetAnim called the 'composer' but it didn't progress beyond early stages.
Others have expressed interest over the years in developing a browser-based configuration tool as well as an all-in-one dedicated IDE (graphical configurator, code editor, animator) like a commercial tool, but in my opinion, those would take even more effort than trying to adapt something like IMUNES or CORE and just tackle the graphical configuration aspect.
- Tom
[2] https://github.com/coreemu/core
--
You received this message because you are subscribed to the Google Groups "ns-developers" group.
To unsubscribe from this group and stop receiving emails from it, send an email to ns-developer...@googlegroups.com.
To view this discussion visit https://groups.google.com/d/msgid/ns-developers/b28da6e7-b25b-49ae-b887-f32d58f83933n%40googlegroups.com.
Hello Tomaz, I'll share my personal opinion on this; others may want to chime in.
I think that a graphical configuration tool would be very nice for our users, especially in an educational context. The reason that one does not exist is that it has proven to be difficult (time consuming) to maintain one. However, if several people wanted to pitch in with maintenance, it should be doable.
Rather than starting from scratch, I would recommend to try to reuse an existing GUI, either from IMUNES [1] or CORE [2] (CORE is a fork of IMUNES). The IMUNES GUI [3], which was extended by CORE, is the nicest one that I have used over the years. It is easy to drag and drop icons and right click to configure things. These tools are primarily designed to orchestrate containers for network emulation. However, they could also used to configure ns-3 simulations and could even be used to run ns-3 simulations (if the GUI were extended to call for the launch of a simulation rather than the launch of a network emulation).
Many years ago, Craig Dowell worked on a small project to use the CORE GUI to configure ns-3 simulations [4]. Why didn't this go further than proof-of-concept? Again, no one on the project had time/energy to carry it forward at that time. But if I had more free time, I would use this work as a starting point for an ns-3 configuration tool. I also think it would help for education if the tool could be dual use; users could potentially run emulations and simulations from a common interface.
Similarly, the network animator (NetAnim) and Pyviz lost steam when their original authors and core contributors moved on from the ns-3 project. A few maintainers are still doing some work on NetAnim and Pyviz, and Evan Black is actively maintaining the NetSimulyzer (a newer visualization tool for ns-3). Those tools are visualizers, however-- not configuration tools. John Abraham experimented a bit with a variant of NetAnim called the 'composer' but it didn't progress beyond early stages.
Others have expressed interest over the years in developing a browser-based configuration tool as well as an all-in-one dedicated IDE (graphical configurator, code editor, animator) like a commercial tool, but in my opinion, those would take even more effort than trying to adapt something like IMUNES or CORE and just tackle the graphical configuration aspect.
- Tom
[2] https://github.com/coreemu/core
Hello,
I completely agree that developing a GUI or some form of external interface could be one way to extend ns-3.
In my project(https://github.com/z14212638-eng/Ns3-based-Visualization), I used shared memory to export PPDU meta-information, so the GUI can read and process data generated by ns-3 without tightly modifying the simulator itself.
The project is almost 100% written in C++ (Qt6 for the GUI). I also provide an AppImage for users who don’t want to set up Qt and just want to use the tool directly, especially beginners who are experimenting with their own simulations.
I think a GUI won’t replace scripting workflows, but it might make ns-3 a bit more approachable for teaching and early-stage experimentation.
Would it be a good one ? I would be responsible for future maintenance and I'm looking forward to your reply .
Regards,
Kevin Zhang




Kevin,
To have a GUI-based project or any other project with large scope in GSoC, you need to find a mentor interested to work on it, and you and the mentor needs to define some project that can be completed in the timeframe of the GSoC project. We have found, over the years, that projects with small scope succeed than ones that take on too much scope and fail to merge at the end.
To view this discussion visit https://groups.google.com/d/msgid/ns-developers/45eba7e4-9ebd-4d29-aca4-406a50a349b5n%40googlegroups.com.
Tomaz, to reply to one of your specific points.
Thanks for those links. I believe a common "failure" on most of the trials is what I'm facing now: The lack of a "specification" of sorts, that the simulator would ingest, and generate automatically the needed objects. While looking at CORE and Imune, the specific classes and objects from the c++ world were not there to be drag'n dropped, and there's no easy way to map the values from/to gui to the cpp objects (not all of them have a property system, for instance the *Helper classes such as PointToPointHelper - those I had to manually map).
if we can define, and load, a simulation from a descriptive file (graphviz, json, xml of sorts) then, implementing the interface for this is "the easy part".
I agree that this intermediate layer of scenario and experiment representation that could be parsed by ns-3 would be useful and would allow GUIs or other tools to author experiments without writing C++ or Python code.
We do have something called the config store that is able to export simulation configuration to text or XML, and to ingest it later. It does not capture everything, however (it focuses on the configuration of nodes or objects attached to nodes, but does not export everything about a scenario to run, however. Perhaps it could be a start of something like this:
https://www.nsnam.org/docs/manual/html/attributes.html#configstore
- Tom
OK, using JSON as the representation may also make sense (i.e., it might be time to try to upgrade ConfigStore to use also JSON configuration). ConfigStore has so few current users that it would not bother me to drop XML (anyone using ConfigStore XML out there, please correct me if I am wrong).
- Tom
To view this discussion visit https://groups.google.com/d/msgid/ns-developers/8CC31901-4B4F-4553-9477-6ACC16FCCC79%40mac.com.