In my previous post, I referenced a plugin which provides API code. The term API "code" is a bit of a misnomer. Depending on your degree of semantics, API is actually not code at all. API is your contract with external developers. It's surprising how much - rather little - thought goes into what constitutes API code. Code which leaks from a plugin through OSGI exports can create errors in design during the development process. It takes one sufficiently large software project to learn this lesson the hard way. A great podcast that explains the API concept is Episode 143: API Design with Jim des Rivieres
on Software Engineering Radio.