Hey ARTIQ users!

There's been some discussion at UMD recently about the *best place for device software to reside*. I call device software *both the NDSP *(network device support package, ARTIQ-specific code needed to integrate a device with ARTIQ, the /aqctl_, aqcli_, /etc files), *and the driver *software to control a specific, non-gateware, device (such as a Kinesis piezo, an AWG, etc). I've seen that @jordens has broken them into separate repositories (e.g. https://github.com/quartiq/ptb-drivers/tree/master/ptb), which can be installed via Conda/Pip; whereas others have recommended putting them in /ARTIQ_GIT/artiq/devices//.

My personal preference is to release them as a separate package, which can be installed via conda/pip, and have the ARTIQ-specific NDSP code either in that package or a separate one.

Advantage:

 * Driver *updates/fixes are not tied to ARTIQ releases*.
     o For example, a bug in //devices/lda /would require a new ARTIQ
       release to fix.
 * Allowed because ARTIQ allows you to start specific drivers by module
   (in /device_db.pyon /entry, set /"module":
   "path_to_driver_module"/), as long as the driver package is on
   /PYTHONPATH/.
 * If support is dropped from ARTIQ main branch, doesn't require
   users/driver author to refactor code or re-release module.
     o Likewise, makes driver available to people on ARTIQ 2/3 branches.

Disadvantage:

 * Easier to *re-develop a driver at multiple sites, or not to know
   that a driver exists*.
     o This could be fixed by having a central list of drivers
       somewhere (possibly manual)?

So I see 3 possible organizations (listed most to least ideal in my mind), using the example of a Thorlabs KCubePiezo because I'm looking at those now (names are just an example).

1. Drivers separate from ARTIQ, packaged with NDSP
     * ARTIQ repo
         o Unchanged
     * Driver package
         o Include both driver & NDSP.
         o Contents:
             + /kcube_piezo_driver.py/
             + /aqctl_kcube_piezo.py/
             + /setup.py//
               /
2. Driver & NDSP & ARTIQ Separate. This could be useful in some cases
   where drivers already exist but do not have ARTIQ frontends. Or if
   you want to distribute a driver beyond the ARTIQ community.
     * ARTIQ repo
         o Unchanged
     * Driver package
         o Driver only
         o Contents:
             + /kcube_piezo_driver.py/
             + /setup.py/
     * NDSP
         o NDSP only
         o Contents:
             + /aqctl_kcube_piezo.py/
             + /setup.py/
3. Driver & NDSP integrated in ARTIQ. As above, I DO NOT WANT THIS
   because ties fixes to ARTIQ releases.
     * ARTIQ repo
         * Includes Driver & NDSP
         * New contents:
             o /artiq.devices.kcube.piezo_driver.py/
             o /artiq.frontend.aqctl_kcube_piezo.py/
             o Add entry to /setup.py/

--

*Drew Risinger*
PhD Student, Electrical & Computer Engineering
Chris Monroe's Ion Trapping Group
University of Maryland, College Park

_______________________________________________
ARTIQ mailing list
https://ssl.serverraum.org/lists/listinfo/artiq

Reply via email to