LaboratoireMecaniqueLille / crappy

Command and Real-time Acquisition Parallelized in Python
https://crappy.readthedocs.io/en/stable/
GNU General Public License v2.0
78 stars 16 forks source link

Move most Actuators, Cameras and InOuts to a separate module #62

Open WeisLeDocto opened 10 months ago

WeisLeDocto commented 10 months ago

Rationale

As Crappy keeps growing, more and more hardware of the LaMcube laboratory is implemented. Having an always larger collection of hardware in Crappy is not desirable for several reasons :

Therefore, it would be desirable to move most of the implemented hardware to a second independent module (say crappy.collection), that would only contain code for driving hardware. Users of any horizons would be encouraged to share the code for their hardware in crappy.collection, to make it available to everyone. There would however be no guarantee that this code works, and the maintenance would be up the the person uploading the code. Broken code could be removed by crappy's developers in case it makes the entire module crash.

Implementation

This second module would be managed in the same repository, and built at the same time than Crappy (using this architecture for example). crappy.collection would likely import crappy, but the opposite would not be true. The structure of crappy.collection would be very simple, with one folder per type of object. Each folder would contain an __init__.py file, potentially where the missing modules would be managed.

Even with a second module containing the code for driving hardware, there would still be Actuators, Cameras and InOuts in Crappy. The remaining code would be for :

In summary, crappy.collection would be a code base with a permissive contribution policy, and loosely maintained by crappy's developers. It would allow users to distribute their code with Crappy, without having to match the code quality standards of the main module.

Open questions

At that point, there are still open questions about the implementation :