Contribute model

__NOTOC__
Submitting your source code to the CSDMS Model Repository is a three-step process:
# Choose an open source license
# Fill out a model questionnaire
# Email CSDMSsupport@colorado.edu with either a zip or tar.gz file containing the source code for your model, or a link to where your source code can be found online (e.g., GitHub, Bitbucket, a public FTP site, etc.)
Best model practices
Optional actions:
# Implement a Basic Model Interface (BMI) for your model
# Use CSDMS Standard Names that map input and output variable names.
See also:
* Why should you use the CSDMS Model Repository?
* What does the CSDMS Model Repository provide?
* Peer review of model codes
Watch how to contribute a model
== Choose an open-source license ==
Once you have decided to make your model freely available on the CSDMS website, it is important to choose a license for your source code. CSDMS requires that all source code that is freely available through the CSDMS model repository is licensed. Read more about how to choose the proper license and how to integrate the license into your source code.
== Supply information about your model ==
You first need to provide basic information about your model to the CSDMS community before you can submit the source code. This will make it easier for people to understand how to use your model, what they are allowed to do with your source code and what not. It also provides the opportunity to advertise papers that describe the model in more detail.
Therefore, please complete this questionnaire. Feel free to contact us or use the wiki if you want to update the information about a model that is already in the repository.
== Submit source code ==
Submitting the source code of your model is very straightforward. Zip or tar the source code and email it to CSDMSsupport@colorado.edu. Let us know if the files are too large -- we can open our FTP site for you so you can upload your model.
A CSDMS staff member will do a few checks (compiling, running code), once you have submitted your source code. The source code will be posted in the repository once the testing is done (most of the times within a few days).
Mention in your email if you want to make use of the CSDMS GitHub repository (csdms-contrib) (source code version control) that CSDMS makes available to all its members.
== Implement a Basic Model Interface ==
CSDMS has created the Basic Model Interface (BMI), which makes it possible to couple modules to each other. Implementing a BMI for your model makes your model a plug-and-play component in the CSDMS framework. Adding a BMI introduces no dependencies into your model; therefore, your model can still be used in a "stand-alone" manner.
== Use CSDMS Standard Names ==
CSDMS developed standards to be able to map input and output variable names, so that models can be coupled to each other. These standards make it possible to automatically determine whether an input variable in one model (or database) is equivalent to (or compatible with) an output variable in another model (or database). Applying these standards does not require to have these standard names to be used within your model. However, CSDMS requires model contributors to implement the BMI, and this includes mapping each of the model's input and output variables to a CSDMS Standard Name. More...