— the global portal for all things SBML


This page describes our project ideas for students participating in Google Summer of Code 2014. If you have any questions, please feel free to contact the JSBML Team via email at


Image credit: GSoC 2014
Image credit: GSoC 2014

What is Google Summer of Code?

Google Summer of Code (GSoC) offers post-secondary student developers stipends to write software for open-source projects. Individuals apply to GSoC, pick a project, and if accepted, are paired with mentors from the project (in this case, SBML). More information is available from the Google Summer of Code 2014 FAQs.

For more information, see the website of the Open Bioinformatics Foundation

What are the SBML and JSBML projects?

SBML is a data format for representing and exchanging computational models in systems biology. It has been in use for over a decade and continues to evolve and grow.

JSBML is a community-driven, open-source project to develop a complete pure-Java API library for reading, writing and manipulating SBML. Where possible, JSBML strives to attain 100% API compatibility with the Java interface of libSBML, a full-featured library with a core written in C++.
The JSBML Project is part of the broader SBML effort. Currently, the JSBML consortium of developers includes people at the University of California, San Diego (UCSD, USA), the University of Tübingen (Germany), the EMBL European Bioinformatics Institute (EBML-EBI, UK), and the California Institute of Technology (Caltech, USA). Other institutions are welcome to join.

Why is the JSBML project participating in GSoC?

The current development release of JSBML is at version 1.0β, and implements support for all constructs in SBML up to the latest Level 3 Version 1 specification. More powerful features as well as support for some SBML Level 3 Packages are still unimplemented. We could use help implementing these additional capabilities.

For several reasons, we believe working on JSBML would be a good project for someone interested in computational biology. First, it is a Java programming project that does not require knowledge of how to do numerical simulations – in fact, it hardly requires any knowledge of biology either. Second, there's a wide range of topics to choose from, including work on graphical layout and rendering, thereby providing a variety of interesting options for projects. Third, we have a number of developers already working on JSBML, so there are people who can answer questions. And finally, it's for a good cause: building tools that help scientists do better simulation and analysis in biology.

Working in an international team of developers and contributing to a large software project that is already being used by several research groups and software products, has high relevance for professional education.

How to apply

The following resources provide general information about the application process:

The Google Summer of Code program is competitive. Accepted students typically have thoroughly researched their proposed project and have been in frequent contact with the project's mentors. Simply copying and pasting an idea here will not work. On the other hand, creating a completely new idea without first consulting potential mentors is unlikely to work out.

Information we will need from you

To help ensure a good match between the project and everyone involved, we would like to know who you are and also a little bit about how you think. Therefore, please include the following information in your application:

  1. Your contact information:
    1. Your name
    2. Your email address
    3. Any professional/resume or personal/blog URLs you would like to list
  2. Your background and education:
    1. A brief description of your education history
    2. Information about work experiences or projects that may be relevant to this project
  3. Your summer plans:
    1. Which city and country will you be spending this summer in?
    2. How much time do you expect to have for this project?
    3. Please list jobs, summer classes, and/or vacations that you'll need to schedule around, and times when you will have limited internet access.
  4. Your programming experiences and strengths:
    1. What are your programming languages of choice?
    2. What are some of your prior experiences working with Java?
    3. Do you have prior experiences doing open-source development?
  5. Your goals for GSoC:
    1. What do you want to learn this summer?
    2. What are your interests and background in biology or bioinformatics?
  6. Your goals or ideas for the project you would like to work on:
    1. Project Name: one of the suggestions listed below, or your own idea
    2. Project Description: your own description of the project and why it's interesting
      • Provide sufficient details. Include links to other projects or products that illustrate your ideas.
      • Strong applicants include a tentative implementation plan and timeline (hint!)
      • Identify possible hurdles and questions that will require more research/planning.
    3. If you had to choose an alternative project instead, what are some backup alternatives that would interest you?
  7. What can you bring to the team?
    1. How hard are you committed to working this summer?
    2. How enthusiastic are you about this work?

Hints for a successful application

The following are based in part on Google Summer of Code hints:

  • Submit your proposal early: early submissions get more attention from developers for the simple fact that they have more time to dedicate to reading them. The more people see it, the more it'll get known.
  • Interact: before submitting your proposal ask questions to the developers, you can even ask the potential mentor to review your proposal before sending it to Google.
  • Keep it simple: we don't need a 10-page essay on the project and on you. (Google won't even let you submit a text that long.) You just need to be concise and precise.
  • Know what you are talking about: the last thing we need is for students to submit ideas that cannot be accomplished realistically or ideas that aren't even remotely related to JSBML. If your idea is unusual, be sure to explain why you have chosen JSBML to be your mentoring organisation.
  • Aim wide: submit more than one proposal, to different areas of JSBML. We also recommend submitting to more than one organisation too (not just JSBML). This will increase your chances of being chosen for GSoC.

