<div dir="ltr">Hi,<div><br></div><div>For some time, GROMACS has installed a collection of its headers and libraries in the hope that they might be useful to third parties. I&#39;m not aware of anybody actually doing so - please speak up if you know of any! All the derivative work of which I&#39;m aware is either a fork of the code, or a wrapper over an executable.</div>
<div><br></div><div>Making a useful library API is a considerable amount of work, but the discipline of doing so would have internal benefits. The existing &quot;API&quot; from ~4.5 seems to me like somebody grabbed most/all of the stuff and decided to install it. Preserving the existing API over C-&gt;C++ is next to impossible, and it will be some years yet before anything stabilizes, so any existing client is already going to need a re-write or three.</div>
<div><br></div><div>So, I propose we stop installing headers, install shared libraries only where we install an executable that needs it, and stop installing static libraries.</div><div><br></div><div>Not needing to think about such consequences gives us more freedom in developing. Much more importantly, it makes things take less time for (e.g.) Teemu, Roland and I. There&#39;s several commits in Gerrit right now that are discussing such things, and there&#39;s been plenty in the past, too.</div>
<div><br></div><div>We already have some of our I/O functionality available as separate libraries. If we make our custom analysis functionality available, I&#39;d much rather do that as a Python extension, or as a contribution to a dedicated MD-analysis project. mdrun... might never achieve a better &quot;API&quot; than grompp.</div>
<div><br></div><div>One consequence would be that the template analysis program would stay in the source tree. This makes it much easier to organize its secondary dependencies than installing stuff, then detecting attributes of installed stuff so a build can work, and all the while hoping that C++ compiler incompatibility isn&#39;t just going to kill the third-party developer anyway.</div>
<div><br></div><div>If someone wants such a feature, and is prepared to put considerable work into it ahead of other GROMACS things they might do, that&#39;s great. I won&#39;t have time to put into it in the foreseeable future.</div>
<div><br></div><div>Cheers,</div><div><br></div><div>Mark</div><div><span style="font-family:arial;font-size:small"><br></span></div></div>