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


Reply via email to