sidebar_position | title |
---|---|
1 |
L1 - Co-development |
import * as Responsibilities from './Responsibilities.js';
Co-development of the new virtual lab can be started when a basic virtual lab has been provisioned with the customized libraries and configurations required by the development plan and a development team is ready to work on the subject.
The development team preferably follows Agile practices to implement the components and workflows based on the development plan.
Where possible, the following should be done while building the virtual lab:
- Documentation
- Publish virtual lab metadata outside the virtual lab. This will allow others to be aware of the context of the virtual lab from an early stage.
- Track the metadata with version control, such that the changes to metadata can be viewed by virtual lab users.
- Currently, we are choosing a default metadata catalogue. For progress, see issue #275.
- Create a directory for documentation of the virtual lab.
- Track the documentation with version control.
- Start each cell in a notebook with a title.
- Publish virtual lab metadata outside the virtual lab. This will allow others to be aware of the context of the virtual lab from an early stage.
- Security
- Make sure personal tokens for APIs do not end up in version control. ToDo VLIC: Guideline for secret management #276.
- Versioning
- Pin versions of used software and libraries in the dependencies to prevent compatibility problems when updates occur to the packages and software.
- Data
- Prepare the data for scientific experiments.
- Store data that is only read by the virtual lab in an external catalogue and use an API to access this data.
- Parallelization
- Parallelize the execution of the parts of the code where this is useful. A tutorial is available here.
- Workflow
- Prepare and perform a demonstration of the virtual lab to inform the community supporter of the possibilities in the virtual lab.
The following roles should be assigned during co-development:
- Golden users: <Responsibilities.L1GoldenUser/>
- Virtual lab core developers: <Responsibilities.L1CoreDeveloper/>
- Virtual lab code reviewer: <Responsibilities.L1Reviewer/>
- Community supporter: <Responsibilities.L1CommunitySupporter/>
- Infrastructure supporter: <Responsibilities.L1InfrastructureSupporter/>
- Virtual lab coordinator: <Responsibilities.L1Coordinator/>
- Virtual research environment (VRE) development and operations (DevOps) engineers: <Responsibilities.L1DevOps/>
Two milestones should be reached during co-development:
- The publication of the metadata.
- A demonstration of a running the workflow in the virtual lab.
The lab transitions from co-development to the validation phase, when the technical development has been finished and the lab is ready to conduct the scientific experiments on the required scale. For this, at least the following criteria should be checked:
- Documentation
- [ ] The virtual lab metadata is available outside the virtual lab.
- [ ] Metadata is tracked by version control.
- [ ] The virtual lab metadata is available outside the virtual lab.
- Security
- [ ] Personal tokens are not tracked by version control.
- Versioning
- [ ] Versions of used software and libraries are pinned.
- Data
- [ ] The data is ready for scientific experiments.
- [ ] Data that is only read by the virtual lab is stored in an external catalogue.
- Codebase
- [ ] The code executes without errors: The code can be executed without errors. Currently, you can verify this by manually executing all cells in the notebook on a machine on which the code was not developed (to ensure no references are made to local resources).
- [ ] The responsibility of each cell in the notebook is clear and can be described in a single sentence.
- [ ] The coding style is consistent and follows a style guide e.g. For Python PEP 8.
- [ ] Parallel processing is applied where suitable.
- [ ] There are clear errors when expected files and objects are not found.
- [ ] External code use, such as command-line interface tools, are clearly labeled.
- Containerization
- [ ] The notebook cells can be containerized.
- Workflow execution
- [ ] The containerized cells can run without any modifications.
- [ ] It is possible to give a demonstration of the virtual lab.