Difference between revisions of "Roadmap"

From Nsnam
Jump to: navigation, search
(add notes about ns-3-doc)
(some updates to roadmap)
Line 1: Line 1:
 
{{TOC}}
 
{{TOC}}
  
This page is a brief summary of current development activities for ns-3.  If you want to participate in any stages of the below development activities, please email the contacts listed below, or the ns-developers list.
+
This page summarizes the release roadmap for ns-3.  A summary of current development activities can be found [[Current Development|here]].
  
 
__FORCETOC__
 
__FORCETOC__
 
== Release process ==
 
 
ns-3 releases are based on date-driven schedules: rather than target a set of features for a specific version number, we aim instead for a release date and ship whatever is ready by that date. If a cool new feature misses that date, it is not a big deal because the next release is never too far away. Because the project is currently still under some heavy flux where a lot of APIs still change, the current interval between releases is expected to be roughly one month. We expect that interval to increase to 3 or 4 months once the core of the simulator has stabilized sufficiently.
 
 
The roadmap below is tentative. That is, the goal is to document what we would like to see in a number of releases, but, of course, since this is an Open Source project, contributors are free to work on anything they are interested in and try to merge it in earlier than stated. If we feel a specific feature targeted to a specific release just won't make it in time, we will move that feature to the next release.
 
 
Some of the items in this roadmap do not have anyone signed up to get work done on them. So, there is something you are interested in, ask on ns-developers.
 
 
Detailed steps for doing the source code release are found in the [http://code.nsnam.org/ns-3-dev/file/1e8249c58fda/doc/release_steps.txt doc/release_steps.txt] file in the ns-3-dev repository. 
 
 
=== Deadlines ===
 
 
There are a few deadlines and steps for incorporating code into a scheduled ns-3 release:
 
 
* '''(15 days prior)''' deadline for posting any patches or private repos that are solicited for review/comment, for possible check in to the upcoming release.  These are for patches or repos that can be considered as extensions to the simulator.  Post a summary to the list, allow 7 days (minimum) for comments, and if all comments and issues can be resolved in that time window, it can go into the next release; otherwise it slides until when things are resolved.
 
* '''(7 days prior)''' deadline for being in a "ready-to-merge" state, which means that there is agreement that comments from the previous stage have been resolved and that the change can go in.  Perhaps a "last-call" announcement by the release manager on the list will help.
 
* '''(3 days prior)''' deadline for merging any extensions or new modules that change the API, or any miscellaneous changes by maintainers.  Exceptions: critical bug fixes, doxygen and documentation, and coding style alignment nits.
 
 
Finally, it is good practice to announce among the active committers when you are doing a major merge, to avoid bad merge collisions.
 
  
 
== Release schedule ==
 
== Release schedule ==
  
ns-3 is still in a pre-alpha state, with monthly development releases.  We are aiming for an ns-3.1 release in mid-June 2008.
+
ns-3 is still in a pre-alpha state, with monthly development releases.  We are aiming for an ns-3.1 release in mid-June 2008.
  
=== May 1, 2008 (ns-3.1-beta) ===
+
=== June 15, 2008 (ns-3.1) ===
  
The following items are candidates for merge into the next release, although merge is dependent on resolving outstanding comments during the release process.
+
==== ns-3.1 overview ====
 
+
# '''Python bindings'''
+
#* ''summary'': Python bindings for the ns-3 API, to enable Python scripting
+
#* ''ns-developers post'': http://mailman.isi.edu/pipermail/ns-developers/2008-January/003608.html
+
#* ''code location'': http://code.nsnam.org/gjc/pybindgen-notracing
+
#* ''status'':  Awaiting stabilization of the APIs before finalizing; probably a May or June merge.
+
#*  Here are more details from [http://gjcarneiro.blogspot.com/2007/05/python-bindings-generator.html Gustavo's blog]
+
#* [[NS-3 Python Bindings|Instructions]]
+
#:
+
# '''logging enhancements'''
+
#* ''summary'': refine NS_LOG functionality
+
#* ''ns-developers post'': http://mailman.isi.edu/pipermail/ns-developers/2008-April/003974.html
+
#* ''code location'': http://code.nsnam.org/mathieu/ns-3-log
+
#* ''status'':  Will merge after discussion concludes
+
#:
+
# '''attribute documentation and configuration generator'''
+
#* ''summary'': cause attributes and trace sources to be automatically documented in Doxygen
+
#* ''ns-developers post'': http://mailman.isi.edu/pipermail/ns-developers/2008-April/003950.html
+
#* ''code location'': http://code.nsnam.org/mathieu/ns-3-doc
+
#* ''status'':  Will merge after discussion concludes
+
#:
+
 
+
=== June 15, 2008 (ns-3.1) ===
+
  
 
In general, ns-3 is trying to finalize the API including final revisions to the object model, to the default value system, and to higher-level topology/scenario code.
 
In general, ns-3 is trying to finalize the API including final revisions to the object model, to the default value system, and to higher-level topology/scenario code.
Line 60: Line 17:
 
An initial strawman for the ns-3.1 release is discussed in [http://mailman.isi.edu/pipermail/ns-developers/2008-April/003993.html this thread].
 
An initial strawman for the ns-3.1 release is discussed in [http://mailman.isi.edu/pipermail/ns-developers/2008-April/003993.html this thread].
  
== Code proposals under review or development ==
+
'''Note:''' Different numbering (e.g., major/minor, with even numbers corresponding to "stable" and odd to "unstable") may be adopted.
  
This section is intended to summarize code proposals under active discussion on the mailing list.
+
==== Items to finish for ns-3.1 ====
  
The following repositories are being actively worked on, but not scheduled for merge anytime soon:
+
'''Note: This needs updated to account for some python bindings slip'''
  
# '''ns-3 real time scheduler'''
+
# documentation: need work to convert tutorial to new helper API.
#* ''summary'': Add support for various forms of emulation
+
# socket implementation bugs:
#* ''ns-developers post'': none yet
+
## udp needs a finite rx packet buffer
#* ''code location'': http://code.nsnam.org/craigdo/ns-3-emu
+
## tcp needs a finite tx and rx byte buffer
#* ''status'':  Working on emulation code (libnet and pcap integration) and user-space threads
+
## tcp needs to implement its tx and rx buffers as lists of packet pointers, and not raw buffers to handle correctly application-level tagged packets
#:
+
## packet tagging implementation and API needs to be rewritten to track tags on a byte-basis to allow application-level tagged packets to work with tcp sockets
# '''ns-3 synchronous posix/socket API'''
+
## tcp sockets need to implement the "send" callback as was discussed many times, that is, it needs to invoke that callback when there is new room in the tx buffer, not when a packet is sent down the stack.
#* ''summary'': Add support for various forms of emulation
+
# socket API additions: need to add the API Mathieu suggested in the socket thread to allow future implementations of posix C-style sockets
#* ''ns-developers post'': http://mailman.isi.edu/pipermail/ns-developers/2008-April/003912.html
+
# socket API changes: tom suggested to move to a SocketHelper class the raw buffer management.
#* ''code location'': http://code.nsnam.org/mathieu/ns-3-simu
+
# python bindings: there are a number of key issues:
#* ''status'':  Under list discussion
+
## need to verify that gustavo's proposed implementation addresses our key use-cases: a) allow users to write new C++ models and bind them to python without having to install gccxml CVS and pygccxml, b) allow users to modify and hack a released version of the ns3 c++ API and have the python binding still work without having to install gccxml CVS and pygccxml.  
#:
+
## document the overall structure of the python bindings: we need to know how they work at least from a high-level perspective. basically, a 1-page a4 document about how the code is generated and how the generated works. Assuming that the reader knows the details of the python low-level binding API works is ok.
  
== Future releases ==
+
==== Proposed schedule for ns-3.1 ====
  
The following are additional things that various developers are working on, plan to work on, or have brought to a prototype state.  (Please keep this brief and add pointers to other pages if there is a lengthy description).
+
* 22-04-2008 -> 15-05-2008: 3), 4), 2.5), 2.3), 2.4), 5). Ideally, we would be ready to merge the python binding on the 15-05-2008
 +