Project Ideas

For more information about any of these projects, please ask on the public JSBML development mailing list,

Image:icon-lightbulb.gif Idea #1: Your own original Idea

Feel free to propose your own idea if none of the ones below suit you. As long as it relates to the JSBML project, we will give it serious consideration. Creativity and self-motivation are great traits for open-source programmers (but, please make sure your proposal is also relevant to JSBML!).

Image:icon-lightbulb.gif Idea #2: Implement support for the SBML Multistate/Multicomponent Species package

Another of the many packages for SBML Level 3 is Multistate and multicomponent species. This packages define constructs for models and modelers to represent biochemical species that have internal structure or state properties. These may involve molecules that have multiple potential states, such as a protein that may be covalently modified, and molecules that combine to form heterogeneous complexes located among multiple compartments. The JSBML team has already started implementation of the multi package, but more needs to be done.

Image:icon-lightbulb.gif Idea #3: Add support for Schema-based validation of SBML

SBML files need to be validated carefully to ensure that they conform to the specification. Currently, the most complete implementation of SBML validation is embodied in libSBML, although the rules of SBML validity are defined in the SBML specification documents. It is possible to validate SBML from JSBML using either the Online SBML Validator or a Java package we provide for calling libSBML locally (i.e., without a network connection) but we want to move toward capturing all of the SBML's validity rules in schema languages such as RELAX NG and Schematron, then having both libSBML and JSBML (and any other SBML-using system) use schema validation engines instead of hardcoded validation. This will be especially important as more SBML Level 3 packages become implemented. We have already made great strides in defining RELAX NG schemas for SBML Level 3, but we need to work on providing the hooks in JSBML to using those schemas for validating SBML files.

Image:icon-lightbulb.gif Idea #4: Redesign the implementation of mathematical formulas

JSBML uses the concept of abstract syntax trees to work with mathematical expressions. At the moment, all different kinds of formulas are implemented in one complex class. This project should implement a math package for JSBML, in which all different kinds of tree nodes that can occur in formulas (e.g., real numbers or algebraic symbols such as 'plus' or 'minus') would be represented with an own, specialized class. In this way, the handling of formulas would be much more straightforward and even more efficient.

Image:icon-lightbulb.gif Idea #5: Improving the plugin interface for CellDesigner

One of the most frequently used programs in computational systems biology is CellDesigner. JSBML provides an interface that facilitates the development of plugins for this program. This interface has recently been revised and improved. Now, test cases and plugins for CellDesigner are to be implemented in order to make use of it and ensure its correct behavior. It is, for instance, possible to use CellDesigner's complex canvas user interface to create or manipulate biochemical networks and to conduct numerical computation.

  • Languages and skill: Java, some basic understanding of visualization algorithms
  • Potential Mentor: Andreas Dräger

Image:icon-lightbulb.gif Idea #6: Tests for JSBML

JSBML class and method structure largely corresponds with libSBML, our C++ language counterpart. One area that will need to be standardized between the two parsing libraries are the test cases for proper SBML syntax. LibSBML has a set of files (and corresponding tests) which test a large set of these SBML syntax rules. This project will require the programmer to create important tests for core and extension libraries for JSBML which correspond to the libSBML rules. The programmer could also suggest further tests, and he/she would be essential in building the code base that enacts quality control for JSBML.

Final comments

From our perspective, the following are important criteria for a successful JSBML student project:

  • The software must have something that works and is in a finished (or nearly finished) state
  • The software must be integrated, or close to being integrated, in JSBML without too much effort
  • The individual must have interacted well, and continuously, with the JSBML community
  • The amount of work performed must have been significant enough (it's supposed to be a 2 person-month effort)

Some general comments about GSoC:

  • GSoC students should not block on anything for a long period of time. They should ask plenty of questions on the list (but they should also be autonomous!)
  • GSoC students should be as much as possible in contact with the community, following the mailing lists (and answering mails, when they know what to say), give regular status updates on their project. This does not mean that a GSoC student is not allowed to take a break, of course, but that, while working, a student should be integrated as much as possible with the community.
  • When taking a vacation/break, students have to notify the mentor. Mysterious, unexplained disappearances could lead to negative feedback.

Here are some additional resources:

Retrieved from ""

This page was last modified 19:03, 10 March 2014.

Please use our issue tracking system for any questions or suggestions about this website. This page was last modified 19:03, 10 March 2014.