{"id":2744,"date":"2012-06-05T09:23:11","date_gmt":"2012-06-05T17:23:11","guid":{"rendered":"http:\/\/blog.mozilla.org\/webdev\/?p=2744"},"modified":"2012-06-05T09:23:11","modified_gmt":"2012-06-05T17:23:11","slug":"hacking-on-open-web-apps","status":"publish","type":"post","link":"https:\/\/blog.mozilla.org\/webdev\/2012\/06\/05\/hacking-on-open-web-apps\/","title":{"rendered":"Hacking on open web apps"},"content":{"rendered":"<p>At Mozilla, we believe <a href=\"http:\/\/blog.mozilla.org\/blog\/2012\/02\/27\/mozilla-in-mobile-the-web-is-the-platform\/\">the web is the platform<\/a>. It&#8217;s the one place where we can share apps across many devices using ubiquitous, open technologies: HTML5 and JavaScript. Today, where we have many devices running proprietary platforms at our fingertips, the web is quickly fading into a second class citizen. Let&#8217;s change that. Mozilla&#8217;s <a href=\"https:\/\/developer.mozilla.org\/en\/Apps\/\">Open Web App<\/a> initiative aims to make web based applications feel as native as possible on <a href=\"http:\/\/openwebdevice.com\/\">as many devices as possible<\/a>. For existing operating systems, <a href=\"https:\/\/wiki.mozilla.org\/Apps\/WebRT\">you too can run web apps<\/a>. To kickstart an apps ecosystem and facilitate app commerce, we&#8217;re launching the <a href=\"https:\/\/marketplace.mozilla.org\/\">Mozilla Marketplace<\/a>.<\/p>\n<p>The Webdev group at Mozilla&#8211;a group from all corners of the globe who are working with web technologies&#8211;met recently by the beach at Santa Cruz, CA. Besides syncing up on all our various projects (it was like an unconference) we decided the Open Web Apps projects needs, well, it needs apps!<\/p>\n<p>We spent half a day hacking on apps and \/ or developer tools to help people build apps easier. Here are the results. These were literally built in the span of 4 hours so most are still just experimental prototypes. There are links to the source so if an app looks interesting and you want to make it better, don&#8217;t hesitate to submit a pull request. It was a lot of fun; we learned about what the web can already do as an apps platform and also what gaps still need to be filled for web developers who want to create apps. You&#8217;ll notice that a lot of these screenshots are done with a web browser because that is the SDK of an open web app platform \ud83d\ude42<\/p>\n<h2>Open Maps<\/h2>\n<p>by <a href=\"https:\/\/github.com\/pennyfx\">Arron Schaar<\/a>, <a href=\"https:\/\/github.com\/seanmonstar\">Sean McArthur<\/a>, <a href=\"https:\/\/github.com\/zalun\">Piotr Zalewa<\/a><\/p>\n<p>A map made with Leaflet and Open Street Maps. Try it <a href=\"http:\/\/mozilla.github.com\/WebApp-OpenStreetMap\/\">out<\/a> (<a href=\"https:\/\/github.com\/mozilla\/WebApp-OpenStreetMap\/\">source code<\/a>)<\/p>\n<p><img decoding=\"async\" loading=\"lazy\" title=\"Screen Shot 2012-06-01 at 6.27.12 PM\" src=\"http:\/\/blog.mozilla.org\/webdev\/files\/2012\/06\/Screen-Shot-2012-06-01-at-6.27.12-PM.png\" alt=\"\" width=\"629\" height=\"557\" \/><\/p>\n<h2>Rock Paper Scissors<\/h2>\n<p>by <a href=\"https:\/\/github.com\/peterbe\/\">Peter Bengtsson<\/a> and <a href=\"https:\/\/github.com\/ossreleasefeed\">Schalk Neethling<\/a><\/p>\n<p>The game, the legend (<a href=\"https:\/\/github.com\/peterbe\/rpsls\">source code<\/a>). The app is played best with a friend!<\/p>\n<p><img decoding=\"async\" loading=\"lazy\" class=\"alignnone\" src=\"http:\/\/f.cl.ly\/items\/1W1v3U0x0V430n10333T\/Screen%20Shot%202012-06-04%20at%2008.49.00.png\" alt=\"\" width=\"1000\" height=\"776\" \/><\/p>\n<h2>Mash Water<\/h2>\n<p>by <a href=\"https:\/\/github.com\/groovecoder\">Luke Crouch<\/a><\/p>\n<p>Brewer&#8217;s tool to help understand mash water formula. Try it <a href=\"http:\/\/groovecoder.github.com\/brewbbage\/\">out<\/a> (<a href=\"https:\/\/github.com\/groovecoder\/brewbbage\">source code<\/a>).<\/p>\n<p><img decoding=\"async\" loading=\"lazy\" src=\"http:\/\/dl.dropbox.com\/u\/21969365\/images\/brewbbage.png\" alt=\"\" width=\"477\" height=\"696\" \/><\/p>\n<h2>Herbie<\/h2>\n<p>by <a href=\"https:\/\/github.com\/ednapiranha\/\">ednapiranha<\/a> and <a href=\"https:\/\/github.com\/kumar303\/\">Kumar McMillan<\/a><\/p>\n<p>An HTML5 music player with an S3 backend to sync your music (<a href=\"https:\/\/github.com\/ednapiranha\/herbie\">source code<\/a>).<\/p>\n<p><img decoding=\"async\" loading=\"lazy\" title=\"Herbie UI\" src=\"https:\/\/a248.e.akamai.net\/camo.github.com\/9ffbdbf5a8aa0bbe0901a93a219bf4f4efe72798\/687474703a2f2f662e636c2e6c792f6974656d732f335a3356316f31313275317633503063314831772f6865726269652d75692e706e67\" alt=\"\" width=\"642\" height=\"570\" \/><\/p>\n<p>&nbsp;<\/p>\n<h2>Magic 10-Ball<\/h2>\n<p>by <a href=\"https:\/\/github.com\/rlr\/\">Ricky Rosario<\/a> and <a href=\"https:\/\/github.com\/willkg\">Will Kahn-Greene<\/a><\/p>\n<p>Magic 10-ball app to help people make <strong>critical<\/strong> decisions (<a href=\"http:\/\/github.com\/willkg\/magic10ball\">source code<\/a>). Early on in development, the app itself was used to decide what to build next for the app.<\/p>\n<p><a href=\"http:\/\/blog.mozilla.org\/webdev\/files\/2012\/06\/Screen-Shot-2012-06-01-at-7.20.26-PM.png\"><img decoding=\"async\" loading=\"lazy\" title=\"Screen Shot 2012-06-01 at 7.20.26 PM\" src=\"http:\/\/blog.mozilla.org\/webdev\/files\/2012\/06\/Screen-Shot-2012-06-01-at-7.20.26-PM.png\" alt=\"\" width=\"507\" height=\"576\" \/><\/a><\/p>\n<h2>Linecutting with flexbox<\/h2>\n<p>by <a href=\"https:\/\/github.com\/jlongster\/\">James Long<\/a><\/p>\n<p>An experiment in creating some UI components. Try <a href=\"http:\/\/jlongster.com\/s\/webui\/\">it out<\/a> (<a href=\"https:\/\/github.com\/jlongster\/webui\">source code<\/a>).<\/p>\n<p><img decoding=\"async\" loading=\"lazy\" class=\"alignnone\" src=\"http:\/\/jlongster.com\/s\/webui1.png\" alt=\"\" width=\"675\" height=\"676\" \/><\/p>\n<h2>Receipt Verifier<\/h2>\n<p>by <a href=\"https:\/\/github.com\/andymckay\/\">Andy McKay<\/a><\/p>\n<p>Paid apps will need to verify the user&#8217;s receipt on their app server. This is a <a href=\"https:\/\/github.com\/andymckay\/receipts\">Python library<\/a> to facilitate that. Here&#8217;s a <a href=\"http:\/\/andymckay.github.com\/myscotch\/\">live demo<\/a>.<\/p>\n<h2>in-app console<\/h2>\n<p>by <a href=\"https:\/\/github.com\/potch\/\">Matt Claypotch<\/a><\/p>\n<p>An embeddable debug tool for apps (<a href=\"http:\/\/github.com\/potch\/tinytools\">source code<\/a>).<\/p>\n<h2>Draw Nothing<\/h2>\n<p>by <a href=\"https:\/\/github.com\/ngokevin\">Kevin Ngo<\/a><\/p>\n<p>An HTML5 experiment to make a color palette and drawing surface like Draw Something. Use the app <a href=\"http:\/\/ngokevin.com\/~ngoke\/draw_nothing\/\">here<\/a> (<a href=\"https:\/\/github.com\/ngokevin\/draw_nothing\">source code<\/a>).<\/p>\n<h2>Goutte Goutte puzzle game<\/h2>\n<p>by <a href=\"https:\/\/github.com\/Osmose\/\">Mike Kelly<\/a>, <a href=\"https:\/\/github.com\/craigcook\">Craig Cook<\/a>, and <a href=\"https:\/\/github.com\/AdrianGaudebert\/\">Adrian Gaudebert<\/a><\/p>\n<p>Falling bubble things. Play it <a href=\"http:\/\/goutte.thinkbar.org\/\">here<\/a> (<a href=\"https:\/\/github.com\/Osmose\/gouttegoutte \">source code<\/a>).<\/p>\n<h2>Hipstergram<\/h2>\n<p>by <a href=\"https:\/\/github.com\/tofumatt\">tofumatt<\/a> and <a href=\"https:\/\/github.com\/fwenzel\/\">Fred Wenzel<\/a><\/p>\n<p>An HTML5 Instagram clone. Try it <a href=\"http:\/\/fwenzel.github.com\/hipstergram\/\">out<\/a> (<a href=\"https:\/\/github.com\/fwenzel\/hipstergram\">source code<\/a>).<\/p>\n<h2>Fotofilter<\/h2>\n<p>by <a href=\"https:\/\/github.com\/darkwing\">David Walsh<\/a><\/p>\n<p>Another HTML5 Hipstergram clone, but faster and with moar css seckc (<a href=\"https:\/\/github.com\/darkwing\/fotofilter\">source code<\/a>).<\/p>\n<h2>S3 iframe proxy<\/h2>\n<p>by <a href=\"https:\/\/github.com\/lmorchard\">Les Orchard<\/a><\/p>\n<p>Save content to Amazon S3 from an open web app <a href=\"https:\/\/github.com\/lmorchard\/s3-iframe-proxy\"> (source code<\/a>)<\/p>\n<h2>Near Beer<\/h2>\n<p>by <a href=\"https:\/\/github.com\/pmclanahan\">Paul McLanahan<\/a> and <a href=\"https:\/\/github.com\/robhudson\/\">Rob Hudson<\/a><\/p>\n<p>A mash up of untappd and foursquare that helps thirsty people get unthirsty. Try it <a href=\"http:\/\/nearbeer.herokuapp.com\/\">out<\/a> (<a href=\"https:\/\/github.com\/robhudson\/nearbeer\">source code<\/a>).<\/p>\n<h2>Fileabug<\/h2>\n<p>by <a href=\"https:\/\/github.com\/rik\/\">Anthony &#8220;Rik&#8221; Ricaud<\/a><\/p>\n<p>See it <a href=\"http:\/\/rik.github.com\/fileabug\/\">in action<\/a> (<a href=\"https:\/\/github.com\/rik\/fileabug\/\">source code<\/a>)<\/p>\n<h2>FFFUnit<\/h2>\n<p>by <a href=\"https:\/\/github.com\/ubernostrum\">James Bennett<\/a><\/p>\n<p>Unit Calculator that converts to FFF scale (<a href=\"https:\/\/github.com\/ubernostrum\/FFFUnit\">source code<\/a>).<\/p>\n<h2>Webcalc<\/h2>\n<p>by <a href=\"https:\/\/github.com\/jsocol\/\">James Socol<\/a><\/p>\n<p>A graphing calculator webapp (<a href=\"https:\/\/github.com\/jsocol\/webcalc\">source code<\/a>).<\/p>\n","protected":false},"excerpt":{"rendered":"<p>At Mozilla, we believe the web is the platform. It&#8217;s the one place where we can share apps across many devices using ubiquitous, open technologies: HTML5 and JavaScript. Today, where we have many devices running proprietary platforms at our fingertips, &hellip; <a class=\"go\" href=\"https:\/\/blog.mozilla.org\/webdev\/2012\/06\/05\/hacking-on-open-web-apps\/\">Continue reading<\/a><\/p>\n","protected":false},"author":293,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4714,4713,124,19291,288],"tags":[],"coauthors":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v22.5 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Hacking on open web apps - Mozilla Web Development<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/blog.mozilla.org\/webdev\/2012\/06\/05\/hacking-on-open-web-apps\/\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"kumar303\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"3 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/blog.mozilla.org\/webdev\/2012\/06\/05\/hacking-on-open-web-apps\/\",\"url\":\"https:\/\/blog.mozilla.org\/webdev\/2012\/06\/05\/hacking-on-open-web-apps\/\",\"name\":\"Hacking on open web apps - Mozilla Web Development\",\"isPartOf\":{\"@id\":\"https:\/\/blog.mozilla.org\/webdev\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/blog.mozilla.org\/webdev\/2012\/06\/05\/hacking-on-open-web-apps\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/blog.mozilla.org\/webdev\/2012\/06\/05\/hacking-on-open-web-apps\/#primaryimage\"},\"thumbnailUrl\":\"http:\/\/blog.mozilla.org\/webdev\/files\/2012\/06\/Screen-Shot-2012-06-01-at-6.27.12-PM.png\",\"datePublished\":\"2012-06-05T17:23:11+00:00\",\"dateModified\":\"2012-06-05T17:23:11+00:00\",\"author\":{\"@id\":\"https:\/\/blog.mozilla.org\/webdev\/#\/schema\/person\/aa2b14e555e8a5fec38a51659b15e3c4\"},\"breadcrumb\":{\"@id\":\"https:\/\/blog.mozilla.org\/webdev\/2012\/06\/05\/hacking-on-open-web-apps\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/blog.mozilla.org\/webdev\/2012\/06\/05\/hacking-on-open-web-apps\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/blog.mozilla.org\/webdev\/2012\/06\/05\/hacking-on-open-web-apps\/#primaryimage\",\"url\":\"http:\/\/blog.mozilla.org\/webdev\/files\/2012\/06\/Screen-Shot-2012-06-01-at-6.27.12-PM.png\",\"contentUrl\":\"http:\/\/blog.mozilla.org\/webdev\/files\/2012\/06\/Screen-Shot-2012-06-01-at-6.27.12-PM.png\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/blog.mozilla.org\/webdev\/2012\/06\/05\/hacking-on-open-web-apps\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/blog.mozilla.org\/webdev\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Hacking on open web apps\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/blog.mozilla.org\/webdev\/#website\",\"url\":\"https:\/\/blog.mozilla.org\/webdev\/\",\"name\":\"Mozilla Web Development\",\"description\":\"For make benefit of glorious tubes\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/blog.mozilla.org\/webdev\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/blog.mozilla.org\/webdev\/#\/schema\/person\/aa2b14e555e8a5fec38a51659b15e3c4\",\"name\":\"kumar303\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/blog.mozilla.org\/webdev\/#\/schema\/person\/image\/a707ad1bf04083698e2b4a775a7492b7\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/059920b9daee1ece045f4031037ffb79?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/059920b9daee1ece045f4031037ffb79?s=96&d=mm&r=g\",\"caption\":\"kumar303\"},\"description\":\"Kumar hacks on Mozilla web services and tools for various projects, such as those supporting Firefox Add-ons. He hacks on lots of random open source projects too.\",\"sameAs\":[\"http:\/\/farmdev.com\/\",\"https:\/\/www.facebook.com\/kumar303\",\"https:\/\/x.com\/kumar303\"],\"url\":\"https:\/\/blog.mozilla.org\/webdev\/author\/kmcmillanmozilla-com\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Hacking on open web apps - Mozilla Web Development","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/blog.mozilla.org\/webdev\/2012\/06\/05\/hacking-on-open-web-apps\/","twitter_misc":{"Written by":"kumar303","Est. reading time":"3 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/blog.mozilla.org\/webdev\/2012\/06\/05\/hacking-on-open-web-apps\/","url":"https:\/\/blog.mozilla.org\/webdev\/2012\/06\/05\/hacking-on-open-web-apps\/","name":"Hacking on open web apps - Mozilla Web Development","isPartOf":{"@id":"https:\/\/blog.mozilla.org\/webdev\/#website"},"primaryImageOfPage":{"@id":"https:\/\/blog.mozilla.org\/webdev\/2012\/06\/05\/hacking-on-open-web-apps\/#primaryimage"},"image":{"@id":"https:\/\/blog.mozilla.org\/webdev\/2012\/06\/05\/hacking-on-open-web-apps\/#primaryimage"},"thumbnailUrl":"http:\/\/blog.mozilla.org\/webdev\/files\/2012\/06\/Screen-Shot-2012-06-01-at-6.27.12-PM.png","datePublished":"2012-06-05T17:23:11+00:00","dateModified":"2012-06-05T17:23:11+00:00","author":{"@id":"https:\/\/blog.mozilla.org\/webdev\/#\/schema\/person\/aa2b14e555e8a5fec38a51659b15e3c4"},"breadcrumb":{"@id":"https:\/\/blog.mozilla.org\/webdev\/2012\/06\/05\/hacking-on-open-web-apps\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/blog.mozilla.org\/webdev\/2012\/06\/05\/hacking-on-open-web-apps\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/blog.mozilla.org\/webdev\/2012\/06\/05\/hacking-on-open-web-apps\/#primaryimage","url":"http:\/\/blog.mozilla.org\/webdev\/files\/2012\/06\/Screen-Shot-2012-06-01-at-6.27.12-PM.png","contentUrl":"http:\/\/blog.mozilla.org\/webdev\/files\/2012\/06\/Screen-Shot-2012-06-01-at-6.27.12-PM.png"},{"@type":"BreadcrumbList","@id":"https:\/\/blog.mozilla.org\/webdev\/2012\/06\/05\/hacking-on-open-web-apps\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/blog.mozilla.org\/webdev\/"},{"@type":"ListItem","position":2,"name":"Hacking on open web apps"}]},{"@type":"WebSite","@id":"https:\/\/blog.mozilla.org\/webdev\/#website","url":"https:\/\/blog.mozilla.org\/webdev\/","name":"Mozilla Web Development","description":"For make benefit of glorious tubes","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/blog.mozilla.org\/webdev\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/blog.mozilla.org\/webdev\/#\/schema\/person\/aa2b14e555e8a5fec38a51659b15e3c4","name":"kumar303","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/blog.mozilla.org\/webdev\/#\/schema\/person\/image\/a707ad1bf04083698e2b4a775a7492b7","url":"https:\/\/secure.gravatar.com\/avatar\/059920b9daee1ece045f4031037ffb79?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/059920b9daee1ece045f4031037ffb79?s=96&d=mm&r=g","caption":"kumar303"},"description":"Kumar hacks on Mozilla web services and tools for various projects, such as those supporting Firefox Add-ons. He hacks on lots of random open source projects too.","sameAs":["http:\/\/farmdev.com\/","https:\/\/www.facebook.com\/kumar303","https:\/\/x.com\/kumar303"],"url":"https:\/\/blog.mozilla.org\/webdev\/author\/kmcmillanmozilla-com\/"}]}},"jetpack_featured_media_url":"","_links":{"self":[{"href":"https:\/\/blog.mozilla.org\/webdev\/wp-json\/wp\/v2\/posts\/2744"}],"collection":[{"href":"https:\/\/blog.mozilla.org\/webdev\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.mozilla.org\/webdev\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.mozilla.org\/webdev\/wp-json\/wp\/v2\/users\/293"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.mozilla.org\/webdev\/wp-json\/wp\/v2\/comments?post=2744"}],"version-history":[{"count":0,"href":"https:\/\/blog.mozilla.org\/webdev\/wp-json\/wp\/v2\/posts\/2744\/revisions"}],"wp:attachment":[{"href":"https:\/\/blog.mozilla.org\/webdev\/wp-json\/wp\/v2\/media?parent=2744"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.mozilla.org\/webdev\/wp-json\/wp\/v2\/categories?post=2744"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.mozilla.org\/webdev\/wp-json\/wp\/v2\/tags?post=2744"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/blog.mozilla.org\/webdev\/wp-json\/wp\/v2\/coauthors?post=2744"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}