-
Couldn't load subscription status.
- Fork 367
Description
What's happening?
Apologies if you'd rather I open this as a GitHub discussion rather than an issue, but I'm trying to comply with your request to make this a "trackable task" in your project. Please advise me if you'd like this content in a different location.
User stories
As a documentation reader, I want to select different versions of the documentation so that I can read the documentation for an older product version or in my preferred language.
As a documentation provider, I want the ability to use the Furo theme on the hosting platform that best meets my project's needs and policies.
Motivation for this feature
Most projects have a need for version selection in their docs, specifically in two common scenarios:
- Language version selection - If a product's docs are localized, users need to be able to select the version of the product documentation for their preferred language.
- Product version selection - Users sometimes run older versions of the product for valid reasons. (For example, they might strategically delay upgrading to the latest version while waiting for the product to stabilize or to comply with company change management policies.) Those users need to be able to select the version of the documentation that matches the version of the product they are currently running in their environment.
If you want to use the Furo theme (like my team does!), you have the option of hosting your docs with Read the Docs (RTD), which provides product version selection. See Read the Docs - Versioned Documentation for more information. However, if documentation teams plan to host their docs on a different platform, they won't have the ability to do version selection. It's worth noting that for my team (the Salt Project), this is preventing us from adopting Furo as our documentation theme of choice.
To my knowledge, Read the Docs does not provide language version selection, but I could be wrong. FYI, my team doesn't currently localize our docs, but it is likely we will need to do so in the future. I've spoken to other large Python project owners who have this immediate need.
Feature requirements
- Provide a drop-down menu that lists older version of the product and/or available languages.
- Determine where the drop-down menus should appear in the Furo theme. Most likely the bottom left sidebar.
- Add a configuration option that allows users to turn version selectors on and off, since not all users will want this feature. (We'll also want to make sure that this plays well with Read the Docs since we don't want to break anyone's deployment.)
Helpful links, discussions, and prior art
I discussed this feature with @pradyunsg on the Write the Docs Slack earlier this year. He mentioned:
It's definitely technically possible. I haven't implemented something like that in Furo tho. It should be possible to implement something like this -- but I think the only Sphinx theme that has version support baked into it is https://pydata-sphinx-theme.readthedocs.io/en/latest/
In a separate conversation, @pradyunsg mentioned:
Some quick thoughts: I don't think there's any backend work necessary here but there's some Python code to be written to validate configuration stuff. The right place to put this design wise would be the bottom of the left sidebar (since that's the sidebar for the "site navigation"). It'd be reaaaally nice to also have this work seamlessly on RTD pages (or at least, be seamless when not specified) because I consider the users of RTD to be kinda important -- partly because I'm one of them, via pip.
The team that can do this work
I work with several developers as part of the Salt Project, a Python-based open source configuration management tool with 5,000 contributors. I've official approval from VMware (the company that currently sponsors this project) for some back-end and front-end developers on my team to build out the product version selector for Furo. It's possible this functionality could also be used for language selection as well. We're roughly looking at a May timeline to do the work and we hope to share our work upstream with the whole community.
Please let me know next steps and how I can connect you to my team if you'd like to have some exploratory conversations before May. I look forward to hearing what the community has to say about this proposal.
Reproducer
Not applicable to this task.
Expectation
Not applicable to this task.
Code of Conduct
- I agree to follow the Code of Conduct.