wiki:Event/2011/GHC

Version 11 (modified by Pat Tressel, 10 years ago) ( diff )

--

Grace Hopper Celebration Codeathon for Humanity

The Codeathon at GHC2011 is intended to introduce participants to rapid development of FOSS applications in a collective coding setting.

Install the Eden development kit

Instructions for installing from the kit supplied at the event on flash drives are here.

Get an account on Launchpad

If you're in a hurry to get on with things, you can leave this til later, when you're ready to upload something to Launchpad.

  • Sign up for an account on Launchpad -- follow their account setup instructions.
  • You should make your own SSH keys (needed for uploading to Launchpad) -- see the instructions on Launchpad. (For Windows users, PuTTY is recommended as it's much faster to install then Cygwin.)
  • Join the GHC Codeathon team. Look for the "join the team" link.
  • When you have a branch ready to push to launchpad, you can do it without first creating the branch there. This example creates a branch called "work" that is associated with the Sahana Eden project on Launchpad. Say that your Launchpad username is "abcde":
    cd /home/web2py/applications/eden
    bzr push lp:~abcde/sahana-eden/work
    * When the time comes to do a "merge proposal" to get your changes into the team branch, you'll need to change the merge target to the [https://code.launchpad.net/~ghc-2011-codeathon/sahana-eden/team team branch].
    
    == Suggested Codeathon Projects ==
    
    === [http://wiki.openstreetmap.org OpenStreetMap] integration ===
    Leveraging the synergy of Kate Chapman's presence, and more generally, of OSM's participation...
    
    ==== Potlatch integration ====
    There is already a basic integration of [http://wiki.openstreetmap.org/wiki/Potlatch_2 Potlatch] (web-based OSM editor) into Sahana Eden (currently we have an 'Edit in Potlatch' button on the toolbar in the fullscreen map which opens the relevant area):
     * http://127.0.0.1:8000/eden/gis/map_viewing_client
     * http://127.0.0.1:8000/eden/gis/potlatch2/potlatch2.html
    {{{
    controllers/gis.py potlatch2()
    views/gis/potlatch2.html
    }}}
    
    This could use updating & having more customisation for the Humanitarian context (there are some presets here: http://pierzen.dev.openstreetmap.org/hotpotlatch2/potlatch2.html)
    & tighter integration with Sahana.
    
    ==== OSM Importer UI ====
     * There is an import stylesheet for .osm files: static/xslt/import/osm.xsl
     * This currently has hard-coded mappings between OSM admin levels & Sahana admin levels
      *  * http://wiki.openstreetmap.org/wiki/Tag:boundary%3Dadministrative#10_admin_level_values_for_specific_countries
     * A custom controller should be written
      * provide a UI to the user to select their country from the dropdown which pre-populates the mapping fields for manual verification/adjustment
      * process the results of this to pass new variables back to the stylesheet:
       * http://pub.nursix.org/eden/s3xrc/vita.modules.s3xrc.s3rest.S3Resource-class.html#import_xml
    {{{
    resource = s3xrc.resource("gis", "location")
    template = os.path.join(request.folder, resource.XSLT_PATH, "osm", "import.xsl")
    resource.import_xml("uploaded_filename.osm", template=template, mynewvar="xxx")
    }}}
     * The Stylesheet needs updating to act on these vars when found
    
    A nice further refinement would be to provide a UI to select a BBOX & optional filter to pull down the .osm file via [http://wiki.openstreetmap.org/wiki/XAPI XAPI]
     * Initially this could be manual text box entry of BBOX/filter
     * Then add a Map-based BBOX selection & dropdowns for the filter (which prepopulate the real dropdowns for manual verification/amendment)
    
    === Translations Admin Panel ===
    ==== Use Cases ====
     * Admin wants to update /languages on their running instance with current version from Pootle
     * Admin wants to be able to do offline translation of main language file(s) (either using native web2py UI or using a PO-based tool like Virtaal)
     * Admin wants to be able to translate additional custom strings in this instance (either using native web2py UI or using a PO-based tool like Virtaal)
    
    ==== Tasks ====
     * Add a page to {{{controllers/admin.py}}} to handle Translations.
     * Update the InstallationGuidelines with any new optional requirements (such as translate toolkit).
     * Gracefully give nice error messages if the translate toolkit isn't installed.
     * Update UserGuidelinesLocalisation
    
    ==== Export PO file ====
     * Dropdown to select which language
     * Button to call [http://translate.sourceforge.net/wiki/toolkit/py2web2po web2py2po] to convert the .py file to a standard PO file for the user to download
    
    ==== Import PO file ====
     * Upload Widget which calls [http://translate.sourceforge.net/wiki/toolkit/py2web2po po2web2py] onaccept to convert a .po file to a Web2Py .py file stored in the languages folder
      * Use the same filename prefix or prompt?
      * Do a merge
    
    ==== Update Pootle ====
    Provide a set of admin scripts (bzr post-commit hook?) to update Pootle with any changed strings as a Merge.
    === CAP: Common Alerting Protocol ===
    
    ''This is the least well defined project, and may be more investigation than coding.''
    
     * Receive CAP messages from an external CAP source.
     * Provide a form for originating CAP messages.
     * Send CAP messages to subscribers, retrying on failure.
     * Write a Facebook app to receive CAP messages and post them on one's wall.
    
    See more [wiki:GHC2011ProjectCAP here].
    
    === SAARAA: Situational Awareness and Rapid Assessment Application
    
    This was started as an Android app at !RHoK !#3 that allows the user to report on a dangerous situation by filling out a form and uploading an image.  That version uploaded data to a very simple Heroku back end.
    
    http://www.rhok.org/problems/saaraa-situational-awareness-and-rapid-assessment-application
    
    As a follow-on to that project, allow the app to send to an Eden back end.
     * Add an appropriate model to hold the uploaded situation report.
     * Allow users who have an Eden account to give their username and password. (Current version has no accounts.)
     * Handle receiving uploaded messages from users who don't include a username and password -- provide a code they can use to log in later.
     * Display the messages by category and time.
     * Allow commenting on the messages (e.g. adding updates about handling the messages).
     * Allow sending a message back to the user.
    
Note: See TracWiki for help on using the wiki.