ns-3 GSoC 2019 Report

August 25, 2019

Introduction

Google Summer of Code has been a fantastic opportunity for me to be part of the open-source culture and contribute to the community. It was a fantastic journey with many hurdles once the college started (placements, academics, extra-curricular). Still, the help and support from the mentors had been amazing and could pass through it. Super thankful to my mentors @abhijithanilkumar and @adeepkit01 for their continuous guidance and help throughout the period. I would also like to thank @tomh sir - the ns-3 Organization Admin for his valuable advice and suggestions.

Project Outline

Project: Improving the ns-3-AppStore and Linking with Bake.

The project plan for each period was as follows:

  1. Community Bonding - Get familiar with the codebase of the AppStore, and the Bake build system.
  2. Phase 1 - Port the ns-3-AppStore to the latest version of Django & to Python3, Build the REST API for install for Bake to interact with the AppStore, and adding the install command to Bake.
  3. Phase 2 - Adding the update command-line option to Bake, Add OAuth support for Gitlab & Github to the AppStore, download statistics for each extension.
  4. Phase 3 - Multi-Threaded Commenting, Dependency Management for the Apps, Improve the Rating UI.

Pull Requests

This section covers the work done during the GSoC Period in terms of contributed code/documentation/tests.

Community Bonding Period

  • #45: This PR added documentation for the users on the ns-3-AppStore

Phase 1

  • #47: This PR ported the ns-3-AppStore to the latest version of Django & to Python 3.6, and code converted to follow PEP8 Guidelines
  • #48: This PR added the install and search REST APIs for the bake command line to interact.
  • #48: Documented the REST APIs, setup rate-limiting for the APIs to avoid any attacks.
  • #2: This PR added the getconf, install, and search options to Bake build System.

Phase 2

  • #2: Added regression tests for the command line capabilities added in Bake.
  • #48: This PR modified the Search API to use Pagination.
  • #49: This PR added the filtering techniques with a minimal UI one-click for Fork/Modules/All.
  • #52: Thus, PR added the download count per release and per date for each app whenever a getconf/install option is triggered.
  • #53: This PR updated the existing Search API to POST Request to take the input parameters of the configured ns versions and the keyword to search
  • #2: This PR updated the bake search functionality to get the apps based on the currently enabled ns versions.

Phase 3

  • #53: This PR modified the Install API to POST Request to take the input parameters of the configured ns version and the module name and the version.
  • #2: This PR updated the bake getconf, install functionality to download the module only if the ns version is compatible with the module versions.
  • #55: This PR added the Dependency Management to show the dependencies of the App from the bakefile of the latest version.
  • #56: This PR fixed the busted rating UI by using a different package and with various features. Added average count and the number of ratings.
  • #58: Fixed the issues in the GCI Tests and added tests for the Django REST APIs made.

Miscellaneous Work

Inline code documentation was done for most of the codes, and hence documentation was taken care of.

Work to be done

  • Hosting Commento - A lot of effort was made to host commento locally both with Nginx and docker; however, it wasn't successful enough to get it working correctly (locally CSS & js weren't loading). Hopefully, when we set up the website on the server will be able to get commento hosted and get it working fully. Will be trying to host Commento on AWS Instance as well.

Tasks done apart from the Proposed

  • On discussion with the mentors, they suggested to give priority to adding tests for the REST APIs, hence concentrated more on it and got it done along with fixing the GCI Tests since they were written in older version of Django, however for GSoC we migrated to the latest version of Django.
  • Filters for Fork/Modules/All was something needed by the community as per the discussions in the WNS3-2019, hence added a minimal one-click UI for that.
  • Search Functionality in Bake wasn't proposed, however we felt that it would be good to have the feature and hence added that to Bake.

Future Work

After discussion with my mentor @abhijithanilkumar, the possible future work for the ns-3-AppStore is as follows:

  • Deploy the updated ns-3-AppStore on the new server.
  • Add code coverage for the AppStore and add tests for the missing code.

I Will be glad to help out if any issues come up or the ns-3 community needs any new feature requests.

On the bake side, although the main part of getconf, install, search was done, there are a lot of other functionalities expected on the Bake side, which was out of scope for GSoC. Since I've got familiar with the Bake codebase, I'll be happy to contribute the feature requests from the ns-3 Community.

Conclusion

An amazing journey comes to an end. I'm very thankful to all my friends, mentors, parents, and sister who helped and motivated me during the entire journey. Though GSoC 2019 comes to an end, I'm looking forward to contributing to Open Source and ns-3 Bake & AppStore Project.

...