Skip to content

Docs: policy for supported tools and dependencies #7859

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

Closed
wants to merge 16 commits into from

Conversation

stsewd
Copy link
Member

@stsewd stsewd commented Jan 22, 2021

Ok, I think this should be ready.

I didn't list six, since it was added just as a workaround #7717

Let me know what you think about the dates and the process.

I didn't put an end of date for some internal deps, but I think we should decide on one (or at least put all those under a feature flag and all projects before that date will use it)

@stsewd stsewd marked this pull request as ready for review January 25, 2021 23:48
@stsewd stsewd requested a review from a team January 25, 2021 23:52

Conda:
Miniconda2 ``4.6.14``
(could be updated to use the latest version by default).
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think we can start sampling more projects to use update_conda_at_startup, we have noticed that this solves some OOM errors, and it's faster :)

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yeah. However, we have found also that sometimes a conda upgrade broke the build. So, there is some tradeoff here.

I think the best solution here is to continue the path towards mamba.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't think we should push to mamba as a replacement for conda, it should be an option. We already update pip on each build, if conda breaks is probably temporary and not so usual.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It's true we update pip. However, pip is way more stable than conda in our experience 😄

Copy link
Member

@humitos humitos Apr 7, 2021

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Another difference between upgrading pip and conda is that conda could take a lot of time to update.

Comment on lines +82 to +95
mock:
``1.0.1`` (could be removed in the future).

pillow:
``5.4.1`` (could be removed in the future).

alabaster:
``0.7.x`` (could be removed in the future).

commonmark:
``0.8.1`` (could be removed in the future).

recommonmark:
``0.5.0`` (could be removed in the future).
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think we should put all these under a feature flag to stop installing them on new projects.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I agree.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think we should remove all these optional ones at the same date for new projects.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can we replace all occurrences of "could be removed in the future" with a set date? That will make this policy easier to publish.

Following this, there are definitely some action items to pick. For instance, adding warnings in build logs and contacting users directly. But I think it's fine to start with a nice coherent policy.


* - ``2.7.x``
- Jan 01, 2020
- Nov 31, 2021
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is overdue... but we didn't have this policy before... so

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It's also a huge change, and will likely still lead to a lot of yelling.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Did this happen?

Copy link
Member

@humitos humitos left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This looks good to me. I'd like to talk a little more about some topics and make some adjustments before merging. I like the idea of having these policy, tho. It will help us to organize ourselves and have better communication to our users.

I don't think we should offer extended support for any version (Python or package) after their own EOL. I'm fine if they keep working for a while after their own EOL, but I don't think we should compromise ourselves.

I assume that all the dates listed here are suggestions. What did you base on to define them? For example, it says we will support old Sphinx versions (some <2.x) for some more years.

I also think we should have a plan to communicate users when we are about to reach the end of support date. Find out what projects are pinning these dependencies reaching EOL and communicate them via email, for example.

It could be good have a closing paragraph explaining "What to do?" if any of your projects have reached (or is about to) the EOL date.


* - ``3.x``
- Apr 5, 2020 / ???
- 5.0 is released or later/early
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What does "or later/early" mean? It seems like we don't really know 😄

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is a date that isn't decided yet, but are aiming to 5.0, but something can happen, and we should be ready to stop supporting this version or keep supporting it.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This should be clarified in some manner in the policy.

@stsewd
Copy link
Member Author

stsewd commented Jan 26, 2021

I assume that all the dates listed here are suggestions. What did you base on to define them? For example, it says we will support old Sphinx versions (some <2.x) for some more years.

