# QueRa codebase review
https://github.com/QuEraComputing/bloqade-python
https://github.com/QuEraComputing/Bloqade.jl
Hi Roger, Kai and Philip :)
Sorry for the long wait, I've taken a look at the two repositories. I think I'll start with the good and then the shortcomings later :)
I think you did a good job towards users and customers but there is some improvements to be made towards contributors and programmers of the codebase.
I'm sure the physics theory and implementation makes up a big part of the code and it's unfortunate that the lack of my physics understanding is prohibiting me from assessing the codebase more accurately.
I hope you enjoy :)
## +
### Good support
I think the two repository does a really good job, user and customer facing wise. There is a lot of documentation and a lot of toolings, including visualization and GUI. Package managing and integration with 3rd party tool and device like CUDA seems very easy to execute.
### CI/CD
I also really like the CI/CD pipeline. The repo has testing and linting support as well as docs ci/cd. It makes me feel really safe.
Code cov is also a big plus.
## -
I'm more familiar with Python than Julia so I think the majority of the criticism will probably be within the Python codebase.
### Pauses?
I think there's some pauses on the two repository for now? For example, For bloqade.jl, at the time of inspection Feb 9 2025:
- last issue was filed in Dec 21 2024.
- Last human update on the master branch is Sep 14 2024.
- Last technical update on the master branch is Aug 5 2024. SHA d86cccca7f856fe8256305734adc4037cd587692
### Websites and docs
I think the two repository shares different websites? For python it’s https://bloqade.quera.com/latest/. For Julia it’s https://queracomputing.github.io/Bloqade.jl/dev/. It'd be nice if we can somehow consolidate the two together?
### Consolidating misc files
In bloqade-python, I see a lot of miscellaneous items like CITATION.bib or codecov.yml, maybe they can be in some misc/ folder?
### Dead files
I think there's some empty files sitting in the codebase. For example, in bloqade.py, there's a dead folder in https://github.com/QuEraComputing/bloqade-python/tree/main/src/bloqade/compiler/codegen/julia.
The .gitsubmodule file is also empty in the same repository.
### Refactoring
In `emulation_ir.py`, there’s a function called construct_rab() with (271-131+1) lines. I think there's some opportunities for refactoring here.
### Testing
A lot of tests in the repository doesn't seem to have any comments and I'm not sure what it is that we're testing for.
### Code structure
I think a nice readme on the code structure / code topology about where certain things go would be nice.
### Contributing guidelines
I think we're missing a CONTRIBUTING.md from the repo. Certain things come to mind:
- Commit messages: Do you have a guideline on how a commit message should look like?
- Code style: For python, what coding guidelines are you following, for example https://google.github.io/styleguide/pyguide.html
- How can an open source contributor build your code base, how do they fetch the dependencies.
- Typechecking and typing ci/cd: I noticed you’re using type-hinting a lot, but I don’t see any static analysis tool on these type hints?
- Testing: I think some clarifications towards the contributor would be nice: Are you testing end to end? How are you performing unit tests? What’s the general procedure to add a test? For a contributor, how are they testing your code? Are you using pytest? Or some other tooling?
# Ending
I really enjoyed reviewing the codebase :) Thank you for reading.