* 15-05-2008: Release release-candidate-1 (stable C++ core API)
 +
* 15-05-2008 -> 31-05-2008: 1), 2.2), 2.1), polishing of python bindings.
 +
* 31-05-2008: release release-candidate-2
 +
* 01-06-2008 -> 15-06-2008: bug-fix only stage, documentation review, polishing
 +
* 15-06-2008: release final version.
  
=== Statistics ===
+
=== TBD (early August?)  (ns-3.2) ===
  
George Riley(riley@ece.gatech.edu) and Mathieu Lacage (mathieu.lacage@sophia.inria.fr) are the contacts for this development.
+
== Release process ==
  
One of the important design goals of the ns-3 tracing framework was to allow users to hook their own online statistic analysis code into trace hooks to avoid having to spew gigabytes of trace files only to post-process them later.
+
ns-3 releases are based on date-driven schedules: rather than target a set of features for a specific version number, we aim instead for a release date and ship whatever is ready by that date. If a cool new feature misses that date, it is not a big deal because the next release is never too far away. Because the project is currently still under some heavy flux where a lot of APIs still change, the current interval between releases is expected to be roughly one month. We expect that interval to increase to 3 or 4 months once the core of the simulator has stabilized sufficiently.
  
We thus need a framework to make it easy and safe for users to calculate basic network-specific values in the system such as:
+
The roadmap below is tentative. That is, the goal is to document what we would like to see in a number of releases, but, of course, since this is an Open Source project, contributors are free to work on anything they are interested in and try to merge it in earlier than stated. If we feel a specific feature targeted to a specific release just won't make it in time, we will move that feature to the next release.
* RTT
+
* Throughput
+
* inter-arrival time
+
* ...
+
  
