In a free software desktop it is really important to share as much code as possible between applications. This not only saves development time, but leads to better consistency and quality. Libraries are the keystone of such a practice, and writing good ones could almost be considered an art. This presentation will cover lots of tricks you need to know in order to get it right, focusing on good API design. It will unveil secrets and techniques we use at Qt Software to develop good API. This talk intends to encourage more people to contribute to library development, and in the best possible way.