On the three points defined in the document: release date, latest update, usage (this mainly on our current pinned versions, since there isn't an easy way to query what versions users are using).

I don't think we should offer extended support for any version (Python or package) after their own EOL. I'm fine if they keep working for a while after their own EOL, but I don't think we should compromise ourselves.

This is offered for our users on .com, this is similar to what ES cloud does. As they are paying us for support, I think it makes sense. For the community side, having a grace period should be good as well, some users may forget about any notice or not be around for some time.

I also think we should have a plan to communicate users when we are about to reach the end of support date. Find out what projects are pinning these dependencies reaching EOL and communicate them via email, for example.

Don't think it is useful to get the exact data (this is even complicated as we would need to parse all builds in storage). Having an email sent to everyone should be just fine, and publishing a blog post when a date is close.

stsewd and others added 2 commits January 26, 2021 09:50
@stsewd stsewd mentioned this pull request Feb 2, 2021
* - ``1.8.x``
- Sep 12, 2018
- Mar 10, 2019
- Nov 31, 2022
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Just noting for others: this date is dependent on deprecating Python 2.7 first. Sphinx>=2 requires Python>=3.5. A year seems like a good amount of lead time for projects to make the switch.


sphinx-rtd-theme:
Projects created before October 20, 2020 (January 21, 2021 for :doc:`/commercial/index`) use ``0.4.3``.
New projects use the latest version.
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm not sure about not installing the theme in the future as well. Like, it's an external dependency, but it's a "core" product as well.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yea, not sure what is best here. I think we can probably just not install it and let users handle it?

Copy link

@Gallaecio Gallaecio Apr 7, 2021

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Not installing it means fixing the “what happened?” issue when you find out that the rendering of your documentation locally does not match what Read The Docs shows.

However, it’s a great theme, and if it’s not installed by default, it will be somewhat harder for people to discover it, or at least it will become less popular due to people tending to leave whatever is default.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@Gallaecio we are trying to do less "magic" for users in favor of being more explicit and having reproducible builds locally. In this case users would need to add the theme to their requirements, we would update or add guides to help users with this.

Copy link
Member

@ericholscher ericholscher left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This looks like a great start of a policy. Excited to discuss it more tomorrow 👍

---------------------

Our policy defines how long a given tool or dependency is considered supported.
Read the Docs will contact all users when an end of support date is close,
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Do we have the ability to do this? I don't think we store versions of these anywhere.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

For python I think we can do it, for the other versions is complicated yeah, maybe just communicate this in our newsletter now that we have one :D


sphinx-rtd-theme:
Projects created before October 20, 2020 (January 21, 2021 for :doc:`/commercial/index`) use ``0.4.3``.
New projects use the latest version.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yea, not sure what is best here. I think we can probably just not install it and let users handle it?

Comment on lines +82 to +95
mock:
``1.0.1`` (could be removed in the future).

pillow:
``5.4.1`` (could be removed in the future).

alabaster:
``0.7.x`` (could be removed in the future).

commonmark:
``0.8.1`` (could be removed in the future).

recommonmark:
``0.5.0`` (could be removed in the future).
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think we should remove all these optional ones at the same date for new projects.

We guarantee that these dependencies will work with all current supported versions of our tools,
you don't need to specify them in your requirements.

- readthedocs-sphinx-ext
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This should link to the repo.

* - ``1.7.x``
- Feb 12, 2018
- Sep 5, 2018
- Nov 31, 2022
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Are these the .org or .com EOL? We should probably keep them the same, TBH, and just handle case-by-case users as we need to.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

These are .org. I'm fine having the same date. I was thinking more about support requests than compatibility support.


* - ``2.7.x``
- Jan 01, 2020
- Nov 31, 2021
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It's also a huge change, and will likely still lead to a lot of yelling.

@astrojuanlu
Copy link
Contributor

+1000 on good communication. And also, if we can, inform our decisions with data: #8124

@stale
Copy link

stale bot commented Jun 9, 2021

This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions.

@stale stale bot added the Status: stale Issue will be considered inactive soon label Jun 9, 2021
@stsewd stsewd removed the Status: stale Issue will be considered inactive soon label Jun 9, 2021
@stale
Copy link

stale bot commented Jul 31, 2021

This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions.

@stale stale bot added the Status: stale Issue will be considered inactive soon label Jul 31, 2021
@ericholscher
Copy link
Member

@stsewd I wonder if we can split the docs around installed versions out from this PR, so we can merge it without agreeing on the policy?

@stale stale bot removed the Status: stale Issue will be considered inactive soon label Sep 15, 2021
@astrojuanlu
Copy link
Contributor

Done in #8503

@stale
Copy link

stale bot commented Mar 2, 2022

This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions.

@stale stale bot added the Status: stale Issue will be considered inactive soon label Mar 2, 2022
@stale stale bot closed this Apr 16, 2022
@stsewd stsewd deleted the supported-versions branch April 18, 2022 18:58
@ericholscher ericholscher added the Accepted Accepted issue on our roadmap label Apr 18, 2022
@ericholscher ericholscher restored the supported-versions branch April 18, 2022 21:58
@ericholscher ericholscher reopened this Apr 18, 2022
@stale stale bot removed the Status: stale Issue will be considered inactive soon label Apr 18, 2022
@ericholscher
Copy link
Member

This still seems worth doing.

Comment on lines +29 to +30
Read the Docs will contact all users when an end of support date is close,
after that date your builds may start failing and you will need to upgrade in order to receive support.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@humitos wouldn't you say that this is possible?

Suggested change
Read the Docs will contact all users when an end of support date is close,
after that date your builds may start failing and you will need to upgrade in order to receive support.
Read the Docs will share advice when a end date for support is known.
If detection of tool usage is possible, users will be contacted directly.
After the end date, your builds may start failing and you will need to upgrade or change the tool in order to receive support.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yeah, we are tracking "all packages installed in the virtualenv" now. So, if we want, we could contact "all users building their docs with Sphinx==3.2.1"

Copy link
Contributor

@benjaoming benjaoming left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm poking around to see if this documentation change can go in before the Diátaxis refactor, but I'm thinking it might be too much. Unless someone feels like it's a good occasion to kick the ball up field and start running? :)

