Skip to content

Consider other build options #9

@hinerm

Description

@hinerm

Issue 1: License

Details I am 75% sure that [curvelops](https://github.com/PyLops/curvelops) is in violation of the CurveLab license. Specifically:

LICENSEE may incorporate FDCT with other source code developed by LICENSEE (Incorporated Work) for the sole purpose of using FDCT for research internal to LICENSEE and not for any other redistribution. LICENSEE may not distribute any Incorporated Work outside of LICENSEE, and specifically LICENSEE may not provide FDCT or any Incorporated Work under an open source license such as the Gnu Public License

  1. I believe curvelops is an incorporated work, as it:
  2. So curvelops probably should not be distributed, and should not be MIT licensed.

Q: Do we have any evidence that curvelops has permission from CurveLab to be distributed?

A: We have the OK for using curvelops!

Issue 2: Build complexity

Details Putting the license issue aside, using curvelops requires a lot of manual installation: * building fftw from source or acquiring the pre-built libraries (only available on windows?) * building fdct from source * building curvelops itself from source

This likely requires managing conda environments as well.

This feels very fragile to me. I am wondering what our options might be to simplify things:

  • Build scripts?
  • Containers?

It would be ideal if tme-quant worked without curvelops but directed users to install the required libraries, with any environment variable management being transparent through user configuration.

Requirements

  • This is approximately what I want the user experience to be:
    1. Download our "product"
    2. Agree to CurveLab license and download their bundle folder
    3. Run our downloaded "product". It asks them where the CurveLab download folder is (and links them to https://curvelet.org/download.php)
    4. Our "product" outputs a compiled, runnable binary

To achieve this, I think we need, at the least, a script which:

  • installs necessary required software (e.g. python)
  • Downloads and builds fftw source/binaries, curvelops source
  • Sets the environment variables approriately
  • Builds tme-quant/pycurvelets

I would like to try to go further. Ideally we would create something like a platform-specific virtual environment (e.g. docker container) that is capable of doing these steps in a controlled and consistent way: consuming the CurveLab folder from, and generating the compiled binary to,the user's local machine.

I do not know what the current container landscape is like so some exploration needs to be done here. In the past, Docker images could be annoying to set up and required extra software to be installed. Plus, file I/O between them was very annoying to configure. Ultimately we want as painless a process as we can create for the user, ideally not requiring any additional software installs or environment setup beyond the steps outline above.

A script is a great starting point since we probably can't use containers for Mac anyway. Just make sure that the script checks for existing tools (like conda) and installs them if missing.

NB: one technology I am interested in exploring here is Bilayers

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions