49

HONZA DVORSKY · HONZA DVORSKY @czechboy0 honzadvorsky.com 29.09.2016. Swift ... Server-side Swift community. Advanced "Swift Package Manager

  • Upload
    others

  • View
    12

  • Download
    0

Embed Size (px)

Citation preview

Page 1: HONZA DVORSKY · HONZA DVORSKY @czechboy0 honzadvorsky.com 29.09.2016. Swift ... Server-side Swift community. Advanced "Swift Package Manager
Page 2: HONZA DVORSKY · HONZA DVORSKY @czechboy0 honzadvorsky.com 29.09.2016. Swift ... Server-side Swift community. Advanced "Swift Package Manager

HONZA DVORSKY@czechboy0

honzadvorsky.com

29.09.2016

Page 3: HONZA DVORSKY · HONZA DVORSKY @czechboy0 honzadvorsky.com 29.09.2016. Swift ... Server-side Swift community. Advanced "Swift Package Manager

Swift• created by Apple

• announced in June 2014

• open sourced December 2015

• Swift 3.0 - September 2016

Page 4: HONZA DVORSKY · HONZA DVORSKY @czechboy0 honzadvorsky.com 29.09.2016. Swift ... Server-side Swift community. Advanced "Swift Package Manager

Swift Package Manager

SwiftPM

Page 5: HONZA DVORSKY · HONZA DVORSKY @czechboy0 honzadvorsky.com 29.09.2016. Swift ... Server-side Swift community. Advanced "Swift Package Manager

• an iOS/macOS developer

• backend developer

• an Android developer

• interested in what Apple sees as the future of programming

Listen carefully if you’re…

Page 6: HONZA DVORSKY · HONZA DVORSKY @czechboy0 honzadvorsky.com 29.09.2016. Swift ... Server-side Swift community. Advanced "Swift Package Manager

• introduction to SwiftPM

• demo

• advanced topics

Agenda

Page 7: HONZA DVORSKY · HONZA DVORSKY @czechboy0 honzadvorsky.com 29.09.2016. Swift ... Server-side Swift community. Advanced "Swift Package Manager

[SwiftPM] is a tool for managing the distribution of Swift code.

It’s integrated with the Swift build system to automate the process of downloading, compiling and linking dependencies.

— swift.org/package-manager

Page 8: HONZA DVORSKY · HONZA DVORSKY @czechboy0 honzadvorsky.com 29.09.2016. Swift ... Server-side Swift community. Advanced "Swift Package Manager

• dependency manager

• build tool

• test tool

SwiftPM is a

Page 9: HONZA DVORSKY · HONZA DVORSKY @czechboy0 honzadvorsky.com 29.09.2016. Swift ... Server-side Swift community. Advanced "Swift Package Manager

• command line based

• cross-platform (macOS, Linux)

• decentralized

• opinionated

• convention over configuration

SwiftPM is

Page 10: HONZA DVORSKY · HONZA DVORSKY @czechboy0 honzadvorsky.com 29.09.2016. Swift ... Server-side Swift community. Advanced "Swift Package Manager

• swift.org/package-manager

• github.com/apple/swift-package-manager

• Mailing list: swift-build-dev

• Slack: https://swift-package-manager.herokuapp.com

Where to learn more about it

Page 11: HONZA DVORSKY · HONZA DVORSKY @czechboy0 honzadvorsky.com 29.09.2016. Swift ... Server-side Swift community. Advanced "Swift Package Manager

Swift Package Manager

Page 12: HONZA DVORSKY · HONZA DVORSKY @czechboy0 honzadvorsky.com 29.09.2016. Swift ... Server-side Swift community. Advanced "Swift Package Manager

Swift Package Manager

Page 13: HONZA DVORSKY · HONZA DVORSKY @czechboy0 honzadvorsky.com 29.09.2016. Swift ... Server-side Swift community. Advanced "Swift Package Manager

• is a folder

• Package.swift

• source files

• contains modules

Package

Page 14: HONZA DVORSKY · HONZA DVORSKY @czechboy0 honzadvorsky.com 29.09.2016. Swift ... Server-side Swift community. Advanced "Swift Package Manager

• collection of source files (e.g. .swift files)

• build instructions (e.g. “build as a library”)

• e.g. Foundation, XCTest, Dispatch, …

Module

Page 15: HONZA DVORSKY · HONZA DVORSKY @czechboy0 honzadvorsky.com 29.09.2016. Swift ... Server-side Swift community. Advanced "Swift Package Manager

Example Package: Environment

• 1 library module

• 1 test module

