Discussion at Caltech
In May 2008 Akira, Akiya, Mike and Sarah met at Caltech to discuss libSBML and in particular the practicalities of implementing modularization.
Points discussed
- In view of feedback from the 2008 Hackathon regarding the use of dynamic libraries, not to mention the cross platform/different language nightmare this approach might create, we decided that requiring dynamic libraries for extension modules was not a suitable approach.
- Akira pointed out that, from experience with CellDesigner, allowing users to build add-ons created difficulties when it came to releases of the core software. Since people at the Hackathon had indicated that it wasn't really a problem to build larger amounts of code and the existing build system is already designed to allow the layout extension to be enabled/disabled, we decided that we should follow this approach for further extensions. This does mean that code for extensions will need to be included with the libsbml code and, although the SBML Team does not have the staff to write this code, we will for the moment commit to incorporating and to an extent maintaining code from other people (who will of course be fully recognized, acknowledged and thanked
).
- We then discussed a source directory structure that would facilitate the inclusion of extensions and the corresponding files necessary to produce language bindings.
- The current layout extension is embedded in the core libSBML code which uses
#define USE_LAYOUT
- statements to determine appropriate action. We need to avoid this approach for any further extensions and develop an API (as detailed here) for including/excluding extensions without the core code needing to change.
Conclusions
- Until we actually begin implementation it is impossible to accurately determine exactly either the API that will be used or the directory structure that will be best.
Modify the layout extension implementation to use this newly developed API and directory structure. We hope that this will be available by December 2008.
Anyone wishing to start writing code for an extension should emulate the way the layout extension is currently implemented. This is NOT a waste of time as the classes, etc., will be necessary for the extension regardless of the method of inclusion within libSBML.


