This is an old revision of the document!


Welcome to Sahana Agasti's "Vesuvius" Branch

What is Vesuvius?

Vesuvius continues a lineage from Krakatoa, and is being developed further primarily by the US National Library of Medicine (NLM). This effort is mainly concerned with improving family reunification and administrative capabilities, developing a robust code base, and exploring mobile technologies. The project is driven by international responses such as the Haitian earthquake of 2010, and US-hospital-focused triage needs. Some modules inherited from earlier have been recently deprecated as not supported by NLM, and removed from the trunk into an external branch. (Interested doing the programming needed to bring particular ones back to life for Vesuvius? NLM will be happy to work with you.) Other modules are new, or represent a substantially re-engineering of earlier work. During the Google Summer of Code 2010, Vesuvius was used as a testbed for prototypes of a Module Manager and Sahana App Store.

For Developers - Vesuvius in the Sahana Evolutionary Tree

Created in response to the 2004 tsunami, Sahana built a web site using the PHP programming language. Capabilities were expanded during “Phase 1” releases, 0.1 to 0.5. These releases were superseded by “Phase 2”, as 0.6.x. By 2009, this was bifurcated into a “stable” branch and a more-experimental trunk branch, which eventually was known as 0.9.x. In mid-2010, a new nomenclature was adopted. Active branches of “Agasti”, the part of Sahana based on PHP web technology, were given the names of well-known volcanoes. The “stable-0.6” branch was recast as “Krakatoa”. New development subsequently took two forms:

  • “Vesuvius” continues the major evolution of selected parts of the 0.9.x trunk branch (now moving towards 1.0). It introduces database referential integrity and more object-oriented code libraries. It is available to developers in unpackaged form from the repository, with packaging planned.
  • “Mayon” (designated 2.x) restructures Sahana functionality, based on the Symphony PHP framework. This is described elsewhere.

In January, 2011, Vesuvius was slimmed down, and made of more-focused functionality, by removing from the trunk repository those modules lacking support, and thus deprecated. All the code for these is still available elsewhere, if someone wishes to revive them.

NEW! (February, 2013)

Check out this diagram of the "Genealogy of Vesuvius" during 2010-12, and some ideas for its further evolution in 2013. It covers People Locator and Kilauea.

For Developers Seeking Access or Considering Being a Contributor to Vesuvius

Currently, most Vesuvius 0.9.x beta development goes on in-house at NLM. The code has been pushed to Launchpad/Vesuvius, where it is appropriately spread amongst the various Bazaar branches therein. See the preliminary checklist for accessing the codebase and working with Bazaar.

Packaged releases with an installer are anticipated during 2012; some final work must first be completed on the last few remaining bugs in the installer. A preliminary page for Vesuvius installation information has been created.

Developments in this project are reported to the sahana-agasti listserv, and through periodic postings to the unofficial Lost Person Finder blog, among other places. The freenode IRC channel #sahana-agasti facilitates cross-fertilization between Vesuvius and Mayon.

Main Developer Contacts:

  • Greg Miernicki - miernickig <at> mail <dot> nih <dot> gov - Lead module & web services developer/database architect; Agasti PMC
  • Leif Neve - lneve <at> mail <dot> nih <dot> gov - Dev for PFIF module; MySQL DBA
  • Glenn Pearson - Glenn_Pearson <at> nlm <dot> nih <dot> gov - LPF Project co-lead; Agasti PMC, Standards PMC
  • Full LPF project group - NLMLHCCEBLPF <at> nlm <dot> nih <dot> gov

LPF Project Management, Non-Sahana:

  • Michael Gill - Federal oversight; network engineering.
  • Sameer Antani - Image R&D; ReUnite
  • George Thoma - Chief, Communications Engineering Branch, LHNCBC/NLM/HHS

Other Current PL/Vesuvius Developers:

  • Lan Le - Statistics and charting module
  • Joseph Chow - database, HIPAA issues
  • Mike Chung - graphic designs

Developers of NLM-Created Tools and Peripheral Software:

  • Glenn Pearson - Lead dev for Windows app “TriagePic”
  • Byte Phichaphop - Dev for iPhone app “ReUnite” 3.0
  • Eugene Borovikow, Girish Lingappa - Image R&D
  • Tehseen Sabir - QA, Notification tools

Other current and past contributors are listed further below.

Vesuvius Installation Instructions

Google Code-in

Sahana has been selected as one of the mentoring organizations for Google Code-in (GCI) 2012. GCI is an annual competition hosted by Google to involve pre-university students from around the world with reputed Open Source communities.

