Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Simplify the upgrade experience of Spin, templates and plugins #1149

Open
mikkelhegn opened this issue Feb 15, 2023 · 3 comments
Open

Simplify the upgrade experience of Spin, templates and plugins #1149

mikkelhegn opened this issue Feb 15, 2023 · 3 comments

Comments

@mikkelhegn
Copy link
Member

With the recent upgrades to Spin, js2wasm, and templates, I feel the upgrade experience for all the different components have become complex to manage.

As an example I wanted to test new JS SDK features in 0.8.0, and I had to run three upgrade commands to get the tools:

  1. Upgrade Spin using the install script. It's the same as a fresh install.
  2. Upgrade templates. Running one command to upgrade templates from the JS SDK repo.
  3. Upgrade the required plugin. In this case it was 'js2wasm'.

With more plugins coming (#1118 and #1129 as examples) and templates moving to more disperse places #1046, this will not be less complex going forward.

I don't have a good proposal for how to fix this, but I'd like to propose a few ideas, that Spin could benefit from to make this better:

  1. All things versioned (Enables the user to see what's on my machine. Enables an tutorial / demo author to note and what's required to complete this - e.g., Spin vXYZ, Template XYZ vXYZ and plugin XYZ in vXYZ). Record template install version for flagging upgrades #1126 Is referring to this for templates.
  2. Introduce a single command to get latest. E.g., Latest Spin, installed templates and installed plugins. For anyone trying out, or returning after a while, this would make it easier if wanting to test new features.
  3. Single command to get versions of what's installed. Today I have to run three commands to see versions of what's installed (spin -V spin plugins list and spin templates list). All of these commands are inconsistent in how they tell you about versions. First one show the installed version, second shows no version and third shows all versions available (not only installed).

There might be more scenarios or considerations to simplify this end-to-end. Hope to get good comments and ideas.

@itowlson
Copy link
Contributor

I definitely agree with the goal here but I want to highlight that not being monolithic is intentional - we want to see an ecosystem of components, plugins, and templates, and we cannot control their release cadence. That is of course no excuse for inconsistency or for lacking a centralised view of "what do I have and is it up to date." But it needs to work with the assumption that everything is moving at different times and at different paces.

(That is not inconsistent with having an "upgrade the world" command - just that the "upgrade the world" command needs to presume that the world is heterogeneous.)

@lann
Copy link
Collaborator

lann commented Feb 17, 2023

$ spin doctor
Checking for a new Spin release...
*** You're on the latest Spin release!

Checking for plugin updates...
!!! Plugin 'js2wasm' has an update available (0.1 -> 0.2).
!!! Plugin 'fermyon-cloud' has an update available (1.0 -> 2.0).

Would you like to upgrade these plugin(s) now? [y/N] No
OK; you can update plugins at any time with `spin plugins upgrade`.

Checking for template updates...
...

@mikkelhegn
Copy link
Member Author

And maybe a way to declare the plugins and templates you want with your Spin install, and make that the base for an "upgrade my world" / "install/restore my world" experience. There must be good and bad examples out there for how other eco-systems does this :-)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
Status: 📋 Investigating / Open for Comment
Development

No branches or pull requests

3 participants