OpenBabel FAQ
-------------

General:
1.1 What is Open Babel?
    Put simply, Open Babel is a free, open-source version of the Babel 
chemistry file translation program. OpenBabel is a project designed to
pick up where Babel left off, as a cross-platform program and library
designed to interconvert between many file formats used in molecular
modeling and computational chemistry.
    Open Babel includes two components, a command-line utility and a
C++ library. The command-line utility is intended to be used as a
replacement for the original babel program, to translate between
various chemical file formats. The C++ library includes all of the
file-translation code as well as a wide variety of utilities to
foster development of other open source chemistry software.

1.2 How does this relate to BabelChat, BabelFish, Babel IM, etc. ...?
    It doesn't.

1.3 Is it Open Babel or OpenBabel?
    Your choice. It's probably easier to call it Open Babel since 
that's what it is--an open version of Babel. But if you like 
one-word, mixed-case project names, then go for OpenBabel. In that 
case, the space is just too small to be printed.


Features, Formats, Roadmap:
2.1 Why don't you support file format X?
    The file formats currently supported are some of the more common 
file formats and, admittedly, those we use in our work. If you'd like 
to see other file formats added, we need one of:
    * documentation on the file format
    * working code to read the file format or translate it
    * example files in the new file format and in some other format
The latter obviously is the easiest with text file formats. Binary 
files take some time to reverse engineer without documentation or 
working code. Also consider pointing developers to this FAQ and the 
"What's in it for me?" section.

2.2 What doesn't Open Babel support yet?
    The biggest missing feature from Babel is deriving bond types for
QM files. The Babel code was a mishmash and didn't always did a good
job, but it was good at lying. There are better algorithms now, but
they're not implemented yet. Right now it will generally just assign
single bonds based on distance between elements.

2.3 What sorts of features will be added in the future?
    It's an open project, so if features are suggested or donated, 
they'll be considered as much as anything else on the drawing board. 
Some things are pretty clear.
    * A test suite, to ensure bug-free translation between formats
    * Support for additional file formats including CML
    * Bond type perception (see 2.2)
    * Additional data storage (total charge, spin, point-group 
symmetry, etc.)
    * Support for translating beyond bonds and atoms, including
       * charge density
       * eigenvalues/orbital energies
       * eigenvectors and basis-set projection
       * additional calculated data
    See the TODO list for more details.
2.4 Where's the roadmap again?
    <http://openbabel.sf.net/>


What's in it for me to contribute?
3.1 What's in it for my chemistry software company?
    If your product is closed-source or otherwise incompatible with 
the GPL, you cannot link directly to the code library. You can, however, 
distribute Open Babel in unmodified form with your products to use the
command-line interface. If you decide to distribute binaries, you
should either offer users the source if they want, or point them to
the Open Babel website.
    What's not to like with this deal? You can have Open Babel 
translate foreign file formats for you and can point users at the 
website for distribution. You don't need to write tons of code for 
all these formats and bug reports can be passed back to us.
    Of course, there's one catch. You'll most likely need to add 
feature-rich support for *your* file formats. So if you contribute a 
small amount of code under the GPL to read/write your files, 
everything else is handled by Open Babel.
    It's a win-win for everyone. The community benefits by having 
feature-rich translation code and open file formats. Your company and 
its programs benefit by the ability to read just about every format 
imaginable. Users benefit by using the programs they need for the 
tasks they need.

3.2 What's in it for me as an academic?
    If your an academic developer, you certainly should read the 
previous answer too. It takes little work on your part to interface 
with Open Babel and you get a lot in return.
    But even if you're just an academic user, there's a lot of reasons 
to contribute. Most of us deal with a variety of file formats in our 
work. So it's useful to translate these cleanly. If a format isn't 
currently supported by Open Babel, see question 2.1 above. If you 
find bugs please report them. Since it's open source, you can patch 
the code yourself, recompile and have the problem fixed very quickly.
    If you're inclined to write code, the GPL is an excellent option 
for the acadmic. You're the original copyright holder, so you can do 
whatever you want with the code, in addition to selling it. But if 
you've also licensed it under the GPL, no one can distribute it 
commercially without your agreement. Fellow acadmics can use it 
directly, learn from it, improve it and contribute back to you. Isn't 
that why many of us went into science?
     Once licensed under the GPL, the code *must* remain free to 
interested parties. If someone modifies it, that code must still 
remain under the GPL, free for all.

3.3 What's in it for an open-source software project?
    Certainly the answers for closed-source software and academics 
also apply for you. Beyond that, if your code is compatible with the 
GPL, you can directly use Open Babel and all of the API. This is 
already happening with the Ghemical molecular editor, available under 
the GPL. There's a lot of code in Open Babel beyond file translation 
and more to come. Why reinvent the wheel?

3.4 Why is this covered under the GPL instead of license X?
    The short answer is that OpenEye Scientific Software employs Matt 
Stahl, one of the authors of the original Babel. They released a 
library called OELib under the GPL that did many things that Babel 
did. Later they decided to release the next version of OELib as a 
closed-source project--their choice for their code. We took the 
version of OELib still under GPL and went from there.
    If you'd like to see Open Babel licensed differently, we'd suggest 
asking OpenEye if they'd consider releasing the old code under a new 
license, e.g. the LGPL. At that point, we'd consider whether Open 
Babel should be relicensed or not. Obviously all copyright holders 
must agree to the new license.

