Return to GSoC 2017 Accepted Projects page.
- Project name: ns-3 App Store
- Student: Abhijith Anilkumar
- Mentor: Tom Henderson
- Abstract: The goal of the project is to create an app store for contributed ns-3 modules. The project aims to support modularization of the ns-3 codebase and federation of development activities. Once this project is complete, ns-3 users will be able to download modules depending on their requirements. Developers will be able to upload new modules once it is approved by the maintainers.
- Documentation: https://github.com/abhijithanilkumar/ns-3-AppStore/wiki
- About me: I am a 4th year Computer Science undergraduate student from National Institute of Technology Karnataka (NITK), Surathkal, India. I am an open source enthusiast and have about 3 years experience of intensive programming in Python and Django. I had been working in ns-3 for the past few months on Rate Adaptation Algorithms (RAA) in ns-3.
The App Store will be created using Django framework, based on the Cytoscape App Store. The primary aim will be to modify the Cytoscape code to support ns-3 requirements. It was found out that the Django dependencies used by the Cytoscape code are outdated. The Django version being used there is also an old one. The first step in the project will be to create a clone of the App Store that meets ns-3 requirements. Cytoscape app store lets users upload the .jar files directly to the site and it verifies the app in the backend. ns-3 modules does not follow this system and hence the system needs modifications. Considering these differences, a new Django web application will be created that supports ns-3 requirements, reusing maximum amount of code possible from Cytoscape. The web application will be deployed using Apache servers alongside the existing Wordpress instance. The application will be kept separate during development and it will be merged once complete. Detailed description of the project is available here
The frontend of the web application will be designed using Bootstrap and [materializecss.com Materialize]. The design will be integrated using the MTV(Model Template View) architecture of Django. Bootstrap and Materialize will be integrated with Django templates. The backend of the web application will be Django Models and Views, created in Python. The App Store will be built on top of Django Edge which provides features like user profiles, accounts and bootstrap-enabled admin pages. SQLite(Default Django Database) will be used for development. For production, PostgreSQL will be used. During the development phase, the default Python server will be used. To test the webapp in production, the website will be run using nginx and gunicorn. To make it available for public use, the web application will be integrated with the current ns-3 website.
Milestones and Deliverables
The entire GSoC period is divided into 3 phases. The deliverables at the end of each phase is as mentioned below :
- Django web application for ns-3 App Store with basic requirements
- Deploy the application on a test server
- Make url available for developers to get feedback
- Feedback and ratings feature
- Bake integration
- Documentation and tutorials update
- Extensive testing
- Integrate documentation of separate modules to the main site
- Make url available for public users
Community Bonding Period (May 5-29)
A detailed design for the App Store has been created, which will be followed in the coding phase. The design can be found here. The technologies to be used for implementing the application has been finalised. The App Store will be implemented using Edge, a Django starter package which implements user accounts and themed pages by default. Bootstrap and Materialize will be used for designing the frontend. Created a basic skeleton project using Edge to be used for further development. The wiki and Readme has been updated to include steps for installation. A mirror of the git repository has been setup in the development VM for testing (necessary packages have also been installed)
Week 1 (May 30-June 5)
Tasks Completed :
* Setup the initial frontend code * Complete the static parts (navbar, footer) * Design homepage * Design login, signup pages * Design App page
Week 1 of the Coding Phase was spent in designing the frontend pages of the Web Application. Materialize and Bootstrap are used for the frontend design. Bootstrap is used to power the admin page and Materialize is used in designing all the other pages. The frontend design of all pages required for the first phase of the project has been completed.
Week 2 (June 6-June 13)
Tasks Completed :
* DB Design * Design Views for User Interaction (In Progress!) * Integration with Frontend (User Flow) (In Progress!) * Enable Search (In Progress!)