I think I’ve gone mad but I thought we had a summary of what was in the Racket distribution somewhere on https://racket-lang.org ?
@capfredf has kindly created a package for flathub, but it makes me think the lack of a summary on the download page is confusing for beginners? (especially those who have expectations from installing other popular languages)
Descriptions of what is included in the Racket Distribution are quite varied:
It’s probably too short, but should something similar go on https://download.racket-lang.org/ ? (And everywhere the Racket Distribution is available ?)
It’s probably too short, but should something similar go on https://download.racket-lang.org/ ? (And everywhere the Racket Distribution is available ?)
Racket is a modern lisp and a descendent of scheme. The Racket distribution includes an incremental native-code compiler*, the Racket language, Typed Racket & several other languages, IDE, documentation and a variety of other tools. The distribution is suitable for new learners, application development, or language design and implementation.
(* RacketScript - the Racket language implementation that compiles to Javascript - is also available separately)
But I’d phrase it differently for the downloads page
The Racket distribution includes an incremental native-code compiler, and implementations of the Racket language, Typed Racket & several other languages, IDE, documentation and many other tools.
The distribution is suitable for new learners, application development, or language design and implementation.
If you are new to Racket please see Getting Started in the documentation.
I’d believe this could be the suggested text description when the Racket distribution is distributed via other package repositories including flathub, snap, homebrew, launchpad, etc.
Many of these have extensible programming language in the Scheme family, which does not accurately summarise the contents of the racket distribution.
Where there is a limitation on the space available, it should be cut from the bottom. e.g parts 1+2+3, 1+2, or just part 1, though all four -in order - is preferred.
The Minimal Racket distribution includes the incremental native-code compiler, runtime and package management tool and is intended for resource-constrained server deployments.
Developers should use the full Racket Distribution.
the idea is that minimal is more like the JRE than the JDK.
Does anyone else wants to have a go at adding the following text`?
The Racket distribution includes an incremental native-code compiler, and implementations of the Racket language, Typed Racket & several other languages, IDE, documentation and many other tools.
The distribution is suitable for new learners, application development, or language design and implementation.
If you are new to Racket please see Getting Started in the documentation.
For applications that run on a resource-constrained server, developers should install the full Racket distribution, and use raco exe and raco dist to create an application executable -- this will ensure the smallest possible size for the application and its module dependencies.
The problem with Minimal Racket is that, once you install a few packages required by your application, you'll end up with a "Maximal Racket" as soon as one of the packages depends on scribble or the test framework. Sure, some packages are split into "lib/test/doc" sub-packages, but not all of them, and you'll be putting the size of the final Racket installation at the mercy of some third-party package. raco exe + raco dist don't suffer from the same problem, as they will package only the required modules form a full Racket installation.
Even using Minimal Racket in the CI step for Github Actions for a Racket package, is a waste of time: a package that has documentation and tests (even if they are in separate "lib/doc/test" sub-packages), will end up installing the full Racket distribution, except it will take longer, since main distribution packages have to be installed separately one-by-one.
The only valid use-case I know for Minimal Racket is to setup build environments for working on one of the packages in the main Racket distribution, put it differently, Minimal Racket is a tool for the maintainers and developers of Racket itself.
What's meant here by "implementations of the Racket language"? Is this referring to BC vs. CS? If yes, it doesn't seem to me that it's important to refer to BC in the summary. My understanding was/is that the BC is legacy code now, so it should be omitted from the summary.
Besides that, the wording might be confusing, since if a user downloads the "distribution", they only get one language implementation, not both.
What is included in many tools (unless you count the raco commands individually)?
I don’t mean bc, I mean it includes implementations of several languages including
The Racket language
Typed Racket
Datalog
How about this
The Racket distribution includes an incremental native-code compiler, and implementations of several languages including Racket, Typed Racket & Datalog, Integrated development environment, all documentation and tools for application and language design, implementation, documentation and distribution.
The Racket distribution includes an incremental native-code compiler, several languages like Racket, Typed Racket and Datalog, as well as the DrRacket IDE. There are also documentation and tools for designing, implementing, documenting and distributing Racket applications and custom languages.
Reasons for the changes:
I think "implementations of" is redundant.
I used "as well as" to avoid/reduce ambiguous parsing ("languages like [Racket, Typed Racket, Datalog, integrated development environment]" vs."languages like Racket, Typed Racket, Datalog], integrated development environment". This change isn't strictly necessary because you'd arrive at the intended meaning after reading the sentence only three times.
Mention "DrRacket" explicitly, so potential downloaders can do a web search on the IDE before actually downloading the distribution.
In my opinion "IDE" is as understandable as "integrated development environment" and "IDE" makes the sentence easier to scan.
I split the previous single sentence because I found it very difficult to read and understand. I don't insist on the specific wording "There are ..." though.
In the last sentence I tried to get a bit away from the "nominal style" and using more verbs. Also now the "Racket applications and custom languages" are easier to tell apart from the actions on them.
This is an iteration on your last text suggestion. I'm not against deriving/merging previous versions of the text.
Perhaps I should clarify that I didn't advocate removal of Minimal Racket from anywhere in my previous post.
Minimal Racket from homebrew is still useful: someone who wants to contribute to a package from the main distribution can install Minimal Racket from any source that they want, then setup the development environment for the package they want to contribute to, next they can test the package before submitting the PR.
Minimal Racket is a tool for the maintainers and developers of Racket to setup build environments for working on packages in the main Racket distribution. If you
Install Minimal Racket from your favorite source
Clone the repository for the main distribution package you want to work on
Setup a local catalog for the cloned package, which takes precedence over then main catalog.
Install the cloned package from the local checkout, and all other packages from the main catalog:
raco pkg install --batch --auto <main distribution package>
Changes can be made to the cloned package, tested and submitted as a PR. (see example steps for Plot package)
if you are not a maintainer of a package in the Racket distribution you should install/use the full Racket distribution.