Rolling your own
With GitHub available, there are so many great libraries solving many of the problems you might face. It’s tempting to just use one, but there’s a caveat: even though the source code is open, you don’t control it.
I’m working on a project that has used a publicly available library for each of the three online services it works with, and each one has a different interface. Moreover, since the project stopped being developed almost a year ago, two of the libraries became obsolete, one didn’t support the updated API of the service, and the other, for some reason, used a very old version of AFNetworking, which meant that I couldn’t use a modern major version.
I decided to bite the bullet and just implement all the necessary service interfacing myself. Expecting a bumpy ride, I was surprised that it wasn’t that difficult, and all those libraries are now absent from the project. Great!
Now I’m looking with enthusiasm into replacing another library, which is used mostly for caching images, and in this case my own solution will have features that the library doesn’t provide, plus I’ll know exactly how it works under the hood.
As a result, cleaner, more transparent and documented codebase.
All thanks to a piece of advice from my fellow programmer Semyon Novikov: only use external libraries when you have to.