QILaplace.jl: tensor-network Fourier/Laplace transforms (looking for packaging & docs feedback)

Hi Julia Community,

I am a third-year PhD student with around two years of experience coding in Julia. This is my first time creating and releasing a Julia package, and I’d really love to get feedback from more experienced Julia developers and package maintainers.

QILaplace.jl is an open-source Julia package that implements tensor-network-based (Quantum-Inspired) algorithms for Discrete Fourier and Laplace-type transforms, built on top of ITensors.jl.

The underlying algorithms come from research by Noufal Jaseem et al. (arXiv paper). I joined the project later focusing on improving the performance of the original code, benchmarking it, and turning it into a tested, open-source Julia package.

Repository:

Currently, the package has:

  • Passing CI on Linux, MacOS, Windows
  • ~97% test coverage
  • Julia 1.10+ compatibility

Before I submit this to the General registry, I’d really appreciate feedback on things like:

  • Does the public-facing API feel reasonable and easy to use from a Julia user’s point of view?
  • Are the names and abstractions sensible?
  • From a community point of view, does this feel like something that would be useful to register, or are there things you think should be improved or clarified first?
  • Does the repo structure look okay for a first public package?

Documentation question

Documentation is the main thing that is still missing in this repo, and I’d especially appreciate advice here.

This is a research-heavy package. Some parts expose fairly low-level MPS/MPO details, but I’d also like the package to be usable for high-level signal-processing workflows.

I am trying to figure out:

  • How much background/conceptual explanation to include upfront
  • Whether it’s better to start with one or two simple end-to-end examples, and hide the internals at first
  • What kind of documentation structure has worked well for others working on research-oriented Julia packages

I’m planning to use Documenter.jl, but I haven’t committed to a structure yet and would really value advice before proceeding.

This package is still evolving, so any constructive feedback or suggestions, especially from those familiar with Tensor Networks or Quantum Computing, are highly welcome​:folded_hands:t2:.

Thank you in advance,
(and thanks for reading this far!)

12 Likes

Have you read through ModernJullaWorkflows? Many of the tips there will translate well to the questions you are asking here. There are many questions here, but I think there are a few I can answer already.

per Julia’s Registry GitHub: “If your package is at a stage where it might be useful to others, or provide functionality other packages in General might want to rely on, go for it!”

In my opinion, you should separate what is private and what is public. Anything that is public should have docstrings and should be included in the documentation. Its common whoever, to have an API section that gives all methods that may be relevant, but I’ve seen many strategies.

great idea. i would also recommend using Literate.jl.

2 Likes