prql: Book & playground don't match the latest published version
Because the website (book + playground) get published from main, they are frequently out-of-sync with the reality that’s been published & taken into use by others. This can cause a lot of confusion when “known good” queries suddenly start breaking in the playground, or when docs don’t match the playground.
We’ve discussed this briefly in the past, but I wanted to open an issue since I’ve seen my team run into this multiple times in the past few weeks.
As the project gains popularity, I think we need to solve this in one way or another. Otherwise, this will make for a lot of frustrated would-be users. IMO, the published docs (+playground) should match the latest published version of the library, and they should also explicitly mention which version they’re for.
About this issue
- Original URL
- State: closed
- Created a year ago
- Comments: 40 (38 by maintainers)
Update from the meeting: - introduce
stablebranch which tracks the latest release + hotfixes/tweaks + docs changes, - most PRs are still merged into main (including docs of new features), - book & playground are released from stable branch,We can look into having another release for the main branch published in parallel to current deployment, so there would be a “bleeding edge” for people to experiment with. For now, we can try to keep releases frequent.
I’m going to put names on things, because there are two comments enumerating options, so “Option 1” depends on which comment we look at!
HEADof main branchI’m all for the other improvements on the release cadence but I do think the most “correct” solution would be to either: a) either let the website’s visitors specify the version via a select (more difficult), or b) just always deploy the latest released version (easy).
This is obviously an important point, but I also think it’s probably a simple one to address. Other than running the playground with the code of your active local compiler branch, are there any other difficulties here that I’m missing? I’m sure we could figure those out (& I’m more than happy to help).
While releases e.g. at most every 2 weeks would be great for continuing the momentum of the project (irregardless of this issue), I think it’s incredibly user-unfriendly to have the docs & playground (not only the playground!) be incorrect for even a few days.
As we start to have more and more real, live use cases, these things will only get more important, and I’d hate for us to lose potential users because it externally looks like it’s a “broken thing”.
Sorry, I didn’t explain it very well. The way I saw it, playground and docs would only be updated/deployed on releases, including patch releases. They therefore would match the latest release code.
The reason I included “on every merge” (to
stable) in the above is that there was a concern expressed that without tests for the playground it is difficult to ascertain whether it’s working properly or not. So the way I pictured it is:stableSo there would indeed be a bit of drift between playground and latest release but it would likely be only minor since it’s just hotfixes and the patch release should follow soon.
If that’s undesirable then playground could only be deployed on releases. That would probably be my preference. The only downside is that if there’s a bug in the hotfix and the playground goes into a broken state then another patch release would have to follow immediately, but that could be ok.
Thanks for the terrific discussion on the Dev Call last Sunday. For those who weren’t on the call, here is a more fleshed-out version of my understanding of the discussion and comments from @max-sixty and @aljazerzen above. Comments appreciated.
Going forward, PRQL will maintain two important branches:
stableandmain.The
stablebranch tracks the latest released version of PRQL. It provides a base for people who wish to use it today. The Playground, Language Book, and CHANGELOG match the implementation of thestablerelease. In addition, any external integrations - VSCode extension, language bindings, etc. - all match thestablerelease. Only updates to the website or Language Book are permitted in thestablebranch. No changes to the PRQL language or hot fixes/tweaks are allowed (those go into a new release).NOTE: PRQL is still an experimental project. We reserve the right to make the language better even if we must break previous queries. The PRQL language - even the
stablebranch - may (and probably will) change between releases as the language evolves. However, thestablerelease never changes once it has been released.The
mainbranch receives PRs as development occurs. New features should be documented first in the “Unreleased” section of the CHANGELOG file, and in the Language Book/website as needed. It is an open question how the Web, Language Book, and external integrations will be made available to people who don’t have a development environment set up.From time to time (perhaps as frequently as every two weeks) we merge the
mainbranch into thestablebranch, and the new code becomes the next “released version”.I’m not sure if full git flow workflow is necessary - it add some complexity where it is not yet needed.
A simpler alternative is what we have, but releasing patches (
0.x.Y) by picking all non-breaking non-conflicting commits to a new branch.The main problem here is that playground & book don’t match the latest release of the library and bindings. This is a huge problem for anyone who is not just “checking things out”.
If we go with option 1, the people that want to experiment with latest changes, would indeed have to wait for a release. This could be eased by:
I agree with that.
I also got the impression that we only picked up some issues on release and deployment so I would vote in favour of doing some DEV/UAT/QA deployment somewhere which can be triggered on every merge to main.
I hear a consensus for putting out a release frequently. Before we design and build a lot of new machinery, let’s see if this release schedule minimizes the problems that have been identified.
Not easy but doable. The problematic part is that we build the whole website+book+playground in a single build for a commit and book requires prql-compiler for compiling PRQL snippets to SQL.