One of the development tasks I do most often is designing the API for a reusable component. The components are usually for iOS (though sometimes they’re for OS X), and are invariably GUI controls or views of some kind. I’ve designed literally dozens of component APIs over the years, including for clients like Apple, and I’ve learned quite a bit about the process. I periodically release open source components too, and the feedback I’ve had has helped me put together a set of guidelines for API design that I’d like to share with you. This is an important topic, whether you’re an open source contributor, or working as part of a team on a large app, or just creating your own software. APIs are UX for developers. As we go through some guidelines, I’m going to use my most recently released open source GUI component, MGTileMenu, as an example where necessary. Desirable qualities API design is very much like user interface and user experience design. IntuitiveForgivingFrictionless Class interface