tl;dr   Is there a clear 'HOWTO' for how to write packages such that
they can be put up on and subsequently
installed by people who aren't the developer?

Long version:

The Racket documentation is great, but often not terribly helpful
unless you're willing to sink a lot of time in.  Packages is a good
example; I've been writing Racket for a year and a half now, I have a
Github repository with a bunch of working code in it, and we've been
using that code at my company.  When my co-worker wants to use it he
git clone's it, adds a path to $PLTCOLLECTS and away he goes.  Despite
all that, I find myself unable to grok the package documentation at

Yesterday (day before?) I decided to actually put my code up on so that it could be installed through
the normal raco pkg system.  It was easy -- put in a name, some tags,
a github link, boom.  All good.  It was only later that I found the
package is failing and cannot be downloaded due to a checksum problem.

"Checksum problem?" I said to myself.  "I didn't know there was
anything about a checksum.  The documentation made it sound like I
simply had to point it at a repository.  Well, let me go RTFM and see
what I did wrong."

An hour later I am intensely frustrated and no closer to actually
solving the problem.  I try to read this stuff and it simply bounces.
Here's a good example, quoted directly from :

"A package is not something that you refer to directly in your Racket
programs. Instead, a package is a set of libraries that fit into the
collection hierarchy, and you refer to libraries through their
collection-based paths. Libraries that are close in the hierarchy may
be provided by different packages, while a single package may provide
libraries that are far from each other in the hierarchy (but that are
conceptually related, somehow)."

This leaves me no wiser as to what the hell these things actually are
in practical terms, which isn't terribly reassuring since this is the
initial paragraph of the "What is a Package?" section.  Could someone
please Explain Like I'm 5 ?  Or, preferably, point me to a source that
does that?

Here's what my filesystem looks like:

|-- utils.rkt
|-- list-utils.rkt
|-- db.rkt

In my code I can do this:  (require handy/utils) and it works fine.  I
have no idea what in here is the package, the collection, the library,
etc.  I'm guessing that 'utils.rkt' is a library but no idea on the

If I can actually get a handle on all this I'm perfectly happy to
write a "How to Develop Packages for Idiots and English Majors"
document and submit it for inclusion.

In the meantime I'll go beat my head on the docs some more.

You received this message because you are subscribed to the Google Groups 
"Racket Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
For more options, visit

Reply via email to