The policy looks great to me, and I think not having one might be worse than having one that may need some updates. I haven't seen anything in this policy that for instance promises too much?

Comment on lines +82 to +95
mock:
``1.0.1`` (could be removed in the future).

pillow:
``5.4.1`` (could be removed in the future).

alabaster:
``0.7.x`` (could be removed in the future).

commonmark:
``0.8.1`` (could be removed in the future).

recommonmark:
``0.5.0`` (could be removed in the future).
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can we replace all occurrences of "could be removed in the future" with a set date? That will make this policy easier to publish.

Following this, there are definitely some action items to pick. For instance, adding warnings in build logs and contacting users directly. But I think it's fine to start with a nice coherent policy.

External dependencies (Conda)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

These are the dependencies that are installed by default when using a Conda environment:
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Has any of this changed?

External dependencies (Python)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

These are the dependencies that are installed by default when using a Python environment:
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Has any of this changed?


* - ``2.7.x``
- Jan 01, 2020
- Nov 31, 2021
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Did this happen?

@humitos
Copy link
Member

humitos commented Nov 22, 2022

We have something similar at https://docs.readthedocs.io/en/stable/build-default-versions.html

It's also outdated, since it mentions only two doctools

Read the Docs supports two tools to build your documentation: Sphinx and MkDocs

It does not defines "how/when Read the Docs upgrades these dependencies" tho --which I think the policy on this PR does.

That said, I wouldn't target this policy to be finished and merged before the Diataxis refactor since it will require a lot of discussion to define the process.

@benjaoming benjaoming added the Status: blocked Issue is blocked on another issue label Nov 22, 2022
@benjaoming
Copy link
Contributor

Sounds good @humitos 👍 I'm marking it as blocked for now - of course continuing to work on it can be fine.

@humitos
Copy link
Member

humitos commented Mar 7, 2023

I'm closing this PR for now since lot of things have changed, we are supporting multiple doc tools now and we want to move away from having one and only one "fixed builder" and replace them with versioned builders at some point.

@humitos humitos closed this Mar 7, 2023
@stsewd stsewd deleted the supported-versions branch March 7, 2023 15:18
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Accepted Accepted issue on our roadmap Status: blocked Issue is blocked on another issue
Projects
None yet
Development

Successfully merging this pull request may close these issues.

8 participants