wiki:SoftwareDevelopment/ProjectGuidelines

Version 2 (modified by Twan Goosen, 8 years ago) (diff)

Documentation section

Guidelines for software development in projects

This documents describes some guidelines for software development within CLARIN projects. Since such projects generally have a limited temporal scope, and the original developer(s) will often not be available for support outside the context of the project, additional care has to be taken with respect to a number of aspects that factor into the 'sustainability' of a software projects. Please note that obviously all aspects of this guideline will apply in all circumstances, and that these guidelines can be taken as best practices for any software projects.

Documentation

  • Make sure that a description of the requirements of the developed software is available. This will often be part of the project description, but this description may not always be sufficiently descriptive. Ideally, functional and technical design documents are prepared and made available.
  • Provide a description of the architecture of the software, either in prose or by means of (a) UML diagram(s)
  • Provide good quality in-code documentation. Follow the conventions associated with the language, framework or platform that you are using (e.g. use Javadoc for Java rather than just inline comments).
  • If applicable, document your API, especially if its public facing. There are tools that make this easy, such as Swagger (for Java)
  • Bundle some basic documentation with your sources 'and' distribution packages. Include at least the following: *README (brief project description)
    • INSTALL (setup and configuration)
    • LICENSE (source code licencing information)
  • Make a wiki page in the CLARIN Trac for the software project or make a section for it in another page if that is more appropriate. This page can serve as a hub to find sources and technical, administrative and other information.
  • Make use of an issue tracking system, such as the CLARIN Trac or the 'Issues' section of a GitHub repository. Make separate tickets for all known issues as well as potential enhancements. Use milestones or priorities to indicate which issues should be addressed first or which features should be included in a single release.

Implementation choices

  • Programming language(s)
  • Frameworks

Quality and integrity

  • Unit tests
  • Code review

Portability

  • Maven
  • Continous integration
  • Docker
  • VCS (GitHub)

Resources