SlideShare a Scribd company logo
Humanitarian-FOSS and  Rapid Application Development 4 July 2010, Academia Sinica Michael Howden and Fran Boon  [email_address] [email_address]
Overview Background of HFOSS HFOSS vs. FOSS Developing HFOSS Rapid Application Development Getting Involved
The Historic Trigger:  12/26/04 Indian Ocean Tsunami At least  226,000 dead Up to  5 million  people lost homes, or access to food and water 1 million  people left without a means to make a living At least  $7.5 billion  in the cost of damages
Problem: Aftermath of Disasters The  trauma  caused by waiting to be found or find the next of kin Coordinating  all aid groups and helping them to operate effectively as one Managing  the multitude of requests from the affected region and matching them effectively to the pledges of assistance Tracking  the location of all temporary shelters, camps, etc.
How Can Technology Help? Scalable  management of information No stacks of forms and files to manage Efficient  distribution of information Accessibility  of information on demand Automatic  collation and calculation No delay for assessments and calculations Live  situational awareness Reports are updated live as data is entered
Sahana is Born Organisation Registry Missing / Affected Persons Registry Request Management Mapping
NPOs / Government
Projects Related to HFOSS
Humanitarian FOSS vs. FOSS Goal: To Add to the Social Good Programmers != Users Diverse Community Programmers Designers & Producers Disaster Responders Social Workers You!
Challenges Uncertain and changing conditions. Communication Gap: NPOs/Government    IT Providers Limited time and resources Technology is Easy Getting people to use it is hard!
Participatory Programming Engaging with Users Bottom Up vs. Top down Agile vs. Waterfall
Software  Development  Cycle
RAPID APPLICATION DEVELOPMENT…
Emergency We have to build a system by lunchtime!
Incident Reporting System Data : Location Date Reporter Details Screens : Report Incident View Incidents Update Incident
Model-View-Controller Models Define Tables in the Database Controllers Workflow, Logic Views HTML / JavaScript Templates
Model: Define Table models/irs.py table = db.define_table("irs_incident", location_id, Field("date", "date"), person_id, comments )
Controller: CRUD Forms controllers/irs.py def incident(): return shn_ rest _controller("irs", "incident")
http://127.0.0.1:8000/eden/irs/incident
Rapid Application Development Scripting Language:  Python Library support including GIS, GSM Interactive Shell to explore
Rapid Application Development Framework:  Web2Py MVC – easier to maintain Automatic Database Migration Sensible Defaults No need to specify Routes to Controllers Field Types provide server-side & client-side validation & client-side rendering In-built Translation interface
Rapid Application Development Sahana Eden  Resource Controller CRUD Forms with default Views Web Services REST JSON XML
Rapid Application Development Sahana Eden Mapping OpenStreetMap Google, Yahoo, Bing GIS: WMS, WFS Messaging SMS Email Twitter
Coding Style: Substitution controllers/irs.py module = request.controller def incident(): resource = request.function tablename = "%s_%s" % (module, resource) table = db[tablename] return shn_rest_controller(module, resource)
Coding Style: Maintainability controllers/irs.py def incident(): "Using a docstring helps other coders" # Lots of other comments are also useful
Coding Style: Constants MY_LABEL = “My Label” … …  MY_LABEL … …………  MY_LABEL ………
Community Development Process Blue Prints Functional Specs: User Stories Drafted on Wiki Discussed on Chat & Mailing List
Community Development Process Agile  Development Functional increments released quickly to users for early feedback Copes better with rapidly-changing requirements Simulations Usability Testing Issue Tracker Logging & Prioritising
Rapid Application Development Building new functionality is fast & easy Critical for  HFOSS Python, Web2Py Sahana Resource Controller Coding Style Community Development Process Agile
Interested? Join the Global Community: http://eden.sahanafoundation.org Mailing List IRC Chat

More Related Content

PPTX
French red cross in laos presentation by david
PPT
Sahana At FoSSkriti 2009
PDF
Iscram 2007 humanitarian-foss case disaster management
PPTX
The Relevance of the “One Health” Approach to the Red Cross/ Red Crescent H...
PPT
Humanitarian FOSS Project Overview
PPT
Treasury operations in_banks
PPT
Concept Of Treasury And Treasury Management
PPTX
25 KPIs Every Manager Needs To Know
French red cross in laos presentation by david
Sahana At FoSSkriti 2009
Iscram 2007 humanitarian-foss case disaster management
The Relevance of the “One Health” Approach to the Red Cross/ Red Crescent H...
Humanitarian FOSS Project Overview
Treasury operations in_banks
Concept Of Treasury And Treasury Management
25 KPIs Every Manager Needs To Know

Similar to HFOSS and RAD (20)

