..  _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 <https://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 <https://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 <https://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.
