-
Notifications
You must be signed in to change notification settings - Fork 0
Install nightly branches of official plugins when using Tutor Nightly #41
Comments
@regisb This one's ready for your input now. |
I agree that the installation procedure of tutor-nightly is too complex. In my opinion, the main source of complexity is the installation of plugins. I might be wrong, but I think that developers are ok with installing from a cloned repository, in most cases. But having to So I suggest the following:
We would replace every line from plugins.txt in the nightly branch by Would that be acceptable? I'm not so excited by the idea of publishing releases from the nightly branch to pypi. The main reason for that is that the nightly branch follows a "rolling release" pattern, where new changes can be pushed frequently to the nightly branch. Usually, when a release exists, it keeps working for some time. But in the case of the nightly branch, it would not, because edx-platform (and other IDAs) would keep changing and their master branches would no longer be current. |
This looks great.
True. And to your point, devstack always required a clone too. So, with plugin installation simplified, there won't be anything net-new here.
I hadn't though about this but it makes sense. Let's go with your suggestion, and if we find there's still too much friction then we can reassess later. |
Fixed by overhangio/tutor#626, which is ready for review. |
Context
Installing Tutor "Stable", along with all the official plugins, involves one command:
Installing Tutor Nightly, on the other hand, involves some virtualenv and repository management:
plus an additional step for each plugin:
Would it be worth simplifying the installation process for Nightly?
Ideas (see issue comments for discussion)
[REJECTED] Allow Tutor Nightly to be installed from PyPI
I can think of a few different ways to do this:
-nightly
releases of tutor to PyPI alongside stable releases. By doing this,pip install tutor
would still install Tutor Stable, butpip install --pre tutor
would install Tutor Nightly.-nightly
tutor release. This is an extension if idea 1 that would allow users to instead typepip install tutor-nightly
.tutor
binary. In this case, we would push nightly releases under a separate PyPI project name, with no dependency between the tutor and tutor-nightly packages. Unfortunately, we would have to account for users installing both tutor and tutor-nightly side-by-side. How would a system decide whethertutor
refers to the Stable or Nightly installation? Well, since they would both expose thetutor=tutor.commands.cli:main
console_scripts entrypoint, which setuptools handles by writing a script to$venv/bin
, whichever package was installed more recently would "win".tutor-nightly
binary. This is the same as idea 3, but it avoids the binary name conflict by just using a different name. Usingtutor
would always refer to Tutor Stable. I don't like this idea, but I'm including it for completeness.[ACCEPTED] Enable one-line installation of official plugins in Tutor nightly
Official plugins are installed with Tutor Stable when the user types
pip install tutor[full]
. This doesn't work with Nightly because the extra requirements from[full]
are constrained to the latest stable release of each official plugin.I think it would be good if the full Nightly installation depended upon either
-nightly
releases of each plugin or even just a-e git+https://github.com/...
pin. This change could be made on Tutor'snightly
branch. Alternatively, if we went with the tutor-nightly meta-package idea, the Nightly plugin pins could be specified just in the meta-package's setup.pyTogether with the Nightly PyPI Release idea, the installation process for a Nightly user would become:
or:
Acceptance
Replace every line from plugins.txt in the nightly branch by
-e git+https://github.com/overhangio/tutor-pluginname@nightly
. Thus, runningpip install -e ./tutor[full]
would effectively install all plugins from the nightly branch.The installation process would become:
The text was updated successfully, but these errors were encountered: