33
WordPress for iOS Under the Hood 360iDev 2015 Aaron Douglas

WordPress for iOS - Under the Hood

Embed Size (px)

Citation preview

Page 1: WordPress for iOS - Under the Hood

WordPress for iOS Under the Hood360iDev 2015

Aaron Douglas

Page 2: WordPress for iOS - Under the Hood

About Me

Aaron Douglas

Milwaukee, WI USA

Mobile Developer for Automattic Inc.

Prior life Enterprise Java

@astralbodies

Page 3: WordPress for iOS - Under the Hood

What’s we’re talking aboutPurpose of the App

Problems To Solve

Technologies Used

Architecture

Development Process

What’s Missing

Contributing

Page 4: WordPress for iOS - Under the Hood

Purpose of the App

Page 5: WordPress for iOS - Under the Hood

Text

Page 6: WordPress for iOS - Under the Hood

App Walkthroughfi

Page 7: WordPress for iOS - Under the Hood

Problems to Solve

Page 8: WordPress for iOS - Under the Hood

Multiple Endpoints

WordPress.com

WordPress.org

XML-RPC

REST API v1, v2

Jetpack Plugin from WordPress.com

Page 9: WordPress for iOS - Under the Hood

Inherited Tech Debt

Original contractors

No real planning

Small team/contributor base

Page 10: WordPress for iOS - Under the Hood

Web Content

Reader - Rendering

Editor - Creating & Rendering

Markdown

Server-side Plugins

Page 11: WordPress for iOS - Under the Hood

Offline Mode

Synchronization

Stability

Consistency

Conflict Resolution

Page 12: WordPress for iOS - Under the Hood

Localization

Common strings

GlotPress (http://translate.wordpress.org)

RtL support

Calendars, dates, times

Page 13: WordPress for iOS - Under the Hood

Dates/Time Makes Me Stabbyhttp://stabby.today

Page 14: WordPress for iOS - Under the Hood

Technologies Used

Page 15: WordPress for iOS - Under the Hood
Page 16: WordPress for iOS - Under the Hood

Project Dependencies

CocoaPods

Xcode or AppCode

Git

WordPress.com OAuth2

Page 17: WordPress for iOS - Under the Hood

Architecture

Page 18: WordPress for iOS - Under the Hood

Data Model (some of it)

WPAccount (0..n)

Blog (0..n)

Blog (0..n)

Post

Page

BasePost

AbstractPost

ReaderPost

Media

Page 19: WordPress for iOS - Under the Hood

Service Layers

View Controller

Local Service

Persistence

Remote Service

Interwebs

Page 20: WordPress for iOS - Under the Hood

BlogService

LocalCoreDataService

BlogServiceRemote

BlogServiceRemoteREST

BlogServiceRemoteXMLRPCNSManagedObjectContext

Page 21: WordPress for iOS - Under the Hood

Component Pods

WordPress-Editor-iOS

WordPressCom-Stats-iOS

WordPressCom-Analytics-iOS

WordPress-Shared-iOS

MediaPicker-iOS

Page 22: WordPress for iOS - Under the Hood

The Code

Page 23: WordPress for iOS - Under the Hood

Development Process

Page 24: WordPress for iOS - Under the Hood

Developers

Automattic

Outside Contributors

Page 25: WordPress for iOS - Under the Hood

Development Process

Three week iterations

Planning … well …

Three week testing/stablization - HockeyApp enterprise builds

Git Flow

GitHub Issues

Page 26: WordPress for iOS - Under the Hood

What’s Missing

Page 27: WordPress for iOS - Under the Hood

What’s Missing

WordPressKit

More Service Layers

Re-evaluate callback paradigm with new Swift techniques

Share Extension

Watch App

Page 28: WordPress for iOS - Under the Hood

WordPressKit

Full-blown SDK for WP integration

Authentication, Authorization

Every action (post, edit, commenting, etc)

Reminiscent of Parse SDK

Some day :)

Page 29: WordPress for iOS - Under the Hood

Contributing

Page 30: WordPress for iOS - Under the Hood

ContributingGitHub

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

Page 31: WordPress for iOS - Under the Hood

Questions?

Page 32: WordPress for iOS - Under the Hood

Contact

Twitter: @astralbodies

GitHub: astralbodies

WordPress.org Slack: astralbodies

E-mail: [email protected]

Page 33: WordPress for iOS - Under the Hood

Thanks :)

Please give feedback via the 360iDev app!