Original post https://github.com/onmyway133/blog/issues/84
Dear SDK developers,
- Please don't do swizzling. Give us instructions on where to call your APIs instead of doing unnecessary swizzling. You're making it for developers to use, and they know how to write code. Most of the time, you don't know how to do swizzling right ⚠️
- Please don't use configuration file. If possible, please consider configuration via pure code, instead of the plist file that is more exposable in the app bundle.
- Please don't make assumption about the app. Your assumptions about the app the SDK is going to be integrated are not always correct. Every app has its own use case and view hierarchy.
- Please provide proper releases. Tag and make releases for new changes in the SDK. If there are major changes, there should be migration guide and affect of that to older apps. Also, please write proper change logs, either in release notes or change log file.
- Please don't leave us with a dump header file. Please add documentations to all the functions.
- Please improve the README. To avoid all the guessing, please improve the README with detail instructions.
- Please include a sample demo project. When making a demo project, you possible have chances to deal with potential problems. And developers have a clue on which steps they might be missing.
- Please open source it. You're selling your service, not the code. By open sourcing it, the code is clear to everybody, and they might help you with bug fixing and suggestion.
To be honest, I was very scared when asked to integrate the SDK with poor documentation and closed source. It's like playing the guessing and praying game.
If the service is not important to you, and you're doing it for fun, then you can ignore these requests. But if you're serious about it, then please consider doing. We know you can do better 💪
Become a better developer by putting these principles into practice. Readability, maintainability, performance, security and clean code are all important, but don't forget about communication, teamwork, and passion.