How to contribute¶
General git workflow¶
Open a new issue (either to report a bug or to propose a new feature).
Go to the issue and below the description of the issue select Create merge request (or alternatively choose just Create branch). This will create a new branch and open a merge request. The name of the branch is equal to the name of the issue.
Update your local repository by typing in the terminal:
git checkout master git pull git checkout <name-of-new-branch>
Now, make your changes. Please commit often and early. Do not commit a huge amount of work at once. Please add a descriptive commit message, so everyone gets an idea about your changes/new implementations. This keeps the process transparent for all contributors. To commit you can, e.g., use:
git add <file-name-1> <file-name-2> git commit
Push your changes into the remote branch:
git push -u origin <name-of-new-branch>
Once you have finished your changes, go back to the browser to the gims GitLab. You will need an approval of your merge request by an eligible user. If your merge request is approved, go to your merge request and select Merge.
If you have implemented a new or changed an existing feature, please document your changes in the Changelog. Further, please also document how to use your new feature in the docs. Please provide information for the user manual.
Finally, add tests for the new functionalities for both the client and server side!
Adding support for a new Code¶
If you plan to add support for a new electronic structure code, there are only a countable number of steps to do. In what follows gives a rough overview.
Add the code icon to
client/img(you’ll find examples already there) and add it in the
index.htmlto the div
code-selection-box. For the code name use the format
<codeName-logo.png>. Don’t use special characters for the code name.
Add the definition of the fields needed for the Control Generator. Please use the following name for it:
Fields_<codeName>.js. Examples for this file can be found in the folder
client/src/control-generator-mod. Import the
Please add a parser for the output files of your code to the
output-analyzer-mod. The prototype is defined as
client/src/output-analyzer-mod. Examples for existing supported code parser are in this folder, too. Please add your new parser object to the function
Please make sure if ASE supports your code. GIMS relies on the auto-detection of the structure-data files. If this is missing, we recommend to add the support for your code first there.
Please provide a code class for the new code in the
app/gims/codesdirectory. A prototype code class and examples for other codes can be found there, too.