On 06/10/2011 11:38 AM, Hyrum K Wright wrote:
> On Fri, Jun 10, 2011 at 10:33 AM, C. Michael Pilato <cmpil...@collab.net> 
> wrote:
>> On 06/10/2011 07:39 AM, Daniel Shahaf wrote:
>>> Julian Foad wrote on Fri, Jun 10, 2011 at 11:17:11 +0100:
>>>> The consensus seemed to be [1] that we can add/remove/change private
>>>> APIs during the 1.7.x series,
>>>
>>> Indeed that's the consensus I have sensed.  I am not sure if we include
>>> the svn* clients in this "upgrade en bloc" group, but Philip's recent
>>> work on "1.6 client, 1.7 libraries" does highlight one reason for
>>> wanting to minimize the use of private APIs in the svn* tools.
>>
>> I would be in favor of a policy that explicitly disallows our binaries from
>> using private libraries.  I believe it would serve to force us to think a
>> bit more globally in terms of what would be useful to expose for the benefit
>> of other clients.
> 
> Certainly, but some class of APIs deserves to be private, in my
> opinion.  Our SQLite wrappers, for instance, are used throughout
> Subversion, but have no business being exposed outside of it.  Nobody
> needs to use them, and exposing them would cause an unneeded
> maintenance burden in the future.

Sure.  I'm not opposed to private APIs.  Far from it!  But if we're in a
situation where the code in *"subversion/svn/"* needs to be calling directly
into our SQLite wrappers, chances are good that we've royally failed in our
API design, wouldn't you say?

I should clarify my previous statement though.  There are some private APIs
that exist solely for code shared between our command-line clients.
svn_opt_private.h, svn_cmdline_private.h, etc.  I certainly have no
objection to our command-line clients using that code.  But I'm leery of any
use of svn_wc_private.h, svn_client_private.h, etc. in those tools.  Those
could be red flags for API design failures.

So, in light of the above, I recognize that such a policy statement wouldn't
be quite as easily worded.  So much for "easy".

-- 
C. Michael Pilato <cmpil...@collab.net>
CollabNet   <>   www.collab.net   <>   Distributed Development On Demand

Attachment: signature.asc
Description: OpenPGP digital signature

Reply via email to