# Best name for "most-recent-version" url?

**URL:** <https://racket.discourse.group/t/best-name-for-most-recent-version-url/3289>\
**Category:** Internals\
**Created:** [November 3, 2024, 4:48pm UTC](https://racket.discourse.group/t/best-name-for-most-recent-version-url/3289 "2024-11-03T16:48:51Z")\
**Posts on this page:** 13\
**Page:** 1

<div class="post-metadata">

**Author:** ![jbclements](https://yyz2.discourse-cdn.com/free1/user_avatar/racket.discourse.group/jbclements/32/11_2.png) [@jbclements](https://racket.discourse.group/u/jbclements)\
**Post date:** [November 3, 2024, 4:48pm UTC](https://racket.discourse.group/t/best-name-for-most-recent-version-url/3289/1 "2024-11-03T16:48:51Z")

</div>

Search is failing me ... I know we discussed this recently and I believe that @spdegabrielle and @sorawee were part of the conversation, but I just can't find it. Anyhow: I do in fact see the minor error in the build process that is causing the `recent` URL not to be created. I may be able to fix it. My question: is `recent` really the best name, here? I think I kind of favor `current` myself. Am I missing an industry-standard name for this?

---

<div class="post-metadata">

**Author:** ![LiberalArtist](https://yyz2.discourse-cdn.com/free1/user_avatar/racket.discourse.group/liberalartist/32/151_2.png) [@LiberalArtist](https://racket.discourse.group/u/LiberalArtist)\
**Post date:** [November 3, 2024, 5:11pm UTC](https://racket.discourse.group/t/best-name-for-most-recent-version-url/3289/2 "2024-11-03T17:11:04Z")

</div>

Using `current` would have the advantage of consistency with [https://plt.cs.northwestern.edu/snapshots/current/](https://plt.cs.northwestern.edu/snapshots/current/) and [https://users.cs.utah.edu/plt/snapshots/current/](https://users.cs.utah.edu/plt/snapshots/current/).

---

<div class="post-metadata">

**Author:** ![spdegabrielle](https://yyz2.discourse-cdn.com/free1/user_avatar/racket.discourse.group/spdegabrielle/32/95_2.png) [@spdegabrielle](https://racket.discourse.group/u/spdegabrielle)\
**Post date:** [November 3, 2024, 5:23pm UTC](https://racket.discourse.group/t/best-name-for-most-recent-version-url/3289/3 "2024-11-03T17:23:24Z")

</div>

I too am in favour of `current`

---

<div class="post-metadata">

**Author:** ![spdegabrielle](https://yyz2.discourse-cdn.com/free1/user_avatar/racket.discourse.group/spdegabrielle/32/95_2.png) [@spdegabrielle](https://racket.discourse.group/u/spdegabrielle)\
**Post date:** [November 3, 2024, 5:25pm UTC](https://racket.discourse.group/t/best-name-for-most-recent-version-url/3289/4 "2024-11-03T17:25:29Z")

</div>

Hang on. URL for what?

---

<div class="post-metadata">

**Author:** ![jbclements](https://yyz2.discourse-cdn.com/free1/user_avatar/racket.discourse.group/jbclements/32/11_2.png) [@jbclements](https://racket.discourse.group/u/jbclements)\
**Post date:** [November 3, 2024, 5:52pm UTC](https://racket.discourse.group/t/best-name-for-most-recent-version-url/3289/5 "2024-11-03T17:52:46Z")

</div>

I'm speaking of a "perma-URL" that always points to the most recent release. Specifically, one where the version such as `v8.15` is replaced by `current` (or whatever else we decide on). I feel like I might be missing some important part of your question?

---

<div class="post-metadata">

**Author:** ![spdegabrielle](https://yyz2.discourse-cdn.com/free1/user_avatar/racket.discourse.group/spdegabrielle/32/95_2.png) [@spdegabrielle](https://racket.discourse.group/u/spdegabrielle)\
**Post date:** [November 3, 2024, 8:22pm UTC](https://racket.discourse.group/t/best-name-for-most-recent-version-url/3289/6 "2024-11-03T20:22:21Z")

</div>

Sorry I was not clear: What is the use-case?

Will dev's automate pulling the latest Racket into their build infrastructure so they are building their apps on the current official release?

Will there be a snapshot equivalent? e.g. current snapshots with named version `https://users.cs.utah.edu/plt/snapshots/current/installers/racket-8.15.0.3-aarch64-macosx-cs.dmg`  
be available as `racket-current-aarch64-macosx-cs.dmg` (current instead of version, but retaining architecture and platform)

Best

Stephen

---

<div class="post-metadata">

**Author:** ![benknoble](https://yyz2.discourse-cdn.com/free1/user_avatar/racket.discourse.group/benknoble/32/16_2.png) [@benknoble](https://racket.discourse.group/u/benknoble)\
**Post date:** [November 3, 2024, 8:53pm UTC](https://racket.discourse.group/t/best-name-for-most-recent-version-url/3289/7 "2024-11-03T20:53:17Z")

</div>

I believe one industry equivalent is “stable”

---

<div class="post-metadata">

**Author:** ![jbclements](https://yyz2.discourse-cdn.com/free1/user_avatar/racket.discourse.group/jbclements/32/11_2.png) [@jbclements](https://racket.discourse.group/u/jbclements)\
**Post date:** [November 3, 2024, 9:56pm UTC](https://racket.discourse.group/t/best-name-for-most-recent-version-url/3289/8 "2024-11-03T21:56:43Z")

</div>

I believe the use case (ugh ugh I wish I could find this thread) is that there are currently people who use mildly baroque git-checking scripts as part of a scripted upgrade process.

To answer your second question: no, I'm not thinking about any changes to the snapshot system. Indeed, this is actually just unbreaking a non-working mechanism that already exists, which uses the name `recent` on the download servers.

@benknoble I think you're right. Specifically, we already have a "stable" branch of the racket/racket repo, and the stable branch will build the version we're now discussing, so I think that name works well with what we already have. It also contrasts with `current`, which is generally (in the case of the nightly snapshots) more recent. Sold! (Well, until a higher bidder comes along anyway.)

---

<div class="post-metadata">

**Author:** ![sorawee](https://avatars.discourse-cdn.com/v4/letter/s/ea5d25/32.png) [@sorawee](https://racket.discourse.group/u/sorawee)\
**Post date:** [November 3, 2024, 9:59pm UTC](https://racket.discourse.group/t/best-name-for-most-recent-version-url/3289/9 "2024-11-03T21:59:34Z")

</div>

@jbclements:

> … were part of the conversation, but I just can’t find it

It’s [https://github.com/racket/racket-lang-org/issues/329](https://github.com/racket/racket-lang-org/issues/329)

Background: this whole discussion originally started in [https://github.com/racket/racket/issues/1500#issuecomment-737651380](https://github.com/racket/racket/issues/1500#issuecomment-737651380), which is really about @bogdan’s `setup-racket`.

Back then, `setup-racket` only supported the name `current` for the current snapshot version, in addition to absolute versions (e.g. 8.15). It’s clear that we need another name for “latest released version”. The question is what should that name be, and what is the link we can use to get an installer for setup-racket. We also preferred to not change the name `current` to preserve backward compatibility for setup-racket’s users.

@notjack suggested `latest`, which is also consistent with Racket Docker’s branch (the name `latest` is Docker’s convention). I found the name to be not ideal, however, because if we are to choose this, “current” (snapshot version) would be later than “latest” (latest released version), which is an oxymoron.

Bogdan eventually chose `stable`, to be consistent with the name in [https://download.racket-lang.org/version.txt](https://download.racket-lang.org/version.txt). That being said, there’s no link to installers (which now we know due to the minor error of the build process that John mentioned). So what Bogdan did is to [first look up `version.txt`](https://github.com/Bogdanp/setup-racket/blob/1b4cd5194dee0b512743db31a3ea96ec1e1a29a3/src/common.ts#L325-L346), and then use the looked up version to construct the installer link. Obviously, not having to do this would be much better.

So here are some questions that may be relevant to our quest to find the “best name”

- Do we care about having setup-racket and Racket installer links to be consistent? What about Racket Docker? (getting setup-racket and Racket Docker to be consistent is not going to be possible though, so we definitely can’t have them all compatible).
- [https://download.racket-lang.org/version.txt](https://download.racket-lang.org/version.txt) actually contains two names: recent and stable. Does anyone know the difference?

My personal preference (which could change due to the answers to the above questions) is “stable”, to be consistent with setup-racket.

---

<div class="post-metadata">

**Author:** ![jbclements](https://yyz2.discourse-cdn.com/free1/user_avatar/racket.discourse.group/jbclements/32/11_2.png) [@jbclements](https://racket.discourse.group/u/jbclements)\
**Post date:** [November 3, 2024, 10:07pm UTC](https://racket.discourse.group/t/best-name-for-most-recent-version-url/3289/10 "2024-11-03T22:07:15Z")

</div>

Many thanks for staying on top of this, and spending the time to summarize it! I'm going to interpret this as support for the idea of using the name `stable`.

FWIW, it appears that the `version.txt` file you refer to is generated by this code:

```scheme
#lang plt-web

(require "resources.rkt" "data.rkt")

(define version.txt
  (plain #:site download-site
         (lazy (let ([v (release-version current-release)])
                 (format "~s" `((recent ,v) (stable ,v)))))))

```

It looks like this is essentially unchanged from the initial creation of this file by @elibarzilay back in 2010:

```diff
git show 07956b00d3d4c6ed6699cd
commit 07956b00d3d4c6ed6699cd46ce10ead3dce48d34
Author: Eli Barzilay <eli@barzilay.org>
Date: Mon Jun 7 14:08:40 2010 -0400

    Add version indicator.
    
    original commit: 05f93bfc280eb0992e36c9f73c06b7a391a25360

diff --git a/collects/meta/web/download/version.rkt b/collects/meta/web/download/version.rkt
new file mode 100644
index 0000000..a3e3a21
--- /dev/null
+++ b/collects/meta/web/download/version.rkt
@@ -0,0 +1,6 @@
+#lang at-exp s-exp "shared.rkt"
+
+(require "data.rkt")
+
+(define version.txt
+ (plain (format "~s" `((recent ,current-version) (stable ,current-version)))))

```

---

<div class="post-metadata">

**Author:** ![sorawee](https://avatars.discourse-cdn.com/v4/letter/s/ea5d25/32.png) [@sorawee](https://racket.discourse.group/u/sorawee)\
**Post date:** [November 3, 2024, 10:23pm UTC](https://racket.discourse.group/t/best-name-for-most-recent-version-url/3289/11 "2024-11-03T22:23:31Z")

</div>

Ah, nice! `stable` and `recent` seem to be identical. In that case, I fully support `stable`.

---

<div class="post-metadata">

**Author:** ![LiberalArtist](https://yyz2.discourse-cdn.com/free1/user_avatar/racket.discourse.group/liberalartist/32/151_2.png) [@LiberalArtist](https://racket.discourse.group/u/LiberalArtist)\
**Post date:** [November 3, 2024, 10:39pm UTC](https://racket.discourse.group/t/best-name-for-most-recent-version-url/3289/12 "2024-11-03T22:39:52Z")

</div>

> [@sorawee](#):
>
> [https://download.racket-lang.org/version.txt](https://download.racket-lang.org/version.txt) actually contains two names: recent and stable. Does anyone know the difference?

See [Racket v8.7 Release Thread - #9 by LiberalArtist](https://racket.discourse.group/t/racket-v8-7-release-thread/1343/9) and the following few posts for details: basically, it’s a left-over from an older release model, but it needs to stay there to not break old versions when they check for updates.

---

<div class="post-metadata">

**Author:** ![hendrikboom3](https://yyz2.discourse-cdn.com/free1/user_avatar/racket.discourse.group/hendrikboom3/32/2748_2.png) [@hendrikboom3](https://racket.discourse.group/u/hendrikboom3)\
**Post date:** [November 4, 2024, 4:39am UTC](https://racket.discourse.group/t/best-name-for-most-recent-version-url/3289/13 "2024-11-04T04:39:23Z")

</div>

The terminology Debian and some other Linuxes is:  
unstable -- where just about anything new shows up  
testing -- where things migrate to after a short delay without any  
serious bugs showing up  
stable -- where things hardly ever change.  
Every now and then there's a development freeze in testing,  
an after there are no longer any release-critical bugs  
the entire testing distro gets copied to stable.  
This happens every year or two.  
oldstable -- for those very few people for which the stable release  
still has problems.

-- hendrik
