• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Philly ete-2011
 

Philly ete-2011

on

  • 2,012 views

 

Statistics

Views

Total Views
2,012
Views on SlideShare
2,011
Embed Views
1

Actions

Likes
1
Downloads
21
Comments
0

1 Embed 1

http://a0.twimg.com 1

Accessibility

Categories

Upload Details

Uploaded via as Apple Keynote

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment
  • \n
  • This is a self portrait of me fighting a black beary\nI am CTO and co-founder of a mobile web consulting company in Vancouver.\n
  • \n
  • \n
  • The whole impetus for PhoneGap was the fact that in 2008 we saw growing fragmentation of the smartphone market. It has not gotten any better.\nHow many people here own a Symbian phone? Symbian will be split up between Android and WP7 according to gartner.\n
  • \n
  • \n
  • That’s why we like HTML5. When you combine HTML5 with ...\n
  • mobile phones\n
  • you get PhoneGap. PhoneGap is a free and open source framework that enables developers to write cross platform native mobile applications.\n
  • \n
  • \n
  • \n
  • \n
  • created in aug 2008 over a bunch of beer\n
  • We realized that we could talk between JavaScript and Objective-C!\n
  • \n
  • \n
  • \n
  • \n
  • \n
  • Then IBM decided to contribute...\n
  • awesome\n
  • A big reason that any of this happened was because of our licensing!\n
  • \n
  • oddly enough we have not even changed our licensing!\n
  • \n
  • Windows Mobile\nBB < 4.6\n
  • \n
  • We achieve cross platform development through neither magic nor the force, but through HTML, JavaScript and CSS.\n
  • A lot of people like to call this HTML5 for lack of a better term.\n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • More includes means slower startup. Reduce your HTML, CSS and JS!\n
  • \n
  • specify assets for loading in various places that might be stored in other various places.\nicon, splash screen, index.html path and js pathing\nfeature capability / security\nnetwork restrictions security\ntitle, description, license, author, etc\n
  • Bring it all together\n
  • \n
  • Sure but why do you own a chumby anyhow? In all seriousness it could work on Chumby if it wasn’t flash based :/\n
  • When I said that PhoneGap apps were “native” before I wasn’t kidding.\n
  • Do bears shit in the woods\n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • Guess which line represents the phonegap project?\n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • PhoneGap is unique in that it is exposing native APIs in JavaScript according to ... standards\n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • Since we are browser based, we get to take advantage of the wonders of HTML5 ... sadly this is not really cross browser\n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • this one is actually sort of reasonable\n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • Just over half way here ... is everyone still alive?\n
  • \n
  • \n
  • \n
  • \n
  • \n
  • There is all sorts of tooling available. JS minifiers, IDEs, \n
  • \n
  • You can use device emulators but they usually suck. Try Ripple or just use WebKit\n
  • In summary just use the web development tools you already know and use.\n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • I can do that too. Here’s another number.\n
  • \n
  • \n
  • \n
  • Another number, twelve billion. That’s the market cap of a company that is built on the PhoneGap technique. Anyone know what it is?\n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • Fewer tests, fewer bugs\n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • “feeling” native is something that you have been programmed to feel.\n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • , , ... etc\n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n

