>>>>> "JM" == Jeremias Maerki <[EMAIL PROTECTED]> writes:

JM> However, I'm worrying about binary compatibility. At the moment we
JM> have to tell our users that they have to use the Batik-version
JM> delivered with FOP. I'd like to see Batik's API stabilize some
JM> more so people can just download the latest version of Batik and
JM> replace it in their installation. I realize that FOP is a somehat
JM> special Batik customer from an API-POV. But let's take Cocoon: It
JM> contains blocks for Batik and FOP (where FOP uses Batik for SVG
JM> support). If a Cocoon user needs to use Batik (for generating SVG)
JM> and FOP (for generating PDF containing SVG graphics) this user is
JM> constrained to use the Batik version that FOP was compiled
JM> with. He cannot simply upgrade his Batik version to avoid a bug,
JM> for example. The very least he has to do is recompile FOP with
JM> that specific version of Batik he wants to use. Hopefully it
JM> compiles. To illustrate:

    Clearly having no interfaces change is a good thing, but we also
need to support SVG properly - the equivalent of this change was
_required_ to properly support SVG.  It could have been done other
ways that (I think) would have preserved binary compatibility but they
would have had significant drawbacks on performance, maintainability
and robustness.  FOP is a special customer and I am actually quite
surprised that you are creating subclasses of GraphicsNode (I
understand what is being done there but I could have suggested a
couple of 'better' ways to do it I think).

JM> As I said before, the FOP teams "produced" similar problems in the
JM> past.  After a recent problem between Cocoon and FOP I'm committed
JM> to watching over FOP's APIs. I'm hoping that the Batik team will
JM> similarly watch over what happens in their APIs.

    So you are now committed to not introducing any binary or source
incompatibilities?  I don't think Batik is in a position to do this
yet.  I would say that when 1.5 goes final we might be willing to
offer that assurance for releases in the '1.5' branch.  But we still
need at some point to support SMIL Animation I can guarantee you that
this will involve incompatible API changes/extensions/etc.

>> BTW perhaps I'm missing the point of the 'maintence' build but
>> shouldn't that be done off one of the release versions of Batik?

JM> I'm under the impression that Gump is intended to check
JM> code-compatibility between projects in CVS, not against released
JM> versions. This is to have an early warning about incompatible
JM> changes (before a release), so they can be resolved (hopefully
JM> with a compatibility layer) before the release.

    I guess as long as you can still make changes in the 'maintence'
branch it isn't an issue - but I would have thought that a particular
version of Batik would have already been targeted for the release of
FOP - rather than tracking 'HEAD'.  It just seems odd to me that a
'stable' version of FOP would track 'HEAD' on Batik.

JM> With my findings above I think it would even make sense to have an
JM> additional mechanism to check binary compatibility (just some
JM> runtime tests using JUnit, for example) between projects (CVS of
JM> project 1 against release xy of project 2).

    Binary compatibility is really, really hard to ensure and I think
it only makes sense on 'point' releases, so 1.5 and 1.5.1 _should_ be
binary compatible, 1.5 and 1.6 may not be (and similarly 1.5b4 and
1.5b5 do not need to be) - all of course IMHO - other Batik developers
may (and probably will :) disagree.


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to