Noel,

thanks for the reply, I had some time to think about your email and the issue, 
here are a few points to discuss.
I like the concept of necessity could be the seed around which guidelines could 
be built... once we define explicitly what "necessary" means.
An initial structure for the guidelines could be:

1. Define what criteria would we use to consider a function necessary. Once 
that's clarified, it should be easier to prevent unnecessary changes to the 
API's.

2. If an API gets modified and becomes more complex (i.e., more optional 
parameters?) defaults should be set such that the new behavior mimics the old 
API.

3. Functions should be written to be small, and do a single operation while 
keeping the code simple. If the function code gets too large, it should be 
broken down into smaller, helper functions. These helper functions should be 
reusable, but kept private as much as possible, preventing the proliferation of 
new API's.

4. Some code styling should also be enforced. I found the idTech 4 coding 
standard (used by id software [1,2]) to be incredibly useful and a remarkable 
source of inspiration. This should be extended to the specific needs of 
OpenBabel. For example, encourage using iterators in macros vs building our 
own. Not sure if this is really important, and I've seen using both ways 
indiscriminately (I suspect geological stratification of new code over old 
one), but I think would be easier on the code base, preventing the reinvention 
of the wheel and the potential inclusion of new bugs.

5. I have no experience whatsoever on compilation, warnings and such, but given 
the recent discussion in the mailing list, I believe it would be good to 
provide a clear and standard set of options needed to compile the code in way 
that makes it acceptable for incorporation in the main branch and 
redistribution.

6. Documentation. If new code is added, it *must* be documented. I found very 
hard (for a rookie, though) to understand how documentation is added and 
maintained. I believe there's a way to generate documentation directly from 
comments in the code, and I will be really happy to be able to do that.

[1] http://kotaku.com/5975610/the-exceptional-beauty-of-doom-3s-source-code
[2] ftp://ftp.idsoftware.com/idstuff/doom3/source/codestyleconventions.doc


Needless to say, all these points are just suggestions.
There's a lot more to be said on the matter, and I trust more experienced 
coders to improve this stub.

Best,

S



--

 Stefano Forli, PhD

 Assistant Professor of Integrative
 Structural and Computational Biology,
 Molecular Graphics Laboratory

 Dept. of Integrative Structural
  and Computational Biology, MB-112F
 The Scripps Research Institute
 10550  North Torrey Pines Road
 La Jolla,  CA 92037-1000,  USA.

    tel: +1 (858)784-2055
    fax: +1 (858)784-2860
    email: fo...@scripps.edu
    http://www.scripps.edu/~forli/
________________________________________
From: Noel O'Boyle [baoille...@gmail.com]
Sent: Tuesday, June 21, 2016 12:16 PM
To: Geoffrey Hutchison
Cc: David van der Spoel; Openbabel-DEV; Stefano Forli
Subject: Re: [OpenBabel-Devel] OB API/ABI changes

Hi Stefano,

Your comment about guidelines is of course true. I've been thinking about this.

My feeling is that only needed functions should be in the API. So it's
not that a function is not useful, or that someone might find it
useful. This is not a concrete guideline of course, but it's something
to bear in mind.

Regards,
- Noel

On 2 June 2016 at 16:34, Geoffrey Hutchison <geoff.hutchi...@gmail.com> wrote:
>> SMARTS pattern is that you have the match of each atom to each virtual
>> atom of the pattern. For a function of OBAtom, it's just boolean true
>> or false.
>
> Moreover, there's already OBAtom::MatchesSMARTS()
> http://openbabel.org/dev-api/classOpenBabel_1_1OBAtom.shtml#abfdefac42d3c895920f1f715f0d710a5
>
> Some of these "one-off" functions are certainly more efficient, and I do like 
> David's enum-based suggestion.
>
> My feeling is that we should decide fairly quickly on any API changes so that 
> we can issue 2.4 soon.
>
> Thanks,
> -Geoff

------------------------------------------------------------------------------
Attend Shape: An AT&T Tech Expo July 15-16. Meet us at AT&T Park in San
Francisco, CA to explore cutting-edge tech and listen to tech luminaries
present their vision of the future. This family event has something for
everyone, including kids. Get more information and register today.
http://sdm.link/attshape
_______________________________________________
OpenBabel-Devel mailing list
OpenBabel-Devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/openbabel-devel

Reply via email to