Philly ete-2011 Philly ete-2011 Presentation Transcript

  • PhoneGap Past, Present and Future Philly ETE 2011
  • @davejohnson I’m Canadian eh.
  • Schedule
  • Why am I here?
  • Why am I here?• Beer?
  • Worldwide Smartphone Sales November 2010 Symbian 2%3% 2% Android Blackberry 17% 37% iOS Linux Other 15% Windows Mobile 26%http://www.gartner.com/it/page.jsp?id=1466313
  • Native languagesiOS .............................. Objective CAndroid ...................... Java ‘Harmony’ / C++BlackBerry ................. Java J2ME / C++ (maybe?)webOS ........................ HTML, CSS and JSWindows Phone 7 ... .NET bsBada ............................. C++
  • PhoneGap
  • PhoneGap Pattern1. Embed a chromeless browser in a native app2. Create a “bridge” between the browser and the native code3. Write a web app!
  • Write once debug everywhere
  • Past
  • document.location = ‘gap://Geolocation’;
  • [webView stringByEvaluatingJavaScriptFromString:str];
  • BlackBerry• you don’t want to know
  • Android• seriously don’t ask
  • Others• not so hard
  • MIT/BSD/APACHE
  • Present
  • MIT/BSD/APACHE
  • Supported PlatformsiOS >= 3.2Android >= 1.5BlackBerry >= 4.6webOS >= 1.4.5Symbian >= 1
  • Deprecated
  • Prototype PlatformsSamsung BadaQt by way of C++ (MeeGo, desktops, etc)Qt by way of PySideWindows Phone 7OS X CocoaWindows by way of WebKit.NET(Other web business like Chrome App Store and Mozilla’sOpen Web apps are interesting to us.)
  • How do you write PhoneGap apps?
  • Mobile web first!• Basics.• Tooling.• Libraries.
  • Basics: HTML<button>I’m native codes!</button>
  • Setup the Viewport<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no;" />
  • Basics: CSS3• Media queries come in handy for tablets• Many folk using precompilers these days• Opacity, rounded corners, gradients and fucking drop shadows fuck ya!
  • CSS3 Animations-webkit-transform: translate3d(x,y,z) scale3D(1,1,1.0)
  • Media Query
  • Media Query<link rel="stylesheet" media="all and (max-device-width: 480px)" href="iphone.css">
  • Media Query<link rel="stylesheet" media="all and (max-device-width: 480px)" href="iphone.css"><link rel="stylesheet" media="all and (min-device-width: 481px) and (max-device-width: 1024px) and(orientation:portrait)" href="ipad-portrait.css">
  • Media Query<link rel="stylesheet" media="all and (max-device-width: 480px)" href="iphone.css"><link rel="stylesheet" media="all and (min-device-width: 481px) and (max-device-width: 1024px) and(orientation:portrait)" href="ipad-portrait.css"><link rel="stylesheet" media="all and (min-device-width: 481px) and (max-device-width: 1024px) and(orientation:landscape)" href="ipad-landscape.css">
  • Media Query<link rel="stylesheet" media="all and (max-device-width: 480px)" href="iphone.css"><link rel="stylesheet" media="all and (min-device-width: 481px) and (max-device-width: 1024px) and(orientation:portrait)" href="ipad-portrait.css"><link rel="stylesheet" media="all and (min-device-width: 481px) and (max-device-width: 1024px) and(orientation:landscape)" href="ipad-landscape.css">
  • Basics: JavaScript• Language of the web.• Scheme with a C syntax.• Some quirks: http://wtfjs.com
  • Startupdocument.addEventListener( ‘deviceready’, function() { alert(‘WINNING!’); }, false);
  • Basics: config.xml• Lifted from the W3C Widget Spec• Many variants. See rubygem ‘confetti’• Handy for packaging metadata.• Wtf is packaging metadata?
  • config.xml example
  • <!DOCTYPE html><html> <head> <title>Vanilla</title> <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no;" /> <link rel="stylesheet" href="css/app.css" type="text/css"media="screen"> </head><body> <h1>Vanilla!</h1> <p>Ice Ice Baby</p><!-- always put phonegap.js first!!! --> <script src="phonegap-0.9.4.js"></script> <script>document.addEventListener(‘deviceready’, function(){}, false); </script></body></html>
  • Will PhoneGap work on my Chumby?
  • Can you put PhoneGap apps in the App Store /Android Market / whatever?
  • Clear as Mud
  • Clear as Mud• WRITE IN HTML, JAVASCRIPT AND CSS
  • Clear as Mud• WRITE IN HTML, JAVASCRIPT AND CSS• PRODUCE A NATIVE APP PACKAGED PACKAGED ON A PER PLATFORM BASIS
  • Clear as Mud• WRITE IN HTML, JAVASCRIPT AND CSS• PRODUCE A NATIVE APP PACKAGED PACKAGED ON A PER PLATFORM BASIS• NO CROSS COMPILING MAGIC
  • Clear as Mud• WRITE IN HTML, JAVASCRIPT AND CSS• PRODUCE A NATIVE APP PACKAGED PACKAGED ON A PER PLATFORM BASIS• NO CROSS COMPILING MAGIC• NO FAIRY DUST / SPARKLES
  • Clear as Mud• WRITE IN HTML, JAVASCRIPT AND CSS• PRODUCE A NATIVE APP PACKAGED PACKAGED ON A PER PLATFORM BASIS• NO CROSS COMPILING MAGIC• NO FAIRY DUST / SPARKLES• NO UNICORNS GET HURT
  • Our Community
  • Contributors -- ohloh.net
  • > 20,000downloads a month
  • > 2,000messages per month
  • > 50contributors
  • > 40tools
  • > 430,000visits a month to phonegap.com
  • Partners / Contributors• Nitobi• IBM• Sony Ericsson• Symbian• Palm/HP• RIM• Sencha
  • Power Users• Alcatel Lucent• Sabre• Deutsche Telecom• IBM
  • Governance• http://phonegap.lighthouseapp.com (migrating to github today!)• http://wiki.phonegap.com/roadmap-planning• It’s a meritocracy
  • What device APIs areexposed to PhoneGap?
  • PhoneGap APIs• Sensors• Data• Events http://docs.phonegap.com
  • Sensors• GPS• Accelerometer• Compass• Network• Camera
  • Data• Contacts• Media• File system• Notifications
  • Events• onload (yah it’s just HTML)• ondeviceready (this is special)• onnativeready• onresume• onpause
  • dev.w3.org/geo• geolocation• deviceorientation• devicemotion
  • dev.w3.org/dap• Contacts• Calendar• HTML media capture• Media capture API• Messaging• System info
  • HTML5• <canvas> • Cache manifest• <audio> • postMessage• <video> • Web SQL• Drag and drop • localStorage• File API • Sockets• History API • Workershttp://dev.w3.org/html5/spec/Overview.html
  • API “design”The “standards” are a mess.Quotes here are not ironic.
  • Browser APIs...
  • Or maybe like this?
  • Browser Persistence APIs• SQLite has been a complete fuck up.
  • WAC• formerly JIL and BONDI• a carrier consortium
  • WAC
  • Browser Media APIs• Lets not even go here..• Audio and video are horribly fucked up• ESPECIALLY on mobile• We fix ‘em (attempt to) w/ PhoneGap tho!
  • DAP Media Capture
  • DAP System Info
  • DAP Sys Info
  • DAP API OverviewContactsCalendarMedia CaptureMessagingSystem InfoPermissionsGalleryApp LauncherTasks
  • WAC API OverviewAccelerometerOrientationCameraDevice StatusFilesystemMessagingGeolocationContactsCalendarTasks
  • Web-ish SDKs Trending.. • Symbian WRT • HP Palm webOS • BlackBerry WebWorks • Samsung Bada * PhoneGap started in 2008 btw...
  • Everyone Differentiates And their target abstraction is JavaScript?
  • We will too ...
  • hi5
  • How do I extend PhoneGap?
  • Plugins to the rescueClean from an engineering perspective.Lighter builds possible.Adaptable for 3rd party extensions.Portable to new platforms.Secure only use what you need.Override anything with JS or Native code.
  • Plugins • Push notifications • Ads • Analytics • Barcode scanning • Facebook Connecthttp://github.com/phonegap/phonegap-plugins
  • What tooling is available?
  • Dreamweaver
  • HTML5 Debuggingconsole.log(‘foo’);alert(‘bar’);
  • Weinre(winery or WINNINGery)
  • What libraries are available?
  • JavaScipt Libraries• DOM: XUI, Zepto, jQuery, Dojo• Games: PropulsionJS, EaselJS, GameJS, CraftyJS, LimeJS, jGen• UI: jQuery, Sencha, Dojo, Jo, GloveBox• Persistence: Lawnchair, PersistJS, StorageJS• Testing: QUnit, Jasmine, DominatorJS, ThumbsJS
  • Web VS Native? http://www.flickr.com/photos/40336611@N08/3705419486/sizes/z/
  • The Web is Native
  • “We could probably save 70% of ourdevelopment budget by switching to a single, cross-platform client, but wewould probably lose 80% of our users.” -- Phil Libin, Evernote CEO
  • “97.25% of statistics are wrong” -- Anonymous
  • “we’d be shut out of most app stores and go back toworrying about distribution.” -- Phil Libin again
  • “huh?” -- Me
  • Can you put PhoneGap apps in the App Store /Android Market / whatever?
  • $12,000,000,000
  • What would Reed say?
  • “What the deuce? Areyou bat shit crazy!?!?!”-- Maybe Reed Hastings, Netflix CEO would say this
  • Why are they using it?
  • Skills reuse
  • Time to market
  • Less code
  • Less code
  • App updates
  • A/B Testing
  • Building for hundreds of devices!!1!1http://functionsource.com/post/netflix-feature
  • No shit.
  • Can the Web feel Native?
  • “What you call love was invented by guyslike me to sell nylons” -- Don Draper, Mad Men
  • “Be the needlenot the haystack” -- Don Draper, Mad Men
  • Games?
  • Need more examples?
  • The Future
  • Release Roadmap• 0.9.5 March... uuh• 0.9.6 April... uuh• 1.0 May/June... it’s open source come on!! http://wiki.phonegap.com/roadmap-planning
  • 1.0 Roadmap pluggable
  • Plugins remaining work• Discovery• Packaging / installation• Identity / trust
  • PhoneGap Plugins 1.0CoreMaintained by us.CommunityWild west!PartnerMaintained by you; verified by us. =)
  • 2.0
  • Sockets
  • App updating
  • A/B testing
  • Background services
  • Emulation in the cloud
  • More, faster devices
  • Fascinating Year Ahead• BlackBerry WebWorks Playbook• HPalm webOS TouchPad• Gazillions of Android Tablets• TVs and Cars are next - for serious
  • PhoneGap/Build
  • http://build.phonegap.com
  • What do you want punk?
  • What do you want punk?• Write once run on 5+ platforms
  • What do you want punk?• Write once run on 5+ platforms• Write using HTML, JavaScript and CSS
  • What do you want punk?• Write once run on 5+ platforms• Write using HTML, JavaScript and CSS• Write using standards based APIs
  • What do you want punk?• Write once run on 5+ platforms• Write using HTML, JavaScript and CSS• Write using standards based APIs• Open source in spirit and in practice
  • What do you want punk?• Write once run on 5+ platforms• Write using HTML, JavaScript and CSS• Write using standards based APIs• Open source in spirit and in practice• Keep the option of adding native code
  • What do you want punk?• Write once run on 5+ platforms• Write using HTML, JavaScript and CSS• Write using standards based APIs• Open source in spirit and in practice• Keep the option of adding native code• Beer?
  • project resources phonegap.com docs.phonegap.com wiki.phonegap.com github.com/phonegap phonegap.lighthouseapp.com groups.google.com/group/phonegap twitter.com/phonegap #phonegap on freenode thank you