In PSARC reviews today, we have three primary levels of classifying an interface's stability: Committed, Uncommitted and (Project) Private. Of these three, I'm concerned that over use of Private can make it harder for us (OpenSolaris) to build developer based communities.
In the past, the target audience of an interface's stability was internal as well as ISVs - if you were writing software to run on Solaris, you used the various libraries and everything was sweet - modulo bugs. But today, in the glorious world of OpenSolaris, the audience has been enlarged to include a group of people that we'd like to encourage to hack on and develop for OpenSolaris, if they play by our "rules." The problem is those "rules." We have a different set of rules for all of us who contribute to OpenSolaris as part of ON than those who wish to deliver source code that is compiled to run with ON. That last point is fundamental to understanding the problem with "Private" interfaces: the open source world revolves around people hacking on source code to run wherever. Changes in versions, evolution of interfaces and libraries, are all just bumps in the road now for many developers - they and their consumers are in a position to be able to handle incompatible changes of APIs being used where those APIs are unstable or experimental. Sure it would be nice if we could deliver a platform where people didn't have to deal with warts such as this but in holding up the availability of interfaces until they're perfected, we're potentially committing a greater crime by not treating all members of the community as equal - or even discouraging people from participating in the community. Should we just abandon the idea of Private intefaces? No, I don't think so but we need to give a lot more care to when we decide something is Private. Just because an interface is not the final version, be it experimental or otherwise, is not what I would call good enough justification for "Private". When an interface is used by more than one single consumer, I'd like to argue that the interface becomes important enough to brak the bonds of being considered Private. The primary interface that got me thinking about this is GLDv3 and the associated MAC interfaces. Having them labelled "private" and telling people they can't use it in source code based drivers that are not in the WOS me me seems a bit silly. But this is an outsider's view, looking back on what we did, making the criticism easy. All that is to say I don't blame the teams' delivery for introducing the interfaces the way they were. The key is how can we learn from this and be more welcoming in allowing people to develop for and extend OpenSolaris, while at same time protecting the rights of developers to extend and enhance their interfaces until they're happy to have them be Committed? The simpler version of these questions are: - should there be something between Private and Uncommitted? - should the bar be higher (i.e more difficult to justify) for interfaces that teams want to be Private? Darren