PPTX
SF Bay Area Disaster Management overview
ODP
Evolution of the Sahana Open Source Project
PPTX
Data-Driven and User-Centric: Improving enterprise productivity and engagemen...
PPT
Building a Community of Innovation
PPT
Perpetual Analytics - Health in Motion
PPTX
The New Event Load
PPSX
Presentation on Department of Social Services (DSS)
PPTX
Introduction to NoSQL and Couchbase
PDF
Lecture1 is322 data&infomanag(introduction)(old curr)
PDF
Lecture1-IS322(Data&InfoMang-introduction)
PDF
Lecture1 is322 data&infomanag(introduction)(old curr)
PPT
Activity Streaming as Information X-Docking
PPT
Advancing Science In A Collaborative Web 20 World
PDF
Leveraging the Web for More Effective Engagement: Alliance for Nonprofit Mana...
PDF
Unidata's Approach to Community Broadening through Data and Technology Sharing
PPTX
WaterlooHiveTalk
PPTX
Emerging Trends in Crisis Informatics
PPTX
Gov civilworkshop
PPTX
Open Platforms for Healthcare Applications
PDF
Lean & Agile Methods & Frameworks: Perspectives on Kanban for IT
SF Bay Area Disaster Management overview
Evolution of the Sahana Open Source Project
Data-Driven and User-Centric: Improving enterprise productivity and engagemen...
Building a Community of Innovation
Perpetual Analytics - Health in Motion
The New Event Load
Presentation on Department of Social Services (DSS)
Introduction to NoSQL and Couchbase
Lecture1 is322 data&infomanag(introduction)(old curr)
Lecture1-IS322(Data&InfoMang-introduction)
Lecture1 is322 data&infomanag(introduction)(old curr)
Activity Streaming as Information X-Docking
Advancing Science In A Collaborative Web 20 World
Leveraging the Web for More Effective Engagement: Alliance for Nonprofit Mana...
Unidata's Approach to Community Broadening through Data and Technology Sharing
WaterlooHiveTalk
Emerging Trends in Crisis Informatics
Gov civilworkshop
Open Platforms for Healthcare Applications
Lean & Agile Methods & Frameworks: Perspectives on Kanban for IT
Ad

More from AidIQ (20)

