SlideShare a Scribd company logo
EFFECTIVELY PRODUCING AND SHIPPING
FRAMEWORKS FOR MULTIPLE PLATFORMS
DONNY WALS
EFFECTIVELY PRODUCING AND SHIPPING FRAMEWORKS FOR MULTIPLE
PLATFORMS
AGENDA
EFFECTIVELY PRODUCING AND SHIPPING FRAMEWORKS FOR MULTIPLE
PLATFORMS
AGENDA
ā–ø An introduction to SDKs
EFFECTIVELY PRODUCING AND SHIPPING FRAMEWORKS FOR MULTIPLE
PLATFORMS
AGENDA
ā–ø An introduction to SDKs
ā–ø Designing an SDK
EFFECTIVELY PRODUCING AND SHIPPING FRAMEWORKS FOR MULTIPLE
PLATFORMS
AGENDA
ā–ø An introduction to SDKs
ā–ø Designing an SDK
ā–ø Distributing your SDK to developers
EFFECTIVELY PRODUCING AND SHIPPING FRAMEWORKS FOR MULTIPLE
PLATFORMS
AGENDA
ā–ø An introduction to SDKs
ā–ø Designing an SDK
ā–ø Distributing your SDK to developers
ā–ø Closing remarks
AN INTRODUCTION
TO SDKS
SDK
SDK
SOFTWARE DEVELOPMENT KIT
SDK
SOFTWARE DEVELOPMENT KIT
Android SDK
SDK
SOFTWARE DEVELOPMENT KIT
Android SDK iOS SDK
SDK
SOFTWARE DEVELOPMENT KIT
Android SDK iOS SDK
Firebase SDK
SDK
SOFTWARE DEVELOPMENT KIT
Android SDK iOS SDK
Firebase SDK Google Maps SDK
SDK
SOFTWARE DEVELOPMENT KIT
Android SDK iOS SDK
Firebase SDK Google Maps SDK And many others...
SDK
SDK
It's really just a tool that makes it easy to
integrate certain features in your app.
Your project
Your project
Remote server
Your project
Remote server
SDK
Your project
Remote server
SDK
Your project
Remote server
SDK
Complex system
Your project
Remote server
SDK
SDK
Complex system
Your project
Remote server
SDK
SDK
Complex system
Your project
Remote server
SDK
SDK
SDK
Complex system
Low level API
Your project
Remote server
SDK
SDK
SDK
Complex system
Low level API
AN SDK WILL
USUALLY ACT AS
AN INTERFACE
BETWEEN A
COMPLICATED
"THING" AND
YOUR CODE
A GOOD SDK ALLOWS YOU TO TURN THIS
A GOOD SDK ALLOWS YOU TO TURN THIS
CALCULATE SOME
ARBITRARY SIGNATURE
A GOOD SDK ALLOWS YOU TO TURN THIS
CALCULATE SOME
ARBITRARY SIGNATURE
APPLY AUTHENTICATION
A GOOD SDK ALLOWS YOU TO TURN THIS
CALCULATE SOME
ARBITRARY SIGNATURE
APPLY AUTHENTICATION
REFRESH TOKEN AND
RETRY?
INTO THIS
Effectively Producing And Shipping Frameworks For Multiple Platforms
Account services
Media services
Feed services
Push services
etc...
Account services
Media services
Feed services
Push services
etc...
Local store
Filesystem
Account services
Media services
Feed services
Push services
etc...
SDK
Local store
Filesystem
Account services
Media services
Feed services
Push services
etc...
SDK
Local store
Filesystem
Account services
Media services
Feed services
Push services
etc...
SDK
Local store
Filesystem
HOW APPS ARE (OFTEN) DESIGNED
HOW APPS ARE (OFTEN) DESIGNED
Designer
HOW APPS ARE (OFTEN) DESIGNED
Designer
HOW APPS ARE (OFTEN) DESIGNED
Designer
HOW APPS ARE (OFTEN) DESIGNED
Designer
HOW APPS ARE (OFTEN) DESIGNED
Designer
HOW APPS ARE (OFTEN) DESIGNED
Designer
HOW APPS ARE (OFTEN) DESIGNED
Designer
HOW APPS ARE (OFTEN) DESIGNED
Designer
THE SDK DESIGN PROCESS
THE SDK DESIGN PROCESS
JavascriptiOS Android
THE SDK DESIGN PROCESS
Javascript
iOS Android
THE SDK DESIGN PROCESS
JavascriptiOS Android
THE SDK DESIGN PROCESS
JavascriptiOS Android
THE SDK DESIGN PROCESS
JavascriptiOS Android
THE SDK DESIGN PROCESS
JavascriptiOS Android
THE SDK DESIGN PROCESS
JavascriptiOS Android
THE SDK DESIGN PROCESS
JavascriptiOS Android
NATIVE CODE
THE SDK DESIGN PROCESS
THE SDK DESIGN PROCESS
A CONSISTENT
PUBLIC API
MAKES IT EASIER
TO REASON
ABOUT THE WAY
AN SDK SHOULD
BE INTEGRATED.
THE SDK DESIGN PROCESS
THE SDK DESIGN PROCESS
THE SDK DESIGN PROCESS
THE SDK DESIGN PROCESS
THE SDK DESIGN PROCESS
SIMILARITIES IN FIREBASE
THE SDK DESIGN PROCESS
SIMILARITIES IN FIREBASE
ā–ø All platforms use a set / setValue style syntax
THE SDK DESIGN PROCESS
SIMILARITIES IN FIREBASE
ā–ø All platforms use a set / setValue style syntax
ā–ø All platforms must obtain a ref to the database
THE SDK DESIGN PROCESS
SIMILARITIES IN FIREBASE
ā–ø All platforms use a set / setValue style syntax
ā–ø All platforms must obtain a ref to the database
ā–ø The examples all used a similar use case
THE SDK DESIGN PROCESS
THE SDK DESIGN PROCESS
A consistent public API allows app developers
to exchange knowledge about your SDK
regardless of the platform they work on.
THE SDK DESIGN PROCESS
DESIGNING A NEW FEATURE
Step 1 Step 2 Step 3
THE SDK DESIGN PROCESS
DESIGNING A NEW FEATURE
Step 1 Step 2 Step 3
ā–ø Describe the feature in detail
THE SDK DESIGN PROCESS
DESIGNING A NEW FEATURE
Step 1 Step 2 Step 3
ā–ø Describe the feature in detail
ā–ø Provide as much context as needed / possible
THE SDK DESIGN PROCESS
DESIGNING A NEW FEATURE
Step 1 Step 2 Step 3
ā–ø Describe the feature in detail
ā–ø Provide as much context as needed / possible
ā–ø Link to external documentation and information if possible
THE SDK DESIGN PROCESS
DESIGNING A NEW FEATURE
Step 1 Step 2 Step 3
ā–ø Describe the feature in detail
ā–ø Provide as much context as needed / possible
ā–ø Link to external documentation and information if possible
ā–ø Stay on point, be concise but also precise
THE SDK DESIGN PROCESS
DESIGNING A NEW FEATURE
Step 1 Step 2 Step 3
THE SDK DESIGN PROCESS
DESIGNING A NEW FEATURE
Step 1 Step 2 Step 3
THE SDK DESIGN PROCESS
DESIGNING A NEW FEATURE
Step 1 Step 2 Step 3
Gherkin: GIVEN/WHEN/THEN
THE SDK DESIGN PROCESS
DESIGNING A NEW FEATURE
Step 1 Step 2 Step 3
Gherkin: GIVEN/WHEN/THEN
ā–ø Given: An account manager instance and valid login
credentials.
THE SDK DESIGN PROCESS
DESIGNING A NEW FEATURE
Step 1 Step 2 Step 3
Gherkin: GIVEN/WHEN/THEN
ā–ø Given: An account manager instance and valid login
credentials.
ā–ø When: Calling login() on the account manager with the
correct credentials.
THE SDK DESIGN PROCESS
DESIGNING A NEW FEATURE
Step 1 Step 2 Step 3
Gherkin: GIVEN/WHEN/THEN
ā–ø Given: An account manager instance and valid login
credentials.
ā–ø When: Calling login() on the account manager with the
correct credentials.
ā–ø Then: A LoginResult with a success state should be
returned eventually
DISTRIBUTING
YOUR SDK
DISTRIBUTING YOUR SDK
DISTRIBUTING YOUR SDK
ā–ø Bump version as needed
DISTRIBUTING YOUR SDK
ā–ø Bump version as needed
ā–ø Deploy your SDK update
DISTRIBUTING YOUR SDK
ā–ø Bump version as needed
ā–ø Deploy your SDK update
ā–ø Clearly communicate changes to consumers
DISTRIBUTING YOUR SDK
ā–ø Bump version as needed
ā–ø Deploy your SDK update
ā–ø Clearly communicate changes to consumers
ā–ø Ensure your documentation is up to date
DISTRIBUTING YOUR SDK
ā–ø Bump version as needed
ā–ø Deploy your SDK update
ā–ø Clearly communicate changes to consumers
ā–ø Ensure your documentation is up to date
ā–ø Provide support to consumers
DISTRIBUTING YOUR SDK
BUMPING YOUR SDK VERSION
DISTRIBUTING YOUR SDK
BUMPING YOUR SDK VERSION
ā–ø Not every platform has to be on the same version.
DISTRIBUTING YOUR SDK
BUMPING YOUR SDK VERSION
ā–ø Not every platform has to be on the same version.
ā–ø Don't worry about releasing often, but try to limit your
breaking changes.
DISTRIBUTING YOUR SDK
DEPLOY YOUR SDK UPDATE
DISTRIBUTING YOUR SDK
DEPLOY YOUR SDK UPDATE
ā–ø Set up CI to distribute your SDK to the distribution channel
of your choice.
DISTRIBUTING YOUR SDK
DEPLOY YOUR SDK UPDATE
ā–ø Set up CI to distribute your SDK to the distribution channel
of your choice.
ā–ø Open-source, closed-source, pick the one you need for
your SDK.
DISTRIBUTING YOUR SDK
DEPLOY YOUR SDK UPDATE
ā–ø Set up CI to distribute your SDK to the distribution channel
of your choice.
ā–ø Open-source, closed-source, pick the one you need for
your SDK.
ā–ø Sometimes you need both, for instance when you ship
your SDK to a third party.
DISTRIBUTING YOUR SDK
COMMUNICATE CHANGES
DISTRIBUTING YOUR SDK
COMMUNICATE CHANGES
ā–ø Use a CHANGELOG.md so it's easy to document changes.
DISTRIBUTING YOUR SDK
COMMUNICATE CHANGES
ā–ø Use a CHANGELOG.md so it's easy to document changes.
ā–ø If appropriate, send out an email, slack message or other
notification to your SDK users with changes for the latest
version.
DISTRIBUTING YOUR SDK
COMMUNICATE CHANGES
ā–ø Use a CHANGELOG.md so it's easy to document changes.
ā–ø If appropriate, send out an email, slack message or other
notification to your SDK users with changes for the latest
version.
ā–ø Be clear, and be thorough. These update notes are way
more important than your regular app update notes ("Bug
fixes and other improvements").
DISTRIBUTING YOUR SDK
UPDATE YOUR DOCUMENTATION
DISTRIBUTING YOUR SDK
UPDATE YOUR DOCUMENTATION
ā–ø Pay extra attention to your code samples and getting
started guides.
DISTRIBUTING YOUR SDK
UPDATE YOUR DOCUMENTATION
ā–ø Pay extra attention to your code samples and getting
started guides.
ā–ø Broken documentation is extremely frustrating for people
that use your SDK, especially if they are new.
DISTRIBUTING YOUR SDK
PROVIDE SUPPORT
DISTRIBUTING YOUR SDK
PROVIDE SUPPORT
ā–ø Set up a Slack channel, mailing list, use Github or anything
else that you think makes sense.
DISTRIBUTING YOUR SDK
PROVIDE SUPPORT
ā–ø Set up a Slack channel, mailing list, use Github or anything
else that you think makes sense.
ā–ø Be welcoming and kind, nobody knows your SDK like the
team that built it.
CLOSING
REMARKS
CLOSING REMARKS
CLOSING REMARKS
ā–ø Just like users, other developers will find ways to use your SDK that
you didn't think were possible.
CLOSING REMARKS
ā–ø Just like users, other developers will find ways to use your SDK that
you didn't think were possible.
ā–ø Your SDK will contain bugs, and developers will tell you about them.
CLOSING REMARKS
ā–ø Just like users, other developers will find ways to use your SDK that
you didn't think were possible.
ā–ø Your SDK will contain bugs, and developers will tell you about them.
ā–ø Be kind to SDK users when they call out for support, they often don't
understand the SDK on the level you do.
CLOSING REMARKS
ā–ø Just like users, other developers will find ways to use your SDK that
you didn't think were possible.
ā–ø Your SDK will contain bugs, and developers will tell you about them.
ā–ø Be kind to SDK users when they call out for support, they often don't
understand the SDK on the level you do.
ā–ø Avoid staying in "spec review" for too long. Avoid bike-shedding.
CLOSING REMARKS
ā–ø Just like users, other developers will find ways to use your SDK that
you didn't think were possible.
ā–ø Your SDK will contain bugs, and developers will tell you about them.
ā–ø Be kind to SDK users when they call out for support, they often don't
understand the SDK on the level you do.
ā–ø Avoid staying in "spec review" for too long. Avoid bike-shedding.
ā–ø Don't rush either, your code directly impacts the quality of apps you
don't control.
CLOSING REMARKS
ā–ø Just like users, other developers will find ways to use your SDK that
you didn't think were possible.
ā–ø Your SDK will contain bugs, and developers will tell you about them.
ā–ø Be kind to SDK users when they call out for support, they often don't
understand the SDK on the level you do.
ā–ø Avoid staying in "spec review" for too long. Avoid bike-shedding.
ā–ø Don't rush either, your code directly impacts the quality of apps you
don't control.
ā–ø Not having any UI to test your code with forces you to write (good)
unit tests, which is very interesting to experience.
EFFECTIVELY PRODUCING AND SHIPPING
FRAMEWORKS FOR MULTIPLE PLATFORMS
DONNY WALS

More Related Content

Similar to Effectively Producing And Shipping Frameworks For Multiple Platforms (20)

PDF
You Don't Need SDKs, Wait Maybe You Do?
Nordic APIs
Ā 
PPTX
Building The Wix SDK
David Zuckerman
Ā 
PDF
Designing Web Apis Building Apis That Developers Love Jin Brendasahni
reknesluima
Ā 
PDF
Guide for Dev Support
JamesChristopher21
Ā 
PDF
I Love APIs - Oct 2015
Mike McNeil
Ā 
PDF
Mobile SDK: Considerations & Best Practices
LivePerson
Ā 
PPTX
Software Development Demo:GDSC&UISS .pptx
JamesMushi3
Ā 
KEY
Get your liaise on
Mobile March
Ā 
PPTX
How to build Sdk? Best practices
Vitali Pekelis
Ā 
PDF
Creating a Great Developer Experience Through SDKs
Taylor Barnett
Ā 
PDF
Use a systematic and recursive process to create pdf.pdf
itwkd
Ā 
PPTX
Mobile sdk best practices
Gal Keidar - I'm hiring
Ā 
PDF
The Developer Experience
Atlassian
Ā 
PDF
12 factor app - Core Guidelines To Cloud Ready Solutions
Kashif Ali Siddiqui
Ā 
PDF
Best Practices for API Adoption
AnyPresence
Ā 
PPTX
Refining Your API Design - Architecture and Modeling Learning Event
LaunchAny
Ā 
PPTX
Huge: Running an API at Scale
Apigee | Google Cloud
Ā 
PPTX
Public API
Amir Zuker
Ā 
PPTX
Will the Real Public API Please Stand Up? Amir Zuker
CodeValue
Ā 
PDF
To SDK or not to SDK?
Lukas Leander Rosenstock
Ā 
You Don't Need SDKs, Wait Maybe You Do?
Nordic APIs
Ā 
Building The Wix SDK
David Zuckerman
Ā 
Designing Web Apis Building Apis That Developers Love Jin Brendasahni
reknesluima
Ā 
Guide for Dev Support
JamesChristopher21
Ā 
I Love APIs - Oct 2015
Mike McNeil
Ā 
Mobile SDK: Considerations & Best Practices
LivePerson
Ā 
Software Development Demo:GDSC&UISS .pptx
JamesMushi3
Ā 
Get your liaise on
Mobile March
Ā 
How to build Sdk? Best practices
Vitali Pekelis
Ā 
Creating a Great Developer Experience Through SDKs
Taylor Barnett
Ā 
Use a systematic and recursive process to create pdf.pdf
itwkd
Ā 
Mobile sdk best practices
Gal Keidar - I'm hiring
Ā 
The Developer Experience
Atlassian
Ā 
12 factor app - Core Guidelines To Cloud Ready Solutions
Kashif Ali Siddiqui
Ā 
Best Practices for API Adoption
AnyPresence
Ā 
Refining Your API Design - Architecture and Modeling Learning Event
LaunchAny
Ā 
Huge: Running an API at Scale
Apigee | Google Cloud
Ā 
Public API
Amir Zuker
Ā 
Will the Real Public API Please Stand Up? Amir Zuker
CodeValue
Ā 
To SDK or not to SDK?
Lukas Leander Rosenstock
Ā 

More from Donny Wals (13)

PDF
Your 🧠 on Swift Concurrency
Donny Wals
Ā 
PDF
Using Combine, SwiftUI and callAsFunction to build an experimental localizati...
Donny Wals
Ā 
PDF
The combine triad
Donny Wals
Ā 
PDF
Building reusable components with generics and protocols
Donny Wals
Ā 
PDF
Adopting tdd in the workplace
Donny Wals
Ā 
PDF
The Testing Games: Mocking, yay!
Donny Wals
Ā 
PDF
JSON and Swift, Still A Better Love Story Than Twilight
Donny Wals
Ā 
PDF
Adopting tdd in the workplace
Donny Wals
Ā 
PDF
In Defense Of Core Data
Donny Wals
Ā 
PDF
Talk - git task managers and ci
Donny Wals
Ā 
PDF
Developing in the Fastlane -> How LookLive uses Fastlane to automate and spee...
Donny Wals
Ā 
PDF
Marketing strategie Arto
Donny Wals
Ā 
KEY
Hoorcollege Flash 9-2-2012
Donny Wals
Ā 
Your 🧠 on Swift Concurrency
Donny Wals
Ā 
Using Combine, SwiftUI and callAsFunction to build an experimental localizati...
Donny Wals
Ā 
The combine triad
Donny Wals
Ā 
Building reusable components with generics and protocols
Donny Wals
Ā 
Adopting tdd in the workplace
Donny Wals
Ā 
The Testing Games: Mocking, yay!
Donny Wals
Ā 
JSON and Swift, Still A Better Love Story Than Twilight
Donny Wals
Ā 
Adopting tdd in the workplace
Donny Wals
Ā 
In Defense Of Core Data
Donny Wals
Ā 
Talk - git task managers and ci
Donny Wals
Ā 
Developing in the Fastlane -> How LookLive uses Fastlane to automate and spee...
Donny Wals
Ā 
Marketing strategie Arto
Donny Wals
Ā 
Hoorcollege Flash 9-2-2012
Donny Wals
Ā 
Ad

Recently uploaded (20)

PPTX
Agile Chennai 18-19 July 2025 | Emerging patterns in Agentic AI by Bharani Su...
AgileNetwork
Ā 
PDF
introduction to computer hardware and sofeware
chauhanshraddha2007
Ā 
PPTX
AI Code Generation Risks (Ramkumar Dilli, CIO, Myridius)
Priyanka Aash
Ā 
PPTX
AI in Daily Life: How Artificial Intelligence Helps Us Every Day
vanshrpatil7
Ā 
PDF
How ETL Control Logic Keeps Your Pipelines Safe and Reliable.pdf
Stryv Solutions Pvt. Ltd.
Ā 
PPTX
Agentic AI in Healthcare Driving the Next Wave of Digital Transformation
danielle hunter
Ā 
PDF
Brief History of Internet - Early Days of Internet
sutharharshit158
Ā 
PPTX
Agile Chennai 18-19 July 2025 Ideathon | AI Powered Microfinance Literacy Gui...
AgileNetwork
Ā 
PDF
The Future of Artificial Intelligence (AI)
Mukul
Ā 
PDF
A Strategic Analysis of the MVNO Wave in Emerging Markets.pdf
IPLOOK Networks
Ā 
PPTX
Dev Dives: Automate, test, and deploy in one place—with Unified Developer Exp...
AndreeaTom
Ā 
PDF
Data_Analytics_vs_Data_Science_vs_BI_by_CA_Suvidha_Chaplot.pdf
CA Suvidha Chaplot
Ā 
PPTX
Farrell_Programming Logic and Design slides_10e_ch02_PowerPoint.pptx
bashnahara11
Ā 
PDF
Presentation about Hardware and Software in Computer
snehamodhawadiya
Ā 
PDF
NewMind AI Weekly Chronicles – July’25, Week III
NewMind AI
Ā 
PDF
Make GenAI investments go further with the Dell AI Factory
Principled Technologies
Ā 
PDF
Generative AI vs Predictive AI-The Ultimate Comparison Guide
Lily Clark
Ā 
PDF
Structs to JSON: How Go Powers REST APIs
Emily Achieng
Ā 
PDF
The Future of Mobile Is Context-Aware—Are You Ready?
iProgrammer Solutions Private Limited
Ā 
PDF
Google I/O Extended 2025 Baku - all ppts
HusseinMalikMammadli
Ā 
Agile Chennai 18-19 July 2025 | Emerging patterns in Agentic AI by Bharani Su...
AgileNetwork
Ā 
introduction to computer hardware and sofeware
chauhanshraddha2007
Ā 
AI Code Generation Risks (Ramkumar Dilli, CIO, Myridius)
Priyanka Aash
Ā 
AI in Daily Life: How Artificial Intelligence Helps Us Every Day
vanshrpatil7
Ā 
How ETL Control Logic Keeps Your Pipelines Safe and Reliable.pdf
Stryv Solutions Pvt. Ltd.
Ā 
Agentic AI in Healthcare Driving the Next Wave of Digital Transformation
danielle hunter
Ā 
Brief History of Internet - Early Days of Internet
sutharharshit158
Ā 
Agile Chennai 18-19 July 2025 Ideathon | AI Powered Microfinance Literacy Gui...
AgileNetwork
Ā 
The Future of Artificial Intelligence (AI)
Mukul
Ā 
A Strategic Analysis of the MVNO Wave in Emerging Markets.pdf
IPLOOK Networks
Ā 
Dev Dives: Automate, test, and deploy in one place—with Unified Developer Exp...
AndreeaTom
Ā 
Data_Analytics_vs_Data_Science_vs_BI_by_CA_Suvidha_Chaplot.pdf
CA Suvidha Chaplot
Ā 
Farrell_Programming Logic and Design slides_10e_ch02_PowerPoint.pptx
bashnahara11
Ā 
Presentation about Hardware and Software in Computer
snehamodhawadiya
Ā 
NewMind AI Weekly Chronicles – July’25, Week III
NewMind AI
Ā 
Make GenAI investments go further with the Dell AI Factory
Principled Technologies
Ā 
Generative AI vs Predictive AI-The Ultimate Comparison Guide
Lily Clark
Ā 
Structs to JSON: How Go Powers REST APIs
Emily Achieng
Ā 
The Future of Mobile Is Context-Aware—Are You Ready?
iProgrammer Solutions Private Limited
Ā 
Google I/O Extended 2025 Baku - all ppts
HusseinMalikMammadli
Ā 
Ad

Effectively Producing And Shipping Frameworks For Multiple Platforms