Page 16: HONZA DVORSKY · HONZA DVORSKY @czechboy0 honzadvorsky.com 29.09.2016. Swift ... Server-side Swift community. Advanced "Swift Package Manager

“I already use CocoaPods/Carthage, is this just another dependency manager?”

— you

Page 17: HONZA DVORSKY · HONZA DVORSKY @czechboy0 honzadvorsky.com 29.09.2016. Swift ... Server-side Swift community. Advanced "Swift Package Manager

“I already support CocoaPods, how can I support SwiftPM?”

— you

Page 18: HONZA DVORSKY · HONZA DVORSKY @czechboy0 honzadvorsky.com 29.09.2016. Swift ... Server-side Swift community. Advanced "Swift Package Manager

• https://github.com/neonichu/schoutedenapus

• converts CocoaPods Spec to Package.swift

• helpful starting point for existing projects

CocoaPods -> SwiftPM

Page 19: HONZA DVORSKY · HONZA DVORSKY @czechboy0 honzadvorsky.com 29.09.2016. Swift ... Server-side Swift community. Advanced "Swift Package Manager

“Why should i support SwiftPM?”

— you

Page 20: HONZA DVORSKY · HONZA DVORSKY @czechboy0 honzadvorsky.com 29.09.2016. Swift ... Server-side Swift community. Advanced "Swift Package Manager

• >3500 SwiftPM packages on GitHub

• stats: github.com/czechboy0/swiftpm-packages-statistics

• server-side Swift community

• models, parsers, networking

• Foundation, XCTest, Dispatch available on macOS, Ubuntu

SwiftPM Adopters

Page 21: HONZA DVORSKY · HONZA DVORSKY @czechboy0 honzadvorsky.com 29.09.2016. Swift ... Server-side Swift community. Advanced "Swift Package Manager

• apple/swift port to Android Pull Request

• Getting Started with Swift on Android

• How we put an app in the Android Play Store using Swift

• Google considering Swift for Android

Swift on Android

Page 22: HONZA DVORSKY · HONZA DVORSKY @czechboy0 honzadvorsky.com 29.09.2016. Swift ... Server-side Swift community. Advanced "Swift Package Manager

• Xcode 8

• part of Swift 3 toolchains (swift.org/download)

• swiftenv: github.com/kylef/swiftenv

Installing SwiftPM

Page 23: HONZA DVORSKY · HONZA DVORSKY @czechboy0 honzadvorsky.com 29.09.2016. Swift ... Server-side Swift community. Advanced "Swift Package Manager

Getting our 🙌 dirty

Page 24: HONZA DVORSKY · HONZA DVORSKY @czechboy0 honzadvorsky.com 29.09.2016. Swift ... Server-side Swift community. Advanced "Swift Package Manager

1. mDevTool

1.1.extension on String to prepend “mDev” (“Talk” -> “mDevTalk”)

1.2.command line tool to use (1)

2. mDevServer

2.1.Swift server to generate HTML template using (1)

Demo

Page 25: HONZA DVORSKY · HONZA DVORSKY @czechboy0 honzadvorsky.com 29.09.2016. Swift ... Server-side Swift community. Advanced "Swift Package Manager

To Xcode!

Page 26: HONZA DVORSKY · HONZA DVORSKY @czechboy0 honzadvorsky.com 29.09.2016. Swift ... Server-side Swift community. Advanced "Swift Package Manager

Back To Slides!

Page 27: HONZA DVORSKY · HONZA DVORSKY @czechboy0 honzadvorsky.com 29.09.2016. Swift ... Server-side Swift community. Advanced "Swift Package Manager

• no need to run Linux locally

• scales to more platforms in the future (Linux flavors, Windows, Android)

• free for OSS projects

• example: Environment

Testing with Travis CI

.travis.yml in Environment

Page 28: HONZA DVORSKY · HONZA DVORSKY @czechboy0 honzadvorsky.com 29.09.2016. Swift ... Server-side Swift community. Advanced "Swift Package Manager

• established:

• CocoaPods Search

• new:

• Swift Package Catalog: swiftpkgs.ng.bluemix.net

• libraries.io

• Twitter, GitHub

Package discovery

Page 29: HONZA DVORSKY · HONZA DVORSKY @czechboy0 honzadvorsky.com 29.09.2016. Swift ... Server-side Swift community. Advanced "Swift Package Manager

• Vapor: vapor.codes

• IBM: github.com/IBM-Swift

• Zewo: zewo.io

• Open Swift: github.com/open-swift

• many more

Server-side Swift community

Page 30: HONZA DVORSKY · HONZA DVORSKY @czechboy0 honzadvorsky.com 29.09.2016. Swift ... Server-side Swift community. Advanced "Swift Package Manager

