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

Nightly releases #147

Closed
orhun opened this issue Apr 21, 2023 · 12 comments · Fixed by #359
Closed

Nightly releases #147

orhun opened this issue Apr 21, 2023 · 12 comments · Fixed by #359
Labels
Type: Enhancement New feature or request

Comments

@orhun
Copy link
Sponsor Member

orhun commented Apr 21, 2023

Problem

There might be some time gaps between new releases so the users cannot test/use the latest functionality without using ratatui as a git dependency in Cargo.toml which makes the crate unpublishable on crates.io. (crates.io doesn't accept git dependencies)

See what atuin did recently as a workaround: atuinsh/atuin@a515b06

Solution

Create automated nightly releases every week or so. ratatui can be used as e.g. version = "nightly-2023-04-21" afterwards.

Alternatives

Just plan things out and release more frequently.

Additional context

None.


We need comments/thoughts on this.

@orhun orhun added the Type: Enhancement New feature or request label Apr 21, 2023
@mindoodoo
Copy link
Member

This is a great idea, having automated nightly releases will help us a lot.

How often though ?

I think depending on activity something like every two weeks might be good, maybe every week might be a bit excessive, let's hear other peoples thoughts on this though !

Looking forward to this 🚀

@sophacles
Copy link
Collaborator

Why not every day that there's been a merge that changes the code or docs?

Should the version be nightly-$date or something like $next_version-alpha.$N (so if we start today, 0.21.0-alpha.1 from my reading of https://doc.rust-lang.org/cargo/reference/resolver.html#pre-releases I'm no sure how nightly-date would be handled or ordered relative to other things.

I know when I'm working on a project, and I know a feature is merged but not released, I'd like to have updates by setting version=....-alpha as I'm developing my stuff.

@sayanarijit
Copy link
Member

Inviting @extrawurst to the conversation.

@extrawurst
Copy link

I like the idea of daily releases iff there was a change.

@mindoodoo
Copy link
Member

Someone also mentioned on discord that separating these releases to another repo might be interesting in order to not inundate people with release notifications from the main repo.

@extrawurst
Copy link

Someone also mentioned on discord that separating these releases to another repo might be interesting in order to not inundate people with release notifications from the main repo.

yeah having nightly or even weekly releases/tags might become noisy.

@joshka
Copy link
Member

joshka commented Apr 26, 2023

+1 to building nightly (good for picking up all dependencies and being aware of new breaking changes etc).
-1 to releasing nightly (I prefer intentional with releases so that you're aware what goes into each release - 0.21.0-alpha.2 should have an obvious reason to exist compared to 0.21.0-alpha.1)
+1 to pre-release releases that can be cut with new features that are being tested at any time
+1 to releasing more often (perhaps as often as any new feature merge = a point release)

One thing I've found that works quite nicely for setting up rolling nightly builds plus a matrix of builds over ubuntu/mac/windows is https://github.com/jonhoo/rust-ci-conf/
There's a supporting youtube that talks through adding this in a fashion where updates from source are possible (grafting an unrelated git branch so that the history is preserved is useful).
See https://www.youtube.com/watch?v=xUH-4y92jPg&t=491s (the rest of the video is probably worth looking at too, but this is where the setup happens). One of the good / hard things that this does is that it helps work out actual minimum versions and MSRV to avoid build failures in downstream. That said, it suffers when upstream incorrectly specify their required versions).

Also nice is https://opensource.axo.dev/cargo-dist/ and https://github.com/crate-ci/cargo-release

@mindoodoo
Copy link
Member

Reviving this issue following the 18/07/2023 general meeting → #316

  • General consensus is that we should set up nightly releases
    - Frequency → once per week
    - With option to trigger manually in case by case basis

cc: @orhun @joshka

@orhun
Copy link
Sponsor Member Author

orhun commented Jul 18, 2023

I will be working on a GitHub Actions workflow file soon!

@mindoodoo
Copy link
Member

Awesome thanks !

@orhun
Copy link
Sponsor Member Author

orhun commented Jul 19, 2023

Just realized crates.io does not recognize nightly-<date> versioning schema as pre-release so we need to go with either e.g. 0.22.0-beta.0 or 0.22.0-alpha.0. Any thoughts?

@joshka
Copy link
Member

joshka commented Jul 19, 2023

Strong opinion: -alpha.0 for nightlies.

Use -alpha to indicate that the next release will happen whenever there is more commits merged on that day. There's no contract that these won't introduce bugs, or unwanted changes in behavior. Effectively no hard commitment to quality.

Use -beta to indicate that the release on the path to stabilization, and that the release was intentional rather than just something that happened. You might use this to test that a large change or new feature works in some app before releasing that version of ratatui to the wild.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Type: Enhancement New feature or request
Projects
None yet
Development

Successfully merging a pull request may close this issue.

6 participants