doc/tutorial/source/introduction.rst
changeset 10184 0f7b3b88b438
parent 7663 a39cbfe79fac
child 10401 6e9d4ceb880b
--- a/doc/tutorial/source/introduction.rst	Tue Aug 27 19:08:05 2013 -0700
+++ b/doc/tutorial/source/introduction.rst	Wed Aug 28 17:13:51 2013 -0700
@@ -22,21 +22,55 @@
 
 A few key points are worth noting at the onset:
 
-* Ns-3 is not an extension of `ns-2
+* |ns3| is open-source, and the project strives to maintain an 
+  open environment for researchers to contribute and share their software.  
+* |ns3| is not a backwards-compatible extension of `ns-2
   <http://www.isi.edu/nsnam/ns>`_; 
   it is a new simulator.  The two simulators are both written in C++ but 
   |ns3| is a new simulator that does not support the |ns2| APIs.  Some 
   models from |ns2| have already been ported from |ns2| to |ns3|. The 
   project will continue to maintain |ns2| while |ns3| is being built,
   and will study transition and integration mechanisms.
-* |ns3| is open-source, and the project strives to maintain an 
-  open environment for researchers to contribute and share their software.  
+
+About |ns3|
+***********
+
+|ns3| has been developed to provide an open, extensible network simulation
+platform, for networking research and education.  In brief, |ns3| provides
+models of how packet data networks work and perform, and provides a
+simulation engine for users to conduct simulation experiments.  Some of the
+reasons to use |ns3| include to perform studies that are more difficult
+or not possible to perform with real systems, to study system behavior in
+a highly controllled, reproducible environment, and to learn about how
+networks work.  Users will note that the available model set in |ns3| 
+focuses on modeling how Internet protocols and networks work, but
+|ns3| is not limited to Internet systems; several users are using
+|ns3| to model non-Internet-based systems.
 
+Many simulation tools exist for network simulation studies.  Below are
+a few distinguishing features of |ns3| in contrast to other tools.
+
+* |ns3| is designed as a set of libraries that can be combined together
+  and also with other external software libraries.  While some simulation
+  platforms provide users with a single, integrated graphical user 
+  interface environment in which all tasks are carried out, |ns3| is 
+  more modular in this regard.  Several external animators and
+  data analysis and visualization tools can be used with |ns3|.  However,
+  users should expect to work at the command line and with C++ and/or
+  Python software development tools. 
+* |ns3| is primarily used on Linux systems, although support exists
+  for FreeBSD, Cygwin (for Windows), and native Windows Visual Studio
+  support is in the process of being developed. 
+* |ns3| is not an officially supported software product of any company.
+  Support for |ns3| is done on a best-effort basis on the 
+  ns-3-users mailing list.
+ 
  
 For |ns2| Users
 ***************
 
-For those familiar with |ns2|, the most visible outward change when moving to 
+For those familiar with |ns2| (a popular tool that preceded |ns3|), 
+the most visible outward change when moving to 
 |ns3| is the choice of scripting language.  Programs in |ns2| are 
 scripted in OTcl and results of simulations can be visualized using the 
 Network Animator nam.  It is not possible to run a simulation
@@ -57,17 +91,38 @@
 as we proceed in this tutorial.
 
 A question that we often hear is "Should I still use |ns2| or move to
-|ns3|?"  The answer is that it depends.  |ns3| does not have
-all of the models that |ns2| currently has, but on the other hand, |ns3|
-does have new capabilities (such as handling multiple interfaces on nodes 
-correctly, use of IP addressing and more alignment with Internet
-protocols and designs, more detailed 802.11 models, etc.).  |ns2|
-models can sometimes be ported to |ns3| (a porting guide is under
-development).  The support available on the user mailing list, and the
-developer and maintainer activity, is higher for |ns3|.  A good guideline
-would be to look at both simulators, and in particular the models available
-for your research, but when in doubt or when starting new simulation 
-projects, choose the tool that is under more active development (|ns3|).
+|ns3|?"  In this author's opinion, unless the user is somehow vested
+in |ns2| (either based on existing personal comfort with and knowledge
+of |ns2|, or based on a specific simulation model that is only available
+in |ns2|), a user will be more productive with |ns3| for the following
+reasons:
+
+* |ns3| is actively maintained with an active, responsive users mailing 
+  list, while |ns2| is only lightly maintained and has not seen
+  significant development in its main code tree for over a decade.
+* |ns3| provides features not available in |ns2|, such as a implementation
+  code execution environment (allowing users to run real implementation
+  code in the simulator)
+* |ns3| provides a lower base level of abstraction compared with |ns2|,
+  allowing it to align better with how real systems are put together.
+  Some limitations found in |ns2| (such as supporting multiple types of
+  interfaces on nodes correctly) have been remedied in |ns3|.
+
+|ns2| has a more diverse set of contributed modules than does |ns3|, owing to
+its long history.  However, |ns3| has more detailed models in several
+popular areas of research (including sophisticated LTE and WiFi models),
+and its support of implementation code admits a very wide spectrum
+of high-fidelity models.  Users may be surprised to learn that the
+whole Linux networking stack can be encapsulated in an |ns3| node,
+using the Direct Code Execution (DCE) framework.  |ns2|
+models can sometimes be ported to |ns3|, particularly if they have been
+implemented in C++.  
+
+If in doubt, a good guideline would be to look at both simulators (as
+well as other simulators), and in particular the models available
+for your research, but keep in mind that your experience may be better
+in using the tool that is being actively developed and 
+maintained (|ns3|).
 
 Contributing
 ************