Advanced 📦

Page 31: HONZA DVORSKY · HONZA DVORSKY @czechboy0 honzadvorsky.com 29.09.2016. Swift ... Server-side Swift community. Advanced "Swift Package Manager

Swift Package Manager

Page 32: HONZA DVORSKY · HONZA DVORSKY @czechboy0 honzadvorsky.com 29.09.2016. Swift ... Server-side Swift community. Advanced "Swift Package Manager

• Swift

• C

• Objective-C

• C++

• Objective-C++

Languages supported

Page 33: HONZA DVORSKY · HONZA DVORSKY @czechboy0 honzadvorsky.com 29.09.2016. Swift ... Server-side Swift community. Advanced "Swift Package Manager

• swift build

• swift test

• swift package

SwiftPM commands

Page 34: HONZA DVORSKY · HONZA DVORSKY @czechboy0 honzadvorsky.com 29.09.2016. Swift ... Server-side Swift community. Advanced "Swift Package Manager

swift build

Page 35: HONZA DVORSKY · HONZA DVORSKY @czechboy0 honzadvorsky.com 29.09.2016. Swift ... Server-side Swift community. Advanced "Swift Package Manager

swift test

Page 36: HONZA DVORSKY · HONZA DVORSKY @czechboy0 honzadvorsky.com 29.09.2016. Swift ... Server-side Swift community. Advanced "Swift Package Manager

swift package

Page 37: HONZA DVORSKY · HONZA DVORSKY @czechboy0 honzadvorsky.com 29.09.2016. Swift ... Server-side Swift community. Advanced "Swift Package Manager

• collection of modules (targets)

• module is a collection of sources

• module types

• library (source files, no main.swift)

• executable (source files, 1 main.swift)

• system module

Package

Page 38: HONZA DVORSKY · HONZA DVORSKY @czechboy0 honzadvorsky.com 29.09.2016. Swift ... Server-side Swift community. Advanced "Swift Package Manager

• using system libraries (e.g. openssl, curl) in SwiftPM

• modulemap

System module

• how to use:

• http://ankit.im/swift/2016/04/06/compiling-and-interpolating-C-using-swift-package-manager/

• http://ankit.im/swift/2016/05/21/creating-objc-cpp-packages-with-swift-package-manager/

Page 39: HONZA DVORSKY · HONZA DVORSKY @czechboy0 honzadvorsky.com 29.09.2016. Swift ... Server-side Swift community. Advanced "Swift Package Manager

ModulesImplicit

Explicit

Page 40: HONZA DVORSKY · HONZA DVORSKY @czechboy0 honzadvorsky.com 29.09.2016. Swift ... Server-side Swift community. Advanced "Swift Package Manager

Dependencies

Page 41: HONZA DVORSKY · HONZA DVORSKY @czechboy0 honzadvorsky.com 29.09.2016. Swift ... Server-side Swift community. Advanced "Swift Package Manager

swift package show-dependencies

Page 42: HONZA DVORSKY · HONZA DVORSKY @czechboy0 honzadvorsky.com 29.09.2016. Swift ... Server-side Swift community. Advanced "Swift Package Manager

http://swiftpm-deps.honza.tech

Page 43: HONZA DVORSKY · HONZA DVORSKY @czechboy0 honzadvorsky.com 29.09.2016. Swift ... Server-side Swift community. Advanced "Swift Package Manager
Page 45: HONZA DVORSKY · HONZA DVORSKY @czechboy0 honzadvorsky.com 29.09.2016. Swift ... Server-side Swift community. Advanced "Swift Package Manager

• Deeper Xcode integration

• better iOS/watchOS/tvOS support

• “you tell me”

Missing features

Page 46: HONZA DVORSKY · HONZA DVORSKY @czechboy0 honzadvorsky.com 29.09.2016. Swift ... Server-side Swift community. Advanced "Swift Package Manager

https://realm.io/news/tryswift-jesse-squires-contributing-open-source-swift/

Contributing to OSS Swift

Page 47: HONZA DVORSKY · HONZA DVORSKY @czechboy0 honzadvorsky.com 29.09.2016. Swift ... Server-side Swift community. Advanced "Swift Package Manager

• start reading the mailing list

• read documentation, source code

• join the Slack

• follow people on Twitter and GitHub

Getting Involved 💙

Page 49: HONZA DVORSKY · HONZA DVORSKY @czechboy0 honzadvorsky.com 29.09.2016. Swift ... Server-side Swift community. Advanced "Swift Package Manager

WWW.MDEVTALK.CZ

mdevtalk