[[TOC]] = 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. == Ready, set, go! == === Install the Eden development kit === Instructions for installing from the kit supplied at the event on flash drives are [wiki:InstallationGuidelines/VirtualMachineGHC 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 [http://launchpad.net Launchpad] -- follow their account setup instructions. * You should make your own SSH keys (needed for uploading to Launchpad) -- see the [https://help.launchpad.net/YourAccount/CreatingAnSSHKeyPair instructions] on Launchpad. (For Windows users, PuTTY is recommended as it's much faster to install then Cygwin.) * Join the [https://launchpad.net/~ghc-2011-codeathon 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":[[br]] {{{ 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]. === The IRC channel === We're going to take over the Eden IRC channel: #sahana-eden on freenode. If you don't already have an IRC client, the easiest way to connect is to use freenode's [https:webchat.freenode.net web chat client]. * To post a message, type in the text box, type Enter. * To get someone's attention, type their nick anywhere in your message. (Use sparingly -- this will ring bells / flash lights on their machine.) === It doesn't end at 3pm === The 3pm end of the event is artificial -- you can continue afterward. If you sign up on Launchpad and join the team, you can keep in touch with other team members via Launchpad. == 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.