I went through a couple of libraries at the University of Toronto last night to pick up some books on simulation. It is natural to wonder what will make YetiSim any different, when there are likely thousands of different simulation frameworks. It seems that everybody who writes a simulation writes their own framework. Browsing through the books, I found many different papers and books on distributed simulation and simulation techniques. So, is it just arrogance on my part to believe that YetiSim is anything more than another simulation framework? Considering the number of people who have worked on simulation engines, how could I possibly hope to improve upon their work? What makes YetiSim so special?
I don’t think it is arrogance to believe that there is room for another simulation framework, and that YetiSim is different. I’m not sure that YetiSim possesses advanced technology. YetiSim does not have many users (actually none), so what could possibly set it apart? Well, for one YetiSim was not constructed for a particular purpose. This means that YetiSim has been constructed without time constraints, and without a motivating project. This means that rather than developing the simulation framework as an aside for the sole purpose of conducting research, the simulation framework itself has been placed first and foremost in development. My role is to create a useful simulation framework, not to build a framework for a particular simulation.
YetiSim is still being constructed and designed, so I cannot give a list of ways that is different. However, there are a few areas in which I would like YetiSim to be different:
- Testing: YetiSim will be tested thoroughly, to ensure that it works correctly. The testing strategy is one of the most important aspects of YetiSim, as others will be relying upon it for meaningful results that are correct. It is my intention to design a full test suite that will satisfy users that the software has been tested and functions correctly.
- Documentation: This is one area for which YetiSim has already received praise. YetiSim will be documented thoroughly, including the internal mechanisms, usage, design, and testing. This will encourage others to investigate the internals of YetiSim, and to understand how it functions precisely.
- Open Source: Although I am not satisfied entirely with the GPLv3 license for YetiSim, the open source nature of YetiSim ensures that others will be able to investigate the internals. Simulation serves a scientific purpose, and it is important that YetiSim as a library may be trusted. Thus, any doubtful person may see how YetiSim arrived at a particular result. Also, there is no licensing nonsense to restrict how you use YetiSim (except for the fact your simulation has to be GPLv3, but that’s something I’ll blog about later… I’m not happy with that right now).
- Clarity: YetiSim strives to be easy to understand. That is, the user should not have to employ patterns of tricks to make their simulation work. Users should be able to easily understand what YetiSim is doing under the hood from a high level, even if they themselves do not ever look at the implementing code. Users should be able to concentrate on just writing their simulation, and not worrying about details of limitations of YetiSim and C++.
YetiSim is still a very young project. It is difficult to say right now how it will stand apart, because it is not yet sophisticated enough to be used for real simulations. In time, I think we will all see what makes YetiSim special. I would also encourage you to become part of the YetiSim project, and provide your input and help to make it special.