John, all,

On Thu, Dec 31, 2015 at 12:21 PM, John M <john.wilkinson...@gmail.com> wrote:
> Is the approach of adding new API and deprecate the old sound acceptable? Or
> are public API changes acceptable?

In general I think keeping APIs is a good thing, also for development
branches. I think APIs should be kept, unless there is a good reason
to change them. However, I also think that our APIs should not be
carved in stone; we've not spent months or even weeks on designing
APIs and just do things wrongly, I think. It does give us a strong
responsibility to inform people about changes, of course, and I have
tried to do my bits in my blog in this respect (as well as a chapter
in my book).

However, there is one API change I want to single out, which I
strongly feel about, because I consider them bug fixing: the use of
implementations instead of interfaces of the core APIs (Atom versus
IAtom, etc). In the past we have found that one implementation does
not suffice, I think we will face this again. In general, we made the
mistake to write APIs based on implementation, which is the bug here.
Fixing this was started some years ago and I like to finish this. It
has uncovered quite a few bugs in implementations of the interfaces
and wrong assumptions of various kinds. That strengthens me that this
is of quite a different level of API changes. Furthermore, they are
special in a second way: ChemFile implements IChemFile (etc). That
means that downstream code will only break when that code was using
APIs from ChemFile that was not specified in the interfaces. That
should probably not even exist and there is a minimum amount of that
anyways.

So, to me, there are different API changes, once that I think should
not happen, and those that must happen. The latter, in a development
branch, I think is appropriate. For the other, we have seen various
ways for overcoming this:

1. add new classes with the new API versions and deprecated the old
ones [I like that]
2. add new methods with the new API versions and deprecated the old
ones [I like that; that does not always solve the issue]

A final thought is that keeping old APIs (deprecated code) also means
more code to maintain; with the restricted amount of resources, I am
not sure to what extend we can or should do that. Instead, I rather
(or also) focus on making a better effort in educating the community
(that includes myself, because I have a lot of your new APIs to
learn!!) in new APIs and old ones not to use anymore. Also, I really
love to have a better overview of API versions (read: CDK versions)
downstream tools are using.

Egon

-- 
E.L. Willighagen
Department of Bioinformatics - BiGCaT
Maastricht University (http://www.bigcat.unimaas.nl/)
Homepage: http://egonw.github.com/
LinkedIn: http://se.linkedin.com/in/egonw
Blog: http://chem-bla-ics.blogspot.com/
PubList: http://www.citeulike.org/user/egonw/tag/papers
ORCID: 0000-0001-7542-0286
ImpactStory: https://impactstory.org/EgonWillighagen

------------------------------------------------------------------------------
_______________________________________________
Cdk-user mailing list
Cdk-user@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/cdk-user

Reply via email to