..  _community-contributions:

Contributions of the ndnSIM User Community
==========================================

Some of the very much appreciated contributions of the user community include
the following:

#. **Script for automated installation on Ubuntu 14.04, 15.04, 16.04 and 17.04.**

    The `script <http://mohittahiliani.blogspot.in/2015/10/ns-3-installing-ndnsim-on-ubuntu.html>`__
    was created and is maintained by Kiran Ramesh, Karthik S, Ayush Agarwal,
    Viyom Mittal, Vivek Jain, and Mohit P. Tahiliani,
    Wireless Information Networking Group (WiNG), NITK Surathkal.

#. **Adding custom fields to packets in ndnSIM 2.3 without forking the entire repository.**

    The `article <https://lo.calho.st/networks/adding-custom-packet-fields-to-packets-in-ndnsim-2-3-without-forking-the-entire-repository/>`__
    was published by Travis Mick.

#. **Run ndnSIM with scenario template without root access.**

    The `article <http://chkr.at/wordpress/?p=99/>`__
    was published by Christian Kreuzberger.

#. **How-To: Install ndnSIM with BRITE on Ubuntu 14.04.**

    The `article <https://chkr.at/wordpress/?p=62>`__
    was published by Christian Kreuzberger.

#. **Installing ndnSIM on Ubuntu 15.04.**

    The `article <http://bupeanubuntu.blogspot.com/2015/08/installing-ndnsim-on-ubuntu-1504.html>`__
    was published by Bhupendra Moharil.

.. note:: If you have contributed to ndnSIM, please let us know, so that we can
          add your contribution.
