Slide 1

Slide 1 text

WordPress for iOS Under the Hood 360iDev 2015 Aaron Douglas

Slide 2

Slide 2 text

About Me Aaron Douglas Milwaukee, WI USA Mobile Developer for Automattic Inc. Prior life Enterprise Java @astralbodies

Slide 3

Slide 3 text

What’s we’re talking about Purpose of the App Problems To Solve Technologies Used Architecture Development Process What’s Missing Contributing

Slide 4

Slide 4 text

Purpose of the App

Slide 5

Slide 5 text

Text

Slide 6

Slide 6 text

App Walkthrough fi

Slide 7

Slide 7 text

Problems to Solve

Slide 8

Slide 8 text

Multiple Endpoints WordPress.com WordPress.org XML-RPC REST API v1, v2 Jetpack Plugin from WordPress.com

Slide 9

Slide 9 text

Inherited Tech Debt Original contractors No real planning Small team/contributor base

Slide 10

Slide 10 text

Web Content Reader - Rendering Editor - Creating & Rendering Markdown Server-side Plugins

Slide 11

Slide 11 text

Offline Mode Synchronization Stability Consistency Conflict Resolution

Slide 12

Slide 12 text

Localization Common strings GlotPress (http://translate.wordpress.org) RtL support Calendars, dates, times

Slide 13

Slide 13 text

Dates/Time Makes Me Stabby http://stabby.today

Slide 14

Slide 14 text

Technologies Used

Slide 15

Slide 15 text

No content

Slide 16

Slide 16 text

Project Dependencies CocoaPods Xcode or AppCode Git WordPress.com OAuth2

Slide 17

Slide 17 text

Architecture

Slide 18

Slide 18 text

Data Model (some of it) WPAccount (0..n) Blog (0..n) Blog (0..n) Post Page BasePost AbstractPost ReaderPost Media

Slide 19

Slide 19 text

Service Layers View Controller Local Service Persistence Remote Service Interwebs

Slide 20

Slide 20 text

BlogService LocalCoreDataService BlogServiceRemote BlogServiceRemoteREST BlogServiceRemoteXMLRPC NSManagedObjectContext

Slide 21

Slide 21 text

Component Pods WordPress-Editor-iOS WordPressCom-Stats-iOS WordPressCom-Analytics-iOS WordPress-Shared-iOS MediaPicker-iOS

Slide 22

Slide 22 text

The Code

Slide 23

Slide 23 text

Development Process

Slide 24

Slide 24 text

Developers Automattic Outside Contributors

Slide 25

Slide 25 text

Development Process Three week iterations Planning … well … Three week testing/stablization - HockeyApp enterprise builds Git Flow GitHub Issues

Slide 26

Slide 26 text

What’s Missing

Slide 27

Slide 27 text

What’s Missing WordPressKit More Service Layers Re-evaluate callback paradigm with new Swift techniques Share Extension Watch App

Slide 28

Slide 28 text

WordPressKit Full-blown SDK for WP integration Authentication, Authorization Every action (post, edit, commenting, etc) Reminiscent of Parse SDK Some day :)

Slide 29

Slide 29 text

Contributing

Slide 30

Slide 30 text

Contributing GitHub https://github.com/wordpress-mobile/WordPress-iOS https://github.com/wordpress-mobile/WordPress-Editor-iOS https://github.com/wordpress-mobile/WordPressCom-Stats-iOS WordPress.org Make - http://make.wordpress.org/mobile WordPress.org Slack - http://chat.wordpress.org

Slide 31

Slide 31 text

Questions?

Slide 32

Slide 32 text

Contact Twitter: @astralbodies GitHub: astralbodies WordPress.org Slack: astralbodies E-mail: [email protected]

Slide 33

Slide 33 text

Thanks :) Please give feedback via the 360iDev app!