milestones
Note: This document discusses potential milestones for releases 1.01 and 1.1 of the CellML API. Unless otherwise stated, these milestones are potential milestones (i.e. items which could be considered for the upcoming releases), and not items which will definitely be in the release.
= Support for more language bindings =
== Non-CORBA XPCOM binding == Status: Complete.
- === Benefits ===
- PCEnv will be able to include a faster and smaller binding for the API.
- Other software using the CellML API from Mozilla will also benefit from this option.
- The code to get this binding will also benefit other software useful to the physiome project, such as the mozCmgui project.
- === Costs ===
- A week or more of development time to get the initial implementation (note: this figure is a guess, more research is needed to get a more accurate figure).
- This change would create significant risk of introducing bugs (affecting programs currently using XPCORBA for access to the API). At least a month of intervening stabilisation time (with testing from third parties) should be allowed between finishing the change and releasing the API.
- Aside from PCEnv, we don't have many users of the CORBA binding. Not regularly testing it could result in this functionality decaying, especially if XPCORBA is changed to support mozCmgui, and the CellML API has new features added to it which are not used by any real world application.
== Non-CORBA JNI (Java) Binding == Status: Deferred to allow more work on PCEnv.
- === Benefits ===
- Allows Java developers access to the CellML API through a nice API (the current CORBA binding would be difficult to use due to the need for explicit reference counting calls).
- === Costs ===
- Three weeks of development time to get the initial implementation (note: this figure is a guess, more research is needed to get a more accurate figure).
- This change would need significant testing from Java. At least a month of intervening stabilisation time (with testing from third parties) should be allowed between finishing the change and releasing the API.
= Support for more languages in the CCGS = Status: Under consideration for 1.01 or 1.1
- == Benefits ==
- Allows a range of projects to convert CellML models into languages they can compile into their native frameworks.
- Would allow the website to offer code downloads in more language.
- Would help the uptake of CellML into the community, by allowing better integration with currently popular tools, e.g. MATLAB.
- Would force the language specific parts of the CCGS to be better separated from the logic (conceptually better code). This process has already been partially completed.
- == Costs ==
- At least one week of development time to get the initial implementation (note: this figure is a guess, more research is needed to get a more accurate figure).
- This change carries a moderate risk of introducing bugs into the CCGS portion of the CellML API. At least two weeks of intervening stabilisation time (with feedback from external users during this period) would be needed before a release.
= Thread-safe implementation = Status: Under consideration for 1.01 or 1.1
- == Benefits ==
- Could avoid crashes currently happening when using the API across CORBA (because CORBA makes calls on more than one thread).
- Could allow multi-threaded applications to safely call the CellML API from any thread.
- == Costs ==
- A week or two of development time.
- We need to check carefully for re-entrancy and mutex ordering problems, to ensure that the CellML API does not lock up under any circumstances. If Helgrind is working again with a recent valgrind, we could use this. Running the current tests concurrently in several threads, and repeating thousands of times might be another way to catch any uncaught issues.
= Port to MSVC7 and MSVC8 = Status: Complete for MSVC8. MSVC7 might need additional work.
- == Benefits ==
- MSVC8 support would help PCEnv, if we decide to put the CellML API implementation in-process with Mozilla.
- MSVC7 support would help at least one other group considering the CellML API, and so increase adoption of the API.
- == Costs ==
- Depending on how easily it compiles with MSVC7/8 could take several weeks of development time. Past attempts to get code compiling on Windows has shown problems due to limited standards compliance of MSVC and the libraries, and due to the limited development tools available on Win32 and lack of access to system source code, these problems are often very difficult to debug. More time trying this out would let us determine if it was a major undertaking or not (however, past experience has shown that this is difficult to estimate, as it is an issue of resolving unexpected issues which often are only visible after the previous one has been fixed).
- If there are significant problems due to deficiencies in C++ standard support in particular MSVC versions, code readability could be harmed by having to pollute the code with workarounds for MSVC problems.
= Repository of examples = Status: Needs discussion.
- == Benefits ==
- Increased adoption of the CellML API.
- == Costs ==
- Time required to develop the examples (depends on how many examples wanted).
- There is some redundancy with the test-suite (another option would be to clean up the test-suite so they serve as examples).