aiidalab / aiidalab-launch

Tool to launch AiiDAlab on a local workstation.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Do we need to make the CLI more similar to docker command with combining the purposes?

unkcpz opened this issue · comments

In fact, I think the profile concept is not very useful to end user. If we regard aiidalab-launch as a wrapper of a combination of multiple docker commands, it maybe makes sense to have the CLI command match with the docker command which are:

  • docker run -> aiidalab-launch run: to start from an image. (this will be the combination of current aiidalab-launch profile add + aiidalab-launch profile start)
  • docker stop -> aiidalab-launch stop: stop the container, it is the same from what it is now.
  • docker rm -> aiidalab-launch rm: remove the container (for aiidalab-launch case also remove the volume), this is then what I was going to achieve in this PR. It is the combination of the current aiidalab-launch reset and aiidalab-launch profile remove.

Originally posted by @unkcpz in #189 (comment)

I may have misunderstood the intention here, but I disagree with the premise that we should treat aiidalab-launch as a thin wrapper over Docker. I think we should not expect the users of this to even be familiar with Docker necessarily.

In fact, I think the profile concept is not very useful to end user.

I am confused by this. To me this is very useful, since I can separate different projects (or dev environments) easily using this. (instead of e.g. using aiida-core profiles which we don't really utilize in AiiDAlab.

Surely you need to profile to at least store the user configuration? (i.e. which image to use, port etc?) How else would you manage this? docker run is not designed around storing persistent configuration.

I do agree that the how the profiles interact with docker volumes may be confusing (I personally at first was always unsure about what the reset command does, since that name does not make it clear that it is about deleting data). But in any case I don't think we should go in the direction of requiring users to necessarily know the intricies of Docker.

I don't have a very strong opinion now, to be honest. As a developer, the profile concept is useful, for testing and development in an independent environment. But for the app user, I don't know how much it is needed, we can hold this discussion until we have more users (hopefully 😄 ) who are not app developers. Then we can collect the preferences from users to improve the interface.
But you are right, the docker solution is not a better one, and I have to admit I propose it because I am familiar with it. This is how the world works, right? People reflect their thoughts on how they treat the world based on their knowledge limitations, and I am a mediocre man so this would for sure happen to me 😄