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