De explosieve groei van de mobiele ruimte heeft de zoektocht naar een robuuste en levensvatbare platformonafhankelijke oplossing versneld. In 2008 besloten Brian LeRoux en zijn collega's bij Nitobi kort na de introductie van de iPhone SDK en na het spelen met Cocoa en Objective-C, dat hun tijd beter besteed werd aan het bouwen van een platformonafhankelijke oplossing dan het bouwen van native mobiele applicaties.
Tegenwoordig beheert PhoneGap tienduizenden mobiele applicaties. Voor Brian en zijn team is er veel veranderd sinds het ontstaan van PhoneGap. In 2011 heeft Adobe Nitobi gekocht en de bron van PhoneGap is als Cordova aan de Apache Software Foundation gedoneerd.
In de schijnwerpers van vandaag praat ik met Brian over de begindagen van PhoneGap, de toekomst van mobiel, en waarom de vernietiging van PhoneGap een goede zaak is.
PhoneGap bestaat al sinds het begin van de mobiele revolutie en is goed bekend bij ontwikkelaars. Voor degenen die Brian LeRoux of PhoneGap niet kennen, kun je ons vertellen over jezelf en hoe je betrokken bent bij het project?
PhoneGap is gemaakt door een kleine groep mensen waarvan het grootste deel in Nitobi, destijds in Canada, werkte.
De eerste commits werden geland door Brock Whitten en Rob Ellis voor iOS. Tegenwoordig is iOS volledig het domein van de productieve Shazron Abdulla. Joe Bowser heeft de zeer vroege Android gehackt en blijft deze tot op de dag van vandaag behouden.
Dave Johnson heeft verschillende BlackBerry-bits toegevoegd, die nu grotendeels door BlackBerry zelf worden onderhouden met de hulp van Lorin Beer. Jesse Macfadyen sneed de Windows Phone incarnaties nauw samen met Microsoft.
Michael Brooks schudde de documentatie en veel van de CLI (Command Line Interface) en testtooling met Fil Maj Anis Kadri heeft veel van de plugins tooling en ontdekking geleid. Steve Gill was verantwoordelijk voor releases en droeg veel bij aan de gerelateerde tooling.
Herm Wong start Firefox OS en nu ons nieuwe GUI-project. De huisstijl begon met Yohei Shimomae en is sindsdien overgenomen door Joni Rustulka. Google en IBM hebben ook heel wat bijdragers.
Een opgeruimd scheppingsverhaal met een enkele hacker in de kelder is een soort fantasie waar onze industrie dol op is, maar dat is zelden het geval. Software is altijd een collectieve inspanning en iedereen die bijdraagt, verdient erkenning. Ik mis hier een Canadese ton aan bijdragers, maar je snapt het wel.
Voor mezelf werkte ik bij Nitobi, leverde veel code aan verschillende delen van PhoneGap vanaf de incarnatie, maar mijn belangrijkste focus was het bouwen van de vroege projectcultuur, filosofie en doelen-de dingen die van cruciaal belang zijn bij het communiceren van richting en het verzinken van de gemeenschap.
Testen, tooling en onboarding waren andere vroege belangrijke zorgen voor mij. Uiteindelijk verschoof mijn focus meer naar het kweken van het gemeenschapswerk voorbij Nitobi, wat culmineerde in de brondonatie aan Apache als Cordova.
Nu PhoneGap bijna zes jaar oud is, hebben de meeste mensen er tenminste van gehoord. Voor degenen die niet bekend zijn met PhoneGap, kun je vertellen welk probleem PhoneGap probeert op te lossen?
PhoneGap is voor het bouwen van mobiele apps met behulp van HTML, CSS en JavaScript. We ondersteunen alle grote mobiele besturingssystemen voor het bouwen en distribueren naar native app-winkels. Maar we zijn vooral webontwikkelaars en het doel van PhoneGap is om het web te demonstreren als een eersteklas ontwikkelingsplatform. We willen web-apps bouwen, geen eigen valstrikken.
Uiteindelijk geeft PhoneGap u een fraaie webbrowser op volledig scherm en een uitbreidbaarheidsmodel voor toegang tot native platformfunctionaliteit via een eenvoudige plug-in interface. Met het plugin-model is het triviaal eenvoudig om iets op het besturingssysteem aan de webweergave bloot te stellen. Op deze manier kunnen downstreams snel nieuwe webfuncties prototypen en worden applicatieontwikkelaars niet beperkt door de traditionele webview-sandbox.
In de afgelopen jaren is het grootste deel van onze inspanningen gericht geweest op het maken van hulpmiddelen voor het combineren van algemene native mobile development-workflows. Compileren, emuleren, loggen, plug-ins installeren en zoiets.
Hoe zag de begintijd van PhoneGap eruit? Wanneer realiseerde je je dat PhoneGap een oplossing was voor een probleem waarmee veel bedrijven en ontwikkelaars werden geconfronteerd??
De vroege dagen waren belachelijk en leuk. PhoneGap was meestal een nevenproject en de vroege kernontwikkelaars hakten en filosofeerden vaak in de Alibi Room, een beroemde bierbar in Vancouver, na uren.
Langzaam, toen mobiel begon te stijgen, kwamen veel andere ontwikkelaars in de strijd, aangetrokken door de filosofische inzichten die we deelden.
Het was, en is nog steeds, een groep die het zat is met gepatenteerde platforms, veranderende besturingssystemen en opgesloten in ecosystemen voor ontwikkelaars. Vermoeid door softwareplatforms die "één echte manier" claimen, alleen om "elke zes maanden" te updaten en later af te wijzen - zo niet geheel te verdwijnen.
In de loop van jaren van dit misbruik was het webplatform langzaam aan het verbeteren en liepen de apps waarop het was gericht nog steeds. We vielen niet langer voor het glanzende marketingmateriaal dat zichzelf 'richtlijnen voor het ontwerp van menselijke interfaces' noemt.
Het web heeft nog nooit een bedreiging geleden, maar we hebben een hack gevonden die de strijd kon aanzetten tot de platforms die hem bedreigden. Het project was altijd open source, respecteerde eerst het web en was ontworpen om functies te demonstreren die volgens ons het platform nodig hadden om concurrerend te blijven met eigen alternatieven. Het is altijd een scrappy groep hackers geweest, maar we zijn voorzichtig om onszelf niet al te serieus te nemen.
Een paar jaar geleden zei je dat PhoneGap "geen gouden hamer is" en dat PhoneGap niet de oplossing is voor elke mobiele applicatie. Klopt dat nog of komen we dichter bij een mobiel web dat net zo krachtig is als de eigen ervaring?
Het spectrum van potentiële apps wordt steeds groter naarmate browsers en de apparaten waarop ze draaien, verbeteren. Ik zou PhoneGap nooit als aanbevelen de ultieme oplossing. Er zijn technische overwegingen zoals aangeboren platformuitkeringen en er zijn zachtere zaken zoals zakelijke stuurprogramma's, werknemersvaardigheden, bestaande contentinvesteringen, licenties, vertrouwen in externe platformleveranciers en zelfs partnerrelaties.
Technologiekeuzes brengen altijd compromissen en investeren in webtechnologieën zoals PhoneGap is niet anders.
De echte uitdaging waarmee ontwikkelaars, en met name in de onderneming, geconfronteerd worden, is het erkennen dat ontwikkeling van mobiele apps net als reguliere software-ontwikkeling is. Dit is niet zomaar een punt in time marketing piek. Er is een hele levenscyclus om te overwegen; ontwerp, ontwikkeling, testen, analyse en monitoring.
Mobiele ontwikkeling vereist voortdurend onderhoud en resourcing. Eenmalig door een adviesbureau moet worden bijgewerkt wanneer een nieuwe versie van iOS of Android wordt verzonden. De marketingafdeling moet begrijpen welke inhoud presteert en de mogelijkheid hebben om snel wijzigingen te publiceren in inhoud die niet presteert. De IT-afdeling heeft runtime-crashrapporten en toegang tot push-notificatie-infrastructuur nodig.
Het langere spel dat opzettelijke strategische resourcing vereist, wordt pas net herkend, omdat veel organisaties nu pas ontdekken dat ze, althans gedeeltelijk, zelf softwarebedrijven worden. Een strategische investering in technologie die afhankelijk is van een eigen ecosysteem van een derde partij is een bedrijfsrisico. PhoneGap kan helpen om dat risico te beperken. Uiteindelijk verliest u nooit een weddenschap op het web.
De acquisitie van Nitobi door Adobe was een belangrijke mijlpaal voor PhoneGap, maar Apache Cordova was waarschijnlijk nog belangrijker. Hoe heeft Apache Cordova het platform veranderd??
De acquisitie van Nitobi door Adobe was absoluut belangrijk. We waren bevrijd van het gekke advieswerk om ons alleen op PhoneGap te concentreren en het lijdt geen twijfel dat het platform enorm heeft geprofiteerd. De donatie van de PhoneGap-bron aan Apache als Cordova is even belangrijk in een langere weergave.
Werken met Apache bracht een heel nieuw niveau van discipline in het project. Ons vrijgaveproces is veel geformaliseerd en hoewel het een uitdaging was om onze cadans bij te houden, wint onze community de wettelijke veilige grond waar Apache beroemd om is.
Dit neutrale gebied is een geweldige omgeving voor individuen die in dienst zijn bij verschillende organisaties om zonder zorgen samen te werken. Sinds onze toetreding tot Apache hebben we committers verwelkomd van IBM, BlackBerry, Microsoft, Google, Intel, HP, LG, Samsung en meer.
Als gevolg hiervan hebben we veel nieuwe downstream-distributies van Cordova gezien. Mijn voorkeur gaat uit naar Adobe PhoneGap, maar ontwikkelaars kunnen ervoor kiezen om zich te richten op BlackBerry Webworks, IBM Worklight, SAP SDK, Telerik, Intel XDK of Google Mobile Chrome Apps.
Sommige mensen gebruiken gewoon vanille Apache Cordova en maken hun eigen stroomafwaarts. Ik hou van deze diversiteit. Dit alles wijst op een levendig en gezond ecosysteem waar onze ontwikkelaarsgemeenschap op kan rekenen. We herhalen snel, pakken bugs snel aan, voegen nieuwe functies toe met een normale cadans en hebben een goed begrepen bijdrageproces waaraan iedereen kan deelnemen.
Apache heeft een welverdiende reputatie op het gebied van politiek en bureaucratie, maar het verbeteren ervan maakt ook deel uit van ons werk en het werken met de ASF (Apache Software Foundation) is uiteindelijk de juiste weg geweest voor onze gemeenschap op de lange termijn. Ik ben erg trots op wat we hebben bereikt met de ASF.
PhoneGap is een geweldig platform voor het ontwikkelen van mobiele applicaties. De implementatie blijft op veel platforms omslachtig, maar u hebt geprobeerd dit op te lossen met PhoneGap / Build. PhoneGap / Build klinkt als een gouden hamer voor ontwikkelaars die op zoek zijn naar een platformonafhankelijke oplossing. Kun je ons vertellen wat de dienst doet en welk probleem het oplost?
PhoneGap Build is een compiler gehost in Adobe Creative Cloud. Met PhoneGap / Build kunt u elk mobiel besturingssysteem dat we ondersteunen vanuit elke webbrowser targeten. Je kunt een iOS-app bouwen vanuit een netbook of zelfs vanuit je eigen telefoon (meta).
Aanvankelijk dachten we dat dit nuttig zou kunnen zijn voor continue integratie en testdoeleinden. Het is een veelzijdig hulpprogramma geworden voor het zeer discrete proces van het compileren van een app en het geven van het resulterende artefact een URL. Het doet precies dat ene ding en het doet het vrij goed. We hebben gezien dat veel mensen PhoneGap / Build gebruiken als een API of als hun compiler.
Je hebt eens gezegd dat je denkt dat de toekomst van PhoneGap in zijn eigen vernietiging ligt. Kun je uitleggen wat je daarmee bedoelt??
Ja, het uiteindelijke doel van PhoneGap is op te houden te bestaan. We willen geen native apps schrijven. We zijn de weg geëffend voor de ontwikkeling van eigen klanten en weten dat dit leidt tot risicovolle ecosysteem lock-in.
We willen web-apps bouwen en PhoneGap is altijd een noodoplossing geweest totdat browsers, of misschien installeerbare web-apps, in staat zijn tot alternatieven. Ik denk dat we vandaag heel dicht bij die realiteit staan. Voor veel toepassingen is web eerst absoluut geschikt.
Om mobiele web-apps te laten slagen met de alomtegenwoordigheid die we op de desktop zien, is het handig om de gebieden te demonstreren die het web moet verbeteren. De PhoneGap-plug-inarchitectuur is een echt glad oppervlak om discrete prototypen te maken voor het blootstellen van nieuwe functies aan het traditionele weboppervlak. Deze subtiele filosofie hielp ons de goede richting uit te lichten door het implementeren van standaarden, pollyfills, het samenwerken met het W3C op het ontwerpen van API's, en bezorgdheid te wekken bij de browserleveranciers die leiden tot nieuwe platformfuncties.
Open erkenning van de uiteindelijke ondergang kan een tragische gebeurtenis in de tijd zijn of een strategisch begrip om tegen te plannen. Om getuige te zijn van ons eigen ongedaan maken, moet PhoneGap alles doen om het webplatform te laten winnen.
Wat zijn enkele van de pijnpunten die we nog moeten oplossen op internet? Met andere woorden, hoe dichtbij zijn we van een mobiel web dat een ervaring biedt die vergelijkbaar is met die van native applicaties?
25 jaar later is het moeilijk om het webplatform te bekritiseren. Het bashen van het web, op het internet, is echter een aloude traditie van het webmasterhandwerk.
De beste inkomstengenererende categorie in de App Store is games. Laten we dus eens nadenken over wat er nodig is om een geweldige game te zijn. Over het algemeen is audio rommelig, maar de Web Audio API is geweldig. WebRTC, of hoe we het ook noemen, is een grote belofte voor real-time realtime-apps.
Dan is er een stel loodgieterswerk dat nog niet helemaal overal is geland, zoals Volledig scherm en Gamecontroller. Wanneer al dit spul over het algemeen beschikbaar is, zal het gamen opschudden. Data-intensieve API's zoals Web Audio, WebRTC en WebGL helpen ons de randen van de uitvoerprestaties van JavaScript te vinden en alle vroege indicaties zijn uiterst positief.
De lay-out wordt behoorlijk goed. Flexbox is geweldig en ik heb hoge verwachtingen van CSS Grids. De laatste versie van Firefox (28) repareert de laatste bugs met Flexbox. Ik heb geen idee wanneer CSS Grids landen, maar ik ben geduldig. Mediaquery's, ook wel bekend als Responsive Web Design, zijn nuttig. Ik wil een robuuster competentiemodel waarmee we adaptieve interfaces optimaal kunnen weergeven.
De grootste kans is echt het offline verhaal kraken - waarschijnlijk beter aangeduid als "nu en dan verbonden". Geïnstalleerde webapps, zoals PhoneGap-apps, zijn intrinsiek offline, maar er moet nog een volledig toestemmingsmodel worden gedefinieerd. Mozilla, Google en het W3C werken eraan.
Veel van onze lezers hebben de ambitie om zich te ontwikkelen voor mobiel. Als u vandaag zou beginnen, waar zou u dan beginnen? Welk advies zou je jezelf geven??
Mobiel is niet veel anders dan gewone client-programmering. Het klassieke advies is om te testen op echte apparaten en ik moedig mensen aan om de native platforms te leren, maar niet te gehecht aan hen te groeien. Een goed voorbeeld is de iOS 6 tot iOS 7-update. Een goed ontworpen en ontworpen PhoneGap of reguliere webapp was niet kwetsbaar voor die update.
Anders is alle normale wijsheid van programmeurs van toepassing. Wees ambitieus in uw scope maar discreet in uw implementaties. Maak veel takken en wees erop voorbereid om het grootste deel van je werk weg te gooien. Je bent niet je code, dus refactor meedogenloos en zoek kritische feedback.
Kleine modules en prototypen zijn gemakkelijker te redeneren, correct, testen en valideren. Raak niet verstrikt in raamwerk en bibliotheek mode. Concentreer je op de probleemruimte die je hebt en voer furore en emotieloze herhalingen uit. Schrijf tests en maak het doodeenvoudig voor iemand die nieuw is in de codebase om de tests zelf uit te voeren.
Tot slot, wees superieur voor uw collega's. Het web heeft een lang geheugen, deze industrie is kleiner dan het eerst lijkt en niemand wil met een klootzak werken. Niemand heeft ooit gedacht dat een onbeleefde persoon slim was. Vlammend is gewoon onveilig gedrag en professioneel onvolwassen. Programmeren is al moeilijk genoeg, we kunnen allemaal iets van elkaar leren en opteren voor een prettige ervaring daarbij.
Ik wil Brian bedanken voor zijn tijd en voor het delen van zijn ideeën en inzichten met Tuts +. Je kunt Brian horen spreken op Future Insights Live 2014 in Las Vegas in juni. De conferentie heeft een indrukwekkende lijst met sprekers over het beste in webontwerp, ontwikkeling en mobiel. Gebruik couponcode TUTS voor 15% korting.