In message <[EMAIL PROTECTED]> on Thu, 9 Jun 2005 14:28:27 +0000, Eduardo Pérez 
<[EMAIL PROTECTED]> said:

eperez> On 2005-05-14 15:27:26 +0000, Eduardo Pérez wrote:
eperez> > I was wondering if openssl-0.9.8 is going to be API/ABI
eperez> > compatible with the current stable branch of openssl-0.9.7
eperez> > I think keeping API/ABI compatible is a good idea and makes
eperez> > programmer and users life easier.
eperez> > Anyway, if you are not going to keep API/ABI compatibility
eperez> > in openssl-0.9.8 with 0.9.7 I'd like to hear the reasoning
eperez> > behind that.

0.9.8 and 0.9.7 aren't compatible in certain areas.  The biggest
changes have nothing to do with function and variable symbols.  If you
want to look at the real incompatibilities, you need to compare the
different structures.  I'll get into that below.

eperez> In libcrypto I saw that in the newer version there are missing
eperez> symbols so it may not be API/ABI compatible if that symbols
eperez> were supposed to be public and used by applications.

Those I saw in your diff were ECC symbols.  ECC is still quite
experimental in 0.9.7 and has evolved quite a lot in 0.9.8.

eperez> It seems that openssl doesn't want to keep API/ABI
eperez> compatibility between minor versions, ignoring the tremendous
eperez> help that it brings to end users and distributions packagers,
eperez> even knowing that compatibility could be achieved at no cost.

I think you're making quite a harsch conclusion.  One of the bigger
problems with the foundation of OpenSSL is the open nature of almost
all structures.  To keep API/ABI compatibility, those would have to be
frozen, but that would effectively stop all development that includes
new methods with extended data, or certain security fixes, or...
unless you want *really ugly* and *really insecure* hacks in OpenSSL.
Trust me.

For a comparison, I suggest you compare the RSA structures in
crypto/rsa/rsa.h between 0.9.7 and 0.9.8.  I suggest you compare
simple little constants like EVP_MAX_KEY_LENGTH and EVP_MAX_BLOCK_LENGTH
between 0.9.6 and 0.9.7.

The biggest change that's needed in OpenSSL is to hide all the
structures and all constants and have them available through functions
(creator, destructors and information functions).  So speaking of
incompatibilites, we've really kept it low compared to what needs to
be done and what could be done.

Our version numbering is admitedly weird.  Basically, we've treated
'0.9.' as a prefix to signal that "this isn't a 1.0 yet, and drastic
changes can be expected", and effectively trated the next digit as a
classic major version.  This is reflected in the soname we give the
shared libraries.  We probably should do some drastic changes in our
version numbering (which is quite a lesson to me personally.  I've
been reluctant to make a move to 1.0 because OpenSSL hasn't felt ready
for that).

Cheers,
Richard

-----
Please consider sponsoring my work on free software.
See http://www.free.lp.se/sponsoring.html for details.

-- 
Richard Levitte                         [EMAIL PROTECTED]
                                        http://richard.levitte.org/

"When I became a man I put away childish things, including
 the fear of childishness and the desire to be very grown up."
                                                -- C.S. Lewis
______________________________________________________________________
OpenSSL Project                                 http://www.openssl.org
Development Mailing List                       openssl-dev@openssl.org
Automated List Manager                           [EMAIL PROTECTED]

Reply via email to