Opportunities for Summer and Year-Long Internships at NLM in Bethesda, MD

For US citizens and permanent residents, there are competitive paid internship opportunities for local high school, undergrad, graduate, and post-docs on-site at NLM. Volunteer positions are also possible. We are looking particularly for folks with programming experience. Besides the Lost Person Finder project, our branches of NLM (Communications Engineering Branch and Computer Sciences Branch) have a number of other projects; those with coursework or experience in image processing, document understanding, and natural language understanding are particularly invited to consider us.

Summer student positions at NIH are applied for in January/February of each year. We at NLM will review applicants but only after they have submitted their NIH application.

For Adopters and Users

Icon Definitions, used in the Tables Below

Stage of Development (as of 1st Q 2012):

Icon Meaning
stable_most_dev_done_.jpg Stable, only minor development on-going
Under active development
new_unstable.jpg New & unstable
An idea for the coming year

Required versus Optional:

required.jpg Required

Other Attributes:

Includes cron-job daemon, init service, or 3rd-party engine
Separate install from Vesuvius


Derived from a Sahana-sponsored Google Summer of Code 2011 project
gsoc.jpg Derived from a Sahana-sponsored Google Summer of Code 2010 or earlier project
krakatoa.jpg Successor to a Krakatoa module of the same name.*

* Vesuvius modules may have more and different features and capabilities than what are described in the Krakatoa table of User Guides. Beyond those modules indicated by this icon, many modules have some design or code influence from earlier Sahana versions.

Modules of the Vesuvius Beta Release

The items in the table below are supported by NLM as part of its Lost Person Finder project. This set of items can be called “[PeLo]”, referring to People Locator. Available modules are given by their formal names, as well as their technical abbreviations, sometimes helpful to know.

Name Abbrev. Req? Brief Description Stage Comments
Administration admin required.jpg This allows initial and on-going system configuration and control. stable_most_dev_done_.jpg krakatoa.jpg
User Preferences pref required.jpg This permits user-specific settings. stable_most_dev_done_.jpg krakatoa.jpg
XML Streaming Module xst required.jpg Allows streaming of XML content. stable_most_dev_done_.jpg krakatoa.jpg
Arrivals arrive AJAX modue to watch the realtime influx of persons. stable_most_dev_done_.jpg
LPF Class Library lpf required.jpg This defines PHP classes used by multiple modules. stable_most_dev_done_.jpg Needed most notably by arrive, eap, em, eq, ha, inw, mpres, plus, pop, pref, rap, report, rez
Hospital Administration ha required.jpg This allows hospital administrators/emergency managers to enter & edit organizational & event data. stable_most_dev_done_.jpg v2.0 completed recently with a snazzy new ajax appearance
Search inw required.jpg (Interactive Notification Wall) This offers search and display capabilities (including filtering and dynamic update) for missing and found persons reported from multiple sources (desktop web, mobile web, PFIF repository, TriagePic, ReUnite app) as replacement) to the old MPR module's search function. Projected work involves search improvement by integration with Lucene/SOLR search engine; more flexible filters.
MPR Email Service mpres The Missing Person Registery Email Service parses incoming information about missing & found people from TriagePic (Windows), ReUnite (iPhone), and semi-structured (vanilla) email. stable_most_dev_done_.jpg Supplements the work of Person Object Provider (pop).
Person Locator User Services plus Provides SOAP Document Literal web services, to support ReUnite, TriagePic, and other applications that wish to report or consume data from Vesuvius. In constant fdevelopment lately :
Event Manager em required.jpg This allows a hospital admin or Sahana admin to define and geolocate disasters/incidents/events. stable_most_dev_done_.jpg
Resources rez required.jpg This defines the content of the home and other web pages. It supports largely static web pages of information, arranged hierarchically, by a mini-content-management-system. HTML content is stored in the database, with a simple editor for the content provider. Currently building out multi-language support, for context-rich whole-page translations (rather than Pootle-style phrase translation).
Snapshot module snap This allows backup and restore of database instances, provided they are under 200MB. stable_most_dev_done_.jpg Requires admin privileges.
Post Office Provider pop required.jpg This handles outbound email. stable_most_dev_done_.jpg Takes over some of the 2009 functionality of mpres namely outbound email.
Report report required.jpg This is based on and supersedes mpr's 'report a person'. stable_most_dev_done_.jpg Simply creates a 'stub' person record which is then handed off to EAP to edit.
Edit a Person eap required.jpg For a previously-reported person, whose record is retrieved, this allows revision or expansion. One view will support the use case of hospital personnel correcting data originally received from TriagePic. Based on and supercedes part of mpr.
Edit a Person 2 edit required.jpg A complete re-write of the above EAP module using AJAX and DAO class objects provided by the LPF module. Will incorporate a myriad of new features. new_unstable.jpg Based on and supercedes EAP once complete.
Flash Camera Picture Taking cam Using Flash/Shockwave technology, this allows controlled capture of a photo from a webcam. Based on earlier Sahana framework code, modularized.
Expiry Queue eq This allows the management of record expiration requests made by users without sufficient privileges to manually expire records. new_unstable.jpg Intended for admins.
Abuse Queue aq This allows the management of reported abuse cases. new_unstable.jpg Intended for admins.
Statistics stat For a particular event, this will provide all-person data in tabular and graphical form, categorized by time, status, and other features. new_unstable.jpg Analogous to hospital dashboard displays, it will offer cumulative and time-based views.
TriagePic Module tp This exposes a face for the download of the TriagePic application for hospital personnel. stable_most_dev_done_.jpg
People Finder Information Format pfif This supports supervision of data import/export in PFIF 1.2, 1.3 formats with accompanying photos. stable_most_dev_done_.jpg Some of this functionality was previously within mpr.

