# Development and contributing guidelines ###### tags: `Development` Summary of the general flow for development coordination within the AiiDAlab project. ## Meetings There are three different kinds of meetings (outlined) below, the regular development meeting is scheduled every two weeks and can be accessed via Zoom at: https://epfl.zoom.us/j/65206247396?pwd=RitHRGUrMHM5SDF5YkVqc25yRFRrdz09 Password: The regular AiiDAlab development meeting is scheduled every two weeks and is used In general, there are two *regular* meetings, additional meetings to discuss specific topics are scheduled on-demand. ### Development meeting A biweekly meeting with the primary purpose to coordinate development and re-assign or re-prioritize specific issues. All contributors who are actively developing AiiDAlab components (or related software) are invited to attend. Agenda: 1. Review the [*Roadmap*](https://github.com/orgs/aiidalab/projects/7/views/2) project board. 2. Review *non-development* tasks. 3. Additional technical discussions if needed. ### Planning meeting A meeting to be scheduled *on-demand* with the primary purpose to plan long-term development, that means identifying and prioritizing larger projects and milestones. All contributors with interest in discussing the AiiDAlab strategic development are invited to attend. 1. Review the [*Roadmap* project board](https://github.com/orgs/aiidalab/projects/7/views/2). 2. Technical discussions if needed. ### Special topics A meeting to be scheduled *on-demand* with the primary purpose to discuss special topics, e.g., feature design or discussing technical details of a particular implementation. ## Development Flow 1. Every non-trivial development work should be linked to an issue on the related repository. 2. The issue description should ideally follow the "user story" format (see below). 3. Larger efforts that are expected to take more than one week, a) Add them to the *Roadmap* project board. b) Break them down into tasks by adding a checklist to the issue description. c) Create a dedicated [GitHub project](https://github.com/orgs/aiidalab/projects?type=beta) using the *Feature* template. ### User story format > As a [user/developer/PI/etc.] I want to [something], so that [outcome]. Examples: - As a *user*, I want to *use the JupyterLab interface as the primary AiiDAlab interface*, so that *I can use AiiDAlab with a more familiar and responsive interface*. - As a *developer*, I want to *adopt JupyterLab as the primary interface for AiiDAlab* to *avoid using deprecated technology for a core component and to reduce maintenance cost*.