Skip to content

Instantly share code, notes, and snippets.

@zorn
Last active February 24, 2020 21:08
Show Gist options
  • Save zorn/94a1f0e588c78982367fb60033f01679 to your computer and use it in GitHub Desktop.
Save zorn/94a1f0e588c78982367fb60033f01679 to your computer and use it in GitHub Desktop.
Early notes on what makes a good sdk

What makes a good SDK?

Real world example of usage

  • Example apps
    • Mayeb do them in Swift, React Native, Flutter, etc.
  • Example playgrounds?

Good documentation

  • README

    • General overview of SDK behaviors
    • Include the following and/or links to their docs.
  • Getting Started (basics)

  • Contributing Info

  • Code of Conduct (open source)

  • Contributor License (open source)

  • Code Formatting rules

  • Contact Info

    • Support
    • Social Media
  • Inline Code documentation

    • Rendered and served online
  • Guides

    • Article / tutorial style documents that walk the developer through tasks.

Videos

Testing

How can we help our SDK user test their integrations? How can we help them mock responses? (Or should they just mock our entire SDK?)

A detailed CHANGELOG and RELEASE_NOTES

CHANGELOG is very detailed. RELEASE_NOTES are more marketing descriptions.

Clear source license

Including use of third party source

Clear privacy notice

We should mention that we phone home with event logs.

Clearly mark deprecated and renamed properties and methods.

Make sure it's clear when they were renamed or deprecated and when they will be removed. Generally if a thing is marked deprecated, it will be removed in the next major version.

If open source, have unit tests

If open source, provide binary and source compiled cocoapods

Binary is nice to not have to compile every time

Examples

App Center’s SDK

  • They get bonus points because they have both binary and source compiled cocoapods; Binary is nice to not have to compile every time

Stripe Reference

Raw Responses:

https://twitter.com/zorn/status/1231306870381514752?s=20

https://phillycocoa.slack.com/archives/C03EA60JR/p1582401417000200

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment