In checking with the project and team researching the history of the 
API, the API seems to be very stable.

The API is defined in the gs/psi/iapi.h file. From the time the API was 
introduced in 2001-03-12, there has
been only one real API change, and that had to do with cleaning up the 
interface declarations to use void* pointers:

------------------------------------------------------------------------
r5250 | stefan | 2004-08-19 12:33:09 -0700 (Thu, 19 Aug 2004) | 14 lines

Changed iapi to use a void* instead of a gs_main_instance pointer.
Cleaned up warning related to function pointer signature miss-matches.

DETAILS:

iapi.h no longer defines a type for gs_main_instance *
This will likely need to be put back in for backward compatibility.

The iapi interface now uses a void * instance handle reflecting
that it is an opaque type to the outside world.

Note that function pointer argument miss-matches generate warnings in
msvc but not in gcc. These have been fixed.

------------------------------------------------------------------------

Including changes like adding banners and changing copyright headers, 
there have been 19 changes in this file from 2001-03-12 till today.

So the API is stable. There is just no formal commitment to the stability.

- Dan


James Carlson wrote:
> Garrett D'Amore wrote:
>   
>> Sorry, I guess I see a lot of apps using OpenSSL for pure crypto, rather
>> than for SSL per se.
>>     
>
> True; it does happen.  OpenSSL *does* have stable interfaces, but as far
> as I know, the unstable ones aren't properly scoped away.  Having that
> done would be nice.  (Perhaps have "libopenssl_naughty.so.1" with the
> interfaces exposed and "libssl.so.1" as a filter exposing just the
> stable ones ...)
>
>   
>> Maybe what is needed here is a ilghter weight form of contract..  one
>> that doesn't require signatures or such.  I'm thinking of some kind of
>> "restricted" or "registered" use.  The producer can say what the
>> interfaces in the ARC case and give a commitment (hypothetically
>> "Registered", and the Consumers are free to use it by simply filling out
>> a basic form and dropping it in the case directory.  The form could
>> include : consuming project, bugster category, and an engineering
>> contact.  That would be a better shrink to fit process, while still
>> achieving the goal of knowing who the consumers are.
>>
>> Thoughts?
>>     
>
> That's just what the existing contract mechanism is supposed to be.
> It's very lightweight (just requires a couple of email messages) and
> registers usage of an interface.
>
> I suppose if someone wanted to work on a spiffy new tool to do this,
> that'd be interesting, but I think it's putting lipstick on a pig.
> Contracts are -- by their very nature -- merely hacks.  Proper
> engineering demands stable interfaces from producers and an avoidance of
> implementation details by consumers.  Contracts allow us to put the
> normal rules of good design in abeyance, but you can't do that too often
> or for too long a time, or bad things start happening.
>
> In the case of openssl, it's been going on for a really long time.
>
>   


-- 
Dan Hain 
Solaris Revenue Product Engineering (RPE)



Reply via email to