Skip to content

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:

  1. 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.
  2. Use existing proven software (libraries) whenever possible1.
  3. Ask your colleagues what they have implemented and what you might re-use or expand.
  4. Use a versioning system: Git
  5. 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!
  6. 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.
  7. 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.
  8. 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.
  9. 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.
  10. Transfer the maintenance of the software to your supervisor when you leave.

  1. Recommended Python libraries are numpy, scipy, matplotlib and scikit-learn. 

  2. For instance: http://proycon.github.com/colibri-core/doc/