Furthermore, it should be trivial to efficiently calculate basic statistical properties on these collected measurements:
+
Some of the items in this roadmap do not have anyone signed up to get work done on them. So, there is something you are interested in, ask on ns-developers.
* Average with standard deviation. Arbitrary confidence interval ?
+
* Cumulative distribution of a variable. i.e., the EDCF.
+
* ...
+
  
A serious Statistics project should thus first refine the list of variables we want to measure. It should also attempt to define as precisely as possible the type of statistical tools which should be made available for these variable measurements or other types of measurements.
+
Detailed steps for doing the source code release are found in the [http://code.nsnam.org/ns-3-dev/file/1e8249c58fda/doc/release_steps.txt doc/release_steps.txt] file in the ns-3-dev repository.
  
Once this initial discussion has take place, we should be able to design an API for these features and implement it for a specific ns-3 release. If you believe that you can contribute useful input to this discussion, do not hesitate to join ns-developers to talk about it.
+
=== Deadlines ===
  
=== Traffic generation applications ===
+
There are a few deadlines and steps for incorporating code into a scheduled ns-3 release:
  
George Riley (riley@ece.gatech.edu) is overseeing the porting of application models from [http://www.ece.gatech.edu/research/labs/MANIACS/GTNetS/ GTNetS] to ns-3.
+
* '''(15 days prior)''' deadline for posting any patches or private repos that are solicited for review/comment, for possible check in to the upcoming release. These are for patches or repos that can be considered as extensions to the simulator. Post a summary to the list, allow 7 days (minimum) for comments, and if all comments and issues can be resolved in that time window, it can go into the next release; otherwise it slides until when things are resolved.
   
+
* '''(7 days prior)''' deadline for being in a "ready-to-merge" state, which means that there is agreement that comments from the previous stage have been resolved and that the change can go inPerhaps a "last-call" announcement by the release manager on the list will help.
=== 802.11 PHY cleanup ===
+
* '''(3 days prior)''' deadline for merging any extensions or new modules that change the API, or any miscellaneous changes by maintainers.  Exceptions: critical bug fixes, doxygen and documentation, and coding style alignment nits.
  
Mathieu Lacage (mathieu.lacage@sophia.inria.fr) is working on 802.11 PHY cleanup to simplify addition of other 802.11 PHY models.
+
Finally, it is good practice to announce among the active committers when you are doing a major merge, to avoid bad merge collisions.
 
+
=== Wireless routing protocol infrastructure ===
+
 
+
Wireless routing protocol infrastructure for mobile wireless networks.  Contact:  Mathieu Lacage (mathieu.lacage@sophia.inria.fr)
+
 
+
=== Removing traffic generation from applications class ===
+
 
+
#* ''summary'': Proposed decoupling to generalize applications
+
#* ''ns-developers post'': http://mailman.isi.edu/pipermail/ns-developers/2007-July/003136.html
+
#* ''code location'': http://code.nsnam.org/laprisee/ns-3-mp/
+
#* ''status'':  Was under discussion in the summer.
+
#:
+

Revision as of 20:32, 27 April 2008

Main Page - Current Development - Developer FAQ - Tools - Related Projects - Project Ideas - Summer Projects

Installation - Troubleshooting - User FAQ - HOWTOs - Samples - Models - Education - Contributed Code - Papers

This page summarizes the release roadmap for ns-3. A summary of current development activities can be found here.


Release schedule

ns-3 is still in a pre-alpha state, with monthly development releases. We are aiming for an ns-3.1 release in mid-June 2008.

June 15, 2008 (ns-3.1)

ns-3.1 overview

In general, ns-3 is trying to finalize the API including final revisions to the object model, to the default value system, and to higher-level topology/scenario code.

An initial strawman for the ns-3.1 release is discussed in this thread.

Note: Different numbering (e.g., major/minor, with even numbers corresponding to "stable" and odd to "unstable") may be adopted.

Items to finish for ns-3.1

Note: This needs updated to account for some python bindings slip

  1. documentation: need work to convert tutorial to new helper API.
  2. socket implementation bugs:
    1. udp needs a finite rx packet buffer
    2. tcp needs a finite tx and rx byte buffer
    3. tcp needs to implement its tx and rx buffers as lists of packet pointers, and not raw buffers to handle correctly application-level tagged packets
    4. packet tagging implementation and API needs to be rewritten to track tags on a byte-basis to allow application-level tagged packets to work with tcp sockets
    5. tcp sockets need to implement the "send" callback as was discussed many times, that is, it needs to invoke that callback when there is new room in the tx buffer, not when a packet is sent down the stack.
  3. socket API additions: need to add the API Mathieu suggested in the socket thread to allow future implementations of posix C-style sockets
  4. socket API changes: tom suggested to move to a SocketHelper class the raw buffer management.
  5. python bindings: there are a number of key issues:
    1. need to verify that gustavo's proposed implementation addresses our key use-cases: a) allow users to write new C++ models and bind them to python without having to install gccxml CVS and pygccxml, b) allow users to modify and hack a released version of the ns3 c++ API and have the python binding still work without having to install gccxml CVS and pygccxml.
    2. document the overall structure of the python bindings: we need to know how they work at least from a high-level perspective. basically, a 1-page a4 document about how the code is generated and how the generated works. Assuming that the reader knows the details of the python low-level binding API works is ok.

Proposed schedule for ns-3.1

  • 22-04-2008 -> 15-05-2008: 3), 4), 2.5), 2.3), 2.4), 5). Ideally, we would be ready to merge the python binding on the 15-05-2008
  • 15-05-2008: Release release-candidate-1 (stable C++ core API)
  • 15-05-2008 -> 31-05-2008: 1), 2.2), 2.1), polishing of python bindings.
  • 31-05-2008: release release-candidate-2
  • 01-06-2008 -> 15-06-2008: bug-fix only stage, documentation review, polishing
  • 15-06-2008: release final version.

