Questionnaire about development workflows for MXCuBE: coding, testing, deployment, collaborating, etc.
It would be interesting if each facility could share how they handle those topics. This way we can compare experiences, learn from each other, identify common pain points, and collaborate better on MXCuBE.
All questions (besides the first two initial questions) are optional, feel free to skip any question.
All questions expect free text answers, feel free to expand on some questions if you feel it is necessary.
Each section has an "additional comments" question, feel free to use it if the other questions do not correspond to what you want to write.
-
Which facility?
-
Which beamlines?
-
What is the software stack?
Web or Qt (PyQt version, etc.), LIMS (ISPyB/EXI, ICAT, etc.), file formats (HDF5, CBF, etc.), real-time image viewer (Albula, Braggy, etc.), autoprocessing workflows, and so on
How much developer resources do you have?
-
How many people work on MXCuBE?
-
How many are software developers?
-
How many beamlines with MXCuBE do they have to take care of?
-
How many hours can they dedicate to working on MXCuBE?
In total. Per week, month, or year.
-
Do you have any additional comments?
How do you code for MXCuBE?
-
How far can you get coding locally using your computer or laptop only?
-
How often do you need to go directly at the beamline to code (not test)?
-
How do you learn about the inner workings of MXCuBE?
Is it enough to read the code?
-
Do you have any additional comments?
How do you collaborate on MXCuBE code?
-
How do you keep up to date with upstream changes on GitHub?
-
How often do you integrate upstream changes?
-
Do you only cherry pick specific changes?
For example important bug fixes only.
-
Do you have your own forks of MXCuBE repositories?
If yes, do you use GitHub, GitLab or anything else like this? Are these forks publicly accessible?
-
How often do you contribute your improvements back to upstream GitHub?
-
How confident do you feel using the collaboration tools?
For example: git and GitHub, pre-commit hooks, linting tools, formatters, and so on.
-
Do you have any additional comments?
How do you test new MXCuBE code?
-
How do you test new code?
-
Do you use simulated devices (Tango, Epics, etc.) to test hardware objects?
-
What limitations or hurdles do you encounter when testing with mockup hardware?
Compared to real hardware.
-
Do you have procedures for automated tests?
For example in a CI/CD toolchain.
-
Do you have any additional comments?
How do you deploy new MXCuBE code?
-
Do you use isolation environments for Python?
Do you use conda environment? Do you standard Python environment (venv, virtualenv, or Poetry)? Do you use Docker containers?
-
How do you install Python dependencies?
Do you install Python dependencies with conda, Poetry, pip?
-
How do you install JavaScript dependencies?
-
What operating systems do you deploy on?
- Linux or something else? Which distribution? Which version?
- Free choice or imposed by guidelines?
- Centralised or local management (update cycle/package installation)?
-
Do you have infrastructure restrictions for deployment?
- Does you infrastructure/IT team restrict what you can use? Policies?
- License restrictions?
- Network restrictions?
- Can you use Anaconda?
- Do you have access to conda channels (package repositories), PyPI, npmjs.com?
-
Do you have access to specific infrastructure services?
- Do you have your own custom conda, PyPI, npm repositories?
- Do you use Kubernetes, Ansible, or anything like that for deployment?
-
Do you have any additional comments?
-
What are recurring pain points regarding MXCuBE development workflows?
In terms of coding, testing, deploying, collaborating, etc.
-
What do you think could be improved regarding MXCuBE development workflows?
In terms of coding, testing, deploying, collaborating, etc.
-
Do you have any additional comments?
Thank you for participating in this questionnaire.
Hopefully this will help us compare experiences, learn from each other, identify common pain points, and improve collaboration on MXCuBE.