It is certainly possible the APIs are hidden for competitive advantage. However...<p>There are costs when making an API truly public! Extra work to document it completely. Extra testing, to cover more than just the cases you know you're dealing with internally. Revisiting the API every time something new comes along ("will this API be 64 bit capable?", etc.). And ultimately, cost from losing the freedom to significantly change anything, lest you break binary compatibility or create some other problem that multiplies across your customer base.
Does anyone remember the Sparkle MPEG player for MacOS that was popular in 1995? The author of that software was programming smoother playback than the QuickTime team, despite the QuickTime team pressing for kernel tweaks and undocumented hooks. The result was a flurry of development which benefitted users but cramped an independent developer.