Replies: 7 comments 1 reply
-
Hi @timoML, thank you for this thread. I indeed raised the issue because I think standardization of modules (ie. interfaces) is very important as it is the keystone that enable sharing complex logic and GUI modules. Regarding the three options you list, I would like to express my personal opinion. The problems of option 1The problem with option 1 is that interfaces generally come with other stuff like dummy modules (so we can add them too but it's a slippery slope). The problems of option 3In option 3, anyone who wants the basic features needs to keep up with "iqo-modules", which might be confusing for people from other fields who just want a couple of feature like PID and switch GUI. Also it force the developers of "iqo-modules" to be extra careful in the review of the code changes as these might affect people in other labs. Sometimes it's nice to be able to do quick and dirty code and not having everybody pulling this changes ! The benefits of option 2Option 2, where some generic modules (used across many community) form a "base" repository, offers some nice advantages.
To be exhaustive I should discuss the problem of this option : The problems of option 2It adds a layer of qudi which might be confusing, and needs to be well integrated with the rest of the code. In the end I would vote in favor of option 2. What is a generic module ?It's obviously hard to define what is generic and what is specific. Maybe giving a single definition is not necessary.
Ongoing interfaces that would end up in the qudi-base :
What changes would be needed ?Instead copy/pasting all chosen interface/modules from the old qudi to the new, it could be interesting to gradually add them if/when they strictly follow a set of guidelines agreed upon. Sorry for the long post ! Alrik |
Beta Was this translation helpful? Give feedback.
-
I understand this issue as follows. Aim:
To think what 'external' people are, I review the roles of qudi. Roles of qudi
They can be roughly classified into the following. Classifications of roles
Based on this, I classify the people as Type of people (what they want to use)
My ideaAs a physicist, I also hope that qudi is as general as possible, but in reality it is very hard to make qudi for all the physicists. |
Beta Was this translation helpful? Give feedback.
-
After the replies of Alrik and Takuya I don't have any real new thought to add. I agree with their opinion that option 2 is probably the best way. When thinking about the content of a "qudi-basics" repository, I would suggest that modules fulfilling one or better all of the following points should be included (at least partially mentioned already above):
I am not able to classify all the modules under these points, but I assume they give space for discussion. I would furthermore support the idea of creating a centralized documentation (probably somewhere in the "qudi-core" repo) where detailed information to all qudi-module-repositories is listed. This would include all available repositories, not only from Ulm IQO but anyone else contributing to qudi. |
Beta Was this translation helpful? Give feedback.
-
Personally, I prefer option 1. I think of the interfaces as some sort of 'hardware abstraction layer'. As such, there is good reasoning to split them from the implementing logic:
Also, I'm sceptical of splitting the interfaces into "generic" and "non-generic" ones. I think this depends too much on the viewpoint of certain users. At least for now, it's also few enough interfaces to maintain them and keep an overview over all of them in the same place (this might change over time). |
Beta Was this translation helpful? Give feedback.
-
I agree with @timoML on his last thoughts on option 1, especially when it comes to the longevity (hopefully) of the interfaces. However, that would then also mean, there is a third git repo to keep updated and track, right? Or would that be reside in some future "measurement module addon - blueprint" repo then? One last thought regarding the interfaces in a seperate repo would be, that one/we would need to kick it up a notch regarding their documentation also with respect to expected behavior of the hw methods (block until done, etc ... ). When I was playing around with some of the modules recently, I think I would have been completely lost without the dummy implementation. |
Beta Was this translation helpful? Give feedback.
-
I will address the main points that come to my mind when looking at the different options. Option 1: Option 2: Option 3: One more thing, is Option 1 and Option 2 mutually exclusive or could we have both? |
Beta Was this translation helpful? Give feedback.
-
Thank you all for the valuable input.
The only way I see to combine these two requirements is a proper deployment (OS dependent executables, e.g. windows installer) of |
Beta Was this translation helpful? Give feedback.
-
The next qudi release will allow to easily write and install custom packages (containing eg. guis, logic, hardware) on top of the bare qudi core. An example is the iqo-modules repo that bundles the toolchains Ulm IQO is using for our solid state color centers research.
The question open for dicussion here is: How to structure the main qudi repos for good maintainability while making it easy for external people to contribute?
As of now, all the hardware interfaces live in the iqo-modules repo. As @alrik-durand pointed out correctly, such a structure might cause fragmentation in the future if people outside the color center community start to create their own packages.
While they might not need iqo logic or toolchains, they inconveniently need to check out (and keep up-to date) the whole iqo-modules stuff with the current repo structure, if they want to use the hardware interface. At the same time there is a huge insenstive - namely standarization - to keep hardware interfaces aligned.
Currently, the IQO maintenance team sees three options to address the issue:
Any completly new thoughts or opinions on the above options are highly appreciated!
Beta Was this translation helpful? Give feedback.
All reactions