TBD (early August?) (ns-3.2)

Release process

ns-3 releases are based on date-driven schedules: rather than target a set of features for a specific version number, we aim instead for a release date and ship whatever is ready by that date. If a cool new feature misses that date, it is not a big deal because the next release is never too far away. Because the project is currently still under some heavy flux where a lot of APIs still change, the current interval between releases is expected to be roughly one month. We expect that interval to increase to 3 or 4 months once the core of the simulator has stabilized sufficiently.

The roadmap below is tentative. That is, the goal is to document what we would like to see in a number of releases, but, of course, since this is an Open Source project, contributors are free to work on anything they are interested in and try to merge it in earlier than stated. If we feel a specific feature targeted to a specific release just won't make it in time, we will move that feature to the next release.

Some of the items in this roadmap do not have anyone signed up to get work done on them. So, there is something you are interested in, ask on ns-developers.

Detailed steps for doing the source code release are found in the doc/release_steps.txt file in the ns-3-dev repository.

Deadlines

There are a few deadlines and steps for incorporating code into a scheduled ns-3 release:

  • (15 days prior) deadline for posting any patches or private repos that are solicited for review/comment, for possible check in to the upcoming release. These are for patches or repos that can be considered as extensions to the simulator. Post a summary to the list, allow 7 days (minimum) for comments, and if all comments and issues can be resolved in that time window, it can go into the next release; otherwise it slides until when things are resolved.
  • (7 days prior) deadline for being in a "ready-to-merge" state, which means that there is agreement that comments from the previous stage have been resolved and that the change can go in. Perhaps a "last-call" announcement by the release manager on the list will help.
  • (3 days prior) deadline for merging any extensions or new modules that change the API, or any miscellaneous changes by maintainers. Exceptions: critical bug fixes, doxygen and documentation, and coding style alignment nits.

Finally, it is good practice to announce among the active committers when you are doing a major merge, to avoid bad merge collisions.