Final project for the group International Mix Mob
- Part 2: https://github.com/InternationalMixMob/CSCI-E-71_IMM_Slacker_Ref_App/blob/hockeyapp/iOS_sim.png
- Part 3: https://youtu.be/wDJJRbsdaSw
##Product Vision Create Cordova plugins for iOS and Android to enable Slack services within development of any hybrid mobile application. The plugin includes:
- Authorization service
- Identity Information
- Selecting Channels
- Posting Messages
- Presence Awareness
- Advance Content sharing via Slash Commands
- An example Cordova application to demostrate the plugin's features.
- Cornell Wright, iOS Developer
- Alpana Barua, Scrum Master & part-time iOS Developer
- Jeffry Pincus, Android Developer
- Frederick Jansen, Android & Hybrid Developer
- Manoj Shenoy, iOS Developer
- Justin Sanford, Android & Hybrid Developer
- Evan Borysko, Product Owner & part-time iOS Developer
Evan Borysko
Alpana Barua
- Builds without errors.
- All public methods are documented.
- All classes are documented.
- Build and deployment steps are documented.
- Code is committed to Github.
- Code is reviewed by at least one other team member (pair/mobs need no other review) before committed to master.
- All existing unit tests pass, and new ones are written for new code.
- Additional unit tests code reviewed by 2 other team members (pair/mobs need one other review).
- Code coverage is > 85%.
- Code targets 4 platforms: iOS, Android, JS API and reference application.
- Ticket must be closed after a story is finished.
- Time is logged in Jira for all closed tickets.
- All commits must reference a ticket number.
- The product owner signs off on a closed ticket.
- Product has matched or exceeded the expectation of stake holders after product review.
- Mobile App Developer - Nora from Evan's Staff - needs a small lightweight plugin that allows easy integration into their app to authenticate in Slack, must have high levels of code readability and transparency and the documentation needs to be clear and logical.
- Mobile Hybrid Web Developer - Ajay from Evan's Staff- needs a plugin that is platform agnostic, authentication should be fast and reliable with clear error descriptions.
- Product Owner - Evan - needs something that is fast to implement, needs to have few impediments to getting a product to market and enhances the productivity of the developer team.
- JIRA - Backlog and Sprint Boards
- Pointing Poker
- Travis-CI Dashboard
- Circle-CI Dasboard
- Coveralls
- Review Ninja
- Hockey App
- Cordova
- Slack API
- Gradle
- Maven
- NPM
- Junit
- Istanbul-JS
- Jasmine
- XCTest
- Cucumber
- Mockito
- OCMockito
- Open Sauce
- Ionic Framework
- Bootstrap
- jQuery
The idea is to follow a story branch pattern very similar to the one outlined here, with the main difference being that no interactive rebase is required to squash commits. The steps are thus as follows:
Pull in latest content when on master.
git pull origin master
Create and checkout story branch. Use the ticket number as the start of the branch name
git checkout -b 80-git-workflow
Rebase from master often to keep up to date with changes. Fix any merge conflicts as they come along.
git fetch origin master
git rebase origin/master
When all work is done on this story, issue a pull request against master from your branch. This will initiate the CI builds, and allow others to review the pull requests prior to merging it to master.
Once the CI builds pass, including all tests, and the code has been reviewed, you can merge the PR to master.
When followed correctly, no merge conflicts should ever appear on the master branch.
The source of this brief instruction list is the Cordova Android Platform Guide.
- Install Node.js version 5.0.0.
- Install Java Development Kit.
- Install Android Studio.
- Open the Android SDK Manager (type
android
on console) and install:
- Android SDK platform (Cordova Android Platform Guide suggests installing API 22 (v5.1.1)).
- Tools/Android SDK Build-tools version 19.1.0 or higher (23.0.2 works).
- Extras/Android Support Repository
- Set up Android emulator for development:
- Install Intel x86 Atom System Image (from API 22) from Android SDK Manager.
- Windows: Install Extras/Intel x86 Emulator Accelerator from Android SDK Manager.
- Linux: Make sure
kvm
andvirtio
kernel modules are loaded:$ lsmod | grep kvm
and$ lsmod | grep virtio
.- If either command gives no response,
# modprobe kvm
or# modprobe virtio
will load the kernel modules.
- Click Tools -> Manage AVDs... in the Android SDK Manager.
- Click the Device Definitions tab.
- Click on a device, e.g. Nexus 5 by Google, then click Create AVD... button.
- Optionally modify the AVD name.
- In the Target field, select the Android version.
- In the CPU/ABI field, select Intel Atom (x86).
- In the Skin field, select a skin (Skin with dynamic hardware controls works).
- In Emulation Options, select Use Host GPU.
- If you plan to run the app in an Android device for development:
- Install API matching the Android version on your device from Android SDK Manager.
- Enable USB debugging on the device:
- In Settings -> About phone, scroll down to the Build number field.
- Tap the Build number field several times until Developer options are unlocked.
- In Settings -> Developer options, enable USB debugging.
- Connect the device to your computer via USB.
- Install Cordova:
$ npm install -g cordova
$ cordova --version
should be 5.4.0.$ npm install -g plugman
- Create a new project:
$ cordova create hello com.example.hello HelloWorld
$ cd hello
$ cordova platform add android
$ cordova build
- Deploy the app:
$ cordova run android --list
displays the deployment options available.$ cordvoa run android --target="target"
to deploy to device or emulator of choice.- App should be pushed to device, and you should see a screen with the Apache Cordova logo and a pulsing button stating the device is ready.
- Open new project in Android Studio:
- Launch Android Studio
- Accept all the defaults from the startup wizard.
- Select Import Project.
- Select location where android platform is stored (
hello/platforms/android
) - Main activity is located at
android/java/com.example.hello/MainActivity.java
. - It should be possible to run the app from within Android Studio via Run -> 'android'.
- Mac with OS X 10.10.5 installed
- Install Xcode 7.1 from Mac App Store
- Install Xcode command line tools
- Install HomeBrew using below command in terminal
$ ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
- Optionally
$ brew tap homebrew/versions
- Install Node.js with HomeBrew:
$ brew install node
- Install Cordova using the below command
$ npm install -g cordova
$ cordova --version
should be 5.4.0.$ npm install -g plugman
- Create a new project:
$ cordova create harvardcscie71 com.example.hello HelloWorld
$ cd harvardcscie71
$ cordova platform add ios
$ cordova build
Optional - Install Github desktop from https://desktop.github.com/ Optional - If you have multiple versions of node.js and need to switch between them using homebrew versions
Review Ninja has been added to Github. Directions coming soon.
Example projects use NPM to get dependencies, run build, and run tests. After cloning, run the following commands:
- /npm i
- /npm test
- /npm run build
I will enable more commands shortly. iOS project requires Mac OSX and Node 4.1.1 to function. Android build should run on OSX or Linux. If someone has a Windows environment to, please let me know.
Sprint 1 Retro Nov 16
-
Good/Continue doing:
Impressive lineup of tools
Great documentation of all the various procesess and tools
Review Ninja is awesome: should use it
-
Start doing:
Focus on minimum viable
More mob/pair sessions
Schedule pair/mob sessions on Calendar so people can join
More & consistant commitment from team members
-
Stop doing:
Long term goals/experimentation
Sprint 2 Retro Nov 29
-
Good/Continue doing:
Learning new things from technical challenges
Paired/Mob Sessions
Always have a backup when presenting
-
Start doing:
Better sharing of knowledge between members
Integration testing
Focus on making all the existing code rock solid
Focus on polishing
Nice presentation with Reveal.js or Prezi for final
-
Problems/Stop doing:
Lack of participation
Difficult to keep track of all the layers
Need to highlight the complexity of CI board and explain its nuances
Consider consolidating the 2 teams
Demo could look better - use mockups if necessary