Third-Party Libraries Needed by Vesuvius

Name Version (as of Jan 2012) From Separate Install? Dependent Modules Comments
ADODB 5.14 Included required by framework
BrowserCaps 0.7 Included required by framework
Feedwriter Included required by PFIF module
HTML Purifier 4.3.0 Included required by framework
NuSOAP 0.9.5 Included required by PLUS module
PHP-Console 1.1 Included optional for debugging purposes
PHPMailer 5.1 Included required by POP module
SOLR optional search enhancement for INW module
XAJAX 0.2 Included required by framework
ffmpeg v0.6+ required by LPF module

A Tip of the Hat to our Recent Volunteer and Student Contributors

Our Students at NLM, Summer 2011

  • Owen Royall-Kanih worked with an NLM instance of Google's open-source Person Finder, as a testbed for PFIF import/export, plus developed new-event alerting code, contributed back to Google.
  • Michael Bulgakov developed missing/found-person artificial-data generators.
  • Returning student Chase Bonifant created system diagrams and documentation, improved NLM's internal project website and wiki, and (during winter break of 2011/12) organized a draft continuity of operations plan.
  • Joy Frazier documented the triage process, and investigated applicability of social media/crowd-sourcing tools.

During the Sahana 2011 'Google Summer of Code'

During the Sahana 2010 'Google Summer Of Code'


During Random Hacks of Kindness 1.0, in Washington, DC

Volunteer Developers working with TriagePic:

  • Emad Ibrahim integrated a Webcam View/Image Capture window.
  • Jeff Bobish added a picture viewer to the Outbox.

Volunteer Developers working with ReUnite:

  • Vicky & Ryan Somma rapid-prototyped an Android version.

Also helping with concepts and contacts: Kumar Rangasamy & Ari Kaliannan

Our Students at NLM, Summer 2010

  • Chase Bonifant developed large-format system and workflow diagrams.
  • Hyen Guan prototyped image duplication and face detection software.
  • Bathiya Senevirathna created and improved the “Found in Haiti” iPhone app, later called “ReUnite”.

Developer Alumni

  • Merwan Rodriguez - PL Graphical user interface, Ajax (particularly filters, results popups), SOLR search engine and MySQL search through September, 2011;
  • Anantha Bangalore - Bluetooth R&D, Haiti earthquake meta-search, through July, 2010.
  • Ajay Kanduru - Haiti earthquake screenscrape from CNN iReports, initial SOLR integration

Source Code and Bug Reports

Source code for the above PeLo modules is available on Launchpad. Additional experimental or student modules, not integrated into the trunk at this time, can be found in other repository branches. Some NLM work under active development has not yet been pushed to the trunk.

Bug reports are also handled on Launchpad.

For More

NLM's involvement with Sahana began in 2008, through one of a group of projects for the Bethesda Hospitals Emergency Preparedness Partnership (BHEPP). October, 2009, saw the first alpha pilot by BHEPP during the CMAX 2009 exercise. A further iteration was tested again a year later during CMAX 2011.

Over time, additional appropriate “Phase 2” content will be moved here and freshened. For now, go to phase2.

QR Code
QR Code agasti:vesuvius:start (generated for current page)