Contributors
Atomsk uses the LAPACK library, whose authors are greatly acknowledged.
I address special thanks to the following persons for their significant contributions to Atomsk (affiliations correspond to the time of the first contribution):
- Juri Barthel, RWTH Aachen, Germany, for implementing the space groups, adding the support of CEL files, improving the support of CIF files, and for translating the program's messages to German.
- Philippe Carrez, University of Lille, France, for implementing a mode for computing the Nye tensor.
- Emmanuel Clouet, CEA, France, for sharing his code Babel for the construction of dislocation loops.
- Adham Hashibon, Fraunhofer-IWM, Freiburg, Germany, for early discussions about the implementation of many features.
- Eva Marie Kalivoda, Fraunhofer-IWM, Freiburg, Germany, for adding the support of SIESTA XV files.
- Srinivasan Mahendran, University of Lille, France, for his help with the implementation of a cell decomposition algorithm, which makes neighbor search faster.
- Matous Mrovec, Fraunhofer-IWM, Freiburg, Germany, for helping with the implementation of anisotropic elasticity for building dislocations.
Finally, I thank bug hunters, whose messages helped improve the reliability and accuracy of the code:
- Jonathan Amodeo, MATEIS, Univ. Lyon 1, France.
- Pietro Bonfa', Uni. Parma, Italy.
- Marion Borde, MATEIS, Univ. Lyon 1, France.
- Peixin Chen, Shanghai Jiao Tong University, China.
- Sen Chen, The Peac Institute of Multiscale Sciences (PIMS), Chengdu, China.
- Jaroslaw Czernek, IMC, Prague, Czech Republic.
- Valentin Delbecq, UMET, Univ. Lille, France.
- Jérôme Dequeker, UMET, Univ. Lille, France.
- Davide Di Stefano, Fraunhofer-IWM, Freiburg, Germany.
- Yann Even, MATEIS, Lyon, France.
- Jan Fikar, Institute of Physics of Materials ASCR, Brno, Czech Republic.
- Jean Furstoss, UMET, Univ. Lille, France.
- Nils Garvik, UMET, Univ. Lille, France.
- Alexandra Goryaeva, INSA Lyon, France.
- Karine Gouriet, University of Lille, France.
- Roman Gröger, Institute of Physics of Materials, Czech Academy of Sciences, Czech Republic.
- Julien Guénolé, IPMP, RWTH Aachen, Germany.
- Ling-Ju Guo, National Center for Nanoscience and Technology, Beijing, China.
- Lubin Huo, Ningbo Institute of Materials Technology and Engineering, China.
- Yaron Kauffmann, Technion, Israel.
- Vasiliy Krasnikov, South-Ural State University, Chelyabinsk, Russia.
- Antoine Kraych, CEA, France.
- Wei Li, University of Hong-Kong, China.
- Hui Liu, McGill University, Montreal, Canada.
- Dario Marrocchelli, MIT, Boston, USA.
- Marcin Minkowsky, Tampere University, Finland.
- Samaneh Nasiri, Friedrich-Alexander-University Erlangen-Nürnberg, Germany.
- Raoul Aurelien Ngayam Happy, Paul Sherrer Institute, Switzerland.
- Dongho Nguimdo Moise, AIMS, Cameroon.
- Justin Ondry, UC Berkeley, USA.
- Anirban Pal, Rensselaer Polytechnic Institute, Troy (NY), USA.
- Sebastian Ritterbex, UMET, Univ. Lille, France.
- Davide Sangiovanni, Linköping University, Sweden.
- Min Shi, University of Minnesotta, USA.
- Eerik Voimanen, Tampere University, Finland.
- Yanzhou Wang, Aalto University, Finland.
- Michael Wolloch, University of Modena and Reggio Emilia, Italy.
- Jianyang Wu, Xiamen University, China.
- Zhuocheng Xie, RWTH Aachen, Germany.
- Zheyuan Xing, Southwest Jiaotong University, China.
- Jian-Hui Zhai, UMET, Univ. Lille, France.
- Yong Zhang, Monash University, Clayton, Australia.
- Benedikt Ziebarth, Fraunhofer-IWM, Freiburg, Germany.
You want to contribute?
Atomsk can still be improved in many ways. If you find a bug, you may declare it to the main author who will do his best to fix it. If you speak a language that Atomsk does not know, you may translate the documentation or the messages displayed by Atomsk, so that users read it in their native language. If you know Fortran, then you may edit the source code to fix bugs, optimize a routine, add a new feature, or modify or add translations of the messages. If you simply have ideas about possible enhancements or new features, feel free to share them. In any form, your contribution is welcome!
Report a bug, ask questions, make propositions to improve the code
If you found a bug when running Atomsk, you may open an issue on GitHub, or contact the author by email.
A bug can be any behaviour that is not desired: a result that is incorrect or inconsistent, a bad translation, a crash or a segmentation fault. When submitting a bug report, please indicate the version of Atomsk you are using, and the command that produces the bug. Also if possible, explain what result you expected when running that command, and why you think Atomsk's behaviour is wrong.
How to contribute to Atomsk
If you wish to contribute to Atomsk, follow these steps:
- Create your own account on GitHub.com. Please use your actual name (not a pseudonym).
- Go to the GitHub page of Atomsk and click the "Fork" button; this will create a copy of Atomsk on your own GitHub account.
- Clone this copy to your local computer (make sure you have Git installed and configured on your computer):
git clone https://github.com/my_name/my_repository
- Now, instead of working directly on the master branch (which can create conflicts), it is safer to create a separate branch:
git checkout -b my_branch
- Work on your own copy of Atomsk, modify the files to your liking. Compile your version to test if your modifications work. Don't forget to insert comments in your source code.
- Once your work is done, commit your modifications (with comments!):
git commit -a
Then, push them to your GitHub repository:
git push origin my_branch
Git will ask for your GitHub user name and password.
- Open your Web browser, go to the GitHub page of your repository, and click the "Pull request" button.
Your modifications will appear to the main author as a "Pull request". After reviewing your modifications, they may be accepted and merged with the main Atomsk (or not).
Use Git and Github
Atomsk is developped using Git, and its development is made public on the platform GitHub. To learn how to use Git (the version management software itself), and how to use Github (the platform hosting Atomsk), the following links provide a good start:
Also, do not hesitate to ask your favorite search engine for more information and tutorials.
Send an email to the main developer
Alternatively, if you cannot or don't want to use GitHub, you can send your questions directly by email. If you modified the source code of Atomsk, then archive your whole modified copy (in zip or tar.gz format) before sending it. If possible or relevant, you may also send some example scripts to illustrate the changes you have made.
Important guidelines and good practices
Contributions are welcome. Contributions are good. However to avoid chaos, it is recommended to comply to the following guidelines when you contribute to Atomsk.
- Use your actual name and affiliation on GitHub. As the main author, I trust the commits more easily when I know where they come from. Even better: send me an email from your professional address when performing a pull request. Emails are always appreciated (see contact page). If you use a pseudonym or a non-professional address, your contribution will look suspicious, it will take more time to be reviewed, and it is more likely to be rejected.
- Contact the main developer before you start programming. It helps the main author to keep track of what is being worked on, so as to avoid that several people work on the same feature. You should either describe your intents by clicking the "Issues" button on the GitHub page of the project, or by sending an email to the main developer (see contact page).
- Comment and comment. Comment your source code. Comment your commits. Comments make it much easier to understand what was done, and make the review process faster. When there are no comments (or useless comments), the main author must spend time to understand the changes in the source code, why it was changed, and how it modifies the behavior of the program.
- Make sure that your version compiles before submitting a Pull request. If your version does not compile, then your work is not complete. Do not try to send your modifications, they will not be accepted!
- Make sure the documentation matches your modifications. Bug corrections do not require to modify the documentation. However if you modify existing features, or introduce new ones, then please also edit the documentation (in the folder /doc/) so that it takes your modifications into account. If your additions are not described in the documentation, virtually nobody will know they are there, and nobody will use them.