Skip to content
This repository has been archived by the owner on May 2, 2024. It is now read-only.

Rename quickstart to launch #53

Closed
kdmccormick opened this issue Mar 3, 2022 · 14 comments
Closed

Rename quickstart to launch #53

kdmccormick opened this issue Mar 3, 2022 · 14 comments
Assignees
Labels
enhancement Relates to new features or improvements to existing features

Comments

@kdmccormick
Copy link
Collaborator

kdmccormick commented Mar 3, 2022

Context

tutor <mode> quickstart is a very useful "one-click start" command that performs a variety of sub-tasks:

  1. Checks RAM allocation.
  2. tutor <mode> upgrade: performs a release upgrade if applicable.
  3. tutor config save --interactive: runs an interview to get some basic config values and saves them.
  4. tutor <mode> stop: stop any existing platform.
  5. tutor <mode> dc pull: pull new images.
  6. tutor <mode> start: brings up service containers.
  7. tutor <mode> init: runs initialization scripts (migrate, make service users, etc).

I assume that quickstart in this context refers to "getting started quickly". However, the presence of the start command muddies this: quickstart sounds like it'd be an simplified version of the start command, where in reality it runs start plus a lot of other stuff.

@regisb, what would your thoughts be on changing either quickstart or start? Ideas:

  • instead of quickstart:
    • setup
    • quicksetup
    • initstart
    • provision
    • go
    • launch <- winner
  • instead of start:
    • up
    • serve

I know this would be a fairly major CLI change, so I understand if you'd rather leave it as-is.

(Discussion continued below)

Acceptance

  • In time for Olive (released 2022-12-09):
    • Rename quickstart command to launch.
    • Update Tutor documentation.
    • Search for quickstart across the overhangio GH organization. If quickstart is referenced in any other Tutor repos, update them.
    • Temporarily alias quickstart to launch for backwards-compatibility. Mark quickstart as deprecated and warn users that launch should be used instead. Prior art: runserver is deprecated in favor of start
    • Create a new issue to remove quickstart in a following release (Palm, perhaps?)
    • Announce the change in the forums and Slack.
@kdmccormick kdmccormick added the discovery Pre-work to determine if an idea is feasible label Mar 3, 2022
@kdmccormick kdmccormick moved this to Ungroomed (Régis) in Tutor DevEnv Adoption (OLD BOARD) Mar 3, 2022
@regisb
Copy link

regisb commented Mar 14, 2022

