Software maintenance policy¶
For those of us who develop and maintain their own software, we have set up a number of guidelines to streamline cooperation:
- Use Python as preferred high-level language (others like R and Julia are valid but less common options too) , consider C/C++/Go/Rust as system languages when writing lower-level high-performance code.
- Use existing proven software (libraries) whenever possible1.
- Ask your colleagues what they have implemented and what you might re-use or expand.
- Use a versioning system: Git
- Use git platforms like Github (https://github.com/centre-for-language-speech-technology) to share your software with the wider public. If the software has to be kept private and internal, then use our own gitlab instance at https://gitlab.science.ru.nl/ . Make use of the extra functionality these platforms offer, like issue trackers and release mechanisms!
- Document your software at the minimum level: function, input, output, external resources needed, inline documentation. If the inline documentation adheres tp specific formats, automatic tools can convert it to a Library Reference in HTML or PDF. For Python, Sphinx can automatically generate documentation from the script code 2.
- Have a look at our Ponyland wiki (this wiki) to find out which software has been installed, and use the required name spaces to make your software accessible.
- When your software can be used by others, make it Open Source. To this end we use GNU Public Licensing (GPLv3) . GPLv3 states that software may be used, modified, and integrated into other software as long as the developers are mentioned, and the new software is issued under GPL as well.
- Check with our local system administrator (admin) if the above conditions have been met; s/he must know about the software and where it can be found.
- Transfer the maintenance of the software to your supervisor when you leave.
-
Recommended Python libraries are numpy, scipy, matplotlib and scikit-learn. ↩
-
For instance: http://proycon.github.com/colibri-core/doc/. ↩