PDF
Tech 2 - Introduction to the Code
PDF
Tech 1 - Deploying Sahana Eden
PDF
Introduction to Sahana Eden
ODP
Bombeiros Workshop - Introduction to Sahana Eden
PPTX
Sahana Open Source Humanitarian Software Project - Pandemic Preparedness Forum
PPT
Humanitarian Mapping - Sahana and OpenStreetMap
PPT
Sahana Eden : Introduction and Simulation A (SahanaCamp 1.2)
PPT
Sahana Eden : Developer Environment (VM) (SahanaCamp 1.2)
PPT
Sahana Eden : Deployment (SahanaCamp 1.2)
PPT
Sahana Eden : Bug Reporting (SahanaCamp 1.2)
PPT
Sahana : Case Studies (SahanaCamp 1.2)
PPT
Participatory programming
PPT
OpenStreetMap : Technical (SahanaCamp 1.2)
PPT
OpenStreetMap : Sahana Mapping Client (SahanaCamp 1.2)
PDF
Simulation: Instructions ((SahanaCamp 1.2)
PDF
Simulation: Incidents (SahanaCamp 1.2)
PPTX
Implementing IT Solutions for Disaster Management (SahanaCamp 1.2)
PDF
General Sessions Hand Outs (SahanaCamp 1.2)
PPT
BZR & LaunchPad : Sharing Your Work With Others (SahanaCamp 1.2)
PPT
Sahana Eden : Introduction to the Code (SahanaCamp 1.2)
Tech 2 - Introduction to the Code
Tech 1 - Deploying Sahana Eden
Introduction to Sahana Eden
Bombeiros Workshop - Introduction to Sahana Eden
Sahana Open Source Humanitarian Software Project - Pandemic Preparedness Forum
Humanitarian Mapping - Sahana and OpenStreetMap
Sahana Eden : Introduction and Simulation A (SahanaCamp 1.2)
Sahana Eden : Developer Environment (VM) (SahanaCamp 1.2)
Sahana Eden : Deployment (SahanaCamp 1.2)
Sahana Eden : Bug Reporting (SahanaCamp 1.2)
Sahana : Case Studies (SahanaCamp 1.2)
Participatory programming
OpenStreetMap : Technical (SahanaCamp 1.2)
OpenStreetMap : Sahana Mapping Client (SahanaCamp 1.2)
Simulation: Instructions ((SahanaCamp 1.2)
Simulation: Incidents (SahanaCamp 1.2)
Implementing IT Solutions for Disaster Management (SahanaCamp 1.2)
General Sessions Hand Outs (SahanaCamp 1.2)
BZR & LaunchPad : Sharing Your Work With Others (SahanaCamp 1.2)
Sahana Eden : Introduction to the Code (SahanaCamp 1.2)
Ad

HFOSS and RAD

  • 1. Humanitarian-FOSS and Rapid Application Development 4 July 2010, Academia Sinica Michael Howden and Fran Boon [email_address] [email_address]
  • 2. Overview Background of HFOSS HFOSS vs. FOSS Developing HFOSS Rapid Application Development Getting Involved
  • 3. The Historic Trigger: 12/26/04 Indian Ocean Tsunami At least 226,000 dead Up to 5 million people lost homes, or access to food and water 1 million people left without a means to make a living At least $7.5 billion in the cost of damages
  • 4. Problem: Aftermath of Disasters The trauma caused by waiting to be found or find the next of kin Coordinating all aid groups and helping them to operate effectively as one Managing the multitude of requests from the affected region and matching them effectively to the pledges of assistance Tracking the location of all temporary shelters, camps, etc.
  • 5. How Can Technology Help? Scalable management of information No stacks of forms and files to manage Efficient distribution of information Accessibility of information on demand Automatic collation and calculation No delay for assessments and calculations Live situational awareness Reports are updated live as data is entered
  • 6. Sahana is Born Organisation Registry Missing / Affected Persons Registry Request Management Mapping
  • 9. Humanitarian FOSS vs. FOSS Goal: To Add to the Social Good Programmers != Users Diverse Community Programmers Designers & Producers Disaster Responders Social Workers You!
  • 10. Challenges Uncertain and changing conditions. Communication Gap: NPOs/Government  IT Providers Limited time and resources Technology is Easy Getting people to use it is hard!
  • 11. Participatory Programming Engaging with Users Bottom Up vs. Top down Agile vs. Waterfall
  • 14. Emergency We have to build a system by lunchtime!
  • 15. Incident Reporting System Data : Location Date Reporter Details Screens : Report Incident View Incidents Update Incident
  • 16. Model-View-Controller Models Define Tables in the Database Controllers Workflow, Logic Views HTML / JavaScript Templates
  • 17. Model: Define Table models/irs.py table = db.define_table("irs_incident", location_id, Field("date", "date"), person_id, comments )
  • 18. Controller: CRUD Forms controllers/irs.py def incident(): return shn_ rest _controller("irs", "incident")
  • 20. Rapid Application Development Scripting Language: Python Library support including GIS, GSM Interactive Shell to explore
  • 21. Rapid Application Development Framework: Web2Py MVC – easier to maintain Automatic Database Migration Sensible Defaults No need to specify Routes to Controllers Field Types provide server-side & client-side validation & client-side rendering In-built Translation interface
  • 22. Rapid Application Development Sahana Eden Resource Controller CRUD Forms with default Views Web Services REST JSON XML
  • 23. Rapid Application Development Sahana Eden Mapping OpenStreetMap Google, Yahoo, Bing GIS: WMS, WFS Messaging SMS Email Twitter
  • 24. Coding Style: Substitution controllers/irs.py module = request.controller def incident(): resource = request.function tablename = "%s_%s" % (module, resource) table = db[tablename] return shn_rest_controller(module, resource)
  • 25. Coding Style: Maintainability controllers/irs.py def incident(): "Using a docstring helps other coders" # Lots of other comments are also useful
  • 26. Coding Style: Constants MY_LABEL = “My Label” … … MY_LABEL … ………… MY_LABEL ………
  • 27. Community Development Process Blue Prints Functional Specs: User Stories Drafted on Wiki Discussed on Chat & Mailing List
  • 28. Community Development Process Agile Development Functional increments released quickly to users for early feedback Copes better with rapidly-changing requirements Simulations Usability Testing Issue Tracker Logging & Prioritising
  • 29. Rapid Application Development Building new functionality is fast & easy Critical for HFOSS Python, Web2Py Sahana Resource Controller Coding Style Community Development Process Agile
  • 30. Interested? Join the Global Community: http://eden.sahanafoundation.org Mailing List IRC Chat

Editor's Notes

  • #5: The problems faced by both the victims of and responders to disasters are numerous. Beyond the trauma, this involves having to coordinate, manage and track things. In countries at risk of being affected by large scale sudden onset disasters, these problems can be massive and overwhelming.
  • #6: Technology can address many of the data management challenges and requirements by providing solutions that are scalable, efficient, automatic and by providing live data and situational awareness to both emergency managers and the community.
  • #7: The core functionality of Sahana developed for use in Sri Lanka endures to this day. Sahana provides a single database for recording who is doing what where – identifying what the needs are – where people are located – and where assistance is needed. The core capabilities of Sahana include an organization registry, for relief agencies to record their contact information and where they are working. This module also records what services these organizations are providing. Another piece of core functionality is a missing persons and a disaster victims registry for tracking both the missing and the found, those registered at shelters and those needing assistance in family reunification.
  • #8: Longer-term
  • #17: Clear structure helps maintainability
  • #22: Easy to Install on a Laptop In-built Scheduler Database Abstraction Layer: Supports Multiple Databases for easy access to legacy data
  • #25: Note the use of string substitution to define the tablename More effort at 1 st but makes subsequent resources much faster to copy/paste
  • #26: Maintainability is key: the software is usually customised locally so it needs to be clearly understood by others
  • #27: If a string is used multiple times then define as a constant as terminology can be different in different contexts
  • #29: Contrasts with a Waterfall method where formal specifications have code written & unit tested & then released to users in big chunks
  • #31: Website including the Wiki