Ned raised a similar point in the forum: https://discuss.overhang.io/t/confusing-instructions-during-upgrade/2281/6
It's quite possible that the "quickstart" name is not very adequate -- I would attribute that to the fact that English is not my native language. But I failed so far to find a better alternative. Among your suggestiong, I like "setup" best.

  • "quicksetup", "initstart": first time I see these terms.
  • "go": too abstract.
  • "provision": inaccurate (provisioning is "init" and it's only a part of "quickstart").

I think that we could keep "start". People immediately understand that "start" is the opposite of "stop". These verbs are simpler than "up/down". But you make a good point when you say that "quickstart" sounds like it's only a part of "start". I guess maybe we could go with "setup". I should sleep on this.

@kdmccormick kdmccormick moved this from Ungroomed (Régis) to Ungroomed (Kyle) in Tutor DevEnv Adoption (OLD BOARD) Mar 17, 2022
@kdmccormick
Copy link
Collaborator Author

From the forum post you linked @regisb , I found these excepts illuminating:

nedbat: To my ears, “quickstart” is something I would only run once per installation, at the very beginning. Is “start” in quickstart supposed to mean “start using Tutor” (what I thought), or “start the server”?

regis : The idea behind quickstart is that it’s the one and only command that most users should have to know about. There should be just one idempotent command, both for installing and upgrading.

What I read here is that quickstart is meant to be an all-purpose, beginner-friendly way of standing up Tutor. The answer to @nedbat's question above would be "both", in that:

  • You run it once when you first start out.
  • You can also run it over and over again in the future in order to start your instance while safely ensuring that it is provisioned and upgraded.

(On the other hand, start, much like upgrade is a subset of the quickstart command, and is aimed at more advanced users.)

I agree that setup is the only reasonable suggestion I put forward. Even so, I wonder if setup carries an implication of being something that you run once and should be run never again.

@kdmccormick
Copy link
Collaborator Author

kdmccormick commented Mar 17, 2022

Here's one more idea, which I admit is a little extreme, but I'll put out there for the sake of the discussion (EDIT: I realize in my next comment that this is a bad idea):

Merge both commands into one big start command, with the following semantics:

  • If config.yml doesn't exist yet or if --setup was provided, then do what quickstart does today. That is:
    • Run the tutor config save --interactive interview.
    • If the platform is out-of-date: Ask if the user would like to upgrade.
    • Pull images.
    • Stop any existing platform.
    • Start the platform.
    • Run initialization scripts.
  • Else if --initialize was provided:
    • Pull images.
    • Stop any existing platform.
    • Start the platform.
    • Run initialization scripts.
  • Else if --pull was provided:
    • Pull images.
    • Stop any existing platform.
    • Start the platform.
  • Else:
    • Just start the platform.

Under this system, first-time users would only need to run:

tutor <mode> start

After first-time setup, users would be able to use variations of start depending on what they needed to accomplish:

tutor <mode> start               # just start containers
tutor <mode> start --pull        # (re)start containers with fresh images
tutor <mode> start --initialize  # start+provision containers with fresh images
tutor <mode> start --setup       # re-run full idempotent setup (interview, upgrade, pull, provision, start)

@kdmccormick kdmccormick moved this from Ungroomed (Kyle) to Ungroomed (Régis) in Tutor DevEnv Adoption (OLD BOARD) Mar 17, 2022
@kdmccormick
Copy link
Collaborator Author

kdmccormick commented Mar 17, 2022

Okay, now that I've typed that ^ all out, I realize that it would be seriously confusing for a first-time user if they ran tutor local start, filled out an interview, but then exited before initialization scripts were run. Since a config.yml would have been generated, their subsequent run of tutor local start would not perform initialization, for reasons completely mysterious to a new user.

I am back to thinking that there need to remain two separate commands.

@kdmccormick kdmccormick moved this from Groomed to Ungroomed (Régis) in Tutor DevEnv Adoption May 17, 2022
@kdmccormick kdmccormick moved this from Ungroomed (Régis) to Groomed in Tutor DevEnv Adoption May 17, 2022
@kdmccormick kdmccormick moved this from Backlog to Next Up in Tutor DevEnv Adoption Jun 23, 2022
@kdmccormick kdmccormick self-assigned this Jun 29, 2022
@kdmccormick kdmccormick moved this from Next Up to In Progress in Tutor DevEnv Adoption Jun 29, 2022
@kdmccormick
Copy link
Collaborator Author

After letting this sit for a month...

I still think quickstart obscures the fact that it's essentially an idempotent setup command, and is a superset of both init and start. I think setup is clearer in those regards.

At this same time, setup is a boring name in comparison. quickstart sounds more exciting, and highlights the fact that Tutor helps you quickly & easily get started with Open edX. This might seem like superficial reasoning, but this command is many folks' first ever exposure to Tutor & Open edX, so superficiality is worth something.

Given that, my new proposal is: tutor ... launch.

  • it sounds like something you would do first, but also might do again in the future
  • it sounds like a more involved version of start
  • it hints to the fact that includes initialization steps (init)
  • it's more exciting than setup

@regisb What do you think?

@regisb
Copy link

regisb commented Jul 4, 2022

It's a little difficult for me to have a strong opinion on that nomenclature, as I'm limited by my own knowledge of English. All I can say is that I like "launch". The only problem I'd have is that "launch" is a little to similar to "start" in my own understanding -- but that's a very weak opinion, and it's probably unfounded.

I'd like to drag other people into this conversation, and in particular @nedbat who was the first to voice his concern about the "quickstart" command. Would it be clear to you what tutor local launch does? (i.e: an idempotent command that configures Open edX, starts a local platform and run initialization scripts)

@kdmccormick kdmccormick moved this from In Progress to Blocked in Tutor DevEnv Adoption Jul 14, 2022
@nedbat
Copy link

nedbat commented Jul 29, 2022

I like that "launch" won't be confusing the way "start" is. You can both start a project and start a server. And while you can launch a project, it's a ceremonial thing that wouldn't be used as the name of a command.

Are we overlooking the simpler "run"?

@kdmccormick
Copy link
Collaborator Author

Thanks @nedbat .

I like that "launch" won't be confusing the way "start" is. You can both start a project and start a server. And while you can launch a project, it's a ceremonial thing that wouldn't be used as the name of a command.

We wouldn't be renaming "start"; we'd be renaming "quickstart". Does that change your comment, or am I misunderstanding you?

Are we overlooking the simpler "run"?

"run" has its own meaning. For reference, the existing relevant tutor local ___ commands are:

  quickstart        Configure and run Open edX from scratch (nb: superset of both "init" and "start")
  init              Initialise all applications
  start             Run all or a selection of services.
  restart           Restart some components from a running platform.
  reboot            Reboot an existing platform
  stop              Stop a running platform
  exec              Run a command in a running container
  run               Run a command in a new container

@nedbat
Copy link

nedbat commented Jul 29, 2022

Oops, sorry, I had forgotten the context and misunderstood the proposal. Honestly, it's hard to find an existing word that easily conveys all of the things that quickstart does. I think "launch" is a novel enough word in this context that people will be less likely to jump to the wrong conclusion about it, so it's an improvement. It will still require continual education though, because of the unusual nature of the operations.

@regisb
Copy link

regisb commented Jul 29, 2022

I think we are all in agreement here, so it's "go for launch" 🚀 We should make this change in Olive.

@kdmccormick kdmccormick changed the title Clear up potential terminology confusion: 'quickstart' vs 'start'? Rename quickstart to launch Aug 3, 2022
@kdmccormick kdmccormick moved this from Blocked to Backlog in Tutor DevEnv Adoption Aug 3, 2022
@kdmccormick
Copy link
Collaborator Author

Great! I added an acceptance criteria.

@kdmccormick kdmccormick added enhancement Relates to new features or improvements to existing features and removed discovery Pre-work to determine if an idea is feasible labels Sep 6, 2022
@kdmccormick kdmccormick removed their assignment Sep 8, 2022
@Carlos-Muniz
Copy link

@kdmccormick I'd like to take this issue on!

@kdmccormick kdmccormick moved this from 📋 To Do to 🛠️ In Progress in Tutor DevEnv Adoption Sep 19, 2022
@kdmccormick
Copy link
Collaborator Author

@Carlos-Muniz it's all you! Please just make the change on the nightly branch so that this change does not go out until Olive.

@kdmccormick
Copy link
Collaborator Author

Completed on Nightly.

Repository owner moved this from Ungroomed (Régis) to Closed in Tutor DevEnv Adoption (OLD BOARD) Oct 5, 2022
Repository owner moved this from ⚠️ Blocked/Review to 🚀 Closed in Tutor DevEnv Adoption Oct 5, 2022
Repository owner moved this from In Progress to Done in Axim Engineering Tasks Oct 5, 2022
@jmakowski1123 jmakowski1123 moved this to Done - To ship in future Named Release in Open edX Roadmap Oct 6, 2022
@jmakowski1123 jmakowski1123 moved this from Done - To ship in future Named Release to To ship in Olive in Open edX Roadmap Oct 6, 2022
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
enhancement Relates to new features or improvements to existing features
Projects
None yet
Development

Successfully merging a pull request may close this issue.

4 participants