The Cordova Development Lifecycle

Similar documents
Adobe Summit 2015 Lab 712: Building Mobile Apps: A PhoneGap Enterprise Introduction for Developers

Developing multidevice-apps using Apache Cordova and HTML5. Guadalajara Java User Group Guillermo Muñoz Java Developer

Version Control with Git. Dylan Nugent

DAVE Usage with SVN. Presentation and Tutorial v 2.0. May, 2014

Developer Workshop Marc Dumontier McMaster/OSCAR-EMR

BASIC COMPONENTS. There are 3 basic components in every Apache Cordova project:

How to Create a Free Private GitHub Repository Educational Account

A Development Analytics Dashboard For Apache CloudStack

CPSC 491. Today: Source code control. Source Code (Version) Control. Exercise: g., no git, subversion, cvs, etc.)

Version Control with. Ben Morgan

Building, testing and deploying mobile apps with Jenkins & friends

Double Feature Talk. 1) Intro to SSL 2) Git Basics for Devs & Designers

Part II. Managing Issues

DevShop. Drupal Infrastructure in a Box. Jon Pugh CEO, Founder ThinkDrop Consulting Brooklyn NY

Mobile apps development for Joomla

Web Developer Toolkit for IBM Digital Experience

MATLAB as a Collaboration Platform Marta Wilczkowiak Senior Applications Engineer MathWorks

Dada Mail Manual. Table of Contents

Version Control with Git. Linux Users Group UT Arlington. Rohit Rawat

Continuous integration with Jenkins CI

Eclipse Committer Bootcamp

Continuous Delivery on AWS. Version 1.0 DO NOT DISTRIBUTE

Using Microsoft Azure for Students

Developer Documentation Revamp Proposal. Wayne Lee

Adobe Summit 2015 Lab 718: Managing Mobile Apps: A PhoneGap Enterprise Introduction for Marketers

Jenkins World Tour 2015 Santa Clara, CA, September 2-3

Source Control Systems

Develop a Native App (ios and Android) for a Drupal Website without Learning Objective-C or Java. Drupaldelphia 2014 By Joe Roberts

Continuous Integration and Delivery. manage development build deploy / release

Introduction to the Git Version Control System

Practicing Continuous Delivery using Hudson. Winston Prakash Oracle Corporation

