GSOC2017AppStore

From Nsnam
Revision as of 13:56, 29 June 2017 by Tomh (Talk | contribs) (Web Application)

Jump to: navigation, search

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

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

Return to GSoC 2017 Accepted Projects page.

Project overview

  • Project name: ns-3 App Store
  • 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 such modules are approved by the maintainers.
  • 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.

Technical Approach

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

Web Application

The frontend of the web application will be designed using Bootstrap and 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 :

Phase 1

  • 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

Phase 2

  • Feedback and ratings feature
  • Bake integration
  • Documentation and tutorials update

Phase 3

  • Extensive testing
  • Integrate documentation of separate modules to the main site
  • Make url available for public users

Weekly Reports

Community Bonding Period (May 5-29)

Summary :

  • 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

Summary :

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 12)

Tasks Completed :

* DB Design
* Design Views for User Interaction
* Integration with Frontend (User Flow)
* Started ElasticSearch integration.

Summary :

Week 2 was spent in designing the Database to be used for the WebApp.

  • The Database model is similar to the one used in Cytoscape App Store, but the implementation is different.
  • Views that handle the user workflow have been designed and implemented.
  • The designed views have been integrated with the previously static frontend, which enables data to be added from the Django Admin panel.
  • Unlike Cytoscape App Store, we have decided to use ElasticSearch instead of Xapian as it is more widely used and accepted. Integration of ElasticSearch with the Web Application is in progress and will be completed in the Week 3 along with developer and maintainer workflows.

Week 3 (June 13-June 19)

Tasks Completed:

* ElasticSearch Integration
* Developer Workflow
     * Forms and Frontend
     * Views and Backend Integration
* Maintainer Workflow
     * Forms and Frontend
     * Views and Backend Integration

Summary :

Week 3 of the coding phase was spent in designing the Developer and Maintainer workflows as well as in integrating ElasticSearch.

  • During Development, a bug in Django-haystack has been identified which prevents partial word seach while using ElasticSearch. This bug will be addressed in the next week.
  • The workflows for Developers and Maintainers have been completed. These include Creating and Editing Apps, and their respective releases.
  • The views have been designed in such a manner that only the respective App Editors or AppStore Maintainers are permitted to edit an existing app or a release. Only maintainers are allowed to create a new app and they specify the editors who will be given the previlege to edit the App Page.

Week 4 (June 20-June 26)

Tasks Completed :

* Fix ElasticSearch Bug (In Progress!)