This is a snapshot of Indico's old Trac site. Any information contained herein is most probably outdated. Access our new GitHub site here.
wiki:Dev/DevPractices

Development Practices

1. Basics

  • Common Principles
    • First, learn Indico development style and workflow, then develop your module.
    • Follow and keep Indico layers: Main core, rh, pages, wcomponents, services.
    • As usual, no need to reinvent the wheel;
    • There's a library that does it? Use it (unless the cost of using it is higher than that of doing it yourself);
    • Use known ​design patterns as much as possible - patterns are a common language that allow us to better communicate ideas, and programming languages and libraries tend to follow them as well;
    • If it's not obvious, add a comment;
    • Use UTF-8 as encoding by default for every single file.
    • Follow our naming conventions.
    • Please, don't commit any trailing white spaces (see Dev/GitWorkflow)! If using Eclipse, AnyEditTools can help to remove trailing white spaces in all kind of test files.
  • Python
    • Use always 4 white spaces instead of TABs!
    • Use consistent names for variables.
    • Comment always your classes and methods, even if they look trivial for you.
    • Use comments whenever you feel that people will not find out what a particular segment of code does just by reading it.
    • Try to follow the ​PEP08 when formatting your Python code.
      • Exception: historically variable names in Indico's Python are camelCase instead of using lower_case_with_underscores. The current development team still likes camelCase.
    • Speak Python ​language
    • Got new code? ​Pylint it before adding it to the repo.
    • There are several tools for Eclipse than can help you to properly format your code and use Pylint, see PyDev formatter and Pylint with PyDev.
  • JavaScript
    • ​jslint your files as often as possible. It helps you prevent a lot of stupid mistakes. Emacs users have a nice ​jslint mode for that. Or see this guide to use jslint from Eclipse.

2. Version Control

Check the Git Workflow page.

3. Security

​75551 contains a presentation on the topic. Most of it is described by the Security Guidelines

If you are working at CERN, we strongly recommend you to follow the course ​Developing secure software

4. HTML Specific Rules

Have Indico 100% HTML4.01 compliant (so far, this is an utopia for Indico...)

5. User Interface guidelines

See the User Interface Guidelines page.

Last modified 19 months ago Last modified on 03/19/14 17:34:25