the killing field• phonegap project background• mobile projects in practice• backend design concerns• mobile web client design• progressive enhancement to ‘native’
lets kill it
phonegap project• history/goals/philosphy• licensing• web standards• the phonegap technique (fﬁ / bridge)• platform support• more on the bridge: plugins• the future of mobile is device apis• device apis: sensors• device apis: data• device apis: outputs• present and future: a little about our roadmap• phonegap/build• perceived competition
phonegap project• history/goals/philosphy• licensing• web standards•• imma teach ya fuckin the phonegap technique (fﬁ / bridge) platform support• everything aight? more on the bridge: plugins• the future of mobile is device apis• device apis: sensors• device apis: data• device apis: outputs• present and future: a little about our roadmap• phonegap/build• perceived competition
history• 2008 got its start as a lofty summertime hack; gained traction as a concept @nitobi with android and blackberry implementations in the fall• 2009 ppl started to pay attention when we got ‘rejected’ by apple; we added Symbian and webOS support• 2010 IBM began tag teaming w/ Nitobi• 2011 RIM joined: now its a gang bang• 2011 we shipped 1.x
philosophy• unix was (still is) right• simple is better• plan to fail; software is organic• when in doubt use brute force
goals• the web as a ﬁrst class platform• => installable web apps• cease to exist• => browsers adopt this model
licensing• users: mit/bsd• contributors: apache
free deﬁned• free to use• free to modify• free to distribute• free to change• free to sell
omg, how does anyone make money?
ever buy bottled water?
Nitobi vs PhoneGap• we are the creators• we are contributors• nitobi is a software company that makes money writing software for ppl• we give away as much IP as possible
web standards• w3c has many• whatwg seems to be working well• bondi / jil / wac / webinos• de facto standards ?• mozilla getting snippy about the ﬂailing of the various standards bodies: web apis and b2g (fuck yes.)
the phonegap technique• colloquially called ‘the bridge’• more correctly a FFI (foreign function interface)
the technique ‘splained1. we instantiate a webview2. we call js from the native code (‘deviceready’)3. you can call native code from the js ... aaaand then we send data/ callbacks from the native!
primary platforms• Apple iOS >= 3 (we’ve supported since 1.x)• Google Android >= 1.5• BlackBerry >= 5.x (supported since 4.2)
platforms support cont.• HP webOS• Nokia Symbian• Samsung Bada
fall 2011• Windows Phone 7• MeeGo
further experiments• various desktop experiments• mozilla ﬁrefox mobile (once fennec)• Qt is super portable (thus MeeGo)
No mobile dev platform supports as many deploy targets as PhoneGap.Not even a single browser...not yet anyhow.
Performance• benchmarking us (right now just init)• benchmarking them (popular js libs)• js uniﬁcation and cleanup• continual improvements to the bridge• plugins removal will help tonnes• data access another area of interest
security• locking down the ﬁle://• conﬁg.xml feature element lockdown• code hotloading (hydra project)• some crypto apis• looking secure storage
tooling• uniﬁcation of mobile dev nomenclature• standard project directory structuring• build the tools devs are REbuilding every project
tooling • uniﬁcation of mobile dev nomenclatureautomate project directory structuringbitch the shit out of this • standard • build the tools devs are REbuilding every project
common tasks• launch an emulator• create a project• build a project to a device / emulator• attach a logger (console.log to stdout)• run the mobile-spec unit test suite
A quick interlude about competition• We have none.
Lets review• philosophy• licensing• community adoption• contributors• tooling from 3rd parties• no lock in: your app runs in a browser too
PhoneGap/Build• We build your apps ‘in the cloud’.• A commercial enterprise from Nitobi.• Always free for Free/Open Source projects.• Always 1 free private repo for developers.
hello world already!
mobile projs in practice• deﬁne your project philosophy and goals• value != money• design (...not just the pretty)• shipping
know your philosophy• a good problem defn outlines a solution value proposition • can’t be a hero without an enemy
have a goal (not goals)• min viable product defn • 1 sentence: no use of the word ‘and’
great ux happens iteratively• you design always; init w/ research • big upfront designs fail. don’t fail.
bias• technical bias is a normal condition• embrace your bias; its skills you have• embrace your existing technical debt• be wary of anything preaching a ‘one true way’
the exception,the web,is exceptional
shipping• a daily activity• writing unit tests for health and sanity• single click builds (test/dev/release)• distributed rcs and practices are crucial• automate everything manual