How To Run A Hello World On Android (Jdk) On A Microsoft Ds.Io (Windows) Or Android Or Android On A Pc Or Android 4 (

Continuous Integration and Bamboo. Ryan Cutter CSCI Spring Semester

SOFTWARE DEVELOPMENT BASICS SED

Dry Dock Documentation

Version Control Systems: SVN and GIT. How do VCS support SW development teams?

Using GitHub for Rally Apps (Mac Version)

Extending the Survey123 for ArcGIS Mobile App

Getting Started. UC Santa Barbara Setup public repository (GitHub, Bitbucket) Identify workflow:

Git Basics. Christopher Simpkins Chris Simpkins (Georgia Tech) CS 2340 Objects and Design CS / 22

Version control. with git and GitHub. Karl Broman. Biostatistics & Medical Informatics, UW Madison

Continuous Delivery for Alfresco Solutions. Satisfied customers and happy developers with!! Continuous Delivery!

OpenMind: Know Your Customer

Demand & Requirements Management Software Development QA & Test Management IT Operations & DevOps Change Management Agile, SAFe, Waterfall Support

Building a Continuous Integration Pipeline with Docker

Version Control with Git

Crosswalk: build world class hybrid mobile apps

Version Control with Svn, Git and git-svn. Kate Hedstrom ARSC, UAF

Git. A Distributed Version Control System. Carlos García Campos carlosgc@gsyc.es

unisys ClearPath eportal Developer 6.1 Unisys Multi-Device App Developer s Guide March

Software Development. Overview.

IBM Digital Experience. Using Modern Web Development Tools and Technology with IBM Digital Experience

Content. Development Tools 2(63)

Getting Started Guide. July 2013

Load Testing at Yandex. Alexey Lavrenuke

JSR 375 (EE Security API) Review

Continuous Integration. CSC 440: Software Engineering Slide #1

Android WebKit Development: A cautionary tale. Joe Bowser Nitobi joe.bowser@nitobi.com

Online Meeting Instructions for Join.me

End User Guide Wazoku s Idea Spotlight

Cloudfinder for Office 365 User Guide. November 2013

Mobile Development with Git, Gerrit & Jenkins

Introducing Xcode Source Control

Getting Started Guide. November 25, 2013

AWS CodePipeline. User Guide API Version

Wharf T&T. iwatch 2012 Mobile Apps User Guide (ios / Android)

SUCCESFUL TESTING THE CONTINUOUS DELIVERY PROCESS

Streamline your drupal development workflow in a 3-tier-environment - A story about drush make and drush aliases

For details about using automatic user provisioning with Salesforce, see Configuring user provisioning for Salesforce.

Startup guide for Zimonitor

Build Your Mailing List

DevOps Best Practices for Mobile Apps. Sanjeev Sharma IBM Software Group

The Social Accelerator Setup Guide

Configuring Salesforce

Continuous Integration and Delivery at NSIDC

ALERT installation setup

Chris Rosen, Technical Product Manager for IBM Containers, Lin Sun, Senior Software Engineer for IBM Containers,

Version Control Your Jenkins Jobs with Jenkins Job Builder

VT Office SharePoint Online

Confluence 3.5 JIRA 4.3 Customer Webinar

MODERN WEB APPLICATION DEVELOPMENT WORKFLOW

Continuous Delivery for Force.com

Register & Login pages 2 to 8. Create & Edit Quiz pages 9 to 16. Run Quizzes & Reports pages 17 to 33

ClickDimensions Quick Start Guide For Microsoft Dynamics CRM /1/2011 ClickDimensions

Introduction to Subversion

@CodenvyHQ

Software Delivery Integration and Source Code Management. for Suppliers

DeskPRO Helpdesk Software: Agent Interface Quick Start Guide

IBM Unica emessage Version 8 Release 6 February 13, User's Guide

Git - Working with Remote Repositories

Rational Quality Manager. Quick Start Tutorial

Using Extensions or Cordova Plugins in your RhoMobile Application Darryn

Transcription:

The Cordova Development Lifecycle Andrew Grieve ApacheCon April 2014 http://goo.gl/btgmnw

Vanity Slide

Why Google and Cordova Cordova is good for the web Basis for Chrome Packaged Apps

Why Google and Cordova

Get to it already! Presentation Goals Be informative Elicit feedback as to what we could do better

Cordova in 2012

Cordova in 2012 Repositories (~10) cordova-$platform cordova-js cordova-mobile-spec cordova-docs cordova-site (svn)

Cordova in 2012 Release Process 1. 2. 3. 4. Snapshot cordova-js Tag all repos Snapshot docs Mega-.zip on dist/

Cordova in 2014

Cordova in 2014 Repositories (~50) cordova-plugin-$foo cordova-plugman, cordova-cli cordova-registry, cordova-registry-web cordova-app-harness cordova-medic

Cordova in 2014 Release Process Several release processes: Platforms & Docs Plugins Command-line tools

Lay of the Land

Lay of the Land cordova.apache.org svn: /repos/asf/cordova/site Documentation snapshot from cordova-docs Blog (jekyll)

Lay of the Land CLI Tools git: cordova-cli, cordova-plugman npm install -g cordova cordova project create hello cordova platform add android cordova plugin add org.apache.cordova.file

Lay of the Land Platforms git: cordova-android, cordova-ios, etc Downloaded via git archive project template (incl. cordova-js snapshot) platform-specific scripts

Lay of the Land Plugins git: cordova-plugin-file, etc Downloaded via cordova-cli

Lay of the Land Plugin Registry git: cordova-registry Plugin metadata & tarballs Same schema as npm IrisCouch / CloudAnt registry.cordova.io

Lay of the Land Plugin Registry Website git: cordova-registry-web plugins.cordova.io

Lay of the Land App Harness git: cordova-app-harness Still in development Enables SDK-less fast edit-refresh Destined for App Store (hopefully) Similar to PhoneGap App, Icenium App, etc

Lay of the Land Coho git: cordova-coho Docs for committers (processes, howtos & design docs) Scripts for automating developer tasks

Lay of the Land Shared Tests git: cordova-mobile-spec Jasmine-based tests Manual test harnesses For both plugins & platforms

Lay of the Land Shared Tests Good: Easy to run Good: Ensures cross-platform consistency Bad: Append-only (dumping ground) Bad: Flakey Bad: Not in sync with plugins

Lay of the Land Continuous Integration git: cordova-medic Scripts and configs for Build Bot Non-centralized instances

Lay of the Land Continuous Integration Good: Catches failures (often) Bad: Requires a lot of maintenance Bad: Flakey

Lay of the Land End-User Docs git: cordova-docs cordova.apache.org/docs Docs & guides for our users Generated by ruby for each release

Lay of the Land MoinMoin Wiki wiki.apache.org/cordova Quality & freshness varies. Dumping ground

Communication

Communication: Dev -> User (Announcements) http://cordova.apache.org/blog/ @ApacheCordova +ApacheCordova

Communication: User -> Dev JIRA (Issue Tracker) Mailing List Github Pull Requests IRC (#cordova)

Communication: Dev -> Dev M aa i i l l i i nn gg LL i i ss t reviews.apache.org (Review Board) Direct IMs Hangouts on Air IRC (#cordova) Meetups / Conferences

Communication: User -> User StackOverflow IRC #phonegap PhoneGap Google Group

Communication: Summary More is always better Mailing list is (almost) never the wrong choice People sometimes are absent

Getting the Code

Get the Code./cordova-coho/coho repo-clone -r mobile-spec -r ios -r plugins -r...

Update the Code./cordova-coho/coho repo-status./cordova-coho/coho repo-update

Release Processes

Platforms Release 1. Email ML: What does everyone think about doing a release on X? Cut RC1 on Y? One Release Manager per-platform ~6 releases / year

Platforms Release 2. Create a JIRA issue coho create-release-bug --version=3.1.0 --username=... --password=...

Platforms Release 3. Branch & Tag RC1 for: cordova-js cordova-mobile-spec cordova-app-hello-world

Platforms Release Updating version numbers Creating release branches Creating git tags coho prepare-release-branch --version 2.8.0-rc1 -r js -r app-hello-world -r mobile-spec coho repo-status -b master -b 2.8.x -r... coho repo-push -b master -b 2.8.x -r... coho tag-release --version 2.8.0-rc1 -r...

Platforms Release 4. For each platform: Update snapshot of app-hello-world, cordova-js Create branches & tags coho prepare-release-branch --version 2.8.0-rc1 -r ios coho repo-status -b master -b 2.8.x -r ios coho repo-push -b master -b 2.8.x -r ios coho tag-release --version 2.8.0-rc1 -r ios

Platforms Release 5. Update cordova-cli: Update cordova-cli to point at new platform tags Publish cordova as RC to npm

Platforms Release 6. Testing & Cherry-picking (days): Announce RC Availability on ML Test update scripts Test using mobile-spec Assume that others are testing in silence*

Platforms Release 7. Update RELEASENOTES.md for each repo ### 3.4.0 (Feb 2014) ### 43 commits from 10 authors. Highlights include: * Removing addjavascriptinterface support from all... * CB-5917 Add a loadurlintoview overload that... * CB-5889 Make update script find project name...

Platforms Release 9. Generate new docs rake version[2.8.0,en] bin/generate rsync -av --exclude='.svn*' public/../cordova-website/public/docs

Platforms Release 10. Tag non-rc version on all repos Update snapshot of app-hello-world, cordova-js Create branches & tags coho prepare-release-branch --version 2.8.0 -r ios coho...

Platforms Release 11. Update website & DOAP file Make "Download" point to new version

Platforms Release 12. Update docs.cordova.io redirect Email michael@michaelbrooks.ca Ask him nicely

Platforms Release 13. New cordova release, this time pointing to non-rc versions Refer to tools release steps

Platforms Release 14. Tell JIRA it's released https://issues.apache.org/jira/plugins/servlet/project-config /CB/versions

Platforms Release 15. Write a blog post Collect & curate & re-format RELEASENOTES.md from all repos

Platforms Release 16. Add.zip to dist/ coho create-release-snapshot --prev-version 2.7.0 --new-version 2.8.0-rc1 -r release-repos

Platforms Release Bad: Often takes w ee ee kk ss Waiting for other platforms to do thier part No one volunteers to do docs / website Platforms that need to be updated get held back

Platforms Release Bad: Non-sanctioned releases Voting for all release artifacts a recent discovery

Platforms Release Bad: Too much automation via coho Committers don't know what the tool will do

Good: The process is changing Platforms Release

Tools Release 1. Email ML (1 minute): I plan on starting a tools release tomorrow. Let me know if there are any concerns with doing so.

2. Create a JIRA issue (1 minute) Tools Release

Tools Release 3. Simple Tests (15 minutes*) Ensure medic dashboard is green Check for missing license headers Create mobile-spec project Add / remove a plugin Ensure unit tests are passing Add test results to JIRA

Tools Release 4. Update release notes (15 minutes) RELEASENOTES.md based on commit logs

Tools Release 5. Version, tag, version (1 minute) Version using SemVer Tagged with version number Add -dev to version as first commit after tag.

Tools Release 6. Publish to dist/dev (2 minute) coho repo-clone -r dist -r dist/dev coho create-archive -r plugman -r cli --dest PATH/$JIRA coho verify-archive cordova-dist-dev/$jira/*.zip svn commit

Tools Release 7. Start VOTE Thread (2 minutes) Vote lasts 48 hours minimum

Tools Release 8. Draft release announcement (30 minutes) Copy & paste previous blog post Further curate RELEASENOTES Include some highlights Send to ML for review

Tools Release 9. Close vote (5 minutes) Send email with result & list of binding +1s

Tools Release 10. dist/dev/ -> dist/ (5 minutes) Copy / svn commit svn rm

Tools Release 11. Publish to npm (5 minutes) npm publish

Tools Release 12. Post blog post (5 minutes) rake build svn add... svn commit

13. Close JIRA (1 minute) Tools Release

Tools Release Minimum 3 days 88 Release Manager minutes 2 * 20 voter minutes Not included: setting up gpg Not included: any hiccups

Tools Release Good: Documentation as Copy n' Paste code Good: Continuous integration => already tested

Tools Release Bad: npm!= dist/ Bad: Signing & voting wasn't done until recently Bad: Commit logs are of varying quality

Tools Release Question: Better way to review blog posts? Question: How to select Release Managers?

Plugins Release Same as tools, except: Up to 19 repositories Some on dev branch, some on master Publish to plugins registry instead of npm

Plugins Release Minimum 3 days 130 Release Manager minutes 2 * 20 voter minutes Not included: any hiccups

Working with Contributors

A Story... Hi! My name is X, I've been reading the list for a while now and would like to start helping out.

A Story... Hi! My name is X, I've been reading the list for a while now and would like to start helping out. Hello X, what part of Cordova would you like to work on? Also, have a look at our wiki page for Contributors.

A Story... Hi! My name is X, I've been reading the list for a while now and would like to start helping out. Hello X, what part of Cordova would you like to work on? Also, have a look at our wiki page for Contributors. T h e E n d!!

GitHub Pull Requests. Good: Users contribute! Bad: We wouldn't notice them Bad: We wouldn't act on them when we did Bad: We can't close them Bad: Mirroring was up to a day delayed

GitHub Pull Requests Thanks INFRA! Good: Users contribute! Bad: We wouldn't notice them Bad: We wouldn't act on them when we did Bad: We can't close them Bad: Mirroring was up to a day delayed

GitHub Pull Requests Thanks (whoever figured this out) Good: Users contribute! Bad: We wouldn't notice them Bad: We wouldn't act on them when we did Bad: We can't close them Bad: Mirroring was up to a day delayed

GitHub Pull Requests Very few know about CLA Often don't know to run tests Usually don't create JIRA issues Code formatting often an issue

GitHub Pull Requests 1. Discover pull requests Visit GitHub, or: coho list-pulls -r android -r ios

GitHub Pull Requests

GitHub Pull Requests Example: https://github.com/apache/cordova-ios/pull/94

GitHub Pull Requests commit 89373b32158ee677beabe12543a242f6e2886d18 Author: Andrew Grieve <agrieve@chromium.org> Date: Fri Mar 28 13:43:22 2014-0400 Closing stale pull requests. close apache/cordova-android#91 close apache/cordova-ios#95 close apache/cordova-ios#82

Code Reviews

Code Reviews You must request one reviews.apache.org is confusing GitHub pull requests

JIRA https://issues.apache.org/jira/browse/cb

JIRA Important fields: ID (CB-XXXX) Status Components Linked Issues Not Important: assignee label Fix Version / Affects Version Priority

JIRA Workflow: Everyone gets access Default assignee == unassigned Link to ML via markmail Triaging is done by first-come-first serve

Not good for discussion Not good for proposals JIRA

Cordova's Future

Questions?