Slide 1

Slide 1 text

Open Source An overview of why open source is key to building mobile software. By: Conrad Stoll, @conradstoll Architect, Mutual Mobile

Slide 2

Slide 2 text

How do you build an application?

Slide 3

Slide 3 text

How do I participate in the community?

Slide 4

Slide 4 text

Learning about Dependencies

Slide 5

Slide 5 text

Shared Problems Deserve Shared Solutions

Slide 6

Slide 6 text

What sort of problems?

Slide 7

Slide 7 text

Communication over a network Responsive User Interface Data Persistence Testing Dependency Management

Slide 8

Slide 8 text

Great Open Source software Very applicable to other people

Slide 9

Slide 9 text

Sometimes it takes multiple people To solve a hard problem

Slide 10

Slide 10 text

What can you do with Open Source?

Slide 11

Slide 11 text

1. You can use it 2. You can contribute to it 3. You can make your own

Slide 12

Slide 12 text

1. Using Open Source Open Source tools help you focus on the real work you need to do.

Slide 13

Slide 13 text

Focus on solving the key problems for your project.

Slide 14

Slide 14 text

Web Frameworks Django Rails Node Angular

Slide 15

Slide 15 text

HTTP Networking

Slide 16

Slide 16 text

AFNetworking

Slide 17

Slide 17 text

OkHttp

Slide 18

Slide 18 text

User Interface

Slide 19

Slide 19 text

Challenges Building User Interfaces

Slide 20

Slide 20 text

Animation Animation conveys meaning and makes your app more delightful.

Slide 21

Slide 21 text

Performance Interfaces should be fast and get out of the users way.

Slide 22

Slide 22 text

Facebook Immensely complex app Polished UI

Slide 23

Slide 23 text

Tools React ReactNative ComponentKit

Slide 24

Slide 24 text

Paper Different take on Facebook, with an amazing interface

Slide 25

Slide 25 text

No content

Slide 26

Slide 26 text

No content

Slide 27

Slide 27 text

Tools AsyncDisplayKit Pop Tweaks

Slide 28

Slide 28 text

Consistency Making an app feel familiar to users on the platform

Slide 29

Slide 29 text

MMDrawerController You know those side menus on iOS apps?

Slide 30

Slide 30 text

No content

Slide 31

Slide 31 text

Super common problem Thousands of apps do this.

Slide 32

Slide 32 text

Super easy to use library to build a side menu Over 4000 stars on GitHub

Slide 33

Slide 33 text

Data Persistence

Slide 34

Slide 34 text

SQLite Used for...just about everything.

Slide 35

Slide 35 text

Realm Competitor to SQLite Partially open source, with a full company around it. Designed for Mobile!

Slide 36

Slide 36 text

MMRecord Serialization, between REST and Core Data

Slide 37

Slide 37 text

We were solving the same problem in all of our projects

Slide 38

Slide 38 text

Ridiculously easy to connect a web service to Core Data Used across many projects at Mutual Mobile and hundreds of other projects in the community.

Slide 39

Slide 39 text

Consider how you use Open Source dependencies

Slide 40

Slide 40 text

Dependency Injection Don't allow your database code to seep into your views.

Slide 41

Slide 41 text

Dependency Management Know what versions you're using and if they're maintained.

Slide 42

Slide 42 text

2. Contributing to Open Source Are you using Open Source? What could you do to make it better?

Slide 43

Slide 43 text

Look at the libraries you are using. Do they have any problems?

Slide 44

Slide 44 text

XMPPFramework Multithreading and crashing problems Submitted updates to fix them

Slide 45

Slide 45 text

Urban Airship Super popular push notification provider

Slide 46

Slide 46 text

Fixed several issues with their SDK for iOS

Slide 47

Slide 47 text

How to contribute back?

Slide 48

Slide 48 text

STOP! Don't write code yet.

Slide 49

Slide 49 text

First Step: Identify the Problem Is the problem in the library, or with your implementation of it?

Slide 50

Slide 50 text

Second Step: Ask for Feedback (Before you write code!)

Slide 51

Slide 51 text

Third Step: Make your contribution easy to accept

Slide 52

Slide 52 text

No content

Slide 53

Slide 53 text

Submit clean code Match the style of the library you're contributing to

Slide 54

Slide 54 text

Write tests if you're fixing a bug And of course, manually test the code yourself

Slide 55

Slide 55 text

Create beautiful programmer interfaces Think of developers as your users Eliminate typos, write documentation, think about your method names

Slide 56

Slide 56 text

So why should you contribute?

Slide 57

Slide 57 text

Improve the tools that you already use Part of being a good citizen in the developer community

Slide 58

Slide 58 text

Learn about how things work Open a library up and read it. Figure out how it works. Learn something new.

Slide 59

Slide 59 text

Build your Portfolio Contributing to open source is great practice. It's good for your career!

Slide 60

Slide 60 text

3. Releasing Open Source Share openly Solve important problems

Slide 61

Slide 61 text

Have you seen the same problem twice? Do you have a solution for it? Bingo!

Slide 62

Slide 62 text

Make it Easy to Use The key to great open source is ease of use.

Slide 63

Slide 63 text

API Make it Intuitive Keep it Simple

Slide 64

Slide 64 text

Documentation Write detailed header documentation. Clearly explain how to use your library.

Slide 65

Slide 65 text

Examples Include examples of how to use your library.

Slide 66

Slide 66 text

Solve an obvious problem Make your library something that resonates with people.

Slide 67

Slide 67 text

MMWormhole

Slide 68

Slide 68 text

Inter Process Communication How do you share information between the watch app and the iPhone app?

Slide 69

Slide 69 text

No content

Slide 70

Slide 70 text

Apple didn't provide a solution for this Left to developers to figure out how to do it

Slide 71

Slide 71 text

We Solved It! And we made it SUPER easy to use.

Slide 72

Slide 72 text

Shared with everyone Posted on developer forums Posted on Twitter

Slide 73

Slide 73 text

Used in Thousands of Apps Best way to communicate between iPhone and Watch app

Slide 74

Slide 74 text

Easily Extendable Updated to support watchOS 2

Slide 75

Slide 75 text

Final Thoughts

Slide 76

Slide 76 text

Living Reference Don't forget about your project Challenges with Swift

Slide 77

Slide 77 text

Water Cooler Provide a place for people to discuss common problems

Slide 78

Slide 78 text

Adapt and Evolve AFNetworking - Objective-C Alamofire - Swift

Slide 79

Slide 79 text

AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager]; [manager GET:@"http://example.com/resources.json" parameters:nil success:^(AFHTTPRequestOperation *operation, id responseObject) { NSLog(@"JSON: %@", responseObject); } failure:^(AFHTTPRequestOperation *operation, NSError *error) { NSLog(@"Error: %@", error); }]; Alamofire.request(.GET, "http://httpbin.org/get")

Slide 80

Slide 80 text

Summary: Use excellent tools

Slide 81

Slide 81 text

Give back to the community

Slide 82

Slide 82 text

Start something new

Slide 83

Slide 83 text

Thanks! [email protected] @conradstoll