After having a dry run with version 5.2, I started my attempt to upgrade some code written against an ancient version of JChem, this time using 5.3.2, the latest version.
I have discovered that in addition to the issues I have previously encountered and resolved, some other changes have been made even since 5.2.
Class PFParameters, which has always derived from MDParameters in chemaxon.descriptors, appears to have been moved from chemaxon.pharmacophore to the package chemaxon.descriptors (i.e. it is now in the same package as its superclass, logically enough). Something similar has happend to PharmacophoreFingerprint.
I couldn't find this recorded in the change log? Is this an oversight?
Is there anything written down anywhere governing your version number policy for breaking API changes?
This isn't supposed to be accusatory - I might just be looking in the wrong place for the info and overlooked it.
This is just a quick confirmation that your enquiry has been dealt with. We'll get back to you shortly.
Thank you for your patience and please accept our apologies for any inconvenience this problem might cause.
The change in the API was intentional but the lack of any record in the change log is a serious mistake. We will include a short notice in the list of changes in the next minor release.
Our policy for changing the API follows the java conventions, thus methods and classes are deprecated first and are included in the minor releases following the deprecation as well as in the next major release. That normally gives a year for developers to move to the new API. Then the deprecated methods are discontinued.
This time we did not committed ourselves to this general principle and I apologise for the inconvenience this might cause.
We would be glad to learn more about the way how you use pharmacophore fingerprint or other molecular descriptors and what are the typical problems you solve with these tool.
Thanks for investigating - I wasn't inconvenienced at all, just mildly perplexed after thinking I'd done the hard work in getting things working with 5.2!
I wanted to know your versioning policy because historically you have released versions much more frequently than we have. We don't redistribute the ChemAxon jars ourselves, but we provide a mechanism for users to upload them into our system. I was hoping that it will be possible for them to drop in a later version of your libraries than we have coded against without our having to issue a maintenance release. It sounds like provided we do not release code using APIs already marked deprecated, then barring accidents it ought to work.
What if we put back pharmacophore fingerprint related classes in the .pharmacophore package, deprecated though?
I've already fixed our code to point to the new location, so it doesn't actually matter to me (it would, however, be annoying if you *moved* everything back, rather than having the code in both the new and old places!) It might be beneficial to others migrating to 5.3, though? Because this was a package structure reorganization rather than a method deprecation, I'm not sure there were any warnings in advance of the move? I hadn't checked exhaustively, though.
It was never a showstopper for me, just a surprise... The main reason I posted the question was just to find out your policies on API changes so that I could assess the likelihood of our customers being able to keep up with ChemAxon improvements without our needing to issue new versions as frequently as you do.
Many thanks once again for your conscientious customer service.