Vesuvius Project Ideas - Google Summer of Code 2013

Portable App Dynamic Creation

Mentor-Provided Section

Background, Spring, 2013

Original Introduction from the Ideas Page

Portable App Dynamic Creation

Platform Vesuvius
Mentors Chamindra de Silva, Ramindu Deshapriya
Preferred communication email, skype
Brief description/Usage scenario Some times it is valuable in the middle of a disaster to get a portable program + data instance of the hosted site to take to disaster zone that might not be connected. However to do this normally you would have to create a new portable version that is the same as the hosted one and then syncronize the data into it. What I propose is the automation of this task from a module in Sahana that compiles a portable instance on the fly to take to the field. This would work with data synchronization instance. This scenario is based on an actual requirement during Hurricane Sandy
Skills needed PHP, MySQL import/export
Acceptance conditions Demonstration of the creation of a dynamic portable application from a site. Proper documentation
Blueprints GSoC 2013 - Portable App Dynamic Creation
Other resources Somewhat-related idea: Data syncronization

Other Comments

Possible cross-pollination between Portable App and Dynamic Sync Projects
  • Meeting held on 25th July between mentors and students of both projects
  • Security issues identified where authentication during sync would be compromised
  • Up for further discussion; probably after GSoC completion
Major Issues Encountered
  • Providing UUID for Portable instance : Using MAC address/Windows machine names were suggested. Final solution is to use Windows machine name
  • Event-specific Portable App : Replicating the data for a specific event was problematic as it would require hard-coding table/column names. Suggestions are to create backup/dummy database where event data would be dropped or having individual install.sql scripts for modules which could be updated as modules are changed. Decision was left for post-GSoC, hard-coded table names will be used for the final GSoC product.

Student-Provided Section


A portable application for Sahana Vesuvius platform can be deployed into a portable device (typically application files will be stored on a fast flash drive) which is not necessarily connected to the Internet. A user can directly launch the portable app without any pre-configuration or installation of any software (Apache, MySQL, PHP). The user will be able to work on Vesuvius in offline mode (no Internet connectivity). This portable app is essentially a portable AMP stack and Vesuvius PHP code deployed to ‘www’ root in the portable app. It acts like a local server in a host device and if WiFi/Bluetooth support is enabled in this device (which is the usual case for portable devices), other nearby WiFi/Bluetooth enabled devices within the communication range are able to connect to the host device which runs a local instance of Vesuvius (let’s call it child instance). One of the important features of the portable app is the data synchronization of missing/found persons with the statically deployed Vesuvius instance (let’s call it parent instance) whenever a stable network connection is established between the child instance and the parent instance.

User Stories

Saman is a senior field officer working with national disaster relief services center who is relying on Vesuvius to coordinate his relief efforts with his team. He has been assigned a task in an area struck with a disaster which has crippled all public communication systems. He can immediately take his flash drive which has a copy of Sahana Vesuvius portable app and plug it in any portable device then directly launch a local instance of Vesuvius and start working on it.

Saman realizes that he needs to split his team and distribute the workload in order to manage his efforts and at the same time allow each team member to see a consistent view of information gathered. He can turn on his WiFi in the portable device and goto the portable app control panel then set the visibility mode to ‘public’ then it will automatically create a public WiFi access point and his team members can use their portable devices to connect to the created AP and access Vesuvius via a web browser.

The director of national disaster relief services center wants to see the progress of his senior field officers. He coordinates with the government agencies to deploy a comm link that will connect all his field officers and instructs senior field officers to report progress. But one limitation is that this comm link has a very low bandwidth (this situation is similar to an active public communication link which is over flooded with traffic). Saman can immediately go to the portable app control panel and choose to sync data with the parent instance. The parent instance will first verify Saman’s credentials then proceed to sync data using a bandwidth efficient light weight protocol. Once the synchronization is successfully completed the parent instance will reflect the latest state of Saman’s progress. Furthermore, the director of operations will be able to identify progress of each of his senior field officers individually through Vesuvius data source tracking feature.

Project Source code

This project consists of two main components.

Dynamic Portable App Module

This is the module that will be integrated with Vesuvius main branch which provides functionality to create a dynamic Portable App. This module requires portable wrapper archive to perform. This module will download the required archive from a repository.
Launchpad branch -

Vesuvius Portable - Windows Application

This includes portable wrappers for Apache webserver and MySQL database server. It also includes Vesuvius Portable Manager web application Vesuvius Portable tools - a collection of AHK, PHP and batch scripts for bootstrapping Vesuvius Portable web application.
Launchpad branch -

Resource Pages


Akila Ravihansa Perera <ravihansa3000[at]>

QR Code
QR Code agasti:vesuvius:gsoc2013:portableapp (generated for current page)